Часы термометр на ардуино – Автономная метеостанция на контроллере ATMEGA328P и питанием от батареек с беспроводным выносным датчиком

  • Home
  • Разное
  • Часы термометр на ардуино – Автономная метеостанция на контроллере ATMEGA328P и питанием от батареек с беспроводным выносным датчиком

OLED часы (термометр) на arduino и DS3231 – RobotChip

/*

  Тестирование производилось на Arduino IDE 1.8.0

  Дата тестирования 17.02.2017г.

*/

 

#include <OLED_I2C.h>                                  // Подключение библиотеки OLED_I2C

#include <DS3231.h>                                    // Подключение библиотеки DS3231

OLED  myOLED(SDA, SCL, 8);                            

DS3231  rtc(SDA, SCL);                                

extern uint8_t MegaNumbers[];                          // Подключение больших шрифтов

extern uint8_t SmallFont[];                            // Подключение маленьких шрифтов

 

int x = 0;                                             // Создаем переменную «х»

 

void setup()

{

  myOLED.begin();                                      // Инициализация Oled дисплея

  rtc.begin();                                         // Инициализация RS3231

}

void loop()

{

  if (x >= 10) {temp();                                // Если «x», больше или равно 10, выполняем цикл «temp»

      x=0;}                                            // Обнулить «x»

  else {clock();}                                      // Если «x», меньше 10, выполняем цикл «clock»

      x++;                                             // Увеличить «x» на 1

}

 

void clock()                                           // Цикл считывания и отображения времени

{  

  myOLED.clrScr();                                     // Очищаем экран

  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт

  myOLED.print(rtc.getDOWStr(), CENTER, 0);            // Отображение дня недели

  String stringOne = rtc.getTimeStr();

  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт

  myOLED.print(stringOne.substring(0,2), 4, 12);       // Отображение часов

  myOLED.print(«/», 51, 12);                           // Отображение двоеточие

  myOLED.print(stringOne.substring(3,5), 75, 12);      // Отображение минут

  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт

  myOLED.print(rtc.getDateStr(), CENTER, 57);          // Отображение даты

  myOLED.update();                                     // Обновляем информацию на дисплее

  delay(500);                                          // Пауза

  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт

  myOLED.print(«-«, 51, 12);                           // Убираем двоеточие

  myOLED.update();                                     // Обновляем информацию на дисплее

  delay(500);                                          // Пауза

}

 

void temp()                                            // Цикл считывания и отображения температуры

{

  myOLED.clrScr();                                     // Очищаем экран

  myOLED.setFont(MegaNumbers);                         // Включаем большой шрифт

  myOLED.print(String(rtc.getTemp() , 1), CENTER, 12);

  myOLED.setFont(SmallFont);                           // Включаем маленький шрифт

  myOLED.print(«Temperature», CENTER, 57);             // Отображение надписи

  myOLED.update();                                     // Обновляем информацию на дисплее

  delay(2000);                                         // Пауза

}

СДЕЛАЙ СЕБЕ КРУТЫЕ НАСТОЛЬНЫЕ ЧАСЫ С ТЕРМОМЕТРОМ И БАРОМЕТРОМ! — voltNik

Привет всем, сегодня я расскажу, как вы можете самостоятельно собрать простое электронное устройство, которое будет вам полезно каждый день.

Итак, для сборки нам понадобится набор электронных модулей. Для начала берем LCD экран 2004 и модуль подключения к шине I2C. Модуль нужно припаять сзади к экрану. Наносим флюс и запаиваем первый контакт. Он встал не ровно, поэтому его нужно выровнять, для этого разогреваем паяльником тот же контакт и выравниваем платы параллельно. Ну все, теперь ровно и можно запаивать остальные контакты.

Еще для сборки понадобится программируемая платформа Arduino Nano, модуль DS1302, модуль BMP180, фоторезистор и один резистор на 10 кОм, пьезодинамик и три кнопки с колпачками. Ссылки на все эти компоненты находятся в описании видео и есть на странице проекта.

При разработке я использую макетную плату. Она позволяет быстро подключать модули и менять конфигурацию устройства выбирая оптимальные компоненты. Набросав простой первичный код, и загрузив его в Ардуино, я получил первый результат на экране. Но работа предстояла еще долгая.

Как многие наверно уже догадались сегодня мы будем собирать проект продвинутых настольных часов с отображением температуры, давления и с адаптивной подсветкой экрана. Удивительно, но облазив половину Интернета – я не смог найти готового и законченного проекта настольных часов на Ардуино. Мне регулярно попадались только примитивные сборки на макетках с простейшим отображением времени, без будильников, без настроек и без отображения температуры. Поэтому пришлось все делать с нуля.

