Skip to content

Commit 8de037f

Browse files
committed
Support AHT20 sensor as well as some GUI display's optimization.
1 parent ea2bf72 commit 8de037f

13 files changed

+216
-139
lines changed

code/AHT20.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from machine import I2C
2+
from utime import sleep_ms
3+
from usr import EventMesh
4+
5+
class aht20(object):
6+
def __init__(self):
7+
self.i2c = I2C(I2C.I2C1,I2C.STANDARD_MODE)
8+
self.slave_addr = 0x38# AHT20 slave address
9+
self.RESET_CMD = b'\xBA'# reset command
10+
self.INIT_CMD = b'\xE1'# initialize command
11+
self.MEASURE_CMD = b'\xAC\x33\x00'# measure command
12+
13+
def reset(self):
14+
self.i2c.write(self.slave_addr,b'\x00',0,self.RESET_CMD,len(self.RESET_CMD))
15+
sleep_ms(20)# wait 20ms
16+
17+
def init(self):#initialize aht20
18+
self.i2c.write(self.slave_addr,b'\x00',0,self.INIT_CMD,len(self.INIT_CMD))
19+
20+
def read(self):
21+
# Send measurement cmd to trigger data acquirement.
22+
self.i2c.write(self.slave_addr,b'\x00',0,self.MEASURE_CMD,len(self.MEASURE_CMD))
23+
24+
#read data
25+
#wait for data ready (at least 80ms)
26+
sleep_ms(80)
27+
r_data = bytearray([0x00]*6)
28+
self.i2c.read(self.slave_addr,b'\x00',0,r_data,6,80)
29+
busy = 0#r_data[0]>>7
30+
if not busy:
31+
RH_reg_data = (r_data[1]<<12) | (r_data[2]<<4) | (r_data[3]>>4)
32+
RH = RH_reg_data/(1<<20) * 100
33+
34+
temp_reg_data = ((r_data[3]&0x0F)<<16) | (r_data[4]<<8) | r_data[5]
35+
temp = temp_reg_data/(1<<20) * 200 - 50
36+
37+
return RH,temp
38+
else:
39+
return ()
40+
41+
def update_temphumi(args):
42+
aht20_obj = aht20()
43+
aht20_obj.init()
44+
sleep_ms(1000)
45+
#while True:
46+
res = aht20_obj.read()
47+
if res:
48+
#print("RH: %.2f%%" % res[0])
49+
#print("Temp: %.2f" % res[1])
50+
#print("------------")
51+
EventMesh.publish("update_monitordate",res)
52+
EventMesh.publish("update_main_screen_date",res)
53+
return res
54+
else:
55+
print("aht20 read error")
56+
return (0,0)
57+
#sleep_ms(1000)

code/Agri_ui.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414

1515
import lvgl as lv
1616
import utime
17-
from usr import EventMesh
17+
from usr import EventMesh,AHT20
1818
from machine import LCD, Pin
1919
from tp import gt9xx
2020
from usr.screen import Screen
21-
21+
import osTimer
2222

2323
# LCD initialization parameters
2424
init_480X854_local = (
@@ -68,7 +68,8 @@ def __init__(self):
6868
self.__disp_drv = None
6969
self.__indev_drv = None
7070
self.__tp_gt911 = None
71-
71+
self.data_timer = osTimer()
72+
self.data_timer.start(1000,1,AHT20.update_temphumi)
7273
self.screens = []
7374
self.__lvgl_init()
7475
self.mipilcd = None

code/about_screen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def create(self):
183183
about_label_1 = lv.label(about)
184184
about_label_1.set_pos(124, 8)
185185
about_label_1.set_size(76, 13)
186-
about_label_1.set_text("China Unicom")
186+
about_label_1.set_text("Unicom")
187187
about_label_1.set_long_mode(lv.label.LONG.WRAP)
188188
about_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
189189
about_label_1.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)

