В статье рассказывается о создании логгера температуры и относительной влажности на базе ПК с использованием платы chipKIT Uno32 и датчика DHT11. Для сборки устройства не требуется никаких дополнительных проводов (кроме кабеля USB) и компонентов; датчик DHT11 подключается непосредственно к четырем портам ввода/вывода платы Uno32 и проект готов к работе. Этот проект можно использовать как простую и удобную систему мониторинга температуры и относительной влажности окружающей среды в серверной комнате. Uno32 считывает показания датчика DHT11 через заданные интервалы времени и посылает полученные данные на компьютер через USB-UART интерфейс. Приложение для ПК написано в открытой программной платформе Processing и записывает данные в ASCII файл. Также программа отображает температуру и относительную влажность в реальном времени на экране компьютера.
Недорогой датчик температуры и относительной влажности окружающей среды DHT11 имеет откалиброванный цифровой выход. Он имеет 4-контактный корпус и работает при напряжении питания от 3В до 5.5В. Он может измерять температуру от 0 до 50°C с точностью ± 2°С и относительную влажность воздуха от 20 до 95% с точностью ± 5%. Датчик имеет свои собственный 1-Wire протокол, и, следовательно, соединить датчик и микроконтроллер через прямой интерфейс как с любым периферийным устройством невозможно. Протокол должен быть описан в прошивке микроконтроллера при помощи Bit-banging. Прочитайте измерение температуры и относительной влажности при помощи датчика DHT11 и микроконтроллера PIC (англ.) для получения более подробной информации о протоколе DHT11. На рисунке показана цоколевка датчика DHT11.
В этом проекта четыре вывода датчика DHT11 вставляются непосредственно в четыре порта ввода/вывода (7, 6, 5 и 4) платы Uno32. Питание(1), данные(2) и GND(4) контакты DHT11 подключаются к портам ввода/вывода 7, 6, и 5 Uno32 соответственно. Контакты 7 и 4 Uno32 настроены как выход и имеют высокий (3.3В) и низкий (GND) уровни соответственно, и используются для питания датчика. Обратите внимание, что порты ввода/вывода Uno32 могут выдавать ток до 18 мА, что достаточно для питания датчика DHT11, который потребляет менее 5 мА во время преобразования и передачи данных. Вывод 3 DHT11 не используется. Информация о температуре и влажности считывается 6 портом ввода/вывода Uno32.
Писать прошивку проще используя библиотеку для Arduino или chipKIT для работы с датчиком DHT11. Библиотека DHT11 для Arduino была написана George Hadjikyriacou и позже изменялась другими людьми. Программа для Uno32 считывает данные о температуре и относительной влажности (два байта) из DHT11 и отправляет их через последовательный порт. Интервал выборки 2 секунды.
#include «dht11.h»
#define VCCPIN 7
#define DHT11PIN 6
#define GNDPIN 4
dht11 DHT11;
void setup()
{
Serial.begin(9600);
pinMode(VCCPIN, OUTPUT);
pinMode(GNDPIN, OUTPUT);
digitalWrite(VCCPIN, HIGH);
digitalWrite(GNDPIN, LOW);
}
void loop()
{
int chk = DHT11.read(DHT11PIN);
Serial.write(DHT11.humidity);
Serial.write(DHT11.temperature);
delay(2000);
}
Программа для компьютера была написана на открытой программной платформе Processing, предназначенной для упрощения создания интерактивных изображений и графических приложений, в данном случае для отображения полученной информации о температуре и влажности. Она бесплатна и работает на платформах Mac, Windows и Linux. Я написал простое приложение, которое получает байты температуры и влажности, переданные с платы Uno32 через последовательный порт, и отображает эти данные в графическом окне. Данные о температуре и влажности, а также дата и время записываются в текстовый файл. Дата и время основывается на RTC компьютера.
Необходимо импортировать библиотеку Processing Serial для получения доступа к последовательному порту. Это делается так:
import processing.serial.*;
Далее необходимо открыть последовательный порт:
Dev_Board = new Serial(this, «COM12», 9600);
У меня USB-UART модуль на плате Uno32 распознается как COM12. Вы должны подобрать правильный номер COM для работы. В Windows, эту информацию можно найти в диспетчере устройств.
Кнопка Пуск/Стоп в программе кликабельна. Функция обработки мыши Processing Mouse используются для определения нажатия мышью на кнопку. Когда кнопка Старт нажата, начинается запись показаний и надпись на кнопке меняется на Стоп. При нажатии на неё запись данных останавливается. Температура с указанием даты и времени записывается в текстовый файл. Каждый раз при нажатии кнопки Старт, программа создает новый текстовый файл. Имя файла содержит текущую системную дату и время, так что перезаписи файлов не будет. Тем не менее, данные временно хранятся в оперативной памяти компьютера и записываются в текстовый файл на жестком диске лишь после нажатия на кнопку Стоп.
Вот пример текстового файла, где информация о температуре и относительной влажности записывается вместе с временем:
Данные из файла можно использовать для построения графика в приложениях наподобие MS Excel, или можно добавить в программу функцию построения графика температуры и влажности относительно времени.
Прикрепленные файлы:
- DHT11_Logger.rar (3570 Кб)