Иногда электричество отключается. Бывает такое. И в этот момент электронные часы, как правило, сбрасываются и их надо заново настраивать. Мне это надоело и я мечтал о часах, которые синхронизировались бы по NTP и не требовали никакого внимания к себе. Но эта мысль не была приоритетной, так на задворках.
И вот однажды получая заказ с али, я понимаю, что в пакетике что-то не мое. Фамилия моя, а содержимое — нет. В итоге там оказалась плата Nodemcu. Загуглив, что это такое, я подумал что ардуино с вайфаем, это прикольно, но куда применить я не знал. До этого опыт с ардуино у меня был совсем поверхностый. И тут отключили свет и пазл сложился.
Приобрел матрицу, на WS2812b не посмотрев на размеры, поэтому на то место, куда изначально планировались часы, она не влезла, она реально большая 320х80мм, потом купил поменьше, но уже не цветную. Также решил, что пускай показывает температуру помещения и регулирует яркость в зависимости от освещения. Для этого были куплены датчик DS18b20 и фоторезистор.
Собрав все, я начал писать скетч. Однако я совсем не программист и мне реально пришлось трудно поначалу. Потом освоился и стало чуть полегче. Я могу программировать промышленные ПЛК на IEC 61131-3, но тут поишлось вывернуть мозг, ибо все не так. В итоге надергав разных кусочков из скетчей и изобретя несколько велосипедов, что-то получилось.
Вот так происходило тестирование. Функции — вывод времени, вывод температуры помещения, вывод температуры с яндекса.
Дальше все пошло еще интереснее. Нужен корпус. Я пытался обратиться к товарищу, владеющему 3д принтером. Но в связи с занятостью, он сунул мне этот 3д принтер в руки и заставил осваивать это дело самостоятельно.
Набрав в гугле " 3д моделирование для чайников" я узнал о существовании Tinkercad. Ну и что-то там нарисовал. Забегая вперед, скажу что модель собралась, но потребовала минимальной доработки напильником.
Напечатал. Собрал. Спаял. Заработало.



Что ж, я доволен, хотя и без косяков не обошлось, например печатать без изъянов я не научился. Зато появился интерес к этому делу, и я решил собрать еще несколько подобных вещей.
Если кто-то решит повторить и заглянет в скетч — не ругайтесь сильно, я знаю что я не программист и не 3д дизайнер. Схемы нет, что куда подключать, смотреть в скетче, я думаю что кому надо, тот разберется, там в первых строчках все указано. Ну и про резисторы не забываем на матрице и датчике температуры.
Upd1: В ситуации, когда отключили электричество, а роутер еще не загрузился, часы перейдут в режим точки доступа для задания ssid и пароля WIFI. Поставлен таймер на 5 минут, перезагружающий ESP. За это время роутер загрузится и часы подключатся к WIFI. Ну или пользователь успеет зайти на вебморду и вписать пароли. Лучшего решения я не придумал, пускай будет так.
Upd2: Если пропал интернет — часы не упадут в нирвану, а внезапно продолжат показывать текущее время. Да, погоду они будут показывать последнюю синхронизированную, но время будет точным. Ни почти. За сутки секунда разницы на ESP8266, проверил, дальше лень. Появился интернет — время синхронизировалось. Да, этот проект для того места где вайфай присутствует всегда. Или почти всегда. Нет, RTC именно тут не нужен, он нужен для других проектов.


Комментарии 71
"Схемы нет, что куда подключать, смотреть в скетче"— в чем проблема нарисовать схему? Хоть на листочке в клеточку.
Зачем куда-то смотреть в глубины программ. если всё придумано сто лет назад.
Кому нужно, тот посмотрит. Да и подключения каждый лепит как хочет, поэтому толку от нарисованной ардуины с проводочками немного.
Я вот в ардуинах-программированиях ничего не понимаю, и как мне смотреть? Смотрю в скетч--вижу фигу. Что я должен увидеть в бессмысленных для меня символах? Но при этом могу без проблем собрать по схеме и прошить.
Плюс по схеме сразу видно как работает устроцство и из каких компонентов состоит.
Моё мнение--схема должна быть.
И зачем в Брянске Кировская погода? А сделать какой-то выбор через вебморду пока не хватает моих навыков. Так что править все равно придется. Ну и коменарии в скетче местами есть. Я не буду спорить, вы правы, в следующий раз учту.
Здоровья! Просто ИМХО, мне больше понравилась тонировка. Ставил светофильтр от ЖК телевизора, получилось как у Вас, попробовал затонировать 5%плёнкой пластик, больше понравилось. 😉
для такой матрицы
Это Max2719? Тогда просто залить скетч, который я ниже написал. Не забыть устанлвить библиотеку #include <gyvermax7219.h>
ну бум пробовать
До этого делал такие
Прикольный эффект.
И к стати еще в Дурнях в 2010 году делал и батарейка пока жива -применил авто подключение часового модуля =или от БП или от батарейки
В варианте БП, поставил один 18650, только на ВеМос через диодную развязку. В случае потери питания все настройки сохраняются и часы продолжают считать время, только без дисплея…🙂. При появлении света и интернета синхронизируются…
Да и у Гайвера хорошие библиотеки👆. www.drive2.ru/c/643668401…7463/#a643720903305201912
может решить Вашу проблему с кириллицей🤔
Ссылка на библиотеку.
github.com/GyverLibs/GyverMAX7219
Уже стоит -не помогло
А старую удалили? И в скетче ссылку на старую библиотеку надо заменить… пример- #include <gyvermax7219.h>
Если можно, кусочек Вашего скетча с определениями …
Можете посмотреть весь и если не трудно поменяйте что надо, а то я в этом пень-товарищ дерево drive.google.com/drive/fo…mXQqflyfY7?usp=share_link
🤔😕
а тут cloud.mail.ru/home/13%20INFORMFTOR
cloud.mail.ru/public/Jv9U/HBkNicijv
🤷♂️
А ПО ПЕРВОЙ ССЫЛКЕ ? drive.google.com/file/d/1…Vs5h0/view?usp=share_link
👍получилось
diod2
А ПО ПЕРВОЙ ССЫЛКЕ ? drive.google.com/file/d/1…Vs5h0/view?usp=share_link
#include <wire.h>
//#include <adafruit_GFX.h>
#include <gyvergfx.h>
#include "DHT_NEW.h"
#include <spi.h>
#include <sfe_BMP180.h>
//#include <max72xxpanel.h>
#include <gyvermax7219.h>
#include <eeprom.h>
Попробуйте так…два слеша убирают строчку, т.е.компилятор пропускает её🙄 и надо скачать и добавить в библиотеки ещё библиотеку🤔.
github.com/GyverLibs/GyverGFX
А так я тоже профан🙄
Все это перепробовано и не один раз в разных конфигурациях выход =0
🤫давно ардуино идэ не юзал😁, щас сам попробовал, надо скетч переделывать🤷♂️, а как? Попробовал по старинке, не прокатило🤭
Там функции объявлены из Max72xxPanel, тупо заменить не получилось🤔
По моему проще готовый найти🤷♂️😁community.alexgyver.ru/th…trix7219.2772/#post-30116
К стати только щас дошло, А на какой плате сборка? И пишите в личку…😉
Ардуино нано или уно разницы нет обе на 328 и пины плат совпадают в личку не получается
А я под 8266 собираю😁🤭
diod2
А ПО ПЕРВОЙ ССЫЛКЕ ? drive.google.com/file/d/1…Vs5h0/view?usp=share_link
Ещё увидел в скетче ссылки на max72xxpanel.h . по моему не скомпилируется, надо и там поменять🤔 на gyvermax7219🤷♂️
diod2
Можете посмотреть весь и если не трудно поменяйте что надо, а то я в этом пень-товарищ дерево drive.google.com/drive/fo…mXQqflyfY7?usp=share_link
В FL Prog написано что ли? У меня там тоже русский не работал, но я и копаться не стал.
disk.yandex.ru/d/vjdVBP9ZZue32g
Вот это что выводит? Пины там еще надо правильно назначить. Должна быть бегущая строка с надписями и потом смайлики, правда почему-то кривоватые, но не суть.
Ага в FLprog
Попробуйте пользовательские блоки применить
forum.flprog.ru/viewtopic.php?f=72&t=3135
forum.flprog.ru/viewtopic.php?p=17311#p17311
Я по большей части БЕТА-ТЕСТЕР🤭😁
diod2
Уже стоит -не помогло
Может надо повернуть, причем каждую из матриц? Или они соединены каким-нибудь хитрым зигзагом? Ряды со столбцами перепутаны? Вниз башкой в панельке стоят?
Алгоритм такой — вывести одновременно английские и русские буквы. Без бегущей строки, просто надпись. И анализировать исходя из полученного результата.
А я себе такие слепил, но пока без корпуса и черт возьми не могу добиться текста на кириллице -мозгов не хватает
На втором видео видно русский текст на экранчике. Просто нашел русский шрифт для Adafruit GFX, все само заработало. Там же кстати, надпись "переменная облачность" выдается в ответе от openweathermap.org сразу на русском.
На матрице MAX7219 также бегущей строкой немного баловался, тоже без проблем, тогда это FastLED библиотека была, если не ошибаюсь.
Каких только скетчей для русификации не вставлял все равно вместо букв какие то кракозябры вылазят
Здоровья, для русификации не надо скетчи🤔, надо библиотеку шрифтов с русификатором😉. Я вот такие делал🙄

