๐ŸŒฑ MicroPython SHT11 Temperature & Humidity Sensor

May 2, 2025 ยท View on GitHub

This project demonstrates how to interface the SHT11 sensor with a MicroPython-compatible ESP32 board (e.g., Lolin32 Lite) to measure temperature and relative humidity. It uses bit-banged communication and is written fully in MicroPython.


๐Ÿ“ Project Structure

MicroPython-SHT11
โ”œโ”€โ”€ LICENSE                    # License file (e.g., MIT)
โ”œโ”€โ”€ README.md                  # This documentation
โ””โ”€โ”€ project/
    โ”œโ”€โ”€ main.py                # Main script to read and display sensor values
    โ””โ”€โ”€ sht11.py               # SHT11 driver implementation in MicroPython

๐Ÿ“ฆ Requirements

  • โš™๏ธ MicroPython board: Tested on Lolin32 Lite (ESP32)

  • ๐ŸŒก๏ธ Sensor: Sensirion SHT11 (Digital Temp & RH sensor)

  • ๐Ÿง  Firmware: MicroPython 1.20 or later

  • ๐Ÿงฐ Development tools:


๐Ÿ”Œ Wiring

SHT11 PinDescriptionESP32 Pin (Example)
1 (SCK)ClockGPIO 26
2 (DATA)DataGPIO 33
3 (GND)GroundGND
4 (VCC)Power (3.3V)3.3V

โš ๏ธ Note: Do not power SHT11 with 5V โ€” it's a 3.3V device.


๐Ÿงช Example Usage

In the main.py:

# example code to read SHT11 using MicroPython
# author : Ardy Seto P
# email  : 2black0@gmail.com
# board  : Lolin32 Lite (ESP32)

from sht11 import SHT11

# Define SCK and DATA GPIO pins
sht = SHT11(sck=26, data=33)

# Read temperature and humidity
tempOut = sht.temperature()
humOut = sht.humidity()

# Display results
print('Temperature: ', tempOut, '*C')
print('Humidity: ', humOut, '%')

๐Ÿ”ง Features of the SHT11 Driver

  • ๐Ÿ“ก Pure MicroPython bit-banged protocol (no I2C)

  • ๐Ÿ“Š Reads:

    • Temperature (ยฐC)
    • Relative Humidity (%RH)
  • โœ… Includes:

    • CRC check
    • Command protocol implementation
    • Adjustable temperature compensation for RH

Key Methods

SHT11(sck, data)         # Initialize driver with SCK and DATA pins
.temperature()           # Return temperature in ยฐC
.humidity(temp=25)       # Return relative humidity (%), with temp compensation
.read_register()         # Read status register (raw access)

โš™๏ธ Advanced Notes

  • This driver replicates the SHT11 protocol using direct GPIO pin manipulation.
  • Built-in CRC-8 validation helps detect communication errors.
  • The .humidity() method includes temperature compensation if called with custom temperature values.

๐Ÿ’ก Troubleshooting

  • โŒ CRC or ACK errors: Make sure your wires are short and well-connected. SHT11 is sensitive to interference.
  • ๐Ÿ” Slow reads? SHT11 has ~200โ€“300 ms measurement latency; this is normal.
  • ๐Ÿ“‰ Values look wrong? Double-check power source and resistor pull-up configuration (if needed).

๐Ÿ“œ License

This project is open-source under the MIT License.


๐Ÿ‘ค Author

Ardy Seto Priambodo โœ‰๏ธ 2black0@gmail.com