Introduction: RTOS-Based Interfacing of IR(Infrared) and DHT(Digital Humidity and Temperature) Sensors With STM32F446RE Nucleo-board
In the realm of embedded systems, the integration of sensors plays a pivotal role in enabling smart and responsive functionalities. The proposed solution embarks on the development of an integrated system harnessing the power of the STM32 Nucleo-F446RE development board. This system seamlessly amalgamates an infrared (IR) sensor and a DHT11 temperature and humidity sensor, forming a comprehensive monitoring platform.
The core objective of this endeavor is to orchestrate a meticulously crafted firmware, designed to orchestrate efficient data acquisition, processing, and interfacing between the sensors and the STM32 microcontroller. A pivotal component facilitating this orchestration is the utilization of a Real-Time Operating System (RTOS), which acts as the backbone for task management, ensuring smooth and concurrent execution of critical operations.
Supplies
- STM32F446RE Nucleo-Board
- IR(Infrared) Sensor
- DHT(Digital Humidity and Temperature)Sensor
- LED
- Connecting Wires
Step 1: Download STM32CubeIDE
The initial step involves downloading of the desired software-STM32CUBEIDE for the execution.
Download link: https://www.st.com/en/development-tools/stm32cubeide.html
Step 2: Create STM32 Project
- Open the STM32CubeIDE.
- Launch the IDE(Integrated Development Environment).
- Go to File>New STM32 Project.
- STM32 Target Selection box will appear.
- Under Board selector, select the desired Nucelo-board(STM32F446RE).
- Select Next.
- Give a name to your STM32 Project. Keep the other settings as default. Select Finish.
Step 3: Setting Up STM32CubIDE Project
A similar prompt will appear.
A .ioc format file will be created with the name of the project and will be displayed on the screen.
Under this, we will configure the entire project.
Step 4: Pinout & Configuration
Under Pinout & Configuration:
- Go to System Core>SYS. Under MODE>Timebase Source> TIM1.
- Go to Timers> Select TIM6.
- Under Connectivity> USB_OTG_FS. Under Mode>Device Only.
Step 5: Creating Tasks
- Under Pinout & Configuration> Middleware and Software Packs> FREERTOS.
- Select Mode>CMSIS_V1(CMSIS is the library for free RTOS).
- Under Configuration>Tasks and Queues> Create Tasks and assign priorities to each task.
- Here we have 3 tasks: one is the default task, Task02 and Task 03.
- Add 2 tasks and assign high priority to task02(IR Sensor) and lower priority to Task03(DHT Sensor).
- Go to Clock Configuration>Resolve clock issues.
Step 6: Go to Pinout View
- Select GPIO_INPUT for Pin PA0(Connected to IR Sensor).
- GPIO_INPUT for Pin PA1(DHT Sensor).
- GPIO_OUTPUT for Pin PB5(Connected to LED).
Step 7: Code Generation
Go to Device Configuration Tool Code Generation and generate the code. A main.c file will be generated. Keep all parameters as default.
Add commands in the code as per your requirement.
Further steps:
- Build the project(Ctrl+B).
- Check for errors and warnings.
- Setup the hardware.
- Connect it with your IDE using Male to MINI-B Cable.
- Run the project.
- Check the output on Teraterm serial monitor.
Step 8:
You just learnt how to interface IR and DHT Sensor using STM32F446RE Nucleo board on STM32CubeIDE using FREERTOS.
Keep learning! Keep creating! Keep innovating!