Analog ADC w układzie ESP32-C3

User avatar
Alex1603
Posts: 93
Joined: Sat Jan 01, 2022 1:46 pm

Post

Witam ,
Chętnie sprawdzę , jako że widzę że jest tam analog A0, generalnie nie interesuje mnie zastosowanie predstawione tutaj ale ciągle poszukuję sposobu pomiaru przez ADC w przyjemnym układzie ESP32C3.
Mam właśnie pytania związane z własnym kodem :
1. ładowanie do pamięci: po generacji w arduino powstaje jeden plik hex, z GG powstaje zip który ma podane obszary pod które należy włożyć wsady, czy obaie wersje wsadów działaja identycznie ?
2. przeszukiwałem example źródeł supla-device, nie znalażłem na razie składnika ani przykładu odpowiedzialnego za ADC. Czy ktos móglby wskazać który plik z biblioteki zawiera ADC?
3. jednostka wskazania ADC. Kiedyś dawno pracowałem jeszcze z ESP8266 i pamiętam że można było mierzyć na tym chipie na ADC ale wyświetlanie było w Ohmach, czy ten problem został rozwiązany?

bardzo dziękuję za wszystkie rady, na pewno podziele się też wynikami i obserwacjami.
*-------------- Pomysłów po sufit, czasu po kostki --------------*
*------ https://github.com/Rebel1603?tab=repositories ------*
User avatar
YoMan
Posts: 3521
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa
Has thanked: 3 times
Been thanked: 3 times

Post

Alex1603 wrote: Thu Oct 23, 2025 6:24 am Witam ,
Chętnie sprawdzę , jako że widzę że jest tam analog A0, generalnie nie interesuje mnie zastosowanie predstawione tutaj ale ciągle poszukuję sposobu pomiaru przez ADC w przyjemnym układzie ESP32C3.
Mam właśnie pytania związane z własnym kodem :
1. ładowanie do pamięci: po generacji w arduino powstaje jeden plik hex, z GG powstaje zip który ma podane obszary pod które należy włożyć wsady, czy obaie wersje wsadów działaja identycznie ?
2. przeszukiwałem example źródeł supla-device, nie znalażłem na razie składnika ani przykładu odpowiedzialnego za ADC. Czy ktos móglby wskazać który plik z biblioteki zawiera ADC?
3. jednostka wskazania ADC. Kiedyś dawno pracowałem jeszcze z ESP8266 i pamiętam że można było mierzyć na tym chipie na ADC ale wyświetlanie było w Ohmach, czy ten problem został rozwiązany?

bardzo dziękuję za wszystkie rady, na pewno podziele się też wynikami i obserwacjami.
1. u mnie w arduino powstaje kilka plików - jeden z nich to merged wgrywany na całość od adresu 0x0, drugi bez merged - jako update, nie czysci flasha
2. nie pamiętam pliku ale odczyt np:

Code: Select all

int rawValue = analogRead(pin);
3. Tego przykładu nie pamiętam. Teraz można to robić na uniwersalnym kanale KPOP (GPM) i w cloud możesz ustawić przeliczniki, jednostki, precyzję, etc
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Alex1603 wrote: Thu Oct 23, 2025 6:24 am ...
1. ładowanie do pamięci: po generacji w arduino powstaje jeden plik hex, z GG powstaje zip który ma podane obszary pod które należy włożyć wsady, czy obaie wersje wsadów działaja identycznie ?
Nie jestem pewien czy to tak jest jak mówisz. O ile chodziło Ci o ArduinoIDE. W platformIO a na tym chodzi gg dla ESP32C3 powstaje 3 pliki faktycznie . Jeśli później wgrywamy fimware np. programem flash_download_tool_3.9.7 to na adresy:
bootloader.bin → 0x0000
partitions.bin → 0x8000
firmware.bin → 0x10000
Wydaje mi się że w ArduinoIDE powinno być tak samo
Edit:
Nie jest tak samo ale posiadam na kompie ArduinoIDE i sprawdziłem i jest coś takiego jak na fotce. Ten eksport zdaje się tworzy te trzy pliki
export.png
You do not have the required permissions to view the files attached to this post.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@Alex1603 działasz czy odpuściłeś?. Bo coś znalazłem w swoich starych zasobach.
User avatar
Alex1603
Posts: 93
Joined: Sat Jan 01, 2022 1:46 pm

Post

