
Съдържание:
- Стъпка 1: Как работи I2c
- Стъпка 2: Библиотека
- Стъпка 3: Behaivor
- Стъпка 4: Използване на I2c
- Стъпка 5: Използване на един проводник
- Стъпка 6: Неявно четене
- Стъпка 7: Просто четене
- Стъпка 8: Пълно четене
- Стъпка 9: Схема на свързване
- Стъпка 10: Arduino: OneWire
- Стъпка 11: Arduino: I2c
- Стъпка 12: Esp8266 (D1Mini) OneWire
- Стъпка 13: Esp8266 (D1Mini) I2c
- Стъпка 14: Благодаря
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36

Можете да намерите актуализация и други на моя сайт
Харесва ми сензор, който може да се използва с 2 проводника (протокол i2c), но обичам евтиния.
Това е библиотека на Arduino и esp8266 за серията DHT12 на много ниски разходни сензори за температура/влажност (по -малко от 1 $), които работят с i2c или едножична връзка.
Много полезно, ако искате да използвате esp01 (ако използвате сериен, имате само 2 пина), за да прочетете влажността и температурата и да ги покажете на i2c LCD.
AI прочетох, че понякога изглежда, че има нужда от калибриране, но имам дърво на това и получавам стойност, много подобна на DHT22. Ако имате калибриране на този проблем, отворете проблема в github и добавям изпълнение.
Стъпка 1: Как работи I2c

I2C работи с двата си проводника, SDA (линия за данни) и SCL (линия на часовника).
И двете линии са с отворен дренаж, но са изтеглени с резистори.
Обикновено на линията има един главен и един или няколко подчинени, въпреки че може да има няколко господари, но ще говорим за това по -късно.
И господарите, и подчинените могат да предават или получават данни, следователно, устройството може да бъде в едно от тези четири състояния: главно предаване, главно приемане, предаване на подчинено устройство, приемане на подчинено устройство.
Стъпка 2: Библиотека
Моята библиотека можете да намерите тук.
За изтегляне
Щракнете върху бутона ИЗТЕГЛЯНЕ в горния десен ъгъл, преименувайте некомпресираната папка DHT12.
Проверете дали папката DHT съдържа DHT12.cpp и DHT12.h.
Поставете папката на библиотеката DHT във вашата / библиотеки / папка.
Може да се наложи да създадете подпапка библиотеки, ако това е първата ви библиотека.
Рестартирайте IDE.
Стъпка 3: Behaivor
Тази библиотека се опитва да подражава на поведението на стандартните DHT библиотечни сензори (и копира много код) и добавям кода за управление на i2c също по същия начин.
Методът е същият за DHT библиотечния сензор, като някои добавят подобна функция на точката на оросяване.
Стъпка 4: Използване на I2c
За да се използва с i2c (адрес по подразбиране и SDA SCL щифт по подразбиране) конструкторът е:
DHT12 dht12;
и вземете стойността по подразбиране за SDA SCL щифт.
(Възможно е предефиниране с посочен конструктор за esp8266, необходим за ESP-01). или
DHT12 dht12 (uint8_t адресOrPin)
addressOrPin -> адрес
за да смените адреса.
Стъпка 5: Използване на един проводник
За да използвате един проводник:
DHT12 dht12 (uint8_t адресOrPin, вярно)
addressOrPin -> ПИН
булева стойност е изборът на режим oneWire или i2c.
Стъпка 6: Неявно четене
Можете да го използвате с "неявно", "просто четене" или "пълно четене": Имплицитно, само първото четене прави истинско четене на сензора, другото четене става за 2 секунди. interval са запаметената стойност за първо четене.
// Отчитането на сензора има 2 секунди изминало време, освен ако не предадете параметър сила
// Четене на температурата като Целзий (по подразбиране) float t12 = dht12.readTemperature (); // Четене на температурата като Фаренхайт (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Показанията на сензора също могат да бъдат до 2 секунди „стари“(това е много бавен сензор) float h12 = dht12.readHumidity (); // Изчисляване на топлинния индекс във Фаренхайт (по подразбиране) float hif12 = dht12.computeHeatIndex (f12, h12); // Изчисляване на топлинен индекс в Целзий (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Изчисляване на точката на оросяване по Фаренхайт (по подразбиране) float dpf12 = dht12.dewPoint (f12, h12); // Изчисляване на точката на оросяване в Целзий (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Стъпка 7: Просто четене
Просто четене, за да получите статус на четене.
// Отчитането на сензора има 2 секунди изминало време, освен ако не предадете параметър сила
bool chk = dht12.read (); // вярно четене е ок, грешно четене проблем
// Четене на температурата като Целзий (по подразбиране)
float t12 = dht12.readTemperature (); // Четене на температурата като Фаренхайт (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Показанията на сензора също могат да бъдат до 2 секунди „стари“(това е много бавен сензор) float h12 = dht12.readHumidity (); // Изчисляване на топлинния индекс във Фаренхайт (по подразбиране) float hif12 = dht12.computeHeatIndex (f12, h12); // Изчисляване на топлинен индекс в Целзий (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Изчисляване на точката на оросяване по Фаренхайт (по подразбиране) float dpf12 = dht12.dewPoint (f12, h12); // Изчисляване на точката на оросяване в Целзий (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Стъпка 8: Пълно четене
Пълно четене, за да получите определен статус.
// Отчитането на сензора има 2 секунди изминало време, освен ако не предадете параметър сила
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nЧетене на сензора:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); прекъсване; случай DHT12:: ERROR_CHECKSUM: Serial.println (F ("Грешка в контролната сума")); прекъсване; регистър DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); прекъсване; случай DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Грешка при изчакване при нисък сигнал, опитайте да поставите висока устойчивост на издърпване")); прекъсване; случай DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Грешка при изчакване при нисък сигнал, опитайте да поставите ниско съпротивление на издърпване")); прекъсване; случай DHT12:: ERROR_CONNECT: Serial.println (F ("Грешка при свързване")); прекъсване; случай DHT12:: ERROR_ACK_L: Serial.println (F ("AckL грешка")); прекъсване; случай DHT12:: ERROR_ACK_H: Serial.println (F ("AckH грешка")); прекъсване; регистър DHT12:: ERROR_UNKNOWN: Serial.println (F ("ОТКРИТА неизвестна грешка")); прекъсване; случай DHT12:: NONE: Serial.println (F ("Няма резултат")); прекъсване; по подразбиране: Serial.println (F ("Неизвестна грешка")); прекъсване; }
// Четене на температурата като Целзий (по подразбиране)
float t12 = dht12.readTemperature (); // Четене на температурата като Фаренхайт (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Показанията на сензора също могат да бъдат до 2 секунди „стари“(това е много бавен сензор) float h12 = dht12.readHumidity (); // Изчисляване на топлинния индекс във Фаренхайт (по подразбиране) float hif12 = dht12.computeHeatIndex (f12, h12); // Изчисляване на топлинен индекс в Целзий (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Изчисляване на точката на оросяване по Фаренхайт (по подразбиране) float dpf12 = dht12.dewPoint (f12, h12); // Изчисляване на точката на оросяване в Целзий (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Стъпка 9: Схема на свързване
С примери има диаграма на свързване, важно е да се използва правилен резистор за издърпване.
Благодаря на Bobadas, dplasa и adafruit, за споделяне на кода в github (където взема някои код и идеи).
Стъпка 10: Arduino: OneWire

Стъпка 11: Arduino: I2c

Стъпка 12: Esp8266 (D1Mini) OneWire

Стъпка 13: Esp8266 (D1Mini) I2c

Стъпка 14: Благодаря
Детска площадка Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
серия проекти на i2c (колекция):
- Сензор за температурата на влажността
- Аналогов разширител
- Цифров разширител
- ЛСД дисплей
Препоръчано:
NodeMCU Lua Евтина 6 $ дъска с регистрация на температура и влажност на MicroPython, Wifi и мобилни статистики: 4 стъпки

NodeMCU Lua Евтина 6 $ платка с MicroPython регистриране на температурата и влажността, Wifi и мобилни статистики: Това е основно облачна метеорологична станция, можете да проверявате данни на телефона си или да използвате някой телефон като дисплей на живо С NodeMCU устройството можете да регистрирате данни за температурата и влажността навън , в стая, оранжерия, лаборатория, охладителна стая или на други места в комплект
Как да използвате DHT12 I2C сензор за влажност и температура с Arduino: 7 стъпки

Как да използваме DHT12 I2C сензор за влажност и температура с Arduino: В този урок ще се научим как да използваме DHT12 I2C сензор за влажност и температура с Arduino и показваме стойностите на OLED дисплея. Гледайте видеото
Създаване-предупреждение-използване-Ubidots-ESP32+сензор за температура и влажност: 9 стъпки

Създаване-Предупреждение-Използване-Ubidots-ESP32+Сензор за температура и влажност: В този урок ще измерваме различни данни за температурата и влажността, използвайки сензор за температура и влажност. Ще научите също как да изпращате тези данни на Ubidots. За да можете да го анализирате отвсякъде за различно приложение. Също така чрез създаване на имейл
Сензор за температура и влажност на слънчевата енергия Arduino като 433mhz Oregon сензор: 6 стъпки

Сензор за температура и влажност на слънчевата енергия Arduino като 433mhz Oregon сензор: Това е изграждането на сензор за температура и влажност на слънчева енергия. Сензорът емулира 433mhz Oregon сензор и е видим в Telldus Net gateway. Какво ви трябва: 1x " 10-LED Сензор за движение на слънчева енергия " от Ebay. Уверете се, че пише 3.7v batter
PCF8591 (i2c аналогов I/O разширител) Бързо и лесно използване: 9 стъпки

PCF8591 (i2c Analog I/O Expander) Бързо и лесно използване: Библиотека за използване на i2c pcf8591 IC с arduino и esp8266. Тази IC може да контролира (до 4) аналогов вход и/или 1 аналогов изход, като измерва напрежението, да чете стойността на термистора или да избледнява светодиод. Може да чете аналогова стойност и да записва аналогова стойност само с 2 проводника (перфектно