RSS блога
Подписка
Дисплей на TM1637, часы с синхронизацией по NTP и программирование "народных" WiFi в среде Ардуино
- Цена: $1.42
- Перейти в магазин
Сначала хотел посвятить свой «юбилейный» 50-й обзор ESP8266 ES07 купленных за очень «вкусную» цену вместе с платами-адаптерами. Но обзор этих модулей я уже делал. Здесь же хочу рассказать, как можно делать свои поделки, в частности часы на семисегментном индикаторе, программируя эти «народные» WiFi в популярное среде Arduino IDE
Начнем с модулей:
Для своих проектов я искал семисегментные индикаторы, яркие и компактные. Сделал ряд проектов на индикаторах с драйверами MAX7219
Недавно покупая на Алиэкспрессе всякую мелочевку наткнулся на эти индикаторы, на микросхеме TM1637. Мне понравилось компактное исполнение, невысокая цена и управление всего по двум проводам. Заказал парочку вместе с кучей других деталек.
Модули приехали запаянные в пакетики
Характеристики:
Четыре штырьковых контакта для подключения:
VCC — питание, GND — земля и два управления CLK и DIO по аналогии с интерфейсом I2C. Большое спасибо, что контакты идут вбок, а не вверх, как на некоторых платах.
Вместе в посылке пришли и ESP8266 ES07, о которых упоминал в начале статьи. Подробно написал про них в своем блоге.
Последнее время много ковырялся с ESP-шками и решил опробовать индикаторы именно с ними. Особенностью данной реализации стало программирование из среды Arduino IDE.
Настройка Arduino IDE для работы с ESP8266 хорошо описана здесь
Хочу немного добавить, что купленные мною модули ESP-07 распаянные на платы-адаптеры уже практически готовы к использованию. Подключаем TX/RX и GND к TTL-USB конвертеру, например, такому. Подключаем питание 3.3В к VCC. Для загрузки прошивки GPIO0 присоединяем к земле. Собственно и все. Подключить GPIO0 и RESET к данному конвертеру у меня не получилось, но это оказалось не сильно нужно. При подсоединенном GPIO0 к земле ESP находится в режиме загрузки прошивки во флэш-память, но после загрузки происходит запуск программы без отсоединения данного GPIO. Это позволяет вполне комфортно отлаживать свою программу. Нужно перед загрузкой только перезагрузить модуль передергиванием питания или кратковременно подав на вывод RESET на землю. Для этого можно припаять специальную кнопку.
На фотке немного другой модуль ES12 из предыдущей партии. Конденсатор установлен для повышения стабильности работы. Последние модули использую без них.
Итак модуль подключен, среда настроена. Для ES07 все настройки ESP8266 ставятся «по умолчанию»:
Для работы с дисплеем на TM1637 я взял готовую библиотеку для Ардуино DigitalTube. «По умолчанию», дополнительные библиотеки устанавливаются в каталог: «Мои документы\Arduino\libraries\». Чтобы оправдать использование WiFi-модуля, эти часы буду синхронизировать время с NTP сервером в интернете.
Подключаем ESP, дисплей к CLK -> GPIO4, DIO ->GPIO5, стабилизатор 3.3В и USB-TTL конвертер макетными проводами
Грузим скетч, который можно взять здесь.
Настраиваем параметры своей точки доступа: AP_SSID и AP_PASS, свою таймзону TIMEZONE. У меня установлена для Перми/Екатеринбурга. Для Москвы будет 3.
Функцией tm1637.set(2) устанавливаем необходимую яркость индикатора от 0 до 7.
Компилируем:
Готово. Часы показывают часы и минуты, мигая двоеточием. Время точное из интернета, синхронизируется с NTP сервером. При длительном отсутствии соединения происходит перезагрузка ESP-шки.
В корпус все это делать не стал, так как это только прототип для будущего проекта.
Прочитать об этом можно будет в моем блоге
Полезные ссылки
Начнем с модулей:
Для своих проектов я искал семисегментные индикаторы, яркие и компактные. Сделал ряд проектов на индикаторах с драйверами MAX7219
Недавно покупая на Алиэкспрессе всякую мелочевку наткнулся на эти индикаторы, на микросхеме TM1637. Мне понравилось компактное исполнение, невысокая цена и управление всего по двум проводам. Заказал парочку вместе с кучей других деталек.
Модули приехали запаянные в пакетики
Характеристики:
- Питание 3.3 — 5.5В
- Потребляемый ток 0.2 — 80мА (в зависимости от горящих сегментов)
- Градаций яркости индикаторов — 8
- Размеры платы: 42x24мм
Четыре штырьковых контакта для подключения:
VCC — питание, GND — земля и два управления CLK и DIO по аналогии с интерфейсом I2C. Большое спасибо, что контакты идут вбок, а не вверх, как на некоторых платах.
Вместе в посылке пришли и ESP8266 ES07, о которых упоминал в начале статьи. Подробно написал про них в своем блоге.
Последнее время много ковырялся с ESP-шками и решил опробовать индикаторы именно с ними. Особенностью данной реализации стало программирование из среды Arduino IDE.
Настройка Arduino IDE для работы с ESP8266 хорошо описана здесь
Хочу немного добавить, что купленные мною модули ESP-07 распаянные на платы-адаптеры уже практически готовы к использованию. Подключаем TX/RX и GND к TTL-USB конвертеру, например, такому. Подключаем питание 3.3В к VCC. Для загрузки прошивки GPIO0 присоединяем к земле. Собственно и все. Подключить GPIO0 и RESET к данному конвертеру у меня не получилось, но это оказалось не сильно нужно. При подсоединенном GPIO0 к земле ESP находится в режиме загрузки прошивки во флэш-память, но после загрузки происходит запуск программы без отсоединения данного GPIO. Это позволяет вполне комфортно отлаживать свою программу. Нужно перед загрузкой только перезагрузить модуль передергиванием питания или кратковременно подав на вывод RESET на землю. Для этого можно припаять специальную кнопку.
На фотке немного другой модуль ES12 из предыдущей партии. Конденсатор установлен для повышения стабильности работы. Последние модули использую без них.
Итак модуль подключен, среда настроена. Для ES07 все настройки ESP8266 ставятся «по умолчанию»:
Для работы с дисплеем на TM1637 я взял готовую библиотеку для Ардуино DigitalTube. «По умолчанию», дополнительные библиотеки устанавливаются в каталог: «Мои документы\Arduino\libraries\». Чтобы оправдать использование WiFi-модуля, эти часы буду синхронизировать время с NTP сервером в интернете.
Подключаем ESP, дисплей к CLK -> GPIO4, DIO ->GPIO5, стабилизатор 3.3В и USB-TTL конвертер макетными проводами
Грузим скетч, который можно взять здесь.
Настраиваем параметры своей точки доступа: AP_SSID и AP_PASS, свою таймзону TIMEZONE. У меня установлена для Перми/Екатеринбурга. Для Москвы будет 3.
Функцией tm1637.set(2) устанавливаем необходимую яркость индикатора от 0 до 7.
Компилируем:
Готово. Часы показывают часы и минуты, мигая двоеточием. Время точное из интернета, синхронизируется с NTP сервером. При длительном отсутствии соединения происходит перезагрузка ESP-шки.
В корпус все это делать не стал, так как это только прототип для будущего проекта.
Прочитать об этом можно будет в моем блоге
Полезные ссылки
- Даташит на TM1637
- Библиотека для работы с TM1637 для Arduino
- Работа с ESP8266 в Ardiono IDE
- Описание NTP протокола
Самые обсуждаемые обзоры
+72 |
3423
140
|
+51 |
3619
66
|
+31 |
2589
50
|
+38 |
2985
41
|
+55 |
2065
37
|
А
ж...лапами на кнопки нажимает. Вчера умудрился выключить ноутПошел читать про 8266 в Arduino IDE, оттуда набрел на blink под 8266, и понял что погиб… Теперь только один вопрос остался: локальный blink сервер сейчас поднимать, или до утра подождать?.. :)
И если, скажем, у Blynk нет опции вытащить виджеты на экран смартфона, то это печально.
А в остальном да, у Zoom нет ни модных хипстеров, ни красивых графиков. Кнопочки и те — базовые (но можно, насколько понимаю, рисовать свои). Зато и библиотек дополнительных в Arduino не требуется.
P.S. Контакты под конвертор на 3.3 v
А более мощные в корпусах типа SOT223 явно велики
Думаю как собрать на этих модулях web-радио, потому как на ардуине и мп3 декодере уже есть проект, а вот без проводов пока нету…
Самое сложное в ардуиностроении — это придумать, что бы из него построить (кроме мигающего светодиода). Я НАШЕЛ для себя маленькую задачку (но не скажу какую — а то опередите и обзор запилите :)
Из минусов — запаивал гребенку на ардуину нано — БЛИН, КАК ЖЕ Я ПОСТАРЕЛ! Зрение село так, что паять пришлось практически на ощупь :( Но опыт еще не пропил — все заработало с первого раза :) Жду когда придут все запчасти, тестирую подключение пришедших датчиков. Пугаю жену проводами и железками на столе…
ps Да, СПАСИБО.
Мигать светодиодом по WiFi на порядок круче! )))
Standby 0.9 mA
Deep sleep 10 uA
Power save mode DTIM 1 1.2 mA
Power save mode DTIM 3 0.86 mA
Total shutdown 0.5 uA
Кстати — кто подскажет — можно как то протокол этого блютуза перехватить-логгировать? А то, во первых, у них (рэдмонда) приложение только под андроид 4.3 и выше (у меня же все китайские телефоны максимум 4.2), а во вторых — блютуз — это совсем для ленивых. Надо бы по езернету… И такое есть у них — но за отдельные деньги (не сам чайник, а примочка, которая к сети подключается и уже сама блютузом управляет чайником).
Сервой ее нажимать по WiFi управляемой )))
Кран, правда, придется заранее смонтировать над местом установки чайника — но это, увы, издержки прогресса… :)
Это так, навскидку. Может и еще что понадобится.
линк
Если сравнивать не с WiFi роутерами на АРМах, а с той же Atmega328 которая в Ардуинах пашет — так 30К свободной памяти просто море. Особенно если не работать с прошивками со встроенными интерпретаторами LUA и JS.
Самая главная проблема, с которой я лично встретился, это при большом времени выполнения пользовательских функций срабатывает сторожевой таймер.
— eps8266 построен на Tensilica Xtensa LX3 32-bit SOC clocked at 80 MHz
— Atmega328, 8 bit at 16MHz
30K как не серьезно для 32-bit чипа с раб. частотой 80 MHz
согласен. но именно с ними все и работают а потом плюются
ну так
Я тоже из тех, кто начинал с ModeMCU и плевался )))
Потом попробовал SDK. Эклипс даже поставил.
Сейчас вот Arduino IDE использую — быстрая в развертывании среда получается.
Сейчас собираю автомат световых эффектов на WS2812 с загрузкой файлов с эффектами на SD-карточку через WEB-интерфейс по воздуху. Вполне ресурсов хватает пока.
Линейный стабилизатор на 1А 3.3В. Главное на вход сильно большое напряжение не давать, иначе греться будет
То есть, всегда на секунду отстают минимум )
Да и смысл в большей точности, если время отображается с точностью до минут?
Хочу выразить Алексею огромную благодарность за его публикации. Благодаря им я для себя открыл огромный мир ардуино.
Не было бы счастья да несчастье помогло. Часики что на фото с успехом работали с лета прошлого года — они развитие проекта Алексея — погодной станции. Но вот в один прекрасный день при неосторожном обращении с платкой сервера приказала долго жить микруха контроллера ethernet. Часики потеряли свою основную фишку — синхронизацию с ntp. К счастью (еще раз спасибо Алексей!) подошли модульки ESP07 с Ali, плюс валялись без дела (ждали своего часа) купленные впрок на Banggod 'e три модуля ESP11. В результате на коленке были собраны два устройства — первое: часы с 2мя dht22 и с bmp085 на модуле ESP07, часы с будильником (выход 13) показывают время, дату, день недели, месяц, температуру и влажность снаружи и внутри, и давление, управление будильником и отображение через смартфон (Blynk). второе: часы с будильником с синхронизацией по ntp. В качестве ntp клиента используется модуль ESP11 подключенный к ардуино по serial (часы на фото). Скетчи в архиве Ну и по традиции — «Все под пристальным контролем скоттишстрайта Алисы»
2. Wire для ESP вешается на любые два GPIO и их нужно правильно прописать
Вот мой последний проект на TM1637 и ESP со схемами и скетчем
samopal.pro/esp8266-hcontroller3/
1. Переход на 1.6.5 позволил устранить некоторые глюки, но ТМ1637 так и не завелась… Смог завести 0,96 OLED дисплей, так что результат получен. Но тем не менее проблему найти не удалось.
2. Вы имеете ввиду инициализацию TM1637 или настройку I2C командой
Если первое, то все подключено согласно скетчу и не работает. Если второе, то добавляю и программа зависает на строке tm1637.init(); да и в Вашем скетче из этой статьи библиотека wire не используется. Тем более что библиотека tm1637 простой «ногодрыг» реализует, там просто нечему не работать. Но не работает…
Помогите понять, что вообще TMке не нравится, я уже всю голову сломал.
P.S. Ваш блог понравился, кошак тоже.
P.P.S. Забыл указать что проблема только с индикатором, время с сервера в сериал монитор получаю стабильно при заливке Вашего скетча.
2. Были платы, у которых 4 и 5 выводы перепутаны. Может ваш случай?
Больше идей на ум не приходит пока
Пины я менял, да и блинком со светодиодом протестил все порты платы, тут проблем нет.
Может у Вас есть пример управления этим дисплеем без библиотеки через digitalWrite и циклы? А то я не разобрался в даташите настолько, чтобы самому написать.
ntp-clock:44: error: 'ConnectWiFi' was not declared in this scope
ntp-clock:68: error: 'GetNTP' was not declared in this scope
ntp-clock:79: error: 'DisplayTime' was not declared in this scope
и т.д.
Что-то мне подсказывает, что корявую библиотеку, видимо, поставил.
Не подскажете, в каком направлении копать?
Заранее, спасибо!
Arduino IDE 1.6.5
ESP8266 Core 2.1.0
Действительно, почему-то на новой версии скомпилировать не удалось, а с 1.6.4 все с полпинка. Но…
при загрузке компилируется без проблем, а дальше
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
У меня просьба:
не могли бы поделиться Arduino IDE 1.6.5 с установленными библиотеками?
Заранее, спасибо!
Помогло www.youtube.com/watch?v=Oege0dtduHo
Просто валялось пару ненужных есп-шек, купил TM1637, чтобы хоть куда их приткнуть.
Правда, DS3231 и без синхронизации способна годами точно идти.
Если делать из ленты дисплей, рекомендую посмотреть в сторону лены на WS2812
Схема получиться простейшая и управление по одному проводу
На крайней случай подключить сегменты из лент через феты напрямую к ногам ардуины
Моменты:
1. TM1637 вместо своего ACK на шине при приеме байта требует 0 (долго промучился, пока вкурил).
2. К четырехразрядному модулю можно подключить ещё 2 внешних разряда с общим анодом или 16 отдельных светодиодов.
3. К ней можно прицепить аж 16 кнопок (антидребезг аппаратный в TM1637) — и это всё по двум проводам SCL и SDA.
4. Хотя даташит и гласит, что не распознаётся нажатие 2 и более кнопок — если кнопки на 1 сегменте, то можно определить по K1 и K2 нажатие сразу двух кнопок — это позволяет ПОДКЛЮЧИТЬ ЭНКОДЕР! и юзать аппаратный антидребезг — что и было сделано и проверено.
Итого:
Модуль TM1637 по цене голого семисегментника — отличный вариант для подключения 4(6) разрядного индикатора, до 16 светодиодов, энкодера с нажатием (а может и нескольких — зависит от мастерства программиста), да ещё 13 всяких кнопок…
И всё это по двухпроводной шине.
Спасибо за разжевывание по-русски: www.chipmaker.ru/blogs/entry/2170/
Управление очень похожее, но:
1. К ней можно подключить 7 с общим катодом или 10 с общим анодом индикаторов.
2. Поддерживает уже 20 кнопок (или энкодер + 17 кнопок).
Надо как-нибудь помучить (потестить) её…
Типа такого: cxem.net/mc/mc419.php