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

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Composants et Fournitures

Composant Quantité
Espressif ESP8266 ESP-01 1
Arduino Nano R3 1
Microchip ATtiny85 1
Capteur Température/Humidité DHT22 1
Servomoteur Tower Pro MG996R 1

Applications et Services en Ligne

À Propos de ce Projet

L'Hiver Arrive

Avec notre premier enfant l'hiver dernier, nous avons acheté un radiateur électrique d'appoint pour chauffer la zone autour de bébé. En le déplaçant de pièce en pièce, nous pensions être efficaces. La facture d'électricité a doublé le mois suivant : il aurait été moins cher de chauffer toute la maison au gaz en continu.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Cet hiver, j'ai installé un thermostat WiFi pour allumer le chauffage depuis le canapé ou le lit. Plus pratique, mais on chauffe encore toute la maison alors qu'on restemostly dans une zone.

Travailler Plus Intelligemment

Les logs de mes capteurs de mouvement (éclairage) montrent un schéma clair : 4-5h en famille en bas après le travail, puis montée aux chambres vers 21h jusqu'au lendemain matin. Lundi-vendredi, c'est immuable (bébé de 10 mois, horaires stricts). Week-ends plus variables.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

J'ai regardé les systèmes CVC multi-zones avec registres motorisés sans fil : matériel très cher, logiciel souvent bâclé (peu de support/mises à jour). J'ai déjà des sondes WiFi pour mes climatiseurs d'appoint et voulais utiliser des servos. Il me fallait juste des servos WiFi pour ouvrir/fermer les registres CVC... simple en théorie.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

MediaTek LinkIt™ Smart 7688 Duo HDK

Le LinkIt Smart 7688 Duo HDK est un microprocesseur WiFi sous OpenWRT avec microcontrôleur Arduino-compatible intégré. Parfait : broches I/O pour capteurs/servos multiples + WiFi pour communiquer avec mes sondes existantes. OpenWRT avec uHTTPd permet d'héberger l'application web directement sur la carte : solution autonome complète.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Configuration du LinkIt Smart 7688 HDK

Première utilisation d'une carte WiFi intégrée, je m'attendais à une courbe d'apprentissage raide. Heureusement, configuration en 3 étapes :

  1. Alimentez le LinkIt, connectez-vous à son point d'accès WiFi depuis votre ordinateur
  2. Connectez-vous à l'interface web, configurez votre point d'accès WiFi
  3. Ajoutez la carte "LinkIt Smart 7688 Duo" dans l'Arduino IDE

C'est tout ! Sélectionnez la carte dans l'IDE : upload série classique ou upload WiFi (très pratique). Guides de démarrage et développeur disponibles.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Pour permettre au microcontrôleur d'utiliser le WiFi directement dans le sketch Arduino (ce qu'on fera), activez la compatibilité bibliothèque Arduino Yun via SSH :

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Copiez-collez ces lignes :

uci set yunbridge.config.disabled='0'
uci commit
reboot

Client WiFi et Contrôleur Servo

Grâce à la compatibilité bibliothèque Yun Bridge et l'Arduino IDE, l'adaptation de code existant est aisée. Via la bibliothèque Bridge, le HDK interroge le serveur web embarqué pour la configuration des registres (étage, rez-de-chaussée, toute la maison) et actionne les deux servos. La vidéo montre ça sur Raspberry Pi 2, mais j'ai porté l'appli web sur le LinkIt pour plus d'efficacité (code inclus).

Mon appli web est en PHP. Installation via opkg (inclus dans OpenWRT) :

opkg update
opkg install php7 php7-cgi

Mise à jour /etc/config/uhttpd pour interpréter PHP :

list interpreter ".php=/usr/bin/php-cgi"

Redémarrage uHTTPd : /etc/init.d/uhttpd restart

Matériel

Le bras du servo est fixé directement sur le registre. J'ai fabriqué une équerre en aluminium pour maintenir le servo avec des entretoises inox. Il reste un peu de jeu, je rajouterai des colliers de serrage pour pérenniser.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Logiciel

Trois composants principaux :

  1. Sondes température dans la maison envoient périodiquement les relevés au serveur uHTTPd sur le LinkIt Smart 7688.
  2. Application Web sur le LinkIt affichant l'état et permettant reconfiguration manuelle des registres.
  3. Microcontrôleur du LinkIt contrôlant les registres pour diriger l'air chaud vers l'étage ou le rez-de-chaussée selon l'heure.
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Les sondes : ATtiny85 ou Arduino Nano + DHT11/DHT22, envoient température/humidité au serveur web via ESP8266 en liaison série logicielle. J'ai un article complet sur ces sondes (phase II de mon projet climatiseur d'appoint - optionnel mais donne métriques pour affiner/automatiser).

