Nemrégiben megkérdezték miért tértem át az ESP8266-ról az STM32-re... a válasz roppant egyszerű: nem tértem át, de ezzel is meg akartam ismerkedni és megismertetni az érdeklődőkkel is, hogyan lehet érdemben DIY érzékelőt készíteni WiFi nélkül, mivel hiszitek vagy sem, ez egy valós igény.
Szóval továbbra is lesz itt még szó ESP projektekről, de gondolva a későbbi esetleges célfeladatokra, felmérem a további lehetőségeket is.
Előszó
Mióta rátaláltam az ESPEasy-re 2017-ben, számomra ez az a firmware, ami a beágyazott ESP rendszereknél a kvázi-operációs rendszer szerepét tölti be: van felhasználói felülete, ezen keresztül változtathatjuk a működési paramétereit és vezérelhetjük a kimeneteit, gyűjthetjük, továbbíthatjuk az adatokat a nélkül, hogy mindezt saját magunknak kellene leprogramoznunk. Ennek bűvöletében készítettem el az RPIEasy-t ami a Raspberry Pi esetén ugyanezen feladatokat látja el, majd az ArduinoEasy-t is portoltam STM32 F103 architektúrára, ami alacsony fogyasztása mellett hardveres paramétereiben messze túlmutat a mezei Arduino hardvereken.
A hőmérséklet mérése, főleg a globális klímaváltozás függvényében (de szerintem egyébként is) alapvető igény, így egy ilyen demó-projekt készítése kézenfekvőnek tűnt, lássunk hát neki.
Megvalósítható lenne Raspberry PI-vel is, akár WiFi, akár LAN csatlakozáson keresztül, de tegyük fel, hogy erre a célra nem akarunk egy ilyen "izomgépet" felhasználni - mert sokan így vannak ezzel, nem egyszer láttam már ezt különböző fórumokon.
Megvalósítható lenne ESP8266-al is, de tegyük fel, hogy nem akarunk WiFi hálózatot használni, akár azért mert paranoiásak vagyunk, hogy esetleg lehallgatják a hálózati forgalmunkat, akár azért, mert nem bízunk a WiFi technológia stabilitásában - mindkétféle embertípussal találkoztam már, maradjunk abban, hogy nem légből kapott a feltevés. Több helyről is visszahallottam, hogy az ESP8266-ra is rá lehet kötni a LAN csatlakozót: igen a hír igaz, csak egyrészt az egyébként sem túl nagy számú, szabadon használható lábakat ez rögtön megfelezi, másrészt egészen nyugodtan kezdhetjük izzítani a billentyűzetünket, hogy megírjuk a szükséges programot, mivel sem az ESPEasy sem a Tasmota nem tud ilyet... meg 1-2 tranzisztort is össze kell eszkábálnunk az SPI select lábának korrekt használatához, ami nélkül az ESP nem fog bebootolni, mivel a szóban forgó láb speciális jelentéssel bír...
Ennyi bevezetés után rátérek az általam javasolt megoldásra: vegyünk egy STM32 lapot, ha a projekthez szükséges ArduinoEasy kódot le tudjuk fordítani 118kB méretre, akkor a MapleMini is jó lehet, bár én ezt nem javaslom, sokkal több minden támogatását rá tudjuk tenni - többek közt az MQTT támogatást is - egy 256-512kB flash tárhellyel rendelkező STM32F103RCT6-ra, így én is ezt teszem.

A fenti csendélet tagjai:
Eszköz | Bruttó ár |
STM32F103RCT6 fejlesztői lap (*) | 1958 Ft |
W5500 LAN modul (*) | 1037 Ft |
AM2320 I2C hőmérőszenzor (*) | 428 Ft |
BMP280 I2C hőmérőszenzor (*) | 200 Ft |
miniUSB-USB A kábel (*) | 285 Ft |
5V1A hálózati töltő, USB (*) | 260 Ft |
Összesen: | 4168 Ft |
Látható, hogy nem vesztem el a részletekben, a lehető legegyszerűbb módon osztottam el mind a tápellátást, mind az I2C vonalat a két szenzor számára. És hogy mik az üresen lógó kábelek? Az az igazság, hogy ennél több I2C eszközöm is van, és mindet kipróbáltam vele, de azokat közben lehúztam. :)
Bekötés:

