Le Raspberry est un outil formidable pour ses ports GPIOs, mais ceux-ci sont parfois trop limités pour des interactions électroniques beaucoup plus poussées. Le majeur problème qui m'a poussé à acheter un arduino est la réception de signaux 433Mhz. Dans un de mes derniers tuto je vous expliquerais comment recevoir des signaux 433Mhz sur le Raspberry, en utilisant un petit programme "RFSniffer". Cette solution fonctionne, mais surtout à des fins de tests. Le problème est que le Raspberry n'est pas temps réel. Du coup, pour vérifier si un signal 433Mhz n'est pas émis, il doit en permanence checker le récepteur,ce qui sature le CPU, autour de 30/40% ( ce qui est énorme pour juste "attendre" un signal). Si RFSniffer est lancé H24, la consommation et l'échauffement du Raspberry seront élevés ! Et c'est là que l'arduino intervient : et si l'on connectait le récepteur 433Mhz à un arduino, qui s'occuperait de le gérer, et qui ne préviendrait le Raspberry qu'en cas de réception de signal, via le port USB ! C'est ce que nous allons faire dans ce tuto. L'arduino nous permettra aussi par la suite d'utiliser du matériel électronique plus facilement qu'avec le Raspberry, et donc de "soulager" le CPU du Raspberry.
1) Le matériel
Un arduino uno (18€) Une alimentation pour arduino ( chez moi elle ne sert à rien car le Rpi donne assez de courant à l'arduino via USB, mais il est vivement conseillé d'en acheter une, car en fonction de l'usage la puissance délivré par le Rpi peut-être insuffisante) Si vous souhaitez connecter votre récepteur RF 433Mhz, il vous faudra des câbles M/F2) Mettre en place l'arduino
Il vous suffit de télécharger un petit utilitaire sur votre PC Windows/Mac/Linux ( sur le site d'arduino), vous codez depuis l'interface dans un langage très proche du C, puis en connectant votre carte en USB à votre PC, le soft envoie tout seul le programme compilé sur la bête.3) Envoyer un signal de l'arduino au Raspberry via USB
Nous allons connecter l'arduino au Rpi en USB, et tenter de les faire communiquer entre eux. Par exemple en envoyant du texte de l'arduino vers le Rpi.Le code d'envoi sur l'arduino
Copiez collez le code suivant dans le soft arduino, et envoyez le vers votre arduinotester le code directement sur votre PC
Pour tester le code directement, il vous suffit d'ouvrir le moniteur série ( "Outils" => "Moniteur série" ), pour voir ce que l'arduino envoie à votre PC par USB.Recevoir un message sur le Raspberry
Pour que cela soit fonctionnel via Gladys, je vais faire le code de réception en NodeJS. Mais cela aurait pu être fait en python, ou autre.le code Node JS:
On installe tout d'abord le module npm "serialport" qui va nous permettre de lire les données du port série.4) Faire fonctionner le récepteur RF 433Mhz sur l'arduino
1. Connectez tout d'abord votre récepteur à l'arduino suivant ce schéma :5) Récupérer les valeurs de l'arduino sur le Raspberry
Il nous suffit de lire le code json renvoyé par l'arduino, avec presque le même code que plus haut ( attention à avoir le module serialport bien installé )6)Conclusion
Maintenant que nous avons cet arduino connecté à notre Raspberry, le Raspberry peut se concentrer sur des actions plus "haut niveau", et laisser l'arduino gérer le hardware !