Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Bu safargi maqsadimiz - sensorimizga ishora qiladigan har qanday ob'ektning atrof -muhit harorati o'qiladigan dasturni yaratish. Buning uchun biz ushbu loyihada harorat ma'lumotlarini aks ettiruvchi ESP8266 nodeMCU, MLX90614 infraqizil sensori va OLED 96 displeyidan foydalanamiz.
1-qadam: WiFi ESP8266 NodeMcu ESP-12E
2 -qadam: Infraqizil sensor
Ushbu sozlashda ishlatiladigan MLX90614 infraqizil sensori aslida videokameraning bir turi. U tasvirni CCD (zaryadlangan ulangan qurilma) orqali oladi, bu hali raqamli kameralarda ishlatilgan tizimga juda o'xshash. Shunday qilib, u ob'ektdan chiqadigan infraqizil miqdorini qayd qiladi va shu bilan u haroratni hisoblab chiqadi. Bu juda aniq.
3 -qadam: OLED -ni ko'rsatish
4 -qadam: yig'ish
Bu juda oddiy sxema. Menda bu erda vizualizatsiya qilish uchun qulay jadval mavjud.
ESP8266 - OLEDD5 - SCL
D7 - SDA
D3 - RES
D4 - shahar
D8 - CS
3, 3V - VCC
GND - GND
MLX90614
D1 - SCL
D2 - SDA
3, 3V - VCC
GND - GND
5 -qadam: kutubxonalar
OLED displeyidan foydalanish uchun quyidagi "Adafruit-GFX-Library-master" kutubxonasini qo'shing.
"Sketch >> kutubxonalarni qo'shish >> kutubxonalarni boshqarish …" ga kiring.
Shuningdek, quyidagi "Adafruit Unified Sensor" kutubxonasini qo'shing.
Kutubxonalarni yuklab olish havolalari PDF formatida, quyida mavjud.
6 -qadam: Manba kodi
Biz kodni ishlatadigan kutubxonalar va doimiylarni aniqlashdan boshlaymiz.
#include // Biblioteca para I2C #include // Biblioteca for comunicação com o sensor #include // Biblioteca for propriedades gráficas #include // Biblioteca comunicação com dipsplay OLED // pinode to NodeMCu ESP8lk6 DSP #266 #Dsfine cs D8 #define rst D3 #define dc D4 // defineção das cores que serão utilizadas #define BLACK 0x0000 #define WHITE 0xFFFF // defineção da coordenada on escreveremos cada um dos dados #OFFOFIFine_Pef_Pef_OnFine_Pef_OnFine 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // konstruktor OLED Adafruit_SSD1331 displeyi = Adafruit_SSD1331 (cs, dc, rsti, mosi, sci; sc); // IRTherm sensori infraqizil javob berish uchun javob beradi; // o'zgaruvchan vaqt harorati o'zgarganda, tempAmbiente; float tempObjeto;
Sozlash
O'rnatish () funktsiyasida biz sensor bilan aloqa ob'ektini, shuningdek displey bilan aloqa ob'ektini ishga tushiramiz. Bu erda ularning har biri uchun bir nechta sozlamalar mavjud.
void setup () {// Inicializa sensor de temperatura infravermelho sensor.begin (); // Selciona temperatura sensori.setUnit (TEMP_C); // Farengeyt uchun TEMP_F yoki TEMP_K uchun kelgusida // OLED displeyini ko'rsatish uchun boshlang'ich ko'rsatkichlar.begin (); // pinta a tela toda de preto display.fillScreen (Qora); // konfiguratsiya yoki matnli displeyni ko'rsatish.setTextSize (0); // matnni ko'rsatish.setTextColor (WHITE) uchun konfiguratsiya; // hech qanday (x, y) kursor yo'q, shuning uchun displey.setCursor (POS_X_TITULO, POS_Y_TITULO); display.print ("TEMPERATURA"); display.setCursor (POS_X_TITULO+20, POS_Y_TITULO+15); display.print ("("); display.print ((char) 247); // símbolo de graus display.print ("C" ")); display.setCursor (POS_X_AMBIENTE, POS_Y_AMBIENTE); display.print ("AMB:"); // AMBIENTE display.setCursor (POS_X_OBJETO, POS_Y_OBJETO); display.print ("OBJ:"); // OBJETO}
Loop
Loop () funktsiyasida sensor ma'lumotlarini o'qib chiqamiz va keyin ularni OLED displeyda ko'rsatamiz.
// haroratni o'lchash sensori "o'qish" // o'qish kerak bo'lsa, u holda, agar siz sensorli o'qish () o'qilsa, u holda siz o'qishingiz mumkin. = sensor.ambient (); // haroratni o'lchash uchun harorat sensori tempObjeto = sensor.object (); // displey.fillRect (POS_X_AMBIENTE+35, POS_Y_AMBIENTE, 35, 10, QARA); display.fillRect (POS_X_OBJETO+35, POS_Y_OBJETO, 35, 10, QORA); // pozitsion yoki kursor, muhitni ko'rsatish.setCursor (POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print (tempAmbiente); display.print ((char) 247); // simbolo de graus // pozitsion yoki kursor haroratni o'lchash uchun sensorli displey.setCursor (POS_X_OBJETO+35, POS_Y_OBJETO); display.print (tempObjeto); display.print ((char) 247); // simbolo de graus} kechikish (1000); // 1 -sonli vaqt oralig'ida