Система мониторинга влажности и температуры через интернет (разработка)

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

Общая суть как можно догадаться из названия проекта есть ни что иное как мониторинг влажности и температуры через интернет.

Весь проект можно условно разделить на 2 главные части:

  • Приемная(серверная)
  • Передающая

Начнем пожалуй со второй части, как более простой 🙂

Передающая часть должна включать в себя:

  • Датчик температуры/влажности
  • Передающее устройство
  • Мк для обработки данных
  • Схема питания

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

Вот примерно так будет выглядеть наше устройство:

T/RH DHT22
RF module nRF24l01
uC ?
Power Supply ?

С датчиком и приемопередатчиком я уже определился и заказал, с другими двумя пунктами немного сложнее.

Предварительно: источник питания = 1.5 вольтовая батарейка ААА, напряжений которой повышается с помощью dc-dc преобразователя, должна присутствовать возможность подключения внешнего питания, а также возможно резервной батарейки. Оптимально если микросхема преобразователя будет иметь также и встроенный LBI.

Теперь микроконтроллер:

Итак, он должен иметь на борту:

  • Таймер для общения с датчиком влажности
  • Таймер для вотчдога
  • SPI для общения с трансмиттером
  • UART для отладки
  • Компаратор (в случае если дс-дс преобразователь не будет иметь LBI)
  • Парочку свободных портов ввода-вывода, как минимум для задания адреса устройства

А да, работать наш мк должен будет при напряжениях питания ~3В (оптимально еще меньше, 1.8В, например, но датчику нужно больше).

Ну и схему от переплюсовки еще бы неплохо внедрить, мы же серьезный девайс делаем 🙂

Под все эти требования подходит много контроллеров, но с учетом распространенности я решил остановиться на PIC18f14K50, заодно потом и с усб может поработать поучусь.

По конвертеру судя по джикей мне нормально подходит MAX1797, в нем как раз и LBI есть, значит не надо будет мутить на мк еще дополнительный огород, только дороговатый он зараза, около 4 $ 🙁

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

T/RH DHT22
RF module nRF24l01
uC PIC18F14K50
Power Supply MAX1797

Теперь можно перейти и к приемной части 🙂

Здесь гвоздем программы является несомненно компьютер raspberry Pi model B, инфы о нем в инете валом, так что описывать ничего не буду. Из эфира данные принимаются все тем же rf модулем nRF24l01, и по SPI запуливаются в мк. Оттуда уже посредстовм уарта передаются на малину. Там все сохраняется в CSV файл.

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

Итак, список главных комплектующих приемной части:

CPU Raspberry PI
RF module nRF24l01
uC PIC18F14K50

Либо же я все-таки решусь побороть свою лень и изучу принципы работы с SPI на raspberry PI и тогда смогу избавиться от промежуточного звена в виде мк. Но пока для меня не ясно как организовывать правильный опрос датчиков в этом случае.

Итак, список основных задач для решения имеет примерно следующий вид:

Серверная часть Передающая часть
Завести Pi Переделать существующий код под DHT22, постараться избавиться от зависаний
Попытаться поднять SPI на малине, если не выйдет переходить к UART Продумать схему питания девайса
Поднять WEB сервер Разобраться с SPI на мк
Научиться строить графики из файла Сварганить тестовую установку приемопередатчика (отправка данных по уарт и прием там же)
Алгоритм опроса датчиков и сбора инфы Алгоритм обработки запроса информации
Запуск сервиса по сбору инфы с определенным временным интервалом Корпус
Плата

Теперь – директория проекта.

Вот в целом и вся сводная инфа, по мере выполнения пункты будут снабжаться ссылками на страницы блога, надеюсь, что этот проект не будет тянуться долго.

 

  • Update #0: Куплена малинка и созданы рабоче колхозные две тестовые платки с кучей соплей 🙁На платах еще не хватает парочки разъемов, датчиков и конечно же мк все еще в пути.Проект с платой находится здесь.
    А да, малина упорно не хотела запускаться с китайской карточки и карточки сандиск 4Гб 4 класса, поэтому я сгонял в ближайший магаз и купил там Silicon Power 16 Gb class 10, и тут все завелось с полтыка.

 

Система мониторинга влажности и температуры через интернет (разработка): 13 комментариев

  1. кстати аппаратный SPI не сложный,куда проще чем аппаратный I2C,и код для SPI выглядит практически также как и для AVR

    • Да я в принципе так и предполагал, тут нету всяких nack’ов, а если еще и 4 провода юзать, так вообще по идее все должно быть ок.

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

  2. Подскажите пожалуйста по поводу внешнего кварцевого генератора. У Вас конденсаторы по 20p стоят. Не знаю каким номиналом они вообще выбираются. Везде пишут по разному.
    Какие конденсаторы надо если например кварц 20 МГц или 16МГц? Спасибо.

    • Смотрим даташит в пункте Oscillator Configurations и видим пределы емкостей для вашего номинала кварца, дальше снизу есть примечание:

      Higher capacitance increases the stability
      of the oscillator, but also increases the
      start-up time. These values are for design
      guidance only

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

  3. И например у Вас в часах реального времени тоже часовой кварц стоит. Там надо конденсаторы вешать или нет?

    • Открываем даташит (теперь уже на часы реального времени) и видим там:

      The DS1307 uses an external 32.768kHz crystal. The oscillator circuit does not require any external resistors or capacitors to operate.

      Откуда понимаем, что здесь кроме кварца нам ничего не нужно (:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.