A W5500 modult a szokásos módon az SPI lábakra csatlakoztatjuk, a hőmérőknek 3.3V-os tápellátás, GND és a két I2C láb szükséges, ezek a PB6 és PB7. (ennek a fejlesztői lapnak nincs beépített felhúzó ellenállása az I2C vonalon, így ha a szenzorunkba nincs beépítve, kézileg szükséges azt pótolni két 1-1db 2-4K felhúzó ellenállás formájában, a BMP-n van, így nekem erre nem volt szükségem)
RCT6 | W5500 | BMP280 | AM2320 |
3.3V | 3.3V | VCC | VCC |
GND | GND | GND | GND |
RST | RST | ||
A4 | SCS | ||
A5 | SCLK | ||
A6 | MISO | ||
A7 | MOSI | ||
B6 | SCL | SCL | |
B7 | SDA | SDA |
Firmware
A korábban már ismertetett ArduinoEasy kerül rá, az >> STM32F103RCT6-nál << leírtak szerint fordítsuk le és töltsük fel!
Joggal merülhet fel azonban a kérdés: Muszáj állandóan fordítgatni a feltöltéshez?
A válasz: nem feltétlen.
Ha a korábbi cikkben leírt bootloader2.0-át már feltettük (stm32flash segítségével), akkor a továbbiakban a ~/Arduino/hardware/Arduino_STM32/tools/linux/ mappában található maple_upload parancsfájl segítségével, parancsorból fel tudunk tölteni binárisokat a miniUSB csatlakozón keresztül közvetlenül (ezeket célszerű elraktározni későbbre), amiket korábban az Arduino IDE segítségével exportáltunk. Itt van példának okáért az általam használt változat (alap IP címe 192.168.0.50, mindhárom kontroller és 15 plugin belefordítva, 16 lehetséges eszközhellyel):
- ArduinoEasy.stm32f103r.bin - Letöltés Google Drive-ról
- ArduinoEasy.Beta.stm32f103r.bin
- ArduinoEasy.Beta2.stm32f103ret6.bin (24 eszközhellyel!)
Ha le akarjuk tesztelni előbb, hogy az USB kábel csatlakoztatását követően látható-e az eszközünk, így tudjuk megtenni:
cd ~/Arduino/hardware/Arduino_STM32/tools/linux/dfu-util
sudo ./dfu-util -l
Amire válaszul ilyesmit fogunk látni:
dfu-util 0.8
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org
Found DFU: [1eaf:0003] ver=0201, devnum=8, cfg=1, intf=0, alt=2, name="STM32duino bootloader v1.0 Upload to Flash 0x8002000", serial="LLM 003"
Found DFU: [1eaf:0003] ver=0201, devnum=8, cfg=1, intf=0, alt=1, name="STM32duino bootloader v1.0 Upload to Flash 0x8005000", serial="LLM 003"
Found DFU: [1eaf:0003] ver=0201, devnum=8, cfg=1, intf=0, alt=0, name="STM32duino bootloader v1.0 ERROR. Upload to RAM not supported.", serial="LLM 003"
A lényegi feltöltést a maple_upload meghívásával tudjuk indítani, valahogy így:
cd ~/Arduino/hardware/Arduino_STM32/tools/linux/
./maple_upload ttyACM0 2 1EAF:0003 ArduinoEasy.stm32f103r.bin
Az első paraméter a "ttyACM0" egy virtuális soros port, az utána levő 2-es jelenti azt, hogy a kisebbik 8kB méretű bootloader van használatban, az 1EAF:0003 az USB azonosítója a Maple-nek, és az utolsó paraméter a feltöltendő bináris fájl. Ugyanezt a parancsot használja az Arduino IDE is a feltöltéshez.
A válasz:
dfu-util 0.8
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1eaf:0003
Run-time device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Setting #2 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 2048
Copying data from PC to DFU device
Download [=========================] 100% 187316 bytes
Download done.
state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
Done!
Resetting USB to switch back to runtime mode
Waiting for /dev/ttyACM0 serial...Done
Ha sikerrel járunk, akkor máris elindult a sketch és elérhető a kütyü böngészőből, az alapértelmezett IP címen (192.168.0.50), ha sokat gondolkozott, egy Reset gomb megnyomás a lapon sokat tud segíteni.
Innentől az ESPEasy-ben is megszokott pár kattintással felvehetjük a webes felületen a szenzorokat, meghatározhatjuk milyen időközönként küldjenek adatot a központ felé, ahogy az illik. Összesen 16 szenzort vehetünk fel.
Mivel az ArduinoEasy az ESPEasy stabil 1.x verziójából lett átemelve több dolog hiányzik belőle, a legfeltűnőbb az, hogy egyidőben csak egy kontrollert állíthatunk be a Config fülön, de ne legyünk telhetetlenek, 182kB-nyi programkódba nem lehet beletömködni egy modern 800kB méretű ESPEasy-t...
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
hajasarcu 2020.04.24. 10:49:27
eNeS 2020.04.24. 19:18:56
hajasarcu 2020.04.24. 21:04:19
veszek fel lábakat ,jól működik.Az analóg bemenet érdekes mert bármit írok a porthoz az eszközöknél a GPIO oszlopnál A0 jelenik meg. Win 10-et használok ,az ST Demonstrator GUI programmal került a lapkára a generic_boot20_pc13.bin ,utána parancssorból a maple_upload ArduinoEasy.stm32f103r.bin .
eNeS 2020.04.24. 21:13:44
eNeS 2020.04.25. 23:41:13
hajasarcu 2020.04.28. 20:32:49
eNeS 2020.04.28. 21:03:36
eNeS 2020.04.28. 21:22:08
eNeS 2020.04.28. 21:51:05
eNeS 2020.04.29. 23:47:51
Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal