LAN hőmérő (STM32F103RCT6 alapon)

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.

rct_example.jpg

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:

rct_thermo.jpg

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):

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.

 ardueasy_info.jpg

 

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.

ardueasy_rct6.jpg

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:

https://bitekmindenhol.blog.hu/api/trackback/id/tr114994960

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

Halihó ! Sikerült a leírásod alapján életre keltenem a RET6 lapkát ,de I2C eszköz hozzáadáskor (már kijelöléskor ) lefagy . A hálózaton látom , de böngészőből nem elérhető .Ilyen esetben mi a megoldás / a teljes törlés -feltöltés helyett / a beállításhoz ?

eNeS 2020.04.24. 19:18:56

Az I2C busz sajnos egy gyenge láncszem a Roger Clark STM32 core-ban. (az új core-ra pedig nem tudtam még átfordítani a forrást) Ha nincs megfelelő felhúzóellenállás vagy egyáltalán nincs működő I2C eszköz az I2C lábakra kötve, vagy fel van cserélve az SDA és SCL akkor bizony fagy. Köss rá egy biztos működő eszközt, pl egy OLED kijelzőt, amiben integrálva van a felhúzóellenállás. Ha nem jön be, bizony a teljes törlés marad. Milyen eszközről van szó egyáltalán? lehet a pluginja hibás.

hajasarcu 2020.04.24. 21:04:19

OLED kijelzőt akartam hozzáadni (bekötés nélkül ) és kiválasztásnál már eltűnik az oldal .Ha csak be vagy kimenetnek (switch ,mqtt helper )
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

"bekötés nélkül hozzáadni"? vagyis nincs eszköz az I2C buszon = végtelen ciklusba kerül bootnál. Ha nem kötöd be, nincs is mit kiválasztani. Az analóg bemenetet majd kipróbálom, ESP-ről lett átírva, ahol csak egy A0 analóg port van, ettől függetlenül lehet választani, de lehet hogy a kijelzés része erre nem feltétlenül lett felkészítve.

eNeS 2020.04.25. 23:41:13

Lefordítottam egy új STM32 core-al is, (ArduinoEasy.stm32f103r.beta.bin) de ez sem nagyon szereti, ha nem található I2C eszköz és I2C eszközt akarsz indítani. Bár a sima i2c szkenbe már nem fagy bele. Az analóg bemeneteknél, ha átírom a portot, nekem A0, A1... stb lesz a GPIO oszlopban a neve. Az OLED kijelzőről tudni kell, ha nem olvastál bele a forrásba, hogy csak 4 sort tud maximum megjeleníteni, fele méretben.

hajasarcu 2020.04.28. 20:32:49

Úgy működik ahogy írtad ,csak újabb espEasy-nél megszokott engedélyezés ,portválasztás ablakot vártam .LanK2 kiváltására készülne ,de kevés lesz a 15 eszköz ,így csak érzékelők fogadására használnám a domoticzhoz ( a kimeneteket a Piface-Rpi kezelné ) Viszont 6db 25m kábelen felfűzött ds1820b érzékelőm is van . Ezeket simán "megeszi " , vagy kell egy kis hardveres körítés ?

eNeS 2020.04.28. 21:03:36

Igen, a kód alapja az ESPEasy 1.2 verzióból lett annak idején leválasztva. Elméletileg a RET6 2kbyteos memórialapokból áll, és 32 eszközre fel lehet bővíteni, bár még nem próbáltam, annyi task elég? 2db ds1820b eszközzel próbáltam ki annó, a megfelelő felhúzóellenállással kb 10cm kábellel működött. 25 méteren már elég sok feszültségesés lesz...

eNeS 2020.04.28. 21:22:08

Elszámoltam, 2kb-ra 25 db taskot lehet max eltárolni a belső struktúrák és a programkód jelentős módosítása nélkül.

eNeS 2020.04.28. 21:51:05

a fenti cikkben csatolva a 24 task-os bináris is.

eNeS 2020.04.29. 23:47:51

Feltölteni az új binárist is ugyanúgy lehet, mint elsőre: a maple_upload segítségével. Valóban konfig mentés nincs, és a 24 taskos változatban mivel más az adatpartíció mérete, ezért nagyjából minden elvész. (mivel az eleje máshová kerül a flashben, ezért nyit egy üreset)

Támogatók:
okosotthon.jpg
allterco.jpg

Utolsó kommentek

  • szenorb: Hello. Bekötöttem 12V-ra , a bemetére egy mozgás érzékelőt kötöttem. Szépen kapcsol a relé a késle... (2023.06.14. 06:48) Shelly okosrelé (Shelly1)
  • Melanoheliophobia: Üdv! Kb. 2 éve vásároltam két ugyanilyen okos izzót. Sajnos az egyik még garancia idő alatt eltávo... (2023.05.03. 16:50) Shelly Vintage okosizzó
  • eNeS: Lehetséges, bár az ESP8266-ot lassan ideje elfelejteni, ha nem helyi hálózatra akarsz vele forgalm... (2023.04.02. 08:43) Tasmota szkriptek
  • eNeS: @tomih: Thonnyban rebootot nyomva nekem se megy az NTP. De mikor lekapcsoltam a Thonnyt és rebooto... (2023.04.02. 08:40) Raspberry Pico és a LAN (W5100S-EVB-Pico)
  • krump_lee: Kedves eNeS! ESP8266 tasmota-val szenvedek, hiemq kapcsolat sehogy nem jön össze, sehol nem talál... (2023.04.02. 08:31) Tasmota szkriptek
  • Utolsó 20

Címkék

433mhz (12) alkatrész (22) alternatív kapcsoló (2) amg8833 (1) analóg (2) android (1) arduinoeasy (5) audio (1) automatizálás (3) bemenet (3) bk7231n (1) ble (1) blitzwolf (4) bluetooth (9) bridge (2) camhi (2) csináld magad (22) dimmer (1) diy (28) do-it-yourself (27) domoticz (11) ds18b20 (1) ebay (3) érintő (2) érintőkapcsoló (7) érzékelő (11) esp-01 (2) esp32 (11) esp8266 (21) espeasy (2) espurna (1) esp projekt (18) Eview7 (1) ewelink (1) feldolgozó (1) felhő (1) fényérzékelő (1) firmware (7) flame detector (1) fogyasztásmérő (5) ftdi (1) füstérzékelő (1) gázérzékelő (1) gpio (1) hang (4) hangjelző (1) hőmérséklet (22) https (1) ikea (1) impulzus relé (1) izzó (2) javascript (1) jelenlétérzékelő (3) kamera (18) keresztkapcsoló (1) kézmozdulat (1) kijelző (3) kimenet (21) konnektor (8) lan (9) lángérzékelő (2) led (3) linux (4) logic level converter (1) lua (1) lux (1) maple mini (2) mcu (3) micropython (1) mikrovezérlő (2) milkv (1) mobil (1) mosfet (1) mozgás (5) mpyeasy (4) mq-2 (2) mqtt (3) működtető rendszer (5) multiroom (1) nedvesség (1) neo (1) neopixel (1) Node-RED (1) nvr (4) nyitás (7) okosház (4) okosizzó (3) okosotthon (8) oled (1) onvif (8) openbeken (1) opencv (1) openwrt (4) orange pi (4) páratartalom (6) php (1) pico (1) pi pico (2) poe (1) programozás (9) projekt (25) proximity olvasó (1) python (2) raspberry (14) raspberry projekt (6) raspbian (1) reed (1) relé (27) rf (2) rgb (6) rock pi (1) rögzítő (2) rp2 (1) rpieasy (1) rtc (1) shelly (24) smartwise (1) solid state relay (1) sonoff (20) SonOTA (1) soros (1) ssl (1) ssr (1) stm32 (4) szenzor (11) szilárdtest relé (1) szintillesztő (2) sziréna (1) szkript (3) szünetmentesítés (4) t1 (1) tasmota (8) távirányító (3) Telegram (1) termékteszt (85) termosztát (2) touch (2) ups (5) usb (7) usb hub (1) valós idejű óra (1) vezérlések (20) vezérlő (5) világítás (5) villanykapcsoló (12) webkamera (1) wiegand (1) wifi (32) ws2812 (1) xiaomi (5) xm (4) xmeye (4) yoosee (1) zigbee (16) zwave (3) Címkefelhő
süti beállítások módosítása