Slimme luchtzuiverer met Arduino Yun, Sharp Plasmacluster en AWS IoT
Onderdelen en benodigdheden
| Arduino Yun | × | 1 |
| Sharp Plasmacluster Luchtzuiverer | × | 1 |
| GP2Y1010AU0F Compacte Optische Stofsensor | × | 1 |
| Relaismodule | × | 1 |
| Breadboard (generiek) | × | 1 |
| Condensator 220 µF | × | 1 |
| Weerstand 150 Ω | × | 1 |
| 1-meter AC-kabel | × | 1 |
| Man/Man draadbruggen | × | 1 |
| Man/Vrouw draadbruggen | × | 1 |
| Klemblok | × | 1 |
| Solderdraad | × | 1 |
Benodigde tools en machines
- Multimeter
- Solderbout
- Draadstripper
Apps en online diensten
- Amazon Web Services AWS IoT
- Arduino IDE
- Terminal
- Mosquitto MQTT
Over dit project
De aanwezigheid van stof in huizen, kantoren en andere menselijke omgevingen is onvermijdelijk. Volgens de Environmental Protection Agency kan binnenlucht 2 tot 5 keer meer vervuild zijn dan buitenlucht. Deze luchtverontreiniging zorgt voor kleine irritaties zoals jeukende ogen, niezen en hoofdpijn, maar kan ook bijdragen aan ernstige allergieën en levensbedrekkend astma.
Een werkende luchtzuiverer lost dit probleem op. Maar ik wilde IoT-vorteile benutten om de zuiverer slimmer te maken. In plaats van de conventionele manier (de zuiverer de hele dag aan laten staan), implementeer ik een "brein - microcontroller" en "sensor" die alleen werkt als de stofconcentratie een bepaalde drempel bereikt. Dit bespaart veel elektriciteit! En de operationele status is beschikbaar in mijn "terminalvenster" op mijn laptop of elk "MQTT-enabled client" apparaat, waar ter wereld ik ook ben.
Stap 1: Alle componenten verzamelen
Alle componenten zijn te zien in de BOM-lijst (downloadbaar van Dropbox) of in de sectie Onderdelen.
Stap 2: Controleren of alle onderdelen werken
Het eerste wat ik deed na ontvangst was alles testen om functionaliteit te verifiëren.
Voor de GP2Y1010AU0F Sharp Stofsensor setup, raadpleeg de tutorial van Cyrille Médard de Chardon en Christophe Trefois (bevat bedrading en code).
Voor de Relaismodule testte ik een simpele toggle (aan/uit) om de verbinding te verifiëren.
Stap 3: Programmeren
De code is rechttoe rechtaan. De uitdaging is AWS IoT gebruiken voor communicatie van sensordata naar elk MQTT-apparaat (in mijn geval laptop). Zie de codectie. Ik maakte ook een videotutorial voor AWS CLI IoT (alleen bètaversie op moment van maken).
Stap 4: Bedrading
Stap 5: Resultaat
Stap 6: Videodemonstratie
Zie de projectpagina voor de videodemonstratie.
Toekomstige verbeteringen
Er is nog veel verbetering mogelijk, vooral voor "IoT Project". Door mijn werk had ik maar gedeeltelijk vrije tijd. Een "real-time data monitoring" app (hint: NodeJS) interesseert me en staat op mijn wensenlijst. Blijf op de hoogte!
Conclusie
Veel plezier bij dit project, met name de "IoT - Internet of Things" kant. Mogelijkheden en verbeteringen zijn nog volop aanwezig. Ik genoot van het leren van AWS IoT-service, omdat het gemakkelijk in te stellen is (simpele setup via AWS IoT dashboard) en elke verbinding beveiligt met encryptie.
Problemen | Vragen | Opmerkingen | Suggesties
Er kunnen technische problemen zitten die ik niet zag. Laat een reactie of stuur een privbericht, feedback is zeer gewaardeerd!
Vragen of problemen bij repliceren? Neem contact op of laat een reactie. Ik help graag, we leren samen hardware!
Alle opmerkingen en suggesties zijn welkom.
Code
De broncode bestaat uit meerdere bestanden:
Simple-and-Smart-Air-Purifier-System.ino(Hoofdcode)iot_config.h/iot_config.cpp(AWS IoT configuratie)dust_config.h/dust_config.cpp(Stofsensor configuratie)aws_iot_config.h(AWS IoT certificaten/keys)LICENSE(MIT Licentie)
Hoofdcode (Simple-and-Smart-Air-Purifier-System.ino)
/* Source Code for Simple and Smart Air Purifier System
Written by Aaron Kow
Licence: MIT Licence */
#include "iot_config.h"
#include "dust_config.h"
aws_iot_setup aws_iot;
dust_setup dust_sensor;
int measurePin = 4;
int ledPower = 12;
int relayPin = 13;
float result;
void setup() {
pinMode(ledPower, OUTPUT);
pinMode(relayPin, OUTPUT);
aws_iot.config();
}
void loop() {
// Meet stofdichtheid
result = dust_sensor.init(measurePin, ledPower);
// AWS IoT MQTT voor real-time monitoring
aws_iot.data(result);
// Als stofdichtheid > 0.25 mg/m³, luchtfilter AAN
if (result > 0.25) {
digitalWrite(relayPin, HIGH);
} else {
digitalWrite(relayPin, LOW);
}
delay(1000);
}
IoT Configuratie (iot_config.cpp - kern)
void aws_iot_setup::config(void) {
Serial.begin(115200);
// ... AWS IoT client setup, certificaten laden, verbinden, subscriben op "dustlevel" topic ...
}
void aws_iot_setup::data(float data) {
char msg[32], mqtt[32];
dtostrf(data, 3, 2, msg);
if (atof(msg) > 0.25) {
sprintf(mqtt, "Dust density: %s mg/m3, air filter is ON", msg);
} else {
sprintf(mqtt, "Dust density: %s mg/m3, air filter is OFF", msg);
}
myClient.publish("dustlevel", mqtt, strlen(mqtt), 1, false);
// Debug print
Serial.print("Dust density: ");
Serial.print(data);
Serial.println(" mg/m3");
}
Stofsensor Configuratie (dust_config.cpp - kern)
float dust_setup::init(int measurePin, int ledPower) {
digitalWrite(ledPower, LOW); // LED aan
delayMicroseconds(280); // sampleer tijd
voMeasured = analogRead(measurePin); // lees waarde
delayMicroseconds(40);
digitalWrite(ledPower, HIGH); // LED uit
delayMicroseconds(9680); // slaap tijd
calcVoltage = voMeasured * (5.0 / 1024);
dustDensity = 0.17 * calcVoltage - 0.1; // lineaire vergelijking
return dustDensity; // eenheid: mg/m3
}
De volledige broncode en configuratiebestanden vind je in de GitHub repository:
github.com/AaronKow/Simple-and-Smart-Air-Purifier-System
Schema's
Schema getekend met schematic.com
Productieproces
- Luchtreinigers: ontwerp, geschiedenis en toekomstige trends
- Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
- Slim Binnenklimaat- & Afvalmonitoringssysteem met Raspberry Pi en Arduino
- MotionSense: Slimme inbraakdetectie met Arduino en ESP8266
- 3D-Printer Brandpreventie: Slimme Sensor Veiligheidssysteem
- CoroFence Thermische Detector: Geavanceerde PIR-sensor & IoT-integratie
- Luchtrekkingssystemen: Overzicht, componenten en voordelen voor zware voertuigen
- Eenvoudige installatie- en bedieningshandleiding voor SYNTEC besturingssysteem
- Essentiële componenten van een betrouwbaar gecomprimeerde lucht systeem
- Stap-voor-stap gids voor winterproof maken van uw gecomprimeerde lucht- en gassysteem
- Besturingssysteem Fundamenten: Belangrijkste Componenten en Functies