Czy mogę przeprogramować swoje Arduino za pomocą osłony Wi-Fi?

9

Moje Arduino jest podłączone do niektórych lampek nad moim akwarium i mogę nimi sterować z przeglądarki internetowej w mojej sieci LAN. Zastanawiam się, czy mogę zmodyfikować program na Arduino bez konieczności podłączania go do urządzenia przez USB, co byłoby trochę niewygodne. Musi być jakiś sposób, aby skorzystać z połączenia Wi-Fi.

Użyłem wixelowej tarczy Pololu do bezprzewodowego przesyłania programów (działa tylko jako radio z portem szeregowym), ale jest to inna technologia niż moja osłona WiFi.

Czy ktoś wie, jak mogę to zrobić przez Wi-Fi? Może jeśli załaduję nowy kod do pamięci flash w osłonie WiFi, może wtedy załadować się z pamięci flash? Nie jestem pewien, jak to zrobić, czy to w ogóle możliwe.

Być może zupełnie inne podejście byłoby prostsze?

Ośmiornica
źródło

Odpowiedzi:

8

Jest to teoretycznie możliwe, ale w praktyce nie jest trywialne. Fragment kodu odpowiedzialny za ładowanie nowego szkicu do Arduino nazywa się bootloaderem . Wszystkie popularne wersje bootloaderów, które znam, są oparte na portach szeregowych / USB. Aby załadować szkic na osłonę WiFi, moduł ładujący musiałby zostać przepisany, aby komunikować się z osłoną WiFi zamiast szeregowej. Wymagałoby to trochę pracy, ale w praktyce nie jest to niemożliwe.

Pamiętaj, że musisz to zrobić bez względu na to, czy przechowujesz szkic na tarczy Wi-Fi (co wydaje mi się trudne: nie jestem pewien, czy jest to w ogóle możliwe), czy przesyłając szkic bezpośrednio do Arduino: bootloader będzie musiał komunikować się z tarczą, aby odczytać dane szkicu.


Istnieje sposób na łatwe przeprogramowanie Arduino bezprzewodowo, a to jest Bluetooth. Musisz zdobyć moduł Bluetooth (nie wiem, czy tarcza Bluetooth będzie działać) i podłączyć go do sprzętowych portów szeregowych. Program ładujący, który jest na twoim Arduino, może już mówić do portu szeregowego, więc problem został rozwiązany. Będziesz jednak musiał (potencjalnie) rozwiązać dwa inne problemy:

  • Najtańsze moduły bluetooth, które znajdziesz w serwisie eBay, to 3,3 V. Oznacza to, że będziesz musiał zasilić je napięciem 3,3 V, a linia wysyłająca z Twojego Arduino będzie musiała zostać zmieniona z 5 V na 3,3 V. Możesz rozwiązać pierwszy podproblem (zasilanie), kupując moduł Bluetooth przystosowany do komunikacji 5V lub jeśli twój Arduino ma moc 3V3, wykorzystując go do zasilania modułu Bluetooth. Moduł gotowy na 5 V rozwiązuje również drugi problem; alternatywnie możesz przesunąć napięcie wyjściowe 5 V z Arduino, używając dowolnej z technik opisanych w tym pytaniu .
  • Aby automatycznie zaprogramować Arduino, Arduino musi zostać zresetowane tuż przed przesłaniem szkicu: gdy Arduino działa normalnie bootloader nie jest aktywny. Zresetowanie Arduino aktywuje bootloader, umożliwiając przesyłanie nowych szkiców. na Arduino USB sprytnie używa linii DTR do resetowania urządzenia. Większość modułów szeregowych Bluetooth zapewnia jednak tylko wyjście TS / RX, więc prawdopodobnie będziesz musiał ręcznie zresetować Arduino, aby załadować szkic, chyba że znajdziesz moduł wyjściowy sygnału w module Bluetooth, który możesz podłączyć do obwodu resetowania .
angelatlarge
źródło
2

Dzisiaj dowiedziałem się o produkcie, który może to osiągnąć: ESP8266. Pozwoli ci to zaprogramować / przeprogramować swoje arduino przez połączenie Wi-Fi. Różne firmy produkują wersje układów na różnych układach płyt. W szczególności może stać się WiFi AVRISP dla Arduino.

Możesz również zaprogramować sam ESP8266 za pomocą Arduino SDK i ma on dużą moc własną.

Zobacz tutaj whatimadetoday (nie mój post), aby uzyskać dobre wprowadzenie do korzystania z ESP8266 i Arduino SDK. Po skonfigurowaniu zestawu SDK do programowania ESP8266 można przejrzeć Przykłady IDE i znaleźć „Arduino_Wifi_AVRISP”.

Tablicę znajdziesz w przedziale od około 5 do 15 USD.

Ośmiornica
źródło