logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Modernizacja sterownika nawadniania ogrodu AVR Atmega32 + Atnel Wifi – ESP32 czy STM32 + ESP32?

wachcio 16 Paź 2025 22:14 621 27
  • #1 21722491
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    Witam
    Około 7-8 lat temu stworzyłem sobie kilka urządzeń na AVR Atmega32 w połączeniu z Atnel Wifi. Jednym z urządzeń jest sterownik nawadniania ogrodu. Wszystko działa poprawnie do tej pory. Komunikacja jest po UDP w formie określonych stringów. Jednak moduł wifi jest już dawno nie produkowany a Atmegi też warto byłoby zastąpić czymś nowszym. W razie awarii będę miał poważny problem z zastąpieniem komponentu
    Założenia:
    - obsługa 9 elektrozaworów 24VAC (1 główny i 8 sekcji) do sterowania sekcji nawadniania za pomocą przekaźników SSR
    - obsługa OLED SSD1306 na którym będą informacje lub może nawet menu
    - obsługa encodera do OLED
    - kilka diod LED do szybkiej weryfikacji pracy urządzenia
    - RTC DS 3231
    - harmonogram nawadniania z 16 pozycjami pamięci i możliwością zapamiętywania go w nieulotnej pamięci
    - możliwość dowolnego łączenia sekcji w grupy. System nawodnienia miałem zakładany 10 lat temu i był oryginalny sterownik Hunter. Po zmianie źródła wody na studnię głębinową wydajność mocno wzrosła więc trzeba załączać kilka sekcji na raz aby pompa w studni połączona z hydroforem pracowała wydajnie cały czas a nie ciągle wyłączała się i włączała. Tak na prawdę to był główny motor do stworzenia sterownika oraz napisania aplikacji B4A na telefon do jego obsługi
    - captive portal do ESP32 aby można było łatwo sparować urządzenie z siecią wifi
    - serwer WWW do obsługi urządzenia jeśli ESP32 już będzie połączone do sieci
    - komunikacja chyba już nie po UDP a może po MQTT z serwerem który i tak już mam w domowej sieci wraz z Home Assistant (może późniejsza integracja sterownika nawadniania z HA...)
    - odbiór komunikatu wysyłanego raz dziennie ze skryptu PHP czy nawadnianie ma być dziś aktywne. Drugim moim urządzeniem AVR jest stacja pogody która której dane co minutę wysyłane są na serwer w internecie i z nich tworzona jest strona meteo.wachcio.pl Skrypt odczytuje z niej temperaturę i opady oraz przewidywaną pogodę na moim obszarze z yr.no Na podstawie danych skrypt określa czy temperatura nie jest za niska oraz czy nie wystąpiły lub wystąpią duże opady.
    Większość założeń miałem już zaimplementowane w starej wersji urządzenia. Kody źródłowe w C dla AVR mam. Schematy elektryczne do płytek oprócz schematu samej płytki też się zachowały.
    Teraz główne moje pytanie czy próbować to obsługiwać tylko za pomocą ESP32 czy sterowanie implementować w STM32 a ESP32 połączone po RS232 byłoby tylko przekaźnikiem do serwera MQTT i miało w sobie stronę do konfiguracji? Tak jak pisałem dopiero zaczynam z mikrokontrolerami 32 bit. W AVR-ach nie było wielu "bajerów" jak choćby RTOS. Nie przygotowuję się do tego zadania z jakiegoś kursu a raczej będę wykorzystywać gotowe biblioteki, AI i to co zostało w głowie z przed wielu lat gdy zrobiłem kilka projektów na AVR-ach. Chciałbym aby projekt mnie nie przerósł po prostu
  • Pomocny post
    #2 21722505
    Konto nie istnieje
    Poziom 1  
  • #3 21722518
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    >>21722505 Jest jakaś znacząca różnica w trudności programowania w odniesieniu do STM32 i znajdowania odpowiednich bibliotek do ESP32?
  • #4 21722524
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    Do sterowania wyświetlaczem znajdziesz z pewnością gotowe biblioteki.
    To samo dotyczy układu RTC DS3231.
  • Pomocny post
    #5 21722526
    Konto nie istnieje
    Poziom 1  
  • #6 21722542
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    khoam napisał:
    >>21722518
    Jeżeli planujesz programować bezpośrednio z użyciem ESP-IDF (nie arduinowo) to do wyboru jest dość bogaty wybór komponentów (bibliotek):
    https://components.espressif.com/

    Arduino IDE nie wchodzi w grę. Jakieś IDE od producenta lub VSC i programowanie w C. Ostatecznie Mikropython w którym nigdy nic nie robiłem...
  • #7 21722546
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    Poczytaj, czy to by Tobie odpowiadało.
    Link
  • #8 21722554
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    inot napisał:
    Poczytaj, czy to by Tobie odpowiadało.
    Link

    Trochę mnie może niepotrzebnie przeraża multiwątkowości (2 rdzenie).
    Aha i pracuję na Linuksie choć widzę, że nie powinno być z tym problemu

    [EDIT]
    W sumie tak teraz patrzę na dokumentację i zamiast stosowania MQTT które potrzebuje dodatkowego urządzenia mogę mieć ewentualne dodatkowe (lub podstawowe jeśli nie szło by mi z bardziej zaawansowaną stroną WWW na ESP32) sterowanie po Restfull API które znam i zewnętrzną stroną WWW lub apką na Androida
  • #9 21722558
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    Możliwa opcja: Link
  • #10 21722560
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    inot napisał:
    Możliwa opcja: Link

    To połączenie z VSC chyba gdzieś wyjaśniał na swoim kanale YT Embedded Garage

    Idą do mnie ESP32 S3 Development Boards with Expansion Adapter Kit 2.4G Wifi BT Module ESP32-S3-1 N8R2 N16R8 44Pin Type-C ESP32-S3 https://pl.aliexpress.com/item/1005007319706057.html?spm=a2g0o.order_list.order_list_main.11.5ea71802dammtB&gatewayAdapt=glo2pol dobry wybór? Mam jeszcze kilka pojedynczych wersji ESP32 np ESP-32S ESP-WROOM-32 WiFi+Bluetooth ESP32 NodeMCU Nie chciał bym, żeby to była jakiś wynalazek którego nie kupię za chwilę i będę musiał przy ewentualnej awarii przerabiać płytkę PCB bo będzie inny pinout
  • #12 21722841
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    >>21722838 Patrzyłem, że ma dużo pinów i USB-C więc chyba nie może być dość stary. Jest mnogość modułów a ja tylko orientuję się, że ESP32 jest nowsze od ESP 8266
    Mam w domu kilka takich modułów w użytku ale z oprogramowaniem Tasmota i podpiętych do HomeAssistent więc nie patrzyłem pod kątem ich programowania
  • Pomocny post
    #13 21722844
    Konto nie istnieje
    Poziom 1  
  • #14 21723329
    krzbor
    Poziom 29  
    Posty: 1754
    Pomógł: 40
    Ocena: 1061
    Bez wątpienia ESP32 wystarczy. Jeśli nie chcesz się męczyć to za kilkadziesiąt złotych kupisz coś takiego Link

    Płytka sterująca z ESP32 i ośmioma przekaźnikami na niebieskim PCB

    Moduł ESP32-WROOM-32E z ośmioma przekaźnikami i opisanymi złączami

    I po dodaniu jeszcze jednego przekaźnika oraz wyświetlacza masz hardware.
  • #15 21723365
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    Wolę przekaźniki SSR i własny projekt. ESP32 będzie miało 41 pinów. Bardzo dobrze mi się sprawdziły przez te lata. Nie mają mechanicznych części i nie sklejają się. Nie użyłem modułu tylko zastosowałem dane przekaźniki na dedykowanej płytce która zaprojektowałem


    Schemat elektryczny przekaźnika SSR z tranzystorem BC847 i diodą LED.

    Będę potrzebował jeszcze kilku elementów czyli RTC DS3231, jakąś pamięć na ustawienia, diody sygnalizacyjne czy dana sekcja jest aktywna, czy urządzenie ma zasilanie sieć wifi itd.
  • #17 21723391
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    khoam napisał:
    wachcio napisał:
    jakąś pamięć na ustawienia

    Możesz ustawienia przechowywać w NVS (wydzielona partycja we flash). Jest to o tyle wygodne, że konkretny obiekt do odczytu/zapisu jest szukany wg klucza i nie trzeba się martwić o jego konkretną lokalizację.
    https://docs.espressif.com/projects/esp-idf/e...le/esp32/api-reference/storage/nvs_flash.html

    Taka pamięć się nie degraduje bo chyba w AVR to nie był zalecany sposób jeśli dobrze pamiętam
  • #18 21723415
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    W wielu aplikacjach pamięć NVS tego mikrokontrolera służy do zapisu klucza sieci Wi-Fi i hasła, dlatego można ją uważać za niezawodną.
  • #19 21723421
    Konto nie istnieje
    Poziom 1  
  • #20 21723437
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    khoam napisał:
    >>21723391

    Typowa pamięć flash w ESP32 wytrzymuje od 10 000 do 100 000 cykli zapisu/kasowania na sektor. NVS w ESP32 implementuje mechanizm wear leveling, który automatycznie rozdziela zapisy na różne sektory pamięci flash, co wielokrotnie wydłuża żywotność pamięci. Jeden "zapis" w NVS nie oznacza jednego cyklu kasowania sektora. Partycja NVS jest dzielona na strony, a zapisy są rozkładane. Rzeczywista liczba możliwych zapisów na klucz może być znacznie większa. Ważne jest to rówież to, że NVS jest dość odporny na zakłócenia spowodowane zanikami zasilania.

    Oczywiście zawsze można użyć zewnętrznej EEPROM lub nawet FRAM, ale moim zdaniem takie rozwiązania są potrzebne wtedy, gdy mamy do czynienia z zapisami co kilka sekund.

    Jak pisałem dopiero wchodzę w ten "świat" więc po prostu nie miałem wiedzy, że takie rozwiązanie już jest wewnątrz. Zapisy będą ustawień więc dość rzadko
  • #21 21725825
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    Programuję z wykorzystaniem AI ale i ona się już poddaje nie bardzo mam punkt zaczepu. Mianowicie zrobiłem captive portal aby z początku móc łatwo się podłączać do nowej sieci. Wszystko idzie dobrze dopóki w haśle wifi nie ma specjalnych znaków typu &%$^. Jak są ESP nie łączy się i przechodzi w znów w tryb uruchamiania portalu. Na początku okazało się, że po prostu formularz ze strony zamienia znaki specjalne na odpowiedniki z %. Mam funkcję która to przynajmniej w teorii poprawia (tak wychodzi z logów) ale gdzieś i tak tkwi problem. Może w sposobie zapisu czy odczytu z pamięci ESP. Nie wiem.

    Oto przykład logu przy próbie połączenia gdzie hasło i nazwę sieci loguje poprawnie

    Cytat:
    I (29) boot: ESP-IDF v5.5.1-dirty 2nd stage bootloader
    I (29) boot: compile time Oct 18 2025 22:22:03
    I (29) boot: Multicore bootloader
    I (31) boot: chip revision: v3.1
    I (34) boot.esp32: SPI Speed : 40MHz
    I (38) boot.esp32: SPI Mode : DIO
    I (41) boot.esp32: SPI Flash Size : 2MB
    I (45) boot: Enabling RNG early entropy source...
    I (49) boot: Partition Table:
    I (52) boot: ## Label Usage Type ST Offset Length
    I (58) boot: 0 nvs WiFi data 01 02 00009000 00006000
    I (65) boot: 1 phy_init RF data 01 01 0000f000 00001000
    I (71) boot: 2 factory factory app 00 00 00010000 00100000
    I (78) boot: End of partition table
    I (81) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=1c8d4h (116948) map
    I (128) esp_image: segment 1: paddr=0002c8fc vaddr=3ffb0000 size=0371ch ( 14108) load
    I (134) esp_image: segment 2: paddr=00030020 vaddr=400d0020 size=9612ch (614700) map
    I (344) esp_image: segment 3: paddr=000c6154 vaddr=3ffb371c size=00840h ( 2112) load
    I (345) esp_image: segment 4: paddr=000c699c vaddr=40080000 size=17fe0h ( 98272) load
    I (386) esp_image: segment 5: paddr=000de984 vaddr=50000000 size=00020h ( 32) load
    I (398) boot: Loaded app from partition at offset 0x10000
    I (398) boot: Disabling RNG early entropy source...
    I (409) cpu_start: Multicore app
    I (417) cpu_start: Pro cpu start user code
    I (417) cpu_start: cpu freq: 160000000 Hz
    I (417) app_init: Application information:
    I (417) app_init: Project name: wifi_connnect
    I (422) app_init: App version: af80a39-dirty
    I (426) app_init: Compile time: Oct 20 2025 02:49:28
    I (431) app_init: ELF file SHA256: 35111d199...
    I (435) app_init: ESP-IDF: v5.5.1-dirty
    I (440) efuse_init: Min chip rev: v0.0
    I (444) efuse_init: Max chip rev: v3.99
    I (448) efuse_init: Chip rev: v3.1
    I (452) heap_init: Initializing. RAM available for dynamic allocation:
    I (458) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
    I (463) heap_init: At 3FFB8048 len 00027FB8 (159 KiB): DRAM
    I (468) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
    I (473) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
    I (479) heap_init: At 40097FE0 len 00008020 (32 KiB): IRAM
    I (486) spi_flash: detected chip: generic
    I (488) spi_flash: flash io: dio
    W (491) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
    I (504) main_task: Started on CPU0
    I (514) main_task: Calling app_main()
    I (544) wifi_manager: Trying to connect to SSID: 'wifi_IoT'
    I (544) wifi_manager: Using password: 'tV3&a2p5CZn!kxxxxxxx'
    I (564) wifi:wifi driver task: 3ffc009c, prio:23, stack:6656, core=0
    I (584) wifi:wifi firmware version: 14da9b7
    I (584) wifi:wifi certification version: v7.0
    I (584) wifi:config NVS flash: enabled
    I (584) wifi:config nano formatting: disabled
    I (584) wifi:Init data frame dynamic rx buffer num: 32
    I (584) wifi:Init static rx mgmt buffer num: 5
    I (594) wifi:Init management short buffer num: 32
    I (594) wifi:Init dynamic tx buffer num: 32
    I (604) wifi:Init static rx buffer size: 1600
    I (604) wifi:Init static rx buffer num: 10
    I (614) wifi:Init dynamic rx buffer num: 32
    I (614) wifi_init: rx ba win: 6
    I (614) wifi_init: accept mbox: 6
    I (614) wifi_init: tcpip mbox: 32
    I (624) wifi_init: udp mbox: 6
    I (624) wifi_init: tcp mbox: 6
    I (624) wifi_init: tcp tx win: 5760
    I (634) wifi_init: tcp rx win: 5760
    I (634) wifi_init: tcp mss: 1440
    I (634) wifi_init: WiFi IRAM OP enabled
    I (644) wifi_init: WiFi RX IRAM OP enabled
    W (654) wifi:Password length matches WPA2 standards, authmode threshold changes from OPEN to WPA2
    I (694) phy_init: phy_version 4861,b71b5ad,Aug 5 2025,11:16:06
    I (774) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0)
    I (834) wifi:mode : sta (00:4b:12:ef:b9:4c)
    I (834) wifi:enable tsf
    I (834) wifi_manager: Event base WIFI_EVENT, id 43
    I (834) wifi_manager: Event base WIFI_EVENT, id 2
    I (834) wifi_manager: WiFi STA start - connecting
    I (3254) wifi_manager: Event base WIFI_EVENT, id 5
    W (3254) wifi_manager: Disconnected, reason: 201
    I (5674) wifi_manager: Event base WIFI_EVENT, id 5
    W (5674) wifi_manager: Disconnected, reason: 201
    I (8084) wifi_manager: Event base WIFI_EVENT, id 5
    W (8084) wifi_manager: Disconnected, reason: 201
    I (10504) wifi_manager: Event base WIFI_EVENT, id 5
    W (10504) wifi_manager: Disconnected, reason: 201
    W (10834) wifi_manager: WiFi connection timeout
    W (10834) wifi_manager: Failed to connect STA, starting AP mode
    I (10834) wifi:mode : softAP (00:4b:12:ef:b9:4d)
    I (10834) wifi:Total power save buffer number: 16
    I (10834) wifi:Init max length of beacon: 752/752
    I (10844) wifi:Init max length of beacon: 752/752
    I (10844) wifi_manager: Event base WIFI_EVENT, id 3
    I (10854) wifi_manager: Event base WIFI_EVENT, id 43
    I (10854) esp_netif_lwip: DHCP server started on interface WIFI_AP_DEF with IP: 192.168.4.1
    I (10864) wifi:Total power save buffer number: 16
    I (10864) wifi_manager: Event base WIFI_EVENT, id 12
    I (10874) wifi_manager: Event base WIFI_EVENT, id 13
    I (10874) wifi_manager: Access point 'WachcioDrop' started
    I (10874) esp_netif_lwip: DHCP server started on interface WIFI_AP_DEF with IP: 192.168.4.1
    I (10894) wifi_manager: Event base WIFI_EVENT, id 12
    I (10894) captive_portal: Captive portal is running at 192.168.4.1
    I (10904) main_task: Returned from app_main()
    I (15784) wifi:new:<6,0>, old:<6,1>, ap:<6,1>, sta:<255,255>, prof:6, snd_ch_cfg:0x0
    I (15794) wifi:station: 66:a9:a7:59:1a:13 join, AID=1, bgn, 20
    I (15794) wifi_manager: Event base WIFI_EVENT, id 43
    I (15794) wifi_manager: Event base WIFI_EVENT, id 14
    I (15884) esp_netif_lwip: DHCP server assigned IP to a client, IP is: 192.168.4.2
    I (16054) wifi:<ba-add>idx:2 (ifx:1, 66:a9:a7:59:1a:13), tid:0, ssn:17, winSize:64
    I (847884) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (1946204) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (2523274) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (3615944) esp_netif_lwip: DHCP server assigned IP to a client, IP is: 192.168.4.2
    I (3937094) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (4952534) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (6247924) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (7216074) esp_netif_lwip: DHCP server assigned IP to a client, IP is: 192.168.4.2
    I (7222024) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (7251954) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (8048344) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (9191694) wifi:[ADDBA]RX DELBA, reason:1, delete tid:0, initiator:0(recipient)
    I (10669384) wifi:station: 66:a9:a7:59:1a:13 leave, AID = 1, reason = 3, bss_flags is 33721459, bss:0x3ffb93fc
    I (10669384) wifi:new:<6,0>, old:<6,0>, ap:<6,1>, sta:<255,255>, prof:6, snd_ch_cfg:0x0
    I (10669394) wifi:<ba-del>idx:2, tid:0
    I (10669394) wifi:new:<6,1>, old:<6,0>, ap:<6,1>, sta:<255,255>, prof:6, snd_ch_cfg:0x0
    I (10669404) wifi_manager: Event base WIFI_EVENT, id 15
    I (10669414) wifi_manager: Event base WIFI_EVENT, id 43


    Ktoś ma pomysł gdzie szukać problemu? Nie chciałbym być zmuszony do zmiany hasła wifi choć byłoby to najłatwiejsze ale mało elegenckie
    Obie sieci są na tych samych urządzeniach Mikrotik jako VLAN-y w domu z bardzo podobnymi ustawieniami. Zmiana na WPA3 nie przyniosła rezultatu
  • #22 21725955
    krzbor
    Poziom 29  
    Posty: 1754
    Pomógł: 40
    Ocena: 1061
    Oglądałeś WiFi Manager Link?
  • #23 21726449
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    >>21725955 Trochę stare i do Arduino. Ja tworzę projekt w ESP-IDF v.5.5.1
  • #24 21726462
    Konto nie istnieje
    Poziom 1  
  • #25 21726469
    inot
    Poziom 38  
    Posty: 3551
    Pomógł: 439
    Ocena: 798
    wachcio napisał:
    Oto przykład logu przy próbie połączenia gdzie hasło i nazwę sieci loguje poprawnie

    Może byłoby lepiej dla porównania jeszcze zaprezentować wersję niefunkcjonującą.
  • #26 21726471
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    Dziś przyszły mi docelowe moduły z Chin ESP32-S3-WROOM-1U-N16R8 Na razie "walczę", żeby stary kod działał z nową płytką. Muszę dojść do poprzedniego etapu. Wtedy będę mógł iść dalej
  • #27 21726522
    krzbor
    Poziom 29  
    Posty: 1754
    Pomógł: 40
    Ocena: 1061
    wachcio napisał:
    >>21725955 Trochę stare i do Arduino. Ja tworzę projekt w ESP-IDF v.5.5.1

    Projekt rozwijany od 10 lat przez 84 osoby - powodzenia jeśli zrobi Ci to AI. Ja ten moduł z powodzeniem wykorzystuję od wielu lat. Osobiście już dawno przestałem o sobie myśleć, że zrobię to lepiej.
  • #28 21726586
    wachcio
    Poziom 24  
    Posty: 1045
    Pomógł: 61
    Ocena: 73
    krzbor napisał:
    wachcio napisał:
    >>21725955 Trochę stare i do Arduino. Ja tworzę projekt w ESP-IDF v.5.5.1

    Projekt rozwijany od 10 lat przez 84 osoby - powodzenia jeśli zrobi Ci to AI. Ja ten moduł z powodzeniem wykorzystuję od wielu lat. Osobiście już dawno przestałem o sobie myśleć, że zrobię to lepiej.

    Nie chciałem tego robić lepiej. Pobieżnie zobaczyłem, że nie najnowsze i do Arduino więc nie pójdzie pewnie od strzała. Skoro warte uwagi to się zainteresuje bliżej

Podsumowanie tematu

✨ Autor posiada sterownik nawadniania ogrodu oparty na AVR Atmega32 i module Atnel Wifi, który działa od 7-8 lat, lecz planuje modernizację ze względu na brak dostępności modułu WiFi i przestarzałość mikrokontrolera. Wymagania nowego projektu obejmują obsługę 9 elektrozaworów 24VAC sterowanych przekaźnikami SSR, wyświetlacz OLED SSD1306 z enkoderem, diody LED sygnalizujące stan, moduł RTC DS3231 oraz harmonogram nawadniania z 16 pozycjami zapisywanymi w pamięci nieulotnej. Dyskusja koncentruje się na wyborze platformy: ESP32 (w tym nowszy ESP32-S3) kontra STM32 + ESP32. Uczestnicy wskazują, że sam ESP32, zwłaszcza wersja S3, jest wystarczający i bardziej praktyczny, oferując bogaty ekosystem bibliotek, wsparcie dla RTC, OLED i pamięci NVS do trwałego zapisu ustawień z mechanizmem wear leveling. Programowanie w ESP-IDF (bez Arduino IDE) w C lub MicroPython jest preferowane, z wykorzystaniem Visual Studio Code. Poruszono też kwestie problemów z obsługą haseł WiFi zawierających znaki specjalne w captive portal, gdzie zalecane jest zwiększenie poziomu logowania i analiza logów routera. ESP32-S3-WROOM-1U-N16R8 uznano za dobry wybór ze względu na liczbę pinów i nowoczesne interfejsy, a pamięć NVS za niezawodną do rzadkich zapisów ustawień. Wskazano na dostępność komponentów i dokumentacji Espressif oraz przykładowe rozwiązania sprzętowe z przekaźnikami SSR i wyświetlaczem OLED.
Wygenerowane przez model językowy.
REKLAMA