
Linuxcnc Arduino Ethernet ?
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 134
- Rejestracja: 15 kwie 2009, 15:18
- Lokalizacja: Płock
Re: Linuxcnc Arduino Ethernet ?
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 

-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 9
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: Linuxcnc Arduino Ethernet ?
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 : 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:
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.
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 : 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:
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.
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 134
- Rejestracja: 15 kwie 2009, 15:18
- Lokalizacja: Płock
Re: Linuxcnc Arduino Ethernet ?
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
-
- Moderator
-
Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 4463
- Rejestracja: 13 wrz 2008, 22:40
- Lokalizacja: PL,OP
Re: Linuxcnc Arduino Ethernet ?
Przykład z elektrody: https://www.elektroda.pl/rtvforum/topic3338096.htmltuxcnc pisze:(RELAY=ON i RELAY=OFF)
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.tuxcnc pisze:Wszyscy się uparli na USB, z czym są same problemy, a na Ethernet i wifi patrzą jak ciele na malowane wrota.
Szkoda.gothye pisze:arduino + esp32 zwłaszcza z client wifi jest bardzo nie stabilne
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 134
- Rejestracja: 15 kwie 2009, 15:18
- Lokalizacja: Płock
Re: Linuxcnc Arduino Ethernet ?
Z TCP/IP i serwerem TCP po stronie ESP32 lub linuxCNC będziesz miał gwarancje , ponieważ nie odbywa się to jak w UDP ( zerknij : )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.Szkoda.gothye pisze:arduino + esp32 zwłaszcza z client wifi jest bardzo nie stabilne
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ą

-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 9
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: Linuxcnc Arduino Ethernet ?
Na laptopie, z którego teraz piszę, mam taki cyrk, że normalnie mam system na partycji /dev/sda7.pitsa pisze: ↑29 sie 2020, 23:41Róż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.
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.
-
- Moderator
-
Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 4463
- Rejestracja: 13 wrz 2008, 22:40
- Lokalizacja: PL,OP
Re: Linuxcnc Arduino Ethernet ?
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.
bezprzewodowe-grbl-t99865.html
"Grbl ESP32" + webUI https://github.com/bdring/Grbl_Esp32/wi ... Grbl_ESP32
Dzięki. No i znów trzeba czegoś nowego się nauczyć.

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.
forum:bdgr pisze:Masz to na
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
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 9
- Posty: 9323
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: Linuxcnc Arduino Ethernet ?
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.pitsa pisze: ↑30 sie 2020, 14:10To 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 dalej jak wczoraj używałem polecenia :
Kod: Zaznacz cały
badblocks -sw /dev/sdb