Не очень простые часы на матричных индикаторах, зато с музык

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Ёшкин кот, нашел ошибку в сообщении про подключение радиодатчика! Приношу свои извинения! Вместо
AndyKorg писал(а):...
Со стороны часов приемник работает всегда. Что бы обеспечить такой режим работы надо ногу CE модуля nRF24L01+ соединить с землей. Подключение остальных выводов модуля к часам показано на рисунке.
....
надо читать "с ногой питания модуля"
Реклама
Встал на лапы
Сообщения: 118
Зарегистрирован: Пт ноя 13, 2009 01:27:57

Сообщение почемучка »

Теперь и я все понял. Спасибо за разъяснения. Буду собирать и тестить. Жду обновлений. Модуль nRF24L01+ уже приехал, esp-01 на подходе. Удачи.
Реклама
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Представляю вниманию уважаемой публики интернет-добавку в коктейль чипов под общим названием «матричные часы с музыкой». Пока эта добавка обеспечивает только получение времени с серверов точного времени. В дальнейшем планируется подцепить веб-сервер для управления часиками.
Работа с Интернетом происходит через модeль ESP-01 фирмы Espessif systems (голимый Китай, зато дешево) посредством так называемой АТ-прошивки. Общий принцип действия таков: МК в часах читает с SD-карточки из файла wifi.cfg команды и передает их на выполнение в модуль ESP-01. Модуль выполняет команды, а ответы отправляет обратно в МК часов. Все это дело происходит через последовательный интерфейс (UART).
Сначала немного о материальной реализации. Поскольку питание МК у нас 5 В, а модуль esp требует только 3.3В максимум, организован небольшой переходник. Этот самый переходник согласовывает уровни на выводе RTX микроконтроллера часов и модуля esp. Кроме того на переходнике установлен линейный стабилизатор для обеспечения питания модуля esp. С питанием пришлось немного рискнуть. У меня из маленьких корпусов стабилизаторов на 3.3В был только MCP1702, а у нее максимальный ток 250 мА Поскольку по паспорту модуль esp может жрать до 215 мА, а то и больше, то тут возможны эксцессы.
Физически модуль выглядит так: Изображение
Подключать к часам очень просто – питание на питание ? (на печатной плате рzдом с кварцем стоит блокировочный керамический конденсатор, питание можно взять с него) Вывод RXD wi-fi модуля соединяем с выводом TXD часов. А вывод TXD модуля соответственно с модулем RXD часов. (на плате часов есть контактные площадки подписанные RXD и TXD, опять же рядом с кварцем.)
Теперь о нематериальом. Алгоритм взаимодействия с модулем esp вынесен в файлы esp8266hal.h и esp8266hal.c (esp8266 это название чипа в модуле esp-01)
При запуске часов проверяется наличие модуля на шине UART. Для этого посылается команда «АТ», если модуль ответит «ОК» то считается, что модуль esp установлен. В результате в меню после пункта настройки шрифта управления часами появляются пункты «часовой пояс» и «взять время из интернета».
В пункте «часовой пояс» нужно указать в каком часовом поясе UTC находятся часы с точностью до часа (поэтому на острове Норфолк часовой пояс установить не получится ? )
Затем в следующем пункте меню с помощью кнопки «ОК» запускаем процедуру получения времени из Интернета. При этом бегущая строка «взять время из интернета» сменится на мигающее «ждем». Если будут какие-то эксцессы то будет выведен текст ошибки с проблемой. (Ошибки с файловой системой SD-карты выводятся в виде кода «e2» - либо карты нет, либо диск не удалось открыть, либо файла wifi.cfg нет)
В случае же нормального завершения операции появится строка «время загружено». На этом ручной запрос времени заканчивается.
Автоматический запроса времени из Интернета происходит каждую неделю в субботу в 10 часов 10 минут утра. (Настраивается только через перекомпиляцию прошивки в define INET_TIME_DAY, INET_TIME_HOUR, INET_TiME_MINUTE в файле Clock.h)
Теперь немного о командах в файле wifi.cfg
Файл представляет собой обычный текст. Каждая строка файла это одна команда. Строка разделена символами вертикальной черты (“|”) на три части. Первая часть собственно сама АТ-комнада передаваемая в модуль esp. (Список АТ-команд esp можно посмотреть на фан сайт esp8266 на русском )
Вторая часть это ожидаемый ответ от модуля esp. В случае если в течение определенного времени от модуля esp ожидаемого ответа не будет получено, то на дисплей выводится третья часть команды.
Третья часть команды может начинаться со знака вопроса. Знак вопроса в первой позиции третей части имеет специальное (сакральное ?) значение, он играет роль оператора if-error. Если выполнение строки пройдет без ошибок, то следующая строка пропускается. В случае же ошибки на дисплей ничего не выводится, а на выполнение отправляется следующая строка.
Например такой кусок текста:
Строка 1:

Код: Выделить всё

AT+CIPSTATUS|STATUS:4+CIPSTATUS:0,"UDP","128.138.141.172",37,34000,0OK|?
Строка 2:

Код: Выделить всё

AT+CIPSTART="UDP","128.138.141.172",37,34000|0,CONNECT|Нет соединения с ntp сервером
Строка 3:

Код: Выделить всё

AT+CIPSEND=3|>|модуль не готов к передаче
Если при выполнении команды из строки 1 «AT+CIPSTATUS» микроконтроллер часов так и не дождется ответа «STATUS:4+CIPSTATUS:0,"UDP","128.138.141.172",37,34000,0OK» от модуля esp, следующей командой будет «AT+CIPSTART="UDP","128.138.141.172",37,34000» из строки 2.
Если же команда из строки 1 выполнится с сообщением «STATUS:4+CIPSTATUS:0,"UDP","128.138.141.172",37,34000,0OK» т.е. верно, то будет выполнена команда из строки 3 «AT+CIPSEND=3», а не из строки 2.
Так же существует специальная команда таймаута представленная символом «@» Если такой символ будет встречен в первой позиции строки то все данные поступившие от модуля esp за следующие 5 секунд будут проигнорированы. Точнее почти все, кроме данных начинающихся со строки «+IPD,» Команда «+IPD,» от модуля esp говорит о том что приняты какие-то данные по wifi и выдает эти самые данные. На этом про прошивку все.
Описание программы в файле wifi.cfg
-- Сброс модуля.

Код: Выделить всё

AT+RST|OK|Нет ответа от модуля  
-- Ожидается 5 секунд, что бы пропустить лишний выхлоп от модуля со всякими дурацкими данными -- Проверка версии прошивки модуля

Код: Выделить всё

AT+GMR|0020000903|Версия прошивки модуля не поддерживается
-- Проверка текущего режима (должен быть режим АР+ST – точка доступа и клиент wifi)

Код: Выделить всё

AT+CWMODE?|+CWMODE:3|? 

–- Включение режима AP+ST если предыдущая команда выполнилась с ошибкой

Код: Выделить всё

AT+CWMODE=3|OK|Режим AP-ST не включился
-- Проверка подключения к сети с именем "default"

Код: Выделить всё

AT+CWJAP?|+CWJAP:"default"|?
-– если подключения к сети "default" нет, то подключаемся

Код: Выделить всё

AT+CWJAP="default","пароль"|OK|Не удалось подключится к сети WiFi 
-- Подождем 5 секунд для подключения -– Проверяем наличие подключения к серверу точного времени "128.138.141.172"

Код: Выделить всё

AT+CIPSTATUS|STATUS:4+CIPSTATUS:0,"UDP","128.138.141.172",37,34000,0|OK|? 
-- Если подключения к серверу нет, то подключаемся

Код: Выделить всё

AT+CIPSTART="UDP","128.138.141.172",37,34000|0,CONNECT|Нет соединения с ntp сервером
–- Подготовить модуль к передаче 3 байт. Протокол обмена на порту 37 (порт сервера точно времени) требует, что бы был отправлен любой символ на порт 37. В этой команде как раз и указывается длина передаваемых данных в три символа: сам символ и два служебных - возврат каретки и переводы строки.

Код: Выделить всё

AT+CIPSEND=3|>|модуль не готов к передаче
-- Отправляем эти самые символы. Букву «D» и возврат каретки и перевод строки. Служебные символы добавляет прошивка.

Код: Выделить всё

D|SEND OK|передача не удалась 
-- Ожидается ответ. Все данные игнорируются за исключением тех что придут по команде +IPD –- Закрывается соединение.

Код: Выделить всё

AT+CIPCLOSE|CLOSED|Закрытие соединения не удалось 
Как настроить файл wifi.cfg для своей сети или для другого сервера времени.
Для задания имени и пароля своей wi-fi сети необходимо в строках
AT+CWJAP?|+CWJAP:"default"|? код
AT+CWJAP="default","пароль"|….
вместо слова default указать имя своей сети, а вместо слова пароль указать пароль от сети. Например для сети с именем «kvartia12» и паролем «secret» строки будут выглядеть так:

Код: Выделить всё

AT+CWJAP?|+CWJAP:"kvartia12"|?
AT+CWJAP="kvartia12","secret"|OK|Не удалось подключится к сети WiFi
Изменить адрес сервера точного времени можно в строках

Код: Выделить всё

AT+CIPSTATUS|STATUS:4+CIPSTATUS:0,"UDP","128.138.141.172",37,34000,0
AT+CIPSTART="UDP","128.138.141.172",37,34000
Вместо «128.138.141.172» вписать IP другого сервера времени.
На этом про работу с esp все.
В прошивке учтены пожелания уважаемого «protek5512» – убран незначащий ноль в температуре. Так же исправлен вывод минусовой температуры.
Насчет переделки бегущей строки пока думаю, мне счас интереснее прикрутить веб-сервер, поэтому немного отложу переделку этого.
Видео с настройкой и получением времени из Инета
Вложения
схема и печатка модуля.rar
(7.61 КБ) 748 скачиваний
Прошивка esp8266.rar
(134.8 КБ) 679 скачиваний
Прошивка.rar
(56.74 КБ) 583 скачивания
Исходники.rar
(161.2 КБ) 764 скачивания
Последний раз редактировалось AndyKorg Вт фев 03, 2015 10:10:01, всего редактировалось 1 раз.
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Про прошивку модуля esp-01. Дело в том, что ПО модуля активно развивается и на момент разработки часов актуальная была версия 0.2 на основе SDK версии 0.9.3 В новые прошивки добавляют как функции так и баги. Поэтому берем файл прошивки из предыдущего сообщения. И файл утилиты заливающей прошивку в модуль отсюда
Помимо самого модуля нужен Com-порт с выходным напряжением 3.3 В. Можно и 5В, но тогда надо или через переходник или согласовать уровень на выводе TX порта. У меня есть плата Pinboard от easyelectonics, там это все уже есть.
Прошиваем следующим образом:
1. Подключаем esp-01 так: вывод GPIO0 сажаем на землю, TX и RX к переходнику. Ногу CH_PD на питание +3.3В
2. Подаем питание.
3. Запускаем утилиту esp8266_flasher.exe
4. Указываем порт в поле ввода, там где написано «COM1»
5. Нажимаем кнопку “Bin” и выбираем файл прошивки. Файл прошивки должен лежать в корне диска.
6. Нажимаем кнопку «Download». Должна появится надпись «что-то там erase» и побегут цифры загрузки. В конеце загрузки может быть сообщение об ошибке. Не обращайте внимания на это дело.
7. Снимаем с ноги GPIO0 землю.
Пробуем подсоединится к модулю через ком-порт на скорости 115200 с помощью любой терминальной программы.
В ответ на символы «АТ»+возврат каретки+перевод строки модуль должен ответить «ОК»
Проверяем версию прошивки командой «AT+GMR» модуль должен ответить строкой 0020000903
Можно также выполнить вручную команды из файла wifi.cfg что бы проверить как работает wi-fi и вообще сеть.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 118
Зарегистрирован: Пт ноя 13, 2009 01:27:57

Сообщение почемучка »

УХ ты! Очередное обновление. За Вами не угонешся. Спасибо.
Возникло пару вопросов :
1. Какие фьюз биты ставить в ATtiny13 для термодатчика ?
2. Где брать файл wifi.cfg ?
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 234
Зарегистрирован: Сб ноя 21, 2009 18:23:26
Откуда: Донбасс

Сообщение protek5512 »

Доброго здравия! Перепрошил и не понял,вместо показаний температуры отображаются 0 при настройке датчиков показания нормальные но с незначищами нулями,прошил старую там хоть с нулями но корректно после перепрошивок так-же происходит потеря карты и пульта.
Реклама
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

почемучка писал(а):...1. Какие фьюз биты ставить в ATtiny13 для термодатчика ?
Для averdude часть командной строки должна выглядеть так:

Код: Выделить всё

-U lfuse:w:0x7a:m -U hfuse:w:0xff:m
почемучка писал(а):...2. Где брать файл wifi.cfg ?
как всегда - забыл приложить, извиняюсь, прикладываю.
protek5512 писал(а):Перепрошил и не понял,вместо показаний температуры отображаются 0 при настройке датчиков показания нормальные ...
Т.е. при настройке значения датчиков отображаются. а в бегущей строке нули? Правильно я понял? И еще уточните пожалуйста какие датчики подцеплены и через какой интерфейс.
protek5512 писал(а):...происходит потеря карты и пульта.
Потеря карты это имеется в виду что карта не опознается в слоту после подачи питания, верно?
Настройки пульта не сохраняются и после передергивания питания надо настраивать заново, верно я понял?
Вложения
wifi.rar
(438 байт) 499 скачиваний
Прорезались зубы
Аватара пользователя
Сообщения: 234
Зарегистрирован: Сб ноя 21, 2009 18:23:26
Откуда: Донбасс

Сообщение protek5512 »

Доброго здравия!Да показания датчиков в меню настройки правильные с присутствием не значещего нуля, датчики 0-лм35, 1-18б20.
Пропадание настроек пульта и карты происходит при пропадании сети они не регулярны через раз.Да настраивать приходится с нуля .
Прорезались зубы
Аватара пользователя
Сообщения: 234
Зарегистрирован: Сб ноя 21, 2009 18:23:26
Откуда: Донбасс

Сообщение protek5512 »

Что случилось? Где продолжение банкета?
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

protek5512 писал(а):Что случилось? Где продолжение банкета?
Приношу свои глубочайшие извинения. Никак не соберусь все собрать в кучу и опубликовать. Торжественно клянусь в эти выходные исправится. Если успею то добавлю измерение давления на BMP180. Пока предлагаю развлечься просмотром видео работы наших часиков в паре с web-интерфейсом.
Еще раз извиняюсь. :facepalm:
Родился
Сообщения: 3
Зарегистрирован: Ср апр 13, 2016 22:15:35

Сообщение Nikeech »

Доброго времени суток :) остались ли еще фотки самой платы? хотелось бы увидеть)) в Диптрейсе верхний и нижний слой как то перепутаны, хочется разобраться :)
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Nikeech писал(а):.. остались ли еще фотки самой платы?...
Добрый день! Вот:Изображение
P.S. Со временем совсем швах, поэтому обновлениями очень мало занимаюсь. Сильно извиняюсь. Но потихоньку подпиливаю в направлении WiFi.
Родился
Сообщения: 3
Зарегистрирован: Ср апр 13, 2016 22:15:35

Сообщение Nikeech »

Извиняюсь за надоедливость, хочется все таки узнать в какую сторону смотрит Атмега, можно больше разрешением пожалуйста))
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Нечем сделать увы :( Не совсем понятно в чем проблема? Если в определении стороны установки компонентов, то слой 1 - это слой ПОД матрицами и на него ничего не устанавливается, только перемычки пропаять перед монтажом матриц.
Родился
Сообщения: 3
Зарегистрирован: Ср апр 13, 2016 22:15:35

Сообщение Nikeech »

Матрицы на слое топ или бот находятсья? Когда стали заказывать платы возник вопрос что на нижнем слое (бот) при споставлении слоев надписи получились НЕ зеркальные так и должно быть или необходимо зеркалить слои?
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Nikeech писал(а):Матрицы на слое топ или бот находятсья?
На top.
Nikeech писал(а):...необходимо зеркалить слои?
Тут я не помошник, это зависит от технологии изготовления. Если домашнее изготовления то для проводников top текст зеркалить если на проводниках, если на маске то нет. Для проводников bottom и маски bottom зеркалить. Для маски top не зеркалить.
Встал на лапы
Сообщения: 93
Зарегистрирован: Пт янв 07, 2011 08:52:08
Откуда: Санкт-Петербург

Сообщение AndyKorg »

Всех трудящихся с праздником!
Извиняюсь за задержку с обновлениями - переезжал в другой город и прочее...
Подправил работу с датчиками, добавил датчик атмосферного давления BMP180. Добавил настройку скорости бегущей строки.
Но самое вкусное - теперь наши часы предсказывают погоду!
Прогноз погоды забирается с сайта openweathermap.org и выводится в бегущую строку. Например утром сообщается о температуре и погодных явлениях на день и вечер, а вечером на следующее утро и следующий день. Таким образом мы всегда будем знать когда картошку сажать, а когда сеять!
Или вместо погоды можно выводить любую строку. Все это настраивается через web-интерфейс.
Исходники теперь лежат на Githab
Прошивка для esp8266
Прошивка для радиодатчика температуры.
Сюда прикрепляю откомпилированые прошивки для atmega32 и esp8266 и web-морды.
Вложения
WEBFiles.zip
Сайт внутрь esp8266
(36.74 КБ) 431 скачивание
esp8366.zip
wti-fi чип
(174.71 КБ) 443 скачивания
atmega32.zip
Два варианта подключения матриц
(66.73 КБ) 426 скачиваний
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 32
Зарегистрирован: Сб май 30, 2015 08:15:29

Сообщение pilnikov »

если кому интересна данная тема, могу выложить скетч, схемы и чертежи платок (непроверенные) своих изысканий в этом направлении.
На данный момент имеются часики на есп8266 со следующим функционалом:
1. Поддержка дисплеев на holtek ht16k33(i2c 7seg common cathode), tm1637(spi 7seg common anode), lcd1602 over pcf8574(i2c), внешней полноцветной матрицы 16х32 с драйвером мега2560 (over serial)
2. 7 будильников с возможностью управлять функционалом, играть 14 мелодий, работать по выбранным дням недели, управлять внешней нагрузкой.
3. Отображать инфу (ака влажность, давление, температура) с сайта тингспик.ком (туда инфа попадает с внешнего датчика на той же есп схема и скетч на которую тоже присутствуют). На лсд и матрице инфа выводится бегущей строкой на великом и могучем (если лсд с поддержкой)
4. Автоуправление яркостью дисплеев.
5. Автосинхронизация over ntp
6. Настройка часиков over Web

На данный момент ведутся работы по прикручиванию к часикам матрицы на max7219. В перспективе переход на есп32 и отказ от меги.
Испытываю жажду (конкретную) в оформлении матриц (шрифты, эффекты, анимация, доп сообщения)
Есть огромное желание (но нету нифига опыту) прикрутить к часикам какую нить онлайновую бегущую строку с новостями и погодой.
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Сб дек 11, 2010 09:27:08

Сообщение Arcanum »

pilnikov писал(а):если кому интересна данная тема, могу выложить скетч, схемы и чертежи платок (непроверенные) своих изысканий в этом направлении.
выкладывай!
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Чт янв 28, 2016 13:34:05
Откуда: Волжский

Сообщение николай 76 »

Чем можно заменить mbi5039gf и sn74lvc1g00 ?. Mbi5026 подойдет ? А то у китайцев найти немогу
Ответить

Вернуться в «Статьи»