Mục lục:

Trạm giám sát các hạt bụi được hỗ trợ bởi Arduino: 4 bước (có hình ảnh)
Trạm giám sát các hạt bụi được hỗ trợ bởi Arduino: 4 bước (có hình ảnh)

Video: Trạm giám sát các hạt bụi được hỗ trợ bởi Arduino: 4 bước (có hình ảnh)

Video: Trạm giám sát các hạt bụi được hỗ trợ bởi Arduino: 4 bước (có hình ảnh)
Video: Webinar: Giải Pháp Kit Công Nghiệp Cho Raspberry Pi 4 & Các Ứng Dụng Thực Tế Đã Triển Khai 2024, Tháng mười một
Anonim
Trạm giám sát các hạt bụi được hỗ trợ bởi Arduino
Trạm giám sát các hạt bụi được hỗ trợ bởi Arduino

Bạn có thể khá dễ dàng xây dựng một thiết bị kết nối vạn vật tự làm theo dõi ô nhiễm bụi trong nhà của bạn với giá dưới 50 đô la và nhận được thông báo khi mức bụi quá cao để bạn có thể thông gió trong phòng hoặc bạn có thể đặt thiết bị bên ngoài và nhận thông báo nếu an toàn để đi ra ngoài nếu bạn sống trong một khu vực ô nhiễm cao.

Tôi thực hiện dự án này như một dự án dành cho trường học, vì vậy tôi không có đủ thời gian để tìm một dịch vụ nhận tin nhắn MQTT và gửi chúng cho bạn như thông báo hoặc email.

Cũng lưu ý rằng luôn luôn cấp nguồn cho cảm biến sẽ làm giảm tuổi thọ của quạt.

Bước 1: Các bộ phận cần thiết

Các bộ phận cần thiết
Các bộ phận cần thiết

Những gì bạn cần

  • Arduino Uno
  • Lá chắn Arduino Ethernet
  • Cảm biến laser vật chất dạng hạt (thường có giá $ 10- $ 30 trên eBay / aliexpress)
  • Cảm biến nhiệt độ và độ ẩm DHT11 (tùy chọn)
  • Breadboard
  • Cáp nhảy

Bước 2: Lắp ráp các bộ phận

Lắp ráp các bộ phận
Lắp ráp các bộ phận

Đầu tiên, bạn cần cắm lá chắn ethernet trên Arduino

Cảm biến PM có nhiều dây, nhưng những dây chúng ta cần là VCC, GND, TX, RX.

Kết nối VCC và GND tương ứng với + và - trên breadboard.

Arduino có các chân RX và TX phần cứng, nhưng chúng tôi sẽ sử dụng mô phỏng phần mềm của các chân RX và TX trên các chân 2 và 3 tương ứng. Cắm RX của cảm biến với TX của Arduino và TX của cảm biến với RX của Arduino.

Nếu bạn đang sử dụng cảm biến nhiệt độ, hãy cắm các đường VCC và GND vào + và - trên Breadboard và đường dữ liệu vào chân 7.

Bước 3: Mã

Bạn có thể cài đặt nhà môi giới MQTT trên raspberry pi hoặc máy tính bạn luôn sử dụng ở nhà hoặc sử dụng dịch vụ MQTT đám mây, như Cloud MQTT. Sau đó, bạn có thể viết tập lệnh gửi dữ liệu dưới dạng HTTP đến IFTT webhook, vì chúng chưa hỗ trợ webhook MQTT và thiết lập thông báo khi mức bụi trong nhà của bạn quá cao.

Trạm hàng không Arduino

#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm

#bao gồm

#bao gồm
# xác địnhDHT11_PIN7
# xác địnhRX_PIN2
# defineTX_PIN3
IPAddress ip (169, 169, 100, 98);
byte 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"; // Các kết nối máy khách không thể có cùng tên kết nối
EthernetClient ethClient;
Ứng dụng khách PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
id không dấu;
// Tập tin myFile;
Dây;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
if (Ethernet.begin (mac) == 0)
{
Serial.println ("Không thể định cấu hình Ethernet bằng DHCP");
// thử với ip addr cố định
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (gọi lại);
chậm trễ (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;
giá trị char;
char beforeValue;
if (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("được kết nối");
}
}
while (pmSerial.available ()) {
value = pmSerial.read ();
if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("Không thể tìm thấy tiêu đề dữ liệu.");
trở lại;
}
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
beforeValue = giá trị;
}
elseif (chỉ mục == 5) {
pm1 = 256 * giá trị trước + giá trị;
root ["pm1"] = abs (pm1);
}
elseif (chỉ mục == 7) {
pm2_5 = 256 * trước Giá trị + giá trị;
root ["pm2_5"] = abs (pm2_5);
}
elseif (chỉ mục == 9) {
pm10 = 256 * giá trị trước + giá trị;
root ["pm10"] = abs (pm10);
}
elseif (chỉ mục> 15) {
nghỉ;
}
chỉ số ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
if (DHT.tempether == -999 || DHT.humidity == -999) {
root ["nhiệt độ"] = "N / A";
root ["độ ẩm"] = "N / A";
} khác {
root ["nhiệt độ"] = nhiệt độ DHT;
root ["độ ẩm"] = DHT.humidity;
}
sendResults ();
id ++;
chậm trễ (5000);
}
voidsendResults () {
// xuất bản lên MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// gỡ lỗi thành nối tiếp
root.printTo (Serial);
Serial.print ('\ n');
}
// Xử lý tin nhắn đến (các) chủ đề đã đăng ký
voidcallback (char * topic, byte * payload, unsignedint length) {
}

xem rawair_quality.ino được lưu trữ với ❤ bởi GitHub

Bước 4: Lắp ráp hộp

Lắp ráp hộp
Lắp ráp hộp
Lắp ráp hộp
Lắp ráp hộp
Lắp ráp hộp
Lắp ráp hộp

Tôi chỉ sử dụng một chiếc hộp mà tôi đã đặt xung quanh và khoan một lỗ để cảm biến lấy không khí và khoét một lỗ để dây cáp đi ra ngoài (mặc dù nó hơi quá lớn).

Tôi đã sử dụng miếng keo để gắn cảm biến vào hộp, căn chỉnh lỗ đầu vào của cảm biến với lỗ đã khoan trên hộp.

Cuối cùng, tôi cắm ethernet và cáp nguồn.

Đề xuất: