Mündəricat:

ESP8266 ilə İnfraqırmızı Sensor: 6 addım
ESP8266 ilə İnfraqırmızı Sensor: 6 addım

Video: ESP8266 ilə İnfraqırmızı Sensor: 6 addım

Video: ESP8266 ilə İnfraqırmızı Sensor: 6 addım
Video: Блог. Home Assistant - датчики движения в автоматизациях управления освещением 2024, Iyul
Anonim
Image
Image
WiFi ESP8266 NodeMcu ESP-12E
WiFi ESP8266 NodeMcu ESP-12E

Bu dəfəki məqsədimiz, sensorumuza işarə edən hər hansı bir obyektin ətraf temperaturunu oxuyacaq bir proqram yaratmaqdır. Bunun üçün bu layihədə ESP8266 nodeMCU, MLX90614 infraqırmızı sensoru və temperatur məlumatlarını əks etdirən OLED 96 displeydən istifadə edəcəyik.

Addım 1: WiFi ESP8266 NodeMcu ESP-12E

Addım 2: İnfraqırmızı Sensor

İnfraqırmızı Sensor
İnfraqırmızı Sensor

Bu qurğuda istifadə olunan MLX90614 infraqırmızı sensoru əslində bir videokamera növüdür. Hələ də rəqəmsal kameralarda istifadə olunan sistemə çox oxşayan bir sistem olan CCD (Şarjlı Coupled Device) vasitəsilə şəkillər çəkir. Beləliklə, cisimdən çıxan infraqırmızı miqdarını qeyd edir və bu miqdarla istiliyi hesablayır. Çox dəqiqdir.

Addım 3: OLED ekran

OLED ekran
OLED ekran

Addım 4: Montaj

Məclis
Məclis

Bu çox sadə bir sxemdir. Vizualizasiyanı asanlaşdıran bir masam var.

ESP8266 - OLEDD5 - SCL

D7 - SDA

D3 - RES

D4 - DC

D8 - CS

3, 3v - VCC

GND - GND

MLX90614

D1 - SCL

D2 - SDA

3, 3v - VCC

GND - GND

Addım 5: Kitabxanalar

Kitabxanalar
Kitabxanalar
Kitabxanalar
Kitabxanalar

OLED displeydən istifadə etmək üçün aşağıdakı "Adafruit-GFX-Library-master" kitabxanasını əlavə edin.

Sadəcə "Sketch >> Kitabxanaları Daxil Et >> Kitabxanaları İdarə et …" bölməsinə daxil olun.

Həmçinin, aşağıdakı "Adafruit Unified Sensor" kitabxanasını əlavə edin.

Kitabxanalar üçün yükləmə bağlantıları PDF -də, aşağıda mövcuddur.

Addım 6: Mənbə Kodu

Kodumuz zamanı istifadə edəcəyimiz kitabxanaları və sabitləri təyin etməklə başlayacağıq.

#daxil edin // Biblioteca para I2C #daxil edin // Biblioteca üçün komunicação com o sensor #include // Biblioteca for propriedades gráficas #include // Biblioteca for comunicação com dipsplay OLED // pinagem para o NodeMCu ESP8lk6 #DSP726 #define cs D8 #destine dst 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 #OFEFINEPine_OnFine_Pef_OnefinePOS_XoFine 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // OLED Adafruit_SSD1331 ekran = Adafruit_SSD1331 (cs, dc, rsi, sci, sci; rc) // IRTherm sensoru infravermelho ilə əlaqəli cavablar verir; // hava şəraitinin temperaturu dəyişkəndir; float tempObjeto;

Qurmaq

Setup () funksiyasında, sensorla ünsiyyət obyektimizi, eləcə də ekranla ünsiyyət obyektini işə salacağıq. Burada hər biri üçün bir neçə parametr var.

void setup () {// Temperatura sensoru infravermelho sensor.begin (); // Celsius sensor.setUnit (TEMP_C); // TEMP_F və ya TEMP_K üçün Kelvin // OLED displeyin göstərilməsi üçün məlumatların istifadəsi. // əvvəlcədən göstərilmiş bir ekran. doldurma ekranı (QARA); // konfiqurasiya etmək üçün Display.setTextSize (0); // Display.setTextColor (BEYAZ) mətnləri ilə bağlı konfiqurasiya; // heç bir (x, y) imleci yoxlanılmadıqda, ekran görüntüsünü göstərin.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}

Döngə

Loop () funksiyasında sensor məlumatlarını oxuyaq və sonra OLED displeydə göstərək.

// sensorlar üçün temperaturun "oxunması" // oxunması ilə bağlı məlumatların oxunması // oxuduqdan sonra oxuyun, əgər (sensor.read ()) {// ətraf mühit tempAmbiente ilə əlaqəli bir şərtlə = sensor.amient (); // temperatur və temperatur sensoru tempObjeto = sensor.object (); // ekran və ətraf mühitin hər hansı bir hissəsini göstərməyin.fillRect (POS_X_AMBIENTE+35, POS_Y_AMBIENTE, 35, 10, SİYAH); display.fillRect (POS_X_OBJETO+35, POS_Y_OBJETO, 35, 10, SİYAH); // pozision və ya imleci mühit mühitində göstərmək.setCursor (POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print (tempAmbiente); display.print ((char) 247); // simbolo de graus // pozisiona və ya sensora baxmaq üçün bir temperatura baxın.setCursor (POS_X_OBJETO+35, POS_Y_OBJETO); display.print (tempObjeto); display.print ((char) 247); // simbolo de graus} gecikmə (1000); // 1 -ci günün sonuna qədər bir müddət}

Tövsiyə: