Вай фай часы своими руками

Вай фай часы своими руками

Очень простые часы с WiFi Автор: himikat123
Опубликовано 14.05.2019
Создано при помощи КотоРед.
Простейшие часы с WiFi на ESP8266 и TM1637 Недавно я вдруг обнаружил, что у меня в спальне совершенно нет часов, а так же их нет в коридоре и в ванной. Пойти в магазин и купить часы — слишком просто. К тому же, такие часы нужно иногда подстраивать, переводить на летнее время.. Пришлось собрать свои часы, которые всегда ходят правильно, без моего вмешательства. Итак, основные требования к проектируемым часам:

  • Часы должны быть очень простыми.
  • Часы должны быть очень дешевыми.
  • Часы должны очень точно ходить.
  • Часы должны сами знать время, даже после отключения питания.
  • Часы не должны мешать спать по ночам.
  • У часов должны быть интуитивно понятные настройки.

На итог получились такие часы:

  • Минимум деталей. 2 модуля и 7 SMD деталей.
  • Прошивка без программатора и без необходимости что-то компилировать.
  • Точный ход часов, при наличии доступа в интернет. Благодаря синхронизации с NTP сервером.
  • Автоматический переход на летнее время, только если нужно.
  • Пониженая яркость дисплея в ночном режиме.
  • Возможность задания времени и яркости ночного и дневного режима.
  • Отображение температуры и влажности в доме.
  • Возможность коррекции показаний температуры и влажности.
  • Автоподключение к одной из 10-и сохраненных в памяти часов WiFi сетей.
  • Дистанционный доступ к настройкам часов.
  • Простые и понятные даже неподготовленному человеку настройки.
  • Возможность обновления прошивки по воздуху.

Схема получилась неприлично простой. Сердцем часов является модуль Wemos D1 mini — U1, это модуль на микросхеме ESP8266 со всей необходимой обвязкой, к тому же в данный модуль встроен преобразователь USB->UART и стабилизатор на 3,3V.

Дисплей U3 — светодиодный семисегментный дисплейный модуль, 0.56 дюймов, со встроенной микросхемой управления дисплеем TM1637. Конечно, можно применить дисплей и меньшего размера, но плата сделана под этот размер.

Резисторы R1, R2, а так же диод D1 служат для защиты выводов ESP8266 от перегрузки, можно заменить перемычками, но нежелательно. Фильтрующие конденсаторы C1-C4 можно не устанавливать, но тогда возможна нестабильная работа часов, зависания, сбои. Кнопки S1, S2 нужны сответственно для сброса и ввода часов в режим настроек. Кнопки, как вы уже догадались тоже можно не устанавливать.. Разъем J1 предназначен для подключения датчика (датчиков) температуры и влажности. Датчик(и) нужно расположить на расстоянии хотя бы 10 см от часов, так как часы в работе немного нагреваются, а датчики очень чувствительные. Если показания температуры и/или влажности вам не нужны, то датчики можно не устанавливать, соответственно разъем J1 тоже не будет нужен.

Читайте также:  Пропала опция вай фай виндовс 10

Питать часы можно например зарядкой от телефона, напряжением 5В, током 500 мА, с разъмом USB-micro.

Часы поддерживают следующие датчики: DS18B20, BME280 и SHT21 (HTU21D). Можно подключить один, а можно и сразу все датчики. В настройках можно выбрать каким датчиком что измерять. Датчик(и) подключае(ю)тся к разъему J1, назначение выводов указано на схеме. Можно подключить все поддерживаемые датчики параллельно и одновременно.

Плата изготовлена на заводе в Китае, заказывал ее на сайте http://jlcpcb.com, не реклама. С «лазерным утюгом» возиться не стал, так как нужно было сделать сразу много плат. К тому же платы обошлись совсем не дорого, 2$ за изготовление и 5$ за доставку. За эти деньги я получил 10 высококачественных плат, с паяльной маской и шелкографией.

После сборки, часы необходимо прошить. Воспользуйтесь инструкцией по прошивке http://esp8266.atwebpages.com/?p=flashing

Или посмотрите видеоролик о сборке и прошивке часов.

После сборки и прошивки часы нуждаются в настройке. При первом включении они сами входят в режим настроек. В дальнейшем, чтоб войти в настройки, нажмите и удерживайте кнопку SETTINGS, пока на дисплее не появится надпись «SEtt». Далее подключите Ваш ноутбук или телефон к сети «Clock» пароль «1234567890» и в браузере перейдите по адресу http://192.168.4.1
Имя пользователя по умолчанию «admin», пароль «1111».

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

Ну и на последок несколько фоток получившегося гаджета

Источник

Интернет часы на NodeMCU ESP8266 и OLED дисплее с определением времени по протоколу NTP

Модули часов реального времени (Real Time Clock, RTC) находят широкое применение в современной электронике для определения текущего времени и даты. Но недостатком данных модулей является то, что они не всегда обеспечивают требуемую точность определения даты и времени. При этом они могут определять только время на локальном устройстве. В данном случае использование решений, основанных на получении точного времени с серверов NTP, обеспечивает большую точность измерения времени и позволяет производить определение точного времени в любой точке земного шара.

Для реализации этой идеи можно использовать Wi-Fi модуль, который будет подключаться к сети интернет и определять время в любой точке Земли с помощью серверов NTP. В данной статье мы рассмотрим использование платы NodeMCU ESP8266 (будет выполнять роль Wi-Fi модуля) для считывания текущего времени и даты с серверов NTP и их отображения на экране OLED дисплея.

Читайте также:  Realtek rtl8102e wifi драйвер

Также на нашем сайте вы можете посмотреть все проекты с использованием систем реального времени.

Необходимые компоненты

  1. NodeMCU ESP8266 (купить на AliExpress).
  2. SSD1306 0.96” OLED дисплей с 7 контактами (купить на AliExpress).
  3. Кабель micro USB.
  4. Макетная плата.
  5. Соединительные провода «папа-папа».

Протокол NTP

Протокол сетевого времени (Network Time Protocol, NTP) – это самый старый протокол, который появился в IP сетях для синхронизации времени между компьютерными сетями. Он был разработан ученым David L. Mills в университете Delaware в 1981 году. Данный протокол может быть использован для синхронизации времени различных сетей к всеобщему скоординированному времени (Coordinated Universal Time, UTC) с точностью до нескольких миллисекунд. UTC – это основной стандарт времени в современном мире, который регулирует время и дату. Протокол NTP использует UTC в качестве системного времени и обеспечивает точное синхронизированное время во всей сети Интернет.

Протокол NTP работает на основе иерархической модели клиент-сервер. На самом верхнем уровне этой модели используются системные часы известные как “stratum0”, в качестве которых могут использоваться атомные часы, радиоволны, GPS, GSM, которые получают сигналы времени от спутника. Серверы, которые получают сигналы времени от stratum0, называются “stratum1”, а серверы, которые получают сигналы времени от stratum1, называются “stratum2” и т.д. Это приводит к тому, что точность времени уменьшается при переходе вниз по уровням модели. При этом протокол NTP автоматически выбирает самый лучший из доступных серверов времени для синхронизации, что обеспечивает хорошую отказоустойчивость данного протокола.

В данном проекте мы будем получать точное время от сервера NTP с помощью платы NodeMCU ESP8266 и показывать его на экране OLED дисплея. Также на нашем сайте вы можете прочитать статью о подключении OLED дисплея к NodeMCU ESP8266.

Модуль ESP8266 может получать доступ к серверам NTP для считывания с них точного времени используя доступ к сети интернет. В нашем случае мы будем использовать протокол NTP в режиме клиент-сервер. NodeMCU ESP8266 будет работать в качестве клиентского устройства и соединяться с серверами NTP с помощью протокола UDP (User Datagram Protocol – протокол передачи дейтаграмм пользователя). Клиент передает пакет запроса на сервер NTP, который в ответ передает ему пакет с временной меткой, содержащий информацию о точности, временной зоне, временной метке UNIX и т.д. Затем клиент выделяет из этой совокупности информации необходимую ему дату и время и далее использует эту информацию по своему усмотрению (в нашем случае отображает на экране OLED дисплея).

Читайте также:  Радар fujida karma duos wifi

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

Схема интернет часов на NodeMCU ESP8266 и OLED дисплее представлена на следующем рисунке.

OLED дисплей в нашем проекте подключается к NodeMCU ESP8266 по протоколу SPI. Полная схема соединений между NodeMCU ESP8266 и OLED дисплеем представлена в следующей таблице.

OLED дисплей NodeMCU ESP8266
GND GND
VDD 3.3V
SCK D5
MOSI (SPI) или SDA (I2C) D7
RESET D3
DC D2
CS D8

Более подробно о подключении OLED дисплея к NodeMCU ESP8266 можно прочитать в этой статье.

Объяснение программы для модуля ESP8266

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Сначала в программе нам необходимо скачать и установить библиотеку NTP для модуля ESP8266 – таких библиотек достаточно много, вы можете использовать любую из них. Мы в данном проекте использовали библиотеку NTPClient от разработчика Taranais (скачать ее можно по этой ссылке) – она достаточно проста в использовании и содержит функции для получения времени и даты с серверов NTP. Плату ESP8266 NodeMCU мы будем программировать с помощью Arduino IDE.

Для установки библиотеки NTPClient скачайте ее по вышеприведенной ссылке, затем в Arduino IDE откройте пункт меню to Sketch > Include Library > Add .ZIP Library и укажите путь к папке, куда вы скачали Zip архив библиотеки. После этого перезагрузите Arduino IDE.

Библиотека NTPClient содержит примеры, открыть которые можно в пункте меню Examples > NTPClient > Advanced. Код в скетче данного примера позволяет считывать время с NTP сервера и отображать его в окне монитора последовательной связи. Мы возьмем код этого скетча за основу программы для нашего проекта и будем отображать текущее время и дату на OLED дисплее.

Библиотека ESP8266WiFi содержит Wi-Fi функции, позволяющие модулю ESP8266 подключаться к сети интернет. WiFiUDP.h содержит функции для передачи и приема UDP пакетов. Поскольку OLED дисплей мы подключаем к нашей плате NodeMCU ESP8266 по интерфейсу SPI, то нам необходимо в программе подключить библиотеку “SPI.h”. Библиотеки “Adafruit_GFX.h” и “Adafruit_SSD1306.h” будут использоваться для взаимодействия с OLED дисплеем.

Источник

Оцените статью
Adblock
detector