AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet
: 18 maja 2025, 21:15
Sterownik urodził się z (niestety strasznie zaśmieconego) wątku topic125134.html
Pisałem tam, że wziąłem na warsztat moduł WT32-ETH01, który akurat miałem z innego projektu, a kosztujący naprawdę grosze (Na Aliexpress nawet poniżej 25 PLN).
Ten moduł zawiera na jednej płytce mikroprocesor ESP32 i układ obsługi Ethernetu LAN8720 z gniazdem RJ45, nic nadzwyczajnego, ale aż się prosi żeby go do czegoś użyć...
Postanowiłem oprzeć się na projekcie https://github.com/jzolee/HAL2UDP/tree/1.0 (wersja 1.0), który co prawda zawiera błędy i bez poprawek nie działa, ale jest wyjątkowo schludnie i przejrzyście napisany, dzięki czemu wiadomo co jest od czego i jak ma działać.
Niestety, większość kodu dostępnego w necie jest tak pisana, że rozumie ją tylko autor i to niekoniecznie, więc nawet drobne zmiany są męczarnią...
Zmiana biblioteki z W5500 na LAN8720 była drogą przez mękę, ale kiedy już się udało, to wszystko okazało się banalnie proste.
No i tak narodził się AuxIO, który nie powala możliwościami, ale zacząć trzeba było od czegoś prostego.
Dało się z przedmiotowej płytki wycisnąć sześć wyjść i osiem wejść cyfrowych z dość prostym zabezpieczeniem przed błędami transmisji (suma kontrolna danych otrzymywanych z komputera).
Tutaj mała dygresja. Otóż są rzeczy, które muszą być szybkie i takie które nie muszą. Jeśli chcemy sprawdzić czy ktoś nie otworzył osłony, albo włączyć chłodziwo, to nie musimy tego robić tysiąc razy na sekundę... Dlatego też taki pomocniczy układ można przypisać do stosunkowo wolnego wątku i nie powinien on za bardzo przeszkadzać głównemu sterownikowi.
IP jest ustawione na 10.10.10.99, co jest spowodowane tym, że używam sterowników Remora z adresem 10.10.10.10, więc chciałem mieć z tego samego zakresu. Jak komuś nie pasuje, to może sobie zmienić, byleby równocześnie w AuxIO.ino i AuxIO.comp, bo UDP2HAL pracuje ze sztywno przypisanym adresem.
Tak należy to cudo programować:
.
Pisałem tam, że wziąłem na warsztat moduł WT32-ETH01, który akurat miałem z innego projektu, a kosztujący naprawdę grosze (Na Aliexpress nawet poniżej 25 PLN).
Ten moduł zawiera na jednej płytce mikroprocesor ESP32 i układ obsługi Ethernetu LAN8720 z gniazdem RJ45, nic nadzwyczajnego, ale aż się prosi żeby go do czegoś użyć...
Postanowiłem oprzeć się na projekcie https://github.com/jzolee/HAL2UDP/tree/1.0 (wersja 1.0), który co prawda zawiera błędy i bez poprawek nie działa, ale jest wyjątkowo schludnie i przejrzyście napisany, dzięki czemu wiadomo co jest od czego i jak ma działać.
Niestety, większość kodu dostępnego w necie jest tak pisana, że rozumie ją tylko autor i to niekoniecznie, więc nawet drobne zmiany są męczarnią...
Zmiana biblioteki z W5500 na LAN8720 była drogą przez mękę, ale kiedy już się udało, to wszystko okazało się banalnie proste.
No i tak narodził się AuxIO, który nie powala możliwościami, ale zacząć trzeba było od czegoś prostego.
Dało się z przedmiotowej płytki wycisnąć sześć wyjść i osiem wejść cyfrowych z dość prostym zabezpieczeniem przed błędami transmisji (suma kontrolna danych otrzymywanych z komputera).
Tutaj mała dygresja. Otóż są rzeczy, które muszą być szybkie i takie które nie muszą. Jeśli chcemy sprawdzić czy ktoś nie otworzył osłony, albo włączyć chłodziwo, to nie musimy tego robić tysiąc razy na sekundę... Dlatego też taki pomocniczy układ można przypisać do stosunkowo wolnego wątku i nie powinien on za bardzo przeszkadzać głównemu sterownikowi.
IP jest ustawione na 10.10.10.99, co jest spowodowane tym, że używam sterowników Remora z adresem 10.10.10.10, więc chciałem mieć z tego samego zakresu. Jak komuś nie pasuje, to może sobie zmienić, byleby równocześnie w AuxIO.ino i AuxIO.comp, bo UDP2HAL pracuje ze sztywno przypisanym adresem.
Tak należy to cudo programować:

.