Table des matières:
- Étape 1: Problèmes à résoudre
- Étape 2: le matériel
- Étape 3: L'approche
- Étape 4: Câblage
- Étape 5: Le code Arduino, croquis principal
- Étape 6: Notes sur le Code
- Étape 7: Le code Arduino, les cours
- Étape 8: Surveillance du système
- Étape 9: le script Python
- Étape 10: Reste à faire…
- Étape 11: mise à jour 3/16, build « permanent »
- Étape 12: Mise à jour 01/12/2018 - Bienvenue dans l'IoT
Vidéo: Crawl Space Monitor (alias: Plus de tuyaux gelés !!): 12 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
L'eau de ma maison provient de mon puits par un vide sanitaire non chauffé. Toute la plomberie de la cuisine et de la salle de bain traverse également cet espace. (La plomberie intérieure était une réflexion après coup au milieu des années 70 sur cette maison!) J'ai utilisé des lampes chauffantes sur des bouchons thermostatiques "stock tank" pour maintenir une température au-dessus de zéro. Il y avait quelques problèmes importants avec cet arrangement: 1 - Aucune visibilité. La première indication d'ampoules grillées est des tuyaux gelés !2 - Parfois, les bouchons ne s'arrêtaient pas. Cela a fait de mauvaises surprises avec la facture d'électricité.3 - Aucune granularité. J'ai gardé 3 ampoules "en ligne" (750 watts au total) et c'était une solution tout ou rien. (2 ampoules ne le supporteraient pas toujours.) Après avoir découvert Arduino et vu certaines des choses que d'autres faisaient avec, j'ai décidé de l'essayer. J'admettrai dès la sortie de la goulotte que j'ai sans vergogne accroché et modifié des exemples de code des projets d'autres personnes pour que cela fonctionne, même si finalement j'ai presque tout réécrit. Au départ, j'ai construit cette "station météo WiFi" que j'ai trouvée sur Adafruit.com et l'a modifié. Au lieu de mettre à jour un site Web, j'ai utilisé Amazon Web Services pour m'envoyer des mises à jour de statut par SMS. J'ai également ajouté le contrôle de certains relais 110V (https://www.adafruit.com/products/268). Je suis alors devenu "intelligent" et j'ai décidé de le "renforcer" -- eh bien -- quelque chose a court-circuité quelque chose et j'ai eu une bouffée de fumée bleue magique. Tout a grillé… N'ayant pas d'autre évasion CC3000 WiFi, j'ai fait les choses différemment cette fois. Je l'ai construit pour être surveillé de manière interactive via une interface série, puis j'ai ajouté une interface FTDI Bluetooth EZ-Link. (Plus besoin de traîner l'ordinateur portable sous la maison pour les mises à jour logicielles !!!) J'ai également construit une interface Python qui se connecte à l'unité via Bluetooth, l'interroge régulièrement et affiche des informations d'état sur mon Mac. (Il existe également une "interface humaine" accessible par n'importe quel logiciel d'émulation de terminal.) En raison de la réécriture et de la suppression de tout le code WiFi et RTC, la taille du projet est passée de plus de 29K à à peine 10K. Cela a également amélioré la fiabilité dans la mesure où le chien de garde matériel ne s'est pas du tout déclenché au cours des quelques semaines où il a fonctionné et que j'ai peaufiné.
17/02/16 Mise à jour/note: dans une tentative d'obtenir un formatage approprié sur une partie du code (en particulier l'indentation du code Python), les choses sont passées de moche à inutilisable. Je suis sûr que le problème est quelque part de mon côté, et je vais essayer de le résoudre. Jusque-là, j'ai ajouté des liens vers les fichiers de code via DropBox. Ils doivent être accessibles à tous. Si ce n'est pas le cas, faites-le moi savoir afin que je puisse vous les faire parvenir d'une autre manière !
Étape 1: Problèmes à résoudre
Le système devait faire les choses suivantes pour moi: 1 - surveiller la température dans le vide sanitaire.2 - allumer les lampes chauffantes au besoin pour maintenir la température au-dessus du point de congélation.3 - lorsqu'il ne fonctionne pas, tester périodiquement les ampoules et me donner une visibilité de leur état.4 - me donner une visibilité sur la température et l'état du système, notamment: - le système fonctionne-t-il ? - quelle est la température MAINTENANT ? - quelle est la température la plus froide ? - combien d'ampoules ont fonctionné ? - combien d'ampoules testent bien ? - quel est mon temps total en "minutes-lumière" (alias "temps de combustion") ?5 - faites tout ce qui précède sans que j'aie besoin de ramper sous la maison !!! un capteur de lumière. D'autres problèmes que je voulais aborder étaient le temps de cycle des lumières. Trop lent, et je brûle de l'électricité inutilement. Trop rapide, et je risque de les brûler à cause de tous les allumages et extinctions avec le chauffage et le refroidissement associés.
Étape 2: le matériel
2 lampes chauffantes de 250 watts 1 lampe de travail de 500 watts (une de mes lampes chauffantes a disparu, il s'agit donc d'un stand-in)Capteur de température/humidité Arduino UnoDHT22Capteur de lumière GA1A12S202Relais PowerSwitch 110VInterface et programmeur série Bluefruit EZ-LinkBoîtier high-tech (baignoire Rubbermaid de la taille d'un sandwich)) Presse-étoupe 1/2 plaque à painPlaque acrylique pour plaque à pain et Arduino Assortiment de fils de connexion. Coleman "bande d'atelier" à 5 prises J'ai également utilisé un bijou Adafruit comme chien de garde matériel, mais il s'est avéré inutile (jinx, bien sûr!) a écrit un instructable séparé à ce sujet donc je ne le répéterai pas ici. La queue de cochon Coleman était une belle trouvaille, car elle m'a donné 4 prises pour mes lampes chauffantes PLUS une prise pour l'alimentation Arduino sans aucun répartiteur ou multiprise supplémentaire impliqué. Évalué à 15 ampères complets avec un interrupteur et un disjoncteur interne, il pouvait gérer tout ce que je pouvais tirer via une seule prise.
Étape 3: L'approche
Alors que le système est une application conçue pour attendre et pour faire certaines choses relativement lentement, ce que je ne voulais pas faire, c'était de construire un système où le contrôleur était assis dans des cycles delay() sans réponse. Je voulais également pouvoir modifier les paramètres de configuration aussi près que possible à la volée - certainement pas d'une manière qui nécessitait de réécrire le code ou d'effectuer des opérations de recherche et de remplacement en masse sur la source. Je trouvé les articles les plus excellents de Bill Earl sur "Multitasking the Arduino" (commencer ici: https://learn.adafruit.com/multi-tasking-the-arduino-part-1) et s'est occupé. En créant des classes "timer" et "heater", j'ai pu faire toutes les fonctions de temporisation que je voulais sans utiliser delay() (à quelques exceptions près) et configurer les ampoules ("heaters") avec une seule ligne de code pour chacune une.
Étape 4: Câblage
Le diagramme de Fritzing n'inclut pas le Bluefruit EZ-LinkArduino 5V et la masse à la platine d'expérimentation busDHT22 broche 1 à 5V busDHT22 broche 2 à la broche Arduino 7DHT22 broche 4 à la masse résistance bus10K entre les broches DHT22 1 et 2GA1A12S202 VCC broche à 5V busGA1A12S202 GND broche à la terre busGA1A12S202 OUT broche vers Arduino A0Arduino broche 3V vers Arduino AREF brocheRelay Ground fils vers Ground busRelay 1 fil d'alimentation vers Arduino A1Relay 2 fil d'alimentation vers Arduino A2Relay 3 fil d'alimentation vers Arduino A3Relay 4 fil d'alimentation vers Arduino A4La plupart de ces connexions peuvent être réorganisées comme vous le souhaitez. Le seul qui est critique est que le fil OUT du capteur de lumière doit aller à une broche analogique. Ce brochage fonctionnera avec mon code tel qu'il est écrit. Si vous utilisez le chien de garde matériel, vous verrez que mon code met le rythme cardiaque sur la broche Arduino 2.
Étape 5: Le code Arduino, croquis principal
CrawlSpace_monitor.ino
Étape 6: Notes sur le Code
Les lignes de code suivantes créent les instances du réchauffeur et définissent les paramètres de fonctionnement:// Heater(relayPin, onTemp(f), offTemp(f), minMinutes, testInterval(minutes), luxDelta)Heater heat1 = Heater(A1, 38, 43, 20, 1440, 5);Chauffage de chauffage2 = Chauffage(A2, 36, 41, 20, 1440, 5);Chauffage de chauffage3 = Chauffage(A3, 34, 39, 20, 1440, 5);Chauffage de chauffage4 = Chauffage (A4, 32, 37, 20, 1440, 5);(Et oui, j'ai défini les 4 appareils de chauffage même si je n'en utilise que 3 pour le moment. J'aurais toujours besoin d'un autre relais, mais l'ajout du 4ème chauffage serait être aussi simple que de le brancher.) J'échelonne leurs températures de déclenchement, en commençant à 38 degrés pour le premier et en finissant à 32 pour le 4ème inexistant. L'une des choses que j'ai trouvées lorsque j'ai commencé à bricoler cela était que je devais donner une plage de température ainsi que définir un "temps de combustion" minimum, ou j'allumais et éteignais les lumières comme un fou. Ici, je donne à chacun d'eux un écart de 5 degrés ainsi qu'un temps de combustion minimum de 20 minutes. J'ai réglé l'intervalle de test sur 24 heures et défini 5 lux comme lecture de lumière minimale dont j'avais besoin pour déterminer qu'une ampoule fonctionnait toujours. Presque tout ce qui doit être configuré se trouve ici dans ces 4 lignes de code.
Étape 7: Le code Arduino, les cours
J'ai créé 3 classes pour ce projet. Ils étaient "minuterie", "chauffage" et "accumulateur". Avec un peu plus de réflexion, je devrais pouvoir plier l'accumulateur dans la minuterie, mais je ne l'ai pas encore fait. Les voici en entier:heater.h
minuteur.h
accumulateur.h
Étape 8: Surveillance du système
J'ai créé une interface unique vers deux moniteurs distincts. Il s'agit d'une session interactive sur la console série. Dans mon cas, j'utilise le Bluefruit EZ-Link pour pouvoir accéder au système sans ramper sous la maison ou essayer de faire passer un câble USB entre les solives de plancher ! Un avantage supplémentaire de l'EZ-Link est que je peux également télécharger un nouveau code de programme sur l'Arduino via Bluetooth. surveiller. Lorsque vous vous connectez initialement, il n'y a pas de réponse, mais les pressions sur la touche "u" (pour "mettre à jour") et "t" (pour "test") vous donneront la sortie indiquée dans la capture d'écran. "m" ("monitor") et "s" ("sys check") vous donnent les mêmes données mais dans un format beaucoup moins lisible. Celles-ci sont destinées à être "grattées" par un autre programme d'affichage automatique. J'ai mis en place un script Python qui fait exactement cela. Toute autre touche génère le message d'erreur affiché. Vous verrez une valeur pour "durée de combustion" -- pensez à cela comme "minutes d'ampoule" -- 1 ampoule pour 10 minutes = 10 minutes, 3 ampoules pour 10 minutes = 30 minutes.
Étape 9: le script Python
crawlspace_gui.py
Étape 10: Reste à faire…
Ce n'est peut-être pas joli ou parfait, mais c'est efficace et s'avère fiable. ET, je n'ai pas encore eu de problèmes de conduites gelées cet hiver !!! J'ai une liste de choses à faire. Bien sûr, maintenant que cela fonctionne, je peux ou non réussir à accomplir la plupart de ces éléments: Obtenir Bluetooth sur l'un de mes Raspberry Pi afin que je puisse créer un moniteur dédié. En savoir plus sur Python - puis nettoyer le Python interface. Cette séparation des éléments n'est pas intentionnelle et je ne comprends pas pourquoi elle est là. Ajoutez une interface à quelque chose comme le service IO d'Adafruit afin que je puisse le surveiller de n'importe où. Ajoutez une alerte par message texte. Passez à un contrôleur plus petit (éventuellement un Metro Mini ou un Trinket Pro ?), des relais moins chers et un meilleur emballage. Retirez-le d'une maquette et sur une carte "Perma Proto". Paramètres de configuration dans EEPROM. Une interface plus granulaire qui indiquera -quelles- ampoules sont bonnes, et peut-être même brûler le temps pour les ampoules individuelles. Comme je les fais, je reviendrai et mettrai à jour ce Instructable.
Étape 11: mise à jour 3/16, build « permanent »
Faisant une bonne pause par temps froid, j'ai récupéré l'unité et l'ai déplacée vers un contrôleur plus petit (j'avais l'intention d'utiliser un Trinket Pro, mais j'avais un Adafruit Metro Mini assis non réclamé par aucun autre projet), je l'ai soudé sur une carte Perma-Proto, et mettez le tout dans un meilleur cas. Compte tenu de sa fiabilité, je n'ai pas remis le chien de garde matériel dessus. Je n'utilise toujours que 3 lampes/relais où le système en gérera 4. Le module Bluetooth est sur un en-tête soudé, il peut donc être retiré si j'en ai besoin ailleurs. Aucune modification de code n'a été nécessaire pour passer au nouveau contrôleur - une simple recompilation et un simple chargement m'ont permis d'être opérationnel en quelques minutes. (Le Metro Mini a un brochage identique à celui de l'Arduino Uno et est également un processeur ATMega328.)
Étape 12: Mise à jour 2018-12-01 - Bienvenue dans l'IoT
Le système a fonctionné parfaitement pour nous. Après deux hivers assez rigoureux, PAS de canalisations gelées. En effet, le système a pu entretenir les tuyaux sans jamais brûler plus de 2 ampoules. Avoir la 3ème ampoule en ligne était une bonne assurance, mais nous n'en avons jamais eu besoin à ce jour.
À l'approche de la troisième année du système, le module Bluetooth a échoué. Nous avons également construit une nouvelle maison, le système de surveillance est donc bien en dehors de la portée Bluetooth. (La vieille maison reste debout pendant un certain temps, mais pas pour toujours.) Dans l'intervalle, j'ai fait beaucoup avec le processeur compatible WiFi ESP8266; à la fois au format Adafruit Feather et au format open source "NodeMCU". Le NodeMCU peut généralement être trouvé sur Amazon pour environ 5 $ - beaucoup moins si vous achetez en gros et/ou auprès de quelqu'un comme AliExpress.
Cette nouvelle version conserve l'interface série, elle peut donc toujours être utilisée avec un module Bluetooth ou une connexion série USB directe et le script python précédent, cependant, la nouvelle version a une interface de page Web. Tel qu'il est écrit, il comprend la fonctionnalité suivante:
Un gestionnaire de réseau WiFi pour éliminer les identifiants WiFi codés en dur.
La possibilité de mettre à jour le micrologiciel par liaison radio à l'aide de l'IDE Arduino (tant que vous êtes sur le même réseau WiFi - notez qu'après avoir effectué un téléchargement USB sur l'appareil, une réinitialisation est nécessaire avant que les mises à jour OTA ne fonctionnent). VEUILLEZ changer le mot de passe OTA à la ligne 6 pour qu'il soit unique à vous !!
Une page Web qui affiche les mêmes données que le script python, avec une actualisation automatique toutes les minutes. Je n'ai mis aucun type de sécurité sur la page, car elle est en affichage uniquement.
Vous pouvez trouver le nouveau code ici. Notez que les noms des broches changent lors du passage au NodeMCU.
Conseillé:
Le Nes portable le plus fin et le plus étroit ? : 14 étapes (avec photos)
Le Nes portable le plus fin et le plus étroit ? : Il s'agit d'un portable NES imprimé en 3D construit à l'aide d'une NES sur une puce retrobit NES. C'est 129*40*200mm. il a une autonomie de 8 heures, un contrôle numérique du volume et un boîtier vert élégant (peut-être). Il n'est pas émulé, c'est du matériel fonctionnant à partir d'une cartouche d'origine, donc y
Alias du projet : 5 étapes (avec photos)
Project Alias : Alias est un « parasite » enseignable conçu pour donner aux utilisateurs plus de contrôle sur leurs assistants intelligents, à la fois en matière de personnalisation et de confidentialité. Grâce à une application simple, l'utilisateur peut entraîner Alias à réagir sur un mot/son de réveil personnalisé, et une fois tr
Bateau RC de tuyaux en PVC: 7 étapes
PVC Pipe RC Boat: Dans ce projet, nous allons fabriquer un ponton contrôlé par RC à l'aide d'un tuyau en pvc. Pourquoi le PVC, vous pouvez le demander car il est bon marché et je ne prendrais que quelques minutes pour le couper et le joindre à la structure souhaitée. Vous pouvez regarder la vidéo ce que le pr final
Fabriquez un support de montage DSLR pour moins de 6 $ en utilisant des tuyaux en PVC (monopode/trépied pour n'importe quel appareil photo) : 6 étapes
Fabriquez un support de montage pour reflex numérique pour moins de 6 $ à l'aide de tuyaux en PVC (monopode/trépied pour n'importe quel appareil photo) : oui. solide solide… C'est facile à personnaliser… Je suis Sooraj Bagal et je partagerai mon expérience sur ce support de caméra que j'ai créé pour
Trépied de bricolage fabriqué à partir de nettoyeurs de tuyaux : 5 étapes
Trépied de bricolage fabriqué à partir de nettoyeurs de tuyaux : Comment fabriquer un trépied pour un appareil photo avec des cure-pipes. C'est mon premier Instructable, alors supportez-moi