All Projects → quen0n → DHT11-DHT22-STM32-HAL

quen0n / DHT11-DHT22-STM32-HAL

Licence: other
Библиотека для работы с датчиками DHT11/DHT22/AM2302/AM2301 на STM32

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to DHT11-DHT22-STM32-HAL

stm32f10x makefile freertos
stm32f10x gcc makefile freertos
Stars: ✭ 28 (+7.69%)
Mutual labels:  stm32, stm32f103
FASTUSBasp
This is the fast avr programmer for AVR MCUs based on cheap stm32f103c8t6 board with usb-to-serial support.
Stars: ✭ 78 (+200%)
Mutual labels:  stm32, stm32f103
STM32-Bare-Metal
STM32F103C8 bare metal template
Stars: ✭ 26 (+0%)
Mutual labels:  stm32, stm32f103
stm32 tiny monitor
A tiny external monitor for PC using STM32 and ST7789. Connects to PC over USB and displays the captured screen on ST7789 (240x240) display.
Stars: ✭ 61 (+134.62%)
Mutual labels:  stm32, stm32f103
PrntrBoardV2
32-bit 3D Printer controller board using STM32F407 and replaceable TMC2660/2209 stepper drivers.
Stars: ✭ 31 (+19.23%)
Mutual labels:  stm32, stm32f4
STM32F103 MSD BOOTLOADER
STM32F103 Mass Storage Device Bootloader
Stars: ✭ 23 (-11.54%)
Mutual labels:  stm32, stm32f103
STM32 HAL FREEMODBUS RTU
FreeMODBUS RTU port for STM32 HAL library
Stars: ✭ 111 (+326.92%)
Mutual labels:  stm32, stm32f4
BlueVGA
VGA library for STM32F103C (BluePill) that can manipulate a screen with 28x30 tiles with 8x8 pixels each, in a total resolution of 224x240 pixels with 8 colors using a very low footprint
Stars: ✭ 39 (+50%)
Mutual labels:  stm32, stm32f103
STM32Keyboard
No description or website provided.
Stars: ✭ 15 (-42.31%)
Mutual labels:  stm32, stm32f103
esm
Lightweight communicating state machine framework for embedded systems
Stars: ✭ 21 (-19.23%)
Mutual labels:  stm32, stm32f103
Atrial-Fibrillation-Detection-Blood-Pressure-Monitor-Oscillometric-Method-
Atrial Fibrillation Detection Blood Pressure Monitor (Oscillometric Method)
Stars: ✭ 28 (+7.69%)
Mutual labels:  stm32, stm32f4
STM32 TimerInterrupt
This library enables you to use Interrupt from Hardware Timers on an STM32F/L/H/G/WB/MP1-based board. These STM32F/L/H/G/WB/MP1 Hardware Timers, using Interrupt, still work even if other functions are blocking. Moreover, they are much more precise (certainly depending on clock frequency accuracy) than other software timers using millis() or micr…
Stars: ✭ 27 (+3.85%)
Mutual labels:  stm32, stm32f4
STM32F10x Servo Library
Servo library with stm developed by the Liek Software Team. We are working on new versions.
Stars: ✭ 14 (-46.15%)
Mutual labels:  stm32, stm32f103
platformio-libopencm3-freertos
Sample blinky project for PlatformIO using libopencm3 and FreeRTOS
Stars: ✭ 14 (-46.15%)
Mutual labels:  stm32, stm32f103
gsm
gsm module library for STM32 LL
Stars: ✭ 28 (+7.69%)
Mutual labels:  stm32, stm32cubemx
android-stm32-dfu-programmer
Android application programmer for STM32 microcontrollers using the DFU protocol
Stars: ✭ 77 (+196.15%)
Mutual labels:  stm32, stm32f4
STM32F103-Bare-Metal
Programming the STM32F103C8 micro controller at the "bare metal" register level.
Stars: ✭ 42 (+61.54%)
Mutual labels:  stm32, stm32f103
ScopeMCU
虚拟示波器 MCU端
Stars: ✭ 59 (+126.92%)
Mutual labels:  stm32, stm32f103
i2c-sniffer
Debugging tool for I2C networks, built for STM32 microcontrollers
Stars: ✭ 22 (-15.38%)
Mutual labels:  stm32, stm32f103
stm32DevelopmentBoards
Development boards and software templates for STM32 MCU
Stars: ✭ 41 (+57.69%)
Mutual labels:  stm32, stm32f4

DHT

Лучшая простая библиотека для работы с датчиками DHT11/DHT22/AM2302/AM2301 для STM32 с использованием HAL.

