Daftar Isi:

Stasiun Pemantauan Partikel Debu Bertenaga Arduino: 4 Langkah (dengan Gambar)
Stasiun Pemantauan Partikel Debu Bertenaga Arduino: 4 Langkah (dengan Gambar)

Video: Stasiun Pemantauan Partikel Debu Bertenaga Arduino: 4 Langkah (dengan Gambar)

Video: Stasiun Pemantauan Partikel Debu Bertenaga Arduino: 4 Langkah (dengan Gambar)
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Juli
Anonim
Stasiun Pemantauan Partikel Debu Bertenaga Arduino
Stasiun Pemantauan Partikel Debu Bertenaga Arduino

Anda dapat dengan mudah membuat perangkat internet hal-hal DIY yang memantau polusi debu di rumah Anda dengan harga kurang dari $ 50 dan mendapatkan pemberitahuan ketika tingkat debu terlalu tinggi sehingga Anda dapat menganginkan ruangan, atau Anda dapat mengaturnya di luar dan mendapatkan pemberitahuan jika itu aman untuk pergi ke luar jika Anda tinggal di daerah yang sangat tercemar.

Saya membuat ini sebagai proyek sekolah, jadi saya tidak punya cukup waktu untuk menemukan layanan yang akan menerima pesan MQTT dan mengirimkannya kepada Anda seperti pemberitahuan atau email.

Perhatikan juga bahwa menjaga sensor tetap menyala setiap saat akan mengurangi masa pakai kipas.

Langkah 1: Bagian yang Dibutuhkan

Bagian yang Dibutuhkan
Bagian yang Dibutuhkan

Apa yang Anda butuhkan?

  • Arduino Uno
  • Perisai Ethernet Arduino
  • Sensor laser partikel (biasanya seharga $10-$30 di eBay/aliexpress)
  • Sensor suhu dan kelembaban DHT11 (opsional)
  • Papan tempat memotong roti
  • Kabel jumper

Langkah 2: Merakit Bagian

Merakit Bagian
Merakit Bagian

Pertama, Anda perlu memasang pelindung ethernet di Arduino

Sensor PM memiliki banyak kabel, tetapi yang kita butuhkan adalah VCC, GND, TX, RX.

Hubungkan VCC dan GND ke + dan - masing-masing pada papan tempat memotong roti.

Arduino memiliki pin RX dan TX perangkat keras, tetapi kami akan menggunakan emulasi perangkat lunak untuk pin RX dan TX masing-masing pada pin 2 dan 3. Pasang RX sensor ke TX Arduino dan TX sensor ke RX Arduino.

Jika Anda akan menggunakan sensor suhu, pasang jalur VCC dan GND ke + dan - di Breadboard dan jalur data ke pin 7.

Langkah 3: Kode

Anda dapat menginstal broker MQTT di raspberry pi atau komputer yang selalu Anda gunakan di rumah, atau menggunakan layanan cloud MQTT, seperti Cloud MQTT. Kemudian Anda dapat menulis skrip yang mengirimkan data sebagai HTTP ke webhook IFTT, karena skrip tersebut belum mendukung webhook MQTT dan mengatur pemberitahuan ketika tingkat debu di rumah Anda terlalu tinggi.

Stasiun udara Arduino

#termasuk

#termasuk
#termasuk
#termasuk
#termasuk
#termasuk

#termasuk

#termasuk
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPaddress ip(169, 169, 100, 98);
byte mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
mqtt_port konstan = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Koneksi klien tidak boleh memiliki nama koneksi yang sama
EthernetClient ethClient;
Klien PubSubClient(ethClient);
Perangkat LunakSerial pmSerial(RX_PIN, TX_PIN);
dht dht;
int pm1;
int pm2_5;
int pm10;
id panjang yang tidak ditandatangani;
//File sayaFile;
string s;
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
voidsetup() {
Serial.begin(57600);
pmSerial.begin(9600);
nomor = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
jika (Ethernet.begin(mac) == 0)
{
Serial.println("Gagal mengkonfigurasi Ethernet menggunakan DHCP");
// coba dengan ip addr
Ethernet.begin(mac, ip);
}
client.setServer(mqtt_server, mqtt_port);
client.setCallback(panggilan balik);
penundaan(2000);
Serial.println(Ethernet.localIP());
client.connect("arduinoClient", mqtt_user, mqtt_pass);
Serial.print("rc=");
Serial.print(klien.status());
Serial.print("\n");
}
batal () {
indeks = 0;
nilai karakter;
nilai sebelumnya char;
jika (!klien.terhubung())
{
if (klien.koneksi("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println("terhubung");
}
}
while (pmSerial.available()) {
nilai = pmSerial.read();
if ((indeks == 0 && nilai != 0x42) || (indeks == 1 && nilai != 0x4d)) {
Serial.println("Tidak dapat menemukan header data.");
kembali;
}
if (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) {
nilai sebelumnya = nilai;
}
elseif (indeks == 5) {
pm1 = 256 * nilai sebelumnya + nilai;
root["pm1"] = abs(pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * nilai sebelumnya + nilai;
root["pm2_5"] = abs(pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * nilai sebelumnya + nilai;
root["pm10"] = abs(pm10);
}
elseif (indeks >15) {
merusak;
}
indeks++;
}
while (pmSerial.available()) pmSerial.read();
int chk = DHT.read11(DHT11_PIN);
if (DHT.suhu == -999 || DHT.kelembaban == -999) {
root["suhu"] = "T/A";
root["kelembaban"] = "T/A";
} lain {
root["suhu"] = DHT.suhu;
root["kelembaban"] = DHT.kelembaban;
}
kirimHasil();
identitas++;
penundaan(5000);
}
voidsendResults() {
// publikasikan ke MQTT
char jsonChar[100];
root.printTo(jsonChar);
Serial.println(client.publish("arduino", jsonChar));
// debug ke serial
root.printTo(Serial);
Serial.print('\n');
}
// Menangani pesan yang tiba pada topik yang dilanggan
voidcallback(char* topic, byte* payload, unsignedint length) {
}

lihat rawair_quality.ino dihosting dengan ❤ oleh GitHub

Langkah 4: Merakit Kotak

Merakit Kotak
Merakit Kotak
Merakit Kotak
Merakit Kotak
Merakit Kotak
Merakit Kotak

Saya hanya menggunakan kotak yang tergeletak di sekitar dan mengebor lubang untuk sensor untuk mendapatkan udara dari dan memotong lubang untuk kabel keluar (meskipun agak terlalu besar).

Saya menggunakan bantalan lem untuk menempelkan sensor ke kotak, menyelaraskan lubang input sensor dengan lubang bor di kotak.

Akhirnya, saya mencolokkan ethernet dan kabel listrik.

Direkomendasikan: