Отключаемые счетчики электроэнергии на пульте. Все с документами пломбами, гарантией и без посредников!

Логгер температуры и относительной влажности на chipKIT

Логгер температуры и относительной влажности на chipKIT

В статье рассказывается о создании логгера температуры и относительной влажности на базе ПК с использованием платы 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, или можно добавить в программу функцию построения графика температуры и влажности относительно времени.

Скачать файлы проекта

Оригинал статьи на английском языке (перевод: Александр Касьянов для сайта cxem.net)


Категория: Arduino
Метки:

Написать коментарий

*
= 4 + 4

Добавить изображение

Последние статьи