欢迎光临~ ayx网页版
服务热线
全国销售热线:

0755-84652995

ayx网页登录

13808839053

www.ayx.com

工作日9:00-17:00

行业新闻

如何利用STM32实现酒精测试仪的设计

发表时间:2024-04-20 08:11:59 来源:ayx网页登录

  该项目的诞生是因为观察到在大多数汽车共享服务中,人们即使喝醉了也可以开车,因为没有检查他们的状况。事实上,要驾驶汽车,您只需使用移动应用程序打开它并拿到里面的钥匙。未解决这个问题,我创建了一个基于云的物联网呼气测醉器,连接到一个包含汽车钥匙的盒子;如果测试返回负值,则该框将打开,否则将保持关闭状态。以下是更详细的分析:IoT设备架构、云层和 IoT 设备的RIOT-OS代码。

  使用的传感器是超声波传感器和MQ-3酒精传感器;使用的执行器是伺服电机、三个LED(迷你交通灯)、一个按钮和一个蜂鸣器。

  它用于允许酒精传感器计算正确的测量值。事实上,它位于 MQ 3 传感器附近,只有当传感器与人的距离小于 5 厘米时,MQ 3 模块才会在人呼气时开始测量人的血液酒精水平。通过发送触发信号和接收回波信号来估计距离;计算出的时间(以我们为单位)除以 58 是超声波传感器前方物体的距离(以厘米为单位)。可测量2-400厘米范围内的距离,测距精度可达3毫米。一旦通过移动应用程序打开汽车(通过为系统供电),超声波传感器就会进行定期感应(每 5 秒执行一次新的测量)。当装有钥匙的盒子被打开时,传感器停止采取措施。

  它测量空气中酒精的浓度。其检测范围从 0.04 到 4 mg/l 酒精。它是一种金属氧化物半导体,通过改变电阻来检测周围是否存在酒精蒸汽。事实上,当酒精浓度变高时,传感器的电导率也会上升。电导率的这种变化被转换为指示酒精含量的输出值。特别是,当返回的值减去 100 大于 450 时,酒精含量被认为太高,并且框键将保持关闭状态。该传感器具有模拟输出和数字输出,但对于本项目,使用的是模拟输出。MQ 3 传感器仅在超声波传感器计算的距离小于 5 cm 时进行测量,因此可以计算出正确的测量值。

  伺服电机用于打开或关闭装有汽车钥匙的盒子。如果酒精传感器返回的值小于或等于 450,则该框将打开,以便取走钥匙。如果测量值大于 450,框键将保持关闭状态。

  它具有三个 LED:红色、黄色和绿色。它们用于为超声波传感器测量的距离提供反馈。距离大于 15 厘米时红色 LED 亮;距离在5厘米至15厘米之间时黄色灯亮;当距离小于 5 厘米时,绿色会亮起。当绿色 LED 亮起时,表示该人距离传感器足够近,可以进行酒精测试,因此 MQ 3 传感器被激活并可以测量酒精水平。

  它用于关闭框键。按下时,伺服电机被激活,框键将关闭。为了将按钮连接到电路板,它使用了一个 10K 欧姆的电阻器。

  它用于在呼气测醉器返回的值超出限制时提供反馈。当 MQ 3 传感器测量的值大于 450 时,蜂鸣器开启 1 秒。为了将蜂鸣器连接到电路板上,它使用了一个 1 欧姆的电阻器。

  云级别完全使用 AWS 生态系统开发。在下图中,有一个架构说明了所使用的 AWS 服务如何在整个系统中连接。

  物联网设备层和云端通过基于发布/订阅机制的通信协议交换消息。董事会使用 MQTT-SN 协议将酒精传感器采取的措施发送到 Mosquitto 代理。这些消息在“alcool_level”主题下发布。此外,该板订阅了主题“topic_in”以接收从外部发送的消息,这些消息用于关闭或打开包含密钥的框。Mosquitto 使用 MQTT 通过透明桥与 AWS 生态系统交换消息,这是一个Python脚本,用作 Mosquitto 和 AWS IoT Core 之间的桥梁。实际上,它将“alcool_level”的消息从板发布到 IoT Core,并将 IoT Core 在主题“topic_in”下发布的输入消息作为输入消息,这些消息被定向到板。然后,通过设置适当的规则,从板传到 IoT Core 的消息直接存储到 DynamoDB。然后通过调用 REST API 将它们显示在 Web 仪表板上,这会触发从数据库中获取数据的 lambda 函数(“get_data_from_db.py”)。从 Web 仪表板,可以通过在主题“topic_in”下发布消息“关闭”或消息“打开”来关闭或打开框键。消息通过调用使用另一个 lambda 函数(“publish_to_iotcore.py”)执行此操作的 REST API 发布到 IoT Core。

  两个图表用于显示:过去 7 天内一天内打开盒子钥匙的次数(MQ-3 传感器测量的值小于或等于 450)和酒精测试返回阳性的次数过去 7 天内一天的价值;

  关于过去 7 天计算的测试的一些统计数据:测试结果为阳性的最大时间段(8-12、12-17、17-20、20-24 和 00-8 之间的值);装有钥匙的盒子被打开的次数;呼气测醉器检测到超过限值的次数;阳性测试占总测试的百分比。

  如果全局变量box_keys等于 0,则意味着包含键的框已关闭,因此我们可以继续进行测量。函数distance_ultrasonic返回从超声波传感器计算的距离(以厘米为单位)。

  如果距离小于 5 厘米:通过set_led(verde)函数打开迷你交通灯的绿色 LED ,用户可以继续进行酒精测试。函数check_alcool管理与测试相关的所有部分(更多细节在下面解释)。

  如果距离在 5 厘米到 15 厘米之间,黄色 LED 灯亮,表示计算测试的距离差不多,但用户必须更靠近

  如果距离大于 15 厘米,红色 LED 会亮起,表示距离太远,用户必须更靠近传感器才能进行酒精测试。

  如果全局变量box_keys不等于 0,则表示包含键的框已打开,因此我们进入“else”块。在其值等于 1 之前,每 0.5 秒读取一次连接到按钮的引脚。如果它返回一个大于零的值(当它被按下时它返回值 256),通过用伺服电机锁定它来关闭盒子,并且变量box_keys设置为 0 以允许进入前面的“if”块下一轮 while 循环。

  如果box_keys等于 0,则超声波传感器将每 5 秒感应一次,这是由于在 main while 中的“if-else”块之外设置的计时器。

  sensor_init函数:在 main 函数开始时使用,用于初始化传感器和执行器的所有 GPIO 引脚,以及伺服电机。

  用于引脚和伺服变量的所有变量都是全局的,因此它们是在函数之外定义的(您可以在项目的 GitHub 存储库中的代码中找到有关它们的更多信息)。对于 MQ 3 传感器,它被初始化为板接收值的模拟线路。用于初始化伺服电机的常量DEV、CHANNEL、SERVO_MIN、SERVO_MAX在函数外部定义。

  check_alcool功能:它检查用户呼吸中的酒精含量并据此采取行动。

  函数read_mq3返回 MQ 3 传感器计算的值,如果大于 450 表示超过法定限制,因此无法驾驶汽车。包含按键的盒子将保持关闭状态,并激活蜂鸣器 1 秒钟(蜂鸣器用于向用户提供酒精测试阳性结果的反馈)。如果传感器返回的值小于或等于 450,则打开盒子(通过伺服电机解锁盒子)并将全局变量box_keys设置为 1。在这两种情况下,由Breathalyzer 与主题“alcool_level”下的函数pub一起发布(这是常量TOPIC_OUT1的值)。

  如果传感器测量的值大于 100,则返回减去 100 的值,否则返回 0。

  它向传感器发送一个脉冲并等待 100 毫秒以读取全局变量echo_time 的值。如果该值大于 0,则将其除以 58 以计算传感器前方物体的距离(以厘米为单位)。

  当检测到回显引脚上的变化时,该功能被激活。它测量从发送超声波脉冲到接收回超声波脉冲的时间差。它将值存储在全局变量echo_time中, distance_ultrasonic函数使用该变量来计算传感器前方物体的距离(以厘米为单位)。echo_time_stop也是一个全局变量。

  set_led函数:用于根据传递给函数的参数设置迷你红绿灯的正确 LED。

  如果str为“verde”,则绿色 LED 亮起,其他 LED 熄灭。如果str为“giallo”,则黄色的打开,其他的关闭。如果str是“rosso”,则红色的打开,其他的关闭。

  当在订阅的主题(在本例中为主题“topic_in”)下接收到消息时,函数on_pub对其进行管理:

  如果收到的消息是“打开”,则通过伺服电机解锁包含钥匙的盒子,并将全局变量box_keys设置为 1。如果消息是“关闭”,则使用伺服电机锁定盒子,并且全局变量box_keys设置为 0。函数的第一部分用于通过在终端上打印收到的消息及其相关主题来获取反馈。

  printf(Published %i bytes to topic %s [%i]n, (int)strlen(msg), t.name, t.id);

  编排 strongerHuang 看到有小伙伴在讨论关于单片机内存的线给大家描述一下常见的划分区域。 在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量区、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段。 总的分布如下所示: 内存高地址 栈区 堆区 .bss段 .data段 常量区 内存低地址 代码区 一、栈区(stack) 临时创建的局部变量存放在栈区。 函数调用时,其入口参数存放在栈区。 函数返回时,其返回值存放在栈区。 const定义的局部变量存放在栈区。 2、堆区(heap) 堆区用于存放程序运行

  给大家描述一下单片机常见的划分区域 /

  引言 随着人们生活水平的提高,人们对照明控制的要求越来越高,如营造舒适的照明环境、节约电能、提高光源寿命等。为了提高工作环境的舒适性,照明控制系统采取光传感器,根据当前环境的照度自动控制照明设备,从而使照度控制在舒适的范围内。 在传统的照明控制系统中,往往采用普通光传感器结合A/D转换器(ADC)的方案。一方面由于光传感器检测到的光信号既包含可见光成分又有红外光成分,在设计中要考虑滤除红外光对光传感器检测结果的影响,并且由于采用了分离的器件,因此导致设计比较复杂;另一方面,对照度的检测范围比较局限,不利于实现多路照度检测从而对同一场所内多个照明设备实施分区域控制。在此提出了基于ISL29004的多路照度检测方案,以简化系统

  ISL29004在智能照明控制系统中的应用 /

  虽然离 特斯拉 Model3的发布已经不久了,但作为一个快速增长的新派车企,特斯拉还是在孜孜不倦地让自己的汽车更有未来范,使用得更加舒心。因此我们可以看到特斯拉无论是在技术上还是在宣传上,还是在钢铁侠本人上,都在各种刷存在感。也许是因为有相当放得开的心态,所以我们能够看到以下的这条新闻。     最近Reddit网友stevep98发布了他在旧金山湾区某个停车场看到的一台Model X。可能关注汽车和特斯拉的朋友都会熟悉Model X的构造,如果是这样子的话那店长就不需要拿出来说了。这台特别的Model X包含了三个全新的,测试中的 传感器 。     如上图,有少量的传感器放在了挡风玻璃后,与后视镜

  摘要:信息化战争对战场信息的获取提出了高时效性、高可靠性等亟待解决的要求。通过对无线传感器网络的结构和特点的深入分析认为,无线传感器技术可以在战场侦查与监控、目标定位、毁伤效果评估、核生化监测等军事应用领域发挥巨大的作用,实现战场的快速布控、战场信息的实时采集处理与传输,从而极大地提高指挥系统的战场感知能力,满足信息化战争对信息获取的需求。 关键词:无线传感器网络;军事应用;信息化战争 引言 无线传感器网络(wireless Sensor Networks,WSN)是由一组随机分布的,集传感器、数据处理单元和通信模块于一体的微型传感器,以自组织方式构成的无线网络。其目的是协作地感知、采集和处理网络覆盖区域中被监测对象的信

  网络技术的军事应用 /

  根据五角大楼的订单,洛克希德-马丁公司正在研制一系列各种各样的传感器,其中一些可以伪装成普通的石头。由于安装了太阳能电池板、微型计算机、地震传感器、摄像头和麦克风等设备,这些传感器可对潜在的暗中监视20年之久。     目前,美国海关和边境保护局在与墨西哥的边境上使用了7500多套类似传感器来监视非法移民。2011年,五角大楼定制了1500套测试型地震传感器在阿富汗使用。这些冰球大小的设备便于隐藏,能够传回所监控地区的人员流动和交通状况数据。     在美国弗吉尼亚州诺福克郡东北,洛克希德公司正在测试一种更为复杂的设备。这是由50枚手掌大小的声学和地震传感器连接成一个网络的数据模块。当传感器发现人或者交通工具时,

  一直想写个类似uCOS的OS,近段时间考研复习之余忙里偷闲,总算有点成果了。言归正传,我觉得OS最难的部分首先便是上下文切换的问题,他和MCU的架构有关,所以对于不同的MCU,这部分需要移植。一旦这样的一个问题解决了,整个OS算是成功了一半了,当然,是对于简单的OS。 好了,要写一个OS,首先需要一个开发板和仿真器。我的开发板是STM32F4DISCOVERY,自带ST-LINK V2仿真器,板载MCU为STM32F407VGT6,支持FPU,32位ARM Cortex-M4F核,1024KB FLASH,192 KB RAM,总之很强大。对STM32其他系列,本OS几乎不需修改修改就可使用。开发环境为IAR for ARM 6

  去年苹果 iPhone X 首次导入人脸识别,引领 3D 传感风潮,今年随着各大智能手机品牌的跟进,将带动 3D 传感应用相关产业市场商机扩大。根据 IEK 最新预估,2016 年 3D 传感全球产值约 11.16 亿美元,2020 年产值有望倍增至 26.62 亿美元,年复合成长率超过 20%。 正是因为看到 3D 传感市场的巨大商机,各大传感器厂商都在绞尽脑汁抢占该市场。近日,日商 TDK 宣布与高性能超声波传感器企业 Chirp Microsystems (以下简称“ Chirp ”)达成收购协议,Chirp 将成为 TDK 的全资子公司。据悉,交易预计将于数日内完成,TDK 可望借此跨入深具潜力的 3D 传感器市场。

  0目标1STM32串口简介 2硬件设计3软件设计 4下载验证 0.目标 利用串口1不停的打印信息到电脑上,同时接收从串口发过来的数据,把发送过来的数据直接送回给电脑。 1.STM32串口简介 串口设置的一般步骤可以总结为如下几个步骤: 1)串口时钟使能,GPIO时钟使能 2)串口复位 3) GPIO端口模式设置 4)串口参数初始化 5)开启中断并且初始化NVIC(若需要开启中断才需要这个步骤) 6)使能串口 7)编写中断处理函数 注:对于复用功能的IO,我们第一步要使能GPIO时钟,然后使能复用功能时钟,同时要把GPIO模式设置为复用功能对应的模式。 查看手册《STM32 中文参考手册 V10》P110 的表格“8.1.1

  单片机串口接收数据 /

  启动文件浅析

  PID控制C语言实现位置 增量型抗积分饱和积分分离 变积分

  【电路】将DHT11温度和湿度传感器与STM32F103C8连接的方法

  嵌入式工程师AI挑战营(初阶):基于RV1106,动手部署手写数字识别落地

  有奖直播 瑞萨新一代视觉 AI MPU 处理器 RZ/V2H:高算力、低功耗、实时控制

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  STM32与Actility ThingPark的合作实现高效的无线固件更新

  在物联网(IoT)领域,无线固件更新(FUOTA)技术的引入明显提高了设备管理的效率和灵活性。STM32与Actility ThingPark平台的结合,为开发 ...

  在“嵌入式学习006_Systick使用(一)”中,详细的介绍了Systick中寄存器的使用方法,用到了很多函数,实际上到了3 5版本的标准固件库中,移 ...

  用到GPIO口 PA0~PA11共12个引脚因为是共阳所以12,9,8,6为电源输入,其他引脚均为接地,所以对于芯片来说12,9,8,6高位输出,其他设定 ...

  这是我在做单片机最小系统板时候碰到的问题,之前虽然也做过相似的板子,可是未曾出现过无源晶振不起振的问题。下面是我在遇上问题后的一些 ...

  7 1电源管理概述处理器广泛地利用门时钟来禁能那些未用的功能和未用功能块的输入,因此只有正在有效使用中的逻辑才会消耗动态功率。ARMv7-M ...

  适用 STM32 通用 Bootloader ,让 OTA 更加 Easy

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程



联系电话

13808839053

用手机扫描二维码关闭