Ismét egy proof-of-concept projekt következik, mindenféle dobozolás és csicsa nélkül.
A felvetés egyszerű: hogyan tudnánk LAN-on keresztül egy relét vezérelni?
A kiindulási alap egy létező eszköz, ha rákeresünk az e-bayen a LAN Ethernet Relay kifejezésre (SR-201 néven is ismert). Amivel egyébként különösebben nincs baj, a szerény rá integrált STC chiphez képest (aminek a pontos típusát szemérmesen elhallgatják minden oldalon, nyilván valami óriási 16kB flash tárhellyel rendelkező típus) korrekt iparosmunkának tűnik, webes felülete ugyan nincs (nyilván se a tárhelye se a memóriája nem elegendő ilyesmire), ám REST API-n keresztül lehet URL hívásokkal vezérelni, adnak hozzá szoftvereket is (bár a legnagyobb zsákbamacska az okoskütyüknél a zárt forrású firmware)... de a rá integrált ENC28J60-ra nincs bocsánat, 5 ezer forintos ára sem túl reális.
Az ENC28J60 LAN vezérlőről azt kell tudni, hogy gyakorlatilag minden funkcióját szoftverben kell megvalósítani, nincs saját memóriája-gyorsítótára, és a vezérlő (ami ez esetben egy ismeretlen STC) terheltségétől és teljesítményétől függően tesztjeim szerint csak egy mérnöki csoda teheti lehetővé, hogy miközben folyamatosan pingeli valaki, ne szűnjön meg a LAN kapcsolata legalább 5 percenként...
De ne is merüljünk bele nagyon, szerencsére nem a fenti eszközről lesz szó, hanem az ArduinoEasy és a MapleMini egymásra találása jegyében az alábbiról:
A fenti csendélet tagjai:
Eszköz | Bruttó ár |
Maple Mini STM32 fejlesztői lap (*) | 1060 Ft |
W5500 LAN modul (*) | 1037 Ft |
3.3V-os 1 csatornás relémodul (*) | 545 Ft |
miniUSB-USB A kábel (*) | 285 Ft |
5V1A hálózati töltő, USB (*) | 260 Ft |
Összesen: | 3187 Ft |
Természetesen 3VDC tekercsfeszültségű relét alkalmaztam, ugyan a MapleMini tolerálja bizonyos bemenetein az 5V-ot, de ez nem jelenti azt, hogy használná is, mivel a belső logikája 3.3V-os...
Talán látszik, hogy még ha veszünk +1 relét a fenti konfighoz, árban akkor is jobban jövünk ki, és talán mondanom se kell, hogy a MapleMini+W5500 kombó úgy viszonyul az STC(?)+ENC28J60-hoz képest, mint egy Toyota Avensis a kétütemű Trabanthoz.
Bekötés:
Firmware
A korábban már ismertetett ArduinoEasy kerül rá, a >> MapleMini-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 (ezeket célszerű elraktározni a 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:
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=56, 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=56, 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=56, 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.maple_mini_relay.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 1024
Copying data from PC to DFU device
Download [=========================] 100% 116048 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ü, ha sokat gondolkozott, egy Reset gomb megnyomás a Maple-ön sokat tud segíteni.
Ez az előző stabil ESPEasy 1.2 verzióhoz hasonlóan állítható be, a Config menüpontban át tudjuk írni az alapértelmezett IP címét, ha 0.0.0.0-át írunk be, akkor DHCP-t fog használni induláskor.
A helyszűke miatt csak a Domoticz HTTP controllert fordítottam bele, de ahogy már írtam a korábbi cikkben is, szabad a vásár, mindenki azt hagyja benne, amit szeretne.. és persze befér.
Felvehetünk egy Switch input eszközt (ez persze alapvetően bemenetek olvasására van kitalálva, de a kimenet státuszát is láthatjuk):
A relé állapotát a gpio paranccsal tudjuk váltani, vagy a Command mezőben, vagy Rules-ban, vagy az ESPEasy-ben szokásos HTTP parancsküldésen keresztül: ( http://<espeasyip>/control?cmd=<command> )
Talán első ránézésre nem tűnik túl egyszerűnek a dolog, legalábbis a fordítás és feltöltés része, viszont még mindig sokkal egyszerűbb, mintha az egész keretrendszert, GUI-t, hálózatkezelést, eszközök kezelését, NTP és hasonló nyalánkságokat saját magunknak kellene le is programoznunk...
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.