[DOMOTIQUE] Mon projet Arduino's Raspberry's Modbus RS-485

Bonjour a vous amis arduineurs,

C'est avec beaucoup d'ambition que je me suis lancé il y a 3 mois dans mon projet domotique. Je suis en suisse et de formation Électricien en Radio-TV avec de très bonnes connaissances d'électronique puis un peut de programmation informatique et électronique. Comme il n'y a pas de grande ambition sans ambition... voici ce qui m'est venu à l'esprit:

Domotiser :

  • Le jardin
    |- Arrosage sur 3 groupes d'eau automatisé par la domotique (google calendar pour les heures)
    |- Mesure de l'humidité du sol sur les 3 groupes
    |- Remplissage de 5% d'eau en cas insuffisance (cuve d'eau de pluie enterrée)
    |- création d'un cycle de vidange pour l'hivernage de la tuyauterie
    |- Relevés de la cuve ( en % et en Litres approximatifs)
    |- Automatisation du portail électrique lors de l’entré du téléphone portable dans un périmètre précis
    |- Relevé du cabanon de jardin (température état porte/ fenêtre ouverte)
    -Maison:
    |- relevé de la température/humidité/lumière ambiante dans toutes les pièces
    |- Relevé des informations du compteur d'eau
    |- intégration de la pompe à chaleur via modbus/rs-485
    |- Commande des stores électriques en fonction de l'éclairage souhaité
    |- Commande des leds RGB Salon , escaliers, salle de bain, pergola
    |- Commande de l'éclairage des panneau leds (lampes de plafond) plus ou moins chaud et intensité
    |- Reprise des infos météo locales sur le web
    |- Capteur de pluie pour commander la fermeture vélux et stores pergola
    |- Relevé électrique si possible
    |- Panifier des choses ici et la quand on le désire (merci google)
    |- Détecter le courrier dans boite à lettre
    |- D'autres choses vont arriver en cours de route
    |- ...

Je souhaite commencer par mon jardin j'ai donc plusieurs choses à faire:
Arrosage automatique:

  • nous avons installé une cuve cylindrique de récupération d'eau de pluie malheureusement elle est dépourvue de capteurs! c'est là qu'une ampoule c'est allumée dans ma tête... Et si je créait mon capteur... Suite à ceci, une foule d'idées me sont apparues:
  • capteur mécanique (balancier raccordé à un potentiomètre converti ensuite par un convertisseur A/N) . idée abandonnée dans la première phase de tests mécaniques car l’enroulage-dérourage du fil était quelques peut aléatoire :sweat_smile: .
  • Puis il y eu l'idée de la barrière lumineuse :money_mouth_face: . Mais trop difficile à réaliser avec les convergences différentes en fonction du niveau d'eau sans parler du risque de dépôts de résidus dans le temps.
  • Puis enfin la dernière solution, la vraie bonne idée, l'ultrason... Et hop mes neurones revivent... ;D . C'est avec une grande facilité que j'ai donc réalisé mon capteur ultrason muni d'un DHT11 à ses côtés (et d'un capteur 18b20 pour la température de l'eau juste au cas ou quelqu'un me poserait la question qui tue... à quel température est ton eau de pluie?!? :fearful: ) .

Puis j'ai voulu aller encore plus loin car faire les mesures puis ne pas les exploiter n'a aucun sens... Après des heures et des heures et des heurs, et des heures à la recherche de la perle de la domotique gratuite ou à pas de prix, je me suis dirigé sur domoticz. L'avantage, il peut tourner sur un Raspberry Pi qui ne consomme presque rien et pour un coût modique et en plus, on bénéficie de la stabilité d'un système linux. Mais Domoticz n'est qu'un serveur pour moi il va tout gérer. Donc pas question de l'utiliser directement pour l’interfaçage car il y a plus sexy en thermes d'ergonomie . C'est là qu'intervient Imperihome! :grin: . J'aurais enfin un truc sympa... Une tablette que je vais encastrer dans le mur et qui représentera le cerveau de la maison. D'autres implémentations suivront (S.A.R.A.H. notamment).

Après plusieurs heures de mise en place de scripts et de tests, j'ai réussi à faire ce que je voulais dans ces deux softs. Puis j'ai essayé de tout faire avec mon Raspberry y compris la mesure de distance. Mais l’effort investit ne fut pas à la hauteur des espérances. J'ai vite abonné cette idée car il est impossible de faire des mesures plus ou moins précises avec avec un raspberry qui fait ce qu'il veut quand il veut (ressources partagées oblige).

Puis une autre illumination est survenue. Si raspberry ne peut faire ce qui faut quand il faut, tu dois le faire ailleurs. C'est alors que je me tourne vers Arduino. Je prépare mes armes et attaque mon codage pour mes diverses mesures et commandes. Trop cool ce petit micropros qui fait gentillement ce qu'on lui demande et en plus dans les temps :wink: ! Mais s'arrêter là n'avait pas de sens car les infos sont toujours oisives dans l'arduino :stuck_out_tongue: ... Et là... Tout se corse...

M'enfin il fallu trouver une solution pour faire passer les infos de mes petits Arduino's éparpillés dans la maison vers mon raspberry!

Et si je trouvait une solution pour que mes infos soient disponibles dans des emplacements qu'il me suffirait de lire pour en connaitre la valeur?... Et là BAM encore une étincelle! MODBUS est ce qu'il te faut!

Puis il faut aussi un mode de transport pour ces infos... Quoi de mieux que le rs-485 qui peut aller jusqu'à 32 units sur le bus et en plus il peut s’étendre jusqu'à 1.2km?!? De quoi faire largement le tour de la maison!Trop fort, je l'adopte aussi. 8).

Me voilà avec mon concept économique en tête:

  • Arduino's pour la capture de données et l'activation des actionneurs (relais , etc)
  • Raspberry's (2 servers) pour manager tout ça
  • Imperihome pour la GUI sur une tablette murale
  • Modbus via RS485 pour la communication entre Arduino's et Raspberry's

Cependant, il y a des choses qui fonctionnent puis d'autres qui ne fonctionnent pas correctement:

  • capture des distances -> OK
  • capture température/humidité ambiante dans la cuve-> OK
  • capture température de l'eau (c'est prévu mai c'est aussi hésitant dans mon esprit) idée en veille
  • Implémentation des registres modbus sur arduinos esclaves ->OK
  • Implémentation de lecture modbus sur raspberry maitres ->OK
  • Mise en place du rs-485 -> semble Ok mais boiteux il y a des choses surprenantes

J'ai donc persévéré et finalement arrivé à un résultat. EUREKA :smiley: ;D :smiley: ;D Tout est super génial...

La réjouissance fut de courte durée... des choses surprenantes et quelque peut étranges se produisent :o . Mes arduino's redémarrent tout seuls comme des grands sans que quelqu'un le leur demandent causant ainsi des problèmes de communications qui font que mon script de lecture s’interrompt.

Je ne sais pas pourquoi... J'ai essayé plusieurs choses puis finalement tout recommencé au niveau de la communication éliminant ainsi risques d’interférences liés au process de mesures. mais rien n'y fait. cela persiste il redémarre toujours sans raison apparente. il est pourtant bien alimenté!

Tout ceci pour vous demander si quelqu'un à déjà fait ce genre de choses ou aurait des idées pour augmenter la stabilité de mes communications?

Et aussi, si vous vous lancez dans un projet domotique et que mes idées vous plaisent , nous pouvons collaborer afin d'avancer plus rapidement.

Yep!

Comment sont alimentés les arduino ? Câblage du bus RS485 ?

Tu peux nous fournir un schéma électrique global du système ?

@+

Zoroastre.

les arduino's sont alimentés par une alimentation stabilisée (-12v, 5v, 12v). j'ai essayé en 5v et 12v mais le bug persiste! Ils sont sur mon bureau a côté de moi. De ce fait, la liaison du bus ne dépasse pas les 40 cm. Ci-joint le schéma de câblage série puis la photo de ce que j'ai fait...
J'ai essayé avec deux convertisseurs usb/rs485 puis aussi avec un usb/rs232 ainsi qn'un rs232/485. Mais ça continue...

Ce qui me surprend quelque peu c'est que les leds rx/tx du convertisseur usb/rs485 clignotent mais les rx/tx sur les ardionos ne clignotent pas. mais les données transitent quand même (quand ils répondent a la demande) pendant environ 20 secondes (durée aléatoire).

J'ai aussi lancé ce post avec mon anglais boiteux ...

je suis sur le même projet, up !

Merci pour l'info!

Je me suis aperçu que le système comme je l'entendais en modbus RTU était susceptible en stabilité. Mes arduinos redémarrent quand ils veulent et se même en utilisant que 30 % de sa mémoire!

Puis j'ai aussi essayé le modbus TCP et face au même constat, je me suis orienté sur une solution full ip tcp.
En gros, je fais mon bins de mesures avec mon arduino et je vais ensuite mettre a jour la valeur dans domoticz. De même , Domoticz est capable d'actionner les relais en sortie de mon arduino. Ceci est plus simple. Malheureusement, ça me ferme la porte a des idées professionnelles mais ceci est sans importance et n'est pas lié a ma domotique.
L'avantage de cette solution est que je n'ai pas besoin d'ajouter du câblage a mon installation car le réseau LAN est déjà présent partout.

Pour le moment, il me semble choisir la facilité...

Et vous ? a quoi ressemble votre projet?

up

Bonjour Oxedgar

J'ai le même genre de projet aussi chez moi , mais de plus faible envergure dans un premier temps

  • arrosage plantations extérieures

  • arrosage et gestion température dans ma serre plantations extérieures

  • mesures humidité

-t° congélateur

  • commande d'une porte

Pour la communication, je partais dans un premier temps sur du Wifi ou RF vu que les distances ne sont pas très importantes

Pas bête , l'idée du MODBUS, on l'utilisait au boulot avant, mais je savais pas qu'il y avait une lib Arduino

Je suis plutôt dans l'électromécanique , et débutant en Arduino , mais j'en ai quand même 3 qui fonctionnent en continu
2 avec LCD , sonde temp DS 18 B20
1 avec shield GSM alarme GSM + commande à distance

Partant pour collaboration dans la mesures de mes petites possibilités

à bientôt

En effet, mon projet peut rentrer dans vos critères. Mais cependant, suite a plusieurs embuches, j''ai décidé de laisser de côté le server modbus. Je le reprendrai une fois que mon 1er mode sera opérationnel.

Actuellement, je porte le projet en full web avec une page de consultation et l'envoi de requettes JSON vers Domoticz (solution domotique que j'ai choisi).

Si le cœur vous en dit, on peut collaborer!

Voici le post du sujet web, avez-vous la possibilité de tester le code sur un de vos arduinos et m'indiquer si il redémarre aussi chez vous?

Bonsoir
plusieurs
Je suis loin d'être spécialiste, mais j'ai téléchargé le sketch, et j'ai eu quelques problèmes

1: problème avec la partie DHT 11, impossible de télécharger avec cette partie: j'ai essayé librairies, sans effet, j'ai du supprimer cette partie

après téléchargement, le programme semble ne pas tourner , rien sur le terminal . Cela n'a pas l'ai d'être un problème d'alim

pour le programme, bravo, c'est du beau travail

A+

en effet, il vous manque peutetre la librairie dht11. elle est ici jointe. Allez dans le menu croquis puis importez ce zip et re-essayez...

La nouvelle version du sketch arrive a terme et il semble que mon problème soit du a l'alimentation.

dht11.zip (3.01 KB)

bonjour,
J'ai lu avec intérêt ton projet domotique. Je suis moi même sur un projet du même type et je pense qu'il pourrait être intéressant de comparer nos solutions. Je suis parti essentiellement sur le montage Raspberry-Domiticz-Rfxcom et centralisation avec Imperihome sur un tablette murale. Voila ce qui est déjà réalisé:

