Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Naš tokratni cilj je ustvariti program, ki bo prebral temperaturo okolja katerega koli predmeta, usmerjenega proti našemu senzorju. V ta namen bomo v tem projektu uporabili vozlišče ESP8266MCU, infrardeči senzor MLX90614 in 96 -palčni zaslon OLED, ki bo prikazal podatke o temperaturi.
Korak: WiFi ESP8266 NodeMcu ESP-12E
Korak: Infrardeči senzor
Infrardeči senzor MLX90614, uporabljen pri tej nastavitvi, je pravzaprav vrsta videokamere. Zajema slike prek CCD (Charged Coupled Device Device), sistema, ki je zelo podoben tistemu, ki se uporablja v digitalnih fotoaparatih. Tako zabeleži količino infrardeče svetlobe, ki prihaja iz predmeta, in s to količino izračuna temperaturo. Je zelo natančen.
3. korak: Prikažite OLED
4. korak: Montaža
To je zelo preprosta shema. Tukaj imam mizo, ki omogoča enostavno vizualizacijo.
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
5. korak: Knjižnice
Če želite uporabljati zaslon OLED, dodajte naslednjo knjižnico "Adafruit-GFX-Library-master".
Preprosto odprite "Skica >> Vključi knjižnice >> Upravljanje knjižnic …"
Dodajte tudi naslednjo knjižnico "Adafruit Unified Sensor".
Povezave za prenos knjižnic so v PDF -ju, na voljo tik spodaj.
6. korak: izvorna koda
Začeli bomo z opredelitvijo knjižnic in konstant, ki jih bomo uporabljali med kodo.
#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_X_O_BAM_POSEBENO_POSLOVNO 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 responseável pela comunicação com o sensor infravermelho IRTherm sensor; // variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; float tempObjeto;
Nastaviti
V funkciji setup () bomo inicializirali naš objekt komunikacije s senzorjem, pa tudi objekt komunikacije s prikazom. Tu je nekaj nastavitev za vsakega od njih.
void setup () {// Inicializacijski senzor za temperaturo infravermelho sensor.begin (); // Izbira temperature po Celzijevem senzorju.setUnit (TEMP_C); // nastavimo ali izkoristimo TEMP_F po Fahrenheitu // ou TEMP_K po Kelvinu // inicializiramo objekte za komunikacijo z zaslonom OLED display.begin (); // pinta a tela toda de preto display.fillScreen (BLACK); // konfiguracija o tem, da besedilo ni prikazano na zaslonu.setTextSize (0); // konfiguriramo cor branca za ali texto display.setTextColor (BELO); // os comandos abaixo posicionam 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}
Zanka
V funkciji loop () preberemo podatke senzorja in jih nato prikažemo na zaslonu OLED.
// 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 = sensor.ambient (); // recupera a leitura da temperature do objeto apontado pelo sensor tempObjeto = sensor.object (); // limpa a área onde colocamos o valor da temperatura do ambiente in 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, ČRNO); // pozicioniranje kurzorja in dvig temperature ambiente display.setCursor (POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print (tempAmbiente); display.print ((char) 247); // simbolo de graus // pozicioniranje kurzorja in povišanje temperature do cilja na senzor está apontando display.setCursor (POS_X_OBJETO+35, POS_Y_OBJETO); display.print (tempObjeto); display.print ((char) 247); // simbolo de graus} zakasnitev (1000); // intervalo de 1 segundo para a próxima leitura}