en:pfw:dht22
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:pfw:dht22 [2025-04-26 10:18] – [Numerical representation of the measured values] mka | en:pfw:dht22 [2025-06-27 12:05] (current) – [Implementation for RP2040 using a PIO block] mka | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| {{pfw: | {{pfw: | ||
| - | ====== DHT22 Protocol | + | ====== DHT22 ====== |
| - | ===== Introduction ===== | + | |
| The DHT22 module is a low-cost digital temperature and humidity sensor. It utilizes a capacitive humidity sensor and a thermistor to measure the surrounding air and outputs a digital signal via a single data pin. It's known for its wider measurement range and higher accuracy compared to its predecessor, | The DHT22 module is a low-cost digital temperature and humidity sensor. It utilizes a capacitive humidity sensor and a thermistor to measure the surrounding air and outputs a digital signal via a single data pin. It's known for its wider measurement range and higher accuracy compared to its predecessor, | ||
| Line 16: | Line 14: | ||
| * Suitable for indoor environmental monitoring, weather stations, and HVAC systems. | * Suitable for indoor environmental monitoring, weather stations, and HVAC systems. | ||
| - | ===== SDA ===== | + | ===== SDA Protocol |
| The DHT22 communicates using a **proprietary single-wire serial protocol**. Here's a breakdown of the process: | The DHT22 communicates using a **proprietary single-wire serial protocol**. Here's a breakdown of the process: | ||
| Line 43: | Line 41: | ||
| {{ : | {{ : | ||
| - | ===== Implementation ===== | + | |
| - | ==== Testing with a Logic Analyser (PulsView) ==== | + | ===== Testing with a Logic Analyser (PulsView) |
| Pin P1.0 is bidirectional. It sends the start pulse and then receives the 40 data bits from the sensor module. | Pin P1.0 is bidirectional. It sends the start pulse and then receives the 40 data bits from the sensor module. | ||
| Line 58: | Line 56: | ||
| {{ : | {{ : | ||
| - | ==== Pseudocode | + | ====== Implementation for TI's Launchpad ====== |
| - | < | + | This program was used to test DHT22 modules before installation. The DHT22 modules were tested for functionality at room temperature, |
| - | Function: Pio ( -- ) \ set port I/O function. SDA --> P1.0 | + | |
| - | Function: wakeup ( -- ) \ notify sensor to prepare the data | + | |
| - | Function: @data ( -- sun moon hum tmp chk chksum ) \ get sensor data | + | |
| - | get response time of sensor, store in register ' | + | |
| - | get startpulse duration, store in register ' | + | |
| - | 40 loop | + | |
| - | read bit using ' | + | |
| - | | + | |
| - | 08 loop | + | |
| - | | + | |
| - | calculate chksum | + | |
| - | Function: (dht22) | + | |
| - | Function: | + | |
| - | Function: | + | |
| - | n loop dht22 | + | |
| - | </ | + | |
| - | ==== Numerical representation of the measured values ==== | + | [[en: |
| - | === Humidity === | ||
| - | The first 16 bits coming from the DHT22 are the relative humidity in tenths of a percent. They can be processed directly with the 16-bit noForth and correspond to a positive integer. Rounded to whole digits | + | ====== Implementation |
| - | Here is an excerpt from the noforth source code: | + | |
| - | < | + | [[en:pfw:dht22-rp2040-nofortht|DHT22 for the Raspberry Pi Pico Board RP2040 and noForth t]] using a PIO block |
| - | : .hum ( hum -- ) 10 / . ." %rel" space ; | + | |
| - | </ | + | |
| - | === Temperature === | + | PIO stands for //Programmable Input Output//. You can program the PIO blocks with the [[en:pfw:assemblers_pio-assembler|noforth |
| - | + | ====== Background Information ====== | |
| - | Die nächsten 16-Bit sind die Temperatur in zehntel Grad Celsius. | + | |
| - | + | ||
| - | Temperaturen ab null Grad und höher können mit dem 16-Bit noForth unmittelbar verarbeitet werden, sie entsprechen einer positiven ganzen Zahl. | + | |
| - | + | ||
| - | Temperaturen unter null Grad stellt der DHT22 so dar: Das MSB der 16-Bit ist gesetzt, doch ansonsten wird die Temperatur ganzzahlig ' | + | |
| - | + | ||
| - | < | + | |
| - | : .tmp ( tmp -- ) | + | |
| - | dup hx 8000 and hx 8000 = \ check MSB | + | |
| - | if [char] - | + | |
| - | else [char] + | + | |
| - | then emit | + | |
| - | hx 7fff and ( tmp -- +tmp ) \ reset MSB | + | |
| - | 10 /mod 3 .r [char] . emit . \ --> TTT.T | + | |
| - | [char] f decemit | + | |
| - | space | + | |
| - | ; | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ==== Source Code - and what it was used for.==== | + | |
| - | + | ||
| - | [[en:pfw:dht22-msp430g2553-noforth|DHT22 with Launchpad MSP430G2553 and noForth]] | + | |
| - | + | ||
| - | This program was used to test DHT22 modules before installation. The DHT22 modules were tested for functionality at room temperature, | + | |
| - | ==== More information on the MSP430G2553 | + | |
| + | * How this was discovered: [[en: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[en: | ||
| - | ==== All about noForth | + | ====== |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | --- | + | |
| - | + | ||
| - | === Source code editor | + | |
| + | MK:\\ | ||
| I like //Notepad Next// for Linux, a cross-platform, | I like //Notepad Next// for Linux, a cross-platform, | ||
| - | https:// | + | https:// |
| - | + | ||
| - | === Terminal === | + | |
| To work with the embedded noForth system I use //e4thcom// by Manfred Mahlow. | To work with the embedded noForth system I use //e4thcom// by Manfred Mahlow. | ||
| - | https:// | + | https:// |
| - | + | Sometimes I also use Windows and Teraterm, for example, to log longer MCU outputs to a file. I also prefer it for testing parts of the source code using copy and paste.\\ | |
| - | === Logic Analyser === | + | In this project I used a Logic Analyzer by AZDelivery, 8 CH, 24MHz. (Amazon)\\ |
| - | + | ||
| - | AZDelivery | + | |
| // | // | ||
| - | |||
| - | --- | ||
en/pfw/dht22.1745655480.txt.gz · Last modified: 2025-04-26 10:18 by mka