Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Gezoneerde klimaatregeling met MediaTeks LinkIt™ Smart 7688

Componenten en benodigdheden

Espressief ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip-technologie ATtiny85
× 1
DHT22-temperatuursensor
× 1
Servo's (Tower Pro MG996R)
× 1

Apps en online services

Arduino IDE

Over dit project

De winter komt eraan

Toen mijn vrouw en ik afgelopen winter ons eerste kind kregen, kregen we een elektrische kachel om de ruimte direct rond ons meisje lekker warm te houden. Terwijl we van kamer naar kamer verhuisden, brachten we de verwarming mee, terwijl we dachten dat we superefficiënt waren met klimaatregeling op het gebruikspunt. Een maand later krijgen we een elektriciteitsrekening die twee keer zo hoog is als normaal en beseffen we dat het goedkoper zou zijn geweest om het hele huis de klok rond te verwarmen met de gasoven.

De winter staat weer voor de deur, dus deze keer heb ik een upgrade naar een wifi-thermostaat uitgevoerd, zodat ik de verwarming aan kan zetten terwijl ik beneden ben of warm onder de dekens. Dit is veel handiger, maar we verwarmen nog steeds het hele huis, ook al zijn we meestal allemaal in een deel van het huis.

Werk slimmer

Kijkend naar onze bewegingssensorlogboeken die onze verlichting regelen, is het vrij duidelijk dat we na het werk 4-5 uur beneden als gezin doorbrengen, en dan rond 21.00 uur naar boven gaan naar onze slaapkamers waar we slapen tot we de volgende ochtend vertrekken naar het werk. Weekends zijn een beetje anders, maar van maandag tot en met vrijdag werkt het als een uurwerk (vooral met een kind van 10 maanden met een strikt slaapschema).

Ik heb gekeken naar HVAC-systemen met temperatuurbewaking in meerdere zones en draadloos regelbare kanaalschotten, maar de hardware is erg duur en alle software ziet eruit alsof het een bijzaak was (met weinig ondersteuning of updates naarmate de technologie beter wordt). Ik heb al een aantal WiFi-compatibele temperatuursensoren in mijn huis voor gebruiksklare AC-unitcontrollers en heb om een ​​​​reden jeuk gehad om enkele kleine servo's in een project te gebruiken. Het enige dat ik nodig heb, zijn op WiFi aangesloten servo's die kanaalopeningen in mijn HVAC-systeem kunnen openen / sluiten ... zou gemakkelijk genoeg moeten zijn.

MediaTek's LinkIt™ Smart 7688  

MediaTek's nieuwe LinkIt Smart 7688 Duo HDK is een wifi-verbonden microprocessor met OpenWRT met een ingebouwde arduino-compatibele microcontroller. Het is perfect voor dit project omdat het alle I/O-pinnen heeft die nodig zijn voor meerdere sensoren en servomotoren, plus WiFi-mogelijkheden om te communiceren met mijn bestaande temperatuursensoren. Omdat OpenWRT al is geïnstalleerd met uHTTPd, kan ik de webapp ook rechtstreeks op de LinkIt Smart 7688 HDK uitvoeren voor een volledig op zichzelf staand pakket.

De LinkIt Smart 7688 HDK instellen

Dit is de eerste keer dat ik een bord gebruik met ingebouwde wifi, dus ik bereidde me voor op een steile leercurve. Gelukkig is het instellen letterlijk 3 stappen:

  • Schakel de Linkit Smart 7688 in en maak verbinding met het WiFi-toegangspunt vanaf uw computer
  • Log in op de webinterface en voer de instellingen voor uw WiFi-toegangspunt in
  • Voeg het "LinkIt Smart 7688 Duo"-bord toe aan de Arduino IDE

Dat is het! Wanneer je het "LinkIt Smart 7688 Duo"-bord in de Arduino IDE selecteert, kun je je schets zoals elk ander bord via serieel pushen, of je kunt uploaden via wifi (dit zal later erg handig zijn). De Linkit Smart 7688 Aan de slag-gids en ontwikkelaarsgids kunnen ook nuttig voor u zijn.

Als je de microcontroller de wifi rechtstreeks in je Arduino-schets wilt laten gebruiken (wat we zullen doen), ssh je gewoon in de HDK en draai je een beetje om de Arduino Yun-bibliotheekcompatibiliteit in te schakelen.

Je kunt de regels hier gewoon kopiëren/plakken:

WiFi-client en servocontroller

Omdat dit ingebouwde compatibiliteit heeft met de Yun bridge-bibliotheek en de Arduino IDE gebruikt, is het heel eenvoudig om bestaande code aan te passen. Met behulp van de bridge-bibliotheek kan ik de HDK de ingebouwde webserver laten pollen voor de ventilatieconfiguratie (boven, beneden of het hele huis) en vervolgens de twee servo's dienovereenkomstig aanpassen. In de onderstaande video liet ik dit draaien op een Raspberry Pi 2, maar ik kon de WebApp overzetten naar de LinkIt Smart 7688 om het nog efficiënter te maken (code aan het einde inbegrepen).

Mijn WebApp draait op php, dus ik heb zojuist opkg-pakketbeheerder gebruikt om het te installeren, aangezien het is opgenomen in OpenWRT op de LinkIt Smart 7688:

Ik heb toen het bestand /etc/config/uhttpd bijgewerkt om php te interpreteren door deze regel toe te voegen:

en herstart uHTTPd

Hardware 

Ik heb de servohoorn rechtstreeks op de ventilatieopening bevestigd en een aluminium beugel gefabriceerd om de servo op zijn plaats te houden met enkele roestvrijstalen afstandhouders. Er is nog een beetje speling, dus ik zal wat kabelbinders toevoegen om dit een beetje meer permanent te maken.

Software

Deze build komt eigenlijk neer op drie componenten:

  • Temperatuursensoren in huis sturen periodieke updates naar de uHTTPd-webserver die op de LinkIt Smart 7688 draait.
  • Een webapp die draait op de LinkIt Smart 7688 die de huidige status toont en waarmee u de ventilatieopeningen handmatig opnieuw kunt configureren.
  • De MCU op de LinkIt Smart 7688 die de ventilatieopeningen regelt om warme lucht naar boven of naar beneden te leiden, afhankelijk van het tijdstip van de dag.

De temperatuursensoren zijn gewoon ATtiny85's of Arduino Nano's die zijn aangesloten op een DHT11 of DHT22 en die informatie over temperatuur/vochtigheid naar een webserver sturen via een ESP8266 via seriële software. Ik heb hier een volledige beschrijving van die sensoren, omdat ze oorspronkelijk zijn ontworpen en ontwikkeld als fase II van mijn point-of-use airconditioner-project (dit deel is volledig optioneel, maar het geeft je aanvullende statistieken die kunnen worden gebruikt om af te stemmen het systeem en uiteindelijk automatiseren).

De LinkIt Smart 7688 HDK zelf is op mijn zolder rechtstreeks aangesloten op de kanaalopeningen. Aan de OpenWRT-kant werkt een cronjob het tekstbestand van de ventilatiestatus bij. De MCU-kant die de Arduino-schets uitvoert, controleert dit tekstbestand periodiek en past de ventilatieopeningen dienovereenkomstig aan.

Om de status van de ventilatieopeningen te controleren en ze handmatig opnieuw te configureren, heb ik een kleine webapp gemaakt die rechtstreeks op de LinkIt Smart 7688 wordt gehost.  Met dyndns en port forwarding kan ik dit alles van buitenaf bekijken en bedienen als dat nodig is.

Ruimte om te verbeteren

Nu de nachten al kouder worden, moest ik dit zo snel mogelijk werkend krijgen, dus er werden enkele concessies gedaan in de naam van een snelle inzet. Wat de hardware betreft, zal ik de juiste mounts voor de servo's 3D-printen, omdat mijn hack-job-mounts een beetje spelen. Ook heeft de kleine RC-servo die ik in de demo heb gebruikt allemaal plastic tandwielen waarvan ik niet verwacht dat ze jaren meegaan, dus aangezien ik niet snel weer op zolder wil klimmen, ga ik ruilen ze uit voor grotere servo's met metalen tandwielen.

Ik kan op een dag extra op wifi aangesloten servo's toevoegen aan ventilatieopeningen in elke kamer en ze allemaal weer verbinden met de enkele LinkIt Smart 7688.  

Momenteel dumpen de temperatuursondes de metingen alleen naar een csv-bestand, zodat ik het gemakkelijk kan volgen en in een grafiek kan opnemen. Het zou leuk zijn om vroeg de kachel aan te trappen als het bijzonder koud is in huis, maar mijn wifi-thermostaat heeft nog geen API. Ik wil ook graag aansluiten op mijn domoticasysteem, zodat de ventilatieopeningen zich automatisch aanpassen op basis van realtime kamerbezetting afgeleid van bewegingssensoren in plaats van volledig gebaseerd te zijn op het tijdstip van de dag (vooral voor weekenden vanwege onze dynamische schema's).

Code

  • LinkIt Smart Duo wifi-ventilatie
  • WiFi-temperatuursensor
  • Vent.php
  • LinkIt Smart Vent Android-webapp
LinkIt Smart Duo wifi-ventilatieC/C++
Deze schets gebruikt de Bridge- en HTTP Client-bibliotheken van de Arduino Yun om een ​​webserver te pollen en HVAC-openingen te openen/sluiten indien nodig.
/* Aangepast van Sweep-servovoorbeeld door BARRAGAN  en Yun HTTP Client-voorbeeld gemaakt door Tom igoe ** Beide zijn in het publieke domein.*** Code aangepast voor HAI (Home Automation w/ Intelligence) door Buddy Crotty ** Deze Arduino-schets is afhankelijk van een webserver om al het zware werk te doen. Dit kan een apart apparaat zijn, zoals een Raspberry Pi, of je kunt het op de MPU-kant van de LinkIt Smart inOpenWRT gebruiken.** De webserver verzamelt temperatuurmetingen van overal in huis en bepaalt waar warme/koude lucht naartoe moet op basis van de tijd van dag, buitenweer (inclusief weersvoorspelling) en huisbezetting.** Vervolgens wordt 'boven', 'beneden' of 'hele huis' weergegeven, afhankelijk van waar de lucht naartoe moet worden gestuurd. */#include  #include #include  Servo upservo; // maak een servo-object om de servo op de bovenverdieping te bedienen Servo downservo; // beneden ontluchter demper servo int uppos =0; // variabele om de servopositie (boven) op te slaan in downpos =0; // servopositie beneden const char * host ="192.168.1.80"; // Interne IP van Home Automation Webserverint dopenangle =80; // Aantal graden dat uw servo nodig heeft om te draaien tussen open/dicht op de ventint dcloseangle =0; int uopenhoek =140; int ucloseang =0; void setup() { upservo.attach(9); // Pin voor servo bevestigd aan ontluchtingsklep boven downservo.attach (10); // Pin voor servo bevestigd aan ontluchtingsklep beneden // start brug naar OpenWRT pinMode (13, OUTPUT); digitalWrite(13, LAAG); Brug.begin(); digitalWrite(13, HIGH);} void wholehouse(){ if (downpos <=dcloseangle){ // Zorg ervoor dat de ventilatie niet al in positie is // open de ventilatie beneden voor (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // Ga stap voor stap van ingestelde sluithoek naar open hoek {downservo.write(downpos); vertraging(20); // wacht tussen stappen totdat servo positie bereikt}} if (uppos <=uopenangle) {// open bovenopening voor (uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write (uppos); vertraging(20); } }} ongeldig beneden (){ if (downpos <=dopenangle) { // open beneden vent voor (downpos =dcloseangle; downpos <=dopenangle; downpos +=1) { downservo.write (downpos); vertraging(20); } } if (uppos>=ucloseangle){ // close bovenventilatie voor (uppos =uopenangle; uppos>=ucloseangle; uppos-=1) { upservo.write (uppos); vertraging(20); } }} leegte boven () { if (uppos <=uopenangle) { // open bovenopening voor (uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write (uppos); vertraging(20); } } if (downpos>=dcloseangle){ // sluit de ventilatie beneden voor (downpos =dopenangle; downpos>=dcloseangle; downpos -=1) { downservo.write(downpos); vertraging(20); } }} void loop(){ HttpClient-client; // Maak en doe een HTTP-verzoek:String cmd ="http://"; cmd +=host; cmd +="/vent.txt"; klant.get(cmd); // Lees inkomende bytes van de server while (client.available()) {int c =client.read(); if (c =='2') boven(); if (c =='1') beneden(); if (c =='0') hele huis(); } vertraging(60000);}
WiFi-temperatuursensorC/C++
Aangesloten temperatuur- en vochtigheidssensor. Registreert gegevens naar de centrale Home Automation-server.
/* * Code aangepast voor HAI (Home Automation w/ Intelligence) door Buddy Crotty * * Verzendt gegevens via HTTP GET-verzoeken naar uw HAI-server * * Connectiviteit is via software seriële verbinding met een ESP8266 WiFi * interface is al geconfigureerd om verbinding te maken met uw wLAN, * maar u kunt de WiFi-instellingen verwijderen om SSID/wachtwoord opnieuw in te stellen * */const char* host ="192.168.1.80"; // Intern IP-adres van Home Automation Webserverconst char* devID ="beneden"; // Apparaat-ID (één woord, geen spaties, geen speciale tekens) #include SoftwareSerial ser(10, 11); // (RX, TX) // Software serieel voor het besturen van ESP8266-module // Hardware serieel voor debuggen lange utime =300000; // Tijd tussen updates // 900000 =15 minuten (voor batterij/zonne-energie) // 300000 =5 minuten (voor wisselstroom) // 5000 =5 seconden (voor testen) // Moet langer zijn dan 10000 voor ESP8266 om uit slaapmodus komen (batterijmodus) // Temperatuur- en vochtigheidssensor #inclusief #define DHTPIN 2 //Pin voor temperatuur-/vochtigheidssensor#define DHTTYPE DHT22 // DHT11, DHT22 (AM2302 of DHT21 (AM2301) )DHT dht(DHTPIN, DHTTYPE);void setup() { Serial.begin(9600); ser.begin(9600); //ser.listen(); /* // Uncomment om wifi-instellingen te resetten delay(1000); ser.println("AT+CWMODE=1"); ser.println("AT+CWJAP=\"SSID\",\"Wachtwoord\""); */ ser.println("AT+RST"); / / Reset ESP8266 sinds arduino was reset vertraging (10); dht.begin(); // Start DHT Serial.println ("Geef alles een kans om op te warmen"); // wacht 25 seconden totdat WiFi verbinding heeft gemaakt met Serial.println ( "|-------------------------|"); Serial.print("|"); for(int x =0; x <25; x++){ Serial.print("#"); delay(1000); } Serial.println("|"); Serial.println("Klaar");} float t =0; int h =0; float hi =0; ongeldige lus() {Serial.println(); // Temp en vochtigheid float t =dht.readTemperature (true); int h =dht.readHumidity(); float hi =dht.computeHeatIndex(t, h);// Uitvoerwaarden worden verzonden naar ThingSpeak Serial.print("Temperature:"); Serial.print(t); Serial.print(" *F\t"); Serial.print("Hitte-index:"); Serial.print(hallo); Serial.println(" *F"); Serial.print("Vochtigheid:"); Seriële.print(h); Serial.println("%\t"); Serial.print("...verbinden met "); Serieel.println(host); // TCP-verbinding String cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=host; cmd +="\",80"; ser.println(cmd); vertraging (1000); if(ser.find("Fout")){ Serial.println("AT+CIPSTART fout"); opbrengst; } else{ } // prepare GET string String getStr ="GET /tempupdate.php?ID="; getStr +=devID; getStr +="&field1="; //Temp getStr +=t; getStr +="&field2="; //Vochtigheid getStr +=h; getStr +="&field3="; // Hitte-index getStr +=hi; getStr +="\r\n\r\n"; Serial.print("Verzendgegevens-URL:"); Serial.println(getStr); // verzend gegevenslengte cmd ="AT+CIPSEND="; cmd +=String(getStr.length()); ser.println(cmd); if(ser.find(">")){ ser.print(getStr); Serial.println("Succes!"); } else{ ser.println("AT+CIPCLOSE"); Serial.println("Verbinding mislukt"); // gebruiker waarschuwen }Serial.print("Volgende update in");Serial.print(utime / 1000);Serial.println("seconden");delay(utime); //wacht tussen updates }
Vent.phpPHP
Controleer de status en overschrijf handmatig de ventilatieconfiguratie.
Alleen boven

Hele huis

Alleen beneden

Ventilaties momenteel open voor ";if ($status ==="0 ") print "het hele huis";if ($status ==="1") print "Alleen beneden";if ($status ==="2") print "Alleen boven";print "
"; fclose($myfile);if ($_GET["zone"] =="");else {$myfile =fopen("vent.txt", "w+") or die("Kan bestand niet openen!"); if ($_GET["zone"] !="") print "

Opdracht verzenden om ventilatieopeningen te openen voor ";if ($_GET["zone"] ==="0") print "het hele huis"; if ($_GET["zone"] ==="1") print "Alleen beneden";if ($_GET["zone"] ==="2") print "Alleen boven";print "

";fwrite($mijnbestand, $_GET['zone']);fclose($mijnbestand);}?>
LinkIt Smart Vent Android WebAppJSON
Manifest-bestand zodat Chrome op Android de ventilatiecontroller opent als een web-app.
{ "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"}

Schema's

ATtiny85 of Arduino Nano halen temps van een DHT11/22 en WiFi verbonden met een ESP8266.

Productieproces

  1. DATA MODUL:23,1-inch ultra-uitgerekt TFT-scherm met slimme bediening
  2. Toegangscontrole met QR, RFID en temperatuurverificatie
  3. Betere kwaliteitscontrole met 3D-geprinte onderdelen
  4. Smart Procurement balanceert AI met HI
  5. Bedien muntvangers met Arduino
  6. Tv-afstandsbediening op batterijen met 3D-geprint hoesje
  7. Arduino met Bluetooth om een ​​LED te bedienen!
  8. Arduino Nano:bedien 2 stappenmotoren met joystick
  9. Bedien uw led met Cortana
  10. GÖPEL verbetert de kwaliteitscontrole in de automobielindustrie met Universal Robots
  11. Draaibank Met CNC