Spisu treści:

Czujnik podczerwieni z ESP8266: 6 kroków
Czujnik podczerwieni z ESP8266: 6 kroków

Wideo: Czujnik podczerwieni z ESP8266: 6 kroków

Wideo: Czujnik podczerwieni z ESP8266: 6 kroków
Wideo: Multisensor na ESP8266 #1, czyli pomiar temperatury dla Domoticza (i nie tylko) 2024, Listopad
Anonim
Image
Image
Wi-Fi ESP8266 NodeMcu ESP-12E
Wi-Fi ESP8266 NodeMcu ESP-12E

Tym razem naszym celem jest stworzenie programu, który będzie odczytywał temperaturę otoczenia dowolnego obiektu skierowanego w stronę naszego czujnika. Aby to zrobić, użyjemy w tym projekcie ESP8266 nodeMCU, czujnika podczerwieni MLX90614 i wyświetlacza OLED 96”, który będzie wyświetlał dane temperatury.

Krok 1: Wi-Fi ESP8266 NodeMcu ESP-12E

Krok 2: Czujnik podczerwieni

Czujnik podczerwieni
Czujnik podczerwieni

Czujnik podczerwieni MLX90614 używany w tej konfiguracji jest w rzeczywistości rodzajem kamery. Przechwytuje obrazy za pomocą CCD (Charged Coupled Device), systemu bardzo podobnego do stosowanego w cyfrowych aparatach fotograficznych. W ten sposób rejestruje ilość podczerwieni wychodzącej z obiektu i przy tej ilości oblicza temperaturę. Jest bardzo precyzyjny.

Krok 3: Wyświetl OLED

Wyświetlacz OLED
Wyświetlacz OLED

Krok 4: Montaż

montaż
montaż

To bardzo prosty schemat. Mam tutaj tabelę, która pozwala na łatwą wizualizację.

ESP8266-OLEDD5-SCL

D7 - SDA

D3 - OZE

D4 - DC

D8 - CS

3, 3v - VCC

GND - GND

MLX90614

D1 - SCL

D2 - SDA

3, 3v - VCC

GND - GND

Krok 5: Biblioteki

Biblioteki
Biblioteki
Biblioteki
Biblioteki

Aby korzystać z wyświetlacza OLED, dodaj następującą bibliotekę „Adafruit-GFX-Library-master”.

Wystarczy przejść do „Szkic >> Dołącz biblioteki >> Zarządzaj bibliotekami…”

Dodaj także następującą bibliotekę "Adafruit Unified Sensor".

Łącza do pobrania bibliotek znajdują się w pliku PDF, dostępnym poniżej.

Krok 6: Kod źródłowy

Zaczniemy od zdefiniowania bibliotek i stałych, których będziemy używać w naszym kodzie.

#include //Biblioteka komunikacji I2C#include //Biblioteka komunikacji z czujnikiem #include //Biblioteka własności graficznych #include //Biblioteka komunikacji z wyświetlaczem OLED // pinagem NodeMCU ESP8266 #define sclksi D5 #define #define cs D8 #define rst D3 #define dc D4 // zdefiniowanie rdzeni do wykorzystania seryjnego #define BLACK 0x0000 #define WHITE 0xFFFF //definicja koordynowania i śledzenia kolejnych etapów #define POS_X_AMBIENTTOOBE 35 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // Konstruktor do obsługi komunikacji com o display OLED Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst); //objeto responsável pela comunicação com o czujnik infravermelho Czujnik IRTherm; //variáveis que armazenarão o valor das temperaturas lidas float tempAmbiente; pływak tempObjeto;

Ustawiać

W funkcji setup() zainicjujemy nasz obiekt komunikacji z czujnikiem, a także obiekt komunikacji z wyświetlaczem. Oto kilka ustawień dla każdego z nich.

void setup(){ //Inicializa sensor de temperatury infravermelho sensor.begin(); //Seleciona temperatura em Celsius sensor.setUnit(TEMP_C);//podemos ainda utilizar TEMP_F para Fahrenheit //ou TEMP_K para Kelvin //inicializa o objeto para comunicarmos com o display OLED display.begin(); //pinta a tela toda de preto display.fillScreen(BLACK); //skonfiguruj lub skonfiguruj tekst, który ma być obsługiwany przez display.setTextSize(0); //skonfiguruj odpowiedni kolor wyświetlacza.setTextColor(WHITE); // os komendy abaixo posicionam o kursor nie (x, y) desejado seguir escrevermos przez 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 }

Pętla

W funkcji loop() odczytajmy dane z czujnika, a następnie wyświetlmy je na wyświetlaczu 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 = czujnik.otoczenie(); //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); //posiciona o kursor i zapisać temperaturę ambiente display.setCursor(POS_X_AMBIENTE+35, POS_Y_AMBIENTE); display.print(TempAmbiente); display.print((char)247); //simbolo de graus //posiciona o kursor e escreve temperatura do objeto que o sensor está apontando display.setCursor(POS_X_OBJETO+35, POS_Y_OBJETO); display.print(tempObjeto); display.print((char)247); //simbolo de graus } delay(1000); //intervalo de 1 segundo para a proxima leitura }

Zalecana: