Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Матричные часы с музыкой и интернетом

Тема в разделе "Другие проекты", создана пользователем Andy Korg, 3 фев 2015.

  1. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Представляю вниманию уважаемой публики интернет-добавку в коктейль чипов под общим названием «матричные часы с музыкой». Пока эта добавка обеспечивает только получение времени с серверов точного времени. В дальнейшем планируется подцепить веб-сервер для управления часиками. Подробности на http://radiokot.ru/forum/viewtopic.php?p=2261975#p2261975
     
    Victor нравится это.
  2. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Недавно прикрутил к ним модуль esp-01 с прошивкой “свалки” от pvvx плюс кое-какие дописки.
    В результате получились часы с контролем по WiFi :)
    Теперь через web-морду часов можно:
    - посмотреть время и дату :)
    - установить время в часах по внешнему серверу времени;
    - настроить кучу будильников;
    - настроить отображение трех датчиков (пока только температуры);
    - настроить различные звуки издаваемые часами.
    Собственно часы помимо времени и будильников имеют интерфейсы: I2C, урезанный 1-wire и радиоинтерфейс на nRF24L01+. А так же они умеют воспроизводить wav-файлы с SD-карты.
    Прошивка будет чуть попозже, а сейчас просто хвастаюсь и как бы отмечаю окончание промежуточного этапа. :)

    Первая старница: (раскрыть)
    [​IMG]

    Дата и время (раскрыть)
    [​IMG]

    Будильники (раскрыть)
    [​IMG]

    Датчики (раскрыть)
    [​IMG]

    Клиент NTP (раскрыть)
    [​IMG]

    Настройки (раскрыть)
    [​IMG]
     

    Вложения:

    Последнее редактирование: 14 май 2015
    ivy, Victor и JustACat нравится это.
  3. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Очень хоцца поглядеть, но классически - на тюбике... Можете на тюбик закинуть? Пожаааалуйста!..
    Видео в exe-шнике - не-не-не... Не то, чтобы не было к вам доверия, скорее его нет к тому, что этот exe породило...
    PS1: Для записи раб. стола советую вот это: http://www.faststone.org/FSCaptureDetail.htm - пишет отличные (обычные человеческие) видео (и куча доп. функций сверху). Найти "в свободном" виде легко на рутрекере.
    PS2: и там "1-wire", наверное?..

    PS3: судя по скринам - веб-морде ваших часов позавидуют многие веб-морды китайских (и не очень) роутеров! :)
     
    Последнее редактирование: 14 май 2015
  4. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Как у Вас реализовано воспроизведение звуков? Исходники прошивки не опубликуете?
     
  5. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    anakod, емнип, в данном проекте все на АВР, а ESP именно в качестве связи + доп. функции.
    А MP3 можно, например, вот так воспроизводить :-Р
     
  6. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    поправил.
    Вкрадце - обычный ШИМ на двух таймерах - один скважиность регулирует, второй битрейт отсчитывает. Предыдущая версия прошивки на радиокоте по ссылке в первом посте. Прошивки опубликую чуть позже, еще одну базовую вещь не протестировал.
    В моем проекте голый ИКМ, т.к. МК не достаточно мощный.
    Видео сча забабахую.
     
  7. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Добавил видео на ютубе во втором сообщении сверху
     
    JustACat нравится это.
  8. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    387
    Можно для этого использовать Ресурсы (поддерживается история версий, ссылка остается постоянной) а в топике поставить ссылку уже на ресурс
     
  9. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Добавил прошивку и отдельно веб интерфейс. Если вы не против могу добавить прошивку atmega32, схему и плату часов.
     
    JustACat нравится это.
  10. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Да, мне кажется проект лучше целиком выкладывать чтобы если кто захочет повторить были доступны все материалы.
     
  11. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    387
    На этом форуме всегда будет приветствоваться open source и open hardware, так что очень буду рад, если выложите все для того, чтобы можно было повторить ваш проект.

    Для удобства сделал отдельный раздел Готовые проекты. Может имеет смысл из раздела прошивок лишнее удалить, а в новый раздел выложить одним файлом с описанием. В описание можно вставить фото и схему, например.
     
  12. nicelight

    nicelight Читатель

    Сообщения:
    88
    Симпатии:
    12
    Пробую залить на отладочную плату NodeMCU проект. Лью с помощью NodeMCUFirmware Updater все по readme добавляю все бинарники, указываю по каким адресам их лить, после прошивки на плате esp загорается синим светодиод и горит статично, пока питание не выключу. Точка доступа не создается. До этого лил другие проекты, все работало. что могу делать не так?
     
  13. ivy

    ivy Читатель

    Сообщения:
    24
    Симпатии:
    10
    Andy Korg, Поделитесь пожалуйста наводкой: На базе чего можно написать такой сервер? Не в ручную же HTML кропать... Сейчас много всяких движков. Что работает под NodeMCU?
    Спасибо.
     
  14. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Может проблема в железе? Прошивку заливал через UDK на платы esp-01. Штук десять наверно залил, все работало.
    Сам сервер - это "свалка" pvvx. А она сильно не заморачивается и просто делает подстановку в файлах HTML, поэтому какие-либо технологии на стороне сервера, вроде PHP невозможны. Все более менее "интелектуальные" вещи нужно делать на стороне клиента, например с помощью JS
     
  15. PycLan

    PycLan Новичок

    Сообщения:
    51
    Симпатии:
    3
    Добрый день!
    Andy Korg, не подскажете где почитать или мож раcскажете (на примере вашего проекта), про взаимодействие ~name~ <>ESP <>UART?
    Спросил у pvvx, как всегда, почему-то для меня, у него нет настроения помогать...
     
    nicelight нравится это.
  16. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    No problem.
    Действовал так - нашел по имени переменных pvvx функции в которых используются соответствующие имена.
    Например "cfg_" упоминчается в web_int_callbacks.c и web_int_vars.c.
    Поковырял их и понял, что в web_int_vars.c записываются значения из файлов html в соответствующие переменные в прошивке. Т.е. в этом файле обрабатываются строки отправляемые браузером на сервер esp вида "post(get)&cfg_web_port=80"
    Соответственно файл web_int_callbacks.c делает обратную операцию - преобразует выражения встреченные в файле html вида "~post(get)&cfg_web_port~" в обычную текстовую строку.
    Теперь что касается uart. Допустим в файле html встречается строка вида
    HTML:
    1. <dev>скорость uart0 равна ~uart_0_baud~</dev>
    Находим в web_int_callbacks.c обработку переменной "uart_":

    Код (C):
    1.         else if(!os_memcmp((void*)cstr, "uart_", 5)) { //<<<- вот она!
    2.             cstr+=5;    //пропустить символы uart_(пять символов) в файле html
    3.             int n = 0;
    4.             if(cstr[1] != '_' || cstr[0]<'0' || cstr[0]>'1' ) { Стотрим что бы дальще было _0 или _1
    5.                 tcp_put('?');
    6.                 return;
    7.             }
    8.             if(cstr[0] != '0') n++; //тут я думаю понятно и так :)
    9.             cstr += 2; //Опять пропускаем обработанные символы
    10.             if(!os_memcmp((void*)cstr, "baud", 4)) { //вот и остаток имени переменной baund
    11.                 uint32 baud = UART_CLK_FREQ / (READ_PERI_REG(UART_CLKDIV(n)) & UART_CLKDIV_CNT); //Читаем из нужного регистра нужное значение
    12.                 tcp_puts("%u", baud); //Пишем полученное значение в выходной поток отдаваемый браузеру
    13.             }
    Аналогично и для команды "post&uart_0_baund=9600" или "get&uart_0_baund=9600"
    Находим в web_int_vars.c обработку команды "uart_":

    Код (C):
    1.     else if(!os_memcmp((void*)cstr, "uart_", 5)) {<<<- вот она!
    2.         cstr+=5;
    3.         if(!os_memcmp((void*)cstr, "save", 4)) uart_save_fcfg(val);
    4.         else if(!os_memcmp((void*)cstr, "read", 4)) uart_read_fcfg(val);
    5.         else {
    6.             int n = 0;
    7.             if(cstr[1] != '_' || cstr[0]<'0' || cstr[0]>'1' ) { <<<- номер порта
    8. #if DEBUGSOO > 5
    9.                 os_printf(" - none! ");
    10. #endif
    11.             }
    12.             if(cstr[0] != '0') n++;
    13.             cstr += 2;
    14.             if(!os_memcmp((void*)cstr, "baud", 4)) { <<<- остаток команды
    15. //                UartDev.baut_rate = val;
    16.                 uart_div_modify( <<<- собственно само исполнение команды
    17.             n, //Номер порат
    18.             UART_CLK_FREQ / val);  //Его требуема скорость
    19.             }
    Аналогично для всех остальных команд и переменных. Вот собственно и все.
     
    PycLan нравится это.
  17. PycLan

    PycLan Новичок

    Сообщения:
    51
    Симпатии:
    3
    Спасибо за ответ, буду пробовать.
    По мере возникновения вопросов буду спрашивать, если не возражаете ;)
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.983
    Симпатии:
    1.301
    Все переменные ныне описаны и простенький help по ним выдает сам web сервер на своей первой странице. Можно открыть в HTML виде из \WEBFiles\help\webvars.htm.
    exel файл описания по переменным так-же есть -> https://github.com/pvvx/esp8266web/blob/master/WebVars.xlsx
     
  19. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Добавил получение и вывод на индикатор прогноза погоды с сайта openweathermap.org Теперь погода каждую минуту на холодильник выводится :) Подробнее в ресурсах.
     
  20. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    Здравствуйте уважаемые! Давненько почитываю эту и похожие темы про часики. Перепробовал собирать их кучу (ну болен я ими) . Крайний прожект - голова есп выдает по уарт текущее время, показания датчиков температуры влажности и давления (посредником между головой и датчиками выступил thingspeak) на мегу с подключенной к ней полноцветной led панелью 32x16. Отображение данных через бегущую строку (все на родном великом и могучем). Есть возможность подключить вместо меги просто lcd1602 (но тогда все будет латиницей). Если кому интересно - могу выложить весь проект (wifi датчик (esp, bmp 180/280, dht21, sht21) + esp голова + megaLEDpanel) + видяху на ютуб (научиться бы выкладывать), но взамен хочу попросить помощи у гуру веб морд - в прожекте есть будильничег, да и кой какие опции хоца прикрутить (скорость прокрутки, яркость, почасовой бибип). Так вот управлять ими с клавиатуры архаично, с ИК пульта геморно, а через BLYNK все жутко тормозит. Хотелось бы подсмотреть болваночку маленькой вебмордочки с парочкой полей прямого ввода(вывода), двумя-тремя выпадающими списками, и пятком чекбоксов. Был бы премного благодарен за наводочку. А то со всеми этими новомодными PHP, XML, HTML, JS у меня очень уж туговато.
     

Поделиться этой страницей