Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

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

В статье рассказывается о создании логгера температуры и относительной влажности на базе ПК с использованием платы chipKIT Uno32 и датчика DHT11. Для сборки устройства не требуется никаких дополнительных проводов (кроме кабеля USB) и компонентов; датчик DHT11 подключается непосредственно к четырем портам ввода/вывода платы Uno32 и проект готов к работе. Этот проект можно использовать как простую и удобную систему мониторинга температуры и относительной влажности окружающей среды в серверной комнате. Uno32 считывает показания датчика DHT11 через заданные интервалы времени и посылает полученные данные на компьютер через USB-UART интерфейс. Приложение для ПК написано в открытой программной платформе Processing и записывает данные в ASCII файл. Также программа отображает температуру и относительную влажность в реальном времени на экране компьютера.

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

Недорогой датчик температуры и относительной влажности окружающей среды DHT11 имеет откалиброванный цифровой выход. Он имеет 4-контактный корпус и работает при напряжении питания от 3В до 5.5В. Он может измерять температуру от 0 до 50°C с точностью ± 2°С и относительную влажность воздуха от 20 до 95% с точностью ± 5%. Датчик имеет свои собственный 1-Wire протокол, и, следовательно, соединить датчик и микроконтроллер через прямой интерфейс как с любым периферийным устройством невозможно. Протокол должен быть описан в прошивке микроконтроллера при помощи Bit-banging. Прочитайте измерение температуры и относительной влажности при помощи датчика DHT11 и микроконтроллера PIC (англ.) для получения более подробной информации о протоколе DHT11. На рисунке показана цоколевка датчика 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.

Установка DHT11 на порты ввода/вывода 7-4 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  используются для определения нажатия мышью на кнопку. Когда кнопка Старт нажата, начинается запись показаний и надпись на кнопке меняется на Стоп. При нажатии на неё запись данных останавливается. Температура с указанием даты и времени записывается в текстовый файл. Каждый раз при нажатии кнопки Старт, программа создает новый текстовый файл. Имя файла содержит текущую системную дату и время, так что перезаписи файлов не будет. Тем не менее, данные временно хранятся в оперативной памяти компьютера и записываются в текстовый файл на жестком диске только после нажатия на кнопку Стоп.

ПО на Windows

Вот пример текстового файла, где информация о температуре и относительной влажности записывается вместе с временем:

Текстовый файл

Данные из файла можно использовать для построения графика в приложениях наподобие MS Excel, или можно добавить в программу функцию построения графика температуры и влажности относительно времени.

Оригинал статьи

Прикрепленные файлы:

Теги:

Касьянов А. Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Валерий #
Пытался скомпилировать для ардуино (1.0.5). Выдает ошибки:
sketch_jun27a:6: error: 'dht11' does not name a type
sketch_jun27a.ino: In function 'void loop()':
sketch_jun27a:18: error: expected primary-expression before '.' token
sketch_jun27a:18: error: expected primary-expression before '.' token
sketch_jun27a:19: error: expected primary-expression before '.' token
sketch_jun27a:20: error: expected primary-expression before '.' token
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
AVR-программатор USB ASP Набор для сборки - LED лампа
вверх