Sadržaj:

Infracrveni senzor s ESP8266: 6 koraka
Infracrveni senzor s ESP8266: 6 koraka

Video: Infracrveni senzor s ESP8266: 6 koraka

Video: Infracrveni senzor s ESP8266: 6 koraka
Video: Терморегулятор c Удаленным Управлением 📈 на ESP8266. Часть 1 2024, Srpanj
Anonim
Image
Image
WiFi ESP8266 NodeMcu ESP-12E
WiFi ESP8266 NodeMcu ESP-12E

Naš je cilj ovaj put stvoriti program koji će očitavati temperaturu okoline bilo kojeg objekta usmjerenog prema našem senzoru. Da bismo to učinili, u ovom ćemo projektu koristiti čvor ESP8266 čvorMCU, infracrveni senzor MLX90614 i OLED zaslon od 96 koji će prikazati podatke o temperaturi.

Korak 1: WiFi ESP8266 NodeMcu ESP-12E

Korak 2: Infracrveni senzor

Infracrveni senzor
Infracrveni senzor

Infracrveni senzor MLX90614 koji se koristi u ovom postavljanju zapravo je vrsta kamkordera. Snima slike putem CCD -a (Charged Coupled Device), sustava vrlo sličnog onom koji se koristi u digitalnim fotoaparatima. Tako bilježi količinu infracrvene veze koja izlazi iz objekta i s tom količinom izračunava temperaturu. Vrlo je precizno.

Korak 3: Prikažite OLED

OLED zaslon
OLED zaslon

Korak 4: Montaža

Skupština
Skupština

Ovo je vrlo jednostavna shema. Ovdje imam stol koji omogućuje laku vizualizaciju.

ESP8266 - OLEDD5 - SCL

D7 - SDA

D3 - RES

D4 - istosmjerni

D8 - CS

3, 3v - VCC

GND - GND

MLX90614

D1 - SCL

D2 - SDA

3, 3v - VCC

GND - GND

Korak 5: Knjižnice

Knjižnice
Knjižnice
Knjižnice
Knjižnice

Za korištenje OLED zaslona dodajte sljedeću biblioteku "Adafruit-GFX-Library-master".

Jednostavno pristupite "Sketch >> Include Libraries >> Manage Libraries …"

Također dodajte sljedeću biblioteku "Adafruit Unified Sensor".

Veze za preuzimanje knjižnica nalaze se u PDF -u, dostupne ispod.

Korak 6: Izvorni kod

Počet ćemo definiranjem knjižnica i konstanti koje ćemo koristiti tijekom našeg koda.

#include // Biblioteca para I2C #include // Biblioteca para comunicação com o sensor #include // Biblioteca para propriedades gráficas #include // Biblioteca para comunicação com dipsplay OLED // pinagem para o NodeMCU ESP8266 #define sclk D5 # #define cs D8 #define rst D3 #define dc D4 // definição das cores que serão utilizadas #define BLACK 0x0000 #define WHITE 0xFFFF // definição da coordenada onde escreveremos cada um dos dados #define POS_EZ_BAM_POSEBENOST_POSTAVI 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // konstruktor do objeto para comunicar com o display OLED Adafruit_SSD1331 display = Adafruit_SSD1331 (cs, dc, mosi, sclk, rst) // objeto responsável pela comunicação com o sensor infravermelho IRTherm senzor; // variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; float tempObjeto;

Postaviti

U funkciji setup () inicijalizirat ćemo naš objekt komunikacije sa senzorom, kao i objekt komunikacije s zaslonom. Evo nekoliko postavki za svaku od njih.

void setup () {// Inicializacijski senzor za temperaturu infravermelho sensor.begin (); // Odabir temperature em Celsius sensor.setUnit (TEMP_C); // podešava se ainda iskorištavanje TEMP_F za Fahrenheit // ou TEMP_K za Kelvin // inicijalizacija o objektu za komunikaciju s prikazom OLED display.begin (); // pinta a tela toda de preto display.fillScreen (BLACK); // konfiguracija o tamnaho do texto que escreveremos em tela display.setTextSize (0); // konfiguriranje a cor branca para ili texto display.setTextColor (BIJELO); // os comandos abaixo pozicionam o cursor no (x, y) desejado para a seguir escrevermos em tela display.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}

Petlja

U funkciji loop () pročitajmo podatke senzora, a zatim ih prikažimo na OLED zaslonu.

// chamamos o método "read" do sensor para realizar a leitura da temperature // read retornará 1 caso consiga realizar a leitura, ou 0 caso contrário if (sensor.read ()) {// recupera a leitura da temperature do ambiente tempAmbiente = senzor.ambient (); // recupera a leitura da temperatura do objeto apontado pelo sensor tempObjeto = sensor.object (); // limpa a área onde colocamos o valor da temperatura do ambiente e do objeto display.fillRect (POS_X_AMBIENTE+35, POS_Y_AMBIENTE, 35, 10, BLACK); display.fillRect (POS_X_OBJETO+35, POS_Y_OBJETO, 35, 10, CRNO); // pozicioniranje kursora ili podizanje temperature ambiente display.setCursor (POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print (tempAmbiente); display.print ((char) 247); // simbolo de graus // pozicija kursora ili escreve temperature do objeto que o senzoru está apontando display.setCursor (POS_X_OBJETO+35, POS_Y_OBJETO); display.print (tempObjeto); display.print ((char) 247); // simbolo de graus} kašnjenje (1000); // intervalo de 1 segundo para a próxima leitura}

Preporučeni: