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

Air Surfer

Komponen dan persediaan

Arduino Mega 2560
× 1
Modul tft 3,2 inci untuk Mega 2560
× 1
Penyelidikan suhu
× 1
Sensor Kelembaban dan Suhu Adafruit
× 1
sensor CO2 mh-z19
× 1
modul RTC
× 1
regulator tegangan yang dapat disesuaikan
× 1
steker penerbangan L89 G12
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Sebagai seorang insinyur sipil, saya sangat menyadari bagaimana sistem ventilasi harus bekerja di rumah. Jadi untuk mengukur kualitas udara di apartemen saya, saya membeli monitor CO2 dan saya sangat menyukainya karena tidak hanya menunjukkan kadar CO2 tetapi juga suhu ruangan.

Namun, ini tidak cukup bagi saya. Saya ingin mengukur lebih banyak parameter, jadi saya mencari perangkat yang sesuai. Saya menemukan beberapa yang sangat mahal, jadi saya memutuskan untuk membuatnya sendiri.

Saat itu saya sudah memiliki pengalaman memprogram pengontrol arduino untuk stasiun pompa dengan katup solenoid yang mengontrol cabang pipa yang berbeda.

Saya membuat proyek di atas kertas dan kemudian memesan alat dan sensor yang diperlukan.

Basis

Saya ingin memiliki layar besar minimal 10 inci, tetapi itu akan mengosongkan kantong saya dengan sangat cepat. Saya memutuskan untuk bersikap realistis dan memilih Arduino Mega 2560 R3 dengan layar tft 3.2 420x380. Pengaturan ini membutuhkan kabel minimum karena layar terhubung langsung ke papan arduino.

Sayangnya, tampilan yang saya pesan dari Aliexpress sangat murah sehingga tidak berfungsi dengan baik. Ada titik-titik putih kecil muncul dengan waktu dan warna terbalik. Saya mencoba perpustakaan yang berbeda dan pengontrol yang berbeda tetapi tidak membantu. Jadi saya menyesuaikan warna dalam kode dan menambahkan penyegaran layar pada pukul 12.00 dan 12.00.

Sensor

Bagian paling mahal dari proyek ini adalah sensor CO2 mh-z19. Ini relatif murah di antara sensor CO2 lainnya sambil memberikan pengukuran yang andal dan fungsi kalibrasi otomatis.

Dan sementara modul lain relatif mudah dipasang, sensor ini tidak memiliki banyak info di lembar datanya, jadi saya mencari kode di forum dan menggabungkan semua informasi. Alhasil, kini semuanya bekerja sempurna dan bahkan lebih baik dari sensor sebelumnya.

Namun, butuh 24 jam untuk mengkalibrasi dirinya sendiri, jadi pada awalnya pembacaannya tidak konsisten. Kalibrasi otomatis sederhana. Ketika saya meninggalkan apartemen saya tidak ada orang yang mengkonsumsi oksigen, sehingga tingkat CO2 turun ke tingkat luar, yaitu 400ppm. Jika pembacaan berada di bawah angka ini, sensor dikalibrasi.

Itu dapat berkomunikasi melalui UART dan PWM. Saya memilih yang pertama karena saya pikir itu lebih dapat diandalkan.

Kemudian saya menggunakan sensor suhu dan kelembaban SI7021 untuk pemantauan dalam ruangan yang menggunakan protokol I2C dan terhubung ke pin SDA dan SCL. Tidak mahal, presisi tinggi industri. Saya menyukainya karena saya tidak memiliki masalah sama sekali.

Untuk suhu luar saya menggunakan ds18b20 tertutup dalam kapsul stainless steel. Pembacaan yang murah dan akurat. Namun, ini membutuhkan resistor 4,7k Ohm, jadi jangan lupakan itu. Komunikasi dilakukan melalui 1 kabel.

Untuk saat ini saya membeli modul DS 1307 RTC yang menggunakan I2C.

Kemudian 3 LED untuk kadar CO2. Untuk 400-800ppm adalah LED hijau, untuk 800-1200ppm LED oranye dan untuk 1200ppm - dan di atasnya adalah yang merah.

Plus, 3 tombol stainless steel dengan LED. Yang kiri untuk penyesuaian berjam-jam. Yang tengah untuk menit dan yang kanan untuk mengubah warna teks.

