Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Mengukur Tingkat CO2 alias Pengganda Kantuk

Komponen dan persediaan

WiFi Andium Anduino
× 1
Arduino Due
× 1
sensor co2
× 1

Aplikasi dan layanan online

Arduino IDE
Adafruit IO

Tentang proyek ini

Motivasi

Pernahkah Anda berjuang untuk melewati pertemuan sore? Tidak bisa berhenti menguap? Tidur melalui kuliah 3 jam Anda? Tidak, saya tidak menjual suplemen energi. Anda mungkin tidak cukup tidur tadi malam, kebanyakan dari kita tidak. Tapi, rasa kantuk Anda mungkin bukan sepenuhnya salah Anda! Ventilasi yang buruk dan kadar karbon dioksida yang tinggi dapat menyebabkan Anda merasa mengantuk!

Dengan menggunakan sensor NDIR CO2 ini, Anda dapat mengukur level CO2 secara akurat dan membaca nilainya menggunakan antarmuka serial UART yang sederhana. Sensor CO2 konvensional digunakan untuk menarik banyak daya dan membutuhkan waktu untuk menghangatkan lampu sebelum siap untuk membaca. Sekarang dengan menggunakan LED dan detektor inframerah, Anda dapat mengukur gas secara akurat menggunakan sensor 3,3v ini yang menarik rata-rata kurang dari 1,5ma. Ini menggunakan dispersi optik dan beberapa sihir lainnya, lihat lembar data Cozir untuk beberapa detail lebih lanjut, sangat mengesankan.

Memulai

Benar, jadi apa yang saya perlukan untuk mulai mengukur 'faktor ngantuk' dari bilik kantor saya?

  • Arduino Due or Zero
  • Perisai AnduinoWiFi
  • Sensor Cozir CO2
  • Beberapa jumper untuk menghubungkan dan menyalakan sensor.

Koneksi untuk yang satu ini sederhana, sensornya memiliki 10 pin tetapi Anda hanya perlu memasang kabel 4.

Menggunakan Due sambungkan 3.3v ke 3V3, GND ke Ground, Rx(DIO19) ke Tx, dan Tx(DIO18) ke Rx. Pastikan Anda telah "melewati" kabel UART dan ingat Anda tidak dapat menggunakan Tx(DIO1) dan Rx(DIO0) kecuali jika Anda tidak ingin menggunakan istilah serial untuk memantau pembacaan Anda. Saya telah menggunakan Serial1 untuk sensornya meskipun Anda dapat menggunakan salah satu dari tiga UART yang tersisa.

** Jika Anda ingin melewati Arduino untuk saat ini dan menguji perintah pengiriman langsung ke sensor, cukup buka dempul atau istilah serial favorit Anda dan sambungkan pada 9600 baud, 8bit, tanpa paritas, 1 stop bit. Anda mungkin perlu mengaktifkan pengiriman '/r/n' pada setiap pengiriman ascii.**

***Sensor ini 3.3v TTL jadi pastikan untuk menggunakan pemindah logika jika com berasal dari sumber 5v***

Mengkalibrasi sensor

Ada beberapa cara untuk mengkalibrasi sensor CO2. Salah satu cara terbaik adalah menjenuhkan sensor dalam gas yang diketahui (Nitrogen) yang tidak mengandung Karbon Dioksida. Ini akan menghasilkan pembacaan nol yang diketahui. Jika Anda tidak memiliki Nitrogen di sekitar Anda, Anda juga dapat mengkalibrasi dengan cukup akurat menggunakan udara segar. Jadi ambil kacamata hitammu, kita akan melakukan kunjungan lapangan.

Saat Anda berada di luar, Anda akan ingin menjalankan contoh sketsa di bawah ini dan batalkan komentar

 kalibrasiFreshAir();  

dalam rutinitas Setup(). Ini mengirimkan perintah 'G' melalui serial ke sensor yang meminta...

kalibrasi! Sekarang ini tidak sempurna, karena saya tidak tahu persis seperti apa kondisi konsentrasi CO2 saat ini sebenarnya di lantai 14 di sini di NYC (mungkin sedikit lebih tinggi di sini daripada rata-rata "Bumi" di Hawaii). Tetapi karena ambang batas kami untuk benar-benar merasakan perbedaan secara fisik di lingkungan adalah dalam 1.000 ppm, saya pikir kami cukup aman untuk menggunakan pembacaan udara segar 450ppm ini sebagai titik kalibrasi kami untuk mengukur ruang konferensi dan ruang kelas kami.

char buffer[20] ={0}; intc =0; void setup() { Serial.begin(9600); while(!Serial){}; Serial1.begin(9600); while(!Serial){}; Serial.println("Mulai membaca Kadar CO2"); //setOperatingMode(CZR_STREAMING); //setOperatingMode(CZR_POLLING); //kalibrasiFreshAir(); } void loop() { delay(10000); c =Permintaan("Z"); Serial.print("CO2 :");Serial.println(c); Serial.println(""); } int Permintaan(char* s) { buffer[0] ='\0'; int idx =0; Perintah; penundaan (250); while(Serial1.available()) { buffer[idx++] =Serial1.read(); } penyangga[idx] ='\0'; uint16_t rv =0; switch(buffer[1]) { case 'T' :rv =atoi(&buffer[5]); if (penyangga[4] ==1) rv +=1000; merusak; default :rv =atoi(&buffer[2]); merusak; } kembalikan rv; } void Command(char* s) { Serial1.print(s); Serial1.print("\r\n"); } uint16_t kalibrasiFreshAir() { kembali Permintaan("G"); } void setOperatingMode(mode uint8_t) { sprintf(buffer, "K %u", mode); Perintah (penyangga); }  

Perhatikan juga dua pernyataan #define di bagian atas sketsa. Saat pertama kali membuka kotak sensor, Anda mungkin perlu mengonfigurasinya menggunakan setOperatingMode(). Sketsa ini dirancang untuk bekerja dalam mode polling. Jika Anda telah berhasil mengkalibrasi dan membaca level CO2 ke terminal, Anda siap untuk melanjutkan untuk memublikasikannya ke cloud. Mari terhubung ke Adafruit IO dan mulai memvisualisasikan data.

Memublikasikan metrik CO2 ke cloud

Jika Anda belum terhubung ke Adafruit IO menggunakan anduinoWiFi, lihat artikel proyek ini yang akan dimulai. Ini mencakup semua detail yang akan saya bahas di sini. Berikut sketsa untuk membantu Anda mulai memublikasikan tingkat CO2 Anda setiap menit.

#include  #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // Parameter WiFi #define WLAN_SSID "YOUR_SSID" #define WLAN_PASS "YOUR_PASSWD" // Adafruit IO #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "YOUR_AIO_USERNAME" #define AIO_KEY "YOUR_AIO_KEY" klien WiFiClient; Adafruit_MQTT_Client mqtt(&klien, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); /****************************** Umpan ****************** *********************/ // Setup feed untuk co2 Adafruit_MQTT_Publish carbonDioxide =Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/co2"); /*Buat instance AnduinoLCD */ AnduinoLCD LCD =AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, 13); statis int co2 =0; static int co2Prev =0; #define CZR_STREAMING 0x01 #define CZR_POLLING 0x02 buffer karakter[20] ={0}; void setup() { Serial.begin(115200); penundaan(3000); Serial1.begin(9600); //Hubungkan ke WiFi &Adafruit.IO connectToWiFi(); connectToAdafruit(); //Inisialisasi LCD LCD.begin(); LCDinit(); //Kalibrasi CO2 dan pengaturan awal //setOperatingMode(CZR_STREAMING); //setOperatingMode(CZR_POLLING); //kalibrasiFreshAir(); } void loop() { // ping adafruit io beberapa kali untuk memastikan kita tetap terhubung if(! mqtt.ping(3)) { // sambungkan kembali ke adafruit io if(! mqtt.connected()) connect(); } // Ambil pembacaan co2 saat ini co2 =Request("Z"); //konversi int temp ke char array char b[20]; string str; str=String(co2); for(int i=0; i=0) mqtt.disconnect(); Serial.println(F("Mencoba lagi koneksi...")); penundaan(5000); } Serial.println(F("Adafruit IO Terhubung!")); } void displayCo2(int co2, int co2Prev) { //menghapus nilai LCD.setTextColor(ST7735_BLACK); LCD.setTextSize(2); LCD.setTextWrap(benar); LCD.setCursor(40,60); LCD.setTextSize(3); LCD.print(co2Prev); LCD.setTextSize(1); LCD.print("ppm"); //Cetak nilai baru LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(benar); LCD.setCursor(40,60); LCD.setTextSize(3); LCD.print(co2); LCD.setTextSize(1); LCD.print("ppm"); } void connectToWiFi() { // Hubungkan ke titik akses WiFi. penundaan (10); Serial.print(F("Menghubungkan ke ")); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); while (WiFi.status() !=WL_CONNECTED) { delay(500); Serial.print(F(".")); } Serial.println(F("WiFi terhubung!")); } void connectToAdafruit() { // sambungkan ke adafruit io connect(); } void LCDinit() { LCD.setBacklight(ON); LCD.fillScreen(ST7735_BLACK); //membersihkan layar LCD.showBanner(); //muat Andium Banner LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(benar); LCD.setCursor(0,40); LCD.print("CO2:"); } uint16_t Permintaan(char* s) { buffer[0] ='\0'; int idx =0; //kirim permintaan perintah 'Z' untuk CO2 Command(s); penundaan (250); while(Serial1.available()) { buffer[idx++] =Serial1.read(); } penyangga[idx] ='\0'; uint16_t rv =0; rv =atoi(&penyangga [2]); kembali rv; } void Command(char* s) { Serial1.print(s); Serial1.print("\r\n"); } uint16_t kalibrasiFreshAir() { kembali Permintaan("G"); } void setOperatingMode(mode uint8_t) { sprintf(buffer, "K %u", mode); Perintah (penyangga); }  

Itu dia!

Benda ini sangat sensitif, Anda hampir dapat melacak tingkat hunian kamar berdasarkan konsentrasi CO2 bahkan di ruangan yang berventilasi baik. Saatnya membuktikan kepada profesor Anda bahwa bukan 'diff eq' yang membuat Anda kecewa, melainkan ventilasi yang buruk! Saatnya pindah kelas ke pantai!

Kode

Anduino
Perpustakaan Arduino untuk perisai Andium(Anduino). Ubah Arduino Anda menjadi AndiumNode.https://github.com/andium/Anduino

Proses manufaktur

  1. Sensirion:sensor CO2 mini
  2. Integrasi Data Sensor dengan Mikroprosesor Raspberry Pi
  3. Meretas Lego EV3:Bangun Sensor Objek Anda Sendiri "Mata"
  4. Cara menghubungkan Sensor Ultrasonik Lego Mindstorms NXT ke Raspberry Pi
  5. HC-SR04 Ultrasonic Range Sensor pada Raspberry Pi
  6. Menggunakan Sensor Radar Berdenyut A111 dengan Raspberry Pi
  7. Meningkatkan Tingkat Layanan Pelanggan di Rak
  8. Kekuatan Nirkabel RF Melepaskan Keanekaragaman Jaringan Sensor
  9. 5 W dari Sensor RapidPlex SARS-CoV-2
  10. Apa tingkat pemeliharaan industri?