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.