一、项目名称:
二、项目概述
下面主要的功能以一组为示例进行讲解与操作。
系统组成
系统功能
硬件连接
软件设计
三、实物图





四、软件工作流程

五、点亮效果图


连接图:
六、代码
class AHT10:
def __init__(self, bus=1, address=0x38):
self.bus = smbus2.SMBus(bus)
self.address = address
def read_data(self):
self.bus.write_i2c_block_data(self.address, 0xAC, [0x33, 0x00])
time.sleep(0.1)
data = self.bus.read_i2c_block_data(self.address, 0x00, 6)
if not (data[0] & 0x80):
raise RuntimeError("Device not ready")
raw_temp = ((data[3] & 0x0F) << 16) | (data[4] << 8) | data[5]
temperature = (raw_temp * 200.0 / 1048576) - 50
return temperature
class CONTROLLER:
def __init__(self):
self.temp = 0
# 正向控制 on是开 off是关
self.fan = LED(17)
# 反向控制 off是开 on是关 是否加热从硬件外观是看不出的 加热比较慢 耐心等待
self.heat_board = LED(4)
self.aht10 = AHT10()
self.init()
def init(self):
self.fan.off()
self.heat_board.on()
self.temp = self.aht10.read_data()
def heat(self):
self.fan.off()
self.heat_board.off()
self.temp = self.aht10.read_data()
def cool(self):
self.fan.on()
self.heat_board.on()
self.temp = self.aht10.read_data()
ser = serial.Serial("/dev/ttyAMA0", 9600)
device = CONTROLLER()
device.init()
ser.write('t2.txt="20"'.encode("GB2312"))
ser.write(bytes.fromhex("ff ff ff"))
aim = 20
while 1:
target = ser.read_all()
print("---------------")
if target != b"":
aim = target[-4]
print(aim)
temp = device.temp
print(temp, aim)
temp_str = "{0:.2f}".format(temp)
if int(temp) < aim:
device.heat()
ser.write("p3.pic=1".encode("GB2312"))
ser.write(bytes.fromhex("ff ff ff"))
elif int(temp) > aim:
device.cool()
ser.write("p3.pic=2".encode("GB2312"))
ser.write(bytes.fromhex("ff ff ff"))
else:
device.init()
ser.write("p3.pic=3".encode("GB2312"))
ser.write(bytes.fromhex("ff ff ff"))
time.sleep(0.05)
ser.write('t2.txt="{}"'.format(temp_str).encode("GB2312"))
ser.write(bytes.fromhex("ff ff ff"))
time.sleep(0.9)
七、屏软件操作界面
整体界面

多组选择菜单:

模块图:

八、计划框架图
主要是多级控制时的一个架构图:

软件控制操作图:

九、原理图:

1644

