大姚
Arduino是创客们DIY的必备法宝。借助Arduino 开发板,创客们通过简单的代码程序就可以实现一些常用电子设备的运行功能。本期我们介绍如何利用Arduino来制作家里的常用物品之一——温度指示器。一起动手试做一下吧!
材料准备
Arduino控制器,温湿度传感器 DHT11, 舵机 DSS M15,杜邦线若干。
温湿度传感器是温度指示器的感应元件。因为笔者地处南方地区,本次制作采用DHT11温湿度传感器,它包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。传感器可通过3P数字线直插Arduino控制器,Arduino控制器可以通过屏幕实时显示该传感器的读数变化,其温度感应范围为0~50℃。北方地区的读者可以采用探测范围更大的DHT22温湿度传感器,其温度感应范围为-40~80℃。
温度指示器选用 DSS M15舵机作为指示部件,它的舵盘的旋转角度可达180°。
制作过程
1. 首先,我们要为温度指示器制作一个外壳。可以选用一些小型的废弃包装盒作为外壳,然后用画笔在盒子上画出温度指示范围。根据舵盘的旋转角度范围,温度指示范围设计为一个半圆,均分成6等分,指示范围标注为-10~50℃。
2. 设计好外壳后,要把舵机装在外壳里面。安装前在半圆的圆心处开一个小孔,把舵机上的舵盘拆下,将舵机的传动轴从小孔中穿过去。由于舵机的传动轴较短,所以选取的外壳不宜太厚,以免影响舵机的正常运行。
3. 接下来我们要完成的就是整个温度指示器的核心部分。将温湿度传感器和舵机用杜邦线连接到Arduino控制器上,电路连接图如图3- 1、图3- 2所示。
4. 用硬纸板剪一枚指针,用双面胶固定到舵盘上。最后将Arduino控制器封到盒子里,将温湿度传感器DHT11用双面胶固定在外壳上方,给Arduino控制器接上电源(电压范围为5~12V的直流电源适配器)。至此就完成了硬件的所有制作,接下来是编写驱动程序。
程序编写
驱动程序使用Arduino IDE开发平台来编写。在编写温度指示器的代码之前,需要先导入两个头文件——舵机的库文件 Servo.h 和温湿度传感器的头文件 DHT.h。舵机的库文件 Servo.h是Arduino标准库头文件库,如图5所示,图中表示文件库中已经有包含舵机的库文件。
温湿度传感器的头文件DHT.h从下面的链接中下载:http://wiki.dfrobot.com.cn/index.php/(SKU:DFR0067)DHT11%E6%95%B0%E5%AD%97%E6%B8%A9%E6%B9%BF%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8_V2。
下载后将它解压缩到Arduino安装路径下的libraries中,如图6所示。
程序代码的运行原理是先通过温湿度传感器DHT11采集到模拟值,通过Arduino控制器的模拟口A2(管脚2)输入,将模拟值通过变换公式转换为舵盘的指示角度,从而控制指针旋转到相应的位置。这里会有一个映射关系,将温度值映射到相应的舵盘旋转角度值。
具体代码如下:
#include
#include
Servo myservo; // 定义一个伺服电机的对象
DHT dht; // 定义另一个温湿度的对象
void setup()
{
dht.setup(2); // 设置管脚2接受温度信号
myservo.attach(9); //设置管脚9输出伺服电机控制信号
}
void loop()
{
float temperature = dht.getTemperature(); //读取温度信号
myservo.write(180-(temperature+10)*3); //根据温度信号输出伺服电机的偏转角,最大偏转角为180°
delay(2000); //延时2s,方便伺服电机转到相应的角度
}