WiFi лампа-будильник. Задания на доработку

malec

★★★★✩✩✩
5 Фев 2019
680
257
@George, он давно у меня скачан там прошивка, я от туда огонь хотел вырезать, но мозгов не хватило...
А цветомузыку я по такой схеме собирал, А там три пина на цветомузыку в аудиолоджик.ино
#define MSGEQ7_STROBE_PIN 2
#define MSGEQ7_RESET_PIN 3
#define MSGEQ7_LEFT_PIN A0
Я пытался Ввипа привлечь, ему оказалось не интересно)))
 

Вложения

Изменено:

George

★★✩✩✩✩✩
25 Дек 2019
372
58
@George, он давно у меня скачан там прошивка, я от туда огонь хотел вырезать, но мозгов не хватило...
А цветомузыку я по такой схеме собирал, А там три пина на цветомузыку в аудиолоджик.ино
#define MSGEQ7_STROBE_PIN 2
#define MSGEQ7_RESET_PIN 3
#define MSGEQ7_LEFT_PIN A0
Я пытался Ввипа привлечь, ему оказалось не интересно)))
Вот на схеме частотный фильтр на кондёрах (высокие, низкие) на два аналоговых входа Ардуины. Третий вход А0 использован не по назначению, а в качестве земли.
 

malec

★★★★✩✩✩
5 Фев 2019
680
257
он у меня скомпилился в мониторе постоянная перезагрузка
21:39:06.162 -> ets Jan 8 2013,rst cause:4, boot mode:(3,6)
21:39:06.162 ->
21:39:06.162 -> wdt reset
21:39:06.162 -> load 0x4010f000, len 1384, room 16
21:39:06.162 -> tail 8
21:39:06.162 -> chksum 0x2d
21:39:06.162 -> csum 0x2d
21:39:06.162 -> v8b899c12
21:39:06.162 -> ~ld
 

Revol

✩✩✩✩✩✩✩
9 Фев 2020
6
0
@George, в анализаторе спектра используется всего один аналоговый пин
Единственное, что на ардуине есть тот самый aref пин, а на esp нету
Но в видео, я слышал, что это не обязательно
 

Вложения

George

★★✩✩✩✩✩
25 Дек 2019
372
58
@Revol, Ардуина пятивольтовая, есп - трёх. Амплитуда сигнала другая, надо понижать. Кроме того есть частота опроса (дискретизация) она тоже другая и опрос происходит в прерываниях, поэтому я говорил, что нужно снять циферки, а потом заниматься адаптацией скетча. Нашёл, что на платах чёрных должен быть делитель. На остальных не знаю. В любом случае нужно подключать и смотреть.
1581557315130.png
 
Изменено:

malec

★★★★✩✩✩
5 Фев 2019
680
257
@George, Здоровья народ!!! Вроде выспался)))) Короче ИСиПи не хотела работать это из-за моих правок в скетче... Он под Ардуино, а я пытаясь залить его в ИСиПи наисправлял ошибки компиляции до того, что программа коректно работать перестала. Щас разархивировал по новой и он скомпилился под МЕГУ и то пишет что памяти мало. Надо грамотно его портировать в ИСиПи, у меня познания маловаты(((( вот и накасячил:confused:). Все библии ставил новые с офицалов...
Да и по микрофону, он у него как и у Алекса в цветомузыке MAX9814. На схеме видно даже надписи на модуле...на нём можно настроить коэффициент усиления 60-50-40 db и имеет настройку АРУ.
Gain. Если оставить в воздухе усиление будет 60dB., посадить на землю усиление 50dB., ну а если посадить на Vdd. усиление будет 40dB.
AR = Attack/Release (время срабатывания/время восстановления АРУ). По аналогии с Gain - оставить в воздухе Attack/Release = 1:4000ms., посадить на Vdd. Attack/Release = 1:2000ms., посадить на землю Attack/Release = 1:500ms.
Глянь так для общего понимания, вывод из видео , 40db для усилителя хватит и на таком предусилении меньше не нужных гармоник...
Да и Алекс рассказывал в кратце работу алгоритма библиотек, в частности касаемо спектроанализатора, не помню точно (давно это было), там идёт частотное разделение согласно RC фильтров в библиотеке и вычитание влияния вредных гармоник... Что-то такое, моими словами...
Почитал за aref , это своего рода "подтяжка" к опорному напряжению чтоб увеличить чувствительность аналогово входа, если его не использовать будет использоваться внутреннее опорное напряжение...вот статейка http://arduino.ru/Reference/AnalogReference , но она для ардуино... Думаю чтоб ИСиПи заставить считывать аналог, лучше использовать внешний АЦП ....(приношу свои извенения , попутал ЦАП и АЦП...)
( посмотрел наработки с АЦП и понял что наврал много:eek: Для передачи данных ADS1115 использует стандартный широко распространенный интерфейс I2C ) так-же он 16-и битный, подойдёт-ли??? Для тех кто поймёт и подскажет.....
ADS1115 поддерживает стандартную скорость передачи до 100 Кбит/сек (100 кГц), высокую скорость до 400 Кбит/сек (400 кГц), а также ультравысокую скорость до 3,4 Мбит/сек (3,4 МГц). Из даташита: для активации ультравысокой скорости необходимо после условия “Старт”, вместо адресного байта, отправить байт со значением 00001xxx, при этом АЦП не выдает подтверждение на этот байт, после чего происходит переключение на ультравысокую скорость, действие которой заканчивается после условия “Стоп”. Для работы на скоростях до 400 Кбит/сек ничего предпринимать не надо.
 
Изменено:

George

★★✩✩✩✩✩
25 Дек 2019
372
58
@malec,
Надо бы проверить что стоит на плате микрофона. Вот схема.
Питание 3.3 Вольта. Остальное в скетче смотреть.
MAX9814.png

Видео, где рассказано, как это должно работать (в помощь программистам):
 
Изменено:

Fortunate

★✩✩✩✩✩✩
10 Янв 2020
41
28
Москва
Несколько замечаний и предложений по поводу прошивки:
1. Как часто Вы прошиваете лампу и как часто Вы хотите посмотреть время на ней? При условии, что лампа настроена и работает, то прошивка по воздуху является сервисной командой, так же как просмотр IP, переключение точка доступа/клиент и сброс настроек сети. Нужно на четыре клика поставить вывод времени с лампы, а остальное либо сместить на большее количество кликов, либо вообще замутить переход в сервисный режим для настройки сети (только не на 5 кликов, а на большее количество, что бы человек случайно не вошел в этот режим).
2. Добавить в прошивку вывод пользовательского текста по запросу MQTT. Реализоваться должно элементарно, а мы получим дополнительный сервис, вроде старых пейджеров. Для привлечения внимания к сообщению, можно менять при этом фон (убирать текущий эффект).
3. Изменить строку статуса в MQTT так, что бы можно было пользоваться этим в сторонних серверах. Свой-то можно настроить как угодно, а, вот, сторонний уже настроен и доступ к его настройкам админы не дадут. На текущий момент разбор строки статуса лампы в MQTT является проблемой. По крайней мере, я не знаю способа, как заставить Алису понимать, какой режим сейчас включен в лампе. Кто-нибудь, вообще, пробовал это все настраивать? Или функционал MQTT был добавлен умозрительно?
4. То же самое касается команд MQTT для будильников. Как Вы представляете себе команду поставить будильник на 16:35? Т.е. я должен сначала посчитать, сколько это будет минут... (тэкс, 16*60+35=... :unsure: ну Вы поняли! Кстати, это 995 минут :eek:), а потом уже дать команду ("Алиса, поставь будильник на 995 минут" o_O) По-моему, платка wemos вполне справится с такими расчетами сама ;)

А вообще, я бы сделал что-то вроде этого:
* при включенной лампе - один клик - выключение; два - вывод времени; зажатая кнопка - цикличное переключение эффектов, пока нажата; повторное зажатие кнопки - переключение в обратную сторону; три клика - переход в настройку эффекта (зажатие, клик и зажатие и т.п. - как сейчас, одинарный клик - выход из настройки), пять или, даже, семь кликов - переход в настройку сети (два клика - вывод IP, три - переключение режима точка доступа/клиент, пять - прошивка, один - выход из режима)
* при выключенной лампе - зажата кнопка - включение белого света, одинарный клик - включение эффектов
* при включении питания - зажата кнопка - сброс настроек ( в том числе сети)
 
Изменено:

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Fortunate, Да, я тоже столкнулся с такой нелогичностью работы кнопки. И даже предлагал переделать модуль управления кнопкой. Но, это потребует серьезной переделки кода, а в коллективе это приведет большим спорам.
Потом я предлагал и реализовал уже вывод времени по одному нажатию. Опробовал - мне понравилось! Суть такая, если сервер времени не настроен, вайфай отсутствует кнопка работает как обычно ВКЛ/ВЫКЛ. Если время определяется, то при нажатии на кнопку бежит строка с текущем временем. И если нажать повторно на кнопку в это время то лампа включится (или выключится). В случае, если произошла ошибка подключения к сети, заместо времени можно вывести надпись, к примеру "WIFI OFF" красного цвета. Это будет лучше, чем мигание красной матирцей!
В ночное время реализовать режим включение не последнего эффекта, а ночника.
Касательно длинного клика, чтобы не путать оставить всегда за регулировки. (Опять же ночью - яркость ночника или ночных часов)
Демо режим я предлагал четверной клик из выключенного состояния (не нужный режим)
Айпишники, настройки, согласен - в глубину морзянки убрать.
 
Изменено:
  • Лойс +1
Реакции: Fortunate

George

★★✩✩✩✩✩
25 Дек 2019
372
58
@Revol, модуль есп ниже, чем ТРИ вольта работать отказывается, весь нет об этом шумит, поэтому 3.3. Проблема не в питании, а в адаптации скетча под одновольтовый узкий диапазон. Тут я ничем не помогу.
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Fortunate, я пока не прикручивал MQTT, ничего не могу сказать... Единственное, что хотелось бы реализовать с помощью этой технологии, так это показ температуры за бортом )))
 

Fortunate

★✩✩✩✩✩✩
10 Янв 2020
41
28
Москва
@Palpalych, а что, голосовое управление не интересно? А сценарии?
К примеру, я пришел домой "Алиса, я дома" - лампа включилась ярко на конфетти, я собираюсь спать "Алиса, спокойной ночи!" - лампа включилась на светлячки в режиме ночника. Удобно же....
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@Fortunate, так это уже реализованно частично, и зависит по большей части не от самой прошивки
 

Fortunate

★✩✩✩✩✩✩
10 Янв 2020
41
28
Москва
@Palpalych, я пытался настроить - работает, но коряво, потому что не может считать состояние лампы. Как это правильно настроить - я не знаю.
А статусную строку лампы в топике MQTT как раз генерит прошивка....
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
На счет кнопки - по совести тут каждый может настроить под себя... Ну разве что можно вынести действия в отдельные функции и дать возможность переназначать... Но это опять же - нужно писать, плюс нужна поддержка в приложении или веб-страница для конфигурирования или же самое неудобное - правка прошивки под себя.

Вывод времени по кнопке - да без проблем, добавил раз это кому-то нужно. Вариант с OSD тоже встроил и сразу же отключил, поскольку он не особо доделан. Во-первых мне нужна инверсия вывода по направлению, так и отзеркаливание, т.к. матрица висит на окне и показывает на улицу. Текущий вариант не умеет так, насколько я понимаю, следовательно не подходит. Также в текущем варианте наблюдается странное мерцание и послесвечение отключенной матрицы, я не стал разбираться что там не так, но в имеющемся виде - малопригодно.

По MQTT - когда у меня дойдут руки до него я вообще не знаю, до сих пор даже zigbee2mqtt не прошил и распберри валяется на подоконнике. Так что приведение топиков и рассылок в порядок - очень и очень не скоро...

По поводу загрузчика. Чуть переработал его логику при отсутствии кнопки. Теперь он будет триггерно переключаться между попыткой поднять точку доступа и режимом без ВиФи по ресету или включению/выключению питания. Думаю это компромиссный вариант...
 

Palpalych

★★★★★✩✩
24 Дек 2019
766
405
@kDn, OSD можно пока оставить как, развивающийся проект. Постараюсь отзеркаливание в ближайшее время дописать, и дополнить другими полезными функциями. На счет мерцания, да согласен, я не говорил что это есть прошивка, отключил некоторые функции в этой тестовой, чтобы понять как работает питание... Скоро также представлю концепцию.

Касательно загрузчика. Там без кнопки дополнил кодом, что при первом подключении будет задействован режим конфигурации. Посмотри, если что сделаю выдержки из кода.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
OSD можно пока оставить как, развивающийся проект
Да без проблем, пусть будет... Что касается мерцания - то тут что-то похоже с отрисовкой в osd_Tick при ONflag == false, но я особо не смотрел. Вообще в той логике вывода текста/даты что делал я было так - выводить на каждом проходе цикла кадр, но смещать его только тогда, когда срабатывает таймер очередного шага. Т.е. грубо говоря только каждый 50 кадр вызывает сдвиг, остальное время текст стоит на месте. При этом управление выводом при погашенной матрице для времени FastLED.show(); делается в самом выводе времени, т.е. не зависит от цикла эффекта. Соответственно время будет выводиться корректно даже при погашенной матрице (случай с мосфетом не рассматриваю и не проверял).

Касательно загрузчика. Там без кнопки дополнил кодом, что при первом подключении будет задействован режим конфигурации. Посмотри, если что сделаю выдержки из кода.
Да, я это видел. Собственно эту часть и расширил триггерным переключением по перезагрузке или включению/выключению.
 

malec

★★★★✩✩✩
5 Фев 2019
680
257
@Fortunate, Скетч Вам в руки))) Уважаемый, так в чём проблема, количество кликов переназначить, Это не скетч переписать))),
Это из уроков Гайвера понятно...
 

Vladimir_st

✩✩✩✩✩✩✩
20 Окт 2019
38
8
Добавил TM1637 в gunner47
Во вкладке time создал переменные

hours=hour(currentLocalTime);
minu=minute(currentLocalTime);
secus=second(currentLocalTime);

Создал новую функцию и в loop ее вызываю..

void clockTicker() {

display.displayClock(hours,minu);
display.point(secus % 2 ? true : false);
display.setBrightness(!ONflag ? 3 : 7);

}




Теперь не могу понять как сделать чтобы точки мигали раз в секунду.. Они у меня раз в 2-3 секунды мигают...
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,242
1,297
Москва
обычно точки делают с таким интервалом 1-ая секунда горят, 2 нет, т.к. это наиболее просто реализуемый и без доп переменных алгоритм. основан он на определении четности 0%2=0, 1%2=1, 2%2=0 и т.д. 59%2 =1 а далее условие если (секунды%2)==1 то выводим иначе гасим