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

Sensor Kelembaban dan Suhu yang Selesai dengan Indah

Komponen dan persediaan

Arduino UNO
× 1
Adafruit NeoPixel Ring:WS2812 5050 RGB LED
× 1
Sensor Suhu DHT22
× 1
Adafruit 1,44" Layar LCD TFT Berwarna dengan Kartu MicroSD - ST7735R
× 1
Breadboard (generik)
× 1
tempat baterai 4xAA
× 1
Kabel jumper (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Pistol lem panas (generik)

Tentang proyek ini

Kisah Dibalik Proyek Ini

Pelajari bagaimana kami membuat kasing pas kenari dan menggunakan komponen Arduino yang mudah ditemukan untuk membuat monitor kelembaban dan suhu yang stylish dan berguna untuk toko kayu. Proyek DIY ini menampilkan sedikit pengerjaan kayu dengan kenari pas dan elektronik pemula menggunakan Arduino Uno dan beberapa bagian luar biasa dari Adafruit.

Kami tinggal di Texas Tengah di mana kami mendapatkan perubahan besar dalam Kelembaban dan Suhu di Musim Semi, yang dapat menjadi bencana bagi proyek pengerjaan kayu tertentu. Proyek keren ini membantu mengingatkan kita ketika kelembaban berubah atau mulai tinggi sehingga kita dapat mengambil tindakan pencegahan seperti memindahkan proyek kayu kita ke dalam rumah, atau tidak melakukan penggilingan selama cuaca kelembaban tinggi. Itu juga terlihat luar biasa dan memiliki logo manis kami!

Kami baru mengenal Arduino dan Elektronik, jadi kami belajar sambil berjalan saat membuat ini. Kami sangat bersemangat untuk membuat lebih banyak proyek sekarang karena kami tahu betapa mudahnya membuat hal-hal hebat.

Tonton Video Pembuatan Mendetail!

Kode

  • Kode Sensor Toko Kerja Arduino
Kode Sensor Toko Kerja ArduinoArduino
#include #include #include #include #include #include #include  // Ada banyak perpustakaan DHTXX yang dapat Anda temukan online. Semuanya memiliki tingkat fitur yang berbeda-beda.// Menentukan Pin#menentukan TFT_CS 10#menentukan TFT_RST 9#menentukan TFT_DC 8#menentukan DHT_PIN 2#menentukan PIXEL_PIN 6#menentukan PIXEL_NUM 24#menentukan SD_PIN 4#menentukan BMP_BUF saat ini 20 // Warna Global =Variabel 9999; //(Angka sesuai dengan grafik. Lihat di bawah.)LED CRGB[PIXEL_NUM];Adafruit_ST7735 tft =Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);DHT22 dht(DHT_PIN);int loopDelay =2000; //ms// SETUPvoid ​​setup() { Serial.begin(9600); Serial.println("Memulai."); // Mulai DHT dht.begin(); // Inisialisasi Layar LCD tft.initR(INITR_144GREENTAB); // Inisialisasi Kartu SD Serial.print("Inisialisasi kartu SD."); if (!SD.begin(SD_PIN)) { Serial.println("Gagal!"); kembali; } // Atur Latar Belakang Layar menjadi Hitam tft.fillScreen(ST7735_BLACK); // Inisialisasi LED FastLED.addLeds(leds, PIXEL_NUM); // Biarkan semuanya menyusul sebelum memulai loop delay(500);}// LOOPvoid ​​loop() { // Dapatkan Data Sensor dht.readTemperature(); dht.readHumidity(); int f =dht.temperature_F; // Derajat dalam Fahrenheit int h =dht.humidity; // Persentase // Gambar Derajat Ikon tft.fillCircle(102, 42, 6, ST7735_WHITE); tft.fillCircle(102, 42, 4, ST7735_BLACK); // Menggambar Suhu di Layar LCD drawTemperature(f); // Kelembaban setHumidityColors(h); //Mencetak Data ke Serial Monitor Serial.print("Suhu:"); Serial.println(f); Serial.print("Kelembaban :"); Serial.print(h); Serial.println("%"); // Penundaan penundaan(1000); }// Draw Bitmap - Ini untuk Screenvoid LCD bmpDraw(char *nama file, uint8_t x, uint8_t y) { File bmpFile; int lebar bmp, tinggi bmp; // W+H dalam piksel uint8_t bmpDepth; // Kedalaman bit (saat ini harus 24) uint32_t bmpImageoffset; // Mulai dari data gambar dalam file uint32_t rowSize; // Tidak selalu =bmpWidth; mungkin memiliki padding uint8_t sdbuffer[3*BMP_BUF]; // buffer piksel (R+G+B per piksel) uint8_t buffidx =sizeof(sdbuffer); // Posisi saat ini di sdbuffer boolean goodBmp =false; // Setel ke true pada header yang valid parse boolean flip =true; // BMP disimpan dari bawah ke atas int w, h, baris, col; uint8_t r, g, b; uint32_t pos =0, startTime =milis(); if((x>=tft.width()) || (y>=tft.height())) return;// Serial.println();// Serial.print("Memuat Gambar Bitmap:'"); // Serial.print(nama file);// Serial.println('\''); // Buka file yang diminta pada kartu SD if ((bmpFile =SD.open(filename)) ==NULL) { Serial.print("File bitmap tidak ditemukan!"); kembali; } // Parsing header BMP if(read16(bmpFile) ==0x4D42) { read32(bmpFile); (batal) read32(bmpFile); bmpImageoffset =read32(bmpFile); //Serial.println()); read32(berkas bmp); bmpWidth =read32(bmpFile); bmpHeight =read32(bmpFile); if(read16(bmpFile) ==1) { bmpDepth =read16(bmpFile); //Serial.print("Kedalaman Bit:"); if((bmpDepth ==24) &&(read32(bmpFile) ==0)) { goodBmp =true; // Baris BMP diisi (jika diperlukan) hingga batas 4-byte rowSize =(bmpWidth * 3 + 3) &~3; // Jika bmpHeight negatif, gambar dalam urutan top-down. // Ini bukan kanon tetapi telah diamati di alam liar. if(bmpHeight <0) { bmpHeight =-bmpHeight; membalik =salah; } // Pangkas area yang akan dimuat w =bmpWidth; h =tinggi bmp; if((x+w-1)>=tft.width()) w =tft.width() - x; if((y+h-1)>=tft.height()) h =tft.height() - y; // Setel jendela alamat TFT ke batas gambar terpotong tft.setAddrWindow(x, y, x+w-1, y+h-1); for (row=0; row=sizeof(sdbuffer)) { bmpFile.read(sdbuffer, sizeof(sdbuffer)); buffidx =0; } // Konversi piksel dari format BMP ke TFT, tekan ke tampilan b =sdbuffer[buffidx++]; g =sdbuffer[buffidx++]; r =sdbuffer[buffidx++]; tft.pushColor(tft.Color565(r,g,b)); } } } } } bmpFile.close(); if(!goodBmp) Serial.println("Format BMP tidak dikenali.");}// Ini untuk Bitmap/LCD Screenuint16_t read16(File f) { hasil uint16_t; ((uint8_t *)&result)[0] =f.read(); // LSB ((uint8_t *)&hasil)[1] =f.read(); // MSB mengembalikan hasil;}// Ini untuk Bitmap/LCD Screenuint32_t read32(File f) { hasil uint32_t; ((uint8_t *)&result)[0] =f.read(); // LSB ((uint8_t *)&hasil)[1] =f.read(); ((uint8_t *)&result)[2] =f.read(); ((uint8_t *)&result)[3] =f.read(); // MSB mengembalikan hasil;}// Menggambar Suhu pada Layar LCDvoid drawTemperature(int temp) { // Mendapatkan Jumlah Digit dalam Suhu int digits =numDigits(temp); // Tentukan Posisi Kursor untuk Menggambar Bitmap int x1_2 =62; int x2_2 =32; int x1_3 =1; int x2_3 =1; int x3_3 =1; int y =38; karakter angka1[12]; karakter digit2[12]; karakter angka3[12]; karakter digitStr1[24]; karakter digitStr2[24]; karakter digitStr3[24]; // Dapatkan Digit Pertama itoa(temp % 10, digit1,10); //Serial.println(temp % 10); strcpy(digitStr1, ""); strcat(digitStr1, digit1); strcat(digitStr1, ".bmp"); // Dapatkan Digit Kedua if(digit ==2){ itoa((temp / 10) % 10, digit2,10); strcpy(digitStr2, ""); strcat(digitStr2, digit2); strcat(digitStr2, ".bmp"); } // Dapatkan Digit Ketiga if(digit ==3){ itoa((temp / 100) % 10, digit3,10); strcpy(digitStr3, ""); strcat(digitStr3, digit3); strcat(digitStr3, ".bmp"); } if(digit> 2){ bmpDraw(digitStr1,x1_3,y); bmpDraw(digitStr2,x2_3,y); bmpDraw(digitStr3,x3_3,y); } else { bmpDraw(digitStr1,x1_2,y); bmpDraw(digitStr2,x2_2,y); }}// Dapatkan jumlah digit suhu untuk menentukan penempatan pada screenint numDigits(int number){ int valLen =0; if(angka> 99) valLen =3; lain valLen =2; return valLen;}// Atur Warna LEDvoid setColors(int r, int g, int b){ for(int i =0; i   

Suku cadang dan penutup khusus

Skema

Fritzing tidak memiliki sebagian besar komponen yang sebenarnya jadi saya melakukan yang terbaik untuk mewakili aliran hal.

Proses manufaktur

  1. Kerja Sensor Kelembaban dan Aplikasinya
  2. Sensor DHT11 dan Cara Kerjanya
  3. Sensirion:modul multi-gas, kelembaban dan suhu untuk pemurni udara dan aplikasi HVAC
  4. Sensor Suhu Python dan Raspberry Pi
  5. Suhu dan Kelembaban yang Mudah di Raspberry Pi
  6. Sensor Suhu dan Cahaya Raspberry Pi
  7. Aeroponik dengan Raspberry Pi dan sensor kelembapan
  8. Sensor Suhu Raspberry Pi
  9. Cara Memeriksa dan Mengkalibrasi Sensor Kelembaban
  10. Sensor Aliran dan Suhu Lab-On-Chip