Le LinkIt Smart 7688 HDK est dans les combles, connecté directement aux registres. Côté OpenWRT : tâche cron met à jour le fichier d'état des registres. Côté MCU (sketch Arduino) : lecture périodique de ce fichier et actionnement servos.

Pour vérifier/contrôler manuellement : petite appli web hébergée sur le LinkIt. Avec dyndns et redirection de port, accès/contrôle depuis l'extérieur.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688
Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Marges d'Amélioration

Déploiement rapide imposé par l'arrivée du froid → concessions :

Code

LinkIt Smart Duo WiFi Vent (C/C++)

Sketch utilisant bibliothèques Bridge et HTTP Client (Arduino Yun) pour interroger serveur web et ouvrir/fermer registres CVC.

/* Adapté de Sweep servo example by BARRAGAN <https://barraganstudio.com>
   et Yun HTTP Client example by Tom Igoe <https://www.arduino.cc/en/Tutorial/HttpClient>
   Tous deux domaine public.
   Adapté pour HAI (Home Automation w/ Intelligence) par Buddy Crotty */

#include <Servo.h>
#include <Bridge.h>
#include <HttpClient.h>

Servo upservo;    // Servo registre étage
Servo downservo;  // Servo registre rez-de-chaussée
int uppos = 0, downpos = 0;
const char* host = "192.168.1.80"; // IP serveur domotique
int dopenangle = 80, dcloseangle = 0;
int uopenangle = 140, ucloseangle = 0;

void setup() {
  upservo.attach(9);    // Pin registre étage
  downservo.attach(10); // Pin registre rez-de-chaussée
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  digitalWrite(13, HIGH);
}

void wholehouse() {
  if (downpos <= dcloseangle) {
    for (downpos = dcloseangle; downpos <= dopenangle; downpos++) {
      downservo.write(downpos); delay(20);
    }
  }
  if (uppos <= uopenangle) {
    for (uppos = ucloseangle; uppos <= uopenangle; uppos++) {
      upservo.write(uppos); delay(20);
    }
  }
}

void downstairs() {
  if (downpos <= dopenangle) {
    for (downpos = dcloseangle; downpos <= dopenangle; downpos++) {
      downservo.write(downpos); delay(20);
    }
  }
  if (uppos >= ucloseangle) {
    for (uppos = uopenangle; uppos >= ucloseangle; uppos--) {
      upservo.write(uppos); delay(20);
    }
  }
}

void upstairs() {
  if (uppos <= uopenangle) {
    for (uppos = ucloseangle; uppos <= uopenangle; uppos++) {
      upservo.write(uppos); delay(20);
    }
  }
  if (downpos >= dcloseangle) {
    for (downpos = dopenangle; downpos >= dcloseangle; downpos--) {
      downservo.write(downpos); delay(20);
    }
  }
}

void loop() {
  HttpClient client;
  String cmd = "https://"; cmd += host; cmd += "/vent.txt";
  client.get(cmd);
  while (client.available()) {
    int c = client.read();
    if (c == '2') upstairs();
    if (c == '1') downstairs();
    if (c == '0') wholehouse();
  }
  delay(60000); // Vérification toutes les minutes
}

Sonde Température WiFi (C/C++)

Capteur température/humidité connecté. Envoie données vers serveur domotique central.

/* Adapté pour HAI par Buddy Crotty
   Envoi via requêtes HTTP GET vers serveur HAI
   Connectivité via liaison série logicielle vers ESP8266 déjà configuré sur votre WLAN
   (Décommentez réglages WiFi pour réinitialiser SSID/mot de passe) */

const char* host = "192.168.1.80";
const char* devID = "downstairs"; // ID appareil (un mot, sans espaces/caractères spéciaux)

#include <SoftwareSerial.h>
SoftwareSerial ser(10, 11); // RX, TX pour ESP8266
long utime = 300000; // Intervalle mises à jour
// 900000 = 15 min (batterie/solaire)
// 300000 = 5 min (secteur)
// 5000 = 5 sec (test)
// Doit être > 10000 pour sortie veille ESP8266 (mode batterie)

#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  ser.begin(9600);
  /* // Décommenter pour reset WiFi
  delay(1000);
  ser.println("AT+CWMODE=1");
  ser.println("AT+CWJAP=\"SSID\",\"Password\"");
  */
  ser.println("AT+RST"); // Reset ESP8266
  delay(10);
  dht.begin();
  Serial.println("Temps de chauffe...");
  Serial.println("|-------------------------|");
  Serial.print("|");
  for (int x = 0; x < 25; x++) { Serial.print("#"); delay(1000); }
  Serial.println("|"); Serial.println("Prêt");
}

void loop() {
  Serial.println();
  float t = dht.readTemperature(true); // Fahrenheit
  int h = dht.readHumidity();
  float hi = dht.computeHeatIndex(t, h);
  
  Serial.print("Température: "); Serial.print(t); Serial.print(" *F\t");
  Serial.print("Indice chaleur: "); Serial.print(hi); Serial.println(" *F");
  Serial.print("Humidité: "); Serial.print(h); Serial.println("%\t");
  Serial.print("...connexion à "); Serial.println(host);
  
  // Connexion TCP
  String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += host; cmd += "\",80";
  ser.println(cmd); delay(1000);
  if (ser.find("Error")) { Serial.println("Erreur AT+CIPSTART"); return; }
  
  // Requête GET
  String getStr = "GET /tempupdate.php?ID=";
  getStr += devID; getStr += "&field1="; getStr += t; // Temp
  getStr += "&field2="; getStr += h;                  // Humidité
  getStr += "&field3="; getStr += hi;                 // Indice chaleur
  getStr += "\r\n\r\n";
  
  Serial.print("URL envoi: "); Serial.println(getStr);
  
  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 connexion");
  }
  Serial.print("Prochaine mise à jour dans "); Serial.print(utime / 1000); Serial.println(" secondes");
  delay(utime);
}

Vent.php (PHP)

Vérification état et surcharge manuelle configuration registres.

<html> <head> <style>
.myButton { /* Styles boutons volumineux tactiles */
  box-shadow: 0px 10px 14px -7px #276873;
  background: linear-gradient(to bottom, #599bb3 5%, #408c99 100%);
  border-radius: 20px; display: inline-block; cursor: pointer;
  color: #ffffff; font-family: Arial; font-size: 100px; font-weight: bold;
  padding: 50px 200px; text-align: center; text-decoration: none;
  text-shadow: 0px 5px 0px #3d768a;
}
.myButton:hover { background: linear-gradient(to bottom, #408c99 5%, #599bb3 100%); background-color: #408c99; }
.myButton:active { position: relative; top: 1px; }
</style>
<link rel="manifest" href="manifest.json"> </head> <body>
<div align="center">
<a href="vent.php?zone=2" class="myButton">Étage Seulement</a><br><br>
<a href="vent.php?zone=0" class="myButton">Toute la Maison</a><br><br>
<a href="vent.php?zone=1" class="myButton">Rez-de-chaussée Seulement</a>
<br><br>
<?php
$myfile = fopen("vent.txt", "r") or die("Impossible d'ouvrir le fichier !");
$status = fgets($myfile);
if ($status != "") print "<h1>Registres ouverts pour ";
if ($status === "0") print "Toute la Maison";
if ($status === "1") print "Rez-de-chaussée Seulement";
if ($status === "2") print "Étage Seulement";
print "<br>"; fclose($myfile);

if ($_GET["zone"] != "") {
  $myfile = fopen("vent.txt", "w+") or die("Impossible d'ouvrir le fichier !");
  print "<h1>Envoi commande ouverture registres pour ";
  if ($_GET["zone"] === "0") print "Toute la Maison";
  if ($_GET["zone"] === "1") print "Rez-de-chaussée Seulement";
  if ($_GET["zone"] === "2") print "Étage Seulement";
  print "</h1>";
  fwrite($myfile, $_GET['zone']);
  fclose($myfile);
}
?>
</div> </body> </html>

LinkIt Smart Vent Android WebApp (JSON Manifest)

Fichier manifest pour que Chrome sur Android ouvre le contrôleur comme 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 lisant température via DHT11/22, connecté WiFi via ESP8266.

Contrôle Climatique Par Zones Intelligent avec MediaTek LinkIt™ Smart 7688

Processus de fabrication

  1. DATA MODUL Lance l'Affichage TFT 23,1″ Ultra-Fin avec Contrôle Wi-Fi Intelligent
  2. Système de contrôle d'accès intégré QR, RFID et vérification de température
  3. Élever le contrôle qualité : l'outillage 3D imprimé améliore la précision manufacturière
  4. Achats intelligents : fusionner l'IA et l'expertise humaine
  5. Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
  6. Télécommande TV Arduino Personnalisée – Alimentation Batterie, Boîtier Imprimé 3D
  7. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  8. GÖPEL optimise le contrôle qualité automobile avec le cobot UR10e d'Universal Robots
  9. Tour CNC Millport SmartLathez 1740 – Précision et puissance