Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Умный дом", создана пользователем Alexey N, 6 сен 2016.

  1. nikolz

    nikolz Гуру

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

    nikolz Гуру

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

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.168
    Симпатии:
    226
    @Юрий Ботов после того как isOwerflow станет true, он больше не становится false. Нет ли тут недоработки, ошибки? Хотя нет. Все правильно. А вот что будет после сброса? isOwerflow станет false, и запись пойдет поверх?
     
    Последнее редактирование: 3 ноя 2016
  4. russo

    russo Новичок

    Сообщения:
    31
    Симпатии:
    4
    Наверно это произойдет, если счетчик ячеек будет находиться в оперативке микроконтролера?
    Тогда он исчезнет при пропадании питания?

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

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    Вы не учитываете тот факт, что значение счетчика будете писать в новую ячейку на каждый тик. Т е получится бессмыслица . Ячеек в епроме для значения счетчика будет равно значению счетчика и при начале работы после пропадания питания будете искать последнее значение счетчика в епроме.
     
  6. nikolz

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    На ESP можно счетчик хранить в RTC
    а в RAM нельзя так как в deep-sleep память отключается
     
  7. russo

    russo Новичок

    Сообщения:
    31
    Симпатии:
    4
    Значение счетчика думаю писать в отведенные для нее ячейки (две), по одному и тому же адресу, в еепромку 25 серии
     
  8. nikolz

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    Но кроме счетчика текущего значения Вы должны хранить и указатель на начало актуальной записи.
     
  9. nikolz

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    Вы это сами придумали или читали документацию?
    В ячейки вы можете записать лишь один раз без стирания, а стирать вы можете лишь сектор целиком.
    Вы это учли?
     
    russo нравится это.
  10. nikolz

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
  11. russo

    russo Новичок

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

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

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

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

    Вложения:

    • IMG_3195.JPG
      IMG_3195.JPG
      Размер файла:
      312,1 КБ
      Просмотров:
      20
    Последнее редактирование: 3 ноя 2016
  12. russo

    russo Новичок

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

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

    по еепром надо еще подумать
     
  13. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.052
    Симпатии:
    175
    Что то мне кажется что дешевле, надежнее и проще будет использовать какой нибудь дешевый андроидовый ПЛАНШЕТ подключенный к вашему устройству по HTTP.
     
  14. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.052
    Симпатии:
    175
    После сброса буфер считается пустым и начинается запись заново. Вы просили "алгоритм" и я его дал. Повторюсь что в реальной реализации нужно учесть множество ваших хотелок о которых я даже не подозреваю, специфику работы с EEPROM, алгоритм поведения при пропадании электропитания и кучу всего разного.
     
  15. Alexey N

    Alexey N Читатель

    Сообщения:
    108
    Симпатии:
    12
  16. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.052
    Симпатии:
    175
    Блин... запутался. Извините.
     
  17. nikolz

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    ------------------------------
    Я бы решил эту задачу одним из двух способов.
    1) Сборка данных в RAM . работает быстро, буфер не более 16 Kбайт.
    2) Сборка данных во флеш по алгоритму, основы которого указал выше. Работает чуть медленнее,
    но буфер 1024 Kбайт
    -----------------------------
    И уж точно не стал бы ничего вешать дополнительно для этой задачи.
    -------------------------
     
  18. nikolz

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    Относительно экрана в модуле считаю это излишеством.
    Какой смысл в таком экране, если в доме обычно экранов тьма, используйте любой из имеющихся: смартфон, комп, планшет, телевизор.
     
    tretyakov_sa нравится это.
  19. russo

    russo Новичок

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

    nikolz Гуру

    Сообщения:
    4.750
    Симпатии:
    453
    Ну и что?
    моя тоже работает без интернет и проводов и без экранов.
    Поэтому отсутствие интернета это не повод для установки экрана.
    Но это Ваш проект,
    если хотите экран -ставьте экран.
    Круто будет -розетка с экраном, датчик воды в унитазе с экраном, очиститель воздуха с экраном, модуль управления подачей воды в курятнике с экраном, модуль управления насосом в скважине - с экраном.
    Полагаю, что это у Вас лишь мечты.
    Вы еще не считали стоимость и сложность реализации управления таким зверьем.
    Реально Вы это не сделаете, но как хобби вполне подходит для занятия.
     

Поделиться этой страницей