SmartHouse

Термометър

В това ръководство ще ви покажем как сами да си направите онлайн термометър.

Хардуер

  • 1x Ардуино съвместим модул esp8266
  • 1x Прототипна платка
  • 4x Проводника
  • 1x DHT22 сензор за температура и влажност
  • 1x 10кΩ резистори

Онлайн услуги и софтуер

  • Arduino IDE
  • Adafruit
  • IFTTT

Стъпки:

Стъпка 1:

Първо ще трябва да свържете пиновете на ардуиното към пиновете на DHT22 сензора и резистора, както е показано на схемата:
• Ардуино 3V до пин 1 на DHT22
• Ардуино 3V до единия крак на 10kΩ резистор, а другия крак на резистора към пин 2 на DHT22
• Ардуино Пин D1 към пин 2 на DHT22
• Ардуино GND към пин 4 на DHT22

Стъпка 2:

Следващата стъпка е да се влезнете в .adafruit.com и да създадете два нови feeds с имената Temperature и Humidity.

Стъпка 3:

Ще трябва да създадете и нов Line Chart Block във вашия dashboard. Дайте му каквото име си искате, например: DHT22.

Стъпка 4:

В Adafruit отиде на AIO key и копирайте вашия Active Key, ще ви трябва по-късно.

Стъпка 5:

Отворете нов ардуинo проект с името DHT22. Отиде на file -> Preference. В полето „additional Boards Manager URLs“ въведете: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Стъпка 6:

В програмната среда на ардуино отиде на Tools -> Board -> Board Manager. Изберете ESP8266.

Стъпка 7:

В програмната среда на ардуино отиде на Tools -> Manage Libraries. Изберете Adafruit Io Arduino, Adafruit Unified Sensor и DHT Sensor Library.

Стъпка 8:

Отворете File Explore и отворете папката на проекта. В нея създайте header файл с името config.h.

Стъпка 9:

Отворете програмната среда на Arduino. В нея се е появил един нов таб config.h. Отворете го и поставете следния код:

                  
#define IO_USERNAME "твоето_потребителско_име"
#define IO_KEY      "твоят_ключ"

#define WIFI_SSID "твоят_ssid"
#define WIFI_PASS "твоята_парола_за_wifi"

#include "AdafruitIO_WiFi.h"

#if defined(USE_AIRLIFT) || defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || defined(ADAFRUIT_PYPORTAL)
#if !defined(SPIWIFI_SS) 
#define SPIWIFI SPI
#define SPIWIFI_SS 10 
#define NINA_ACK 9    
#define NINA_RESETN 6 
#define NINA_GPIO0 -1 
#endif
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS, SPIWIFI_SS, NINA_ACK, NINA_RESETN, NINA_GPIO0, &SPIWIFI);
#else
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
#endif
            
            

Стъпка 10:

Редактирайте кода ,като в полето „твоето потребителско име" сложете вашето потребителско име от adafruit, в „твоят ключ“ поставете ключа, който сте копирали по-рано, в „твоят_ssid“ поставете името на вашата мрежа, а в полето "твоята_парола_за_wifi" поставете паролата за мрежата.

Стъпка 11:

Отворете раздела DHT22 и поставете следни код:

                    
// създайте DHT22 инстанция
DHT_Unified dht(DATA_PIN, DHT22);

// Правим връзка с feed temperature и humidity
AdafruitIO_Feed *temperature = io.feed("temperature");
AdafruitIO_Feed *humidity = io.feed("humidity");

void setup() {

  // Започване на серейна комуникация 
  Serial.begin(115200);

  // изчакваме да се отвори серийния монитор
  while(! Serial);

  // инициализираме DHT22 сензора
  dht.begin();

  // свърваме се с io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();


  // Изчакваме да се свържим с adafruit
  while(io.status() < AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // Свързани сме
  Serial.println();
  Serial.println(io.statusText());

}

void loop() {

  // io.run() е функция, която трябва
  // да бъде винаги най-отгоре в loop,
  // тя отговаря за обмяната на данни
  // с adafruit
  io.run();

  sensors_event_t event;
  dht.temperature().getEvent(&event);

  float celsius = event.temperature;

  Serial.print("celsius: ");
  Serial.print(celsius);
  Serial.println("C");

  // изпрщаме celsius към adafruit
  temperature->save(celsius);

  dht.humidity().getEvent(&event);

  Serial.print("humidity: ");
  Serial.print(event.relative_humidity);
  Serial.println("%");

  // изпрщаме humidity към adafruit
  humidity->save(event.relative_humidity);

  // изчакваме 5 секунди (5000 милисекунди == 5 секънди)
  delay(5000);

}
                    
                    

Стъпка 12:

Готови сте! Вече имате работещ онлайн термометър. Опитайте го