code/alarm_screen.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def create(self):
141141
alarm_label_yys = lv.label(alarm)
142142
alarm_label_yys.set_pos(124, 8)
143143
alarm_label_yys.set_size(76, 13)
144-
alarm_label_yys.set_text("China Unicom")
144+
alarm_label_yys.set_text("Unicom")
145145
alarm_label_yys.set_long_mode(lv.label.LONG.WRAP)
146146
alarm_label_yys.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
147147
alarm_label_yys.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -169,16 +169,16 @@ def create(self):
169169
alarm_cont_1.set_size(507, 76)
170170
alarm_label_3 = lv.label(alarm_cont_1)
171171
alarm_label_3.set_pos(29, 16)
172-
alarm_label_3.set_size(139, 22)
173-
alarm_label_3.set_text("Soil moisture is too low")
172+
alarm_label_3.set_size(189, 22)
173+
alarm_label_3.set_text("Soil moisture low")
174174
alarm_label_3.set_long_mode(lv.label.LONG.WRAP)
175175
alarm_label_3.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
176176
alarm_label_3.add_style(self.style_siyuan_18, lv.PART.MAIN | lv.STATE.DEFAULT)
177177

178178
alarm_label_4 = lv.label(alarm_cont_1)
179179
alarm_label_4.set_pos(27, 45)
180180
alarm_label_4.set_size(139, 22)
181-
alarm_label_4.set_text("State: Unprocessed")
181+
alarm_label_4.set_text("State: Todo")
182182
alarm_label_4.set_long_mode(lv.label.LONG.WRAP)
183183
alarm_label_4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
184184
alarm_label_4.add_style(self.style_siyuan_18, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -195,7 +195,7 @@ def create(self):
195195

196196
alarm_label_5 = lv.label(alarm)
197197
alarm_label_5.set_pos(168, 70)
198-
alarm_label_5.set_size(97, 23)
198+
alarm_label_5.set_size(183, 23)
199199
alarm_label_5.set_text("Alarm record")
200200
alarm_label_5.set_long_mode(lv.label.LONG.WRAP)
201201
alarm_label_5.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
@@ -205,11 +205,11 @@ def create(self):
205205
alarm_btn_1.set_pos(713, 135)
206206
alarm_btn_1.set_size(97, 47)
207207
alarm_btn_1_label = lv.label(alarm_btn_1)
208-
alarm_btn_1_label.set_text("To deal with")
208+
alarm_btn_1_label.set_text("Doing")
209209
alarm_btn_1.set_style_pad_all(0, lv.STATE.DEFAULT)
210210
alarm_btn_1_label.align(lv.ALIGN.CENTER, 0, 0)
211211
alarm_btn_1_label.set_style_text_color(lv.color_make(0xfa, 0xfa, 0xfa), lv.STATE.DEFAULT)
212-
alarm_btn_1_label.set_style_text_font(lv.font_siyuan_Regular_14, lv.STATE.DEFAULT)
212+
alarm_btn_1_label.set_style_text_font(lv.font_montserrat_14, lv.STATE.DEFAULT)
213213
alarm_btn_1.add_style(self.style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
214214

215215
alarm_cont_2 = lv.obj(alarm)
@@ -218,14 +218,14 @@ def create(self):
218218
alarm_label_1_7 = lv.label(alarm_cont_2)
219219
alarm_label_1_7.set_pos(6, 16)
220220
alarm_label_1_7.set_size(194, 22)
221-
alarm_label_1_7.set_text("Low carbon dioxide")
221+
alarm_label_1_7.set_text("CO2 too low.")
222222
alarm_label_1_7.set_long_mode(lv.label.LONG.WRAP)
223223
alarm_label_1_7.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
224224
alarm_label_1_7.add_style(self.style_siyuan_18, lv.PART.MAIN | lv.STATE.DEFAULT)
225225

226226
alarm_label_2_7 = lv.label(alarm_cont_2)
227227
alarm_label_2_7.set_pos(27, 45)
228-
alarm_label_2_7.set_size(139, 22)
228+
alarm_label_2_7.set_size(214, 22)
229229
alarm_label_2_7.set_text("State: Processed")
230230
alarm_label_2_7.set_long_mode(lv.label.LONG.WRAP)
231231
alarm_label_2_7.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
@@ -245,11 +245,11 @@ def create(self):
245245
alarm_btn_2.set_pos(715, 237)
246246
alarm_btn_2.set_size(97, 47)
247247
alarm_btn_2_label = lv.label(alarm_btn_2)
248-
alarm_btn_2_label.set_text("To deal with")
248+
alarm_btn_2_label.set_text("Todo")
249249
alarm_btn_2.set_style_pad_all(0, lv.STATE.DEFAULT)
250250
alarm_btn_2_label.align(lv.ALIGN.CENTER, 0, 0)
251251
alarm_btn_2_label.set_style_text_color(lv.color_make(0xfa, 0xfa, 0xfa), lv.STATE.DEFAULT)
252-
alarm_btn_2_label.set_style_text_font(lv.font_siyuan_Regular_14, lv.STATE.DEFAULT)
252+
alarm_btn_2_label.set_style_text_font(lv.font_montserrat_14, lv.STATE.DEFAULT)
253253
alarm_btn_2.add_style(self.style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
254254

255255
self.home_btn.add_event_cb(lambda e: self.__home_btn_event_cb(e), lv.EVENT.PRESSED, None)

code/dev1_screen.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ def create(self):
136136
dev_ctrl_label_1 = lv.label(dev_ctrl)
137137
dev_ctrl_label_1.set_pos(124, 8)
138138
dev_ctrl_label_1.set_size(76, 13)
139-
dev_ctrl_label_1.set_text("China Unicom")
139+
dev_ctrl_label_1.set_text("Unicom")
140140
dev_ctrl_label_1.set_long_mode(lv.label.LONG.WRAP)
141141
dev_ctrl_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
142142
dev_ctrl_label_1.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -210,71 +210,71 @@ def create(self):
210210
dev_ctrl_label_23 = lv.label(dev_ctrl)
211211
dev_ctrl_label_23.set_pos(322, 139)
212212
dev_ctrl_label_23.set_size(93, 25)
213-
dev_ctrl_label_23.set_text("Running status: Normal")
213+
dev_ctrl_label_23.set_text("Status: Normal")
214214
dev_ctrl_label_23.set_long_mode(lv.label.LONG.WRAP)
215215
dev_ctrl_label_23.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
216216
dev_ctrl_label_23.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
217217

218218
dev_ctrl_label_24 = lv.label(dev_ctrl)
219219
dev_ctrl_label_24.set_pos(519, 139)
220220
dev_ctrl_label_24.set_size(93, 25)
221-
dev_ctrl_label_24.set_text("Running status: Normal")
221+
dev_ctrl_label_24.set_text("Status: Normal")
222222
dev_ctrl_label_24.set_long_mode(lv.label.LONG.WRAP)
223223
dev_ctrl_label_24.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
224224
dev_ctrl_label_24.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
225225

226226
dev_ctrl_label_25 = lv.label(dev_ctrl)
227227
dev_ctrl_label_25.set_pos(715, 139)
228228
dev_ctrl_label_25.set_size(93, 25)
229-
dev_ctrl_label_25.set_text("Running status: Normal")
229+
dev_ctrl_label_25.set_text("Status: Normal")
230230
dev_ctrl_label_25.set_long_mode(lv.label.LONG.WRAP)
231231
dev_ctrl_label_25.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
232232
dev_ctrl_label_25.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
233233

234234
dev_ctrl_label_26 = lv.label(dev_ctrl)
235235
dev_ctrl_label_26.set_pos(715, 254)
236236
dev_ctrl_label_26.set_size(93, 25)
237-
dev_ctrl_label_26.set_text("Running status: Normal")
237+
dev_ctrl_label_26.set_text("Status: Normal")
238238
dev_ctrl_label_26.set_long_mode(lv.label.LONG.WRAP)
239239
dev_ctrl_label_26.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
240240
dev_ctrl_label_26.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
241241

242242
dev_ctrl_label_27 = lv.label(dev_ctrl)
243243
dev_ctrl_label_27.set_pos(527, 255)
244244
dev_ctrl_label_27.set_size(93, 25)
245-
dev_ctrl_label_27.set_text("Running status: Normal")
245+
dev_ctrl_label_27.set_text("Status: Normal")
246246
dev_ctrl_label_27.set_long_mode(lv.label.LONG.WRAP)
247247
dev_ctrl_label_27.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
248248
dev_ctrl_label_27.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
249249

250250
dev_ctrl_label_28 = lv.label(dev_ctrl)
251251
dev_ctrl_label_28.set_pos(331, 255)
252252
dev_ctrl_label_28.set_size(93, 25)
253-
dev_ctrl_label_28.set_text("Running status: Abnormal")
253+
dev_ctrl_label_28.set_text("Status: Error")
254254
dev_ctrl_label_28.set_long_mode(lv.label.LONG.WRAP)
255255
dev_ctrl_label_28.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
256256
dev_ctrl_label_28.add_style(self.style_siyuan_14_red, lv.PART.MAIN | lv.STATE.DEFAULT)
257257

258258
dev_ctrl_label_29 = lv.label(dev_ctrl)
259259
dev_ctrl_label_29.set_pos(331, 377)
260260
dev_ctrl_label_29.set_size(93, 25)
261-
dev_ctrl_label_29.set_text("Running status: Normal")
261+
dev_ctrl_label_29.set_text("Status: Normal")
262262
dev_ctrl_label_29.set_long_mode(lv.label.LONG.WRAP)
263263
dev_ctrl_label_29.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
264264
dev_ctrl_label_29.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
265265

266266
dev_ctrl_label_30 = lv.label(dev_ctrl)
267267
dev_ctrl_label_30.set_pos(528, 377)
268268
dev_ctrl_label_30.set_size(93, 25)
269-
dev_ctrl_label_30.set_text("Running status: Normal")
269+
dev_ctrl_label_30.set_text("Status: Normal")
270270
dev_ctrl_label_30.set_long_mode(lv.label.LONG.WRAP)
271271
dev_ctrl_label_30.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
272272
dev_ctrl_label_30.add_style(self.style_siyuan_14, lv.PART.MAIN | lv.STATE.DEFAULT)
273273

274274
dev_ctrl_label_32 = lv.label(dev_ctrl)
275275
dev_ctrl_label_32.set_pos(290, 103)
276276
dev_ctrl_label_32.set_size(131, 18)
277-
dev_ctrl_label_32.set_text("Temperature and humidity sensor")
277+
dev_ctrl_label_32.set_text("Temp sensor")
278278
dev_ctrl_label_32.set_long_mode(lv.label.LONG.WRAP)
279279
dev_ctrl_label_32.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
280280
dev_ctrl_label_32.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -290,47 +290,47 @@ def create(self):
290290
dev_ctrl_label_34 = lv.label(dev_ctrl)
291291
dev_ctrl_label_34.set_pos(679, 106)
292292
dev_ctrl_label_34.set_size(130, 19)
293-
dev_ctrl_label_34.set_text("Soil pH sensor")
293+
dev_ctrl_label_34.set_text("PH sensor")
294294
dev_ctrl_label_34.set_long_mode(lv.label.LONG.WRAP)
295295
dev_ctrl_label_34.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
296296
dev_ctrl_label_34.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
297297

298298
dev_ctrl_label_35 = lv.label(dev_ctrl)
299299
dev_ctrl_label_35.set_pos(290, 224)
300300
dev_ctrl_label_35.set_size(135, 17)
301-
dev_ctrl_label_35.set_text("Soil EC sensor")
301+
dev_ctrl_label_35.set_text("EC sensor")
302302
dev_ctrl_label_35.set_long_mode(lv.label.LONG.WRAP)
303303
dev_ctrl_label_35.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
304304
dev_ctrl_label_35.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
305305

306306
dev_ctrl_label_36 = lv.label(dev_ctrl)
307307
dev_ctrl_label_36.set_pos(487, 224)
308308
dev_ctrl_label_36.set_size(128, 17)
309-
dev_ctrl_label_36.set_text("CO2 concentration sensor")
309+
dev_ctrl_label_36.set_text("CO2 sensor")
310310
dev_ctrl_label_36.set_long_mode(lv.label.LONG.WRAP)
311311
dev_ctrl_label_36.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
312312
dev_ctrl_label_36.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
313313

314314
dev_ctrl_label_37 = lv.label(dev_ctrl)
315315
dev_ctrl_label_37.set_pos(674, 222)
316316
dev_ctrl_label_37.set_size(134, 17)
317-
dev_ctrl_label_37.set_text("O2 concentration sensor")
317+
dev_ctrl_label_37.set_text("O2 sensor")
318318
dev_ctrl_label_37.set_long_mode(lv.label.LONG.WRAP)
319319
dev_ctrl_label_37.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
320320
dev_ctrl_label_37.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
321321

322322
dev_ctrl_label_38 = lv.label(dev_ctrl)
323323
dev_ctrl_label_38.set_pos(289, 346)
324324
dev_ctrl_label_38.set_size(141, 17)
325-
dev_ctrl_label_38.set_text("Wind speed and direction sensor")
325+
dev_ctrl_label_38.set_text("Wind sensor")
326326
dev_ctrl_label_38.set_long_mode(lv.label.LONG.WRAP)
327327
dev_ctrl_label_38.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
328328
dev_ctrl_label_38.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
329329

330330
dev_ctrl_label_39 = lv.label(dev_ctrl)
331331
dev_ctrl_label_39.set_pos(482, 347)
332332
dev_ctrl_label_39.set_size(150, 17)
333-
dev_ctrl_label_39.set_text("Soil temperature and humidity sensor")
333+
dev_ctrl_label_39.set_text("Humi sensor")
334334
dev_ctrl_label_39.set_long_mode(lv.label.LONG.WRAP)
335335
dev_ctrl_label_39.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
336336
dev_ctrl_label_39.add_style(self.style_siyuan_16_blue, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -429,22 +429,22 @@ def create(self):
429429
dev_ctrl_btn_3.set_pos(115, 182)
430430
dev_ctrl_btn_3.set_size(105, 40)
431431
dev_ctrl_btn_3_label = lv.label(dev_ctrl_btn_3)
432-
dev_ctrl_btn_3_label.set_text("Device status")
432+
dev_ctrl_btn_3_label.set_text("status")
433433
dev_ctrl_btn_3.set_style_pad_all(0, lv.STATE.DEFAULT)
434434
dev_ctrl_btn_3_label.align(lv.ALIGN.CENTER, 0, 0)
435435
dev_ctrl_btn_3_label.set_style_text_color(lv.color_make(0xfa, 0xfa, 0xfa), lv.STATE.DEFAULT)
436-
dev_ctrl_btn_3_label.set_style_text_font(lv.font_siyuan_Regular_14, lv.STATE.DEFAULT)
436+
dev_ctrl_btn_3_label.set_style_text_font(lv.font_montserrat_14, lv.STATE.DEFAULT)
437437
dev_ctrl_btn_3.add_style(self.style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
438438

439439
dev_ctrl_btn_3 = lv.btn(dev_ctrl)
440440
dev_ctrl_btn_3.set_pos(115, 268)
441441
dev_ctrl_btn_3.set_size(105, 40)
442442
dev_ctrl_btn_3_label = lv.label(dev_ctrl_btn_3)
443-
dev_ctrl_btn_3_label.set_text("Device control")
443+
dev_ctrl_btn_3_label.set_text("control")
444444
dev_ctrl_btn_3.set_style_pad_all(0, lv.STATE.DEFAULT)
445445
dev_ctrl_btn_3_label.align(lv.ALIGN.CENTER, 0, 0)
446446
dev_ctrl_btn_3_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
447-
dev_ctrl_btn_3_label.set_style_text_font(lv.font_siyuan_Regular_14, lv.STATE.DEFAULT)
447+
dev_ctrl_btn_3_label.set_style_text_font(lv.font_montserrat_14, lv.STATE.DEFAULT)
448448
dev_ctrl_btn_3.add_style(self.style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
449449
self.sw_dev2_btn = dev_ctrl_btn_3
450450

0 commit comments

Comments
 (0)