from machine import Pin,SPI,PWM,UART
from st7567 import ST7567
from ufount1 import BMFont
import time
'''
1,体温模式发送指令:0XFA 0XC5 0XBF;2, 物温模式发送指令:0XFA 0XC6 0XC0;3,开始测温并上传温度指令 0XFA 0XCA 0XC4;
串口国际96081模式
'''
# 创建UART串口对象
uart = UART(1,baudrate = 9600,tx = 0, rx =1)
# 导入字库文件
font = BMFont("fonts/unifont-14-12888-16.v3.bmf")
# 创建SPI对象
spi = SPI(1,baudrate = 40_000_000,sck = Pin(2),mosi = Pin(3),miso = None)
# 定义屏幕背光参数
blk = PWM(Pin(8),duty = (0),freq = (1000))
# 创建LCD屏幕对象。# invX内容反转,0x00或0x01 # invY显示反转,True或False
lcd = ST7567(spi,dc = Pin(10,Pin.OUT),cs = Pin(7,Pin.OUT),rst = Pin(6,Pin.OUT),invX=0x00,invY=True,invdisp=0x00)
# 定义LED灯
led = Pin(12,Pin.OUT)
# 指令
Tiwen = bytearray(b'\xfa\xc5\xbf\r') #体温指令
Wuwen = bytearray(b'\xfa\xc6\xc0\r') #物温指令
Celian = bytearray(b'\xfa\xca\xc4\r') #开始测量
Data = bytearray(9) #数据缓存区
# 温度模块函数
def LU90614(mode):
if mode:
uart.write(Tiwen) # 串口写入指定命令
else:
uart.write(Wuwen)
# 写入串口数据
uart.write(Celian)
# 读取串口数据
Data = uart.read()
# 屏蔽空值
if Data != None:
if Data[1] == 0XAC:
# 在屏幕上显示体温
font.text(lcd,"体温:",0,32,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True,auto_wrap=True)
#print("体温:")
elif Data[1] == 0XAA:
# 在屏幕上显示物温
font.text(lcd,"物温:",0,32,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True,auto_wrap=True)
# print("物温:")
# 屏蔽不该显示的大额数值
if Data[2] and Data[3] != 255:
# 在屏幕上显示数值和温度符号
font.text(lcd,"%d.%d℃"%(Data[2],Data[3]),48,32,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True,auto_wrap=True)
#print("%d.%d℃"%(Data[2],Data[3]))
else:
font.text(lcd,"wait" + str(' '),48,32,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True,auto_wrap=True)
# 获取体温数值
data = Data[2]
# 温度控制。
if data > 35 and data < 39:
led.value(1)
else:
led.value(0)
def main():
# 设置屏幕背光
num = 100
blk.duty(int(num/1000*1023))
# 显示中文
font.text(lcd,"红外温度测量",16,0,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True,auto_wrap=True)
lcd.hline(0,20,128,1)
lcd.show()
#True 人体温度采集,Fales 物体温度采集
while True:
LU90614(True)
if __name__ == "__main__":
main()
示例效果:
四、字库和屏幕驱动资料
请从上篇文章获取:
宝贝详情图片
模块资料下载:
链接:https://pan.baidu.com/s/16x-VwBJSzuN5834DsYEYWw?pwd=1234 提取码:1234
或者
链接: https://pan.baidu.com/s/1KocWep8YX3hpXb-Omdqs9Q 提取码: m56g
LU90614串口协议及接线定义:
一、 LU90614 模块接口定义
VCC : 3.3-5.5V 直流电源正极;
T ( TXD ) : 接 TTL 板或目标 MCU 的 TXD 端;
R ( RXD ): 接 TTL 板或目标 MCU 的 RXD 端;
GND : 电源负极 ( T 、 R 为通信口, 电平 3.3V 、 5V 兼容。)
二、 LU90614 通信协议
-
波特率 9600 , 数据位 8 , 停止位 1 , 无奇偶校验;
-
设置的参数可掉电保存;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
&物联网开发知识点,真正体系化!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!