• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Умный дом для чайника

nikolz

Well-known member
Подробно рассказывать не буду, чтобы оставить Вам свободу творчества.
Расскажу лишь основные моменты.
Во-первых, Вы должны учесть особенности работы EEPROM.
А именно, то что свободное для записи место всегда чистое.
Второе, очищать можно лишь блоками.
Поэтому буфер должен быть не менее двух блоков,
Использовать счетчик ячеек не рекомендуется так как при пропадании питания он исчезнет.
Поэтому свободную ячейку ищите путем чтения каждого двадцать первого байта и проверки его на пусто
С учетом этого в первый байт данных пишем например дату месяца.
Ну вот примерно так для начала.
 
Последнее редактирование:

nikolz

Well-known member
Продолжение
можно сделать так:
Выделяете область для хранения объемом не менее двух блоков, которые могут стираться независимо.
Назовем блок данных по одному датчику квантом .
пусть в каждом кванте первым байтом будет день месяца.
Система хранения работает следующим образом:
Для записи читаем кванты от начала к концу и проверяем первый байт.
Если первый байт кванта пустой, то на это место пишем новые данные.
Если дошли до конца выделенной памяти, то стираем первый блок и начинаем с начала
Если дошли до конца текущего блока, то стираем следующий
свободный квант - это начало блока
 

Сергей_Ф

Moderator
Команда форума
@Юрий Ботов после того как isOwerflow станет true, он больше не становится false. Нет ли тут недоработки, ошибки? Хотя нет. Все правильно. А вот что будет после сброса? isOwerflow станет false, и запись пойдет поверх?
 
Последнее редактирование:

russo

Member
[
Использовать счетчик ячеек не рекомендуется так как при пропадании питания он исчезнет.
Поэтому свободную ячейку ищите путем чтения каждого двадцать первого байта и проверки его на пусто
Наверно это произойдет, если счетчик ячеек будет находиться в оперативке микроконтролера?
Тогда он исчезнет при пропадании питания?

А если счетчик ячеек писать в еепроме, можно даже дублировать его на случай пропадания питания (писать резервную копию), когда происходит запись в счетчик - и пропало питание. Тогда читаем дубликат счетчика и сам счетчик и сравниваем...... дальше не знаю, не придумал
Конечно еепром должна быть без ограничений в кол-ве перезаписи.
 

nikolz

Well-known member
Наверно это произойдет, если счетчик ячеек будет находиться в оперативке микроконтролера?
Тогда он исчезнет при пропадании питания?

А если счетчик ячеек писать в еепроме, можно даже дублировать его на случай пропадания питания (писать резервную копию), когда происходит запись в счетчик - и пропало питание. Тогда читаем дубликат счетчика и сам счетчик и сравниваем...... дальше не знаю, не придумал
Конечно еепром должна быть без ограничений в кол-ве перезаписи.
Вы не учитываете тот факт, что значение счетчика будете писать в новую ячейку на каждый тик. Т е получится бессмыслица . Ячеек в епроме для значения счетчика будет равно значению счетчика и при начале работы после пропадания питания будете искать последнее значение счетчика в епроме.
 

nikolz

Well-known member
На ESP можно счетчик хранить в RTC
а в RAM нельзя так как в deep-sleep память отключается
 

russo

Member
Вы не учитываете тот факт, что значение счетчика будете писать в новую ячейку на каждый тик. Т е получится бессмыслица . Ячеек в епроме для значения счетчика будет равно значению счетчика и при начале работы после пропадания питания будете искать последнее значение счетчика в епроме.
Значение счетчика думаю писать в отведенные для нее ячейки (две), по одному и тому же адресу, в еепромку 25 серии
 

nikolz

Well-known member
Но кроме счетчика текущего значения Вы должны хранить и указатель на начало актуальной записи.
 

nikolz

Well-known member
Значение счетчика думаю писать в отведенные для нее ячейки (две), по одному и тому же адресу, в еепромку 25 серии
Вы это сами придумали или читали документацию?
В ячейки вы можете записать лишь один раз без стирания, а стирать вы можете лишь сектор целиком.
Вы это учли?
 

russo

Member
Столкнулся с проблемой выбора дисплея для базового контролера.
Имеющиеся по доступной цене TFT дисплеи 2.8 3.2 дюйма имеют малый размер экрана. Выводить на него информацию со всех радио канальных датчиков не получается.
У меня семь датчиков по комнатам, четыре на котле отопления (четыре DS18B20) , два на улице c сенсорами открытия дверей. С каждого датчика выводиться четыре строки, дисплей 2.8" выводит где-то 20 строк.
Думаю пока сделать два дисплея на 2.8" , на одном выводить комнатные датчики на другом уличные датчики и с котла отопления. Восьми битный микроконтролер справиться с задачей.
Проблема в том что дисплеи не качественные, месяц-два начинаются глюки дисплея. Как будто шлейф под дисплеем начинает отваливаться, моргание происходит, пропадание текста... Лечиться перезагрузкой, получается механический дефект у дисплеев.

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

Фото моего дисплея с отображением на нем двух датчиков прилагаю

датчик_2 стоит на улице, поэтому уровень сигнала RSSI у него меньше.
 

Вложения

Последнее редактирование:

russo

Member
Вы это сами придумали или читали документацию?
В ячейки вы можете записать лишь один раз без стирания, а стирать вы можете лишь сектор целиком.
Вы это учли?
тогда можно использовать 45 серию еепром, там проще со стиранием. Не как у 25 серии, где стирается только блок на 4 Кб целиком.

можно взять 24 серию еепром, только придется от микроконтролера выводить I2C ноги. Для 25 серии нужен SPI, он уже на моем дисплее есть, поэтому хотел 25 серию.

по еепром надо еще подумать
 

Юрий Ботов

Moderator
Команда форума
Вопрос, какие дисплеи посоветуете размером побольше, где-то на 5", доступный по цене и желательно на ебее или али експрессе?
Что то мне кажется что дешевле, надежнее и проще будет использовать какой нибудь дешевый андроидовый ПЛАНШЕТ подключенный к вашему устройству по HTTP.
 

Юрий Ботов

Moderator
Команда форума
@Юрий Ботов после того как isOwerflow станет true, он больше не становится false. Нет ли тут недоработки, ошибки? Хотя нет. Все правильно. А вот что будет после сброса? isOwerflow станет false, и запись пойдет поверх?
После сброса буфер считается пустым и начинается запись заново. Вы просили "алгоритм" и я его дал. Повторюсь что в реальной реализации нужно учесть множество ваших хотелок о которых я даже не подозреваю, специфику работы с EEPROM, алгоритм поведения при пропадании электропитания и кучу всего разного.
 

nikolz

Well-known member
тогда можно использовать 45 серию еепром, там проще со стиранием. Не как у 25 серии, где стирается только блок на 4 Кб целиком.

можно взять 24 серию еепром, только придется от микроконтролера выводить I2C ноги. Для 25 серии нужен SPI, он уже на моем дисплее есть, поэтому хотел 25 серию.
по еепром надо еще подумать
------------------------------
Я бы решил эту задачу одним из двух способов.
1) Сборка данных в RAM . работает быстро, буфер не более 16 Kбайт.
2) Сборка данных во флеш по алгоритму, основы которого указал выше. Работает чуть медленнее,
но буфер 1024 Kбайт
-----------------------------
И уж точно не стал бы ничего вешать дополнительно для этой задачи.
-------------------------
 

nikolz

Well-known member
Относительно экрана в модуле считаю это излишеством.
Какой смысл в таком экране, если в доме обычно экранов тьма, используйте любой из имеющихся: смартфон, комп, планшет, телевизор.
 

russo

Member
Относительно экрана в модуле считаю это излишеством.
Какой смысл в таком экране, если в доме обычно экранов тьма, используйте любой из имеющихся: смартфон, комп, планшет, телевизор.
Моя система умного дома может работать автономно, вся информация с датчиков отображается на встроенных дисплеях в базовом контролере. Для работы не нужен интернет, WiFi, провода...., даже не нужно электричество. В базовом блоке есть аккумулятор. Датчики можно настроить на любую, свободную от помех частоту и модуляцию. Питание батареек каждого датчика рассчитываю на полгода. Установка датчиков представляет собой процедуру - положил коробушку на шкаф и забыл про нее. Поэтому данное решение применимо и плотной городской застройке и в глухом лесу в дали от цивилизации.
Возможна установка исполнительных устройств, типа реле, на радиомодулях. Только придется их питать от внешнего питания, постоянный прием на трансивере много кушает mA. Тогда на базовом блоке придется два радиомодуля ставить для разнесения частот датчиков и исполнительных устройств, для надежности.
Интернет нужен только для удобства, визуального контроля за системой не вставая с дивана или находясь далеко от дома. ESP8266 в базовом блоке будет использоваться только в качестве моста для связи с инетом.
Web морду пока еще не писал, где-то в январе буду ваять.
 
Последнее редактирование:

nikolz

Well-known member
Моя система умного дома может работать автономно, вся информация с датчиков отображается на встроенных дисплеях в базовом контролере. Для работы не нужен интернет, WiFi, провода...., даже не нужно электричество. В базовом блоке есть аккумулятор. Датчики можно настроить на любую, свободную от помех частоту и модуляцию. Питание батареек каждого датчика рассчитываю на полгода. Установка датчиков представляет собой процедуру - положил коробушку на шкаф и забыл про нее. Поэтому данное решение применимо и плотной городской застройке и в глухом лесу в дали от цивилизации.
Возможна установка исполнительных устройств, типа реле, на радиомодулях. Только придется их питать от внешнего питания, постоянный прием на трансивере много кушает mA. Тогда на базовом блоке придется два радиомодуля ставить для разнесения частот датчиков и исполнительных устройств, для надежности.
Интернет нужен только для удобства, визуального контроля за системой не вставая с дивана или находясь далеко от дома. ESP8266 в базовом блоке будет использоваться только в качестве моста для связи с инетом.
Web морду пока еще не писал, где-то в январе буду ваять.
Ну и что?
моя тоже работает без интернет и проводов и без экранов.
Поэтому отсутствие интернета это не повод для установки экрана.
Но это Ваш проект,
если хотите экран -ставьте экран.
Круто будет -розетка с экраном, датчик воды в унитазе с экраном, очиститель воздуха с экраном, модуль управления подачей воды в курятнике с экраном, модуль управления насосом в скважине - с экраном.
Полагаю, что это у Вас лишь мечты.
Вы еще не считали стоимость и сложность реализации управления таким зверьем.
Реально Вы это не сделаете, но как хобби вполне подходит для занятия.
 
Сверху Снизу