Давно меня преследовала идея попробовать поднять свой веб сервер, с помощью которого можно было бы управлять некоторой домашней автоматикой и мониторить текущее состояние дел с любой точки земли.
Общая суть как можно догадаться из названия проекта есть ни что иное как мониторинг влажности и температуры через интернет.
Весь проект можно условно разделить на 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 и тогда смогу избавиться от промежуточного звена в виде мк. Но пока для меня не ясно как организовывать правильный опрос датчиков в этом случае.
Итак, список основных задач для решения имеет примерно следующий вид:
Серверная часть | Передающая часть |
Переделать существующий код под DHT22, постараться избавиться от зависаний | |
Попытаться поднять SPI на малине, если не выйдет переходить к UART | Продумать схему питания девайса |
Поднять WEB сервер | Разобраться с SPI на мк |
Научиться строить графики из файла | Сварганить тестовую установку приемопередатчика (отправка данных по уарт и прием там же) |
Алгоритм опроса датчиков и сбора инфы | Алгоритм обработки запроса информации |
Запуск сервиса по сбору инфы с определенным временным интервалом | Корпус |
Плата |
Теперь – директория проекта.
Вот в целом и вся сводная инфа, по мере выполнения пункты будут снабжаться ссылками на страницы блога, надеюсь, что этот проект не будет тянуться долго.
- Update #0: Куплена малинка и созданы рабоче колхозные две тестовые платки с кучей соплей 🙁
На платах еще не хватает парочки разъемов, датчиков и конечно же мк все еще в пути.
Проект с платой находится здесь.
А да, малина упорно не хотела запускаться с китайской карточки и карточки сандиск 4Гб 4 класса, поэтому я сгонял в ближайший магаз и купил там Silicon Power 16 Gb class 10, и тут все завелось с полтыка.
ну ни хера ты решил развернуться :)))
кстати аппаратный SPI не сложный,куда проще чем аппаратный I2C,и код для SPI выглядит практически также как и для AVR
Да я в принципе так и предполагал, тут нету всяких nack’ов, а если еще и 4 провода юзать, так вообще по идее все должно быть ок.
темброблок забросил?
Ребенок же появился, не до усилителей пока что 🙂
Но я думаю я его таки добью рано или поздно 😀
а то что сейчас мутишь это коммерческий проект?
Не, просто для себя, т.к. ща надо контролить более менее уровень влажности дома.
Плюс ко всему давно хотел малинку купить, чтобы торренты через нее качать, а то не люблю, когда комп по ночам шумит.
ясноч
Подскажите пожалуйста по поводу внешнего кварцевого генератора. У Вас конденсаторы по 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
Что означает, что дизайнер сам выбирает компромисс между временем старта осцилятора и стабильностью. В большинстве случаев для домашне-тестового пользования можно не загоняться и взять номинал, входящий в пределы и, которого дома не жалко.
И например у Вас в часах реального времени тоже часовой кварц стоит. Там надо конденсаторы вешать или нет?
Открываем даташит (теперь уже на часы реального времени) и видим там:
The DS1307 uses an external 32.768kHz crystal. The oscillator circuit does not require any external resistors or capacitors to operate.
Откуда понимаем, что здесь кроме кварца нам ничего не нужно (: