Linuxcnc Arduino Ethernet ?

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

gothye
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 134
Rejestracja: 15 kwie 2009, 15:18
Lokalizacja: Płock

Re: Linuxcnc Arduino Ethernet ?

#11

Post napisał: gothye » 29 sie 2020, 18:52

podłącz pod ESP np MCP23017 (liby też są w arduino) i masz 16 IO (16 przekaźników) lub 8 wejść / 8 wyjść co dalej zależy od Twojej wyobraźni ;)



Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 9
Posty: 7888
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Linuxcnc Arduino Ethernet ?

#12

Post napisał: tuxcnc » 29 sie 2020, 19:31

Było jakoś tak :

Kupiłem sobie takie moduły https://www.aliexpress.com/item/32821721218.html
Można je zaprogramować wykorzystując Arduino IDE i dowolny konwerter USB na port szeregowy TTL, także wbudowany w Arduino Uno czy Nano.
Informacje można znaleźć w internecie.
Znalazłem przykładowy program, który do tego modułu za 10PLN ładuje serwer http, z którym można się łączyć z dowolnej przeglądarki internetowej. Strona wygląda skromnie, ale klikając na ON albo OFF można przełączać przekaźnik.
Trochę trudno jednak ożenić Firefoksa z Linuxcnc, więc postanowiłem problem obejść.
Moduł działa w taki sposób, że na serwerze są dwie podstrony (RELAY=ON i RELAY=OFF) i w zależności którą chcemy pobrać do przeglądarki, to moduł wykonuje dodatkowe czynności, czyli w tym przypadku przełącza przekaźnik.
Jeżeli działa to na zasadzie pobrania określonej strony, to pomyślałem o terminalowym poleceniu wget, które faktycznie spełnia zadanie, ale w sposób mało elegancki, bo zapisuje na dysku dane, które z naszego punktu widzenia są śmieciami.
Lepszym rozwiązaniem jest polecenie curl.
Z kolei w LInuxcnc można g-kodom M100 do M199 przypisać do wykonania dowolny program, także skrypt powłoki.
Teraz powinno już być jasne, że jeżeli np. g-kodowi M111 przypiszemy polecenie curl <adresIP>/RELAY=ON/ to po napotkaniu M111 w programie Linuxcnc włączy przekaźnik modułu.
Niestety program który znalazłem napisał jakiś niechluj i niby on działa ale nie tak jak powinien.
Ważniejszym problemem jest jeszcze to, że moduł ma przydzielany dynamiczny adres IP przez DHCP, co jest w takim zastosowaniu głupotą i masochizmem.
Może się komuś nie spodobać wykorzystanie wifi w środowisku przemysłowym, ale to samo da się zrobić po kablu.

Dodane 2 godziny 37 minuty 25 sekundy:
Godzinę czasu straciłem, zanim się dopatrzyłem że jakiś partacz i flejtuch zamienił miejscami w kodzie "subnet" i "gateway", a potem opublikował to w internecie jakby wszystko było w porządku.
Kod oczywiście kompilował się bez problemu, natomiast nie działał, co przecież nie jest dziwne ...
No ale w końcu doszedłem i teraz wszystko działa jak powinno :
linuxcnc-ESP-01.tar
(10 KiB) Pobrany 102 razy
We wszystkich trzech plikach należy zmienić IP, bramę i maskę na pasujące do konkretnej sieci.
Oczywiście w sieci może pracować wiele przekaźników, ale muszą mieć różne IP.
M111 i M112 to wykonywalne skrypty powłoki i można ich używać bez Linuxcnc.

Dodane 13 minuty 47 sekundy:
gothye pisze:
29 sie 2020, 18:52
podłącz pod ESP np MCP23017 (liby też są w arduino) i masz 16 IO (16 przekaźników) lub 8 wejść / 8 wyjść co dalej zależy od Twojej wyobraźni ;)
Mam NodeMCU, zamówiłem też niedawno ESP32, cenowo to nie wychodzi dużo drożej, ale prostota tego modułu z ESP-01 jest jego główną zaletą.

