Სარჩევი:

Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური: 4 ნაბიჯი (სურათებით)
Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური: 4 ნაბიჯი (სურათებით)

ვიდეო: Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური: 4 ნაბიჯი (სურათებით)

ვიდეო: Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური: 4 ნაბიჯი (სურათებით)
ვიდეო: 1. რა არის Arduino? როგორ მუშაობს კომპიუტერი? 2024, ნოემბერი
Anonim
Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური
Arduino– ს მტვრის ნაწილაკების მონიტორინგის სადგური

თქვენ საკმაოდ მარტივად შეგიძლიათ შექმნათ წვრილმანი ნივთების ინტერნეტი, რომელიც აკვირდება თქვენს სახლში მტვრის დაბინძურებას 50 დოლარზე ნაკლებ ფასად და მიიღებთ შეტყობინებას, როდესაც მტვრის დონე ძალიან მაღალი იქნება, ასე რომ თქვენ შეძლებთ ოთახის ვენტილაციას, ან შეგიძლიათ განათავსოთ იგი გარეთ და მიიღოთ შეტყობინება, თუ ეს უსაფრთხოა გარეთ გასვლა, თუ თქვენ ცხოვრობთ ძლიერ დაბინძურებულ ადგილას.

მე ეს გავაკეთე, როგორც სკოლის პროექტი, ამიტომ არ მქონდა საკმარისი დრო, რომ მეპოვა სერვისი, რომელიც მიიღებდა MQTT შეტყობინებებს და გამოგიგზავნით მათ შეტყობინებების ან წერილების მსგავსად.

ასევე გაითვალისწინეთ, რომ სენსორის მუდმივი ჩართვა შეამცირებს გულშემატკივართა სიცოცხლეს.

ნაბიჯი 1: საჭირო ნაწილები

ნაწილები საჭიროა
ნაწილები საჭიროა

რაც დაგჭირდება

  • არდუინო უნო
  • Arduino Ethernet ფარი
  • ნაწილაკების ლაზერული სენსორი (ჩვეულებრივ $ 10-$ 30 იბეიზე/ალიექსპრესზე)
  • ტემპერატურისა და ტენიანობის DHT11 სენსორი (სურვილისამებრ)
  • პურის დაფა
  • ჯუმბერის კაბელები

ნაბიჯი 2: ნაწილების შეკრება

შეიკრიბეთ ნაწილები
შეიკრიბეთ ნაწილები

პირველ რიგში, თქვენ უნდა ჩართოთ Ethernet ფარი Arduino– ზე

PM სენსორს აქვს მრავალი მავთული, მაგრამ ჩვენ გვჭირდება VCC, GND, TX, RX.

შეაერთეთ VCC და GND შესაბამისად + და - პურის დაფაზე.

Arduino– ს აქვს ტექნიკური RX და TX ქინძისთავები, მაგრამ ჩვენ გამოვიყენებთ RX და TX პინების პროგრამულ ემულაციას, შესაბამისად, 2 და 3 ქინძისთავებზე. შეაერთეთ სენსორის RX Arduino– ს TX– ზე და სენსორის TX Arduino– ს RX– ს.

თუ თქვენ აპირებთ გამოიყენოთ ტემპერატურის სენსორი, ჩართეთ VCC და GND ხაზები + და - Breadboard– ზე და მონაცემთა ხაზი pin 7 – ზე.

ნაბიჯი 3: კოდი

თქვენ შეგიძლიათ დააინსტალიროთ MQTT ბროკერი ჟოლოს პიზე ან კომპიუტერზე, რომელზეც ყოველთვის სახლში ხართ, ან გამოიყენოთ ღრუბლოვანი MQTT სერვისი, როგორიცაა Cloud MQTT. შემდეგ შეგიძლიათ დაწეროთ სკრიპტი, რომელიც აგზავნის მონაცემებს HTTP– ით IFTT ვებჰუკზე, რადგან ისინი ჯერ კიდევ არ უჭერენ მხარს MQTT ვებგვერდებს და ადგენენ შეტყობინებებს, როდესაც თქვენს სახლში მტვრის დონე ძალიან მაღალია.

არდუინოს საჰაერო სადგური

#ჩართეთ

#ჩართეთ
#ჩართეთ
#ჩართეთ
#ჩართეთ
#ჩართეთ