Nie odpuściłem, dzisiaj nie miałem czasu. Ale postanowiłem że się tym zajmę, Są niestety czasami priorytetowe obowiązki które nie pozwalają na pasję :-))), na pewno wkrótce będę informował o wynikach ;-). Analizuję ciągle posty i projekty innych , które mogą pomóc - a jest tego dużo.
*-------------- Pomysłów po sufit, czasu po kostki --------------*
*------ https://github.com/Rebel1603?tab=repositories ------*
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Alex1603 wrote: Fri Oct 24, 2025 5:23 pm Nie odpuściłem, dzisiaj nie miałem czasu. Ale postanowiłem że się tym zajmę, Są niestety czasami priorytetowe obowiązki które nie pozwalają na pasję :-))), na pewno wkrótce będę informował o wynikach ;-). Analizuję ciągle posty i projekty innych , które mogą pomóc - a jest tego dużo.
Ok. To skoro jesteś aktywny i zainteresowany to Ci wyśle kod źródłowy na PW żebyś miał na czym trenować.
Tutaj wstawię binarkę pod ESP32C3 może komuś się przyda gotowiec skoro już go odgrzebałem i poprawiłem do nowszej wersji SD.
W programie jest DeepSlep z ustawianym samodzielnie czasem Sleep na stronie konfiguracyjnej
Jest Trzy kanały pomiarowe. Z czego dwa fizyczne a trzeci zmapowany do drugiego fizycznego.
Drugi pokazuje napięcie zasilania z 18650 a trzeci stan baterii w procentach, tak sobie zażyczyła żona kolegi bo nie wiedziała czy jak pokazuje 3.4V to już mało czy jeszcze dużo :P Pomiar z ogniwa 18650. Jest wyjście sterujące ewentualnym mosfetem do odcinania napięcia zasilania jakiegoś ewentualnego czujnika lub urządzenia w trybie sleep.
Pierwsze wejście ADC jest w programie skalowane do procentów gotowe do podpięcia np. czujnika wilgotności ale to łatwo zmienić żeby pokazywało goły odczyt z ADC
Na stronie konfiguracyjnej można sobie oczywiście wyskalować pomiar min. i max.
Ostatni kanał w czujniku jest dla DHT11, pokazuje temperaturę i wilgotność.
GPIO0 - BUTTON_CFG 0
GPIO 8 - LED
GPIO3 - pomiar z czujnika analogowego lub jak poniżej. W programie wejście KPOP1 wyskalowane na procenty
GPIO1 - pomiar napięcia baterii. Oczywiście musi być dzielnik lub bez dzielnika jeśli napięcie <3.3V
GPIO 9 - sterowanie mosfetem lub zasilanie jakiegoś czujnika oczywiście jeśli jego pobór prądu nie przekracza ok. 10mA
GPIO11 - zasilanie_DHT11 (Średni pobór prądu: 0,2 mA )
GPIO 10 - sygnał z DHT11
firmware_merged_factory.zip
Edit:
Zapomniałem że po tym jak to było robione weszła ikonka baterii . Jak ktoś to zechce używać i mu będzie bardzo zależało żeby była ikonka a nie kanał z procentami to proszę napisać. Zamienię w kodzie kanał z procentowym wskazaniem stanu baterii na ikonkę przy napięciu czy jakoś tam...
You do not have the required permissions to view the files attached to this post.
User avatar
Alex1603
Posts: 93
Joined: Sat Jan 01, 2022 1:46 pm

Post

Witam kolegów ,
Chciałbym prosić o pomoc- jak zmienić wejście w konfig z HOLD 5sek na 10xclick GPIO

Code: Select all

// Przycisk konfiguracyjny
  auto cfgButton = new Supla::Control::Button(CONFIG_BUTTON_PIN, true, true);
  cfgButton->setHoldTime(5000);
  cfgButton->addAction(Supla::TOGGLE_CONFIG_MODE, SuplaDevice, Supla::ON_HOLD);
Chciałem jeszcze podziękować za wszelką pomoc i rady - przeglądam example, modyfikuję i obserwuję efekt - w końcu ruszyłem z miejsca , na razie to oczywiście przedszkole :lol:
*-------------- Pomysłów po sufit, czasu po kostki --------------*
*------ https://github.com/Rebel1603?tab=repositories ------*
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Alex1603 wrote: Tue Oct 28, 2025 2:37 pm ....jak zmienić wejście w konfig z HOLD 5sek na 10xclick GPIO

Code: Select all

auto cfgButton = new Supla::Control::Button(CONFIG_BUTTON_PIN, true, true);
cfgButton->setMulticlickTime(800, false);
cfgButton->addAction(Supla::TOGGLE_CONFIG_MODE, SuplaDevice, Supla::ON_CLICK_10);
a to daje też hold 5s

Code: Select all

auto cfgButton = new Supla::Control::Button(CONFIG_BUTTON_PIN, true, true);
cfgButton->configureAsConfigButton(&SuplaDevice);

Return to “Pomoc”