Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šį kartą mūsų tikslas yra sukurti programą, kuri nuskaitytų bet kurio objekto, nukreipto į mūsų jutiklį, aplinkos temperatūrą. Norėdami tai padaryti, šiame projekte naudosime ESP8266 nodeMCU, MLX90614 infraraudonųjų spindulių jutiklį ir OLED 96 colių ekraną, kuriame bus rodomi temperatūros duomenys.
1 veiksmas: „WiFi ESP8266 NodeMcu ESP-12E“
2 žingsnis: infraraudonųjų spindulių jutiklis
Šioje sąrankoje naudojamas infraraudonųjų spindulių jutiklis MLX90614 iš tikrųjų yra vaizdo kameros tipas. Jis fiksuoja vaizdus per CCD („Charged Coupled Device“) - sistemą, labai panašią į tą, kuri naudojama skaitmeniniuose fotoaparatuose. Taigi jis registruoja iš objekto sklindančio infraraudonųjų spindulių kiekį ir su šiuo kiekiu apskaičiuoja temperatūrą. Tai labai tikslu.
3 veiksmas: rodyti OLED
4 žingsnis: Surinkimas
Tai labai paprasta schema. Čia turiu lentelę, kuri leidžia lengvai vizualizuoti.
ESP8266 - OLEDD5 - SCL
D7 - SDA
D3 - RES
D4 - nuolatinė srovė
D8 - CS
3, 3v - VCC
GND - GND
MLX90614
D1 - SCL
D2 - SDA
3, 3v - VCC
GND - GND
5 žingsnis: bibliotekos
Jei norite naudoti OLED ekraną, pridėkite šią biblioteką „Adafruit-GFX-Library-master“.
Tiesiog eikite į „Eskizas >> Įtraukti bibliotekas >> Tvarkyti bibliotekas …“
Taip pat pridėkite šią biblioteką „Adafruit Unified Sensor“.
Bibliotekų atsisiuntimo nuorodos yra PDF formatu, kurį rasite žemiau.
6 žingsnis: šaltinio kodas
Pradėsime apibrėždami bibliotekas ir konstantas, kurias naudosime savo kodo metu.
#include // Biblioteca para I2C #include // Biblioteca para comunicaçã com com sensor #define cs D8 #define rst D3 #define DC DC 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // construtor do objeto para comunicar com o display OLED Adafruit_SSD1331 display = Adafruit_SSD1331 (cs, dc, mosi, sclk, rst) // atsakymas į atsakymą pela comunicação com o jutiklio infravermelho IRTherm sensor; // variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; plūdės tempObjeto;
Sąranka
Funkcijoje setup () inicijuosime savo ryšio su jutikliu objektą ir ryšio su ekranu objektą. Štai keletas kiekvieno iš jų nustatymų.
void setup () {// Inicializa sensor de temperatura infravermelho sensor.begin (); // Pasirinkta temperatūra pagal Celsijaus jutiklį. // pinta a tela toda de preto display.fillScreen (BLACK); // configura o tamnaho do texto que escreveremos em tela display.setTextSize (0); // sukonfigūruoti tekstinį ekraną. setTextColor (BALTA); // 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); // grafinis ekranas.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}
Kilpa
Naudodami funkciją loop (), perskaitykime jutiklio duomenis ir parodykime juos OLED ekrane.
// chamamos o método "read" do sensor para realizar a leitura da temperatura // read retornará 1 caso consiga realizar a leitura, ou 0 caso contrário if (sensor.read ()) {// rekuperacija ir leitura da temperatura do ambiente tempAmbiente = jutiklis.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, BLACK); // pozicija arba žymeklis ir aplinkos temperatūros rodymas. setCursor (POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print (tempAmbiente); ekranas.spaudas ((char) 247); // simbolo de graus // pozicija arba žymeklis ir escreve a temperatura do objeto que o sensor está apontando display.setCursor (POS_X_OBJETO+35, POS_Y_OBJETO); display.print (tempObjeto); ekranas.spaudas ((char) 247); // simbolo de graus} delay (1000); // intervalo de 1 segundo para a próxima leitura}