Commande de la majorité des éclairages:
Domoticz Rfxcom système Chacon-Di.O

Contrôle de la température des pièces, extérieur, capteur d'ensoleillement:
Domoticz Rfxcom sondes Oregon.

Météo: Anémomètre pluviomètre Oregon.

Énergie: téléinfo du compteur EDF

Contrôle de la température frigo, congel, chaudière:
sonde Ds18B20 sur bus 1-Wire Gpio du Raspberry et Domoticz.

Contrôle de l'ouverture des portes frigo et congel:
détecteurs filaires sur Gpio Raspberry et Domoticz.

Surveillance: Camera Ip Foscam.

Multimédia: Xbmc avec HD 2To centralisé sur Imperihome et smartphone

Serveur Web: Openvpn et Owncloud sur un Banana-pi ce qui permet de sécuriser l'ensemble des accès depuis l’extérieur.

Régulation du chauffage:
Un Raspberry B+ en Wifi est dédié à cette fonction; il est maitre et esclave de celui qui gère les autres fonctions ce qui permet de récupérer les informations des sondes de température de chaque pièces et d'envoyer l'état des commandes, le tout étant centralisé sur Imperihome.
Il s'agit d'un chauffage à eau chaude par le sol avec des électrovannes commandées par le Raspberry avec une carte relais.

Dans une résidence secondaire sans internet, diverses commandes avec un Arduino et un shield GSM par l'envoi de SMS.

Tout ceci est opérationnel et est accessible à distance sans trop de bugs jusqu'à maintenant.

Pour la suite j'envisage:
un système d’arrosage
la détection de présence du courrier
un interphone-visiophone accessible depuis un smartphone

Il y a donc encore du pain sur la planche et beaucoup de besoin en conseils sur les forum :wink:
l'Arduino micro me semble intéressant pour réaliser des petits capteurs le souci étant toujours la liaison avec le Raspberry. j'ai fait quelques essais peu concluants avec des émetteurs récepteur 433Mhz et la liaison filaire n'est pas toujours possible. Comment comptes tu procéder pour tes capteurs d'humidité et la commande des arroseurs?
J'ai fait des essais sur un Arduino avec un shield Ethernet et je n’ai jamais eu de redémarrage intempestifs, il est vrai qu'il était alimenté en 5V par l'ordi; celui qui marche avec le shield GSM est alimenté en 12V et ne semble pas poser de problèmes.
Cordialement

Salut jihem,

Merci pour ton intérêt ... En effet, nos projets se ressemblent un peu sauf par les liens! mon installation sera câblé. Donc pour le coup, je n'ai pas approfondis la liaison radio car je ne pense pas en avoir l'utilité.
Quoi qu'il en soit, il doit être facil de passer par un transmetteur radio bi-directionnel par le biais d'une liaison série, spi ou i2C radio. Je creuserais cette piste en cas de besoin...

Pour ce qui est de mon jardin... Il y a encore du travail mais il semble que ce ne soit que avec la pelle et la pioche car mon arduino server Jardin AES est prêt! Il faut maintenant creuser les tranchées pour les conduites d'eau. De ce fait, j'en profiterais pour y placer mes conduites électriques faible courant pour déporter les sondes. Mon seul problème pour le moment, est que je souhaiterais éviter d'envoyer de 5v dans mon terrain mais je pense ne pas avoir le choix...

Mes capteurs sont prêts électroniquement. Il me reste a trouver une méthode idéale pour qu'ils tiennent dans la durée.

Pour mes redémarrages, il s'est avéré que le régulateur de tension intégré au circuit de l'arduino était chaud, trop chaud... ce qui provoquait des redémarrages involontaires. J'ai réglé ce problème en alimentant l'arduino avec un régulateur 5v externe. Cela fait maintenant 4 jours qu'il n'a pas redémarré..

Salut
L'installation câblée est certainement la meilleure solution mais ce n'est pas toujours possible sauf à passer des câbles en apparent; les gaines encastrées ne permettant pas toujours de passer de nouveaux fils.

Je serais intéressé de voir ta solution pour les capteurs d'humidité. Récupères tu l'ensemble sur un seul Arduino ou utilises tu des micros Arduino pour chaque capteur?

Pour l'alimentation de tes sondes, as-tu penser à une batterie avec un chargeur solaire; j'ai un module acheté chez Hackspark qui me sert en cas de coupure de courant et qui pourrait être adapté sur tes capteurs.

https://hackspark.fr/fr/blog/2013/03/passer-un-projet-electronique-sur-batterie-paneaux-solaires-en-option/

A voir.
Bonne journée

Salut jihem,

J'utilise un seul arduino pour :

  • Mesurer la profondeur en % de la cuve (calculs litres aproximatifs et niveau d'eau restant en cm)
  • relevé de la température et de l'humidité ambiante(au niveau du capteur ultrason)
  • Relevé de la température de l'eau dans la cuve
  • Relevé de l'humidité du sol sur chaque secteur d'arrosage (mesure indicative pour le moment)

Commandes :

  • Activation de la pompe immergée dans la cuve selon un agenda google (couplé a Domoticz) permet de programmer des plages d'arrosage été hiver de manière a ne plus m'en préoccuper
  • Activation du remplissage si le seuil d'eau est trop faible (jusqu'à atteindre le seuil faible) permet d'avoir un niveau d'eau suffisant dans la cuve pour assurer le cycle d'arrosage
  • Activation de chaque secteur d'arrosage par Domoticz lors du l'aurore et du crépuscule (1 minute par secteur)

Avec ce premier module,j'ai facilement fait 60% du travail de mes autres modules. Il ne reste plus qu'à placer la page web sur carte sd (pour que je puisse utiliser mon code dans un Arduino Uno) et adapter le code en fonction des capteurs requis pour chaque pièce.

Pour ce qui est des capteurs d'humidité, ils sont les trois raccordés directement sur les entrées analogiques A0àA2. Je calcule ensuite un pourcentage en sachant que la valeur maximale sur une entrée analogique est int(1023) et minimum à int(0)! Je vais certainement devoir ajouter un offset dû a la résistance des câbles dans le sol car il y a de la longueur...

Je pense que tout mon système sera câblé car je l'ai déjà prévu a la construction...

Bonjour

Pour l'arrosage de ma serre, j'avais installé une sonde d’humidité du sol . Au début , ça fonctionnait assez bien, mais après quelques jours , les électrodes se sont corrodées . J'ai lu sur le forum arduino que ce phénomène provenait d'une corrosion électro-chimique mais je ne retrouve plus ce topic .

Pour éviter le problème, il ne faut pas mesurer en continu, mais seulement quelque secondes , le temps d'avoir le retour de la valeur : à voir

Merci infiniment Casper22 pour cette info...

Je vais ajouter une fonction pour ça... je ne sais bientôt plus ou brancher tous mes capteurs/actionneurs sur mon AES Jardin... m'enfin j'arrive doucement à la fin de mes efforts

Bonjour,

Je suis intéressé par la partie "Relevé des informations du compteur d'eau". L'avez-vous déjà mise en place ?

Cordialement

Salut,

je cherche à faire un reseau d'arduino en utilisant le port serie
j'ai commencé a joué avec des arduinos il y a 4 mois, je me debrouille avec les librairies existantes, mais pour ce projet je n'ai pas trouvé de tuto ou de code qui ressemble à ce que je veux.
Je suis nul en programmation mais je progresse :wink:

N'ayant pas suivi de cursus avec de la programmation, et étant trop débutant pour poser des questions sensées sur les forums, j'apprends actuellement en recupérant des bouts de code de tutos ou de projets d'autres internautes.
je les faits fonctionner (quand ça veux bien) et ensuite je modifie le code pour l'adapter à mes projets
Du coup je decouvre en utilisant.

Ma question était:
Vous voudriez pas partager votre code? s'il vous plait :slight_smile:

PS: je site mes sources :wink:

bonjour
je voudrai maxi du câble entre arduino et les capteur et quoi comme cable pour passer tous dans le mur