А библиотеки что не для скетча применяют ? Не вижу вашу поделку
Для скетча, но суть в самой библиотеке, это как драйвер устройства. Т.е. какой скетч Вы не слепите, без правильной библиотеки он работать не будет как надо🤔. Возможно и ваш скетч будет работать как Вы хотите, достаточно найти правильную библиотеку😉
Да я кучу библиотек перебрал толку -0 Это только маленькая часть
Некоторые человеки и саму библиотеку переписывают под свои хотелки🤷♂️. Направление верное, Надо просто желание🤫, 😉… К стати мои сборки все русифицированы🤫, правда не мной🙄, я в программировании только диодом моргать научился😆. И в ФЛ_прог кое что делал🤭. А сам, два по кушу😉… Всё черпал с форумов у Гайвера. Мои варианты исполнения его ламп, community.alexgyver.ru/th…-budilnik.1406/post-10960
которые начались с простой цветомузыки, далее знакомство с Vvip68 (оказался земляком) и много часов тестирования его проектов😉…
diod2
Да я кучу библиотек перебрал толку -0 Это только маленькая часть
github.com/immortalserg/AdafruitGFXRusFonts
И библиотека Adafruit GFX у вас на скрине.
Если правильно помню, то название файла шрифта нужно менять, например FreeMono7.h нужно поменять на FreeMono7pt8b.h по названию переменной в этом файле, а то не компилирует. А еще шрифт должен по размеру влезать в вашу ячейку, т.е. он может быть больше, чем высота вашей матрицы.
Для TFT дисплея:
#include <adafruit_GFX.h>
#include <freemono10pt8b.h> //Русский шрифт
#include <adafruit_ST7789.h> // Hardware-specific library for ST7789
tft.init(240, 240, SPI_MODE2);
tft.fillScreen(ST77XX_BLACK);
tft.setTextWrap(false);
tft.setRotation(2);
tft.setFont(&FreeMono10pt8b);
tft.setCursor(0,25);
tft.setTextSize (2);
tft.print("Start");
Для MAX 2719:
#include <gyvermax7219.h>
#define AM_W 32 // 4 матрицы (32 точки)
#define AM_H 8 // 2 матрицы (16 точек)
const uint8_t bmp[] PROGMEM = {
0b00111100,
0b01000010,
0b10100101,
0b10000001,
0b10100101,
0b10011001,
0b01000010,
0b00111100,
};
const uint8_t hrt[] PROGMEM = {
0b00101000,
0b01010100,
0b10000010,
0b10000010,
0b01000100,
0b00101000,
0b00010000,
0b00000000,
};
int xm = 32;
MAX7219 < 4, 1, 5 > mtrx;
void setup() {
mtrx.begin();
mtrx.setBright(5);
}
void loop() {
mtrx.clear();
mtrx.setScale(1);
mtrx.setCursor (xm, 0);
mtrx.print("Тут самый разнообразный текст");
mtrx.update();
xm--;
if (xm<-180) {xm=32;
mtrx.drawBitmap(0, 0, bmp, 8, 8, HIGH);
mtrx.update();
delay (1000);
mtrx.drawBitmap(8, 0, hrt, 8, 8, HIGH);
mtrx.update();
delay (500);
mtrx.drawBitmap(16, 0, hrt, 8, 8);
mtrx.update();
delay (500);
mtrx.drawBitmap(24, 0, hrt, 8, 8);
mtrx.update();
delay (5000);
}
delay (100);
}
diod2
А библиотеки что не для скетча применяют ? Не вижу вашу поделку
перезалил, два разных проекта и время сказали синхронно, на 20-ой секунде видео. Время синхронизируют с роутера, компа или телефона, при подключении к роутеру всё автоматом…

