广告

利用Espruino Pico设计热报警器

2023-02-28 15:50:02 Giovanni Di Maria 阅读:
在本文中,我们利用Espruino Pico设计了一个简单的热传感器,它能够在超过特定温度时触发报警器并驱动更强大的负载。通过修改代码,还可以创建高效的“窗口热控制”。

在本文中,我们利用Espruino Pico设计了一个简单的热传感器,它能够在超过特定温度时触发报警器并驱动更强大的负载。通过修改代码,还可以创建高效的“窗口热控制”。0rIednc

简介

Espruino Pico(图1)是一块带有Arm Cortex STM32F401CDU6微控制器(MCU)、内置JavaScript解释器和PCB板载USB端口的小型电路板。可以使用非常易用的Chrome app Espruino Web IDE对其进行编程。它的一些技术特点如下:0rIednc

  • CPU:ARM Cortex STM32F401CDU6;
  • 22个GPIO引脚;
  • 9个模拟输入;
  • 21个PWM;
  • 2个串口;
  • 3个SPI;
  • 3个I2C;
  • 每个GPIO端口在3.3V下操作,但也能很好地承受5V;
  • 引脚间距:两组9个引脚为2.54mm,一组8个引脚为1.27mm;
  • 电路板上有两个LED二极管(一红一绿)和一个按钮;
  • 电路板上带有3V、250mA稳压器,用于3.5~16V的输入电压;
  • 板载FET可用于驱动大电流输出;
  • 电流消耗:在睡眠模式下仅为0.05mA,对于2,500mAh电池,其电池寿命超过2.5年;
  • 尺寸:15×33×3mm;
  • 重量:2g。

可以使用集成变量LED1和LED2从固件访问红色和绿色两个LED二极管。还可使用BTN变量通过软件管理按钮。通过连接设备并按下按钮,DFU引导加载程序将会启动,这样就可以更改所有Espruino Pico固件。其上还带有JST鼓垫,用于安装JST PHR-2表贴连接器。有关该设备的更多信息,请访问Espruino Pico的网站。0rIednc

0rIednc

图1:Espruino Pico及其引出线。0rIednc

EspruinoPico编程

2所示,Espruino Pico的主要编程方式有:0rIednc

  • 通过JavaScript;
  • 通过基于Scratch的图形化编程语言。

可通过点击编辑器上的特定按钮实现两种语言之间的切换。因为两个源程序是同步的,所以一种编程语言中的所有更改都会反映在另一种编程语言中。可以将固件加载到设备中(连接到USB),然后通过按下另一个按钮通过虚拟串行通道(例如COM8)进行跟踪。显然,计算机已识别了该物品。0rIednc

0rIednc

图2:Espruino Pico签名编程和上传。0rIednc

原型

购买新设备的第一步就是要熟悉它。除了传统的LED二极管闪烁(相当于编程语言全球性的“Hello world”)之外,Espruino Pico一项特别有用的操作是使用特定传感器来测量温度,该方法也适用于多种变量。该原型的操作特性非常基本、简单,但它可以在未来调整硬件和软件,从而产生更多有用、专业的系统。其特点可概括如下:0rIednc

  • 使用LM35传感器进行温度测量;
  • 通过超采样提高测量精度;
  • Espruino Web IDE控制台上直接显示温度;
  • 可以在某些热条件下打开两个LED二极管。

此外,信号灯的操作模式如下:0rIednc

  • 如果温度高于23℃,则红色LED二极管亮起。
  • 如果温度低于18℃,则绿色LED二极管亮起。
  • 如果温度在18℃和23℃之间,则所有LED保持关闭状态。

元器件的布线原理图或简单接线如3所示。可以在面包板上完成组装,也可以使用一些跳线来实现,这样非常适合连接到Espruino Pico的引脚。LM35模拟温度计需要采用4V至20V的连续滤波电压进行供电。必须要将电池、温度计和智能设备连接起来;还必须将LM35的模拟输出直接连接到Espruino Pico B1端口,而在系统中作为ADC模拟输入进行管理。本项目中将所开发的系统连接到PC的USB接口进行供电,并可以直接在浏览器中查看温度。0rIednc

0rIednc

图3:Espruino Pico上的温度计接线。0rIednc

固件

固件是采用Javascript所编写,非常简单。显然,我们必须熟悉这种美妙的编程语言的原理。经典语言系统的程序员(C、C++和Basic)会发现Javascript语言强加了几个区别。“function(函数)”功能是整个系统运行的核心,它包含在“setInterval”函数中,因此可以在整个时间内连续重复进行。事实上,开发环境中没有“loop(循环)”函数,这是Arduino系统的典型特征。对LM35温度计所产生的电压进行模拟测量在无限循环内执行。其输出与温度成正比并且是线性的(以℃为单位)。它不需要外部校准,测量范围为–55℃至150℃,模拟输出范围为–550mV至1,500mV,使用起来非常简单且价格实惠。其所消耗的电流大约为60µA。在ADC读数中,Espruino Pico会返回一个介于0和1之间的数字电压,作为0V和3.3V之间的等效输入电压。建议各位阅读一下这方面的文档。该代码的超采样功能可实现更精确、稳定的测量。可以使用以下示例了解系统如何解码25℃的温度:0rIednc

  • LM35温度计提供0.25V的电压(相当于25℃时为250mV)。
  • B1门的读数返回值为0.0833(对应于250mV)。
  • 将该值乘以3.3,以便将其规范化到0~3的范围:0.25。
  • 最后,将该值乘以100将其转换为摄氏度。

因此,通过三个控件对所获得的温度进行比较,就可预测三种不同的报警操作条件:0rIednc

  • 如果温度高于23℃,红色LED二极管打开,绿色LED关闭。
  • 如果温度低于18℃,绿色LED二极管打开,红色LED关闭。
  • 最后,如果温度介于18℃和23℃之间,则将两个LED全都关闭。

每一秒,整个循环都会无限重复。下面列出了Javascript源代码。0rIednc

var reading;0rIednc

var average;0rIednc

var i;0rIednc

setInterval(function() {0rIednc

average = 0;0rIednc

for (i = 0; i < 100; i++) {0rIednc

reading = analogRead(B1);0rIednc

reading = reading * 3.3;0rIednc

reading *= 100;0rIednc

average += reading;0rIednc

}0rIednc

average = average / 100;0rIednc

console.log(average);0rIednc

if(average > 23) {0rIednc

LED1.write(true);0rIednc

LED2.write(false);0rIednc

}0rIednc

if(average < 18) {0rIednc

LED1.write(false);0rIednc

LED2.write(true);0rIednc

}0rIednc

if(average >= 18 && average <=23) {0rIednc

LED1.write(false);0rIednc

LED2.write(false);0rIednc

}0rIednc

}, 1000);0rIednc

原型应用

原型使用起来真的很容易。现在要做的就是连接各种设备。4显示了所观察到的温度如何以1s的时间间隔显示在Web编辑器上。0rIednc

0rIednc

图4:使用Espruino Pico的温度计操作。0rIednc

总结

本文提出了全功能温度计的基本结构。该系统还可通过添加功率控制装置启动大负载,以及监控和数据存储系统进行图形计算和统计,实现极大的扩展。0rIednc

(原文刊登于EDN姊妹网站EEWeb,参考链接:Building a Thermal Alarm with Espruino Pico,由Franklin Zhao编译。)0rIednc

本文为《电子技术设计》2023年2月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里0rIednc

责编:Franklin
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了