• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie przez ethernet
#1
Czy jest taka możliwość, aby wgrywać programy do modułu UNO przez sieć? Chodzi mi o to, aby podłączyć moduł do sieci lokalnej i z laptopa łączącego się przez WIFI z tą samą siecią wgrywać do modułu oprogramowanie jak przez USB.
 
Odpowiedź
#2
Ciężka sprawa aczkolwiek wykonalna. Trzeba by obsłużyć TCP/IP w obszarze bootloadera.a w UNO nie jest on zbyt duży. Oznacza to pisanie obsługi TCP/IP "na piechotę" bez bibliotek, tak aby zająć jak najmniejszy obszar flash. Można pod koniec FLASH umieścić obsługę TCP/IP. Obszar bootloadera uruchamiałby obsługe TCP/IP a do bootloadera wykonywany byłby skok tylko wtedy gdy trzeba zapisać FLASH.
Zadanie nie jest proste a skoro pytasz, wątpię abyś potrafił to zrobić.

Sytuacje zmienia użycie zewnętrznego konwertera ETH na USART, np DigiConnectME ale to koszt ok 200zł. TIBO będą tańsze, ok 130zł.
 
Odpowiedź
#3
Dzięki za informacje.
 
Odpowiedź
#4
Do wgrywania przez sieć jest wiele metod, akurat o wykorzystaniu Shielda Ethernet nie słyszałem.
Najprostszy sposób zdalny to wykorzystanie modułu BT HC05. Właśnie testowałem z modułem PRO MINI. Działa jako tako, trzeba się wcylnąć kiedy nacisnąć reset. No właśnie, jak Arduino leży na biurku obok i po prostu nie chcesz mieć kabla to OK, ale moduł musi być fizycznie zresetowany. Mam programik, który resetuje wysyłając tekst na na UART, odpala się Watchdog i robi reset, potem programowanie. Ale z nim nie zadziała ponoć bootloader Arduino, miałem wgrany inny i programować już musiałem tylko tym programem.
Każdy podobny sposób wykorzystujący UART i bootloader zadziała podobnie, moduły BT, HC12, ESP, albo wciskanie reset, albo dodatkowy moduł, który to zrobi w odpowiednim momencie. No kod ESP jest otwarty, także może spokojnie ten reset zrobić, normalnie pracuje jako przeźroczysty most UART.
Kolejny sposób to wykorzystanie ESP8266 jako programatora ISP. AVRDUDE wysyła flash na adres ESP8266, ten resetuje i programuje procka. Jak już tu jesteśmy to to samo zrobi ArduinoAaISP. Wgrywasz szkic programatora do modułu Arduino (może być oczywiście sam procek Atmega), podłączasz go do modułu programowanego. Teraz wystarczy przesłać do programatora flash przez UART - do wyboru BT, HC12, ESP jako UART bridge over TCP, itp. W tej wersji nie ma problemu z resetem, wystarczy stabilne połączenie z programatorem. Co dobre można edytować plik ArduinoAsISP i zmniejszyć prędkość od strony UART, co wydłuży zasięg dla HC12. Dla ESP nie ma to znaczenia, ma taki bufor, że może sobie cały szkic zapisać w swoim flash i dopiero wtedy rozpocząć programowanie. ESP jako ISP też oczywiście zrobi reset bez problemu.
Natomiast jeśli nie musisz konkretnie wykorzystywać UNO czy jakiegoś typowego Arduino to ESP sam z powodzeniem zastępuje Arduino, oczywiście ma swoje bóle i mniej pinów. Za to można go programować zarówno przez kabel jak i zdalnie przez sieć - OTA.
EDIT:
Dodam jeszcze, że w niektórych HC-05 można wykorzystać pin state do resetu. Do modułu Arduino należy wgrać najlepiej bootloader od UNO, nawet jeśli to nie jest UNO, ale jest atmega 328, czyli UNO, PRO MINI, NANO. Potem te modułu identyfikują się jako UNO i taki moduł należy wybierać. W module HC-05 ustawić transmisję na 115200b komendą "AT+UART=115200,0,0" i tryb pracy PINSTATE "AT+POLAR=1,0".  Te ustawienia robi się raz i zostają w module BT. Od strony sprzętowej wtedy robimy "Autoreset Arduino", potrzebny kondensator elektrolityczny wpięty między reset i PINSTATE, 1u i co najmniej 16V. Minus kondensatora do pinu reset. Jak komenda polar zadziała, to powinno się udać z danym modułem. Teraz wystarczy dodać moduł BT do komputera, wybrać przypisany mu port COM w Arduino  i ładować. Testowałem, mi działa, robi się autoreset i programuje. Mój moduł nie wymaga konwertera poziomów 5V-3.3V (mam kilka z różnych źródeł i dotyczy to wszystkich moich), wprost podłączam pin TX/RX do Arduino, ale widziałem, że niektórzy kombinują z jakimiś dzielnikami.  Z tym bootloaderem chodzi w sumie o to by pasował do prędkości UART, w Nano i Promini jest większy i wolniejszy bootloder. Działa również  z płytkami z atmegą 168 i optibotem (nie wiem czemu tylko do UNO dają w Arduino od razu Optiboota, a w reszcie zostawili tego pokraka). Zaletą optiboota jest  większa prędkość, 4x mniej kodu, więcej zostaje na program, nie odwala mu po użyciu Watchdoga.
A tu jest opisany sposób z ESP link jako virtualCOM: https://www.youtube.com/watch?v=WEpMFmTU0iA .
Edit2: Kondensator może być również ceramiczny bez polaryzacji, za to w każdym wypadku jednak 16V. Nawiązanie połączenia generuje impuls w dół, co ładnie robi reset (100n daje za słaby impuls, działa tylko raz) za to rozłączenie daje impuls w górę, dlatego te 16V będzie bardziej bezpieczne. Większe kondensatory, tzn. pojemność, generują większe szpilki.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości