ESP8266 (ESP-12E) based `Wall Segment Clock`
|
il y a 9 ans | |
---|---|---|
app | il y a 9 ans | |
hw | il y a 9 ans | |
include | il y a 9 ans | |
web | il y a 9 ans | |
.cproject | il y a 9 ans | |
.gitignore | il y a 9 ans | |
.project | il y a 9 ans | |
Makefile | il y a 9 ans | |
Makefile-user.mk | il y a 9 ans | |
README.md | il y a 9 ans | |
dump.bat | il y a 9 ans |
простые часы на базе ESP8266 ESP-12e
Вдохновил пост на хабре "Бескнопочные часы" http://geektimes.ru/post/267718/
но, хочу немного по своему:
на 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 сервер/клиент?
по поводу дня недели:
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 -- запросы принимает, ответа от него не видно... Или я что-то не понимаю, или одно из двух...