A Pico-t ugyebár bármiféle hálózati illesztő nélkül adták ki, de időközben alternatív kiadásai is megjelentek. Nemrég írtam a wifis megoldásról (PicoW), ezúttal pedig pár szót szeretnék ejteni az egyik számomra legszimpatikusabb megoldásról: a LAN-osról, hiszen a vezetékes kapcsolatnál nincs stabilabb.
Ezt a modellt nem maga a Raspberry, hanem a hálózati termékeiről ismert Wiznet adta ki, és a jól csengő W5100S-EVB-Pico nevet kapta.
A lapka a két rá integrált chip, és a 8P8C RJ45 csatlakozó miatt hosszabb a szokásosnál.
Mindent tud természetesen, amit a Pico, ugyanaz az ARM Cortex M0 ketyeg benne, 264kB memóriával és 2MB flash tárhellyel integrálva, viszont kapott egy LAN vezérlő chipet, ez a Wiznet W5100S modellje, ami a következőket tudja adatlap szerint:
- 4 egyidejű hálózati socket
- 16 kbyte átviteli puffermemória
- SPI csatlakoztatás
- 10/100 mbps Half/Full duplex Ethernet sebesség, automatikus egyeztetéssel
- 132 mA max fogyasztás
Természetesen erre is rámértem, meglepő módon stabilan hozza a fogyasztást, ha 100mbps élő LAN kapcsolata van, akkor 120mA körül mozog, ha nincs élő LAN, akkor 66mA a fogyasztása.
És hogy honnan szerezzünk ilyet?
- A Pimoroniról (Nagy-Britannia) 10,41 angol font
- Az SOSElectronic-től (Magyarország) 5580 Ft
Szinte hallom a kérdést felmerülni, hogy miért is foglalkozom a Pico-val, elfordultam volna az ESP chipektől? Nos való igaz, hogy az ESP bizonyos dolgokra jobb, egyszerűbb megoldás, viszont egyrészt a kínai beszerzéseimet igyekszem minimalizálni a vámkezelési szabályok módosulása óta, másrészről sokszor nem mindegy mennyi egy tétel beszerzési ideje, ha egy eszköz, lásd Pico beszerezhető Magyarországon is, néha ez sokkal többet nyom a latban az áránál is.. Tudom (sima) ESP32 van magyar webshopokon is, viszont a LAN-os WT32-ETH01 nem igazán kapható itthon, ahogy a PSRAM-al szerelt ESP32 WROVER fejlesztői lapok sem túl elterjedtek kis hazánkban. Ugyan Nagy-Britannia kilépett az EU-ból, de példának okáért a Pimoroni beregisztrált az IOSS rendszerbe, úgyhogy az ÁFÁ-t intézik automatikusan. Nem mellesleg a Raspberry termékek máshol is kaphatók az EU-ban, lásd szlovén illetve román webshopok, így ezekhez akkor is hozzá lehet jutni belátható időn belül, ha a magyar viszonteladónál éppen nincs - reményeim szerint.
Azt jó tudni, hogy az SPI-n csatolt LAN illesztőhöz vannak kötve a Pico GP16, GP17, GP18, GP19, GP20 és GP21 lábai, így ezeket lehetőség szerint ne akarjuk más célra használni.
Mire jó ez?
Nos, ha tudunk programozni, bármire, amire egy ESP. :) A PicoW kapcsán már jeleztem, hogy az mPyEasy-t átdolgoztam Pico-ra, így ha ezt a firmwaret feltesszük rá, kényelmesen, webes felületen állíthatjuk be az egyes funkcióit, ahogy korábban az ESPEasy kapcsán már megszokhattuk.
Korábban írtam a LAN relé projektemről, amit akkor MapleMini-vel oldottam meg, viszont a hardver elég szűk erőforrásokkal rendelkezik, így a szoftver fejlesztése és karbantartása elég körülményes, nem is nagyon foglalkoztam vele igazság szerint azóta. Ezt a funkcionalitást teljesen ki tudja váltani egy W5100S-EVB-Pico.
Másik projektem a LAN-os áramkimaradás-figyelő, ami szintén megvalósítható a LAN-os Picoval, SSL képes a hálózati rétege, így tud GMail-el direktben kommunikálni, GPIO-t képes kezelni, maga a tökély.
Amennyiben MicroPython-t szeretnénk rátenni, a korábbihoz hasonló módon először is le kell töltenünk egy megfelelő nightly build-et.
https://micropython.org/download/W5100S_EVB_PICO/
Működtető rendszert pont úgy tudunk rá tenni, mint a sima Pico-ra:
A rajta található BOOTSEL gomb nyomva tartása mellett kell USB kábellel gépünkre kötni (mikro-USB csatlakozása van még mindig), ekkor megjelenik hordozható meghajtóként, mint egy pendrive, és ebbe a maghajtóba kell felmásolnunk az .UF2 kiterjesztésű firmware állományt, feltöltés után automatikusan újraindítja magát.
Amennyiben sikerült egy microPython rendszert feltennünk, a Thonny IDE segítségével rá tudunk csatlakozni, és python parancsokkal direktben vezérelni.
Ha csatlakoztunk, a Thonny Shell-ben az alábbi parancsokkal tudjuk tesztelni, működik-e a LAN:
import network
lan_if = network.WIZNET5K()
lan_if.active(True)
lan_if.ifconfig('dhcp')
Kész firmware-ek nem nagyon vannak még hozzá, bár én vettem a fáradtságot, és a korábban ESP32-re írt mPyEasy-t átportoltam mPyEasy-Async néven elérhető a github-on:
https://github.com/enesbcs/mpyeasy-async
mPyEasy feltöltése:
1/ Letöltjük a release-ek közül a megfelelő binárist, ez most épp az mpyeasy-11260-pico-w5100.uf2
https://github.com/enesbcs/mpyeasy-async/releases
2/ megnyomjuk a BOOTSEL gombot és csatlakoztatjuk USB kábellel a gépünkre a PicoW-t
3/ felmásoljuk az .UF2 fájlt a megjelenő új meghajtóra
4/ Feltöltés után csatlakoztatjuk LAN kábellel hálózatunkhoz, és amennyiben van DHCP szerver, akkor kap tőle egy címet, ezt a routerünkből tudjuk kinyerni. Ha nincs DHCP szerver, alapértelmezetten 192.168.1.10 IP címet fog felvenni az eszköz, így érhetjük el böngészőből.
Az mPyEasy-ről már írtam korábban, akár HTTP-n, akár MQTT-n tudjuk saját okosotthon vezérlőnkbe csatlakoztatni, a Controllers menüben. A Devices-ban tudunk alapvető szenzorokat GPIO be/kimenet, hőmérő.. létrehozni, a Rules-ban belső szabályokat felvenni, a Notifications-ban, pedig értesítések beállítását felvenni, példának okáért GMAIL SMTP-t, ami teljes mértékben működik, ugyanis SSL képes az eszköz.
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.
OrszágLÁTÓ.hu · https://www.orszaglato.hu/ 2022.10.13. 17:10:17
eNeS 2022.10.13. 17:16:36
OrszágLÁTÓ.hu · https://www.orszaglato.hu/ 2022.10.14. 19:01:14
17:33:26.751 INFO thonny: sys.flags: sys.flags(debug=0, inspect=0, interactive=0, optimize=0, dont_write_bytecode=1, no_user_site=0, no_site=0, ignore_environment=0, verbose=0, bytes_warning=0, quiet=0, hash_randomization=1, isolated=0, dev_mode=False, utf8_mode=0, warn_default_encoding=0)
17:33:26.751 INFO thonny.plugins.micropython.bare_metal_backend: Starting backend, args: {'clean': True, 'port': 'COM11', 'dtr': None, 'rts': None, 'submit_mode': 'raw_paste', 'interrupt_on_connect': True, 'write_block_size': 64, 'write_block_delay': None, 'proxy_class': 'RaspberryPiPicoBackendProxy', 'sync_time': True, 'validate_time': False, 'local_rtc': True}
tomih 2023.02.17. 17:55:03
Ha nincs a boardra rákötve szenzor akkor, az NTP nem frissül.
Viszont, ha kézzel beadom a Thonny-n keresztül, az import utime -t, akkor frissül az ntp.
eNeS 2023.02.17. 18:00:53
Ntp általában akkor nem megy, ha nincs internet az induláskor.
Milyen szenzor van rákötve, amitől frissül? Nem igazán látom az összefüggést mert a hálózat inicializálás és az ntp a szenzorok inicializációja előtt fut... erre való a log.
tomih 2023.02.19. 14:26:56
1. W5100S-EVB-Pico with RP2040 ( statikus ip címmel van beállítva)
2. Csak egy soft reboot-os logom van:
MPY: soft reboot
Loading settings
Loading AdvSettings
Init hardware...
Loading HW settings
Loading Pinout settings
hwic spic
Init LAN
-
-
NTP time sync
RTC time sync
RTC init err: name 'libhw' isn't defined
192.168.1.10
Loading tasks
Loading controllers
Loading notifiers
00:02:12: Event: System#Boot
Starting main loop
00:02:12: Event: pingntp#State=0
00:02:12: Event: Clock#Time=Fri,00:02
00:03:00: Event: Clock#Time=Fri,00:03
00:03:13: Event: pingntp#State=1
A szenzoros frissülést ne vedd figyelembe, szerintem csak sok mindent kipróbáltam és megváltozott időnek megörültem.
eNeS 2023.02.19. 14:28:20
eNeS 2023.02.19. 15:23:58
github.com/enesbcs/mpyeasy-async/releases/tag/v1.1.332-beta
tomih 2023.02.19. 17:36:14
Thonny 4.0.2-t használok.
Az Interpreter-nél van nálam olyan opció, hogy
"Synchronize device's real time clock"
"Use local time in real time clock"
Ezeket kikapcsoltam.
Python 3.4.0; MicroPython v1.19.1-663-ge35bcb0f0-dirty on 2023-02-19 uPython v1.19.1-663-ge35bcb0f0-dirty on 2023-02-19 (GNU 10.3.1 MinSizeRel)
MPY: soft reboot
Loading settings
Loading AdvSettings
Init hardware...
Loading HW settings
Loading Pinout settings
hwic spic
Init LAN
-
-
NTP time sync
192.168.1.10
Loading tasks
Loading controllers
Loading notifiers
00:00:19: Event: System#Boot
Starting main loop
00:00:19: Event: Clock#Time=Fri,00:00
00:01:00: Event: Clock#Time=Fri,00:01
00:01:02: Event: pingntp#State=1