Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Climatisation zonée avec MediaTeks LinkIt™ Smart 7688

Composants et fournitures

Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip Technology ATtiny85
× 1
Capteur de température DHT22
× 1
Servos (Tower Pro MG996R)
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

L'hiver arrive

Lorsque ma femme et moi avons eu notre premier enfant l'hiver dernier, nous avons eu un radiateur électrique pour garder l'espace autour de notre petite fille bien au chaud. Alors que nous nous déplacions d'une pièce à l'autre, nous avons apporté le radiateur avec nous, tout en pensant que nous étions super efficaces avec la climatisation au point d'utilisation. Un mois plus tard, nous recevons une facture d'électricité deux fois supérieure à notre montant normal et réalisons qu'il aurait été moins cher de simplement chauffer toute la maison avec la fournaise au gaz 24 heures sur 24.

L'hiver est à nouveau à nos portes, alors cette fois, je suis passé à un thermostat WiFi pour pouvoir allumer le chauffage pendant que je suis en bas ou bien caché sous les couvertures. C'est beaucoup plus pratique, mais nous chauffons toujours toute la maison même si la plupart du temps nous sommes tous dans une partie de la maison.

Travaillez plus intelligemment

En regardant nos journaux de détecteurs de mouvement qui contrôlent notre éclairage, il est assez évident que nous passons 4 à 5 heures en bas en famille après le travail, puis montons dans nos chambres vers 21 heures où nous dormons jusqu'à ce que nous partions le lendemain matin pour travailler. Les week-ends sont un peu différents, mais du lundi au vendredi fonctionne comme sur des roulettes (surtout avec un enfant de 10 mois avec un horaire de sommeil strict).

J'ai examiné les systèmes CVC dotés d'une surveillance de la température multizone et de déflecteurs de conduits contrôlables sans fil, mais le matériel est très cher et tous les logiciels semblent être une réflexion après coup (avec peu de support ou de mises à jour à mesure que la technologie s'améliore). J'ai déjà des capteurs de température compatibles WiFi dans ma maison pour les contrôleurs d'unité AC au point d'utilisation et j'ai des démangeaisons pour une raison d'utiliser de petits servos dans un projet. Tout ce dont j'ai besoin, ce sont des servos connectés au WiFi qui peuvent ouvrir/fermer les évents des conduits dans mon système CVC... devrait être assez facile.

LinkIt™ Smart 7688 de MediaTek  

Le nouveau LinkIt Smart 7688 Duo HDK de MediaTek est un microprocesseur connecté au WiFi exécutant OpenWRT avec un microcontrôleur intégré compatible arduino. Il est parfait pour ce projet car il possède toutes les broches d'E/S nécessaires pour plusieurs capteurs et servomoteurs, ainsi qu'une capacité WiFi pour communiquer avec mes capteurs de température existants. De plus, comme OpenWRT est déjà installé avec uHTTPd, je peux exécuter la WebApp directement sur le LinkIt Smart 7688 HDK pour un package complètement autonome.

Configuration du LinkIt Smart 7688 HDK

C'est la première fois que j'utilise une carte dotée du WiFi intégré, je me préparais donc à une courbe d'apprentissage abrupte. Heureusement, la configuration se fait littéralement en 3 étapes :

  • Allumez le Linkit Smart 7688 et connectez-vous à son point d'accès WiFi depuis votre ordinateur
  • Connectez-vous à l'interface Web et saisissez les paramètres de votre point d'accès Wi-Fi
  • Ajoutez la carte "LinkIt Smart 7688 Duo" dans l'IDE Arduino

C'est ça! Lorsque vous sélectionnez la carte "LinkIt Smart 7688 Duo" dans l'IDE Arduino, vous pouvez soit pousser votre croquis via série comme n'importe quelle autre carte, soit télécharger via WiFi (cela vous sera très utile plus tard). Le guide de démarrage et le guide des développeurs Linkit Smart 7688 peuvent également vous être utiles.

Si vous souhaitez autoriser le microcontrôleur à utiliser le WiFi directement dans votre sketch arduino (ce que nous ferons), il vous suffit de vous connecter au HDK et de retourner un peu pour activer la compatibilité de la bibliothèque Arduino Yun.

Vous pouvez simplement copier/coller les lignes d'ici :

Client WiFi et servocontrôleur

Étant donné que celui-ci est compatible avec la bibliothèque Yun bridge et utilise l'IDE Arduino, il est très facile d'adapter le code existant. À l'aide de la bibliothèque de ponts, je peux demander au HDK d'interroger le serveur Web intégré pour la configuration de l'évent (à l'étage, au rez-de-chaussée ou dans toute la maison), puis ajuster les deux servos en conséquence. Dans la vidéo ci-dessous, cela fonctionnait sur un Raspberry Pi 2, mais j'ai pu porter la WebApp sur le LinkIt Smart 7688 pour la rendre encore plus efficace (code inclus à la fin).

