Comment faire en sorte que le Raspberry Pi connecté au WiFi contrôle un Arduino?


8

J'ai un arduino uno qui doit répondre à une application iOS avec Internet comme support. Mon plan initial était d'utiliser un bouclier wifi pour l'arduino, mais comme je ne peux pas en obtenir un pour le moment, je me suis dit que je pouvais simplement utiliser un Raspberry Pi connecté à Internet pour contrôler l'arduino. Je suppose que c'est possible?

J'ai besoin que le raspberry pi réponde à un serveur Web et envoie un signal à l'arduino. Est-ce possible, et si oui, quelqu'un peut-il me donner des conseils sur la façon de procéder?

Réponses:


3

Je travaille actuellement sur un projet similaire. C'est une simple voiture R / C contrôlée par le Web. J'étais dans le même bateau que vous, je voulais à l'origine un bouclier wifi pour mon arduino. Mais j'ai décidé d'utiliser un Raspberry Pi connecté à mon méga 2560 via USB. Vous devriez envisager d'exécuter le protocole firmata sur votre arduino. Il est livré avec l'IDE Arduino. Regardez simplement sous Fichier-> Exemples-> Firmata et téléchargez les StandardFirmata sur votre carte.

La prochaine étape que j'ai prise consistait à exécuter un serveur Web node.js avec les packages de nœuds firmata et socket.io. J'ai récemment commencé à expérimenter le package johnny-five node.js. Tout simplement parce que je suis un peu un noob en ce qui concerne la programmation node.js et que je rencontrais des problèmes pour le faire fonctionner correctement avec le package de nœuds firmata. Johnny-five semble prometteur et j'ai eu un peu de chance, mais mon code est toujours en préparation. Je posterai un lien vers ma page github afin que vous puissiez au moins avoir une référence (motor_test.js et motor_test.html, gardez à l'esprit, son code ne fonctionne toujours pas. J'ai réussi à contrôler une led, mais les moteurs sont un histoire différente. Si j'ai le temps aujourd'hui de publier mon code sur mon contrôle LED de travail via le projet node.js.

Quoi qu'il en soit, je sais que je ne pourrais pas vous fournir une solution complètement fonctionnelle, mais j'espère que cela vous fera au moins aller dans la bonne direction. N'hésitez pas à m'envoyer un e-mail à tout moment (messyfresh@gmail.com) Je serais ravi d'aider davantage de toutes les manières possibles.

Voici les références. Juste Google eux. Je ne peux pas poster plus de 2 liens.
Installez Node.js sur RPi ( http://joshondesign.com/2013/10/23/noderpi )
Ma page github ( https://github.com/messyfresh/pi_rc )
Firmata
Node.js (j'ai trouvé la meilleure version pour utiliser avec socket.io et firmata est 0.8.2x)
Socket.io
Node.js Firmata
Johnny-Five Node.js


3

J'ai très récemment accompagné cela avec node-serialport .

Le lien suivant explique une bonne stratégie pour un contrôle total sur l'Arduino.

Modifier: quelqu'un a modifié et ajouté un lien pour moi :)

Ma solution

Consultez arduino / serial.ino, pi / server.js et pi / views / profile.ejs. Server.js ouvre le serialPort et un socket avec profile.ejs. Quand quelque chose se produit sur le profile.ejs, il déclenche serialPort.write (tampon, encodage) dans server.js;

Juste un FYI par défaut, l'Arduino Uno se réinitialise lorsqu'une connexion série est ouverte. Si vous essayez d'envoyer des données sans attendre une seconde ou deux après l'ouverture de la connexion série, cela échouera. J'ai trouvé que ce problème s'est résolu lui-même lorsque j'ai eu besoin d'une interaction humaine pour déclencher serialport.write (). Une autre solution peut être trouvée en recherchant sur Google DisablingAutoResetOnSerialConnection.

J'espère que cela t'aides!

@ bobbyg603


vous devriez ajouter dans vos commentaires le projet github auquel vous faites référence, alors l'OP peut jeter un œil
kolin

3

La manière la plus simple serait d'utiliser le matériel UART ( désactiver d'abord la console sur Pi ) sur les deux appareils. Lorsqu'il est configuré à 115kilobaud, vous pouvez transmettre une quantité de données texte, comme JSON, mais même des données binaires comme des zips, les jpgs peuvent être gérés. Il est recommandé de commencer par des débits inférieurs en premier car certaines bibliothèques ont des problèmes avec des bauds plus élevés.

Vous pouvez ensuite écrire des wrappers sur le Pi dans n'importe quelle saveur que vous aimez: C, PHP, Java, .NET MONO, Perl ou Python.

Il s'agit d'une option pour une bibliothèque légère que vous pouvez créer vous-même et il existe une abondance d'articles sur la façon de le faire sur Arduino et Raspberry Pi.


1

Nous avons développé un petit démon php qui se connecte et encapsule un démon remserial (Uart-to-TCP-Socket). Il peut facilement être étendu pour effectuer des tâches supplémentaires telles que la connexion à un serveur Web et envoyer des données.

Le démon est fourni dans un package avec une interface utilisateur Web complète pour contrôler une carte de type Arduino appelée CoPiino.

Faites-moi savoir si vous avez besoin d'aide pour extraire le démon.

Quelques infos sur le projet peuvent être trouvées ici http://www.copiino.cc

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.