Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Objektivi ynë këtë herë është të krijojmë një program që do të lexojë temperaturën e ambientit të çdo objekti që tregon drejt sensorit tonë. Për ta bërë këtë, ne do të përdorim në këtë projekt një nyje ESP8266MCU, një sensor infra të kuqe MLX90614 dhe një ekran OLED 96 , i cili do të shfaqë të dhënat e temperaturës.
Hapi 1: WiFi ESP8266 NodeMcu ESP-12E
Hapi 2: Sensori me rreze infra të kuqe
Sensori infra të kuqe MLX90614 i përdorur në këtë konfigurim është në fakt një lloj kamere. Ai kap imazhe përmes CCD (Pajisja e ngarkuar e shoqëruar), një sistem shumë i ngjashëm me atë të përdorur në kamerat dixhitale. Kështu, ajo regjistron sasinë e infra të kuqe që del nga objekti, dhe me këtë sasi, ajo llogarit temperaturën. Veryshtë shumë e saktë.
Hapi 3: Shfaqni OLED
Hapi 4: Asambleja
Kjo është një skemë shumë e thjeshtë. Unë kam një tabelë këtu që lejon vizualizim të lehtë.
ESP8266 - OLEDD5 - SCL
D7 - SDA
D3 - BRE
D4 - DC
D8 - CS
3, 3v - KQV
GND - GND
MLX90614
D1 - SCL
D2 - SDA
3, 3v - KQV
GND - GND
Hapi 5: Bibliotekat
Për të përdorur ekranin OLED, shtoni bibliotekën e mëposhtme "Adafruit-GFX-Library-master".
Thjesht hyni në "Skiconi >> Përfshi Bibliotekat >> Menaxhoni Bibliotekat …"
Gjithashtu, shtoni bibliotekën e mëposhtme "Adafruit Unified Sensor".
Lidhjet e shkarkimit për bibliotekat janë në PDF, të disponueshme vetëm më poshtë.
Hapi 6: Kodi Burimor
Ne do të fillojmë duke përcaktuar bibliotekat dhe konstantet që do të përdorim gjatë kodit tonë.
#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 #define cs D8 #define rst D3 #define dc D4 // definoni das cores que serão përdorime 2 #përcaktoni POS_Y_OBJETO 55 #përcaktoni POS_X_TITULO 10 #përcaktoni POS_Y_TITULO 4 // konstruktor për të përcaktuar komunikimin ose shfaqjen OLED Adafruit_SSD1331 = Adafruit_SSD1331 (cs, dc, mosi, sclk, rs // objeto respondável pela comunicação com o sensor infravermelho IRTherm sensor; // variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; float tempObjeto;
Konfigurimi
Në funksionin setup (), ne do të inicializojmë objektin tonë të komunikimit me sensorin, si dhe objektin e komunikimit me ekranin. Këtu janë disa cilësime për secilën prej tyre.
void setup () {// Inicializa sensor de temperatura infravermelho sensor.begin (); // Seleciona temperatura em Celsius sensor.setUnit (TEMP_C); // podemos ainda utilizar TEMP_F para Fahrenheit // ou TEMP_K para Kelvin // inicializa ose objekte para comunicarmos com ose ekran OLED display.begin (); // pinta a tela toda de preto display.fillScreen (BLACK); // konfigurimi i plotë i tekstit që shfaqet në ekranin tuaj.setTextSize (0); // konfiguroni a cor branca para o texto display.setTextColor (E BARDH); // os comandos abaixo posicionam ose kursorin nr (x, y) deshironi për të gjetur një përshkrim të ekranit.setCursor (POS_X_TITULO, POS_Y_TITULO); ekran.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}
Lak
Në funksionin loop (), le të lexojmë të dhënat e sensorit, dhe pastaj t'i shfaqim ato në ekranin OLED.
// chamamos o método "read" do sensor para realizar a leitura da temperatura // lexo retornará 1 rast për të kuptuar një leitura, ose 0 rastet nëse (sensor.read ()) {// recupera a leitura da temperatura do ambiente tempAmbiente = sensor.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, ZI); display.fillRect (POS_X_OBJETO+35, POS_Y_OBJETO, 35, 10, ZI); // poziciona ose kursori dhe ruajtja e ekranit të temperaturës së ambientit. setCursor (POS_X_AMBIENTE+35, POS_Y_AMBIENTE); ekran.print (tempAmbiente); ekran.print ((char) 247); // simbolo de graus // poziciona ose kursori dhe ruajtja e një temperature dhe objektivi që mund të përcaktojë sensorin që shfaqet. setCursor (POS_X_OBJETO+35, POS_Y_OBJETO); ekran.print (tempObjeto); ekran.print ((char) 247); // simbolo de graus} vonesë (1000); // intervalo 1 segundo para a próxima leitura}