物联网开发116 - Micropython ESP32 C3连接LU90614人体红外测温模块

本文介绍如何利用ESP32C3开发板,通过MicroPython编程连接LU90614人体红外测温模块和128x64点阵屏,实现温度数据显示。文中详细阐述了硬件接线、环境配置、代码示例以及串口通信协议,包括体温和物温模式的切换与数据解析。
摘要由CSDN通过智能技术生成

 一、目的

        这一节我们来学习如何使用合宙ESP32 C3,连接LU90614人体红外测温模块,连接128x64点阵屏模块SPI接口液晶屏,进行温度显示实验。

二、环境

        ESP32 C3开发板(MicroPython v1.19.1 on 2022-06-18)+LU90614人体红外测温模块 + 128x64点阵屏模块SPI接口液晶屏 + 几根杜邦线 + Win10商业版

        ESP32 C3和各模块接线方法:

 

三、示例

example.py

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()

示例效果:

 四、字库和屏幕驱动资料

        请从上篇文章获取:

物联网开发115 - Micropython ESP32 C3连接GM12864屏幕ST7576驱动IC芯片_魔都飘雪的博客-CSDN博客ESP32 C3开发板(MicroPython v1.19.1 on 2022-06-18)+12864点阵屏模块 + 几根杜邦线 + Win10商业版。这一节我们来学习如何使用合宙ESP32 C3,连接128x64点阵屏模块SPI接口液晶屏带字库,进行显示实验。某宝搜一下: 12864点阵屏12864模块SPI接口LCD点阵屏12864液晶屏。大家按需购买:我买的灰底黑字加不带字库。https://blog.csdn.net/zhusongziye/article/details/125455501?spm=1001.2014.3001.5501五、LU90614红外测温模块购买

https://detail.tmall.com/item.htm?_u=1p01rch7a5c&id=683636374568&spm=a1z09.2.0.0.6d2d2e8dfmSA1zhttps://detail.tmall.com/item.htm?_u=1p01rch7a5c&id=683636374568&spm=a1z09.2.0.0.6d2d2e8dfmSA1z

 宝贝详情图片

模块资料下载:

链接: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 通信协议

1. 波特率 9600 , 数据位 8 , 停止位 1 , 无奇偶校验;

2. 设置的参数可掉电保存;

3. 体温模式发送指令: 0XFA 0XC5 0XBF ;

4. 物温模式发送指令: 0XFA 0XC6 0XC0 ;

5. 开始测温并上传温度指令 0XFA 0XCA 0XC4 ;

6. 温度值回传指令:

一包数据: 包头 + 指令 +DataH+DataL+ 保留位 1+ 保留位 2+ 保留位 3+ 保留位 4+ 校验位

包头: 0XFE , 为固定包头;

指令: 0XAA , 此时为物温模式, DataH 为物温整数位, DataL 为小数位, 单位摄氏度; 0XAC , 此时为体温模式, DataH 为体温整数位, DataL 为小数位, 单位摄氏度。

校验位 = 包头 + 包头 + 指令 +DataH+DataL+ 保留位 1+ 保留位 2+ 保留位 3+ 保留位 4 , 溢出时只保 留低 8 位。

7. 举例 1 (测量当前物温):

发送: 0XFA 0XC6 0XC0 (如果当前为体温测量模式可不发) 0XFA 0XCA 0XC4

回传: 0XFE 0XAA 0X28 0X1E 0X00 0X00 0X00 0X00 0XEE

回传数据解析: 当前物温 40.3 摄氏度。

举例 2 (测量当前体温):

发送: 0XFA 0XC5 0XBF ( 如果当前为体温测量模式可不发) 0XFA 0XCA 0XC4

回传: 0XFE 0XAC 0X28 0X1E 0X00 0X00 0X00 0X00 0XF0

回传数据解析: 当前体温 40.3 摄氏度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都飘雪

您的1毛奖励是我创作的源源动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值