простые часы на базе ESP8266 ESP-12e Вдохновил пост на хабре "Бескнопочные часы" http://geektimes.ru/post/267718/ но, хочу немного по своему: - заказл с али 5 штук синих индикаторов с ОК высотой 1.8" это для отображения времени, даты - купил на вороне 3 штуки белых с ОК 0.56" это для отображения температуры, влажности, дня недели - думаю поставить фоторозистор и регулировать яркость в зависимости от освещённости. - вывод надумал делать динамический, на MAX7219, поэтому индикаторы с ОК - дошло, что невыгорит управлять большими индикатороми этой мс. пришлось лепить транзисторы - "вечер перестаёт быть томным". - индикаторы 1.8" вроде как бывают на 9 вольт и на 6.5, жду пока приедут. - где-то кто-то писал, что у него MAX7219 нормально управляет большими индикаторами (1.8 или 2.3"), вобщем жду что приедет. на 31.12.2015 всё. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Wall Segment Clock После двух дней ебли с nodemcu решил для своего проектика остановится на Sming. за основу взял проект "MeteoControl", выкинул I2C LCD Display, добавил обновление сайта из "HttpClient_ThingSpeak", добавил обработку DHT22 из "Humidity_DHT22", хотел добавить FTP сервер -- но оно не влезло. В качестве датчика освещённости можно будет использовать "Light_BH1750", или останется фоторезистор. "ThingSpeak" планирую заменить на что-то своё, на своём сервере, что ещё предстоит придумать и реализовать. Возиожно это будет не HTTP а что-то на основе UDP (клиент/сервер). Осталось добавить поддержку для MAX7221 и сделать вывод на индикаторы... Возможно, по ходу дела придётся что-то выкидывать, чтобы влезло нужное. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- out/firmware/spiff_rom.bin---------->0x4C000 FTP не влезло на 1594 байта :-( -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- WebTime занимает слегка меньше места чем NTPclient. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.01.29 Прикрутил поддержку max7219 с программным spi. Сделал вывод времени -- пора проверять в железе. Нужно придумать как выводить всё остальное -- дату, показания датчиков. Как считать дни недели, как определять переход на зимнее/летнее время? Как взаимодействовать с внешним миром -- оставлять вебсервер, или переходить на UDP сервер/клиент? по поводу дня недели: https://ru.wikibooks.org/wiki/Реализации_алгоритмов/Вечный_календарь --- struct struct_date { short day; short month; short year; }; int what_day(const struct struct_date const date) { int a = (14 - date->month) / 12; int y = date->year - a; int m = date->month + 12 * a - 2; return (7000 + (date->day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7; } --- Пример вывода: каждые 25-29 и 55-59 секунд на верхние индикаторы выводить дату, а на нижние день недели. (01 29 / ПОН ВРН СРЕ ЧРГ ПНА СУБ ВОС) в остальное время на нижних чережовать каждые 5 сек темп/влажность (XXc/XXh). делать мжно с помощью таймеров и однократного запуска. нужно разрисовать подобие КА. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.02.01 Уберу http-клиент, поменяю чуть сбор данных, json буду отдавать с точностью в 2 знака. Возмжно попробую добавить udp-сервер и ftp-сервер. Управление внешним выходом в зависимости от температуры/влажности -- это конечно прикольно, но мне в часах оно нахрен не нужно. Далее в планах -- переделать под себя страницу конфигурации, убрать всё лишнее, добавить нужное -- например, задание 2-4 порогов регулировки яркости в зависимости от внешнего освещения. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.02.02 Переделал обработку времени, поправил обработку данных от датчика. FTP сервер уже влазит, вот только нужен ли он? UDP Server тоже влез. Если я всё правильно понял, то на строку "get_sensors" должен возвращать температуру и влажность. На любые другие данные -- echo. Переделал конфигурацию -- выбросил всё ненужное, добавил настройку уровней освещённости (два) и ировней яркости индикатора (три). Пока не использую. План такой: if (ADCVAL < LLow) { MAX7219br = BLow } else if (ADCVAL > LHigh) { MAX7219br = BHigh } else { MAX7219br = BMid } Выкинул FTP Server -- какой-то он странный, скачать ничего не вышло, закачть уже и не пытался. Выкинул UDP Server -- запросы принимает, ответа от него не видно... Или я что-то не понимаю, или одно из двух... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.02.02 Заменил м/с MAX7219 -- и всё чудесным образом заработало. Один индикатор (ед. часов) бракованый -- не светится верхний левый сегмент, нужно поменять местами со средним. Не очень нравится раскладка 5/3, было бы лучше 4/4. Поменял отображение темп. и влажности -- символ спереди, так кажется более правильно. Мигающий минус теперь грубо отображет секунды: - с 0 по 14 сек -- "минус" - с 15 по 29 сек -- "средний и нижний" - с 30 по 44 сек -- "верхний и средний" - с 45 по 59 сек -- "верхний, средний и нижний" Была ещё мысль время выводить в первых четырёх идикаторах, мигать точкой, а в 5-ом индикаторы "двоичным" кодом отображать секунды, но пока отбросил. Белые индикаторы светят заметно ярче синих, пока ничего менять не буду, посмотрим как оно будет под светофильтром. Решил отказаться от вывода даты и дня недели -- не нужно оно. Нужно вынести в настройку адрес ntp сервера. Нужно доделать регулировку яркости. Возможно стоит заменить на плавную. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.02.07 Делаю автоматическую регулировку яркости. Немогу понять, почему я фоторезистор поставил на землю? Ведь так получается не уровень яркости, а уровень темноты... Как-то я собирал несколько дней инфу с подобнго датчика смотрящего на улицу. Статичечки, его знчение приведённые к уровням 0-16 имеют значимую величину в диапазоне оот 12 до 16, т.е. всего 4 значения. Попробую это дела как-то нормализовать. Пробовал 12-16 растгивать -- сильно грубо. Сейчас сделал 7-14, лучше, но тоже не сильно нравится. Похоже, что простое приведение было лучше всего. Стало зависать постоянно, на ноге сброса -- 0. Вынес регулировку яркости в отдельную задачу -- прошло... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.11.15 Перерисовал схему под статику, 4 шт. 1.5" + 4 шт. 0.8". Большие индикаторы запитал через TD62783A (UDN2981). MC74HC595A работают и от 3.3В -- отказался от 5-ти вольтового стаба. Осталось придумать ШИМ для регулировки яркости и можно пытаться разводить. И нужно что-то придумать с сегментными резисторами (20 и 5 Ом)... И точки -- или в обход буферов, или больший резистор (185 Ом) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.11.17 Добил схему. Питание -- внешнее 7В + китайский импульсный стаб на 3.3В. Добил плату -- раскладку "подсмотрел" у китайцев, всё влезло под индикаторы, надеюсь что wifi будет работать нормально... размер платы -- 194 на 67 мм. Перемычек правда вышло шо пипец... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.11.21 LDO на 3.3 вольта выкинул потому, что одного мало (я насчитал макс. ток ~1.2А) а два ставить особо некуда, плюс будут большие потери. Появилась идея -- убрать сегменты точек. Можно даже сократить один сдвиговый регистр, но это принесёт больше гемора. Добавить два синих 3мм ветодиода -- засверлить их между 2-ой и 3-ей цифрами. Подключить или вместо точки второго индикатора, или, что ещё лучше -- задействовать отдельный вывод ESP и транзистр. Хотя тогда появится лишний гемор с регулировкой яркости именно этих светодиодов... Второй момент -- раширить плату в высоту, вытащить ESP и DHT вниз -- уменьшить толщину "пакета". -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.11.22 v1 -- исходная версия v2 -- без точек, с двумя светодиодами. текущая -- попытался вытащить наружу ЕСП, но не вышло. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2016.11.23 Хочу пропрбовать сделать раскладку "4 сверху / 4 снизу". получилось. вроде неплохо -- 153 на 84 мм. переходных -- 59 штук. ещё попробовать "вынести наружу" ESP и DHT22. кажется получилось -- плата 152 на 84 мм, 62 переходных. пока мне этот вариант нравиться больше всего. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2022.10.2 Тут тупик. Новая ветка будет на базе "Wemos D1 Mini"...