В данной статье я расскажу как подключить и запустить датчик влажности и температуры от HopeRF TH01 к STM32F103RBT6. Попал мне в руки вот такой модуль от HopeRF, с кратким название TH01:) Datasheet можно посмотреть здесьЭтот датчик имеет последовательный протокол обмена I2C. Но я решил не утруждать себя и Вас настройками данного модуля на STM32, а просто написал библиотеку для работы с этим модулем. Вот простенькая схема подключения, как подключить питания можно найти и Datasheet Нам понадобиться библиотека для работы с этим датчикам, качаем ее здесьТеперь заходим 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, и тогда это библиотека будет не способна с ним работать. В данной библиотеке так же не предусмотрена проверка контрольной суммы, посчитал это не нужным, хотя такая возможность у датчика есть. Так же есть и заводской пример использования здесь. Ну вот собственно и все, если есть вопросы, спрашивайте:)
|