Selain itu, saya memasang fotoresistor untuk menyesuaikan kecerahan LED. Saya tidak ingin mereka bersinar terlalu terang di malam hari.

Kekuatan

Untuk catu daya, saya membuat lubang di bagian bawah dan memasang konektor DC di sana:

Masalahnya adalah saya tidak memiliki sumber catu daya yang sesuai. Saya hanya memiliki adaptor suplai 19v dan 15v sementara voltase yang direkomendasikan untuk Arduino adalah 7-12v. Namun, saya memiliki banyak regulator tegangan DC-DC LM2696 yang dapat disesuaikan.

Saya memasukkannya ke dalam kotak dan menyesuaikannya menjadi 7 volt. Saya menemukan bahwa Arduino saya memanas dengan sangat cepat di bawah 12 volt, jadi saya memilih minimum yang disarankan. Hasilnya, sekarang dapat disuplai dari berbagai sumber listrik.

Untuk sensor suhu luar, saya menggunakan konektor aviator dan kabel telepon.

Kotak

Ini adalah masalah utama bagi saya karena saya tidak memiliki printer 3D. Saya mencoba membuatnya dari tanah liat polimer pada awalnya tetapi bentuknya tidak bertahan dengan baik. Plus, saya membakarnya di oven.

Upaya kedua adalah dengan kayu lapis 6mm. itu sebagian besar baik-baik saja tetapi sulit untuk dipotong. Saya harus menggunakan gergaji listrik dan alat dremel.

Yang terakhir dan paling sukses adalah dari triplek 3mm (yang sulit ditemukan) yang bisa saya potong tanpa peralatan listrik dan hanya menggunakan pisau pemotong kotak dan beberapa amplas. Melapisinya dengan cat akrilik, dan hasilnya, terlihat jauh lebih baik.

Biaya

  • Arduino Mega 2560 R3 - $8,27 (480Rub)
  • Tampilkan TFT 3.2 480x320 - $8 (400Rub)
  • Modul RTC DS1307 - 0,55$ (32Rub)
  • Sensor CO2 mh-z19 - $ 20 (1160Rub)
  • Sensor suhu &kelembaban Si7021 - 2$(118Rub)
  • Sensor suhu DS18b20 dalam kapsul - $ 1,14 (66Rub)
  • Fotoresistor - $1/50 buah (65Rub)
  • LED - $0,67/100 buah (39Rub)
  • Tombol tekan baja tahan karat - $5,07$/3pcs (294Rub)
  • GX12-3 pin steker penerbangan (set) - $ 1,17 (68Rub)
  • Konektor DC 1,25$/10pcs (73Rub)
  • LM2596 DC-DC pengatur tegangan yang dapat disesuaikan - $0,69 (40Rub)
  • Adaptor daya 12v - $ 2,14 (120Rub)
  • Kabel - 1,78$ (100Rub)
  • Kayu lapis 3mm - $ 1,78 (100Rub)

Total 55,51$ (3155 Rub)

Kode

  • Kode peselancar udara
