Skip to content

Commit c288861

Browse files
committed
add AHT20 sensor
1 parent 1832387 commit c288861

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

‎sensor/AHT20/READMD.md‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# [mpy-lib](https://github.com/micropython-Chinese-Community/mpy-lib)
2+
3+
## AHT20 SENSOR
4+
5+
6+
## Example
7+
8+
9+
```py
10+
from machine import I2C, Pin
11+
from aht20 import AHT20
12+
from time import sleep_ms
13+
14+
i2c = I2C(0, sda = Pin(4), scl = Pin(5))
15+
aht = AHT20(i2c)
16+
17+
while 1:
18+
aht.measure()
19+
print('Humi: {:.2f} %, Temp: {:.2f} C'.format(aht.Humi(), aht.Temp()))
20+
sleep_ms(1000)
21+
```

‎sensor/AHT20/aht20.py‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
'''
2+
mpy drive for AHT20 Sensor
3+
4+
Author: shaoziyang
5+
Date: 2023.8
6+
7+
http://www.micropython.org.cn
8+
9+
'''
10+
from machine import I2C
11+
from micropython import const
12+
from time import sleep_ms
13+
14+
CMD_INIT = const(0xBE)
15+
CMD_MEASURE = const(0xAC)
16+
CMD_RESET = const(0xBA)
17+
18+
class AHT20:
19+
20+
def __init__(self, i2c):
21+
self.i2c = i2c
22+
self.addr = 56
23+
self.tb = bytearray(3)
24+
self.rb = bytearray(6)
25+
self._H = 0
26+
self._T = 0
27+
self.init()
28+
29+
def set(self, cmd, dat):
30+
self.tb[0] = cmd
31+
self.tb[1] = dat >> 8
32+
self.tb[2] = dat
33+
self.i2c.writeto_mem(self.addr, cmd, self.tb)
34+
35+
def get(self):
36+
self.i2c.readfrom_into(self.addr, self.rb)
37+
38+
def init(self):
39+
self.set(CMD_INIT, 0x0800)
40+
41+
def reset(self):
42+
self.set(CMD_RESET, 0)
43+
44+
def measure(self):
45+
self.set(CMD_MEASURE, 0x3300)
46+
sleep_ms(75)
47+
self.get()
48+
self._H = (self.rb[1]<<12)+(self.rb[2]<<4)+(self.rb[3]>>4)
49+
self._T = ((self.rb[3]%16)<<16)+(self.rb[4]<<8)+self.rb[5]
50+
51+
def Humi(self):
52+
return (self._H*100)/(1<<20)
53+
54+
def Temp(self):
55+
return (self._T*200)/(1<<20)-50
56+
57+

0 commit comments

Comments
 (0)