- Войдите или зарегистрируйтесь, чтобы оставлять комментарии
STM32F030F4P6 sht20 nrf24L01 hand-made 2
Всем привет!
В этой статье хочу рассказать о том, как сделать беспроводной датчик измерения температуры и влажности с передачей полученной информации на основное устройство.
Это часть статей на тему проекта домашней (может и не домашней) автоматизации которая включает в себя:
1. Основной блок управления на основе микроконтроллера STM32F4VE отладочная плата.
2. Датчики (температуры, влажности, движения, открытия и закрытия и т.п.).
В этой статье остановимся на датчике который будет измерять температуру, влажность и передавать данные с основному блоку.
Основной блок получив данные будет решать, что делать дальше ... на этом пока останавливаться не будем ...
И так беспроводной датчик ...
Несколько основных критериев выбранных мною для проектирования:
1. Максимальное время работы от батарейки.
2. Безотказность работы в условиях от -25 до 35 градусов.
Большая проблема складывается из того какой выбрать корпус для датчика т.к. от размера корпуса будет зависеть размер элементов питания. Чем больше емкость батарейки тем дольше датчик будет работать. Самый идеальный, на мой взгляд вариант, это две батарейки типа AA. Остается только подобрать под него удобный корпус. Подобрать корпус мне не удалось, поэтому я выбрал батарейку которую раньше уже использовал в своих проектах - это элемент 123A и простой закрывающийся корпус по размеру платы и высоте батарейки. Почему именно этот тип батарейки ?
Плюсы
1. 3V и хорошая емкость.
2. Доступность.
3. Размер.
Минусы
1. Цена (хотя все относительно, конечно...)
Итак...
С батарейкой я определился и исходя из этого выбрал микросхемы на которых будет работать датчик.
1. Основная микросхема - микроконтроллер STM32F030F4P6. Берем самый простой и дешевый вариант.
2. Микросхема измерения температуры и влажности - SHT20 есть моя статья о ней.
Ее схема подключения из документации
Схема подключения по I2C достаточно простая:
1. VDD и GND по питанию
2. Конденсатор - С = 100 nF
3. Два подтягивающих резистора на линии SCL и SDA рекомендация на которые тоже из документации
3. Передатчик NRF24L01.
Рассказывать и описывать NRF 24 я в этой статье не буду. Достаточно просто ее найти в интернете. Это идеальный передатчик и приемник для разных устройств в которых необходимо передать информацию без использования проводов.
Схема подключения из документации..
Корпус микросхемы
Схема включения
Таблица элементов по схеме
Соберем все это вместе на плате, а она будет с двух сторон и получим следующий вид :
Верхняя сторона платы
Верхняя сторона платы будет содержать (сверху вниз)
1. LDO преобразователь на 3.3v
т.к. плата тестовая то для того чтобы была возможность установить батарейку большего напряжения чем 3v.
2. Светодиодная индикация (светодиод и соответственно резистор)
По поводу индикации - в конечном варианте устройства нужен чтобы показать ошибки ( например батарейка разряжена) можно не разводить т.к. если датчик стоит в не прозрачном корпусе, то при удачной работе датчика светодиод будет моргать пару лет в одиночестве .. :)
3. Температурный датчик (резисторы и конденсатор)
4. Микроконтроллер STM32F030F4P6 первый пин слева сверху.
1. BOOT0 на GND
2.PF0 - светодиодная индикация
4. NRST - ресет используем для программирования!!
5. VDDA - на 3.3v
8. PA2 - прерывание от nRF24L01 в режиме приемника
9. PA3 - nRF24L01 - CE pin
10.PA4 - nRF24L01 - CS(SCN) pin
11. PA5 - nRF24L01 - SPI1(SCK) pin
12. PA6 - nRF24L01 - SPI1(MISO) pin
13. PA7- nRF24L01 - SPI1(MOSI) pin
15. GND
16. VDD
17. PA9 - I2C SHT20 - SCL pin
18. PA10 - I2C SHT20 - SDA pin
19. PA13 - SWDIO pin для программирования
20. PA14 - SWCLK pin для программирования
По микроконтроллеру все.
Контактные площадки для батарейки
под такой тип держателя cм. ниже
Штыри для подключения амперметра на момент отладки
Штыри для программирования
5 шт провода под программатор
SWDIO, SWCLK
+ NRST + VDD + GND
Вторая сторона платы
На этой стороне выполнена разводка nRF24L01
Все разведено согласно схемы указанной выше кроме двух конденсаторов С8 и С9. Я не стал их устанавливать т.к. увеличил конденсатор на верхней плате до 47 mF.
Единственное, что дополнительно выведено - это конденсатор на pin NRST наблюдаются неожиданный ресет микроконтроллера от прикосновения рукой в режиме сна.
Антенна выполнена просто рисунком на плате и конечно не имеет сопротивления в 50 ом. Но тем не менее работа датчика уверенно (без пропущенных пакетов) составляет 7,2 метра. Больше тоже работает, но с пропусками пакетов. Мне этого пока достаточно.
После сборки и установки элементов получаем внешний вид датчика и его потребление - как в видео которое было в новости ссылка
Ниже на фото - одна из версий датчика в котором установлена батарейка CR2032 (пока идут держатели для батарейки типа 123А) Пришлось сдвинуть держатель т.к. не закрывался корпус.
В сборе (78 это адрес датчика)
Потребление тока на этом датчике составляет в среднем как на видео в новости 7-8 мкрА. Но т.к. емкости батарейки по сравнению с 123А в разы меньше - то по истечении 2 месяцев на напряжение составляет 2.93 вольта. С учетом того, что датчик вещает 1 раз в 40 секунд.
Данная модель, экспериментальная и сделана в четырех версиях для понимания процессов работы в экономичном режиме.
После того как будут пройдены испытания временем и морозом, будет заказана партия плат на изготовление.
Если есть желание и возможность повторить то можно этот датчик реализовать на любой отладочной плате с STM32F030F4P6 SHT20 и nRF24L01 было бы не плохо убедиться в потреблении тока как у меня. Для этого необходимо собрать подобную сборку и зашить микроконтроллер программой - вот она ссылка после загрузки программы должен загореться светодиод на 1 сек и после этого начать вещать в эфир каждые 40 - 50 сек.
ЭТО ВАЖНО!!
После прошивки - микроконтроллер уйдет в сон и достучаться до него будет возможно только после сброса питания!!! В течении 1 сек. Для этого я и оставил светодиод.
Если все нормально собрано программа после запуска моргнет один раз (это говорит о том что она передала и уснула) если просто горит светодиод то скорее всего нет общения с nrf24l01 т.к. идет проверка на ее наличие к работе.
Если есть желание повторить датчик и остались вопросы то пишем на stm32@stm32res.ru позже выложу статью о том как получить информацию на основной блок управления.