Kode selancar udaraArduino
#include #include "RTClib.h"//#include #include #include #include #include  #include #include #define ONE_WIRE_BUS 9#define GREENLED 5#define YELLOWLED 7#define REDLED 8#define BUTTONLED 11OneWire oneWire(ONE_WIRE_BUS);UT(&FTallasTemperature); myGLCD(CTE32HR, 38, 39, 40, 41); HTU21D myHumidity;RTC_DS1307 rtc; extern uint8_t Ubuntu[]; byte cmd[9] ={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; unsigned char response[9];unsigned int ppm;unsigned lama;int photocellReading;int hourupg;int minupg;float humd;float temp;int tcolor;int Z; // LED brightnessboolean Reset =false; // untuk mengatur ulang tampilan;void lamps(void) { //CO2if (ppm<800){ myGLCD.setColor(255,140,255); //hijau myGLCD.fillCircle(450, 87, 12); analogWrite(LED, Z); analogWrite(KUNING, 0); analogWrite(REDLED, 0); } if (ppm>800 &ppm<1200) { myGLCD.setColor(70,70,255); //Kuning myGLCD.fillCircle(450, 87, 12); analogWrite(LED HIJAU, 0); analogWrite(KUNING, Z); analogWrite(REDLED, 0);} if (ppm>1200){ myGLCD.setColor(VGA_AQUA); myGLCD.fillCircle(450, 87, 12); analogWrite(LED HIJAU, 0); analogWrite(KUNING, 0); analogWrite(REDLED, Z); } //Hum if (humd>30 &humd<50) { myGLCD.setColor(255,140,255); //hijau myGLCD.fillCircle(450, 149, 12); } if (humd>20 &humd<30) { myGLCD.setColor(70,70,255); //Kuning myGLCD.fillCircle(450, 149, 12); } if (humd<20) { myGLCD.setColor(70,70,255); //Kuning myGLCD.fillCircle(450, 149, 12); } if (humd>50 &humd<60) { myGLCD.setColor(70,70,255); //Kuning myGLCD.fillCircle(450, 149, 12); } if (humd>60) { myGLCD.setColor(VGA_AQUA); myGLCD.fillCircle(450, 149, 12); } //Ins Temp if (temp>
20 &temp<27) { myGLCD.setColor(255,140,255); //hijau myGLCD.fillCircle(450, 213, 12); } else {myGLCD.setColor(70,70,255); //YellowmyGLCD.fillCircle(450, 213, 12); } //Tempouts if (sensors.getTempCByIndex(0)<10) {myGLCD.setColor(70,70,255); //YellowmyGLCD.fillCircle(450, 278, 12);} else { myGLCD.setColor(255,140,255); //green myGLCD.fillCircle(450, 278, 12);}}void drawmain(void) {myGLCD.setFont(Ubuntu);if (tcolor==0) myGLCD.setColor(VGA_BLACK);if (tcolor==1) myGLCD.setColor(VGA_SILVER);if (tcolor==2) myGLCD.setColor(250,10,250);if (tcolor==3) myGLCD.setColor(200,100,200);if (tcolor==4) myGLCD.setColor(100,200,200);if (tcolor==5) myGLCD.setColor(10,200,200);if (tcolor==6) myGLCD.setColor(200,200,100);if (tcolor==7) myGLCD.setColor(250,250,10);if (tcolor==8) myGLCD.setColor(10,10,250);if (tcolor==9) myGLCD.setColor(10,250,10);if (tcolor==10) myGLCD.setColor(250,10,10);if (tcolor==11) myGLCD.setColor(VGA_TEAL);if (tcolor==12) myGLCD.setColor(VGA_AQUA); DateTime sekarang =rtc.now(); // Waktu (sekarang.jam()<10) { myGLCD.print("0", 190, 7);myGLCD.printNumI(sekarang.jam(), 215, 7); } else {myGLCD.printNumI(now.hour(), 190, 7); } myGLCD.print(":", 240, 5); if (now.minute()<10) { myGLCD.print("0", 265, 7);myGLCD.printNumI(now.minute(), 290, 7); } else { myGLCD.printNumI(now.minute(), 265, 7); }//myGLCD.setColor(VGA_BLACK);myGLCD.print("CO2", 18, 74); if (ppm> 999){ myGLCD.printNumI(ppm, 250, 74);}else{myGLCD.print(" ", 250, 74);myGLCD.printNumI(ppm, 275, 74);}myGLCD.print(" ppm", 348, 74);myGLCD.print("Humidity", 18, 136);myGLCD.printNumI(humd, 343, 136); //humdmyGLCD.print("%", 398, 136);myGLCD.print("Temp(in)", 18, 200);if (temp>
=0) { if (temp<10) {myGLCD.print( " ", 275, 200);myGLCD.print("+", 300, 200); //tempmyGLCD.printNumF(temp,1, 325, 200);}else{ myGLCD.print("+", 275, 200); //tempmyGLCD.printNumF(temp,1, 300, 200);}}if (temp<0){ if (temp>
-10) { myGLCD.print(" ", 275, 200);myGLCD.printNumF(temp, 1, 300, 200);}else{ myGLCD.printNumF(temp,1, 275, 200);}}myGLCD.print("C", 398, 200);myGLCD.print("Temp(out)", 18 , 265);if (sensors.getTempCByIndex(0)<-100) { myGLCD.print("Empty", 300, 265);}else{if (sensors.getTempCByIndex(0)>=0) { if (sensors. getTempCByIndex(0)<10) {myGLCD.print(" ", 275, 200);myGLCD.print("+", 300, 265);myGLCD.printNumF(sensors.getTempCByIndex(0),1, 325, 265);}else{ myGLCD.print("+", 275, 265));myGLCD.printNumF(sensors.getTempCByIndex(0),1, 300, 265);}}if (sensors.getTempCByIndex(0)<0){ jika (sensors.getTempCByIndex(0)>-10) { myGLCD.print(" ", 275, 200);myGLCD.printNumF(sensors.getTempCByIndex(0),1, 300, 265);}else{ myGLCD.printNumF(sensors .getTempCByIndex(0),1, 275, 265);}}myGLCD.print("C", 398, 265);}} void dateandtime(void) { DateTime now =rtc.now();hourupg=now.hour ();minupg=sekarang.menit(); //penyesuaian waktu if (digitalRead(3) ==LOW) { if (minupg==59) { minupg=0; } else { minupg=minupg+1; } rtc.adjust(DateTime(0,0,0,hourupg,minupg,0)); } if (digitalRead(2) ==RENDAH) { if(hourupg==23) { hourupg=0; } else { hourupg=hourupg+1; } rtc.adjust(DateTime(0,0,0,hourupg,minupg,0)); }}void co2(void) { Serial3.write(cmd, 9); memset(tanggapan, 0, 9); Serial3.readBytes(tanggapan, 9); di aku; byte crc =0; untuk (i =1; i <8; i++) crc+=respon[i]; crc =255 - crc; crc++; if ( !(response[0] ==0xFF &&response[1] ==0x86 &&response[8] ==crc) ) { } else { unsigned int responseHigh =(unsigned int) response[2]; unsigned int responseLow =(unsigned int) response[3]; ppm =(256*responsTinggi) + responRendah; }}void th(void) { humd =myHumidity.readHumidity(); suhu =myHumidity.readTemperature(); sensor.requestTemperatures(); // Kirim perintah untuk mendapatkan pembacaan suhu}void photosensor(void) { photocellReading =analogRead(12); if (membaca fotosel <150) { // Serial.println(" - Gelap"); analogWrite(LED, 5); Z=25; } else if (photocellReading <300) { // Serial.println(" - Dim"); analogWrite(LED, 50); Z=80; } else if (photocellReading <700) { // Serial.println(" - Light"); analogWrite(LED, 100); Z=120; } else if (photocellReading <900) { // Serial.println(" - Bright"); analogWrite(LED, 150); Z=150; } else { // Serial.println(" - Sangat terang"); analogWrite(LED, 200); Z=200; }// Serial.print(photocellReading);}void screenreset(void) { if(((hourupg==0 &&minupg==0) || (hourupg==12 &&minupg==0)) &&Reset==false ) {myGLCD.clrScr();myGLCD.fillScr(VGA_WHITE); //karena warna terbalik pada displaymyGLCD.setBackColor(VGA_WHITE); //karena warna terbalik di displayReset=true;}if((hourupg==0 || hourupg==12)&&minupg>0) { Reset=false; }}pengaturan batal(batal) {myGLCD.InitLCD();myGLCD.clrScr();myGLCD.fillScr(VGA_WHITE); //karena warna terbalik pada displaymyGLCD.setBackColor(VGA_WHITE); //karena warna terbalik di displaySerial3.begin(9600);//Serial.begin(9600); sensor.mulai(); myHumidity.begin(); tcolor=0;rtc.begin();pinMode(GREENLED, OUTPUT);pinMode(YELLOWLED, OUTPUT);pinMode(REDLED, OUTPUT);pinMode(BUTTONLED, OUTPUT);pinMode(2, INPUT_PULLUP);pinMode(3, INPUT_PULLUP); );pinMode(4, INPUT_PULLUP);Z=0;}void loop(void) {co2(); fotosensor();tanggaldanwaktu();th(); if (digitalRead(4) ==RENDAH){ tcolor=tcolor+1; }jika (twarna>=13) twarna=0; drawmain();lamps();screenreset();}

Skema


Proses manufaktur

  1. Cara Mengukur Kualitas Udara di OpenSensors
  2. Detektor Polusi Udara
  3. Kompresor Udara Musim Dingin
  4. Pengantar Aktuator Silinder Udara
  5. Panduan Pemilihan Kompresor Udara Teratas
  6. Pengertian Supercharger pada Mesin Mobil
  7. Memahami sistem pendingin udara mobil
  8. Memahami sistem suspensi udara
  9. Pengertian Sistem Injeksi Udara
  10. Udara =Uang