Конечно проект не был бы законченным без корпуса. Для сборки часов подойдет популярный китайский пластиковый корпус для электроники черного цвета. Экран 2004 в него влазит, но придется срезать плату примерно на пять миллиметров по краям. Именно так сделал AlexGyver в одном из своих видео. Если у вас нет 3D принтера – то это будет отличный рабочий вариант.

Я же изначально планировал использовать для корпуса 3D принтер. Поэтому лезу в Tinkercad и готовлю проект корпуса под печать. В нем заранее будут предусмотрены технологические отверстия для кнопок, фоторезистора и стойки для установки и прикручивания экрана.

После конструкторских изысканий — печатаем корпус. Если вы думаете, что это так просто, а вот нифига. Первый корпус у меня отлип от стола из-за того, что кто-то открыл форточку. Второй немного не подошел по размерам и верхнее расположение кнопок не позволяло их установить, мешался модуль экрана. Да, кнопки я собрал на куске дешевой односторонней макетной платы. Получается ровно и с одинаковым расстоянием между ними.

В общем, нормальный корпус получился только с третьей попытки. Тут все уже отлично село на свои места. Т.к. я печатал ABS пластиком – то сразу обрабатываю поверхность ацетоном для прочного склеивания слоев и глянца. Ну и дефекты печати он убирает и разглаживает.

Лицевую сторону корпуса немного повело и загнуло края. Это не деффект печати и не отклеивание от стола – а это потому, что я оторвал деталь на горячую, не дав ей остыть. Ну вот такой я не терпеливый. Поэтому советую ждать, когда стол остынет и лишь потом снимать с него готовые детали. Но как по мне, такой изгиб даже лучше смотрится.

Финальная примерка, блок кнопок перенес и расположил на торце, а с другой стороны будет торчать порт USB от Ардуино. Сразу прикручиваем экран мелкими саморезами к корпусу. Отверстия для этого уже предусмотрены в корпусе.

Подключаем блок к макетной плате и видим уже практически готовое устройство. Конечно, пока все это печаталось, я не сидел без дела и дорабатывал прошивку. Добавил в нее будильник, подключил барометр. И на экране добавилось отображение температуры с давлением.

Подключил фоторезистор и реализовал адаптивную подсветку экрана в зависимости от внешнего освещения. Теперь по ночам часики будут уменьшать свою яркость и не будут слепить.

Подготовил еще один проект в Tinkercad и печатнул заднюю крышку, она плотно закрывается и не требует дополнительных замков или защелок. Все файлы для 3D печати также будут находится в папке с проектом – поэтому вы без проблем сможете его повторить.

Осталась финальная сборка. Подключать все нужно по этой схеме. На шине I2C Ардуино параллельно подключен экран и модуль барометра. Учтите!  Барометр питается от 3.3 вольта! Поэтому его обязательно нужно питать от порта 3.3 вольта Ардуино. Конвертер I2C на канал данных до 3.3 вольта не обязателен, об этом указано в спецификации модуля. Резистор на 10 кОм и фоторезистор образуют делитель напряжения адаптивной подсветки и подключается в А0 порт. Сама же подсветка экрана регулируется ШИМ сигналом Ардуино и подключается в порт D3. Т.е. перемычку на модуле I2C нужно снять и запаять туда провод.

Более особенностей нет, модуль времени, кнопки и пьезодинамик подключаем согласно схеме.

Часть модулей приходит из Китая с уже напаянными контактами. Они нам не нужны. Поэтому раскусываем площадку и выпаиваем контакты.

Всю сборку буду производить на одножильный цветной монтажный провод. Он тонкий и удобен тем, что можно скрутить вместе до 6 проводков и они влезут в контакт Ардуино. Больших токов тут не планируется – поэтому его более чем достаточно.

Фоторезистор собрал на куске дешевой макетной платы. Провода сразу скручиваем в косичку чтобы случайно их не оторвать. Запаиваем провода на барометр. Экран, подсветку, модуль кнопок. Далее фиксируем все модули внутри корпуса, на винты, двухсторонний скотч и на термоклей. Ну на что хотите на то и фиксируйте, тут задача чтобы ничего не болталось и не съезжало со своих мест.

Останется только запаять всю эту торчащую красоту к плате Ардуино. 10 минут и готово. Паял все точно по схеме поэтому делаем все аккуратно и не ошибаемся. Чуть не забыл, надо установить батарейку в модуль часов, она будет питать микросхему реального времени при отключении внешнего питания и часы не сбросятся, а продолжат тикать.

Далее подключаем Ардуино к компьютеру, заходим на страницу проекта – ссылка на него есть в описании видео. Скачиваем архив с прошивкой, распаковываем его. Устанавливаем в программе модуль Arduino Nano и нужный COM-порт. И жмем «Загрузить». Но экран у меня не включился. Как оказалось, напутал контакты шины I2C подключенные к портам А4 и А5. Частая ошибка, поэтому выпаиваем провода и меняем их местами.

Теперь все включилось. На экране видим 2000 год и нули. Еще не хватает контрастности экрана. Поэтому отверткой настраиваем контраст, для этого есть подстроечный резистор сзади экрана.

Далее нужно установить время. Жмем синюю кнопку один раз и часы переходят в режим настройки. Тут можно настроить часы, минуты, секунды. Внизу находится установка будильника. Плюс или минус в конце обозначают включен будильник или нет. Установка года, месяца, даты и последняя настройка дня недели.

В прошивке также предусмотрена синхронизация секунд. Для этого переходим в режим установки секунд, ждем, когда реальное время станет 00 секунд и жмем кнопку вверх или вниз на часах. Секунды сбросились и время записалось.

Устанавливаем Ардуино на свое место и фиксируем ее от смещения на термоклей. Часы готовы. Заднюю крышку можно закрывать. В прошивке реализована смена отображения экранов. Сначала отображаются основные значения, а потом листается давление в миллиметрах ртутного столба, двойное отображение текущего времени – ну так чисто по приколу и текущая температура.

Зачем все это затевалось? Ну у меня на столе уже давно находится собранный китайский кит набор, но он чет надоел. Часы хорошие, но часто длительно показывают ненужную информацию, поэтому решил их заменить.

Клеим ножки и устанавливаем часики на свое место. Но чет не хватает. Да, надо печатнуть название. А то как же без этого. Установил в принтер желтый флуоресцентный пластик и напечатал название. Переношу буквы с помощью скотча, а клеить буду на уже привычный ацетон. Это же ABS. Кажется так себе выглядит, но стоит посветить на надпись ультрафиолетовым фонариком как она загорается, ну и в темноте она немного будет подсвечиваться. Крутяка получилась!

Ну что в итоге – законченный проект часов. С настройками и будильником. Когда срабатывает – мигает подсветка экрана и противно пищит целую минуту. Отключается любой кнопкой. Есть отображение температуры и давления. Корпус можно напечатать или взять готовый китайский.

В дальнейшем я планирую расширить функционал этих часов и добавить в них внешние беспроводные температурные датчики и график изменения давления. Т.е. доработать часы до полноценной погодной станции. Если вам понравился данный проект, то ставьте лайк и не забудьте подписаться на канал. Уже готовлю для вас новые классные видео! На этом сегодня все, всем пока-пока!

💣часы с термометром на arduino ✔️

часы с термометром на arduino .

Ардуино часы DS1302 и LCD 16x2 своими руками
Нажми для просмотра
В этом уроке я покажу вам как я подключаю модуль часов реального времени DS1302 и LCD 16×2 к ардуино уно, рассмо…
 
 
 
Тэги:
 
Часы с термометром на arduino  Nano.
Нажми для просмотра
Привет всем, решил сделать\пе еделать часы на arduino. Данные часы с термометро м один из первых моих начинаний.. .
 
 
 
Тэги:
 
⏰Часы на газоразрядных индикаторах своими руками
Нажми для просмотра
Поддержи мой канал! Скачивай Vikings: War of Clans и получи 200 💰голды и 🏥 бесплатный щит: ➤ Android: …
 
 
 
Тэги:
 
Часы, термометр и вольтметр в Мазда 2
Нажми для просмотра
Вот, наконец-то, закончил свой ПЕРВЫЙ проект по изготовлен ию устройства для своего автомобиля . Это устройст…
 
 
 
Тэги:
 
Часы с питанием  от li Ion на OLED 0.96 будильником, термометром ,влажностью и барометром
Нажми для просмотра
Часы li-ion на OLED » будильнико м, термометро м ,влажность и барометром …
 
 
 
Тэги:
 
Модуль часов DS3231: Обзор, подключение к Arduino, настройка и работа
Нажми для просмотра
Подробный обзор модуля RTC DS3231, схема подключени я к Arduino, установка времени, пример скетча для работы с часами…
 
 
 
Тэги:
 
Информер на матрицах 8x8 на чипе max7219
Нажми для просмотра
Информер на матрицах 8×8 на чипе max7219. Термометр на матрицах 8×8 на чипе max7219. Ссылки на используем ые …
 
 
 
Тэги:
 
Часы OLED 1.54 будильник,температура, влажность, давление, АКБ li-ion
Нажми для просмотра
Часы OLED » будильник, температур а, влажность, давление, АКБ li-ion.————- —————- Библиотека U8g2lib …
 
 
 
Тэги:
 

Нажми для просмотра
Видео про сборку простого термометра на базе arduino. Для этого необходим датчик DS18B20, который может…
 
 
 
Тэги:
 
Часы с будильником на OLED 0 96 термометром влажностью и барометром
Нажми для просмотра
Часы с будильнико м на OLED » термометро м ,влажность и барометром .Продолжен е уже с батареей : …
 
 
 
Тэги:
 
Часы на светодиодной матрице MAX7219 и arduino
Нажми для просмотра
Для сборки часов в этом варианте использова лось:Матри ный модуль 32×8 MAX7219Модуль часов DS3231Сенсорн ый датчик…
 
 
 
Тэги:
 
💡 Arduino - Сегментные светодиодные дисплеи - EP5
Нажми для просмотра
А давайте продолжим играться со светодиода ми? Ведь они бывают не только в форме лампочек, но и в виде диспле…
 
 
 
Тэги:
 
Часы на TM1637 и DS1302 с будильником.
Нажми для просмотра
Мой вариант часов на семисегмен тном индикаторе ТМ1637 с настройкой времени и будильника , а так же индикацией …
 
 
 
Тэги:
 
Как сделать большие часы
Нажми для просмотра
Видео обзор как сделать большие электронны е часы с термометро м и гигрометро м своими руками в домашних…
 
 
 
Тэги:
 
Часы будильник на MAX7219
Нажми для просмотра
Часы, будильник, термометр и гигрометр на MAX7219 В видео я оговорился — надо Р-Е подключить к 13 PIN -у….
 
 
 
Тэги:
 

Бюджетный GSM термометр на Arduino Nano

Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Команды можно отправлять через смс сообщения или вводить в командной строке монитора порта Arduino IDE.

Команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.
Пример команды:

AddPhone:2+71234567891risp
AddPhone:3+71234567892s
AddPhone:4+71234567893sp
AddPhone:5+71234567894r

Синтаксис команды:

AddPhone — команда
: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение о включении или отключении оповещения при изменении температуры
При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.


DeletePhone — Удалить номер телефона.
Пример команды:
DeletePhone:+71234567891

Синтаксис команды:

DeletePhone — команда
: — разделитель
+71234567891 — номер телефона


EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:
EditMainPhone:spri

Синтаксис команды:

EditMainPhone — команда
: — разделитель
srpi — параметры


RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:
RingTime:40

Синтаксис команды:

RingTime — команда
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.


ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:
ModemID:2

Синтаксис команды:

ModemID — команда
: — разделитель
2 — ID модема.


NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:
NetCheckTime:10

Синтаксис команды:

NetCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.


TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:
TempCheckTime:10

Синтаксис команды:

TempCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.


LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:
LowTemp:25

Синтаксис команды:

LowTemp — команда
: — разделитель
25 — температура


HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.
Пример команды:
HighTemp:60

Синтаксис команды:

HighTemp — команда
: — разделитель
60 — температура


WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:
WatchPowerTime:5

Синтаксис команды:

WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения


WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).

WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено

WatchPowerOff — выключить контроль внешнего питания

BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:

BalanceNum:#103#L24

Синтаксис команды:

BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.


Reboot — перезагрузка устройства (только Arduino)

ResetConfig — сброс настроек на заводские установки

ResetPhone — удаление из памяти всех телефонных номеров

FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.

GuardOn — включить оповещение при изменении температуры
GuardOff — выключить оповещение при изменении температуры

Info — проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о текущей температуре, нижней и верхней границах контроля температуры, о частоте автоматического обновления температуры, и о том с какого номера было включено или выключено оповещение при изменении температуры и текущее состояние.

TestOn — включается тестовый режим.
TestOff — выключается тестовый режим.

LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.

Money — запроса баланса.

ClearSms — Удалить из памяти все sms

ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов

Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

ListConfig — вывод в монитор порта текущей конфигурации устройства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *