Exercise 5: The I2C bus and the SHT30 Temperature and Humidity Sensor
Introduction
While the DHT11 uses a proprietary protocol the SHT30 make use of a standardized protocol: the I2C protocol, invented by Philips at the beginning of the 1980's. To get you going with I2C please have a look at
https://learn.sparkfun.com/tutorials/i2c/all where the protocol is nicely described.
Exercise 1: I2C Bus Scan
I2C is supported by a
driver in the MicroPython binary.
The ESP32 has 2 hardware I2C interfaces (bus 0 and bus 1) with GPIO 21 connected to SDA and GPIO 22 connected to SCL of bus1.
Write a script that scans the I2C bus and prints all available I2C addresses in the following form:
In the example above only the SHT30 with its address B: 0x45 is connected to the I2C bus.
Exercise 2: Read out the SHT30
First of all let's have a look at the
SHT30 documentation.
This time we are going to be lazy (?) and just use a pure Python driver written by 'Roberto Sánchez which you can find on github at
https://github.com/rsc1975/micropython-sht30/blob/master/sht30.py. The most interesting documents are
Clone the sht30 repository:
git clone
https://github.com/rsc1975/micropython-sht30.git
In order not to interfere with the SHT30 driver already installed in the MicroPython binary please rename sht30.py to mysht30.py. Then upload the driver to the ESP32 /lib directory:
ampy put mysht30.py /lib/mysht30.py
Now you can import the class with:
from mysht30 import SHT30
Once this is done you can try the examples from the repository README.md.
I will give no further explication on how to use the driver than what is given in the README.mf file. Please read the source code and find out yourself which methods are implemented and how to use the driver. Does it work out of the box or do we have to make some modifications? Do you find bugs?
--
Uli Raich - 2020-05-14
Comments