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、按下键,进行测压,当低压时,蜂鸣器+绿灯闪烁报警提示(在主界面不可直接进入)

从零开始学嵌入式之STM32——1.什么是STM32

它是ST公司推出的一系列单片机的统称。ST----指的是ST公司----意法半导体。意法半导体,成立于1987年,是由意大利的SGS微电子公司和法国的Thomson半导体公司合并而成。ARM目前主要是ARM架构处理器及外围组件的电路设计方案,知识产权授权的形式收取费用,其他公司根据ARM的方案设计出CPU产品。,它以应用为核心,软硬件可裁剪,旨在实现对设备的控制、监测或辅助功能,区别于通用计算机(如 PC、服务器)的 “一机多用” 属性。在嵌入式领域,目前主流的是cortex-M3内核推出的芯片。

qshdyy的博客 1854

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

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

herui的博客 2216

MagicDraw小白必看:BDD图中模块的5种属性详解(含SysML v1.6最新端口配置指南)

本文面向MagicDraw初学者,详细解析SysML BDD图中模块的五种核心结构属性,包括组成部分、引用、值、约束属性及端口。重点阐述了SysML v1.6中端口设计的范式转移,对比了完整端口与代理端口的区别与应用场景,并通过实战案例指导如何利用代理端口进行清晰的接口定义与系统架构设计。

rum55的博客 372

基于MXL90614设计温度传感器

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

victor790613的博客 1万+

深入瑞芯微SDK:手把手解析Uboot、Kernel到Rootfs的镜像生成与烧录

本文深入解析瑞芯微SDK中从Uboot、Kernel到Rootfs的镜像生成与烧录全流程,揭示编译背后的技术细节。通过详细分析SDK架构、镜像生成流水线、分区表定制、Rootfs构建及烧录科学,帮助开发者从会编译进阶到懂原理,掌握系统级开发的关键技术。

weixin_29193359的博客 269

ArduPilot代码解析之四 — 姿态和位置控制

ArduPilot采用级联控制架构实现飞行器的姿态和位置管理。该系统通过位置→速度→加速度→姿态→角速率→电机指令的逐级转换,将高级指令转化为底层执行信号。位置控制采用三维独立控制,水平轴与垂直轴分别处理;姿态控制通过角度误差→角速率→电机输出的两层级联实现。系统支持多种输入模式,并内置运动学整形功能确保轨迹平滑。不同飞行器类型(多旋翼、直升机、潜艇等)有专门的调参方案,通过调整PID参数、加速度限制等实现最优控制性能。该架构兼顾控制精度与飞行稳定性,适用于各类自主飞行场景。

rainercool的专栏 824

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

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

herui的博客 2374

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

ESP32设备驱动-TM1637-驱动4位7段数码管

TM1637是一款带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成了MCU数字接口、数据锁存、LED高压驱动、键盘扫描等功能。 TM1637使用DIP20/SOP20封装,主要适用于电磁炉、微波炉、小家电的显示驱动。

视觉与物联智能 2117

ollama使用CPU安装qwen-coder模型_并在eclipse中使用ai coder插件_配置本地qwen-coder模型_ollama常用操作记录---AI大模型应用探索0002

文章摘要:作者分享了在Windows 10上安装和使用Ollama模型的过程。尝试了不同规模的qwen-coder模型(7b、1.5b和0.5b),发现7b模型响应极慢(需35分钟),而1.5b模型表现较好(3秒响应)。最终选择1.5b版本用于代码开发辅助,支持多语言自动补全。同时提到在最新版Eclipse中的AIcoder配置问题。文章重点比较了不同模型规模在CPU环境下的实际使用体验和响应速度差异。

添柴程序猿的专栏 682

采用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

拉曼光谱入门:10.显微拉曼与共聚焦技术

本文系统阐述了显微拉曼光谱技术与共聚焦原理的融合机制,详细解析了从激光激发、针孔空间滤波到光谱采集的完整光路架构,阐明了共聚焦设计在提升三维空间分辨率、抑制荧光背景及实现微区无损层析方面的核心优势,并探讨了关键光学器件的性能边界与系统技术局限。

qq_53529450的博客 166

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MLX90614红外测温模块使用

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

xiaolizaixian的博客 5965

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

weixin_39363464的博客 4710

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

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

上一篇: 嵌入式学习资源跳转链接
下一篇: 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、付费专栏及课程。

余额充值