Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
Компоненты и материалы
| Датчик температуры и влажности DHT11 (4 пина) | 1 шт. |
| Arduino UNO | 1 шт. |
| Ethernet Shield W5100 для Arduino Uno | 1 шт. |
| Перемычки (набор) | 1 шт. |
| Крона 9 В (или другой источник питания) | 1 шт. |
| Макетная плата (breadboard) | 1 шт. |
| Клемма для кроны 9 В | 1 шт. |
Приложения и сервисы
- Arduino IDE
О проекте
Что делает этот проект
Я экспериментирую с Arduino уже несколько недель, собирая простые схемы со светодиодами. Хотел сделать первый полезный проект — регистратор данных температуры и влажности. Схема несложная, но код (для моего уровня) оказался непростым.
Как это сделано
Первый шаг — собрать Arduino Uno с Ethernet Shield и схему, показанную ниже.
После сборки убедитесь, что SD-карта отформатирована и вставлена в Ethernet Shield.
Загрузите код (см. ниже) в Arduino. Датчик начнёт измерять температуру и влажность. Arduino создаст файл DATALOGGER.TXT на SD-карте. При отключении питания запись остановится и возобновится при восстановлении.
Если измерения планируются дольше 1–2 часов, рекомендую использовать постоянный источник питания (сетевой адаптер), чтобы не разрядить батарею и не потерять данные.
Код
Temp_and_Humid.ino
Используйте пример «SD card datalogger» из Arduino IDE (Файл → Примеры → SD → Datalogger) и добавьте код для DHT11 как показано ниже. В примере логируются до 3 аналоговых датчиков. Измените строку 57: условие цикла с analogPin < 3 на analogPin < 1.
/* SD card datalogger
This example shows how to log data from three analog sensors to an SD card using the SD library.
The circuit:
* analog sensors on analog ins 0, 1, and 2
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
created 24 Nov 2010
modified 9 Apr 2012 by Tom Igoe
This example code is in the public domain.
*/
#include <SPI.h>
#include <SD.h>
#include <dht.h>
dht DHT;
#define DHT11_PIN A0
const int chipSelect = 4;
void setup() {
Serial.begin(9600);
while (!Serial) { ; }
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
}
void loop() {
String dataString = "";
for (int analogPin = 0; analogPin < 1; analogPin++) {
int chk = DHT.read11(DHT11_PIN);
dataString += String(chk);
if (analogPin < 2) {
dataString += ",";
}
}
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(DHT.temperature);
dataFile.println(DHT.humidity);
dataFile.close();
Serial.print("Temperature = ");
Serial.println(DHT.temperature);
Serial.print("Humidity = ");
Serial.println(DHT.humidity);
delay(600000); // 10 минут
} else {
Serial.println("error opening datalog.txt");
}
}
Схемы
Производственный процесс
- Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
- Создание надежного монитора энергии и логгера данных на Arduino — пошаговое руководство
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Вывод данных BME280 (температура, влажность, давление) на сенсорный экран Nextion
- Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
- Бесконтактный термометрический шлюз для быстрого и точного скрининга
- Чтение температуры и влажности DHT11 через Blynk — пошаговый урок для Arduino
- Создание интерактивного 4x4x4 светодиодного куба на Arduino Uno и 1Sheeld
- Своё рулевое управление (джойстик) для игр на Arduino