Sisällysluettelo:
Video: Arduinolla toimiva pölyhiukkasten valvonta -asema: 4 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Voit melko helposti rakentaa esineiden internet -laitteen, joka valvoo kodin pölysaastetta alle 50 dollarilla, ja saada ilmoituksen, kun pölypinta nousee liian korkeaksi, jotta voit tuulettaa huoneen tai voit asettaa sen ulos ja saada ilmoituksen, jos se on turvallista mennä ulos, jos asut erittäin saastuneella alueella.
Tein tämän kouluprojektina, joten minulla ei ollut tarpeeksi aikaa löytää palvelua, joka ottaa MQTT -viestit ja lähettää ne sinulle ilmoitusten tai sähköpostien tavoin.
Huomaa myös, että anturin pitäminen jatkuvasti käynnissä lyhentää tuulettimen käyttöikää.
Vaihe 1: Tarvittavat osat
Mitä tarvitset
- Arduino Uno
- Arduino Ethernet -suoja
- Hiukkaslaser-anturi (yleensä 10–30 dollaria eBayssa/aliexpressissä)
- DHT11 lämpötila- ja kosteusanturi (valinnainen)
- Leipälauta
- Käynnistyskaapelit
Vaihe 2: Kokoa osat
Ensin sinun on kytkettävä Arduinon ethernet -suoja
PM -anturissa on useita johtoja, mutta tarvitsemme VCC, GND, TX, RX.
Kytke VCC ja GND vastaavasti + ja - leipälevylle.
Arduinolla on laitteisto -RX- ja TX -nastat, mutta käytämme RX- ja TX -nastojen ohjelmistoemulointia nastoissa 2 ja 3. Liitä anturin RX Arduinon TX: hen ja anturin TX Arduinon RX: ään.
Jos aiot käyttää lämpötila -anturia, kytke VCC- ja GND -rivit Breadboard -levyn + ja - ja tietolinja nastaan 7.
Vaihe 3: Koodi
Voit joko asentaa MQTT -välittäjän vadelmapi: lle tai tietokoneelle, joka on aina kotona, tai käyttää pilvipalvelua, kuten Cloud MQTT. Sitten voit kirjoittaa komentosarjan, joka lähettää tiedot HTTP -muodossa IFTT -webhookille, koska ne eivät vielä tue MQTT -webhookeja, ja määrittää ilmoitukset, kun kodin pölypinta nousee liian korkeaksi.
Arduinon lentoasema
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#sisältää |
#defineDHT11_PIN7 |
#defineRX_PIN2 |
#defineTX_PIN3 |
IPA -osoite ip (169, 169, 100, 98); |
tavu mac = { |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
}; |
constchar *mqtt_server = "m23.cloudmqtt.com"; |
constint mqtt_port = 11895; |
constchar *mqtt_user = "jhetjewk"; |
constchar *mqtt_pass = "QB2p9PiMV6pn"; |
constchar *mqtt_client_name = "arduinoClient1"; // Asiakasyhteyksillä ei voi olla sama yhteyden nimi |
EthernetClient ethClient; |
PubSubClient -asiakas (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
unsignedlong -tunnus; |
// Tiedosto myFile; |
Jono s; |
StaticJsonBuffer <200> jsonBuffer; |
JsonObject & root = jsonBuffer.createObject (); |
voidsetup () { |
Sarja.alku (57600); |
pmSerial.begin (9600); |
id = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
jos (Ethernet.begin (mac) == 0) |
{ |
Serial.println ("Ethernetin määrittäminen epäonnistui DHCP: n avulla"); |
// yritä kiinteällä IP -osoitteella |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_palvelin, mqtt_port); |
client.setCallback (takaisinsoitto); |
viive (2000); |
Serial.println (Ethernet.localIP ()); |
client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
Serial.print ("rc ="); |
Serial.print (client.state ()); |
Serial.print ("\ n"); |
} |
voidloop () { |
intindex = 0; |
char -arvo; |
char previousValue; |
jos (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println ("kytketty"); |
} |
} |
while (pmSerial.available ()) { |
arvo = pmSerial.read (); |
if ((indeksi == 0 && arvo! = 0x42) || (indeksi == 1 && arvo! = 0x4d)) { |
Serial.println ("Tietootsikkoa ei löydy."); |
palata; |
} |
jos (indeksi == 4 || indeksi == 6 || indeksi == 8 || indeksi == 10 || indeksi == 12 || indeksi == 14) { |
previousValue = arvo; |
} |
elseif (indeksi == 5) { |
pm1 = 256 * previousValue + arvo; |
root ["pm1"] = abs (pm1); |
} |
elseif (indeksi == 7) { |
pm2_5 = 256 * previousValue + arvo; |
root ["pm2_5"] = abs (pm2_5); |
} |
elseif (indeksi == 9) { |
pm10 = 256 * previousValue + arvo; |
root ["pm10"] = abs (pm10); |
} |
elseif (indeksi> 15) { |
tauko; |
} |
indeksi ++; |
} |
while (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
jos (DHT.lämpötila == -999 || DHT.kosteus == -999) { |
root ["lämpötila"] = "N/A"; |
root ["kosteus"] = "N/A"; |
} muuta { |
root ["lämpötila"] = DHT.lämpötila; |
root ["kosteus"] = DHT.kosteus; |
} |
sendResults (); |
id ++; |
viive (5000); |
} |
voidsendResults () { |
// julkaista MQTT: lle |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (client.publish ("arduino", jsonChar)); |
// debug sarjaan |
root.printTo (sarja); |
Serial.print ('\ n'); |
} |
// Käsittelee tilattuihin aiheisiin saapuneita viestejä |
voidcallback (char* aihe, tavu* hyötykuorma, unsignedint pituus) { |
} |
katso rawair_quality.ino, jota isännöi GitHub ❤ kanssa
Vaihe 4: Kokoa laatikko
Käytin juuri laatikkoa, joka oli makaamassa, ja porasin reiän anturille ilman saamiseksi ja leikkasin reiän kaapeleille (vaikka se oli hieman liian suuri).
Kiinnitin anturin liitäntälaatikoihin laatikkoon kohdistamalla anturin tuloaukon laatikon poratun reiän kanssa.
Lopuksi liitin ethernet- ja virtakaapelit.
Suositeltava:
Arduinolla toimiva Andorian antenni: 4 vaihetta
Arduino Powered Andorian -antenni: Vaimo päätti olla andorilainen tulevassa Piilaakson Comic Conissa San Josessa vastaamaan Elvis Captain Kirk -asua. Vaikka kasvomaalaus/meikki ja muu puku kesti melko vähän aikaa, en voinut antaa antennin olla vain staattinen
Arduinolla toimiva automaattinen lakaisukone: 9 vaihetta
Arduino Powered Automatic Sweeper: Joten eräänä päivänä päätin ostaa roomban, mutta se on liian kallista, koska olen opiskelija, ja silti ensisijainen tavoitteeni on koulu, ja mieleeni välähtää idea, jossa kerrotaan, kuinka tehdä sellainen, minulla on kunnollinen tausta ohjelmoinnista ja arduinosta, miksi ei?
Tähtiraita - Arduinolla toimiva tähtimerkki ja seuraaja: 11 vaihetta (kuvilla)
Tähtiraita - Arduinolla toimiva tähtikohdistin ja -seuranta: Tähtiraita on Arduinoon perustuva GoTo -asennuksen innoittama tähtien seurantajärjestelmä. Se voi osoittaa ja seurata mitä tahansa taivaalla olevaa esinettä (taivaalliset koordinaatit annetaan syöttönä) kahdella Arduinolla, gyroskoopilla, RTC-moduulilla, kahdella edullisella askelmoottorilla ja 3D-painetulla rakenteella
Spooky Teddy - Arduinolla toimiva itsekeinuttuoli ja pyörivä pää: 11 vaihetta (kuvilla)
Spooky Teddy-Arduino Powered Self-keinutuoli ja pyörivä pää: Spooky teddy on 2-osainen Halloween-sisustus. Ensimmäinen osa on nalle, jossa on 3D -painettu mekanismi, joka voi pyöriä Arduino UNO: n ja solenoidin kanssa. Toinen osa on itsekiinnittyvä tuoli, jonka voimanlähteenä on Arduino-nano ja magneettikiinnike
Rakenna Arduinolla toimiva Talking Robot Head!: 26 vaihetta (kuvilla)
Rakenna Arduinolla toimiva Talking Robot Head !: Tämä robottipää rakennettiin alun perin fyysisen tietojenkäsittelyn luokalleni vuoden lopussa, mutta kesällä se on " oppinut " miten puhua. Päässä on kaksi Freeduinoa, 3 TLC5940NT -sirua ja Adafruit Industries