연결된 온도 및 습도 센서를 쉽게 구축

22946 단어 tutorialbeginnerstech

To monitor the temperature of the main room or the baby bedroom, you can create and develop your own connected temperature sensor easily.



다음 단계에 따라 연결된 온도 센서를 생성합니다. 이를 달성하기 위해 esp8266과 2개의 실드를 사용합니다.
ESP8266은 Arduino와 같은 마이크로컨트롤러이지만 Wi-Fi 모듈이 통합되어 있습니다.

실드는 메인보드에 추가해 기능을 확장할 수 있는 보드다. 실드는 설치 및 사용이 매우 쉽다는 장점이 있습니다.
현재 esp8266 D1 Mini에는 20개의 실드를 사용할 수 있습니다.
그래서 우리는 실드를 서로의 위에 클립하고 작성할 코드가 거의 없이 쉽게 많은 IoT 프로젝트를 만들 수 있습니다.

이 프로젝트에 사용된 것들


  • ESP8266 Wemos D1 mini . 메인 미니 Wi-Fi 보드입니다.
  • A SHT30 Shield . 온습도 센서 모듈입니다. 훨씬 더 정확하고 ESP8266의 열에 영향을 받지 않기 때문에 V2를 사용하는 것이 좋습니다. 이 기사에서는 모듈의 V1을 사용합니다.
  • OLED display Shield . 온도를 표시할 수 있는 화면입니다
  • .





    요구 사항


  • Arduino IDE의 최신 버전
  • ESP8266 보드 추가:Arduino/Preferences/Additional Boards Manager URLs에 이 URLhttps://arduino.esp8266.com/stable/package_esp8266com_index.json을 추가합니다.
    보드 관리자에 ESP8266 설치Tools/Board/Board Manager
  • 이 라이브러리를 Tools/Manage Libraries와 함께 추가합니다.
    Adafruit_SHT31 Adafruit_SSD1306 BlynkSimpleEsp8266

  • 구성 변경Tools:
  • 보드 : LOLIN(WEMOS) D1 mini lite
  • 포트: /dev/cu.wchusbserial… Mac용
  • 업로드 속도: 921600
  • Serial Monitor를 클릭하세요.

  • 1단계 - 온도 값 읽기



    당분간은 ESP8266 위에 SHT30 쉴드를 연결할 예정입니다. 다음 코드를 사용하여 실내 온도와 습도를 4초마다 다시 콘솔로 가져올 것입니다.



    #include "Adafruit_SHT31.h"
    
    Adafruit_SHT31 sht30 = Adafruit_SHT31();
    
    void setup() {
      Serial.begin(9600);
    
      while (!Serial)
        delay(10);
      // will pause until serial console opens
    
      Serial.println("SHT30 test");
      if (! sht30.begin(0x45)) {
        Serial.println("Couldn't find SHT30");
        while (1) delay(1);
      }
    }
    
    
    void loop() {
      float t = sht30.readTemperature();
      float h = sht30.readHumidity();
    
      if (! isnan(t)) {  // check if 'is not a number'
        Serial.print("Temp *C = "); Serial.println(t);
      } else { 
        Serial.println("Failed to read temperature");
      }
    
      if (! isnan(h)) {  // check if 'is not a number'
        Serial.print("Hum. % = "); Serial.println(h);
      } else { 
        Serial.println("Failed to read humidity");
      }
      Serial.println();
      delay(4000); 
      // wait 4 seconds before coming back into the loop
    }
    

    다음 코드를 사용하여 실내 온도와 습도를 4초마다 다시 콘솔로 가져올 것입니다.



    2단계 - 화면에 메시지 표시



    ESP8266 위에 OLED 디스플레이 쉴드를 연결하고 간단한 글을 올려보자.



    #include <Adafruit_SSD1306.h>
    
    Adafruit_SSD1306 display(-1);
    
    void setup() {
      Serial.begin(9600);
    
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
      // initialize with the I2C addr 0x3C (for the 64x48)
    
      // set the text size and color
      display.setTextSize(2);
      display.setTextColor(WHITE);
    }
    
    void loop() {
       display.setCursor(0,0);
       display.println("Hello");
       display.display();
       delay(1000);
    
       display.clearDisplay();
    
       display.setCursor(0,24);
       display.println("World");
       display.display();
       delay(1000);
    
       display.clearDisplay();
    }
    

    이제 텍스트를 표시하는 방법과 화면을 지우는 방법을 알았습니다.



    3단계 - 화면에 온도 표시



    이제 온도 값을 읽을 수 있고 화면에 텍스트가 표시되었으므로 다음 단계에서는 온도 및 습도 값을 표시합니다.

    #include "Adafruit_SHT31.h"
    #include <Adafruit_SSD1306.h>
    
    Adafruit_SSD1306 display(-1);
    
    Adafruit_SHT31 sht30 = Adafruit_SHT31();
    
    void setup() {
      Serial.begin(9600);
    
      if (! sht30.begin(0x45)) {
        Serial.println("Couldn't find SHT30");
        while (1) delay(1);
      }
    
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
      // initialize with the I2C addr 0x3C (for the 64x48)
    
      // set the text size and color
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.clearDisplay();
    }
    
    void loop() {
       float t = sht30.readTemperature();
       float h = sht30.readHumidity();
    
       display.setCursor(0,0);
       display.sprintf("%.1fC", t);
    
       display.setCursor(0,25);
       display.printf("%.0f%%\n", h);
    
       display.display();
       delay(5000);
    
       display.clearDisplay();
    }
    



    4단계 - Blynk 앱에 연결



    온도와 습도 값을 가지고 있는 것은 좋지만 그것들을 참조하는 것은 그다지 실용적이지 않습니다. 따라서 온도 센서를 인터넷에 연결하여 데이터를 클라우드에 게시하고 Blynk로 구축할 애플리케이션에 다시 가져올 것입니다.

    Blynk는 우리와 같은 작은 응용 프로그램을 위한 무료 응용 프로그램입니다. 장치를 클라우드에 연결하고 애플리케이션을 쉽게 설계할 수 있는 가장 인기 있는 IoT 플랫폼입니다.

    응용 프로그램에서 새 프로젝트를 만드는 방법에 대한 자세한 설명은 이 링크를 따라갈 수 있습니다.
    ➡️ http://docs.blynk.cc/#getting-started-getting-started-with-the-blynk-app

    #define BLYNK_PRINT Serial
    
    #include "Adafruit_SHT31.h"
    #include <Adafruit_SSD1306.h>
    #include <BlynkSimpleEsp8266.h>
    
    Adafruit_SSD1306 display(-1);
    
    Adafruit_SHT31 sht30 = Adafruit_SHT31();
    
    char auth[] = "BLYNK_API_KEY";
    char ssid[] = "WIFI_NAME";
    char pass[] = "WIFI_PASSWORD";
    
    void setup() {
      Serial.begin(9600);
      Serial.println("Starting");
    
      // connect to the WiFi
      Blynk.begin(auth, ssid, pass);
    
      if (! sht30.begin(0x45)) {
        Serial.println("Couldn't find SHT30");
        while (1) delay(1);
      }
    
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
    
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.clearDisplay();
    }
    
    void loop() {
       // start blynk
       Blynk.run();
       float t = sht30.readTemperature();
       float h = sht30.readHumidity();
    
       display.setCursor(0,0);
       display.printf("%.1fC", t);
    
       // send the temp value on the virtual pin 1 (V1)
       Blynk.virtualWrite(1, t);
    
       display.setCursor(0,25);
       display.printf("%.0f%%\n", h);
    
       // send the humidity value on the virtual pin 2 (V2)
       Blynk.virtualWrite(2, h);
    
       display.display();
       delay(5000);
    
       display.clearDisplay();
    }
    

    이제 다음 그림과 같이 2개의 레이블 값을 설정하여 Blynk에서 애플리케이션을 구성할 수 있습니다.




    응용 프로그램에서 제공하는 모듈로 약간의 재미를 느낄 수 있습니다. 광산에서는 온도와 습도 값을 나타내는 그래프를 만들었습니다.



    축하합니다. 연결된 온도 센서를 만들었습니다. 👏

    https://henaff.io에 원래 게시되었습니다.

    좋은 웹페이지 즐겨찾기