C’est un message populaire. Curly-Bud 439 Posté(e) juin 18, 2018 C’est un message populaire. Partager Posté(e) juin 18, 2018 (modifié) Bonjour à tous Comme évoqué dans mon premier JDC, je me suis enfin sortit les doigts et décidé de rédiger ce tutoriel présentant mon modeste placard connecté. Ce post est l’objet d’un guide simple mais complet de l’achat à la réalisation d’un projet en passant par l’assemblage et le développement embarqué Arduino. I - Présentation du projet Spoiler La box connectée est le prototype d’un système embarqué connecté à un réseau WiFi muni de divers capteurs permettant de mesurer les conditions à l’intérieur d’un habitacle. Ces données sont remontées par HTTP sur une application gratuite : ThingSpeak. Les données sont ensuite exploitables depuis un navigateur ou depuis un smartphone : https://thingspeak.com/channels/363334/ Dans ce guide sera monté un prototype légèrement différent du mien utilisé dans mon premier JDC. Le système sera le même à l’exception des références des capteurs de luminosité et d’humidité au sol. Seulement ici, il s’agira de concevoir un prototype fonctionnel et (presque) sans soudure nécessaire de façon à ce qu’il soit accessible à tous et le plus basique possible. Je n'intégrerai donc pas les ventilateurs et donc la board d’alimentation présents dans la première version. Dans la version 1 du prototype nous y trouvons : Un capteur de température et d’humidité DHT22. Ce sont les deux facteurs les plus essentiels dans une culture. Permet de constater les niveaux sur la journée en période de nuit ou du jour si vous n’êtes pas là lorsque la période change. Peut également s’avérer utile pour constater un dysfonctionnement de votre chauffage, humidificateur, programmateur ou même lampe. Un capteur de luminosité (luxmètre) TSL256. L’idée est de pouvoir constater avec clarté les changement de cycle. Un luxmètre de ce prix peut difficilement capter une réelle puissance lumineuse. Un capteur d’humidité au sol YL69. Permet de constater les variations des besoins en eau de nos plantounes. Utile surtout pour les systèmes blumat, pouvoir constater un problème rapidement. L’ESP8266. Il s’agit du micro-contrôleur principal. C’est lui qui va lire les capteurs et émettre les données en WiFi avec sa petite antenne. Autres intérêts/possibilités : Quand je suis loin de chez moi pour au moins 1 semaine, je confie mes clefs à un ami et ainsi, si je constate un soucis dans mes conditions, il peut intervenir. Je travaille sur l’ajout d’un capteur de Co2 (K30) qui pourrait s’intégrer sans problème au système. Cela me permettrait de constater le niveau de Co2 dans mon placo, et ainsi étudier les variation si j’aère ma chambre en journée ou en soirée (par exemple) Il est possible avec ThingSpeak de mettre en place des alertes réglables selon les niveaux. Par exemple, si vous descendez en dessous de 50% d’humidité en croissance, ou montez à 30 C° de jour, pouvoir être alerté en temps réel depuis son smartphone : II - A LIRE Avant de vous lancer Spoiler Avant de commander vos composants, vérifiez ces conditions : Votre système doit pouvoir capter votre réseau WiFi donc ne pas être à environ plus de 15m de votre box sans cloison ou 10m avec cloison(s). Vous devez disposer d’un ordinateur (c’est mieux pour programmer) et savoir un minimum s’en servir Vous savez manier un minimum le fer à souder. Dans cette version étudiée ici, vous n’aurez presque pas besoin de souder. Il y a malgré tout une petite et simple soudure à faire sur le capteur de luminosité pour assembler ses pins, expliqué plus bas J’insiste sur le fait qu’il ne s’agit pas d’un système automatisé. L’ajout de relay reste toutefois envisageable mais je n’en n’intègre pas dans ce projet. Il s’agit d’un système de monitoring à distance. Ce tutoriel n’est qu’une ébauche à la conception d’un prototype. Voici le produit au terme de ce tutoriel : Le produit est encore “nu”. Libre à vous d’imaginer donc un boîtier permettant d’accueillir votre système et d’adapter la solution à votre installation. III - Achat du matériel Spoiler Pour de la petite électronique, je me permet d’acheter mes composants sur AliExpress. Les prix sont des plus intéressants et les frais de ports le plus souvent gratuit. Seul les délais de livraison peuvent être longuet (15 à 40 jours selon les vendeurs). Etant donné que les vendeurs, produits et les prix sur Aliexpress change beaucoup d’un jour à l’autre, les meilleurs deals vers les articles que je mettrais pourrait changer à l’heure à laquelle vous suivez ce tuto. Je vais donc ici vous lister l’ensemble des composants à acheter avec les étapes à suivre : Se rendre sur aliexpress.com Rechercher avec la référence du composant Trier non pas par pertinence mais par commandes. Trouver le meilleur produit en adéquation avec la note, le nombre de commandes, le prix et éventuellement les délais de livraison S’assurer que l’article correspond bien à la photo dans ce tutoriel. Les noms et description des articles sur Aliexpress ne sont souvent pas très claire. Une même référence peut vous donner des articles de version différente. Liste du matériel ESP8266 ESP12E Rôle : Contrôleur principal et émetteur WiFi Référence à taper : ESP12E Lien direct (au 16/06/18) : https://fr.aliexpress.com/item/a/32656775273.html Prix : 2,31€ fdp gratuit Datasheet : https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf DHT22 Rôle : Capteur d’humidité et de température Référence à taper : DHT22 Lien direct (au 16/06/18) : https://fr.aliexpress.com/item/a/32759158558.html Prix : 2,51€ fdp gratuit Datasheet : https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf Note : Préférez cette version de board rouge que la noir, elle est plus grande donc couvre mieux la sonde si celle-ci est amené à être exposé à la lumière. La sonde est légèrement déportée de la board, ce qui lui permet de ne pas chauffé à la lumière. MAX44009 GY49 Rôle : Capteur de luminosité (luxmètre) Référence à taper : MAX44009 Lien direct (au 16/06/18) : https://fr.aliexpress.com/item/a/32563205188.html Prix : 2,07€ et 0,13€ de fdp Datasheet : https://datasheets.maximintegrated.com/en/ds/MAX44009.pdf Note : A l’heure ou je vous écrit je n’ai pas trouvé de version assemblée. Vous devrez donc vous munir exceptionnellement d’un fer à souder ou demander à un ami pour souder les broches vendues avec l’article. SEN0193 /!\ EDIT (23/12/18) : Initialement, le capteur d'humidité au sol choisi était le YL100. Celui-ci a été remplacé par le SEN0193 pour palier au problème de corrosions (voir ce post : https://www.cannaweed.com/forums/topic/216604-tuto-diy-la-box-connectée-système-de-monitoring-à-distance-temphumlumièresolco2-pour-12€/?do=findComment&comment=4136698). Si vous avez déjà acheté le YL100 avant cette update (23/12/2018), une version du code pour lire ce capteur est toujours disponible, voir la section "Développement de l'embarqué". Rôle : Capteur d’humidité au sol Référence à taper : Étrangement la référence SEN0193 ne recense pas l’article qui nous intéresse. Il faut donc taper “Soil moisture sensor” pour trouver notre bonheur. Lien direct (au 23/12/18) : https://fr.aliexpress.com/item/a/32882371718.html Prix : 1.07€ et 0.31€ de fdp Datasheet : https://media.digikey.com/pdf/Data Sheets/DFRobot PDFs/SEN0193_Web.pdf Une alimentation 5V 1A L’ESP8266 dispose d’un port Micro USB B. Ce port est à la fois utilisé pour le programmer et pour l’alimenter. Ainsi, un simple chargeur de portable peut faire l’affaire. Vérifiez toutefois que votre chargeur délivre du 5V et une intensité d’au moins 1A.Il nous faut donc un chargeur et un câble suffisamment long selon votre installation.Préférez un câble à part du chargeur si vous n’en disposez pas pour connecter l’ESP à votre ordinateur. Vous trouverez également votre bonheur sur aliexpress si jamais vous n’avez pas ça dans vos cartons : https://fr.aliexpress.com/item/a/32783433931.html (1,93€ fdp gratuit) Un lot d’au moins 10 câbles femelle - femelle Référence à taper : câble femelle femelle Lien direct (au 16/06/18) : https://fr.aliexpress.com/item/a/32675262586.html Prix : 0,59€ fdp gratuit Note : Si vous comptez faire comme dans la première photo de ce post pour le capteur d'humidité au sol (sans soudure, sans câble, à la roots) pensez à achetez des câbles plus long ou des rallonges avec des câbles mâle/mâle. COÛT TOTAL (au 16/06/18) frais de port compris : 11,04 € Une fois votre panier complet, il ne vous reste plus qu’à valider votre commande et attendre les composants pour passer à la suite. IV - Assemblage Spoiler Comme expliqué plus haut, ce tutoriel n’est qu’une ébauche à un prototype fonctionnel. Ce n’est en rien un produit fini. Libre à vous de monter le système sur une platine en époxy comme je l’ai fait ou même de concevoir un petit pcb “plug-and-play”. Ici, le proto sera assemblé avec de simple fil. Par chance, les pins de l’ESP12E suffise pour l’ensemble des composants. Il y a juste assez de pin d’alimentation 3v3 pour les 3 capteurs. Voici le schéma de câblage : Les pins VCC ou VIN (phase, +) de chaque composant doivent être relié aux pins 3V3 de l’ESP8266. Les pins GND (neutre, -) de chaque composant doivent être reliées aux pins GND de l’ESP8266. La pin OUT du SEN0193 doit être connecté sur la seule entrée analogique A0 de l’ESP8266. La pin DAT (data) du DHT22 doit être relié sur une entrée digital de l’ESP8266. J’ai choisi la pin D3 ici. Les pins SCL et SDA du GY-49 doivent être relié au réseau I2C de l’ESP8266. Dans notre cas, les pins D1 (SCL) et D2 (SDA) ont été choisi pour les communications par I2C. V - Création du channel ThingSpeak Spoiler Avant de débuter le développement du soft embarqué, nous allons mettre en place votre channel ThingSpeak afin d’avoir tous les éléments en main. ThingSpeak est une plateforme permettant de collecter et d’héberger les données émises par des équipements connectés. ThingSpeak propose également des outils permettant d’exploiter ces données visuellement ou la mise en place d’actionneur pour faire dialoguer des objets connectés / services entre eux par exemple. Le service est gratuit pour une utilisation non commercial. Toutefois vous serez limité à 1 message toute les 15 secondes et à 8200 par jour. Personnellement, j’ai choisi d’émettre mes données toutes les 30 secondes, ce qui fait 2880 messages par jour. Libre à vous d’augmenter ou de diminuer cette fréquence. 1. Vous devez donc en premier lieu créer votre compte ici : https://thingspeak.com/login 2. Une fois votre compte vérifié, revenez sur ThingSpeak et connectez-vous 3. Validez que vous souhaitez utiliser ThingSpeak pour “Personnal non commercial project” et cliquez sur “New Channel” 4. Ici, vous pouvez créer vos champs accueillant les données de vos capteurs. Créez donc 4 champs pour les valeurs de température, d’humidité, de luminosité et d’humidité au sol. 5. Une fois chose faite, apparaît la vue dite “Privée” de votre channel avec 4 graphiques vide. Explication sur les channels privés/publics Par défaut votre channel est privé et visible uniquement par vous une fois connecté. Personnellement, je rend mon channel public pour partager ces graphiques avec vous mais surtout car les cookies de connexion de ThingSpeak ne dure que quelques heures et que je trouve ça chiant de devoir me reconnecter à chaque fois que je veux consulter mes graphs. Rendre un channel public fait que n’importe qui peut se rendre sur mon channel ayant son URL (https://thingspeak.com/channels/363334/) 6. (OPTIONNEL) Pour rendre votre channel public, rendez vous dans l’onglet Sharing puis sélectionnez l’option “Share channel view with everyone”. 7. Pour permettre à notre système d’émettre les données sur notre channel, nous aurons besoin de l’API key pour l’écriture. Rendez-vous donc dans l’onglet “API Keys” et copier la clef présente dans le champ “Write API Key”. Une fois l’API key, récupérer nous pouvons passé au développement embarqué. VI - Développement de l'embarqué Spoiler L’ESP8266 est un micro-contrôleur très présent dans les projets connectés DIY. Il dispose d’une grande communauté open-source au même titre que l’Arduino. Le micro-contrôleur est le plus communément utilisé comme périphérique WiFi piloté par commande AT par un micro-contrôleur tel qu’une Arduino ou autre µc. Mais de nombreux projets communautaires ont fait naître la possibilité d’utiliser l’ESP8266 en tant que contrôleur principal. Parmis eux, se trouve le projet Arduino pour l’ESP8266. Il s’agit d’un framework permettant de compiler un firmware en C++ en proposant les mêmes librairie que celles utilisées pour Arduino. C’est la solution que nous utiliserons dans ce tutoriel. Installation 1. En premier lieu, il vous faut le logiciel Arduino IDE téléchargeable à cette adresse : https://www.arduino.cc/en/Main/Software Choisissez la version correspondant à votre système. Si vous êtes sous Windows, téléchargez “Windows Installer”. ATTENTION Ce tutoriel a été écrit avec la version 1.8.5 de Arduino IDE et la version 2.4.1 du framework Arduino ESP8266. Si des bug subviennent, vérifier que votre version n’est pas obsolète. Si vous disposez d’une version plus récente, merci de m’en informer ici. 2. Installez le logiciel en laissant l’ensemble des informations par défaut. 3. Une fois installé, vous devez installez le plug-in permettant d’ajouter le framework EP8266 à l’IDE. Lancez Arduino IDE et allez dans Fichier > Préférences. Dans le champ “URL de gestionnaire de cartes supplémentaires” collez-y ceci : http://arduino.esp8266.com/stable/package_esp8266com_index.json Cliquez sur Ok puis allez dans Outils -> Type de carte > Gestionnaire de carte. Ici recherchez “esp8266” et sélectionnez “esp8266 by ESP8266 Community”. Sélectionnez la version 2.4.2 (il est possible que les versions postérieures ne soient pas compatibles) puis cliquez sur “Installer”. 4. Vous pouvez maintenant allez dans Outils -> Type de carte et sélectionner “NodeMCU 1.0 (ESP12-E Module)”. 5. Rendez-vous dans Outils -> Port et visualisez les ports disponibles (si il y en a). Connectez votre ESP8266 à votre ordinateur sur un port USB puis retournez dans Outil -> Port. Une entrée COMX (où X est un chiffre) est normalement apparue. Sélectionnez-la. Votre ESP8266 est désormais prêt à être programmé Programmation 1. Téléchargez les fichiers du projet ici : https://github.com/RaphikiCW/smartgrow Cliquez sur “Clone or Download” puis “Download ZIP”. /!\ EDIT (23/12/18) : Initialement, le capteur d'humidité au sol choisi était le YL100. Si vous disposez du YL100 et non du SEN0193, vous devez cliquer sur le bouton "Branch: master" et sélectionner la branche "yl100", puis cliquez enfin sur "Download ZIP" 2. Ouvrez l’archive, décompressez uniquement le dossier smartgrow dans votre répertoire Documents/Arduino/smartgrow 3. Vous devriez normalement trouver les 3 couples de fichier .cpp et .h correspondant aux librairies permettant de lire nos capteurs. Ouvrez le fichier smartgrow.ino avec Arduino IDE, qui correspond au fichier principal de notre application. 4. Je ne ferais pas une explication complète du code ici. Toutefois, j’ai laissé des commentaires dans mon code pour que vous puissiez le comprendre. Nous allons donc nous focaliser sur les éléments qui importe : #define WIFI_SSID "mon-reseau-wifi” #define WIFI_KEY "ma-clef-wifi” // Remplacez ici mon-reseau-wifi et ma-clef-wifi par vos informations, en gardant les doubles quotes. #define THINGSPEAK_API_KEY "ABCDEFGH12345678" // Remplacez ici la clef ABCDEFGH12345678 par votre API key récupérée plus tôt depuis ThingSpeak. #define FIELD_TEMPERATURE 1 #define FIELD_HUMIDITY 2 #define FIELD_SOIM_MOISTURE 3 #define FIELD_LIGHT 4 // Ici, adaptez le numéro des champs selon votre configuration sur ThingSpeak. Laissez ces champs tel quel si vous avez suivi le même ordre. #define TIME_SLEEP 1000 #define CPT_PUBLISH 30 /* Vous pouvez également ici changer ces informations selon vos préférences. TIME_SLEEP : Il s’agit du temps en millisecondes où le système ne fait rien entre 2 cycles de lecture des capteurs. CPT_PUBLISH : Il s’agit du nombre de cycles (1 cycle = 1 exécution de la fonction loop()) après le quel l’ESP8266 doit émettre les données. Pour exemple, avec ces paramètres, le système va lire chaque capteur toute les secondes (1000ms). Au bout de 30 secondes (30 x 1000ms), il fait la moyenne des valeurs lues par les capteurs et émet les données sur api.thingspeak.com. */ 5. Une fois le programme prêt, cliquez sur “Moniteur Série” en haut à droite pour vous préparer à voir l’état de votre système une fois flashé 6. Votre ESP8266 connecté, vous pouvez désormais cliquer sur “Téléverser” en haut à gauche pour flasher votre ESP8266 avec votre programme. Si le programme se compile bien et vous n’avez pas d’erreur, vous devriez avoir une progression du téléversement de votre programme dans la console. Une fois terminé, votre système démarre et commence par se connecter à votre réseau WiFi : Au bout de 30 secondes, il est censé émettre les premières données : Vous pouvez dès lors constater si vos capteurs fonctionnent correctement. Si votre humidité au sol (Moisture) est à 0.00 et que votre capteur est à l’air libre, et ben… Tout est normal. De même pour votre luxmètre, celui-ci devrait renvoyer une valeur entre 0 et 3000 selon comment est exposé votre capteur. Si vous le placez directement sous votre lampe, votre capteur risque de saturer et de vous renvoyez une valeur > 10 000. Essayez d'évitez donc. Si vous avez des valeurs incorrectes, vérifiez vos branchement. Si le problème persiste vous pouvez m’en faire part ici. REMARQUE Pour le capteur d’humidité au sol, la valeur lue sur celui-ci peut varier selon le produit et selon la profondeur dans laquelle vous l’avez placé. C’est pourquoi c’est un capteur utile pour constater les variations anormale de l’humidité au sol mais cette valeur n’est en rien justifiée scientifiquement.Autre remarque : Ce capteur met environ 10 minutes (selon l’humidité de la terre) à se stabiliser après avoir été mis en terre. La valeur va grimper très légèrement jusqu’à se stabiliser et devenir exploitable. 7. Une fois que le système vous indique “Data sent !” foncez vérifier sur votre channel ThingSpeak que vous recevez bien les données. Vous devriez avoir “Last entry” et “Updated” à “Less than a minute ago” ou “about a minute ago” Vous pouvez alors voir les premières données se dessiner sur vos graphiques. Et voilà le tour est joué 8. La dernière étape ne devrait pas être trop complexe. Depuis ThingSpeak, vous devez réglez vos graphique pour que ces derniers soit plus agréable à lire. Placez vous donc sur l’onglet “Private View” ou “Public View” selon la vue que vous voulez modifier. Cliquez sur le petit icône modifier sur un graphique et régler les paramètres à votre convenance. Voici par exemple ce que j’ai pour la température : Dynamic à true si vous voulez que les dernières données soit ajouter dynamiquement sur le graphique.Color et Background correspondent au couleur que vous voulez données à vos graph. Voici mes couleurs : Température : #d54747, #fdd1d1 Humidité : #3170b9, #e7f2ff Humidité au sol : #7bc055, #d9ffc4 Luminosité : #ffe20c, #ffffd8 Days correspond aux nombres de jours de données à chargerTimescale correspond au groupage des données en minute. C’est un élément essentiel dans notre cas si nous voulons charger 2 jour de données. Avec une donnée toute les 30 secondes, ça fait 5760 donnée à charger et cela ralentit le téléchargement des données, la fluidité du graphique et des courbes. Réglé à 10 ainsi fera que les données sont groupées et moyennées par 10 minutes.Y-Axis Min et Y-Axis Max correspondent à l’échelle voulue en ordonnée. VII - [BONUS] - Mise en place d'alerte Spoiler Parmi les services proposées par ThingSpeak figure la possibilité de mettre en place des déclencheurs et des actions suivant le niveau des données remontées. Il s'agit dans notre cas de créer des déclencheurs suivant la température, l'humidité ambiante, l'humidité au sol ou même la lumière à un moment donné performant un appel HTTP POST sur l'API de Telegram. Telegram est une application de messagerie Internet au même titre que Whatsapp. Nous allons grâce au service développeurs de cette appli mettre en place un Bot qui, en recevant nos appels HTTP, va transmettre ce message sur un groupe de discussion (privée bien-sur) créé préalablement. Telegram est disponible sur toutes les plateformes, desktop, navigateur, Android ou IOS. Nous pourrons donc paramétrer notre appli pour être alerté d'un nouveau message par notification sur PC ou smartphone. Telegram 1. Commencez par vous créer un compte ici : https://web.telegram.org/#/login Seul un numéro de téléphone seul vous sera demandez pour créer un compte. Vous pouvez ensuite vous y connectez. 2. Pour créer un bot, vous devrez invoquer.... un bot.. Qui répond au nom de BotFather. Commencez une discussion avec @BotFather en tapant dans la barre de recherche puis envoyez lui ceci : /newbot BotFather vous demande ensuite de donner un nom puis un surnom à votre bot. Tapez ce que vous voulez en terminant le username par "Bot" comme indiqué. Notez le token de votre Bot en rouge que vous transmet BotFather. 3. Créez un groupe en cliquant sur le bouton burger en haut à gauche puis "New group". Ici, tapez le nom de votre bot en entier en commençant par un arobase. @SmartGrowBot pour mon cas. Puis créez votre groupe en lui donnant un nom. 4. Pour émettre nos appels HTTP nous aurons besoin du chat_id faisant référence au groupe, qui va permettre à notre Bot d'envoyer des messages sur le groupe. Pour obtenir ce chat_id rendez-vous avec votre navigateur à l'adresse suivante en remplaçant (TokenBot) par le token précédemment récupéré : https://api.telegram.org/bot(TokenBot)/getUpdates. Exemple : https://api.telegram.org/bot498547466:AAGDjeIoZlekJRtRaoYX15MUkomFy5LNnJY/getUpdates Puis récupérez la valeur (nombre négatif) de la clef id pour plus tard : [...],"chat":{"id":-365988339,"title":[...] ThingSpeak Nous allons maintenant créer une alerte dans le cas ou l'humidité descendrai en dessous de 50% pour exemple. Depuis https://thingspeak.com, connectez-vous et visitez le menu Apps -> ThingHTTP puis cliquez sur New ThingHTTP. Remplissez ces champs : Name : Basse humidité URL : https://api.telegram.org/bot(TokenBot)/sendMessage Method : POST Content Type : application/x-www-form-urlencoded Host : api.telegram.org Body : chat_id=(chat_id)&text=Humidity < 50 ! En remplaçant (TokenBot) par votre token bot et (chat_id) par votre chat_id (en gardant le -) Une fois fait, cliquez sur Save ThingHTTP Choix 1 : Création d'une alerte de dépassement de seuil (température,humidité,etc.) Révélation 1. Visitez maintenant le menu Apps -> React puis cliquez sur New React Remplissez ces champs de cette façon : Cela reste plutôt intuitif, vous ne devriez pas avoir trop de mal à comprendre et potentiellement modifier ces paramètres selon vos besoins. Cliquez finalement sur Save React. 2. Pour s'assurer que tout fonctionne, vous pouvez reprendre la même requête effectué par l'ESP8266 sur ThingSpeak en modifiant le paramètre de requête field2=49 (si l'humidité est le champ n°2) puis en vous rendant à cette URL avec votre navigateur. Rendez-vous donc à l'URL suivante, en modifiant (API_KEY) par votre Write API_KEY utilisé plus tôt dans ce tutoriel : http://api.thingspeak.com/update?api_key=(API_KEY)&field2=49 Si todo bene, vous devriez avoir une notification depuis web.telegram.org vous alertant du nouveau message posté par le Bot dans votre groupe. Notez que dans notre cas, si vous avez laissé le champ "Options" à "Run action only the first time the condition is met", le react ne se déclenchera qu'à la première requête. Repasser à field2=51 puis à field2=49 pour refaire un test (à 15 secondes d'intervalle car vous disposez d'un accès gratuit) Choix 2 : Création d'une alerte de dépassement de seuil à un moment précis (lumière,etc.) Révélation Mettre en place un déclencheur horodaté diffère légèrement de la procédure précédente. Il s'agira ici de créer non pas un React mais un TimeControl exécutant un script MATLAB Analysis. 1. Rendez-vous dans Apps -> MATLAB Analysis puis cliquez sur New. Ici laissez à Custom puis cliquez sur Create. Ici on va coder un script très simple dans le champ MATLAB Code, qui ne vaudrait même pas la peine d'être expliqué : channelID = 123456; lightFieldID = 4; readAPIKey = 'HASD2ZZ2N22B453R'; thingHTTPLightAPIKey = '3HFR1YMM4D2LGBYK'; lux = thingSpeakRead(channelID,'Fields',lightFieldID,'ReadKey',readAPIKey); if (lux > 50) thingSpeakURL = ['https://api.thingspeak.com/apps/thinghttp/send_request?api_key=' thingHTTPLightAPIKey]; webread(thingSpeakURL); end Vous avez toutefois plusieurs informations à récupérer. Vous trouverez les 3 premières variables dans le menu à droite. Pour thingHTTPLightAPIKey il s'agit de l'API Key pour déclencher le ThingHTTP créé préalablement qui émettra un message sur Telegram. Vous trouverez cette clef dans Apps -> ThingHTTP Ici j'ai mis un seuil de dépassement à 50. En gros si mon capteur de lux dépasse les 50 à l'heure à laquelle mes petites devraient être plongées dans le noir, j'émet l'alerte. Si vous n'êtes pas dans la pénombre total, voyez à combien vous êtes de nuit et prenez le seuil qui vous semble correct. 2. Une fois fait donnez un titre à votre script et cliquez sur Save and run. Si votre capteur lit en ce moment une valeur supérieur à 50, vous devriez recevoir l'alerte Telegram. Si il ne fais pas encore jour, changez la condition (< 50 au lieu de > 50) pour au moins s'assurer que votre script fonctionne. 3. Maintenant retournez dans Apps -> TimeControl puis cliquez sur New TimeControl. Ici c'est toujours assez intuitif, remplissez les champs de cette façon : Vous choisissez donc si votre alerte doit être exécutée une seule fois ou de façon récurrente et à quelle fréquence. Ici j'ai choisi que mon TimeControl se déclenche tout les jours à 10:20 du matin, ma lampe étant normalement éteinte à cette heure là. Sélectionnez finalement votre script précédemment créé dans Code to execute. 4. N'oubliez pas de cliquer sur Save TimeControl Et voilà je vous conseil également de télécharger l'appli Telegram sur votre portable, ce qui vous permettra d'être alerté plus rapidement si vous vous baladez avec votre phone. Si vous voulez muter les notification, vous pourrez faire ça depuis les paramètres de l'app. Il ne vous reste plus qu'à créer autant d'alertes que voulues selon vos besoins. VIII - [BONUS] - Ajout d'un capteur de Co2 Spoiler Les micro-capteurs de co2 sont plus difficiles à trouver que nos petits capteurs d'humidité ou de température. Il s'agit d'un gaz, la mécanique employée pour le mesurer avec justesse est donc bien plus complexe. Il va sans dire que leur prix suit également. Pour ma part, j'ai eu la chance de déjà disposer d'un capteur. Nous partirons donc sur cette référence dans cette partie. Il s'agit du K30 de Senseair. Le capteur Le K30 est réputé pour être de bonne facture. Sa précision est de +-30ppm et sature à partir de 10 000 ppm. Et j'en témoigne : pour exemple, je l'ai laissé tourné dans ma chambre (à 5m de mon placo) quelques semaines. Je pouvais clairement constater des petites hausses de co2 quand je rentrais chez moi, et des hausses d'a peu près 200 ppm quand je me trouvais dans ma chambre (à ~2m du capteur). Datasheet : https://img.ozdisan.com/ETicaret_Dosya/456729_1584920.PDF Son coût est toute fois assez élevé. Le meilleur deal est sur Tindie : https://www.tindie.com/products/AlfredC/senseair-k30-co2-sensor/ Cela donne donc 56,21€ + 21,62€ de fdp. Le K30 est pré-calibré à 400 ppm en sortie d'usine. Il est toutefois possible de le re-calibrer manuellement en cas de grosse saturation. Assemblage Dans cette partie, le K30 sera ajouté en supplément du reste du système. Voici donc le nouveau schéma de câblage : Attention ! Le capteur est très probablement livré nu (la board seule). Un peu de soudure s'imposera donc pour pouvoir le relié à votre ESP8266. J'ai fais le choix d'utiliser l'interface série (UART) du capteur pour le lire. Cependant, le K30 peut être également lue par I2C. Nous utiliserons les pins D6 (Rx) et D7 (Tx) pour communiquer avec notre capteur. Le capteur devra être alimenté en 5V. Votre ESP étant normalement branché sur une alimentation 5V, il sera relié à la pin VIN. Le K30 consomme jusqu'à 300mA. C'est un paramètre à prendre en compte selon la capacité de votre alimentation et le reste de votre système. Personnellement, j'arrive à faire tenir le tout connecté à mon PC (donc avec 5V 1A) mais pour être plus tranquille vous pouvez passer sur une alim de 5V 2A. Si le capteur est correctement alimenté et opérationnel, il doit clignoter toutes les 2 secondes d'une lumière jaune Ajout du nouveau champ ThingSpeak Pour pouvoir remonter nos valeurs de co2, nous aurons besoin d'ajouter un nouveau champ à votre Channel ThingSpeak. Si vous avez suivit la partie V de ce tuto, vous ne devriez pas avoir trop de mal ici. Développement embarqué Depuis mon dépôt Github vous trouverez une variante du projet (une branche) intégrant le k30 au reste du système. Pour cela rendez-vous là-bas : https://github.com/RaphikiCW/smartgrow et cliquez sur "Branch: master" pour sélectionner la nouvelle branche k30-co2 : Depuis ici, vous pouvez télécharger les nouveaux fichiers comme expliqué dans la partie VI de ce tutoriel. Notez l'apparition des nouveaux fichiers de librairie pour lire le K30. Je ne ferais pas une explication du code ici, le capteur s'intègre assez simplement au reste du projet dans le .ino. Si todo bene, les premières données commencent à se dessiner sur ThingSpeak : Voilà c’est à vous de jouer maintenant ! N’hésitez pas à déposer vos remarques ou questions, je reste dans le coin. Je ferais une update dans la semaine pour rajouter la mise en place d’alerte avec Telegram et pourquoi pas le capteur de Co2 si j’ai le temps. Ciao les weedeurs Modifié septembre 16, 2021 par Curly-Bud 16 12 Lien à poster Partager sur d’autres sites
Almaque 101 Posté(e) juin 18, 2018 Partager Posté(e) juin 18, 2018 Yop, Moi qui était refait d'avoir réussi à connecter mes ventilos PC à un câble USB... Tout cela donne envie de s'y intéresser ++ 1 2 Lien à poster Partager sur d’autres sites
Kevazingo 196 Posté(e) juin 18, 2018 Partager Posté(e) juin 18, 2018 'Soiiir ! Yes j'avais aperçu ton JDC, je me souviens. Je suis bien content de voir ce tuto ! Merci et bravo pour le boulot ! A+ 1 Lien à poster Partager sur d’autres sites
donmerlot 1 Posté(e) juin 18, 2018 Partager Posté(e) juin 18, 2018 (modifié) Bonsoir Excellent tuto complet merci beaucoup et bravo a+ Modifié juin 18, 2018 par donmerlot 1 Lien à poster Partager sur d’autres sites
irca 15 Posté(e) juin 20, 2018 Partager Posté(e) juin 20, 2018 Génial Merci bc pour ce tuto, je vais regarder cela de près si en plus tu avais des pistes pour piloter à distance 1 Lien à poster Partager sur d’autres sites
Curly-Bud 439 Posté(e) juin 20, 2018 Auteur Partager Posté(e) juin 20, 2018 Hello les boys merci pour vos commentaires, ça fait plaiz ! Il y a 11 heures, irca a dit: si en plus tu avais des pistes pour piloter à distance Je pourrais rajouter un topic bonus avec un Relay 5V pour piloter un humidificateur, j'en ai dans mon placard. Le tout piloté à distance par un serveur web sur l'ESP8266. Après le hic c'est que l'ESP8266 reste un petit contrôleur et ne dispose pas d'énormément de pinoches pour tout un système. Si j'ai un peu de temps, je vois ça... J'en profite pour dire que j'ai complété la partie BONUS : Mise en place d'alerte. A+ 2 Lien à poster Partager sur d’autres sites
kanabise 4 Posté(e) août 18, 2018 Partager Posté(e) août 18, 2018 (modifié) Bonjour , Salut , Plop ... Merci pour le tutorial l'ami on attend avec impatience le bonus pour le module relais, co2, si cela est possible Au revoir , Bye , A+! ... Modifié septembre 20, 2018 par glass-blower Politesse 1 Lien à poster Partager sur d’autres sites
Tontonjuju 19 Posté(e) août 23, 2018 Partager Posté(e) août 23, 2018 (modifié) Bonjour , Salut , Plop ... excellent tuto moi qui m'intéresse de près à tous ce qui est domotique c'est génial au top Au revoir , Bye , A+! ... Modifié septembre 20, 2018 par glass-blower Politesse 1 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) août 24, 2018 Partager Posté(e) août 24, 2018 (modifié) Le 21/06/2018 à 00:48, Raphiki a dit : Après le hic c'est que l'ESP8266 reste un petit contrôleur et ne dispose pas d'énormément de pinoches pour tout un système. yop Utilise un MCP23017 ou un MCP23S17 en fonction de ta connectique https://www.microchip.com/wwwproducts/en/MCP23017 ++ GEN Modifié août 24, 2018 par Gen 1 Lien à poster Partager sur d’autres sites
Curly-Bud 439 Posté(e) août 25, 2018 Auteur Partager Posté(e) août 25, 2018 Yop merci les boys J'ai complété la partie BONUS - Ajout d'un capteur de Co2 (cc @kanabise) Il y a 18 heures, Gen a dit : Utilise un MCP23017 ou un MCP23S17 en fonction de ta connectique https://www.microchip.com/wwwproducts/en/MCP23017 Oui y'a toujours la solution de l'expander même si c'est un peu crade. Bon après tout ça ça reste de la bidouille donc si besoin ça fera l'affaire ^^ Merci Je vois selon la demande et selon mes dispos si je rajoute un module relay au système, n'hésitez pas à me faire vos retours. A+ 1 1 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) août 25, 2018 Partager Posté(e) août 25, 2018 Il y a 8 heures, Raphiki a dit : même si c'est un peu crade. yop. ???? Heu , c'est au contraire une solution hyper propre et efficiente.. ou plus simple encore, passer sur un uno wifi à < 4€ https://www.ebay.fr/itm/NEW-WeMos-D1-CH340-WiFi-OTA-Development-Board-ESP8266-ESP-12E-Arduino-IDE-UNO-R3/173453603069?hash=item2862a3f0fd:m:m_xoZhrDKNmPCbUv_4V7y5w ++ GEN 1 Lien à poster Partager sur d’autres sites
Tontonjuju 19 Posté(e) août 25, 2018 Partager Posté(e) août 25, 2018 (modifié) Bonjour , Salut , Plop ... tu devrais créer un petit boitier via une imprimante 3D ou sinon de fabrication artisanale ça évitera d'abîmer l'arduino car avec l'humidité pas top Au plaisir Modifié septembre 20, 2018 par glass-blower Politesse 1 Lien à poster Partager sur d’autres sites
Curly-Bud 439 Posté(e) août 25, 2018 Auteur Partager Posté(e) août 25, 2018 Yop ! Il y a 5 heures, Gen a dit : Heu , c'est au contraire une solution hyper propre et efficiente.. Non c'est pratique oui, hyper propre faut pas abuser ^^ Sauf cas extrême tu verras jamais un expander dans le milieu professionnel sous ARM. Lors de la conception, le choix de l'µc se fait en fonction du besoin et du nombre d'i/o nécessaire. C'est comme si j'avais besoin d'une multi-prise à 8 trous et j'en prenais 2 de 5 au lieu d'en prendre une de 10. Ou c'est comme si une famille de 6 faisait le choix d'acheter une clio et de mettre le 6e dans une remorque au lieu d'acheter une espace. C'est bien pour de la bidouille arduino ou pour des protos, c'est tout. Il y a 5 heures, Tontonjuju a dit : tu devrais créer un petit boitier via une imprimante 3D ou sinon de fabrication artisanale ça évitera d'abîmer l'arduino car avec l'humidité pas top Ouep c'est une idée Mais comme précisé dans ce tuto : "Ce tutoriel n’est qu’une ébauche à la conception d’un prototype. Le produit est encore “nu”. Libre à vous d’imaginer donc un boîtier permettant d’accueillir votre système et d’adapter la solution à votre installation." Et pour ceux que ça inquiète, avec 80% d'humidité max et à moins de projection d'eau direct dessus, ça tient très bien la route sans boîtier sans s'user ou se corroder Mais si certains sont chaud pour imaginer un petit boîtier, n'hésitez pas à le partager ici A+ 1 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) août 25, 2018 Partager Posté(e) août 25, 2018 yop Hé pinpin.. Je te donne un solution.. Citation Lors de la conception, le choix de l'µc se fait en fonction du besoin et du nombre d'i/o nécessaire. Je te signale quand même que c'est toi qui a choisi le contrôleur et qui n'a pas assez d' I/O lol.. ++ GEN Lien à poster Partager sur d’autres sites
Curly-Bud 439 Posté(e) août 25, 2018 Auteur Partager Posté(e) août 25, 2018 (modifié) Re @Gen Oui et je t'ai dit merci ^^ j'explique juste que cette solution n'est pas hyper propre (ni efficiente d'ailleurs), bien que pratique et possible ici J'ai suffisamment d'i/o dans mon système, ici on parlais du cas ou on ajouterais quelque relay (donc plus dans le monitoring, pas le même système), même si il a encore qq pin de dispo. A+ Modifié août 25, 2018 par Raphiki 1 Lien à poster Partager sur d’autres sites
Gen 2 808 Posté(e) août 25, 2018 Partager Posté(e) août 25, 2018 yop ++ 1 Lien à poster Partager sur d’autres sites
amtarow 13 Posté(e) septembre 1, 2018 Partager Posté(e) septembre 1, 2018 Yop, j'ai commandé tes articles, je te ferais un retour J'avais déjà fais quelque chose de similaire pour mon utilisation, grâce à un arduino. Mon problème était que je voulais qu'il me signale par un beeper si la lumière était allumé après son heure d'extinction. J'avais un problème de contacteur qui restait soudé de temps à autre. 1 Lien à poster Partager sur d’autres sites
Curly-Bud 439 Posté(e) septembre 3, 2018 Auteur Partager Posté(e) septembre 3, 2018 (modifié) Révélation Le 01/09/2018 à 16:00, amtarow a dit : Yop, j'ai commandé tes articles, je te ferais un retour J'avais déjà fais quelque chose de similaire pour mon utilisation, grâce à un arduino. Mon problème était que je voulais qu'il me signale par un beeper si la lumière était allumé après son heure d'extinction. J'avais un problème de contacteur qui restait soudé de temps à autre. Salut Amtarow Yes merci n'hésite pas Il n'y a pas moyen d'utiliser les déclencheurs (React) sur ThingSpeak pour lancer une alerte selon le temps. Mais depuis la plateforme il est possible de créer des TimeControl qui permettent d’effectuer des actions à une heure donnée. Une de ses actions peut-être un script MATLAB Analysis. Ce script peut alors lire la dernière valeur de lux remontée. Si elle est bien au dessus de la normal à l'heure donnée, tu peux déclencher une action ThingHTTP comme vu dans ce tuto, qui envoi une notification Télégram. Voilà c'est une solution mais il y en a bien d'autre . Je pourrais faire un petit bonus si besoin est. Modifié septembre 3, 2018 par Raphiki Lien à poster Partager sur d’autres sites
kanabise 4 Posté(e) septembre 11, 2018 Partager Posté(e) septembre 11, 2018 (modifié) Bonjour , Salut , Plop ... Il est Installé depuis deux semaines à la maison et cela fonctionne très bien ! Petit soucis avec la sonde du sol qui n'a pas tenus longtemps avec la corrosion ? J'ai racheté ce capteur en espérant pouvoir l'installer. je me demandais si il est possible adapter ce type de sonde ph au système ? Merci pour les infos ? Au revoir , Bye , A+! ... Modifié septembre 20, 2018 par glass-blower Politesse 1 Lien à poster Partager sur d’autres sites
Invité JBdu14 Posté(e) septembre 11, 2018 Partager Posté(e) septembre 11, 2018 Bonsoir, Est ce qu'un relais sur la sonde ne pourrait pas couper l'alimentation afin d’éviter de mesurer en permanence un tension mais juste qu'en on en a besoin, alors le relais s'enclenche est prend la mesure. En isolant donc la sonde elle devrait résister plus longtemps. Tout capteur a base de metaux chercherons a echanger des ions entre eux dans un milieu humide et donc s'oxyderons. Pour les Phmetre c'est un peu différent, la sonde est une tige en métal enfermé dans une capsule en verre métallique, qui laisse passer les électrons. Dans la capsule il y a un produit conservateur pour la sonde et on mesure alors son Ph qui varie a travers le verre selon le milieu mesuré. Pas ou peut de corrosion, seulement des depots, et l'obligation de le laisser humide dans un produit conservateur. Cordialement JB. 5 Lien à poster Partager sur d’autres sites
Messages recommandés