Programowanie wielu Arduinos jednocześnie z transmisją bezprzewodową


9

Będę miał wiele urządzeń opartych na mikrokontrolerach, które będą od siebie niezależne, ale wszystkie będą uruchamiać ten sam program.

Chciałbym przesłać program do wszystkich jednocześnie z transmisją bezprzewodową. Idealnie, użytkownik podłączałby kontroler USB do swojego komputera i ładował program ze środowiska Arduino, jakby programował pojedyncze urządzenie.

Aby uzyskać lepszy obraz tego, o czym mówię, zapoznaj się z tym filmem . Osiągnięto to za pomocą mikrokontrolerów Atmel, ale niestandardowego programu ładującego spoza Arduino.

Po wyszukaniu w Google hasła „programowanie na podczerwień Arduino” powstał ten interesujący projekt . Główną wadą jest to, że przycisk resetowania musi być nadal naciskany ręcznie. Idealnie chciałbym, aby urządzenia były domyślnie w stanie niskiego poboru mocy i wybudzały się, aby otrzymać program, gdy wyczują sygnał ze sterownika. Mimo to może to być dla mnie dobry punkt wyjścia.

Chciałem tylko uzyskać pewne perspektywy od ludzi, którzy znają Arduinos, czy uważają, że jest to wykonalne, zanim wskoczę.



Z której platformy korzystasz do przesyłania szkiców?
Greenonline,

Odpowiedzi:


2

TL; DR -

Masz opcje BlueTooth lub XBee (między innymi: IR, na przykład?) Do bezprzewodowego przesyłania. Uważam jednak, że można załadować tylko jedną płytę naraz, więc będziesz musiał kolejno przełączać się między nimi, patrz Programowanie wielu ATMegas / Arduinos na raz .

Podczas przesyłania szkicu lub korzystania z programatora (do szkicu lub bootloadera) oprogramowanie nie tylko pisze kod, ale komunikuje się z mikrokontrolerem.

Nie możesz zaprogramować ich wszystkich naraz. Ale możesz programować je jeden po drugim w jakiś automatyczny sposób.


Twoje pytanie jest bardzo interesujące i zadaje pytanie, którego jestem pewien, że nigdy bym nie pomyślał, ale byłoby niezwykle przydatne i oszczędzałoby pracę, zwłaszcza jeśli, tak jak ja, ma wiele punktów czujników kontrolowanych przez Arduino rozmieszczonych wokół dom. Oto jedno raczej nieeleganckie rozwiązanie, które może być warte wypróbowania.

Sprzęt do przesyłania bezprzewodowego

Jeśli używasz BlueTooth do bezprzewodowego przesyłania szkiców, to rozwiązanie może się przydać, program do bezprzewodowego przesyłania do Arduino bez kabla USB . Zauważ, że to rozwiązanie wiąże piny D0 i D1:

Należy jednak uważać, aby być może nie był on zgodny z niektórymi projektami, które wymagają użycia D0 i D1 jako sprzętu UART TX, RX. Ponieważ programator bezprzewodowy musi na stałe zająć dwa piny.

Patrząc na to, wykorzystuje niestandardowy programator bezprzewodowy Arduino , do którego być może odnosiłeś się w swoim pytaniu. Nie daj się jednak zwieść nazwie, to po prostu tarcza Bluetooth. Zasadniczo jest to urządzenie BT HC-05 (lub podobne), przykręcone do Arduino, patrz także Przesyłanie bezprzewodowe Bluetooth .

Alternatywnie, zamiast BlueTooth, możesz użyć urządzeń XBee , patrz Bezprzewodowe programowanie Arduino . Zaletą korzystania z XBees jest to, że nie trzeba przechodzić przez parowanie nowej pętli urządzenia (patrz poniżej), co byłoby wymagane podczas korzystania z BT. Zamiast tego musiałbyś po prostu przeszukiwać identyfikatory sieci XBee.

Oprócz tego trzeba jednak zautomatyzować przełączanie urządzeń BT, wybierając odpowiedni port i przesyłając kolejno do każdego Arduino, ponieważ nie można nadawać szkiców . (Jeśli się mylę, czy ktoś może mnie poprawić).

Wybór portu i przesłanie szkicu

Możesz użyć skryptu wraz z wersją Arduino IDE w wierszu poleceń, aby wybrać port, do którego podłączone jest urządzenie BT, przed każdym przesyłaniem. Jak to zrobisz, będzie się różnić w zależności od platformy, na której kompilujesz, patrz Kompilowanie i pobieranie Arduino z wiersza poleceń? Można to zrobić za pomocą zmiennej środowiskowej ARDUINO_COMPORT(patrz prawdopodobnie nieaktualna kompilacja wiersza poleceń systemu Windows ) lub opcji wiersza cmd arduino --port <portname>(patrz strona man ). Szkic zostanie następnie przesłany przy użyciu opcji --upload <filename>. Możesz to zrobić za jednym zamachem:

arduino --upload --port <portname> FILE.ino

Pamiętaj, że w systemie Windows powinieneś użyć arduino_debug.exe.

Lub możesz użyć Ino , jeśli nie używasz komputera z systemem Windows ... ale może to sprawić, że kolejna część, która zajmie się zapętlaniem, będzie bardziej złożona niż to konieczne.

Wybór każdego z Arduinos (tj. Urządzeń BT)

Następnie należy dodać pętlę do skryptu, która po kolei sparuje komputer z każdym urządzeniem BT, a następnie wywoła Arduino IDE w celu wyboru portu i przesłania. Niestety, w ogóle nie byłoby to niezależne od platformy i wymagałoby innego rozwiązania dla każdej platformy, której używasz. Spójrz na Bluetooth z wiersza poleceń , ale w systemie Windows prawdopodobnie potrzebujesz pakietu narzędzi Blue Tooth Command Line .

W systemie OS X najlepiej jest używać AppleScript, patrz Podłączanie do urządzenia Bluetooth (iPhone) za pomocą wiersza poleceń w MacOSX , ponieważ narzędzia linii cmd do sterowania BT wydają się trochę skąpe - jest BlueUtil , zobacz Jak sterować bezprzewodową łącznością Bluetooth radio z linii poleceń? ale wydaje się to tylko włączać lub wyłączać BT. Jednak połączenie AppleScript z resztą skryptu sterującego Arduino IDE szybko komplikuje sprawę, chociaż, jak sądzę, można po prostu umieścić polecenie Arduino w AppleScript.


0

Możesz użyć ESP-LINK do programowania Arduino przez WiFi.

ESP8266 to prosty, tani MCU Wi-Fi, który można zaprogramować za pomocą Arduino IDE.

ESP-LINK to oprogramowanie układowe dla ESP8266, które sprawia, że ​​ESP działa jak połączenie szeregowe (USB) z Arduino.

Oprogramowanie układowe można znaleźć tutaj pod adresem ESP-LINK ESP8266 .


0

Można użyć coś jak ten . Jest to niestandardowy program ładujący do aktualizacji kodu Arduino za pośrednictwem modułu radiowego NRF24L01 +. *

* Działa tylko na komputerach z systemem Linux.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.