cubemx stm32 lu90614模块 人体温度检测模块 可以替代温枪 驱动代码

LU90614红外模块实测:从开箱到数据读取,如何快速评估一个传感器? 本文详细评测了LU90614红外测温模块的性能,从开箱拆解到数据读取,提供了5步快速验证方法。通过实测接口参数、搭建测试系统、通信测试和功能验证,评估了模块的精度、稳定性和可靠性,为硬件开发者提供了实用的采购决策建议。 阅读详情

lu90614

  • 使用串口通信在,指值得注意的是,他的TX接单片机的TX,RX接单片机的RX,和其他的串口设备不一样。
    在这里插入图片描述

模式切换包

lu90614有两种模式,
一个是物温模式,一个是体温模式(检测人体温度用体温模式)
不同模式的切换需要发送不同的包


体温模式发送指令:0XFA 0XC5 0XBF;
物温模式发送指令:0XFA 0XC6 0XC0;

开始测温包

切换模式后,需要测温就得发个开始测温包

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

测温时会回发包,回发包有8个数据,格式是:
包头+指令+DataH+DataL+保留位1+保留位2+保留位3+保留位4+校验位

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

cubemx

开一个串口,配置9600波特率,开接收中断。

代码编写

lu90614.c

#include "lu90614.h"

/* 
 *
 * 温度值回传指令:
 *		一包数据:包头+指令+DataH+DataL+保留位 1+保留位 2+保留位 3+保留位 4+校验位
 *
 *		包头:	0XFE,为固定包头;
 *
 *		指令:	0XAA,此时为物温模式,DataH 为物温整数位,DataL 为小数位,单位摄氏度;
 *				0XAC,此时为体温模式,DataH 为体温整数位,DataL 为小数位,单位摄氏度。
 *
 *		校验位= 包头 + 指令 + DataH + DataL + 保留位1 + 保留位2 + 保留位3 + 保留位4,
 *		溢出时只保留低 8 位。
 *
*/


uint8_t a_rx_buf = 0;
uint8_t rx_buf[32] = {0};

uint16_t rx_cnt = 0;
uint16_t usart_rx_sta = 0;
uint16_t usart_sta = 0;

Temp_Body_SUBS lu90614Temp;


__attribute__((weak)) void lu90614_operation(void)
{
	
}


void iu90614_send_cmd(IL90614_CMD cmd)
{
	uint8_t pCmdPack[3] = {0};
	
	// 错误退出
	if((cmd<BODY_TEMPER_PACK) || (cmd>=IL90614_CMD_MAX))
	{
		return;
	}
	
	// 发包判断
	switch(cmd)
	{
		case BODY_TEMPER_PACK:
			pCmdPack[0] = 0xfa;
			pCmdPack[1] = 0xc5;
			pCmdPack[2] = 0xbf;
		break;
		case SUBS_TEMPER_PACK:
			pCmdPack[0] = 0xfa;
			pCmdPack[1] = 0xc6;
			pCmdPack[2] = 0xc0;
		break;
		case TEMP_MEASURE_PACK:
			pCmdPack[0] = 0xfa;
			pCmdPack[1] = 0xca;
			pCmdPack[2] = 0xc4;
		break;
		default:
		break;
	}	
    HAL_UART_Transmit(&luuart, (uint8_t *)pCmdPack, LU90614_CMD_LEN, 0xfff);
}



void iu90614_init(void)
{
	// 串口接收中断初始化
	HAL_UART_Receive_IT(&luuart, &a_rx_buf, 1);
	
	// 发送检测人体温度包
	iu90614_send_cmd(BODY_TEMPER_PACK);
	// 开始测温
	iu90614_send_cmd(TEMP_MEASURE_PACK);
}


void lu90614_scan(void)
{
	static uint16_t iCnt = 0; // 用于判断是否长久未接收到数据
	
	if(usart_rx_sta & 0X8000)//接收到一次数据
	{
		iCnt = 0;
		
		// 获取温度
		lu90614Temp.temperInteger = rx_buf[2];		
		lu90614Temp.temperDecimal = rx_buf[3]/10;
		lu90614Temp.temperInteger = lu90614Temp.temperInteger & 0X00FF;
		
		// 在一定范围的数据才是有效的
		if((lu90614Temp.temperInteger>0) && (lu90614Temp.temperInteger<70))
		{
			// 打印到串口上
			printf("temp : %d.%d\r\n", 
			lu90614Temp.temperInteger, lu90614Temp.temperDecimal);

			// 在外部重写该函数,来定义获取温度后的行动
			lu90614_operation();

		}
		
		// 等待置位后在发数据
		iu90614_send_cmd(TEMP_MEASURE_PACK);
		
		usart_rx_sta = 0;//启动下次接收
	}
	else
	{
		iCnt++;
		if(iCnt >= 5000)
		{
			// 大于等于5000时,重新发送开始测温。
			iu90614_send_cmd(TEMP_MEASURE_PACK);
			iCnt = 0;
		}
	}
}

// 中断回调函数
void lu90614_rx_it_func(void)
{
	if((usart_rx_sta & 0x8000) == 0)//接收未完成
	{
		if(a_rx_buf == 0XFE)//接收到命令头
		{
			usart_sta=1;
			rx_cnt=0;
		}
		if(usart_sta)
		{
			rx_buf[rx_cnt] = a_rx_buf;
			rx_cnt++;
			if(rx_cnt >= 8)//接收8位数据接收完毕
			{
				usart_sta=0;
				usart_rx_sta |= 0x8000;//接收已完成
			}
		}
	}
	HAL_UART_Receive_IT(&luuart, &a_rx_buf, 1);
}



lu90614.h

#ifndef _LU90614_H_
#define _LU90614_H_


#ifdef __cplusplus
extern "C" {
#endif

/*********************
 *      INCLUDES
 *********************/

#include <stdint.h>
#include "usart.h"


/*********************
 *      DEFINES
 *********************/

/* 串口句柄 */
#define luuart huart2

/* 发送命令的长度 */
#define LU90614_CMD_LEN 3



/**********************
 *      TYPEDEFS
 **********************/

typedef enum
{
	BODY_TEMPER_PACK = 1 ,	// 体温模式发送指令枚举
	SUBS_TEMPER_PACK	 ,	// 物温模式发送指令枚举
	TEMP_MEASURE_PACK	 ,	// 开始测温并上传温度指令枚举
	IL90614_CMD_MAX
}IL90614_CMD;

// 测得的温度
typedef struct
{
	uint8_t temperInteger;	// 整数
	uint8_t temperDecimal;	// 小数
}Temp_Body_SUBS;


/**********************
 * GLOBAL PROTOTYPES
 **********************/

// 外部使用的读取到的温度
extern Temp_Body_SUBS lu90614Temp;

// 发送包
void iu90614_send_cmd(IL90614_CMD cmd);


void iu90614_init(void);
void lu90614_scan(void);
void lu90614_rx_it_func(void);

// 重写该虚函数,来定义获取温度后的行动
void lu90614_operation(void);

/*	// 使用方法

初始化:
	iu90614_init();

主循环:
	lu90614_scan();

串口接收中断:
	lu90614_rx_it_func();

 重写虚函数:
void lu90614_operation(void)
{
	// 添加任意代码
}

*/



#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif /*_LU90614_H_*/


使用方法

初始化:
iu90614_init();

主循环:
lu90614_scan();

串口接收中断:
lu90614_rx_it_func();

重写虚函数:
void lu90614_operation(void)
{
// 添加任意代码
}

【STM32篇】驱动MXL90614红外测温模块 基于STM32的MLX906红外测温模块驱动编写 阅读详情

相关推荐

MLX90614红外温度计介绍

MLX90614是一款红外非接触温度计。TO-39金属封装里同时集成了红外感应热电堆探测器芯片和信号处理专用集成芯片。

weichen_78的博客 1万+

红外测温模块 :LU90614

下面, 通过发送测量物体温度命令之后, 可以看到, 此时测量温度数据就比较正常了。下面看一下, 读取温度的数值, 总觉的有点奇怪。比如刚才黑色的热缩管, 输出的温度很高。一分钟之后, 获得测试电路板,  制作的非常完美。测温模块通过串口输出测量数据,  设计一个单片机,  通过串口读取测温数据,  使用 OLED 显示温度,  并通过 USB和上位机进行通讯。下面, 按照模块的通讯协议读取温度值。利用数据的校验位, 将错误的数据丢掉之后, 可以看到数据就比较稳定了。通过串口可以读取测量的数值。

TSINGHUAJOKING 6849

BH67F2752_红外测温方案额温枪额温枪原理图与功能程序.zip

由于疫情影响,导致额温枪需求量剧增,本资源为BH67F2752_红外测温设计方案,用于额温枪、额温枪开发,文件包含原理图与功能程序,开发人员可用于参考

LU90614红外测温传感器与STM32F407的串口通信

UART1我们一般用于与PC进行串口通信,所以我们使用UART2或UART3与LU90614红外测温传感器进行通信,在PC端可以通过串口助手看到LU90614红外测温传感器获取的数据。2.LU90614红外测温传感器的通信协议。1.STM32F407的串口原理图。

qq_52670519的博客 1900

MLX90614的原理和应用(包含程序)

资料不错,因为文档末尾给出了程序。还对SmBus进行了讲解。

基于STM32、MLX90614红外模块和ESP8266的体温采集系统

STM32控制红外模块进行体温采集,同时通过ESP8266发送温度信息到手机APP,手机扫描二维码获取用户信息,实现对应用户温度采集和快速登记过程

利用LU90614 测量半导体制冷片的温度

施加电压从 0V 增加到 6V,   测量得到的温度近似线性下降。室温大约为 28°。开始的时候为 室温 28摄氏度,  在工作电压为 6V时,  对应的表面温度达到了 71摄氏度。下面使用半导体制冷片产生不同的温度, 利用它测量 LU90614 测温的性能。制作的单片机模块 可以显示测量得到的温度,  也可以将测量的数值传送到计算机。下面将利用这个半导体制冷片以及测温模块, 测量一些电子元器件的温度特性。把红外测温模块探头对准半导体制冷片表面,  下面测量不同电压下, 对应测量温度的数值。

TSINGHUAJOKING 1381

红外额温枪的原理和红外线温度传感器的解析

额温枪主要针对测量人体额温基准而设计,使用也非常简单方便。测体温可以达到一秒即可准确测量。并且不需要接触人体,隔着空气即可一键测温。非常适合家庭、学校、企业等场所。      但是由于其精度原因(一般为 &plusmn;0.2 ℃,也有更低的,购买一定要注意查看说明),用做流感、疫情快速安全的排查的确非常方便,这也是我们能小区门口、高速路口、车站等公共场所常见到它们的原因。      而额温枪的组成其实很简单,是由pcba、显示屏、外壳、电池组成,但若是要往复杂里提的话就不得不提红外线温度传感器了,这种热电堆的传感器是做额温枪和耳温枪必须具备的器材,若是没有就无法得到一个完整的产品。下面我们来一起来了解下红

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

何使用合宙ESP32 C3,连接LU90614人体红外测温模块,连接128x64点阵屏模块SPI接口液晶屏,进行温度显示实验

zhusongziye的博客 1642

体温枪代码_红外测温枪学习方案_预警_MLX90614_体温枪_测温枪_

功能描述:注:按键分为上、下、左、右按键实现了测温功能、采集电压功能和预警处理提示功能1、按左键,直接退出主界面2、按右键,进入选择测温、测压界面3、按住上键,进行测温,当出现发烧情况会蜂鸣器+红灯闪烁报警,不同的发烧程度,报警的频率不同 发烧越严重,频率很快 (在主界面不可直接进入)4、按下键,进行测压,当低压时,蜂鸣器+绿灯闪烁报警提示(在主界面不可直接进入)

基于ESP32-S3与模块化设计的立创桌面充电站:从硬件架构到Web控制实战

本文详细介绍了基于ESP32-S3与模块化设计的立创桌面充电站项目,涵盖从硬件架构到Web控制的全流程实战。项目采用模块化设计,支持自由组合快充模块,并通过ESP32-S3实现智能监控,用户可通过本地网页实时查看各接口电压、电流与功率数据。文章重点解析了基板、连接板与充电模块三大核心部件的设计,特别是大电流PCB的“开窗贴铜”处理技巧,并提供了固件刷写与Web控制面板的配置指南。

weixin_36122351的博客 292

嵌入式外设 -- 红外测温(LU90614)

LU90614是一款红外测温模块,它采用红外热辐射测温原理,可以测量物体的温度并输出相应的温度值。该模块具有高精度、高稳定性、低功耗、易于集成等优点,适用于各种需要测量温度的场合。LU90614模块的主要特点包括:1. 高精度:测量范围为-50℃至80℃,精度可达±1℃。2. 高稳定性:长期使用不易受环境温度变化和器件老化等因素的影响,具有较好的稳定性。3. 低功耗:采用低功耗设计,适合在电池供电的设备中使用。4. 易于集成:模块体积小巧,接口简单,易于集成到各种设备中。

herui的博客 2216

FISCO BCOS平台的用户权限控制与分类管理

在区块链技术日益广泛应用的今天,如何管理与控制不同用户的权限,确保系统的安全性与高效性,成为了区块链平台不可忽视的一部分。FISCO BCOS作为一款高效的联盟链平台,通过细粒度的权限控制机制,提供了对不同用户权限的有效管理。本文将深入探讨FISCO BCOS如何实现用户的权限控制,并对不同用户进行分类与权限管理。FISCO BCOS平台通过精密的权限控制机制,不仅提供了对用户表和系统表的细粒度权限管理,还通过工具与接口为开发者和管理员提供了便捷的权限配置与查询功能。

2201_75798391的博客 1060

基于MXL90614设计温度传感器

摘要:提供了一种基于数字式红外传感器MLX90615的多点红外测温方法。STM32微处理器通过SMBus总线协议与MLX90615进行通信,首先分别对每个MLX90615地址进行修改,确保其地址编号在总线上的唯一性,然后根据不同地址编号获取不同点上MLX90615所测温度值,结果送至上位机温度监测软件显示。 目前在多点温度测量系统中应用较为广泛的是DALLAS公司的数字温度传感器DS18

victor790613的博客 1万+

Claude Code 的 Subagent 到底怎么用?

Subagent是ClaudeCode中的专业化AI代理系统,每个代理专注单一领域(如代码审查、数据库设计),具备独立记忆空间和并行处理能力。适用于中大型项目开发,通过配置文件定义代理职责与权限,可显式调用或自动触发多代理协作。典型场景包括代码安全审查、全栈并行开发和技术方案对比。使用时需注意避免过度拆分、权限过宽等陷阱,结合链式工作流和负载均衡可显著提升效率。实测在电商项目开发中能缩短20%工期并提升40%性能。

bgeyq的博客 1992

配置 SAP ABAP Secure Storage

系统在进行数据加密时,会将数据与当前 Key ID 进行关联,也就是说,如果此时使用的是 Key ID 4713,则该条数据会在 Encrypt.Data 字段存储一个由密钥 4713 加密后的密文。Key ID 代表了不同的密钥标识,Current Key 表示系统当前正在使用的主密钥,Value 则是对应密钥的存储值,Management Data 通常包括一些管理性或辅助性的信息,用于描述密钥的状态、过期时间或者其他属性。对于每一条被加密的业务数据,系统会记录它使用了哪一条 Key ID。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 564

【嵌入式外设】 红外测温(MLX90614/LU90614)

MLX90614采用I²C通信,适合多个设备的连接,通信过程由时钟控制,适用于需要多设备总线连接的系统。LU90614采用UART串口通信,适合单点连接,配置较为简单,传输速度较快。两者的主要区别在于通信方式:MLX90614使用的是更适合多个设备的I²C协议,而LU90614使用的是常见的串口通信。MLX90614是一款红外温度传感器,主要用于非接触式测量物体的表面温度。它采用I²C通信接口,可以与主控芯片(如STM32、Arduino等)进行数据交换。

herui的博客 2374

Cesium 实现动态加载气象数据:渲染成动态雨雪/云层效果(源码 + 原理)

本文介绍了在Cesium中实现动态天气效果的技术方案。核心思路是通过时间轴驱动多层数据动态切换,包括:1)时间维度处理,按序列加载不同气象图层;2)空间维度处理,将气象数据切分为瓦片;3)效果层实现,制作风场、降水等动态可视化效果。文章详细讲解了后端数据预处理(生成瓦片和风场JSON)、前端实现(双层雷达瓦片交替渐变、风场粒子系统)的具体方法,并提供了完整的代码示例。此外还探讨了雨雪粒子、云层效果等增强功能,以及工程化建议,为构建科学准确的动态天气可视化系统提供了实用解决方案。

专注AI大模型,软件混淆,授权 621

pinpong库示例——扩展库

原文:https://pinpong.readthedocs.io/zh_CN/latest/2.pinpong%E7%A4%BA%E4%BE%8B/index3.html 扩展库示例 扩展库示例中的模块通过libs库导入, 可通过终端输入pinpong查询支持列表和使用方法 从安装目录下的examples文件夹中可以找到所有示例程序代码 2-05-lcd1602:1602显示屏 2-06-oled12864:oled显示屏 3-01-tcs34725:颜色识别 3-02-urm

acktomas的博客 1238

指纹对抗指南:如何绕过Cloudflare与Akamai的5s盾与浏览器指纹检测

现在的CDN反爬技术虽然越来越强,但是道高一尺魔高一丈,只要掌握了指纹伪造、流量伪装、行为模拟这些核心技术,就可以绕过绝大多数的防护措施。对抗过程中要注意效率和成本的平衡,小规模爬取用Playwright+stealth最方便,大规模爬取用curl_cffi+代理池性价比最高,遇到验证码用打码平台或者自动识别服务,不需要死磕破解。本文介绍的方案已经在实战中验证过,可以绕过95%以上的Cloudflare/Akamai防护,成功率非常高。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 295

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1728

采用51单片机开发板和MLX90614的红外测温工具

主要使用了51单片机开发板、1602LCD显示屏和MLX90614红外测温探头 #include"reg52.h" #include"intrins.h" //************************************ #define uint unsigned int #define uchar unsigned char #define Nack_counter 10 //**************端口定义************** //LCD 控制线接口 uchar

weixin_44708229的博客 6786

vue-vben-admin 打包编译报错Failed to resolve entry for package “@vben-core/design“ 的解决方法

如果你在你是不是在 apps/子目录下执行了 build?# 项目根目录 pnpm build而不是在下面单独打包。这个问题本身不复杂,但非常容易被误导去“怀疑依赖、怀疑配置、怀疑人生”。实际上,只要理解vue-vben-admin 是 monorepo 架构,很多类似问题都会迎刃而解。如果你后面还遇到 vben-admin 的构建、部署、权限或性能相关问题,这一套思路都很有用。希望这篇记录,能帮你节省至少半小时的排坑时间。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 423

STM32F103:三.(2)红外测温(MLX90614) (带上位机显示温度曲线)

上位机显示效果: 上位机代码: (只有一个窗口) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Thr

qq_45880007的博客 1593

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MLX90614红外测温模块使用

MLX90614 是一款红外非接触温度计。TO-39 金属封装里同 时集成了红外感应热电堆探测器芯片和信号处理专用集成芯 片。 由于集成了低噪声放大器、17 位模数转换器和强大的数字信 号处理单元,使得高精度和高分辨度的温度计得以实现。 温度计具备出厂校准化,有数字 PWM 和 SMBus(系统管理 总线)输出模式。 作为标准,配置为 10 位的 PWM 输出格式用于连续传送温 度范围为-20…120 ˚C 的物体温度,其分辨率为 0.14 ˚C。 POR 默认模式是 SMBus 输出格式。

xiaolizaixian的博客 5965

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

物联网AI MicroPython传感器学习 之 MLX90614红外测温传感器

MLX90614是一款由迈来芯公司提供的低成本红外温度计,用于非接触式温度测量,红外测温是根据被测物体的红外辐射能量来确定物体的温度,不与被测物体接触,具有不影响被测物体温度分布场,温度分辨率高、响应速度快、测温范围广、不受测温上限的限制、稳定性好等特点,输出数据和物体温度呈线性比例,具有高精度和高分辨率。适合于汽车空调、室内暖气、家用电器、手持设备以及医疗设备应用等

weixin_39363464的博客 4710

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 嵌入式学习资源跳转链接
下一篇: RISC-V入门(基础概念+汇编部分) 基于 汪辰老师的视频笔记
嵌入一下?
博客等级 码龄6年 324粉丝 66原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

嵌入一下?

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值