Programmation de plusieurs Arduinos simultanément avec une diffusion sans fil


9

J'aurai de nombreux appareils basés sur un microcontrôleur qui seront indépendants les uns des autres, mais tous exécuteront le même programme.

Je voudrais télécharger un programme sur chacun d'eux en même temps avec une diffusion sans fil. Idéalement, l'utilisateur branche un contrôleur USB sur son ordinateur et télécharge un programme à partir de l'environnement Arduino comme s'il programmait un seul appareil.

Pour avoir une meilleure idée de ce dont je parle, regardez cette vidéo . Cela a été réalisé avec des microcontrôleurs Atmel mais un chargeur de démarrage sur mesure, non Arduino.

À partir d'une recherche Google sur la "programmation infrarouge Arduino", ce projet intéressant est né . Le principal inconvénient est que le bouton de réinitialisation doit toujours être enfoncé manuellement. Idéalement, je voudrais que les appareils soient dans un état de faible consommation par défaut et se réveillent pour recevoir un programme lorsqu'ils détectent un signal provenant du contrôleur. Pourtant, cela peut être un bon point de départ pour moi.

Je voulais simplement obtenir des points de vue de personnes qui connaissent Arduinos sur la question de savoir si elles pensent que cela est possible avant de me lancer.



De quelle plateforme utilisez-vous pour télécharger vos croquis?
Greenonline

Réponses:


2

TL; DR -

Vous avez le choix entre BlueTooth ou XBee (entre autres: IR, par exemple?) Pour le téléchargement sans fil. Cependant, je pense qu'une seule carte peut être téléchargée à la fois, vous devrez donc parcourir les cartes une par une, voir Programmation de plusieurs ATMegas / Arduinos à la fois .

Lorsque vous téléchargez une esquisse ou utilisez un programmeur (pour une esquisse ou un chargeur de démarrage), le logiciel n'écrit pas seulement le code, il communique en fait avec le microcontrôleur.

Vous ne pouvez pas tous les programmer en même temps. Mais vous pouvez les programmer un par un de manière automatique.


Votre question est très intéressante et pose une question à laquelle je suis sûr que je n'aurais jamais pensé, mais qui serait extrêmement utile et qui permettrait d'économiser du travail, surtout si l'on a, comme moi, de nombreux points de capteur contrôlés par Arduino situés autour du maison. Voici une solution plutôt inélégante qui mérite d'être essayée.

Matériel de téléchargement sans fil

Si vous utilisez BlueTooth pour télécharger sans fil vos croquis, cette solution peut être utile, programme de téléchargement sans fil vers Arduino sans câble USB . Notez que cette solution bloque les broches D0 et D1:

Mais attention, il n'est peut-être pas compatible avec certains projets qui doivent utiliser le D0 et le D1 comme matériel UART TX, RX. Parce que le programmateur sans fil doit occuper en permanence les deux broches.

En le regardant, il utilise un programmeur sans fil Arduino personnalisé , auquel vous avez peut-être fait référence dans votre question. Cependant, ne vous laissez pas berner par le nom, c'est simplement un bouclier Bluetooth. Il s'agit essentiellement d'un appareil BT HC-05 (ou similaire), boulonné sur un Arduino, voir également Bluetooth Wireless Upload .

Alternativement, au lieu de BlueTooth, vous pouvez utiliser des appareils XBee , voir Programmation sans fil d'Arduino . L'avantage d'utiliser XBees est que vous n'auriez pas à passer par la nouvelle boucle d'appairage d'appareil (voir ci-dessous), qui serait requise lors de l'utilisation de BT. Au lieu de cela, vous n'auriez qu'à parcourir les ID réseau XBee.

Cependant, en plus de cela, vous devrez automatiser la commutation des appareils BT, sélectionner le port approprié et télécharger à tour de rôle sur chaque Arduino, car vous ne pouvez pas diffuser de croquis . (Si je me trompe, quelqu'un pourra-t-il me corriger).

Sélection du port et téléchargement de l'esquisse

Vous pouvez utiliser un script avec la version en ligne de commande de l'IDE Arduino, pour sélectionner le port auquel le périphérique BT est connecté, avant chaque téléchargement. La façon dont vous procédez varie en fonction de la plate-forme sur laquelle vous compilez, voir Compilation et téléchargement d'Arduino en ligne de commande? Cela peut être fait en utilisant la variable d'environnement ARDUINO_COMPORT(voir la construction de la ligne de commande Windows éventuellement obsolète ) ou l'option de ligne arduino cmd --port <portname>(voir la page de manuel ). L'esquisse serait ensuite téléchargée à l'aide de l'option --upload <filename>. Vous pouvez le faire d'un seul coup:

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

Notez que sous Windows, vous devez utiliser arduino_debug.exe.

Ou vous pouvez utiliser Ino , si vous n'utilisez pas de PC Windows ... mais cela pourrait rendre la partie suivante, qui traite du bouclage plus complexe que nécessaire.

Sélection de chacun des Arduinos (c'est-à-dire les appareils BT)

Ensuite, vous devez ajouter une boucle au script, qui associe tour à tour le PC à chaque périphérique BT et appelle ensuite l'IDE Arduino, pour la sélection du port et le téléchargement. Malheureusement, cela ne serait pas du tout indépendant de la plate-forme et nécessiterait une solution différente pour la plate-forme que vous utilisez. Jetez un œil à Bluetooth depuis la ligne de commande , mais pour Windows, vous auriez probablement besoin de la suite d'outils de ligne de commande Blue Tooth .

Sur OS X, il vaut mieux utiliser AppleScript, voir Se connecter à un périphérique Bluetooth (iPhone) via la ligne de commande sur MacOSX , car les outils de ligne cmd pour contrôler BT semblent un peu rares - il y a BlueUtil , voir Comment contrôler le Bluetooth sans fil radio depuis la ligne de commande? mais cela ne semble que désactiver le BT. Cependant, boulonner AppleScript au reste du script de contrôle Arduino IDE rend rapidement les choses plus complexes, bien que vous puissiez simplement placer la commande Arduino dans AppleScript, je suppose.


0

Vous pouvez utiliser ESP-LINK pour programmer l'Arduino sur WiFi.

L'ESP8266 est un simple microcontrôleur Wi-Fi bon marché qui peut être programmé avec Arduino IDE.

ESP-LINK est un firmware pour l'ESP8266 qui fait que l'ESP agit comme une connexion série (USB) à Arduino.

Le firmware se trouve ici sur ESP-LINK ESP8266 .


0

On peut utiliser quelque chose comme ça . Il s'agit d'un chargeur de démarrage personnalisé pour mettre à jour le code d'un Arduino via un module radio NRF24L01 +. *

* Il ne fonctionne que sous les machines Linux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.