STM32F030F4P6 sht20 nrf24L01 hand-made 2

Опубликовано stm32 - чт, 06/11/2020 - 14:32

STM32F030F4P6 sht20 nrf24L01 hand-made 2

Всем привет! 

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

Это часть статей на тему проекта домашней (может и не домашней) автоматизации которая включает в себя:

1. Основной блок управления на основе микроконтроллера STM32F4VE отладочная плата.

2. Датчики (температуры, влажности, движения, открытия и закрытия и т.п.).

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

Основной блок получив данные будет решать, что делать дальше ... на этом пока останавливаться не будем ...  

И так беспроводной датчик ...

Несколько основных критериев выбранных мною для проектирования:

1. Максимальное время работы от батарейки.

2. Безотказность работы в условиях от -25 до 35 градусов.

Большая проблема складывается из того какой выбрать корпус для датчика т.к. от размера корпуса будет зависеть размер элементов питания.   Чем больше емкость батарейки тем дольше датчик будет работать. Самый идеальный, на мой взгляд  вариант, это две  батарейки типа AA. Остается только подобрать под него удобный корпус. Подобрать корпус мне не удалось, поэтому я выбрал батарейку которую раньше уже использовал в своих проектах - это элемент 123A и простой закрывающийся корпус по размеру платы и высоте батарейки.  Почему именно этот тип батарейки ?

Плюсы

1. 3V и хорошая емкость.

2. Доступность.

3. Размер.

Минусы 

1. Цена (хотя все относительно, конечно...)

Итак...

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

1. Основная микросхема - микроконтроллер  STM32F030F4P6. Берем самый простой и дешевый вариант.

gg1

2. Микросхема измерения температуры и влажности - SHT20 есть моя статья о ней.

Ее схема подключения из документации

gg2

Схема подключения по I2C достаточно простая:

1. VDD и GND по питанию

2. Конденсатор  - С = 100 nF

3. Два подтягивающих резистора на линии SCL и SDA рекомендация на которые тоже из документации

 

gg4

3. Передатчик NRF24L01.

Рассказывать и описывать NRF 24 я в этой статье не буду. Достаточно просто ее найти в интернете. Это идеальный передатчик и приемник для разных устройств в которых необходимо передать информацию без использования проводов. 

Схема подключения из документации..

Корпус микросхемы

gg6

Схема включения

gg7

 

Таблица элементов по схеме

gg8

 

Соберем все это вместе на плате, а она будет с двух сторон  и получим следующий вид :

Верхняя сторона платы

gg8

Верхняя сторона платы будет содержать (сверху вниз)

1. LDO преобразователь на 3.3v

gg9

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

2. Светодиодная индикация (светодиод и соответственно резистор)

gg10

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

 

3. Температурный датчик  (резисторы и конденсатор)

gg11

 

4. Микроконтроллер STM32F030F4P6  первый пин слева сверху.

gg12

 

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 для программирования

По микроконтроллеру все.

Контактные площадки для батарейки

gg14

под такой тип держателя cм. ниже

gg17

 

Штыри для подключения амперметра на момент отладки

gg16

Штыри для программирования

 5 шт провода под программатор

r48

gg15    SWDIO, SWCLK

 +   NRST + VDD + GND

 

Вторая сторона платы

На этой стороне выполнена разводка nRF24L01 

gg13

Все разведено согласно схемы указанной выше кроме двух конденсаторов С8 и С9. Я не стал их устанавливать т.к. увеличил конденсатор на верхней плате до 47 mF.

Единственное, что дополнительно выведено - это конденсатор на pin  NRST наблюдаются неожиданный ресет микроконтроллера от прикосновения рукой в режиме сна.

gg18

Антенна выполнена просто рисунком на плате и конечно не имеет сопротивления в 50 ом. Но тем не менее работа датчика уверенно (без пропущенных пакетов) составляет 7,2 метра. Больше тоже работает, но с пропусками пакетов. Мне этого пока достаточно. 

После сборки и установки элементов получаем внешний вид датчика и его потребление - как в видео которое было в новости ссылка 

Ниже на фото  - одна из версий датчика в котором установлена батарейка CR2032 (пока идут держатели для батарейки типа 123А) Пришлось сдвинуть держатель т.к. не закрывался корпус.

gg21                gg20

В сборе (78 это адрес датчика)

gg22

Потребление тока на этом датчике составляет в среднем как на видео в новости 7-8 мкрА.  Но т.к. емкости батарейки по сравнению с 123А в разы меньше - то по истечении 2 месяцев на напряжение составляет 2.93 вольта. С учетом того, что датчик вещает 1 раз в 40 секунд.

Данная модель, экспериментальная и сделана в четырех версиях для понимания процессов работы в экономичном режиме.

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

Если есть желание и возможность повторить то можно этот датчик реализовать на любой отладочной плате с  STM32F030F4P6  SHT20 и nRF24L01 было бы не плохо убедиться в потреблении тока как у меня. Для этого необходимо собрать подобную сборку и зашить микроконтроллер программой - вот она ссылка после загрузки программы должен загореться светодиод на 1 сек и после этого начать вещать в эфир каждые 40 - 50 сек. 

ЭТО ВАЖНО!!

После прошивки  - микроконтроллер уйдет в сон и достучаться до него будет возможно только после сброса питания!!! В течении 1 сек. Для этого я и оставил светодиод. 

Если все нормально собрано программа после запуска моргнет один раз (это говорит о том что она передала и уснула)  если просто горит светодиод то скорее всего нет общения с nrf24l01 т.к. идет проверка на ее наличие к работе.    

Если есть желание повторить датчик и остались вопросы то пишем на stm32@stm32res.ru позже выложу статью о том как получить информацию на основной блок управления.

Яндекс.Метрика