Понедельник, 06.05.2024, 13:24

Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Чат
 Запуск датчика температуры и влажности на STM32
В данной статье я расскажу как подключить и запустить датчик влажности и температуры от HopeRF TH01 к STM32F103RBT6.
Попал мне в руки вот такой модуль от HopeRF, с кратким название TH01:)
  
Datasheet можно посмотреть здесь
Этот датчик имеет последовательный протокол обмена I2C.
Но я решил не утруждать себя и Вас настройками данного модуля на STM32, а просто написал библиотеку для работы с этим модулем.
Вот простенькая схема подключения, как подключить питания можно найти и Datasheet
Нам понадобиться библиотека для работы с этим датчикам, качаем ее здесь
Так же не забываем про библиотеку Delay и H44780
Теперь заходим Header файл и выбираем там порт подключения датчика.

/*********************************************************************************************/
#define PORT_TH01                 GPIOC                                         //Порт подключения датчика
#define INT_PORT_TH01          RCC_APB2Periph_GPIOC              //Берем из RCC для нужного порта
#define RCC_TH01                  RCC_APB2PeriphClockCmd
#define SCK                           GPIO_Pin_8                                 //Определяем пин SCK
#define SDA                           GPIO_Pin_9                                //Определяем пин SDA
/*********************************************************************************************/
Вот пример рабочего кода

char LCDBUF[50];                             //это для LCD дисплей здесь он не описан(в качестве примера)
uint16_t TEMP;                                   //
uint8_t OST;                                      //
uint8_t HUM;                                      //
TH01_init();                                       //инициализируем модуль
TH01_get_data();                              //получаем данные от модуля о температуре
LCD_CLEAR();                                  //
TEMP=TH01_read_temp();                 //читаем данные о температуре
OST=TEMP%10;                               //выделяем десятые доли
TEMP=TEMP/10;                               //выделяем температуру
HUM=TH01_read_humi();                  //получаем данные от модуля о влажности
LCD_PUT("Темп-ра: ");                     //
sprintf(LCDBUF,"%d", TEMP);           //выводим
LCD_PUT(LCDBUF);                          //
LCD_PUT(",");                                  //все
sprintf(LCDBUF,"%d", OST);            //
LCD_PUT(LCDBUF);                          //эти
LCD_PUT("C");                                 //
LCD_GOTO(0,1);                              //данные
LCD_PUT("Влажность: ");                 //
sprintf(LCDBUF,"%d", HUM);            //на
LCD_PUT(LCDBUF);                          //
LCD_PUT("%");                                //дисплей
Если вы не управляете модулем отдельно, то сразу после подачи на него питания необходимо его инициализировать,
иначе он перейдет в MODE B, и тогда это библиотека будет не способна с ним работать.
В данной библиотеке так же не предусмотрена проверка контрольной суммы, посчитал это не нужным,
хотя такая возможность у датчика есть.
Так же есть и заводской пример использования здесь.
Данный датчик покупался здесь Комплект Индустрия
Ну вот собственно и все, если есть вопросы, спрашивайте:)

2024
Поиск
Перевод
Статистика
Счетчики
Онлайн лист
Онлайн всего: 1
Гостей: 1
Пользователей: 0