Категория: Arduino - проекты
Как я спал на датчике температуры DHT-11 для Arduino [Опыт 1]
Однажды после пивных посиделок с товарищами на хмельную голову пришла странная идея.
Идея заключалась в исследовании изменения температуры тела человека на протяжении ночи.
Хотелось получать данные температуры без терминала, и не сидя у компьютера. А в последующем еще было желание отображать данные в графиках.
Для воплощения идеи мне понадобилось следующее:
- Arduino НАНО
- MicroSD Card Adapter v1.0
- Power Bank 5600
- Провод USB
- Датчик температуры DHT-11
- Флешка 4 Gb в FAT32
Ничего гениального тут нет. Подключил датчик температуры DHT-11 к Arduino NANO, к ICSP присоединяем адаптер Micro SD флешки, и подключаем это все к Power Bank.
На рисунке ниже распиновка ICSP разъема Ардуин. Распиновка так же изображена на адаптере для Микро СД флешек.
Несколько мифов:
MicroSD Card Adapter v1.0 поддерживает флешки обьемом 4 гигабайта и более.
Владельцы SD Card Reader для ардуино которые намучились с подключением флешки, и форматированием в FAT скорее всего скажут что больше 1 гигабайта не поддерживается. На самом деле все работает. Но форматировать все же надо в FAT32 по крайней мере для адаптера "MicroSD Card Adapter v1.0"
Собрав все запчасти в одну систему получилось следующее.
Для компиляции нам понадобится библиотека для датчика DHT-11
Скачать библиотеки для DHT-11 и ниже сам код программы. Проверенно на Ардуино НАНО. В коде описаны все пины для подключения и приведены комментарии.
- /*
- Как я спал на датчике температуры 1injener.ru
- Проверенно на NANO v3 + DHT-11
- */
- #include "dht11.h" // Подключаем библиотеку DHT11
- dht11 DHT; // Обьект dht11
- #define DHT11_PIN 4 // Датчик DHT11 подключен к цифровому выводу №4
- //Подключение стандартных библиотек для работы с SPI интерфейсом и флешкой
- #include
- #include
- File myFile;
- void setup()
- {
- Serial.begin(9600);
- pinMode(2, OUTPUT); //2 - вывод ардуины для адаптера флешки "NC"
- digitalWrite(2, HIGH);
- while (!Serial) {
- ; // Ожидаем готовности Serial
- }
- Serial.print("Initializing SD card…");
- if (!SD.begin(2)) {
- Serial.println("initialization failed!");
- return;
- }
- Serial.println("initialization done.");
- // Открываем файл на флешке который надо создать заранее для чтения.
- myFile = SD.open("MySleep.txt");
- if (myFile) {
- while (myFile.available()) {
- Serial.write(myFile.read());
- }
- //Происходит считывание файла до конца. При сбросе или подаче питания
- myFile.close();
- } else {
- //Если не получилось открыть файл
- Serial.println("error opening MySleep.txt");
- }
- }
- void loop(){
- int chk;
- chk = DHT.read(DHT11_PIN); //Считываем данные с датчика и разделяем на температуру и влажность
- String Hum = String(DHT.humidity,DEC);
- String Temp = String(DHT.temperature,DEC);
- //Для проверки работы датчика. Можно закоментрировать
- Serial.println("Temperatura: "+Temp+" tC | Vlaga: "+Hum);
- //Открываем файл для записи
- myFile = SD.open("MySleep.txt", FILE_WRITE);
- // Если все хорошо октрылось записываем данные в новую строчку
- if (myFile) {
- myFile.println("Vlaga: "+Hum+" Temp: "+Temp);
- myFile.close();
- Serial.println("done.");
- } else {
- // В противном случае ошибка
- Serial.println("error opening Sleep file");
- }
- delay(10000); //Опрос и запись каждые 10 секунд.
- }
Касаясь кода - его можно оптимизировать, уменьшить энергопотребление флешки (Вывод CN) и датчика (Используя 3й вывод DHT-11) что даст великолепные результаты.
Что происходило далее. Залив код программы в Ардуино НАНО, и проверив работу в терминале датчик был протянут под простыню в области туловища и закреплен к кровати. Подключил питание от PowerBank и заснул. Логически что все данные писались в один файл.
На утро в файле было 2757 строк с данными. Опрос датчика производился каждые 10 секунд. В итоге я спал 8 часов 5 минут. Результат изображен ниже.
Загрузив данные из файла вставкой в Exell с разделением по пробелам - был выстроен график влажности и температуры.
На графике нет ничего необычного. В самом начале графика изображена комнатная температура, далее подопытный нетрезвый человек спал себе спокойно под одеялом, когда начал перегреваться выше 36 градусов организм проявил стандартную защитную реакцию на тепло потоотделением как у всех. Далее организм начал охлаждаться.
Никаких научных выводов тут не получится сделать. Но толчок для развития своей идеи вполне есть.
Меняя датчики можно получать данные чего угодно.
Другие статьи по разделу:
Домашний веб сервер на Аrduino. Температура и Реле [Проверенно]
ЖКИ дисплей WH0802 подключение к Ардуино [Много проводов]
Управление шаговым биполярным двигателем A4988ET [Рабочий код ino]
Новые изобретения инженеров и техников, дизайнеров и обычных людей, все то что может изменить наш мир к лучшему. Новая техника и оружие, спасателей и спецназа. Гаджеты и девайсы, устройства для отдыха и работы. Советы для экономии семейного состояния. Все гениальные изобретения в простом формате! Ведь «Все — Просто!»
Copyright © 2013–. Политика конфиденциальности
Автоматизация и проектирование — 1injener.ru
Copyright © 2013–. Политика конфиденциальности
Автоматизация и проектирование — 1injener.ru