#ჩართეთ

#ჩართეთ
#defineDHT11_PIN7
#განსაზღვრეთRX_PIN2
#განსაზღვრეთTX_PIN3
IPAddress ip (169, 169, 100, 98);
ბაიტი მაკ = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
შეზღუდვა mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // კლიენტის კავშირებს არ შეიძლება ჰქონდეთ იგივე კავშირის სახელი
EthernetClient ethClient;
PubSubClient კლიენტი (ethClient);
პროგრამული უზრუნველყოფა სერიული pm სერიული (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
ხელმოუწერელი id;
// ფაილის myFile;
სიმებიანი s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
სერიული. დასაწყისი (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
if (Ethernet.begin (mac) == 0)
{
Serial.println ("ვერ მოხერხდა Ethernet- ის კონფიგურაცია DHCP გამოყენებით");
// მცდელობა ფიქსირებული ip დამატებით
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (გამოძახება);
დაგვიანება (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serial.print ("rc =");
Serial.print (client.state ());
Serial.print ("\ n");
}
voidloop () {
ინდექსი = 0;
char ღირებულება;
char previousValue;
თუ (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("დაკავშირებული");
}
}
ხოლო (pmSerial.available ()) {
მნიშვნელობა = pmSerial.read ();
თუ ((ინდექსი == 0 && მნიშვნელობა! = 0x42) || (ინდექსი == 1 && მნიშვნელობა! = 0x4 დ)) {
Serial.println ("მონაცემთა სათაურის პოვნა შეუძლებელია.");
დაბრუნების;
}
თუ (ინდექსი == 4 || ინდექსი == 6 || ინდექსი == 8 || ინდექსი == 10 || ინდექსი == 12 || ინდექსი == 14) {
previousValue = მნიშვნელობა;
}
elseif (ინდექსი == 5) {
pm1 = 256 * previousValue + მნიშვნელობა;
root ["pm1"] = abs (pm1);
}
elseif (ინდექსი == 7) {
pm2_5 = 256 * previousValue + მნიშვნელობა;
ფესვი ["pm2_5"] = აბს (pm2_5);
}
elseif (ინდექსი == 9) {
pm10 = 256 * წინა ღირებულება + მნიშვნელობა;
root ["pm10"] = abs (pm10);
}
elseif (ინდექსი> 15) {
შესვენება;
}
ინდექსი ++;
}
ხოლო (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
თუ (DHT.temperature == -999 || DHT.humidity == -999) {
root ["ტემპერატურა"] = "N/A";
root ["ტენიანობა"] = "N/A";
} სხვა {
ფესვი ["ტემპერატურა"] = DHT.temperature;
ფესვი ["ტენიანობა"] = DHT. ტენიანობა;
}
sendResults ();
id ++;
დაგვიანება (5000);
}
voidsendResults () {
// გამოაქვეყნეთ MQTT– ში
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// გამართვა სერიალზე
root.printTo (სერიული);
Serial.print ('\ n');
}
// ამუშავებს გამოწერილ თემასთან დაკავშირებულ შეტყობინებებს
voidcallback (char* თემა, ბაიტი* დატვირთვა, ხელმოუწერელი სიგრძე) {
}

ნახვა rawair_quality.ino უმასპინძლა with ერთად GitHub

ნაბიჯი 4: შეიკრიბეთ ყუთი

შეიკრიბეთ ყუთი
შეიკრიბეთ ყუთი
შეიკრიბეთ ყუთი
შეიკრიბეთ ყუთი
შეიკრიბეთ ყუთი
შეიკრიბეთ ყუთი

მე უბრალოდ გამოვიყენე ყუთი, რომელსაც გარშემო ვიწექი და გავხსენი ხვრელი სენსორისთვის ჰაერის შესასვლელად და ამოვიღე ხვრელი კაბელების გასასვლელად (თუმცა ის ძალიან დიდი იყო).

მე გამოვიყენე წებოვანი ბალიშები სენსორის ყუთში მიმაგრებისთვის, სენსორის შესასვლელი ხვრელის გასწორება ყუთზე გაბურღული ხვრელისთვის.

საბოლოოდ, ჩავრთე Ethernet და დენის კაბელები.

გირჩევთ: