Категория: Arduino - проекты |
Комментарии: 0
17 января 2016
Как я спал на датчике температуры 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–2023
Автоматизация и проектирование - 1injener.ru
Copyright © 2013–2023
Автоматизация и проектирование - 1injener.ru