Логгер температури та відносної вологості на chipKIT Uno32
У статті розповідається про створення логгера температури та відносної вологості на базі ПК з використанням плати 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 Кб)