Главная » Arduino
Призовой фонд
на октябрь 2021 г.
1. Рюкзак Mean Well
Компэл
2. Инвертор авто Mean Well 150 Ватт
Компэл
3. Термос MeanWell
Компэл
4. 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

Arduino UNO
Arduino UNO
Модуль измерения тока на ACS712 (30А) МиниПК MK809V - 4 ядра, Android 4.4.2
вверх