ARDUINO Метеостанция или Smart-Hours на AHT20 и BMP280

Vlad_Bovsunivskiy

✩✩✩✩✩✩✩
19 Фев 2021
6
0
Всем доброго времени суток.
После долгого обдумывания ,какой бы создать интересный и достаточно функциональный проект .Посмотрев множество видеороликов Alex Gyver и ещё некоторых видеоблогеров ,решил что создам метеостанцию или Smart-Hours(умные часы) .В которых будет мой функционал и моя идея.

photo_2021-11-01_20-45-08 (4).jpg
Функционал.
Важно!!!Чтобы графики работали нужно переклацать все окна(одна из нерешённых проблем ,но я думаю над этим).
Питание 5V 2A;

Устройство умеет выводить точное время и дату ( можно настроить в самом скетче) ,температуру и влажность воздуха в помещении ,атмосферное давление (hPa и
mmHg) и высоту .На основе данных с bmp280 ,а именно атмосферного давления программа строит график и выводит на главный экран ( где часы и дата) символ с примерной погодой .
Есть функция - выключение (3 нажатия на кнопку),и включение (1 нажатие на кнопку) подсветки.

Алгоритм работы.
-
Вывод даты и точного (ну почти точного ,зависит как вы настроите в скетче) времени ,также примерной погоды;
-Вывод на разных окнах дисплея данных с датчиков и графиков;
-Переключение между окнами реализовано с помощью кнопки (и библиотеки Alex Gyver - EncButton.h) и оператором switch.

Схема проекта :

Схема Smart_Hours.png

Реализация :

1).Когда включаю станцию , идет быстрая загрузка и выводится главный экран(дата ,время , и примерная погода в нижнем правом углу дисплея);
2).При нажатии на кнопку второй раз идёт очистка дисплея;
3).При нажатии на кнопку третий раз выводится температура в помещении;
4).При нажатии на кнопку четвёртый раз идёт очистка дисплея( и так каждый раз после следующего вывода данных);
5).При нажатии на кнопку пятый раз выводится влажность в помещении;
6).Очистка дисплея;
7).При нажатии на кнопку седьмой раз выводится атмосферное давление;
8).Очистка дисплея;
9).При нажатии на кнопку девятый раз выводится график на основе значений с bmp280 ,а именно атмосферного давления;
10).Очистка дисплея и главный экран;
Реализовано с помощью оператора switch .Все выводы информации написал в функциях ,и функции вписал в case для удобного переключения кнопкой.
Использовал такую простенькую функцию :
Простая функция:
void clearLCD() { //функция для очистки дисплея
  lcd.setCursor(0, 0);
  lcd.print("                ");
  lcd.setCursor(0, 1);
  lcd.print("                ");
}
Создал ,чтобы команда lcd.clear(); не очищала данные графика.

Скетч на данный момент:
- Smart-Hours_V2.2 ;
Там же есть ещё версии скетча.

Какие модули использовал :
-
Arduino nano 3.0 Mega328p с припаянными контактами;
-Дисплей 1602 5V Зеленый экран с интерфейсной шиной IIC/I2C;
-Модуль часов реального времени DS1302;
-BMP280 Модуль цифрового датчика атмосферного давления;
-Модуль датчика температуры и влажности AHT20;
-Тактильные кнопки 6*6*5мм сквозной монтаж;
---------------------------------------------------------------------------------------------------------------
≈ 593,47 руб + доставка;

В планах :
-Добавить солнечную батарею;
-Добавить акум и модуль зарядки;
-Добавить датчик CO2 и в качестве индикаторов 3 светодиода (зелёный ,жёлтый ,красный);
-Добавить WiFi модуль;
-Добавить фоторезистор;
-Оптимизировать скетч;
И много различных функций и других типов этой станции .Со временем буду добавлять ещё идеи и версии кода .Надеюсь Gyver и админы одобрят.
 
Изменено:

Vlad_Bovsunivskiy

✩✩✩✩✩✩✩
19 Фев 2021
6
0
@Геннадий П, для барометра(bpm280) использовал шину SPI,так как у меня i2c не работала или я не так подключил ,а дисплей и AHT20 по i2c.Всё как нужно)
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
для барометра(bpm280) использовал шину SPI,так как у меня i2c не работала или я не так подключил ,а дисплей и AHT20 по i2c.Всё как нужно)
так чтоб он по i2c работал надо было в скетче его адрес указывать. и по одной шине все три устройства бы работали. а с датчиком СО2 ты наверно погорячился: он в китае полторы т.р. стоит. сильно удорожит проект. но если хочется,то ... впрочем, у Гайвера есть похожий скетч метеостанции, там можешь подсмотреть кусок кода по СО2. и еще одно: я бы AHT20 заменил на ДНТ11: температуру брать лучше с bpm280 (он точнее), а влажность с днт довольно точная. зато разница в цене будет неплохая.
P.S. модуль часов DS1302 очень неточный модуль. у меня их три, и каждый живет своей жизнью: убегание/отставание у каждого из них свое и довольно немаленькое(один за месяц почти на три минуты убегает вперед). я бы посоветовал как минимум использовать DS1307: он довольно точный, а разница в цене минимальная.
 
Изменено:
  • Лойс +1
Реакции: Vlad_Bovsunivskiy

Vlad_Bovsunivskiy

✩✩✩✩✩✩✩
19 Фев 2021
6
0
@Leon111_09, в дальнейшем будут доработки и изменения .DHT 11 мне не понравился ,ибо во-первых при первом подключении ничего не работало ибо китайцы неправильно выводы указали (потом сгорел из-за неправильных схем в интернете),а при поиске правильных схем подключения большинство форумов писали ложную информацию .Приходилось самому на опыте тестить .Во-вторых значения немножечко врали (1-2 градуса) .Когда посмотрел на проекты заграничных ардуинщиков ,можно было бы его взять .Однако мне захотелось своё что-то попробовать .С DS1302 согласен ,придётся искать замену(DS1307). Всё же это первый проект с моей идеей и скетчем.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
DHT 11 мне не понравился ,ибо во-первых при первом подключении ничего не работало ибо китайцы неправильно выводы указали (потом сгорел из-за неправильных схем в интернете),а при поиске правильных схем подключения большинство форумов писали ложную информацию .
ну,у меня тоже один сгорел из-за переполюсовки(голый датчик,без обвязки, подключал :)). а вообще,если с платой развязки покупать, то там не перепутаешь: там всего три контакта: два питание, и один-дата.
Во-вторых значения немножечко врали (1-2 градуса)
по температуре да,он не очень точный (потому и предлагаю брать температуру с bmp280),а вот влажность показывает довольно точно. по температуре там минимальные изменения в скетче: насколько помню в одной строке изменить запрос данных с датчика и все.
 
Изменено:
  • Лойс +1
Реакции: Vlad_Bovsunivskiy

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
сорри что так поздно кидаю)
ничего страшного,мне для проверки совместимости с ESP :) . в общем результат такой: компиляция сначала ругалась на библиотеку от часов,но это не страшно т.к. вы вроде хотели заменить модуль часов на более точный (соответственно изменитя и библиотека). но весь процесс застопорился на библиотеке для дисплея (LiquidCrystal_I2): она оказалась несовместимой с ESP8266. а жаль: этот модуль несет на борту уже встроенный вай-фай,памяти у него 4М (хватит на ВСЕ хотелки,и еще останется), а по цене он дешевле той же ардуино нано. если бы на базе есп-шки делать ваш скетч, то можно было бы добавить в программу проверку и синхронизацию времени через интернет. тогда можно было бы оставить и этот модуль часов. в идеале можно было бы вообще обойтись без датчиков: всю информацию брать в интернете и выводить на экран.
 
  • Лойс +1
Реакции: Vlad_Bovsunivskiy

PiratFox

★★★★★✩✩
13 Фев 2020
1,723
481
@Leon111_09, так Вы и не ответили. Радиацию будем мерить или как? Если нужно - то функцию скину. Тока она через прерывание работает. Ну, так написал.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@PiratFox, ну вообще-то вы не меня спрашивали, а автора скетча :). если честно,мне эта радиация... ну, скажем так: до пояса :). по моему мнению, усложнять простой скетч это все равно, что возить картошку с огорода на бентли :).
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
@Vlad_Bovsunivskiy, еще один плюсик в пользу замены модуля часов: на DC1307 и DC3231 шина i2c продублирована. и к ней вполне подключается датчик bmp280 (главное,не забывать что он работает от 3,3В а часы от 5В). подключаете трамвайчиком два модуля к одной шине(отдельный провод +3,3В ,напоминаю, кидаете к датчику давления) и получается и компактно и функционально. да и просто красиво :)
 
  • Лойс +1
Реакции: Vlad_Bovsunivskiy

Геннадий П

★★★★★★✩
14 Апр 2021
1,871
599
44
на DC1307 и DC3231 шина i2c продублирована. и к ней вполне подключается датчик bmp280 (главное,не забывать что он работает от 3,3В а часы от 5В)
судя по даташиту, 3231 нормально работает от 3.3 В, а вот 1307 только от 5В
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
642
148
55
Таганрог
forum.wisecomp.ru
судя по даташиту, 3231 нормально работает от 3.3 В, а вот 1307 только от 5В
1307 это "огрызок" от 3231: на нем нет дополнительно распаянной памяти,нет будильника. но часовой чип один и тот же используется. на 3231 китайцы зачем-то распаяли дополнительную флеш-память,но ее никак не придумали как ее использовать. а так в принципе, это один и тот же чип,только с допами.