Inhoudsopgave:
Video: Arduino aangedreven stofdeeltjes bewakingsstation - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Je kunt vrij eenvoudig een doe-het-zelf-apparaat voor internet van dingen bouwen dat stofvervuiling in je huis bewaakt voor minder dan $ 50 en een melding krijgen wanneer het stofniveau te hoog wordt, zodat je de kamer kunt verluchten, of je kunt het buiten zetten en een melding krijgen als het is veilig om naar buiten te gaan als je in een sterk vervuild gebied woont.
Ik heb dit gemaakt als een schoolproject, dus ik had niet genoeg tijd om een dienst te vinden die MQTT-berichten aanneemt en naar je stuurt zoals meldingen of e-mails.
Houd er ook rekening mee dat als u de sensor altijd van stroom houdt, de levensduur van de ventilator wordt verkort.
Stap 1: benodigde onderdelen
Wat je nodig hebt
- Arduino Uno
- Arduino Ethernet-schild
- Fijnstoflasersensor (ga meestal voor $ 10- $ 30 op eBay/aliexpress)
- DHT11 temperatuur- en vochtigheidssensor (optioneel)
- Breadboard
- Startkabels
Stap 2: Monteer de onderdelen
Eerst moet je het ethernet-schild op de Arduino aansluiten
De PM-sensor heeft meerdere draden, maar degene die we nodig hebben zijn VCC, GND, TX, RX.
Sluit de VCC en GND respectievelijk aan op + en - op het breadboard.
De Arduino heeft hardware RX- en TX-pinnen, maar we gebruiken software-emulatie van RX- en TX-pinnen op respectievelijk pinnen 2 en 3. Sluit de RX van de sensor aan op TX van de Arduino en TX van de sensor op RX van de Arduino.
Als u de temperatuursensor gaat gebruiken, sluit u de VCC- en GND-lijnen aan op + en - op het Breadboard en de datalijn op pin 7.
Stap 3: De code
Je kunt MQTT-broker installeren op een Raspberry pi of een computer die je altijd thuis hebt staan, of je kunt een cloud MQTT-service gebruiken, zoals Cloud MQTT. Vervolgens kun je een script schrijven dat de gegevens als HTTP naar een IFTT-webhook stuurt, aangezien deze nog geen MQTT-webhooks ondersteunen, en meldingen instellen voor wanneer de stofniveaus in je huis te hoog worden.
Arduino luchtstation
#erbij betrekken |
#erbij betrekken |
#erbij betrekken |
#erbij betrekken |
#erbij betrekken |
#erbij betrekken |
#erbij betrekken |
#erbij betrekken |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
IP-adres ip(169, 169, 100, 98); |
byte-mac = { |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
}; |
constchar *mqtt_server = "m23.cloudmqtt.com"; |
consint mqtt_port = 11895; |
constchar *mqtt_user = "jhetjewk"; |
constchar *mqtt_pass = "QB2p9PiMV6pn"; |
constchar *mqtt_client_name = "arduinoClient1"; // Clientverbindingen kunnen niet dezelfde verbindingsnaam hebben |
EthernetClient ethClient; |
PubSubClient-client (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht-DHT; |
int pm1; |
int pm2_5; |
int pm10; |
niet-ondertekende lange id; |
//Bestand mijn bestand; |
Tekenreeksen; |
StaticJsonBuffer<200> jsonBuffer; |
JsonObject& root = jsonBuffer.createObject(); |
voidsetup() { |
Serieel.begin(57600); |
pmSerial.begin(9600); |
id = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
if (Ethernet.begin(mac) == 0) |
{ |
Serial.println("Kan Ethernet niet configureren met DHCP"); |
// poging met vast ip-adres |
Ethernet.begin(mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setTerugbellen (terugbellen); |
vertraging (2000); |
Serial.println(Ethernet.localIP()); |
client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
Serieel.print("rc="); |
Serial.print(client.state()); |
Serieel.print("\n"); |
} |
voidloop() { |
intindex = 0; |
char-waarde; |
char vorigeWaarde; |
if (!client.connected()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println("verbonden"); |
} |
} |
while (pmSerial.available()) { |
waarde = pmSerial.read(); |
if ((index == 0 && waarde != 0x42) || (index == 1 && waarde != 0x4d)) { |
Serial.println("Kan de gegevenskop niet vinden."); |
opbrengst; |
} |
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) { |
vorigeWaarde = waarde; |
} |
andersif (index == 5) { |
pm1 = 256 * vorige Waarde + waarde; |
root["pm1"] = abs(pm1); |
} |
andersif (index == 7) { |
pm2_5 = 256 * vorige Waarde + waarde; |
root["pm2_5"] = abs(pm2_5); |
} |
andersif (index == 9) { |
pm10 = 256 * vorige Waarde + waarde; |
root["pm10"] = abs(pm10); |
} |
andersif (index >15) { |
pauze; |
} |
index++; |
} |
while (pmSerial.available()) pmSerial.read(); |
int chk = DHT.read11(DHT11_PIN); |
if (DHT.temperatuur == -999 || DHT.vochtigheid == -999) { |
root["temperatuur"] = "N.v.t."; |
root["vochtigheid"] = "N.v.t."; |
} anders { |
root["temperatuur"] = DHT.temperatuur; |
root["vochtigheid"] = DHT.vochtigheid; |
} |
sendResultaten(); |
id++; |
vertraging (5000); |
} |
voidsendResultaten() { |
// publiceren naar MQTT |
char jsonChar [100]; |
root.printTo(jsonChar); |
Serial.println(client.publish("arduino", jsonChar)); |
// debuggen naar serieel |
root.printTo(Seriële); |
Serieel.print('\n'); |
} |
// Verwerkt berichten die zijn binnengekomen op geabonneerde onderwerp(en) |
voidcallback(char* onderwerp, byte* payload, unsignedint lengte) { |
} |
bekijk rawair_quality.ino gehost met ❤ door GitHub
Stap 4: Monteer de doos
Ik gebruikte gewoon een doos die ik had liggen en boorde een gat voor de sensor om lucht uit te krijgen en knipte een gat uit zodat de kabels eruit konden gaan (hoewel het een beetje te groot was).
Ik heb lijmkussentjes gebruikt om de sensor aan de doos te bevestigen, waarbij ik het invoergat van de sensor uitlijnde met het geboorde gat in de doos.
Ten slotte heb ik de ethernet- en stroomkabels aangesloten.
Aanbevolen:
Arduino-aangedreven verkeerslichten maken: 4 stappen
Hoe Arduino-aangedreven verkeerslichten te maken: In dit bericht gaan we het hebben over een Arduino-project, d.w.z. Arduino Traffic Pestrians Lights-systeem. Dit project is echt interessant om te proberen en met behulp van wat kunst en handwerk kun je een hele scène van verkeerslichten en peddels creëren
Hou op! LED-game (aangedreven door Arduino): 6 stappen
Hou op! LED-game (aangedreven door Arduino): dit project is geïnspireerd op deze video van YouTube en de Pendulum Challenge Kit (gebroken link. Probeer deze eens.) van Makershed.com. Het is een eenvoudig spel bestaande uit vijf LED-lampjes en één drukknop. De LED's knipperen in volgorde en het afspelen
Automatisch pneumatisch kanon. Draagbaar en Arduino-aangedreven: 13 stappen
Automatisch pneumatisch kanon. Draagbaar en Arduino-aangedreven.: Hallo allemaal! Dit is de instructie om een draagbaar pneumatisch kanon te monteren. Het idee was om een kanon te maken dat verschillende dingen kan schieten. Ik heb een paar hoofddoelen gesteld. Dus, wat mijn kanon zou moeten zijn: automatisch. Om de lucht niet handmatig te comprimeren met
Arduino-aangedreven ketting: 5 stappen
Arduino-aangedreven ketting: ik was op zoek naar een goed Arduino-project voor mijn eindejaarsvakanties. Maar wat te doen? Mijn dochtertje was zeer verrast toen ik haar deze "elektronische" ketting, en ook erg blij. Ik hoop dat de persoon aan wie u iets aanbiedt
Aan de slag met het bouwen van een PM-bewakingsstation: 3 stappen (met afbeeldingen)
Aan de slag met het bouwen van een PM-meetstation: Ik ben vooral geïnteresseerd in de niveaus van luchtvervuiling, omdat ik in China woon en hoewel mijn stad, Shenzhen, waarschijnlijk een van de schoonste steden in China is, het nog steeds zijn slechte dagen heeft. Dus ik wilde mijn eigen bouwen om te vergelijken met de half dozijn lucht