You are currently viewing Initiation à l’utilisation domotique des GPIO du Raspberry (RPI) avec domotique jeedom : le camping-car connecté

Initiation à l’utilisation domotique des GPIO du Raspberry (RPI) avec domotique jeedom : le camping-car connecté

Tags : GPIO Raspberry domotique Jeedom

0.Contexte

En 2020 Nous avions lancé un concours pour domotiser un camping-car à bas cout, concours qui avait été remporté par Dimitri d’usine à gaz

Malheureusement covid aidant, nous n’avons pas pu trouver de créneaux pour avancer sur ce projet

Mais avec un peu de recherche et d’accompagnement, nous avons pu avancer sur ce projet… tout d’abord, nous avons installé retropie puis jeedom sur le même Raspberry. Nous avons relier via USB une awtrix au rpi (qui heberge également le serveur awtrix) et une tv led.

1.Les GPIO

les gpio c’est quoi ?

les gpio sont les broches qui se trouvent entre autre sur la plupart des raspberry, entrée ou sortie ils permettent de communiquer avec d’autres composants électroniques ou circuit

Comment les reconnaitre Chaque GPIO a un Numéro de gpio, mais également un numéro lié au Raspberry comme sur ce schéma si dessous

IMAGE PROVENANT DE FRAMBOISE314.FR
  • Les GND sont des neutres
  • 3.3V fourni du courant 3V
  • 5 pwr fourni du 5V,
  • ID_SD et ID SC permet au Raspberry de voir s’il y a une carte d’extension attachée au Raspberry
  • UART permet d’avoir un port serie mais cause la perte du bluetooth
  • Gpio i2c sont liés au capteur de température et pression
  • les autres sont des gpio classique en orange et des gpio spécifique en couleur rose (les spécifiques peuvent être utilisé en classique)

Je ne peux que vous conseiller d’utiliser des raccord a visser au GPIO qui sont beaucoup plus fiables !

Cela fonctionnera sur n’importe quel rpi avec Gpio par contre les anciens modèle on moins de broche et donc le schéma n’est pas tout a fait le meme.

2. Gpio et jeedom

Pour utiliser les gpio de son rpi, le plus simple est d’utiliser jeedouino sur jeedom

Une fois installé, on va dans celui-ci puis on clique sur ajouter

Puis, on renseigne les infos de notre RPI

  1. nom et lieu de l’équipement
  2. Cocher activer et visible
  3. On renseigne notre type de Raspberry
  4. son adresse ip
  5. Part quel port on peut l’atteindre

On renseigne quel pin est utiliser et pour quoi ?

2.1 Exemple d’utilisation

2.1.1 Le pull up – pull down

Pour brancher un pull up on doit relier notre GND a notre 5v en passant par une resistance 10kohm

cela s’appelle des résistances de rappel, elles sont des pull-up quand elles sont branchées au 5v pour donner un 1 à vide et des pull-down quand elles sont à la masse pour donner un 0 à vide. le principe reste le meme .

Bref comme le dit Dimitri: »fais pas ch*** avec tes termes techniques, Le pull UP sert a maintenir la tension haute, voilà « 

l’un de montage les plus simples est d’envoyer le 5 v dans un wago et repartir de celui-ci via la résistance qui va alimenter plusieurs GND. (Un meme GND peut être lié à plusieurs GPIO).

2.1.1.1 Le détecteur d’ouverture

On relie un côté de notre détecteur ouverture sur un GND+résistance et L’autre sur un gpio de libre (bien penser à regarder le numéro).

Un exemple

Dans notre cas, on alimente notre résistance via le pin 2 qui rejoint le GND du pin 30 et va se brancher sur l’un des fils de notre détecteur ouverture, tandis qu’on va interagir sur l’information via le gpio 21 situés sur le pin 40

Exemple de matériel

Puis, on renseigne sur jeeduoino quel type de matériel, nous avons mis notre détecteur et quel type

On sauvegarde !!!

Il faut aller par la suite dans la commande et penser vérifier que le générique type est bien spécifié

Bien penser à sauvegarder !!!
2.1.1.1.1 Quel usage possible à la maison ?

A la maison ces détecteurs ouverture peuvent servir pour tout type d’ouvrant quand le capteur est en contact avec son aimant (fermeture) le resultat transmis sera de 0 et de 1 si ce n’est pas le cas (ouverture).

Par exemple : détecteur ouverture boite aux lettres

  1. On définit un déclencheur provoqué dans ce cas notre détecteur ouverture boite aux lettres
  2. On lui demande de ne se déclencher que quand la valeur =1
  3. on sauvegarde
Dans ce scenario je choisis que celui-ci ne se déclenche que s’il y a ouverture et que le virtuel boite aux lettres n’as pas déjà été ouvert
  1. J’introduis mes deux variables de temps formatTime(#time#) et sjour# #jour# #smois# #annee
  2. Je notifie du passage du facteur
  3. Je passe mon virtuel en mode courrier
  4. Dans mon chef d’orchestre, je dis à jeedom de remettre mon virtuel à 0 à minuit
2.1.1.1.2 Et pour le camping-car ?

Mon usage dans le camion : Détecteur, Ouverture des velux du camping-car, des portes latérales… Cela me sert :

  • Pour l’alarme en cas d’intrusion
  • Si la température extérieure est plus basse à l’extérieur, qu’il ne pleut pas et que je suis présent, il me recommande d’ouvrir les fenêtres
  • S’il pleut et que les lanterneaux sont ouverts, il me rappelle d’aller les fermer

2.1.1.2 Le détecteur de pluie

Au niveau du branchement, le détecteur de pluie se branche comme le détecteur d’ouverture

exemple de produit

Dans ce cas s’il pleut le module passe à 0 et 1 quand il n’y a pas d’eau sur la plaque

Coté jeedouino, je l’ai mis sur le pin 7 en tant que détecteur fuite d’eau, idem dans le générique type

2.1.1.2.1 Quel usage à la maison ?
Déclencheur : Virtuel inondation pluie = 0
  1. Je vérifie que le détecteur de pluie est bien à 0 donc qu’il pleut
  2. Si mes velux sont ouverts, je les ferme
  3. si je suis présent à la maison, je me rappelle de vérifier qu’il n’y a pas du linge dehors et je réinitialise la variable au bout de 30 min pour éviter les déclenchements intempestif en cas d’averses intermittentes
  4. j’enregistre pour le jardin la date du timestamp de la pluie ce qui me permet de définir à l’instant T depuis quand il n’a pas plu
2.1.1.2.2 Quel usage dans le camping car ?

J’espère que vous êtes assis, car la réponse va vous surprendre, mais pour détecter la pluie !

Cela me permet de revenir au camion s’il pleut et que j’ai laissé un velux ouvert par exemple !

Pour info, j’ai essayé de mettre ce genre de module dans les eaux grises, puisque je n’ai pas besoin d’un niveau d’eau précis, juste savoir s’il est trop-plein, mais celui-ci s’oxyde et j’avais beaucoup trop de faux négatif !

2.1.1.3 Le détecteur de niveau d’eau

À la base, j’avais imaginé mettre ce type de capteur dans mon camion, car fiable et précis, mais je n’arrive pas à accéder au bas de ma cuve et il m’en aurait fallu 3 minimum.

Mais j’ai vite trouvé usage pour la maison dans mes cuves d’eau de pluie

coté branchement rien de bien compliqué c’est toujours pareil…

Exemple de produit

Coté jeedouino chez moi, c’est sur le pin 22 en tant que détecteur fuite d’eau

Pour ce module lorsqu’il y a de l’eau le flotteur est fermé donc on est à 1 s’il n’y a plus d’eau, il redescend et il repasse à 0.

2.1.1.3.1 Quel usage à la maison ?
Je vérifie qu’il y a de l’eau dans ma cuve avant d’activer ma pompe immergée

2.1.1.4 Interrupteur

On peut également en pull up faire un interrupteur simple

Coté branchement comme à chaque fois

coté jeedouino je suis sur le pin 35 et je l’ai mis en ouvrant de porte

idem dans les generique type

2.1.1.4.1 Quel usage à la maison ?

A la maison cela me sert par exemple à ouvrir mon électro aimant de l’atelier

2.1.1.4.2 Quel usage dans le camion ?

Coté camping-car cela me sert à allumer la vmc, la TV etc …

2.1.1.5 Le détecteur de présence

Après tout est possible en pull up du moment qu’on fait un contact dans un cas et pas dans un autre

Le voilà avec mon système de présence sur enceinte marshall de gestion des clefs

À chaque fois qu’on introduit un porte-clef jack celui-ci lève un contacteur alors plus de contact et quand on l’enlève, il reprend sa place.

Il suffit donc de faire une soudure de chaque côté de ce contacteur et de relié un côté au GND et l’autre a un GPIO et voila

Comme d’habitude, on configure dans jeedouino en indiquant le bon GPIO utilisé

Dans mon cas cela me sert pour la gestion de ma présence

2.1.2 La sonde de temperature

Dans une maison comme dans un camping-car, ce qui est intéressant, c’est de maîtriser ces températures et je n’ai rien de plus fiable que ces sondes ds18b20

Pour faciliter la fiabilité se vendent à peine plus cher des kits de connexion ds18b20 qui permettent de brancher la sonde sur n’importe quel gpio

Le schéma est le suivant :

Dans jeedouino, on précise sur quel pin on a fait le branchement dans mon cas sur le pin 13

On précise le générique type

Et voilà, on a une sonde fonctionnelle

2.1.2.1 Quel usage à la maison ?

À la maison, cela me permet de gérer la mise en route de mon ventilateur d’armoire domotique, mais aussi de contrôler la température de mon congélateur, ces sondes supportant parfaitement les basses températures

  1. On définit dans quelle condition on effectue l’action sur valeur
  2. Au bout de combien de temps
  3. Quelle action ?
  4. On sauvegarde

2.1.2.2 Quel usage dans le camion ?

C’est un des outils les plus utiles dans le camion, il me permet par exemple de me lancer une alerte si la température tombe trop basse et crée un risque de point bas de gel au niveau des canalisations ou de déclencher la climatisation du camping-car s’il fait trop chaud en notre absence

2.1.3 Le Relay

À la maison comme dans un camping-car, un relai est hyper pratique pour actionner certains modules

Pour le branchement d’un relai, rien de bien compliqué non plus

D’un côté, on branche :

  • le gnd du raspberry sur le GND du relai
  • le 5v du rpi sur le 5v du relay
  • le gpio du rpi sur le in du relay

De l’autre côté, on a :

  • NC : signifie ‘NORMALLY CLOSED’. Cela veut dire que lorque l’on active pas le relay le circuit est fermé donc l’electricité passe entre les deux bornes. Si je branche une sirene et que je coupe l’influence du relay celle ci sonnera
  • NO signifie ‘NORMALLY OPEN’. Cela veut dire que lorque l’on active pas le relay le circuit est ouvert donc l’electricité ne passe pas entre les deux bornes. Si je branche une sirene et que je coupe l’influence du relay celle ci ne sonnera pas
  • COM: Commun. Dans nôtre cas on va y brancher la masse du dispositif à contrôler.
exemple d’un NO

Un relai peu contrôler tout type de courant y compris du 220v ce qui peut très vite être dangereux si on n’a pas de notion d’électricité ! restez prudent et n’hésitez pas à contacter un électricien si cela est en dehors de vos compétences et n’achetez pas de produit bas de gamme qui pourrait vous être fatale en cas de dysfonctionnement !!!

Exemple de materiel

sous jeedouino :

2.1.3.1 Quel usage a la maison ?

Ventilateur pour gérer le rafraichissement de mon imprimante 3d, ouverture electro-aimant etc…

2.1.3.2 Quel usage dans le camion ?

Éteindre la TV quand l’alarme est activée, activé la sirène en cas d’intrusion, activé la pompe a eau etc …

2.1.4 Brancher un ventilateur

Un raspberry sa chauffe du coup il est bien recommandé d’y brancher un petit ventilo

Pour cela rien de compliqué on relie celui ci sur le+ sur le 5 v si on veut qu’il tourne à fond et sur le 3.3 si on veut un rendement plus limité. le -ira lui sur un GND

Pour ceux qui voudraient aller plus loin framboise 314 a ce super article sur le pwm sur Raspberry

Vous pouvez d’ailleurs acheter ce produit pour faire cela

2.1.5 Utiliser une sonde ultrason

2.1.5.1 partie hardware

On terminera cet article par cette maudite sonde qui m’a donné pas mal de fils à retordre

Je devais trouver comment quantifier le niveau d’eau de ma cuve à eau dans le camping-car et de ma cuve de sel d’adoucisseur à la maison.

J’avais déjà fait une sonde à ultrason sur wemos mais bon le wifi m’voyez….

Du coup me voila parti avec une HC-SR04 et une AJ-SR04M qui fonctionne pareille

exmple de materiel :

HC-SR04Aj-SR04MResistance

Pour construire le circuit, procédez comme suit.

  • Faites passer un fil entre un pin GND et le gnd du capteur
  • Faites passer un fil du pin 5v(2) à la broche VCC sur le capteur de distance HC-SR04.
  • Reliez le pin 7 et la broche TRIG du capteur de distance.
  • Mettre une resistance 1 kOhm entre broche echo et pin 11 du rpi
  • Mettre une resistance 2 Kohm entre cable Gnd et cable de la pin 11

2.1.5.2 Software

2.1.5.2.1 Partie mise en place

Comme d’habitude et on met à jour notre rpi

sudo apt-get upgrade
sudo apt-get upgrade

Installer la bibliothèque request

python -m pip install requests

Idem sous sudo

sudo pip install requests

On télécharge le script ultrasonic.py

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/ultrasonic_2.py

Dans bloc note et on copie le texte suivant

payload = {'plugin': 'virtual', 'apikey': 'APIKEY' , 'type': 'event' , 'id': 'IDJEEDOM' , 'value': distance}
r = requests.post("http://ADRESSEIP/core/api/jeeApi.php", params=payload)

On va aller chercher dans jeedom de quoi compléter ce texte

Créer un nouveau virtuel

  • Le nommer
  • Cocher activer
  • sauvegarder
  • Recupérer l’apikey entre le = et le & (avant id)
  1. Ajouter une info virtuelle
  2. idem
  3. Nommer votre info Niveau
  4. Choisissez info type numérique
  5. Intituler votre info état
  6. Définissez une info de type Numérique
  7. Sauvegarder
  8. Créer 2 actions virtuelles et 1 info virtuelle – Nommez la première et liée là avec état
  9. Définissez quel sera sont rendu binaire et lié la a état
  10. Nommez la deuxième action et lié la a état
  11. Définissez sont état binaire et lié la a état
  12. Nommez votre info niveau 2
  13. Cliquer sur rechercher équipement et aller chercher Niveau
  14. sauvegarder
  15. Récupérer le numéro id de niveau

remplacer IDJEEDOM dans votre bloc note par celui trouver au-dessus et remplacer ADRESSEIP par l’adresse locale de jeedom

Ouvrir une console sur votre adresse ip de jeedom type putty ou encore mieux bitvise ssh client !

Taper la commande :

 sudo nano /home/pi/ultrasonic_2.py

au debut du fichier rajouter

import requests

puis a la fin de ce fichier il faut ajouter le texte que vous avez modifié dans votre bloc-notes

Dans time.sleep (3600) le temps est en seconde la s’agissant de ma cuve à sel 1 fois par heure est suffisant pour le camping-car, je mets à jour toutes les 5 minutes ! on pense a sauvegarder !

Maintenant, on test le script en effectuant

python ultrasonic_2.py
Tout fonctionne !

Maintenant on va automatiser le script en modifiant rc local

sudo nano /etc/rc.local

On ajoute la ligne et on sauvegarde :

python /home/pi/ultrasonic_2.py

Et on reboot

La partie console est finie direction jeedom

2.1.5.2.2 Partie virtuel

Je n’avais pas envie d’avoir de scenario pour cette cuve du coup, j’ai créé une action via la roue crantée de niveau

Si > à 70 cm ma cuve est vide donc je modifie l’état de mon virtuel

idem pour niveau 2

J’aurais pu faire plus d’état intermediaire, mais il s’agit d’une cuve de sel donc cela me suffit c’est ce que j’ai fait dans le camping car

Pour le camping-car j’avais besoin d’être plus précis du coup j’avais besoind e savoir ma contenance en litre sachant que la cuve fait 30 cm de haut pour 100 l

Si la cuve est 0 elle est pleine si elle est a 30 elle est vide

Du coup, on applique la formule

((hauteur cuve -niveau actuel)x nombre de litre)/hauteur de la cuve

On peut également transformer cela en pourcentage

(100*#[Cellier][Niveau eau][Quantité deau restant]#)/hauteur de la cuve

Voilà j’espère que cette mise en bouche sur l’utilisation des GPIO du Raspberry vous aura aidé et fait plaisir autant que j’en ai eu à domotiser ce foutu camion

Le but était de le domotiser pour moins de 200 balles ce qui est le cas, mais qui ne serait plus possible ce jour avec l’augmentation du prix de pi4 qui est devenue indécente !

En parlant d’indécent, je voudrais remercier Dimitri de la chaine Usine Gaz, pour son soutien et son savoir qui mon permis d’avoir un camping-car de l’enfer !

Allez au boulot !

Loïc

Loïc phoenix castillo

Passionné par informatique dès mon plus jeune âge, j'ai arrêté à mes 21 ans pour me consacrer à mes études d'infirmier et faire la fête. Maintenant père de famille, je me réinvestis dans la domotique ! Bref le kif ! Rédacteur en chef de Youdom