Ma WebApp fonctionne sur php, je viens donc d'utiliser le gestionnaire de packages opkg pour l'installer car elle est incluse dans OpenWRT sur le LinkIt Smart 7688 :

J'ai ensuite mis à jour le fichier /etc/config/uhttpd pour interpréter php en ajoutant cette ligne :

et redémarré uHTTPd

Matériel 

J'ai fixé le palonnier du servo directement à l'évent et fabriqué un support en aluminium pour maintenir le servo en position avec des entretoises en acier inoxydable. Il y a encore un peu de jeu, je vais donc ajouter des attaches zippées pour rendre cela un peu plus permanent.

Logiciel

Cette version se résume en réalité à trois composants :

  • Les capteurs de température autour de la maison envoient des mises à jour périodiques au serveur Web uHTTPd exécuté sur le LinkIt Smart 7688.
  • Une application Web fonctionnant sur le LinkIt Smart 7688 qui affiche l'état actuel et vous permet de reconfigurer manuellement les évents.
  • Le MCU sur le LinkIt Smart 7688 qui contrôle les évents pour diriger l'air chaud vers l'étage ou vers le bas selon l'heure de la journée.

Les capteurs de température ne sont que des ATtiny85 ou des Arduino Nanos connectés à un DHT11 ou DHT22 et envoient ces informations de température/humidité à un serveur Web via un ESP8266 via une série logicielle. J'ai un article complet sur ces capteurs ici car ils ont été initialement conçus et développés en tant que phase II de mon projet de climatiseur au point d'utilisation (cette partie est complètement facultative, mais elle vous donnera des mesures supplémentaires qui peuvent être utilisées pour régler le système et éventuellement l'automatiser).

Le LinkIt Smart 7688 HDK lui-même est dans mon grenier connecté directement aux évents des conduits. Du côté d'OpenWRT, une tâche cron met à jour le fichier texte de l'état de l'évent. Le côté MCU exécutant l'esquisse arduino vérifie ce fichier texte périodiquement et ajuste les évents en conséquence.

Pour vérifier l'état des évents et les reconfigurer manuellement, j'ai créé une petite WebApp qui est hébergée directement sur le LinkIt Smart 7688.  Avec dyndns et la redirection de port, je peux voir et contrôler tout cela de l'extérieur de la maison si j'en ai besoin.

Pièce à améliorer

Les nuits devenant déjà plus froides, j'avais besoin de le faire fonctionner le plus tôt possible. Certaines concessions ont donc été faites au nom d'un déploiement rapide. Du côté du matériel, je vais imprimer en 3D des supports appropriés pour les servos car mes supports de hack-job ont un peu de jeu. De plus, le petit servo RC que j'ai utilisé dans la démo a tous des engrenages en plastique que je ne m'attends pas à durer des années, donc comme je ne veux pas retourner dans le grenier de si tôt, je vais échanger les sortir pour des servos plus gros avec des engrenages en métal.

Je pourrais un jour ajouter des servos connectés au Wi-Fi supplémentaires aux évents de chaque pièce et les faire tous se reconnecter au seul LinkIt Smart 7688.

Actuellement, les sondes de température ne font que transférer les lectures dans un fichier csv afin que je puisse facilement les suivre et les représenter graphiquement. Ce serait bien d'allumer le chauffage tôt si la maison est particulièrement froide, mais mon thermostat WiFi n'a pas encore d'API. J'aimerais également me connecter à mon système domotique afin que les évents s'ajustent automatiquement en fonction de l'occupation de la pièce en temps réel dérivée des capteurs de mouvement plutôt que d'être entièrement basé sur l'heure de la journée (en particulier pour les week-ends en raison de nos horaires dynamiques).

Code

  • Évent WiFi LinkIt Smart Duo
  • Capteur de température WiFi
  • Vent.php
  • Application Web Android LinkIt Smart Vent
Évent WiFi LinkIt Smart DuoC/C++
Cette esquisse utilise les bibliothèques Bridge et HTTP Client de l'Arduino Yun pour interroger un serveur Web et ouvrir/fermer les évents HVAC selon les besoins.
/* Adapté de l'exemple de servomoteur Sweep par BARRAGAN  et Yun Exemple de client HTTP créé par Tom igoe ** Les deux sont dans le domaine public.*** Code adapté pour HAI (Home Automation w/ Intelligence) par Buddy Crotty ** Ce croquis arduino s'appuie sur un serveur Web pour faire tout le gros du travail. Cela peut être un appareil séparé comme un Raspberry Pi, ou vous pouvez l'exécuter sur le côté MPU du LinkIt Smart inOpenWRT. ** Le serveur Web collecte les lectures de température de toute la maison et détermine où l'air chaud/froid doit aller en fonction de l'heure de jour, la météo extérieure (y compris les prévisions) et l'occupation de la maison.** Il affiche ensuite « en haut », « en bas » ou « toute la maison » selon l'endroit où l'air doit être envoyé. */#include  #include #include  Servo upservo ; // créer un objet servo pour contrôler le servo à l'étage Servo downservo; // servo de registre d'aération en bas int uppos =0; // variable pour stocker la position du servo (à l'étage) int downpos =0; // position du servo en bas const char* host ="192.168.1.80"; // IP interne du serveur Web domotiqueint dopenangle =80; // Nombre de degrés dont votre servomoteur a besoin pour tourner entre ouverture/fermeture sur le ventint dcloseangle =0; int angle ouvert =140 ; int ucloseangle =0; void setup() { upservo.attach(9); // Goupille pour le servo attaché au registre d'aération à l'étage downservo.attach(10); // Broche pour le servo attaché au registre d'aération du rez-de-chaussée // démarrer le pont vers OpenWRT pinMode (13, OUTPUT); digitalWrite(13, LOW); Pont.begin(); digitalWrite(13, HIGH);} void wholehouse(){ if (downpos <=dcloseangle){ // Assurez-vous que l'évent n'est pas déjà en position // ouvrez l'évent du rez-de-chaussée pour (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // Passer de l'angle fermé défini à l'angle ouvert une étape à la fois { downservo.write(downpos); retard(20); // attend entre les étapes jusqu'à ce que le servo atteigne la position } } if (uppos <=uopenangle) { // ouvrir l'évent à l'étage for(uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write(uppos); retard(20); } }}void downstairs(){ if (downpos <=dopenangle) { // ouvrir l'évent en bas pour (downpos =dcloseangle; downpos <=dopenangle; downpos +=1) { downservo.write(downpos); retard(20); } } if (uppos>=ucloseangle){ //ferme l'évent à l'étage pour(uppos =uopenangle; uppos>=ucloseangle; uppos-=1) { upservo.write(uppos); retard(20); } }} annuler à l'étage () { if (uppos <=uopenangle) { // ouvrir l'évent à l'étage pour (uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write(uppos); retard(20); } } if (downpos>=dcloseangle){ //ferme l'évent en bas pour (downpos =dopenangle; downpos>=dcloseangle; downpos -=1) { downservo.write(downpos); retard(20); } }} boucle vide(){ Client HttpClient ; // Créer et effectuer une requête HTTP :String cmd ="http://"; cmd +=hôte ; cmd +="/vent.txt" ; client.get(cmd); // Lit les octets entrants du serveur while (client.available()) { int c =client.read(); if (c =='2') en haut(); if (c =='1') en bas (); if (c =='0') ensemble de la maison(); } retard (60000);}
Capteur de température WiFiC/C++
Capteur de température et d'humidité connecté. Enregistre les données sur le serveur domotique central.
/* * Code adapté pour HAI (Home Automation w/ Intelligence) par Buddy Crotty * * Envoie des données via des requêtes HTTP GET à votre serveur HAI * * La connectivité se fait via une connexion série logicielle à un ESP8266 WiFi * interface déjà configurée pour se connecter à votre wLAN, * mais vous pouvez décommenter les paramètres WiFi pour réinitialiser le SSID/mot de passe * */const char* host ="192.168.1.80"; // IP interne de Home Automation Webserverconst char* devID ="downstairs"; // ID de périphérique (un seul mot, pas d'espaces, pas de caractères spéciaux) #include SoftwareSerial ser(10, 11); // (RX, TX) // Série logicielle pour contrôler le module ESP8266 // Série matérielle pour le débogagelong utime =300000 ; // Temps entre les mises à jour // 900000 =15 minutes (pour la batterie/l'énergie solaire) // 300000 =5 minutes (pour l'alimentation CA) // 5000 =5 secondes (pour les tests) // Doit être supérieur à 10000 pour que l'ESP8266 sortir du mode veille (mode batterie) // Capteur de température et d'humidité #include #define DHTPIN 2 //Broche pour capteur de température/humidité#define DHTTYPE DHT22 // DHT11, DHT22 (AM2302 ou DHT21 (AM2301 )DHT dht(DHTPIN, DHTTYPE);void setup() { Serial.begin(9600);ser.begin(9600); //ser.listen(); /* // Décommenter pour réinitialiser les paramètres WiFi delay(1000); ser.println("AT+CWMODE=1"); ser.println("AT+CWJAP=\"SSID\",\"Mot de passe\""); */ ser.println("AT+RST"); / / Réinitialiser ESP8266 depuis que l'arduino a été réinitialisé délai (10) ; dht.begin (); // Démarrer DHT Serial.println (" Donner à tout une chance de se réchauffer "); // Attendre 25 secondes pour que le WiFi se connecte Serial.println ( "|-------------------------|"); Serial.print("|"); for(int x =0; x <25; x++){ Serial.print("#"); delay(1000); } Serial.println("|"); Serial.println("Terminé");} float t =0 ; entier h =0; float hi =0;void loop() { Serial.println(); //Temp et humidité float t =dht.readTemperature(true); int h =dht.readHumidity(); float hi =dht.computeHeatIndex(t, h);// Valeurs de sortie envoyées à ThingSpeak Serial.print("Temperature:"); Serial.print(t); Serial.print(" *F\t"); Serial.print("Indice de chaleur :"); Serial.print(salut); Serial.println(" *F"); Serial.print("Humidité:"); Serial.print(h); Serial.println("%\t"); Serial.print("...connexion à "); Serial.println(hôte); // Connexion TCP Chaîne cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=hôte; cmd +="\",80"; ser.println(cmd); retard(1000); if(ser.find("Error")){ Serial.println("AT+CIPSTART error"); retourner; } else{ } // prépare la chaîne GET String getStr ="GET /tempupdate.php?ID="; getStr +=devID ; getStr +="&field1="; //Temp getStr +=t; getStr +="&field2="; //Humidité getStr +=h; getStr +="&field3="; //Index de chaleur getStr +=salut; getStr +="\r\n\r\n" ; Serial.print("Envoi de l'URL des données :"); Serial.println(getStr); // envoie la longueur des données cmd ="AT+CIPSEND="; cmd +=String(getStr.length()); ser.println(cmd); if(ser.find(">")){ ser.print(getStr); Serial.println("Succès !"); } else{ ser.println("AT+CIPCLOSE"); Serial.println("Échec de la connexion"); // alerter l'utilisateur }Serial.print("Prochaine mise à jour dans ");Serial.print(utime / 1000);Serial.println(" seconds");delay(utime); //attendre entre les mises à jour }
Vent.phpPHP
Vérifiez l'état et remplacez manuellement la configuration de l'évent.
À l'étage uniquement

Toute la maison

En bas uniquement

Vents actuellement ouverts pour ";if ($status ==="0 ") print "toute la maison";if ($status ==="1") print "Downstairs Only";if ($status ==="2") print "Upstairs Only";print "
"; fclose($monfichier);if ($_GET["zone"] =="");else {$monfichier =fopen("vent.txt", "w+") ou die("Impossible d'ouvrir le fichier !"); if ($_GET["zone"] !="") print "

Envoi de la commande pour ouvrir les évents pour ";if ($_GET["zone"] ==="0") print "toute la maison" ; if ($_GET["zone"] ==="1") print "En bas seulement";if ($_GET["zone"] ==="2") print "En haut seulement";print "

";fwrite($myfile, $_GET['zone']);fclose($myfile);}?>
Application Web Android LinkIt Smart VentJSON
Le fichier manifeste afin que Chrome sur Android ouvre le contrôleur de ventilation en tant qu'application Web.
{ "name":"LinkIt Smart Vent", "icons":[ { "src":"LinkIt_icon_36.png", "sizes":"36x36", "type":"image/png", "density":0.75 }, { "src":"LinkIt_icon_48.png", "sizes":"48x48", "type":"image/png", "density":1.0 }, { "src":"LinkIt_icon_128.png", "sizes":"128x128", "type":"image/png", "density":1.0 }, { "src":"LinkIt_icon_192 .png", "sizes":"192x192", "type":"image/png", "density":1.0 } ], "start_url":"vent.php", "display":"standalone", "orientation " : "portrait"}

Schémas

ATtiny85 ou Arduino Nano tirant les températures d'un DHT11/22 et WiFi connecté avec un ESP8266.

Processus de fabrication

  1. MODULE DE DONNÉES : écran TFT ultra-étiré de 23,1 pouces avec contrôle intelligent
  2. Contrôle d'accès avec QR, RFID et vérification de la température
  3. Meilleur contrôle qualité avec les pièces imprimées en 3D
  4. Smart Procurement Balances AI avec HI
  5. Contrôler l'accepteur de pièces avec Arduino
  6. Télécommande TV alimentée par batterie avec boîtier imprimé en 3D
  7. Arduino avec Bluetooth pour contrôler une LED !
  8. GÖPEL améliore le contrôle qualité dans la fabrication automobile avec Universal Robots
  9. Tour avec CNC