52 •电子技术与软件工程  Electronic Technology & Software Engineering
软件开发
• Software Development
【关键词】Arduino App Inventor2 温湿度 蓝牙通信 交互设计
智能家居作为物联技术在居住环境中的综合体现,现今已被越来越多的中国消费者所接受。环境监测作为其中的一项重要组成部分,通常会通过各种传感器对空气温度、湿度、燃气浓度、火焰探测等项目进行监测。其中空气温湿度的智能检测常作为附加功能应用于空调、加湿器、除湿器等家电,需要启动体量较大的家电才能实现检测,成本较高;而传统的简易物理温湿度测量仪不具备手机实时显示的功能,便捷性较低。本文设计提出的基于Arduino 和APP Inventor2的空气温湿度检测系统,具有通过手机APP 远程控制并实时显示空气温湿度讯息的功能,具备系统结构简易、硬件连接简单、软件制作便捷、APP 软件界面用户体验顺畅、成本较低的优点,十分适合作为项目教学案例应用于交互设计专业和创客教育中的编程教育中。
1 系统结构
本系统由检测对象、温湿度传感器、Arduino 开发板、无线通信模块、手机APP 等部分构成。检测对象为
空气温湿度信息;传感器把在空气中获取的温湿度信息转变为电信号输出至Arduino 开发板;开发板首先将接收到的空气温湿度信息进行数据处理,通过比特与数值的换算公式,输出可直接读取的温湿度数字和符号信息,例如“32℃  78%”;然后开发板通过无线通信模块与控制手机相连接,手机APP 接收并显示开发板输出的温湿度信息。
2 Arduino的硬件连接与编程
本文设计中使用的电路硬件有Arduino UNO 板、DHT11温湿度传感器以及HC-06无线蓝牙通信模块。Arduino 是一个集合开发板硬件、Arduino IDE 程序开发环境、Arduino 编程语言,三个部分的开源工作平台,拥有适合编程零基础的学生学习的编程语言和强大的控制器,因其跨平台、开源性、易学性、灵活性、
基于Arduino 和App Inventor2的空气温湿度检测系统设计
文/杨静
可扩展、硬件成本低等特点,活跃于国内外的交互设计教育中。Arduino UNO 是Arduino 硬件家族中最为适宜初学者使用的开发板,主要由处理器、电源接口、扩展插槽,三大部分组成。DHT11温湿度传感器是一款可输出数字信号的温湿度复合传感器,稳定性较强,它的湿度精度为+-5%RH ,量程为20%-90%,温度精度为+-2℃ ,量程为0℃-50℃ 。由于本文设计中使用的APP Inventor2平台支持的无线通信连接方式仅支持蓝牙,所以选择HC-06作为通信硬件。HC-06蓝牙模块是一个从机模式无线蓝牙数据传输器件,具有低耗能、低成本、传输速率高等优点,通电后可自动进入AT 模式,快速闪烁红小灯,有蓝牙设备接入时红灯一直亮,本设计中用于接收和传递来自Arduino 和手机APP 的指令。
DHT11温湿度传感器与Arduino UNO 的接线方式为:VCC 接Arduino 的5V ;GND 接Arduino 的GND ;NC 为不连接空脚;DATA 接Arduino 的数字I/O 脚位2。
HC-06蓝牙模块与Arduino UNO 的接线方式为:VCC 接Arduino 的5V ;GND 接Arduino 的GND ;TXD 发送端接Arduino 的数字I/O 脚位0(RX );RXD 接收端接Arduino 的数字I/O 脚位1(TX )。
本设计中有关于Arduino 的编程使用Arduino IDE 进行开发,用于程序验证、上传、调试和下载的操作,可在电脑端的串口监视器中读取实时采集到的空气温湿度数值。程序主要由定义变量及接口名称、设置通信波特率、定义串口指令、获取数据、校对数据、处理数据、空气温湿度数据显示等部分构成,在串口监视器中输入“A ”时开始检测温湿度,输入“B ”时停止检测,每隔1秒向串口监视器发送一次温湿度数据,程序代码如下所示:
#include <Wire.h >#define pin 2int temp;//温度int humi;//湿度int tol;//校对码int j;
unsigned int loopCnt;
int chr[40] = {0};//创建数字数组存储数据unsigned long time;char flag_on =0;
void setup(){Serial.begin(9600);//设置波特率为9600}
void loop(){
while(Serial.available()>0){  char ad();
if(c=='A'){flag_on =1;//设置开
}
else if (c == 'B'){flag_on =0;//设置关}  }
if(flag_on)//设置温湿度检测{    bgn:
delay(2000);
pinMode(pin,OUTPUT); //设置2号接口为输出模式
digitalWrite(pin,LOW); //输出低电平    delay(20);
digitalWrite(pin,HIGH);//输出高电平    delayMicroseconds(40);    digitalWrite(pin,LOW);
pinMode(pin,INPUT); //设置2号接口为输入模式
//高电平响应信号    loopCnt=10000;
while(digitalRead(pin) != HIGH){      if(loopCnt-- == 0){
●项目编号2015JB03;浙江安防职业技术学院院级精品资源共享课程《智能安防产品设计开发》。
图1:组件列表与实际手机APP 初始化界面
Software Development  •
软件开发
Electronic Technology & Software Engineering  电子技术与软件工程• 53
//若不返回高电平,输出提示从新开始        Serial.println("HIGH");        goto bgn;      }    }
//低电平响应信号    loopCnt=30000;
while(digitalRead(pin) != LOW){      if(loopCnt-- == 0){
//若不返回低电平,输出提示从新开始
Serial.println("LOW");        goto bgn;      }    }
for(int i=0;i<40;i++){
while(digitalRead(pin) == LOW){}      time = micros();
while(digitalRead(pin) == HIGH){}      if (micros() - time >50){chr[i]=1;}      else{chr[i]=0;}    }
//将湿度的8位bit 转换为数值
humi=chr[0]*128+chr[1]*64+chr[2]*32+c hr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7];
/
/将温度的8位的bit 转换为数值
temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[21]*4+chr[22]*2+c hr[23];
//将校对码的8位的bit 转换为数值
tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+c hr[39];
//输出温度和湿度    Serial.print(temp);    Serial.print("°C  ");
Serial.print(humi);    Serial.print("%");    delay(1000);  }}
3 手机APP软件设计
本文设计中采用APP Inventor2作为制作手机APP 软件的平台。APP Inventor2是一个最初由谷歌公司发布,后移交给MIT 进行维护的图形可视化安卓手机应用制作平台,广泛应用于非计算机专业的手机应用制作中与乐高机器人创客活动中。该平台的软件设计工作区由组件设计和逻辑设计两大部分组成,用户可通过拖拽模块进行积木式的拼接实现设计与编程,还可使用平台附带的AI 伴侣或安卓模拟器进行实时调试,极大程度上的降低了学生的学习成本,提高了编程工作者的工作效率。据研究公司Gartner 于2018年2月分享的数据表明,2017年全球销售的智能手机中Android 占据了86%的份额,本文设计中仅设计安卓应用符合手机应用市场趋势。
手机App 客户端功能包括选择蓝牙设备、连接/断开蓝牙、开启\关闭空气温度和湿度检测、显示温湿度的数值4个功能模块。在组件设计部分中,需要使用组件面板中的按钮、列表选择框、标签、对话框、图像、水平布局、垂直布局、蓝牙客户端、计时器8种组件,组件列表与实际手机App 初始化界面如图1所示,“开关_关”组件属性为不显示,右侧初始化界面中的自适应手机界面效果可通过调整组件列表中水平与垂直布局的组件属性实现。
逻辑设计主要分为5个部分:软件初始化、蓝牙设备的选择、蓝牙设备的连接、设置按键、数值信息接收。(图2-图5)为增强用户体验,在整个用户操作过程中增加了多个状态与提示
的消息弹出框的设计,并设置界面中的按钮按照操作步骤的顺序启用,启用状态下文字呈现黑。按钮填充为深灰,禁用状态下文字与按钮呈浅灰,使界面视觉为界面操作顺序进行正确的引导。
(1)软件初始化。弹出一个消息框显示“欢迎使用!”,界面中仅“选择设备”列表选择框可被点击,其他按键皆不可用,温湿度数值无显示。
(2)蓝牙设备的选择。点击“选择设备”列表选择框,选择蓝牙设备,弹出“请确认手机已和对方配对!”的消息框,“连接”按钮启用。在实际手机应用中操作时,首先需要完成手机蓝牙与HC-06蓝牙之间的配对,待配对成功后,方可利用平台的蓝牙客户端组件进行蓝牙设备的选择。
(3)蓝牙设备的连接。当“连接”按钮被点击时,如果蓝牙为非连接状态,消息框提示“蓝牙连接成功”,“连接”按钮文本变为“断开连接”,启用两个开关按钮,关闭按钮不显示;如果蓝牙为连接状态,消息框提示“蓝牙已断开”,“连接”按钮文本变为“请连接”,禁用两个开关按钮和计时器。
(4)设置按键。点击“开关_开”,调用蓝牙客户端组件发送文本“A ”,启用计时器,“开关_开”隐藏,“开关_关”显示,Arduino 端开始检测空气温湿度;点击“开关_关”,调用蓝牙客户端组件发送文本“B ”,关闭计时器,“开关_关”隐藏,“开关_关”显示,Arduino 端中止检测温湿度。
(5)数值信息接收。启用计时器时,每100毫秒调用蓝牙客户端组件接收Arduino 端发送的温湿度数值,在“温湿度数值”标签处进行显示。
4 结语
运用Arduino 和APP Inventor2开发空气温湿度检测系统,将传统交互设计教学中的界面与硬件相联系,能够帮助学生更好的理解交互设计与如何增强用户体验,提升学生综合思考问题的能力。实际教学中可依据该项目引导学生进行温湿度条件提示、温度或湿度的单一应用、与其它电路器件组合等方向的编程与界面的设计探究。
参考文献
[1]王登宏,历佳男,贺雪辉等.基于
Arduino 的手机同步显示温湿度检测系统的设计与实现[J].工业控制计算机,2016,29(07):43-49.
[2]张展玮,唐细永,叶展鹏,申耀武.基于
Arduino 控制的移动平台设计[J].无线互联科技,2017(02):48-49+57.
[3]刘彦,王倩,王可.Arduino 单片机在产
品交互原型设计课程中的实验教学实践[J].艺术科技,2016(12):1-3.
作者简介arduino字符串转数组
杨静(1989-),女,山东省青岛市人。硕士研究生。浙江安防职业技术学院助教。研究方向为交互设计。
作者单位
浙江安防职业技术学院  浙江省温州市
325016
图2:软件初始化  图3:蓝牙设备的选择
图4:蓝牙设备的连接
图5:设置按键与数值信息接收

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。