Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Notre objectif cette fois est de créer un programme qui lira la température ambiante de tout objet pointant vers notre capteur. Pour ce faire, nous utiliserons dans ce projet un nodeMCU ESP8266, un capteur infrarouge MLX90614 et un écran OLED 96 , qui affichera les données de température.
Étape 1: Wi-Fi ESP8266 NodeMcu ESP-12E
Étape 2: Capteur infrarouge
Le capteur infrarouge MLX90614 utilisé dans cette configuration est en fait un type de caméscope. Il capture des images via le CCD (Charged Coupled Device), un système très similaire à celui utilisé dans les appareils photo numériques. Ainsi, il enregistre la quantité d'infrarouge sortant de l'objet, et avec cette quantité, il calcule la température. C'est très précis.
Étape 3: afficher l'OLED
Étape 4: Assemblage
C'est un schéma très simple. J'ai un tableau ici qui permet une visualisation facile.
ESP8266 - OLEDD5 - SCL
J7 - ADD
D3 - RES
D4 - CC
D8 - CS
3, 3v - VCC
GND - GND
MLX90614
D1 - SCL
D2 - ADD
3, 3v - VCC
GND - GND
Étape 5: Bibliothèques
Pour utiliser l'écran OLED, ajoutez la bibliothèque "Adafruit-GFX-Library-master" suivante.
Accédez simplement à "Esquisse >> Inclure les bibliothèques >> Gérer les bibliothèques …"
Ajoutez également la bibliothèque "Adafruit Unified Sensor" suivante.
Les liens de téléchargement des bibliothèques sont dans le PDF, disponible juste en dessous.
Étape 6: Code source
Nous commencerons par définir les bibliothèques et les constantes que nous utiliserons lors de notre code.
#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 mosi D7 #define #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 dPOSados #define POS_X_AMBIENTE_AMBIENT_E_X 35 #DEFineTO_OBJIENT 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); //objeto responsável pela comunicação com o sensor infravermelho IRTherm sensor; //variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; float tempObjeto;
Installer
Dans la fonction setup(), nous allons initialiser notre objet de communication avec le capteur, ainsi que l'objet de communication avec l'afficheur. Voici quelques paramètres pour chacun d'eux.
void setup(){ //Inicializa sensor de temperature infravermelho sensor.begin(); //Seleciona temperature em Celsius sensor.setUnit(TEMP_C);//podemos ainda utilizar TEMP_F pour Fahrenheit //ou TEMP_K pour Kelvin //inicializa o objecto para comunicarmos com o display OLED display.begin(); //pinta toda toda de preto display.fillScreen(BLACK); //configura o tamnaho do texto que escreveremos em tela display.setTextSize(0); //configura une cor branca pour le texte display.setTextColor(WHITE); //os commandes abaixo posicionam o curseur no (x, y) desejado para a seguir escrevermos em tela display.setCursor(POS_X_TITULO, POS_Y_TITULO); display.print("TEMPÉRATURE"); display.setCursor(POS_X_TITULO+20, POS_Y_TITULO+15); display.print("("); display.print((char)247); //symbole 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:"); //OBJET }
Boucle
Dans la fonction loop (), lisons les données du capteur, puis affichons-les sur l'écran OLED.
//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()) { //recupera a leitura da temperatura do ambiente tempAmbiente = capteur.ambient(); //récupérer une leitura da temperatura do objeto apontado pelo sensor tempObjeto = sensor.object(); //lima une zone de collocation ou la valeur de la température ambiante et de l'objet display.fillRect(POS_X_AMBIENTE+35, POS_Y_AMBIENTE, 35, 10, BLACK); display.fillRect(POS_X_OBJETO+35, POS_Y_OBJETO, 35, 10, NOIR); //position du curseur et affichage d'une température ambiante display.setCursor(POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print(tempAmbiente); display.print((char)247); //simbolo de graus //posiciona o curseur et escreve a temperature do objecto que o sensor est apontando display.setCursor(POS_X_OBJETO+35, POS_Y_OBJETO); display.print(tempObjeto); display.print((char)247); //symbole de graus } delay(1000); //intervalo de 1 segundo para a próxima leitura }