Возможности

  • Поддержка датчиков DHT11/DHT22/AM2302/AM2301
  • Автоматическая проверка контрольной суммы
  • Не требуются таймеры и прерывания
  • Возможность опроса нескольких датчиков
  • Автоматический контроль частоты опроса 0.5 Гц для DHT11 и 1 Гц для DHT22
  • Возможность включения внутреннего подтягивающего резистора (требуется для работы с датчиками без обвязки)

Использование

  1. Настройте проект в CubeMX. Настройте порт к которому подключен датчик на ввод. Сгенерируйте проект.
  2. Скопируйте DHT.h и DHT.c в папки проекта Inc и Src соответственно. При необходимости подключите файлы в IDE.
  3. Создайте переменную типа DHT_sensor, указав в нём порт, тип датчика, и, если у вас датчик без обвязки, включите подтяжку линии данных.
  4. Для получения данных с датчика вызовите DHT_getData() указав в аругменте переменную датчика.

Примеры кода

Вывод данных датчика DHT11 в UART без дробной части

#include "DHT.h"
#include <stdio.h>
#include <string.h>
...
int main(void) {
  ...
  //Создание объекта дачика DHT11, подключенного к PB4, подтяжка линии данных выключена  
  static DHT_sensor livingRoom = {GPIOB, GPIO_PIN_4, DHT11, GPIO_NOPULL};
  ...
  while(1) {
    //Буффер для печати текста
    char msg[40]; 
    //Получение данных с датчика
    DHT_data d = DHT_getData(&livingRoom); 
    //Печать данных в буффер
    sprintf(msg, "\fLiving room: Temp %d°C, Hum %d%%", (uint8_t)d.temp, (uint8_t)d.hum);
    //Отправка текста в UART
    HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFF);
  }
}

DHT11

Вывод данных датчика DHT22 в UART с программной подтяжкой линии данных

#include "DHT.h"
#include <stdio.h>
#include <string.h>
...
int main(void) {
  ...
  //Создание объекта дачика DHT22, подключенного к PC1, подтяжка линии данных включена  
  static DHT_sensor bedRoom = {GPIOC, GPIO_PIN_1, DHT22, GPIO_PULLUP};
  ...
  while(1) {
    //Буффер для печати текста
    char msg[40]; 
    //Получение данных с датчика
    DHT_data d = DHT_getData(&bedRoom); 
    //Печать данных в буффер
    sprintf(msg, "\fBed room: Temp %2.1f°C, Hum %2.1f%%", d.temp, d.hum);
    //Отправка текста в UART
    HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFF);
  }
}

DHT22

UPD: Люди подсказывают о необходимости флага -u _printf_float в опциях линкера для печати чисел с плавающей точкой.

Вывод данных датчиков DHT11 и DHT22 в UART

#include "DHT.h"
#include <stdio.h>
#include <string.h>
...
int main(void) {
  ...
  DHT_sensor livingRoom = {GPIOB, GPIO_PIN_4, DHT11, GPIO_NOPULL};
  DHT_sensor bedRoom = {GPIOC, GPIO_PIN_1, DHT22, GPIO_PULLUP};
  ...
  while(1) {
    //Буффер для печати текста
    char msg[40];
    //Получение данных с датчика DHT11
    DHT_data d = DHT_getData(&livingRoom);
    //Печать данных в буффер
    sprintf(msg, "\fLiving room: Temp %d°C, Hum %d%%\r\n", (uint8_t)d.temp, (uint8_t)d.hum);
    //Отправка текста в UART
    HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFF);
    //Получение данных с датчика DHT22
    d = DHT_getData(&bedRoom);
    //Печать данных в буффер
    sprintf(msg, "Bed room: Temp %2.1f°C, Hum %2.1f%%", d.temp, d.hum);
    //Отправка текста в UART
    HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFF);
  }
}

DHT22

FAQ

В: Не могу получить данные с датчика, всегда получается -128, что делать?

О: Проверьте подключение датчика - убедитесь в правильности и надёжности соединений, в наличии питания, а так же в верно указанном порте в коде. Так же проверьте обратную часть датчика - если пластик оплавлен, то датчик неисправен.

В: Почему у моего DHT11 нет дробной части температуры?

О: Дробная часть температуры имеется только у датчиков фирмы ASAIR.

DHT11

В: Что насчёт DHT12?

О: Он скорее всего будет работать в однопроводном режиме как и DHT11.

В: Для чего и когда нужно включать подтяжку линии данных?

О: Порты МК и DHT11/DHT22 рабатают в режиме открытого стока, поэтому линии данных требуется подтяжка к питанию. Если вы используете голый датчик без какой-либо обвязки, то включите внутренний подтягивающий резистор микроконтроллера, указав GPIO_PULLUP.

Обратная связь, нужна помощь?

Предложения или найденные баги можно сообщить в Telegram http://t.me/quen0n или ВКонтакте https://vk.com/quenon

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].