Zresztą bardziej mi chodzi o odczarowanie tematu sterowania przez sieć. Wszyscy się uparli na USB, z czym są same problemy, a na Ethernet i wifi patrzą jak ciele na malowane wrota.

Awatar użytkownika

gothye
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 134
Rejestracja: 15 kwie 2009, 15:18
Lokalizacja: Płock

Re: Linuxcnc Arduino Ethernet ?

#13

Post napisał: gothye » 29 sie 2020, 20:08

tuxcnc pisze:
29 sie 2020, 19:31

Zresztą bardziej mi chodzi o odczarowanie tematu sterowania przez sieć. Wszyscy się uparli na USB, z czym są same problemy, a na Ethernet i wifi patrzą jak ciele na malowane wrota.
Otóż to ! sam mam soft na esp32 do CNC napisany przez siebie ,teraz siedzę z G68 / G69 i usprawnić przeliczanie w akceleracji opartej o s-curve

Ps ESP32 jest o niebo lepszy ale .. tylko na esp-idf , arduino + esp32 zwłaszcza z client wifi jest bardzo nie stabilne ( w lib do tego napisane jest wait w pętli , czyli jak nie wyśle pakietu TCP to powtarza jego wysyłanie x10 z przerwą 1s !) zgłaszałem im ten bug i swoją poprawkę ale nie widzę aby ją wprowadzili u siebie

Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 4703
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Linuxcnc Arduino Ethernet ?

#14

Post napisał: pitsa » 29 sie 2020, 23:41

tuxcnc pisze:(RELAY=ON i RELAY=OFF)
Przykład z elektrody: https://www.elektroda.pl/rtvforum/topic3338096.html
tuxcnc pisze:Wszyscy się uparli na USB, z czym są same problemy, a na Ethernet i wifi patrzą jak ciele na malowane wrota.
Podobne rozwiązanie do twojego stosuję z pomocą Arduino Nano wpiętym przez USB. Też gdzieś tam w internecie wygrzebałem przykład i przerobiłem na własne potrzeby (zobacz tutaj). Różnica jest taka, że bez wpiętego do USB arduino linuxcnc się nie uruchomi i dzięki temu wiem, że wszystko jest ok. Mam prostą komunikację dwukierunkową z linuxcnc. Z modułami esp nie miałbym gwarancji, że mogę się z nimi połączyć. W niektórych miejscach jest tak ciasno w sieci, że nawiązanie połączenia z routerem trwa godzinami. Takie mam doświadczenia i wifi do odpowiedzialnych rzeczy nie stosuję, wolę po jakimś kablu.
gothye pisze:arduino + esp32 zwłaszcza z client wifi jest bardzo nie stabilne
Szkoda.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ

Awatar użytkownika

gothye
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 134
Rejestracja: 15 kwie 2009, 15:18
Lokalizacja: Płock

Re: Linuxcnc Arduino Ethernet ?

#15

Post napisał: gothye » 30 sie 2020, 09:11

pitsa pisze:
29 sie 2020, 23:41
. Z modułami esp nie miałbym gwarancji, że mogę się z nimi połączyć. W niektórych miejscach jest tak ciasno w sieci, że nawiązanie połączenia z routerem trwa godzinami. Takie mam doświadczenia i wifi do odpowiedzialnych rzeczy nie stosuję, wolę po jakimś kablu.
gothye pisze:arduino + esp32 zwłaszcza z client wifi jest bardzo nie stabilne
Szkoda.
Z TCP/IP i serwerem TCP po stronie ESP32 lub linuxCNC będziesz miał gwarancje , ponieważ nie odbywa się to jak w UDP ( zerknij : )

z pisaniem softu na ESP korzystaj z ESP-IDF np w ATOM IDE masz konfiguracje którą możesz wyklikać dosłownie środowisko wg potrzeb a w repo na github IDF masz przykłady które mój siostrzeniec (10 latek) potrafi przerobić pod miganie diodą ;)


bdgr
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 1
Posty: 111
Rejestracja: 16 paź 2017, 15:21
Lokalizacja: Poznań

Re: Linuxcnc Arduino Ethernet ?

#16

Post napisał: bdgr » 30 sie 2020, 10:12

gothye pisze:soft na esp32 do CNC napisany przez siebie

Masz to na jakimś otwartym repo?

Awatar użytkownika

gothye
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 4
Posty: 134
Rejestracja: 15 kwie 2009, 15:18
Lokalizacja: Płock

Re: Linuxcnc Arduino Ethernet ?

#17

Post napisał: gothye » 30 sie 2020, 13:25

Skończę całość i umieszczę na github

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 9
Posty: 7888
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Linuxcnc Arduino Ethernet ?

#18

Post napisał: tuxcnc » 30 sie 2020, 13:47

pitsa pisze:
29 sie 2020, 23:41
Różnica jest taka, że bez wpiętego do USB arduino linuxcnc się nie uruchomi i dzięki temu wiem, że wszystko jest ok. Mam prostą komunikację dwukierunkową z linuxcnc. Z modułami esp nie miałbym gwarancji, że mogę się z nimi połączyć. W niektórych miejscach jest tak ciasno w sieci, że nawiązanie połączenia z routerem trwa godzinami.
Na laptopie, z którego teraz piszę, mam taki cyrk, że normalnie mam system na partycji /dev/sda7.
Czasem mi się zdarzy, że zapomnę wyjąć pewną pamięć USB i wyłączę komputer, a potem go uruchomię z wetkniętym pendrajwem.
Wtedy system mam na /dev/sdb7, bo pendrajw wciska mi się na /dev/sda, a czym to grozi to chyba nie muszę Ci tłumaczyć.
Nie ma bardziej popieprzonej i zawodnej rzeczy w Linuksie, niż podsystem usb.
Natomiast jak dasz w sieci statyczne adresy IP, to takich cudów nie będziesz miał nigdy.

Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 4703
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Linuxcnc Arduino Ethernet ?

#19

Post napisał: pitsa » 30 sie 2020, 14:10

To ja mam tak tylko na jednym laptopie do programowania, przez to że siedzi tam Android razem z Windowsem. Gdy włożę dysk zewnętrzny USB włącza mi się domyślnie Android zamiast Windowsa. Jak na starcie nie przyuważę, tracę parę minut na ponowne uruchamianie. Kiedyś to w końcu poprawię... ;-)
Trzeba przejść z "root=/dev/sda7" na "root=/dev/disk/by-uuid/(uruchom blkid i wpisując jakie masz UUID dysku)" lub podobnie w zależności co w kompie odpala systemy. Tak samo używane dyski i pendrajwy można wpisać do /etc/fstab po ich UUID.
bdgr pisze:Masz to na
forum:
bezprzewodowe-grbl-t99865.html
"Grbl ESP32" + webUI https://github.com/bdring/Grbl_Esp32/wi ... Grbl_ESP32
gothye pisze:korzystaj z ESP-IDF np w ATOM IDE

Dzięki. No i znów trzeba czegoś nowego się nauczyć. ;-)
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 9
Posty: 7888
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Linuxcnc Arduino Ethernet ?

#20

Post napisał: tuxcnc » 30 sie 2020, 14:36

pitsa pisze:
30 sie 2020, 14:10
To ja mam tak tylko na jednym laptopie do programowania, przez to że siedzi tam Android razem z Windowsem. Gdy włożę dysk zewnętrzny USB włącza mi się domyślnie Android zamiast Windowsa. Jak na starcie nie przyuważę, tracę parę minut na ponowne uruchamianie. Kiedyś to w końcu poprawię... ;-)
Trzeba przejść z "root=/dev/sda7" na "root=/dev/disk/by-uuid/(uruchom blkid i wpisując jakie masz UUID dysku)" lub podobnie w zależności co w kompie odpala systemy. Tak samo używane dyski i pendrajwy można wpisać do /etc/fstab po ich UUID.
Nie o to chodzi, mam bootowanie według uuid, co wychodzi na tysiąc razy gorzej, bo system wstaje jakby nigdy nic, a dyski są pozamieniane miejscami.
Nie dalej jak wczoraj używałem polecenia :

Kod: Zaznacz cały

badblocks -sw /dev/sdb
Wiesz czym by to się skończyło ?

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”