за прямые руки респект и уважуха, тут базару нет
PS. проблема сброса установок часов с библейскийх времён решалась батарейкой. Ну или RTC, что по сути своей одно и то же. Часы, это такой прибор, который должен уметь работать даже в случае БП (большой п-ц), когда не будет ни инета, ни NTP, ни сервисов погоды 8=)
по поводу цветного дисплея. Видел похожий проект, там RGB матрица создаёт светло-салатовый цвет, какой был у VFD. Очень симпатично и оригинально получилось.
wonderful… i like it. so simple and a good idea
Thank you
Надо часы не с вай фаем, а с GPS делать. По спутниковым сигналам тоже передается информация о текущем времени 😉
Погоду ему надо. Дома окон нет, только по часам ориентируется.
Нет, зачем коммерция? На Ds3231 и так полно часиков, выбирай любые, мне на MAX7219 больше нравятся и лента адресная еще пылится, надо как то в корпус впихнуть время найти… я вам, порекомендовпл просто, а что делать и как вы и без меня знаете
На MAX7219 на втором видео как раз на заднем плане. Функционал тот же, но будут еще день недели отдельными светодиодами показывать, пока не придумал, как это лучше реализовать в 3Д модели, но идейки есть.
Интересные часики получились. А не хотели бы Вы сделать такие же, но на DS3231 (высокоточный модуль реального времени, за год погрешность несколько секун)? Бывает интернет работает, а бывает нет, нет интернета-нет времени. Да и температура на часах, не сильно нужна, захочешь время глянуть и ждешь, когда температура пройдет, потом год, день недели, число, какой то перебор с функционалом.
Про RTC чуть ниже написано, а как коммерческий проект слишком дорого выйдет, на заказ я делать не буду. Поэтому и выложил скетч, чтобы любой мог повторить, если появится желание.
Изменить наверное не сложно, там сам счет времени это несколько строчек — основной код это расшифровка информации из интернета и вывод на дисплей или матрицу.
putnik401
Интересные часики получились. А не хотели бы Вы сделать такие же, но на DS3231 (высокоточный модуль реального времени, за год погрешность несколько секун)? Бывает интернет работает, а бывает нет, нет интернета-нет времени. Да и температура на часах, не сильно нужна, захочешь время глянуть и ждешь, когда температура пройдет, потом год, день недели, число, какой то перебор с функционалом.
Кстати, температуры показывает раз в минуту, по 5 секунд. Нет года, месяца и прочего, как раз из-за избыточности.
Всегда вызывают уважение люди которые не разбираясь в чём-то прилагают усилия и выдают результат, причём для собственного удовольствия. Это я как профессиональный электронщик и программист говорю :)
Ну я ж не совсем чтоб совсем не разбираюсь ;) Смежная специальность, инженер АСУТП.
scorplist
Всегда вызывают уважение люди которые не разбираясь в чём-то прилагают усилия и выдают результат, причём для собственного удовольствия. Это я как профессиональный электронщик и программист говорю :)
Да, у каждого свой путь к оргазму.
Погугли еще что такое rtc :)
А зачем? Это батарейка нужна 2032, которая сядет рано или поздно. Именно от этого я и хотел уйти. Включил и забыл, никаких кнопок, все работает само. А еще я ни разу не видел кварца на 16384 Гц, который бы выдавал точное время, все равно собьется рано или поздно, надо будет подводить часы. Можно совместить, но смысла не вижу.
Ну лет 5 протянет. Если выключена. Если есть питание больше. Время в нее можно перезаписывать что бы не уходило. Раз в неделю или чаще. Ограничений нет. За то время реакции быстрее и автономность выше. Кварц там часовой 32к.
solfir
А зачем? Это батарейка нужна 2032, которая сядет рано или поздно. Именно от этого я и хотел уйти. Включил и забыл, никаких кнопок, все работает само. А еще я ни разу не видел кварца на 16384 Гц, который бы выдавал точное время, все равно собьется рано или поздно, надо будет подводить часы. Можно совместить, но смысла не вижу.
Еще для отключения питания есть вот такая классная штука. Очень советую попробовать.
Все равно не вижу смысла. Если часы находятся в месте, где всегда есть вайфай, ну пусть и синхронизируются. Все равно им с интернета погоду читать. Есть задумка сделать будильник на E-Ink дисплее и аккумуляторах, который я бы брал с собой в командировки, вот там нужен будет такой модуль. Но пока не знаю, дойдут ли руки до такого.
Во первых автономия. Во вторых время реакции. Вай фай через сколько появится если пропало питание в доме? Минуты. Если проблема еще и у провайдера? Тут rtc с мгновенным стартом и ценой вне конкуренции. А получение времени от gps тоже. Если часы в машине или корабле. А так притянутая за уши ситуация.
Коррекция точности понимаю.
Задача не стоит показывать время постоянно, ну загружается роутер минуту, не страшно. Нужно чтобы часы сами подвелись. Я знаю, зачем нужен RTC, но в конкретно моей ситуации необходимость отсутствует.
А вот кстати и косяк вылез, спасибо за подсказку. Часы не найдут вайфая, пока загружается роутер и перейдут в режим точки доступа. Это-то я и не проверил :) Буду думать, как решить. Пока идея — перезагрузить часы, если к ним не подключились за 2-3 минуты.
решение у других — переход в режим safe_mode либо по замкнутым контактам в момент старта, либо по третьей перезагрузке в течении первых секунд старта… т.е. либо замыкаем tx и rx перед включением, либо жмем три раза ресет с интервалом 1сек…
Такой (или подобный) алгоритм удобнее, т.к. вход в настройки подразумевает наличие и действия человека, и выполняется один раз при смене локации. А нормальная работа — подключение к точке при старте — это постоянное действие без человека. Значит оно должно происходить быстро и само.
Спасибо, но в таком случае можно и кнопку прикрутить, если свободных ног хватает. А как ресеты посчитать, ссылочкой не поделитесь?
проект wifi-iot
wifi-iot.com/
там правда код закрытый, так что вам не поможет (зато тем кто в программировании не очень — вполне поможет!). Не реклама. т.к. базовые функции проекта бесплатны (а дальше сами смотрим что надо и стоит ли оно того). На муське есть мой (и не только) обзор по проекту…
Ног под кнопку дополнительных не надо — достаточно тех что уже задействованы где то — если это выход то на время старта его можно опросить как вход. Ну или как в проекте сделано — rx и tx замыкаются между собой — получается луупбак который легко "увидеть".
Считать ресеты — думаю сделано так: при старте проверяется содержимое ячейки и сразу эту ячейку пишется +1. Если содержимое ячейки >2 то переходим в сэйфмоде. А если нет, то через 5сек (условно) пишется ноль.
зы У автора проекта есть телеграмм канал и сайт с форумом. Автор очень отзывчив и терпелив (даже слишком). Так что спросить его можно
Gagarin1977
Во первых автономия. Во вторых время реакции. Вай фай через сколько появится если пропало питание в доме? Минуты. Если проблема еще и у провайдера? Тут rtc с мгновенным стартом и ценой вне конкуренции. А получение времени от gps тоже. Если часы в машине или корабле. А так притянутая за уши ситуация.
Коррекция точности понимаю.
Поддержу вас. Никакие РТЦ в таких часах не нужны. Сам собирал похожее лет 5 назад. И даже модуль ртц заказал дя них. Во только не понадобился…
Люди видимо думают, что они время ежесекундно берут с инета и при отсутствии инета будут показывать нули… Ну надо просто пояснить, что инет используется для синхронизации времени раз в час (у меня. как у вас — не смотрел). а остальное время — идут по кварцу микроконтроллера. Да — там погрешность большая. Ну так большая она за сутки, а раз в час сбрасывается. Если отключали питание, то время синхронизируется через полминуты после появления питания. В общем — ртц так и валяется в ящике.
Здоровья! Верно подмечено с РТЦ. У матушки часы из монитора.
community.alexgyver.ru/th…-budilnik.1406/post-65292
Вообще всегда в точке доступа идут. За год убежали на 5сек вроде, точно не помню, но не больше🤷♂️. Но при первом же подключении к телефону они синхронизируются…
У меня одно время прикроватный будьльник был метеостанция орегон… все бы ничего, но у нее есть функция синхронизации по спутнику (не gps, а специальный европейский спутник точного времени. Ну как в СССР были сигналы точного времени). В наших широтах штука почти бесполезная… Несколько лет будильник работал исправно. Пока мы не начали ремонт в своей комнате — и переехали в другую — с окнами на запад… В общем — кто-ж знал, что часовой пояс в этом орегоне надо было выставлять от МСК, а не от UTC (инструкцию то никто не читал). Ночью эта зараза поймала спутник и честно подстроила под него время… итог — я собрался на работу на 3 часа раньше срока :)
🤭
Gagarin1977
Во первых автономия. Во вторых время реакции. Вай фай через сколько появится если пропало питание в доме? Минуты. Если проблема еще и у провайдера? Тут rtc с мгновенным стартом и ценой вне конкуренции. А получение времени от gps тоже. Если часы в машине или корабле. А так притянутая за уши ситуация.
Коррекция точности понимаю.
www.drive2.ru/c/643668401…7463/#a643720628427312384
А на нижнем видео видно время включения и синхронизации
drive.google.com/file/d/1…2Rv83MXd/view?usp=sharing
solfir
А зачем? Это батарейка нужна 2032, которая сядет рано или поздно. Именно от этого я и хотел уйти. Включил и забыл, никаких кнопок, все работает само. А еще я ни разу не видел кварца на 16384 Гц, который бы выдавал точное время, все равно собьется рано или поздно, надо будет подводить часы. Можно совместить, но смысла не вижу.
А если вайфая нет?
Придется время на телефоне посмотреть.
Красава 🤜🏻🤛🏻