Ce post est le dix huitième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire !
Faire du on/off c’est bien ! Mais contrôler sa maison en disposant d’indicateurs c’est mieux !
Aussi allons nous voir, pour changer, comment construire un petit capteur qui vas transmettre une information de température par radio au raspberry PI.
Si comme moi, vous vous interrogez sur l’intérêt de connaitre la température d’une pièce en temps réel, je trouve personnellement qu’il n’y en à aucun, en revanche cela peut être très utile pour le raspberry pi, qui pourra par exemple en dessous d’une certaine température, enclencher les radiateurs, on appel ça des scénarios (on en reparlera dans un prochaine tuto) pour le moment, contentons nous de récupérer l’informations via une interface web et via notre interface vocale YURI.
Avant tout, le traditionnel quart d’heure de honte en vidéo :
(Le charisme d’une truite avec un double menton, un acteur né je vous dis !!)
La puce Atmega328 (petit carré noir avec tout plein de pattes) vas aller interroger toutes les 3sc le capteur DS18B20 (plus petit carré noir à trois pattes, en forme de transistor) afin de récupérer la température de la pièce, puis vas envoyer, à travers l’émetteur RF 433 mhz (petit circuit à 3 pattes), l’information au raspberry PI
Le raspberry PI, qui écoute en permanence les ondes radio à travers son récepteur RF 433 mhz, vas détecter le signal, récupérer la température et la donner à une page PHP qui vas la stocker dans un petit fichier texte (au format json), accessible depuis l’interface web et dpeuis yuri.
Sur le serveur web du rapsberry PI, l’interface vas aller récupérer en ajax toutes les 3 secondes la valeur du fichier texte pour chaque sondes radio et l’afficher sur la page.
Notez que si un lien est mort (ce qui arrive souvent car ebay bouge beaucoup) reprenez les mots clé de ces liens dans le moteur de recherche ebay, cherchez avec les filtres « achat immédiat », « Dans le monde entier » et tri par « prix+livraison les moins cher »
Pour comprendre plus en détail ce qu’est l’arduino, l’atmega etc.. se référer au tuto 15, je pars du principe que vous avez lu et compris le tuto 15 histoire de ne pas me répéter 1000 fois ![]()
On vas faire exactement le même montage que dans le tuto 15, je re détaille la manip pour les flemmard du fond (oui oui ! vous au fond à côté du radiateur la !!) :
Téléchargez et installez l’IDE(environnement de développement Arduino) sur le site d’arduino.
Voila le schéma permettant de programmer une puce atmega à partir d’une carte arduino (nb : la résistance est visiblement plus adéquate si elle est de 10 kohms et non de 1.27 ohms comme indiqué sur le schéma)

Notez que sur le schéma j’utilise ce qu’on appelle une « BreadBoard », c’est une plaque en plastique qui permet de tester des circuits sans avoir à souder juste en plantant des fils dans des trous, les trous sont reliés de manière horizontale entre eux, sauf pour les lignes bleu et rouges (utilisée pour l’alimentation) qui eux sont verticaux.
Je vous conseille vivement l’achat d’une breadboard, ça ne coûte rien et c’est quasi indispensable pour tester les circuits dans de bonnes conditions.
Une fois le circuit branché et alimenté vous pourrez lancer l’IDE arduino et programmer la puce comme si elle se trouvait sur la carte arduino.
Enfin sachez que vous pouvez tout aussi bien programmer la puce en la laissant simplement branchée sur la carte arduino et la décrocher juste après, notre montage est à l’heure actuelle inutilement compliqué, mais dans le futur nous en auront besoin.
Comme la sonde ds18b20est particulièrement chiant à utiliser, nous installerons 2 librairies pour nous simplifier la vie (dans l’absolu, il serait peut être plus intéressant d’utiliser une sonde analogique ou une thermistance, bien plus facile à questionner (retour de 0.1 v par degré).
Donc on vas installer la librairie DallasTemperature, qui nous epargne le boulot des 12 000 commandes à envoyer àa la sonde pour avoir la temperature, et OneWire, qui vas permettre a l’atmega de communiquer avec la sonde sur une seule patte.
Pour installer les librairies, rien de plus simple : décompressez ces dossiers dans le dossier librairies de l’ide arduino.
On vas enfin pouvoir s’occuper de notre code ^^.
Téléchargez le code à “télé-verser” dans l’atmega ici (clic droit + enregistrer sous)
Ouvrez le code téléchargé dans l’arduino IDE
Cliquez sur télé verser
En fonction de la puce atmega que vous avez, vous serez peut être obligé de changer le type de carte dans les configurations de l’ide (cf tuto 15)
Code coté raspberry PI
Téléchargez l’interface web ici
Décompressez la dans le dossier /var/www de votre raspberry PI
Pensez a régler les permissions en lecture/écriture dans fichiers comme dans les autres tutos (si vous ne voulez pas vous faire chier, faites le temps des tests:
C’est bourrin question sécurité mais comme beaucoup d’entre vous ont des soucis de ce coté la car les permissions sont mal réglées, au moins on peux éliminer ça
, je vous laisse regarder la doc linux si vous voulez régler les droits de manière plus sécurisée)
Notez que pour le rapsberry pi comme pour la sonde arduino, vous devez obligatoirement :
Sans quoi la portée de votre sonde sera ridicule et les données mal transmises/mal captées (surtout mal captées, car le raspberry pi alimente très mal les composants externes).
Rien de nouveaux, on fait comme dans le tuto 10 sauf qu’on alimente le récepteur radio avec une alim externe de préférence (c’est mieux pour la portée et la qualité de la réception):
Une image vaut mieux qu’un long discours
,
Notez que j’ai oublié sur le schéma, de préciser qu’il faut aussi mettre la résistance 4.7 k ohms entre le pin central du capteur ds18b20 et le + de l’alimentation
Concrètement, on vas créer notre propre protocole radio en calquant un peu sur le protocole home easy de chacon.
On vas donc envoyer un signal de 12 bits pour commencer:
On à 7 bits de valeurs, on pourra donc envoyer 2^7 = 128 valeurs possibles pour la température, avec le bit de signe ça nous permet d’envoyer de -128 à 128 degrés, ça devrait le faire, en tout cas si vous atteignez un jour ces limites vous vous concentrerez certainement plus sur votre survie que sur la domotique (et les morts n’ont pas accès aux commentaires donc je suis tranquille côté plaintes)
.
On ajoutera deux impulsions avant et une après les données afin d’annoncer l’ouverture et la fermeture du signal d’information.
Un code en C++ (avec la librairie arduino) qui vas questionner le capteur de température et envoyer le résultat (5 fois toutes les 3sc pour une meilleur garantie de réception) au raspberry pi à travers l’émetteur.
L’utilisation
Brancher la sonde sur une alimentation (5V minimum, éviter le rapsberry pi comme alimentation)
Sur la console du Rpi , aller dans le dossier hcc2
cd /var/www/hcc2
puis exécuter le programme d’écoute des signaux
./radioReception /var/www/hcc2/action.php 7
Le premier argument “/var/www/hcc2/action.php” est la page php de l’interface a laquelle sera envoyé la température reçue.
Le second argument ”7” est le numéro wiring PI du pin du raspberry pi sur lequel est branché le récepteur radio.
sur la console s’affiche alors les réceptions et éventuels ratés (notés FAIL) de réception de la sonde
Si vous souhaitez modifier le programme C de réception des signaux, les sources sont disponibles dans le fichier “radioReception.cpp”, après modification vous devrez le recompiler en tapant la commande
g++ radioReception.cpp -o radioReception –lwiringPi