Arduino开发

2024-10-12

Arduino开发(精选7篇)

Arduino开发 篇1

摘要:本系统立足集成和创新, 结合建设行业信息技术实际应用状况和国际上信息技术发展趋势, 确定城市数字化标准规范与相关工具、城市数字化体系结构与信息集成关键技术、城市数字化应用软件开发与商品化为重点研究课题, 基于Arduino开发环境设计智能家居系统的整体方案, 实现防火、防盗、烟雾报警、软件报警、实时监控、温湿度显示等功能。通过火焰、烟雾、人体等传感器获得所需数据, 结合自编软件对数据进行处理分析, 并搭建模拟智能家居系统, 试验运行稳定。

关键词:物联网,智能家居,防火,防盗,报警

引言

智能家居是家居平台物联网化的结果, 在计算机技术、自动化技术和通信技术发展趋势下, 通过物联网技术将家居中的各种设备相互联接, 并能统一协调管理。家居智能化的概念已被很多人所接受, 相关的智能化设备也进入到普通百姓家, 给人们生活增添了不少便捷, 尤其是在防火、防盗方面发挥了很大作用, 能减少生命和财产的损失。

本系统利用Arduino平台强大的可拓展性和开源性来开发智能家居系统, 选用Arduino单片机芯片作为控制核心, 通过自建硬件平台模拟智能家居环境, 将硬件传感器获取的数据反馈给自编软件集中处理, 用户可通过客户端得知家中温度、湿度、人体警报、火焰警报、烟雾警报等情况并能实时监控。

一、系统设计

1.1系统组成

系统由Arduino控制模块、温湿度探测模块、防盗模块、防火模块、无线通信模块、客户端报警监控模块6个模块组成, 如图1所示。Arduino控制模块负责处理温湿度探测模块、防盗模块、防火模块收集到的数据, 并将结果反馈给客户端报警监控模块进行分析, 最终实现所需功能。

1.2模拟家居环境

采用市面流行的DIY小房子搭建小型家居环境模拟实际家居环境, 可将模拟家居环境分为卧室、客厅、大门三个部分。

二、硬件系统设计

2.1单片机控制模块

主控芯片选择Arduino Mega2560单片机控制板, 开源且有很强的拓展性。其处理器核心是ATmega2560, 具有54通道数字输入/输出口 (其中16通道可作为PWM输出) 和16通道10b ADC模拟量输入, 4路UART接口, 1个ICSP header, 时钟晶振为16MHz。是采用USB接口的核心电路板, 通过USB线可与电脑直接连接便于在线进行程序调试。

2.2数据采集模块

数据采集模块包括三个子模块, 分别是温湿度探测模块, 防盗模块, 防火模块。温湿度探测模块采用AM2302数字温湿度传感器, 防盗模块采用HC-SR505人体传感器, 防火模块再分为火焰探测模块和烟雾探测模块, 分别采用YL-38火焰传感器和YL-15烟雾传感器。

2.4无线通信模块

无线通信模块采用E12-TTL无线串口模块, 优势是低功耗, 控制方式灵活, 中心频率为433MHz, 具有TTL电平的串口通信接口, 支持波特率为1200-57600多达7种波特率。经过复杂的无线通信配置以及传输算法, 通过TTL串口连接到设备, 2个模块即可取代一条传统的串口线, 传输距离远达450m, 完全满足家用。

2.5客户端报警监控模块

客户端报警模块分为PC端和移动端。PC客户端使用Visual Basic编程语言编写, 这使得平板移动端可以兼容使用, 通过串口将Arduino处理过的传感器传回的数据进行分析并予以显示, 用户可以得知当前家中的温度和湿度情况以及人体、火焰、烟雾警报, 并且在警报响起后可以打开家中布置好的监控设备实时查看家中情况。而手机移动端使用JAVA语言编写, 可以在搭载Android系统的移动电话上使用, 同样可以通过无线网络或移动数据的方式实时获知家里的情况并且能够查看监控。

三、软件系统设计

3.1 Arduino IDE集成开发环境

Arduino具有类似于Java和C语言的IDE集成开发环境, 其编程语言类似于C语言, 用户可以通过USB接口直接进行编程和通信。

3.2算法简述

本设计中, 客户端会实时显示当前卧室温度和湿度数据。当家中没有起火和无人入侵时, 客户端的人体、火焰、烟雾警报不会亮起。

而当家中起火时, YL-38火焰传感器和YL-15烟雾传感器若同时传回警报, 则判定为家中某处起火, 此时客户端报警;而家中若有人入侵, 大门的人体警报会先亮起。当用户收到警报时, 可以选择打开监控来实时观察家中情况从而作出对策, 达到防火防盗等目的。

3.3传感器处理程序

传感器处理程序的功能是在Arduino上运行的, 将传感器采集到的数据进行集中处理后通过E12-TTL无线串口模块反馈给客户端分析显示。以如下部分代码为例:

四、试验结果

按照本方案设计的基于Arduino平台开发的智能家居系统能够完成温湿度探测、防火防盗及报警和实时监控等功能。但还存在着一些不足, 例如对终端的反馈只能做到提供警报, 不能智能控制, 如可用灭火器控制火势等。对于存在的问题, 可在终端增加设备, 如加入增湿器和空调来控制温湿度等。

五、结语

本文设计的基于Arduino集成开发环境的智能家居系统, 设计简单, 成本较低, 实时性好, 在模拟家居环境中取得了预期实验结果, 完成了智能家居防火防盗等基本功能, 可广泛应用于智能家居等领域, 市场前景广阔, 具有很大经济效益。作为开源性互动软硬件开发平台, 对于Arduino开发环境的广泛应用具有很好的参考价值。

参考文献

[1]蔡睿研, Arduino的原理及应用[J].电子设计工程, 2012, 8

Arduino开发 篇2

关键词:PM2.5,Arduino,智能手表,物联网,自动检测

1 整体架构设计

1.1 整体架构

该设计提出的PM2.5监测方案整体架构由Ardui-no、蓝牙模块、粉尘检测传感器模块、显示屏、电池、手机端APP等6部分组成,系统功能原理图如图1所示。整个设计中的粉尘检测传感器模块主要用于将PM2.5的浓度转换为电信号。主控制器将传感器输出的模拟电信号转换为数字信号,并通过特定的计算公式将数字信号转换为PM2.5的浓度在显示屏中进行显示。在整个检测过程中,该设计通过蓝牙模块将采集到的PM2.5的浓度发送到手机APP端,通过APP端实现PM2.5报警、分享、运动环境适宜度分析等功能。此外,电池模块为设备提供能源。

设计主要操作流程:用户预先输入粉尘浓度报警值到程序中,该值作为系统阈值。打开设备,粉尘检测传感器模块监测值传输给Arduino控制器,当控制器比较监测到大数值超出所设定阈值时,显示屏出现警告,同时将信号传输到手机中,手机APP该智能手表客户端)会在通知栏发出警告。

1.2 硬件设计及PM2.5监测功能的实现

该系统的硬件在设计之初各个模块的选择上主要考虑了以下几个方面:低功耗、计算性能、检测精度、性价比。基于以上几点的考虑,该系统的硬件设计选用了Arduino UNO R3开发板、夏普GP2Y1010AU0F粉尘传感器、HC-05主从机一体蓝牙模块、Nokia5110液晶屏等进行了开发测试。

1.2.1 微处理器Arduino简介

Arduino具有14个数字I/O口(其中6个可提供PWM输出),6个模拟I/O口,一个复位开关,一个IC-SP下载口,支持USB接口,可通过USB接口供电,也可以使用单独的电源供电。

Arduino的开发环境是以AVR-GCC和其他一些开源软件为基础,采用JAVA编写的,软件无需安装,下载完成解压缩后就可以直接打开使用了。当把程序上传到Arduino时,它会自动把代码转换成C语言,再传给AVR-GCC编译器,然后把代码最终编译成微处理器能接收的指令。这些都是Arduino UNO很重要的一部分,因为它隐藏了复杂的编译过程,让使用者以尽可能简单的方式去控制微处理器。

1.2.2 微处理器Arduino接线操作

屏幕和Arduino nano的I2C口连接时,SDA线接A4口,SCL线接A5口。Sharp GP2Y1010AU有6根接线通过购买的DF robot转接器,分出两根数据线,其中模拟输出线接Arduino A0口,数字输入线接D2口。

1.2.3 粉尘传感器简介

该设计测量空气中粉尘浓度采用夏普GP2Y1010AU0F粉尘传感器,夏普GP2Y1010AU0F粉尘传感器可以感知烟草产生的烟气和花粉,房屋粉尘等,是根据颗粒挡住红外光对pwm波形的影响来测量粉尘浓度的,采用与粒子计算器相同原理为基础,检测出单位体积粒子的绝对个数。

夏普GP2Y1010AU0F粉尘传感器具有尺寸小、重量轻、易安装等优势,能够灵敏检测直径0.8μm以上的粒子,内置加热器可实现自动吸入空气的功能,保养简单,便于长期保持传感器的特性。广泛应用于空气清新机、空气调节器、空气质量监测仪等。夏普传感器内部有一个红外发光二极管和一个光学传感器。每次从D口接收信号都会触发红外管发光,并有光学传感器捕获,其中的空气如果被灰尘遮挡则会引起PWM波形的高低变化,经过外部220μf电容平滑方波,形成可被测量模拟波形。

2 手机端APP设计

2.1 App设计思路

大气颗粒物作为对人体健康危害巨大的污染物,尤其是细颗粒物可以对人体心血管和呼吸等多个系统造成伤害。我国多数的地区PM2.5污染比较严重,人体过度暴露在空气颗粒物中导致的健康问题也比较多。因此,开展污染物暴露评价,从而确定人体在污染物中的实际暴露水平有着十分重要的意义。对于污染物来说,其浓度限值只是考虑了环境中的污染物强度,而人体的呼吸是空气污染物从外界进入人体内的主要途径,所以根据人体的吸入暴露做出暴露评价能够更好地反映空气污染对身体健康的危害[6]。

笔者介绍了吸入暴露的评价方法,并以市区为例,以PM2.5为标靶,对各年龄段人员的污染暴露水平进行了分析探讨。从而以此来设计相应监测计算以及评估PM2.5的综合app,来帮助人们管理生活,使生活更健康。

2.2 系统方案

系统方案采用Android操作系统,基于Eclipse,以Java语言和HTML语言开发。

2.3 功能与指标

依据个体的年龄和运动状态,结合监测手表监测到的PM2.5数值来计算PM2.5的总吸入量,帮助人们更好地了解自己目前吸入量以及更好的规划之后的生活,远离PM2.5带来的危害。在软件中设置PM2.5的警告阈值,一旦超过这个值,软件将会向用户之前设置好的好友发送短信提醒,帮助好友及时了解身边空气的状况。将软件采集到的数据上传到云端,带来更详尽的PM2.5数值,方便其他人了解,同时也为科学分析提供数据来源。

2.4 实现原理

暴露是指在一定时间内,接触一定浓度污染物的过程,是评价空气污染物迁移、分布对人体影响的重要参数,也为流行病学以及健康风险评价的研究提供了基础参数。对于颗粒物来说,主要通过人体呼吸进入到体内的。根据人体暴露采用的吸入暴露概念,可以计算一定时间内的人体吸收颗粒物的潜在剂量评价实际人体的暴露状况。因此,颗粒物的吸入暴露评价是采用相对暴露的时间、浓度和呼吸速率的乘积进行积分,即:

(1)式中,Dpot是颗粒物的吸入暴露量(mg);、分别为暴露时间段起始以及最终时间(h);c(t)是随着暴露时间而变化的颗粒物的质量浓度(mg);I是随着暴露时间而变化的人体呼吸速率(h);t是暴露时间(h)。进行不连续的暴露时间段的颗粒物的吸入暴露量计算:

(2)式中,ci为颗粒物的质量浓度(mg);I为人体呼吸速率(h);ti为第i个的暴露时间(h)。

2.5 软件流程

用户先开启蓝牙,将设备与手机配对,然后设置用户群体,这样就完成了基本的设置。之后设置提醒的阈值,当检测到PM2.5的数值超过这个的时候,就会发出自动警告。还可以设置运动种类,点击开始统计后,软件将自动计算出该段时间内吸入的PM2.5的量。

3 实物制作

经过试验,完成了手表的初步制作。该设备已可以实现基本功能。该表成本在80元左右,具有廉价与便携的特点,可以在户外多点测试中具有优势(图2)。

4 结论

该设计利用时下比较流行的开放物联网硬件平台Arduino与安卓操作系统完成了PM2.5检测方案的制作与测试。经测试,该检测系统工作正常,测试结果在一定范围内具有很高的参考价值,为用户的健康出行提供了保障。总体而言,该检测方案实现了以下功能:(1)能够准确检测空气中的PM2.5的含量;(2)根据实时监测结果能够对当前空气质量做出准确评估;(3)手机端APP能够与Smart Block实现互联,对PM2.5信息进行在线分享;(4)成本更低,更易于制作,易操作。

与其它同类PM2.5检测方案相比,设计具有以下特色:(1)手表式外观设计,美观时尚,轻便易携带;(2)性价比较高,适宜普遍推广;(3)具有相匹配的APP,更加切合物联网的发展趋势。

该设计也存在很多不足之处:设计应用于单点测量,在范围估测上有很大的局限性与不准确性,同时该设计出于成本考虑采用UNO R3版本,使装置在体积上变大,改进时可以采用Lilypad使装置减小体积大小,从而达到更便携的效果。

参考文献

[1]戴海夏.大气PM2.5的健康影响[J].国外医学(卫生学分册),2001(3).

[2]傅敏宁.PM2.5监测及评价研究进展[J].气象与减灾研究,2011.

[3]黄金力.论PM2.5监测的重要性[J].城市建设理论研究(电子版),2013.

[4]王磊.PM2.5监测技术要点及意义探讨[J].城市建设理论研究(电子版),2014.

[5]陈向国,郝吉明.实现PM2.5治理目标第一阶段很关键[J].节能与环保,2012.

基于Arduino的绘图机器人 篇3

关键词:Arduino控制器,信息点单元,processing软件,坐标转换

随着计算机及其智能硬件的飞速发展,人们在生活和生产过程中越来越多使用机器人来代替人类的工作,各种各样的机器人也应运而生。绘图技术在人们的生活和工作过程中起着越来越重要的作用。例如工业设计、服装设计、工程设计、游戏素材创作、影视素材创作、教育教学等都需要使用到草图的绘制。矢量绘图技术作为一种新颖的绘图技术被广泛的接受和使用。

但在实际使用过程中,大型打印设备或者绘图仪器价格昂贵,需要专业的技术维护,同时还需要购买相应的配套耗材,普通设计人员和专业工作者无法自行购买。因此研究低成本、结构简单、尺寸大小可调节、并具有良好性能的绘图仪是有十分重要的现实意义和市场价值。

1 绘图机器人硬件实现方案

基于Arduino的绘图机器人,硬件上以L293D驱动板、步进电机和Arduino UNO R3为核心,通过与上位机processing软件进行通讯,processing软件将图片转化的包含有坐标值、尺寸大小、灰度值的信息点单元,然后把这些信息转化为步进电机移动的指令传递给Arduino控制器。整个硬件方案实现包括步进电机位置的计算与指令分配、步进电机控制原理、图片分析处理、位移控制、UART通信、EEPROM读写设计。系统方框图如图1所示。

该绘图机器人具备以下功能和特点:

1)能与processing控制软件实时通信,当输入一张任意图片,能将图片转化为大小、坐标、灰度值的预览密度。

2)能实现绘制变频方形波纹、变幅方形波纹以及随机波纹这三种风格的图画。

3)实现举起笔以及放下笔功能,能进行矢量作图。

1.1 Arduino控制器

Arduino UNO是Arduino USB接口系列的最新版本。UNO的处理器核心是ATmega328,USB接口芯片为ATmega16U2。同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮[1]。Arduino Uno R3功能强大,易于使用,开放电路设计的原始码、免费下载使用开发界面;拥有Flash Memory 32 KB储存空间符合设计的需求;能与电机控制板相互兼容,使得电路更加简单可靠;同时价格相对比较低廉。

1.2 L293D步进电机驱动

L293D步进电机驱动可正反向控制两个步进电机、单/双步控制、交错或细分和旋转角度控制方式;驱动板给每路提供0.6A(峰值1.2A)电流,而且有过热断电保护,适用电压范围4.5V到36V,自带复位按键[2];同时增加两芯外接电源端口,隔离逻辑电平与驱动电压,使系统更加可靠;L293D能很好地兼容uno r3开发板,有丰富的库文件可直接调用,大大减少了开发工作量。

1.3 步进电机

根据设计分析、硬件需求,选择的步距角为0.9度双相四线双极性的步进电机。步进电机静力矩的确定主要是通过工作时电机的负载,但负载又分成惯性负载和摩擦负载两种[3]。正常情况,静力矩应是摩擦负载的两倍到三倍左右,当确定静力矩时,电机外形和长度便能确定下来[4]。电机的自锁力矩与流过的电流相关,当电流数值不一样,启动时也有一定的差别。绘图机器人的驱动板使用的L293D,该驱动板给每路桥提供最小0.6A电流,通过矩频特性曲线图确定了双相四线双极性的步进电机。双相四线双极性步进电机步进角度小、精度高、力矩大。经过实际测试,该步进电机可控性好,能在短时间内实现运行、停止、方向变换等。在适当频率运行的时候,随机运动方式都不会丢步。

2 绘图机器人软件设计

系统控制软件程序功能具有USB与上位机实时通信[5],主要是对机器X,Y轴进行控制、步进电机的移动速度和加速度控制以及从Arduino控制器返回一些调试参数。在EEPROM上主要是对机器一些固定参数的进行保存或者提取利用,比如机器的大小、画纸的大小、转一圈的步数、同步轮的周长等等,使用了EEPROM可使得机器在使用方面上更加简便,像是一些不需要怎么变化的参数可上传到EEPROM,下次使用可以从EE-PROM下载调用。在绘图方式上有两种,一种是位图绘制,另一种是矢量图绘制。在绘制位图风格上的选择主要是利用程序以及坐标的变换等方式实现方波、草图这两种画风。矢量图的绘制主要是利用SVG图片转化为直线段(曲线为短线段),通过串口发送线段的坐标给Arduino处理,最终控制电机绘制。主程序控制流程如图2所示:

2.1 EEPROM的读写设计

EEPROM指电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片[6]。在系统中,EEPROM的控制也是相当重要,机器把一些特定的环境参数和每次启动要加载的参数从指定的地址储存在EEPROM中。当机器启动运行,Arduino从设定的地址常量进行存储器内容的获取,把获得的内容与1进行比较。若大于1则使用当前的数据。若是小于1则说明EE-ROM里存放的数据是不想要或者为0,则使用默认参数。

程序使用的是Arduino官方的EEPROM库,但是官方库有一个缺陷,每次只能读取或者写入一个地址位。所以对其进行改进,添加了两个子函数一个是在指定的位置从EEPROM读取内容,另一个是从指定的位置写入内容。EEPROM的使用分析流程如图3。

2.2 坐标系统及坐标映射的设计

绘图机器人的坐标系统以及坐标的映射是整个设计的核心部分。坐标系统以左上角步进电机转轴为原点(0,0),向右为X轴增加方向,向下为Y轴增加方向。坐标的映射是通过与控制软件通信获取到的坐标,将坐标映射为两根弦的长度。上位机负责把图片转化为信息单元点元素,其中包含坐标、大小、灰度值。Arduino主控板将坐标换算为弦长并输出。

该功能的实现涉及多种功能以及算法比如串口通信、内存的调用和三角坐标转化等等。实现这功能关键流程是通过串口通信获得前一个的坐标(C1X,C1Y)以及下一个的坐标(C2X,C2Y),分别求出X的差值以及Y的差值。将最大的差值除上N(初始值为1)与当前的最长线段进行比较,直到小于最长线段,求出N的值。然后将差值N等分,加上一个的坐标,转化为弦长,Arduino依次执行动作输出。最后再返回串口通信。坐标机器位移的坐标转化流程图如图4所示:

2.3 位图像素处理设计

在绘图机器人系统中,像素相关控制决定了绘图的美观以及绘制的速度,所以像素的相关控制可以说是至关重要的。像素控制里包括点单元的密度以及绘图风格等等。在程序设计中‘0’代表黑色像素,‘255’代表白色像素。机器实现这个灰度值是通过对某像素块内进行填充相同粗细的笔的墨水。当需要绘制的草图为深色或者更深颜色时,在这个像素块内填充的墨水就越多,反之浅色直至无色则使用越来越少的墨水。

该绘图机器人主要有两种位图的绘图风格,一是方波绘图像素风格,二是随机绘图像素风格。这个绘图风格主要是受上面所叙的像素密度以及大小的影响。比如绘制方波风格,在绘制中以像素的密度以及尺寸来决定这个像素的大小和墨水的多少。例如颜色以无色或者白色到灰色再到黑色,那么使用方波风格绘画出方波就从‘0’频率(即一条直线)到某像素块能容纳的最大墨水,深像素则体现是在线条的多与少。像素相关控制设计流程图如图5所示。

2.4 矢量作图流程设计

矢量作图的本质就是坐标的变换以及坐标的映射与坐标系统及坐标映射的设计流程是一致,但是矢量作图需要提笔与放笔的控制。提笔与放笔是通过舵机来实现的。在控制软件上输入SVG图片,解析并转换为直线段(曲线细分为短线段)。上位机软件发送坐标给Arduino主控器,通过三角函数转换为左右弦的目标长度,步进电机等分运动,最终到达指令所给的弦长。舵机控制流程如图6所示:

3 绘图机器人功能测试

3.1 步进电机位置测试

步进电机放置的位置和画板的大小决定了画笔的能处的最远的运动位置,这是影响到画纸的最大面积的因素,也是机器能正常控制的最大范围。本文选用600mm*450mm的画板进行测试,步进电机分别放置在画板上的两端如图7所示。理论上来说,机器能控制的最大面积应该为虚线内的面积,但是在测试的过程中发现画板的每边都应该大于最大画纸区域的140mm左右,这样才不会使得同步带啮合错位或者偏移。经过计算若使用600mm*450mm的画板最大画纸区域长宽为335mm*170mm左右。但是实际上长无法到335mm,最多250mm,当画笔距离电机比较远,同步带与同步轮之间的契合变差,非常容易受到外界的干扰,易发生啮合错位或者偏移等现象。

步进电机的位置以及最大画纸区域大致确定后,需要对笔在运动过程中的稳定性进行测试。当对笔的多个位置进行受力分析,如图8所示。测试中发现当左右两边的皮带与水平方向的夹角(a与b)小于90度也就是大致处在画板中间区域画的稳定最好,受力比较均匀。而在边缘的地方画笔受到水平方向额外的力,导致可能向画板中间区域方向偏移。故在绘图的过程中,应该尽量使得画笔处在画板中间的区域,才不会出现画笔移动或者摇晃。但是这样最大画纸的区域就受到了限制,所以想要增加画纸区域要么改变画板的大小,要么增加两个步进电机之间的距离。

3.2 像素密度的测试

像素块由多少波纹组成取决于笔尖的粗细宽度。假设像素块的大小是30平方毫米,笔尖直径选用的是1毫米的,那么这个像素块最多只能填充30条线。再往像素块内添加任意条数的线,都无法改变其颜色,因为已经达到了最大的深度。假设使用笔尖直径为0.6mm,那么颜色最大的深度就不止30条线,而是需要50条线。当在控制软件中设置笔尖的大小,机器会根据设置的值,尽可能以最大密度进去作画。机器像素的测试如图9所示:

3.3 笔尖直径的测试

基于Arduino绘图机器人可以使用普通中性水笔作为画笔,笔的直径对绘制出的效果有一定的影响,所以在绘制草图过程中需要获得笔尖的直径。一种方法是通过水笔出厂的铭牌信息来进行确定,另一种方法是通过控制软件来测试笔尖宽度。在图纸上用最大的密度画出一连串像素,但是相邻的像素会设置一定的增量,所以当笔尖的厚度达到想要的密度时,这就是合适的笔尖直径。在控制软件中,有三个相关设置参数用来控制测试的大小:

Pen test start tip—这是初始部分的笔尖大小,应该尽量小些。

Pen test end tip—这是机器会尝试的最大笔尖宽度。

Pen test Inc tip—这是机器从开始部分到结束部分之间笔尖宽度的增量。

如果开始部分笔尖大小被设置成0.6,结尾部分是2.0,增量是0.1,那么机器会画出第一个像素就好像它有一个0.6mm笔尖大小的笔,之后画得更宽,每次增长0.1mm,一直增加到2mm。根据绘制出来的草图确定所需的笔直径。

3.4 绘图机器人参数设置

当绘图机器人的画板选定就已经确定了机器人的一些硬件参数,比如长、宽、绘图原点等等。在控制软件修改这些参数,使得控制软件所呈现出的大小与、实际上的大小一致。通过控制软件与机器进行通信将设定好的参数上传到机器的EE-PROM内。将参数上传到机器是非常重要的,否则将会出现定位错误。而且上传后在断电的情况下参数也可以保存,以免每次使用都对参数进行设定。但若是修改参数则需要重新上传数据。

将机器人与图片转换设定相同路径,让机器人知道画笔当前位置。这样通过修改控制软件以及将软件参数上传到机器,使得两者同步。在每次画图前都需要对当前位置进行校准,其中包括机器人画笔的位置。需要人为地将画笔装置调整到在画板上测得的画图原点。编写零点代码时,零点的设置是可变的,随着机器的大小而进行改变。

3.5 不同绘图方式的比较

基于Arduino绘图机器人的绘图方式有四种,绘制变频方形波纹位图、变幅方形波纹位图、随机波纹的位图以及SVG矢量图。在选择不同方式的绘图,其美观程度、墨水消耗以及时间上也是有区别的。在图片格式大小上,图片越大越耗时就越多。若绘制相同A3纸大小的图,不同绘图方式的具体比较信息见表1。

4 结束语

基于Arduino的绘图机器人以Arduino控制器为核心,通过串口与上位机软件processing相结合,实现了位图、矢量图的绘制。坐标系统、坐标的映射以及像素的相关控制是整个绘图机器人设计的核心。该绘图机器人绘图尺寸能够根据需求进行调节,硬件设备安装简便,拥有四种不同绘图方式:变频方形波纹的位图、变幅方形波纹的位图、随机波纹的位图以及矢量图。在四种方式中绘图使用的图片格式,位图对格式的要求不高,普通图片格式即可,但矢量图对图片格式要求较高,格式上可能需要一定的转化。在相似度上,矢量图与原图相识度几乎一致,而位图需要在一定的距离观看,才能达到相似的效果。位图的绘制虽说与原图无法相比较,但是作为服装设计或者视觉设计上的草图绘制已经能够达到要求。同时该绘图机器人在绘制矢量图中,特别是在教学实践中绘制各类矢量格式原理图速度快、绘制精度高,能够替代人工绘图,有着很好的应用前景。也能将该款机器人应用与各类商业广告平台,实时绘制广告标语和商标图案。

参考文献

[1]开源知识库.Arduino Uno[EB/OL].(2011-11-23).http://kb.open.eefocus.com/index.php/Arduino_Uno.

[2]Arduino中文社区.概述Arduino电机驱动扩展板L293D马达板motor control shield[EB/OL].(2013-10-13).

[3]blankas.步进电机[EB/OL].(2015-07-20).http://baike.baidu.com/link?url=At Ukp1x-vs Kk Whi E4ZGpp Ipj Ak RN21pe BNMes-RQi Fl QDyn SFf Dg3uln6q TY_XQz D2XCv Mq09u-Nd Yvv7D6U5b FK.

[4]于海生.计算机控制技术[M].北京:机械工业出版社,2011:55-76.

[5]陈吕洲.ARDUINO程序设计基础[M].北京:航空航天大学出版社,2014:24-171.

Arduino开发 篇4

关键词:Arduino,智能遥控,避障,循迹

0 引言

Arduino作为一款全球知名的开源硬件,全球有数以万计的开发者使用Arduino开发项目和电子产品[1]。利用Arduino开发的遥控智能小车具有体积小、成本低、可在多种设备上远程控制等特点。其在饲料生产企业的袋包码垛仓储、化肥厂颗粒粉体袋包码垛,印刷制品运输以及物流企业中的货物的搬运分拣中被广泛使用。本文以Arduino UNO开发板作为控制单元,手机端传递控制指令给蓝牙穿透模块,通过超声波模块,红外线循迹模块采集的信息配合控制程序实现一种具有无线遥控、避障、自动循迹等多功能智能小车。

1 设计思路和方案

1.1 系统组成

智能遥控小车控制系统硬件由Arduino UNO开发板、HC05蓝牙穿透模块,超声波传感器、红外循迹传感器和直流电机及驱动电路组成[2]。

1.2 智能小车设计方案

基于Arduino的智能小车通过无线串口实现对小车的无线遥控,通过相应的传感器和控制程序能够实现以下功能:

(1)利用蓝牙使小车可以远程控制小车运行方向和速度。(2)利用超声波传感器探测前方的障碍物,从而实现自动避障的功能。(3)利用红外循迹传感器探测下方的轨迹线,从而实现自动循迹的功能。(4)安装蜂鸣器和三色LED灯,实现报警和功能指示的作用。

2 智能遥控小车控制程序设计

智能遥控小车程序编写采用了模块化的结构设计方法。小车Arduino程序的基本结构由setup()、loop()、LEDBlin()、bizhang()和Line()五个函数构成。Arduino通电后Setup()函数中的程序只执行一次,用于Arduino的初始化设置,如I/O口的初始化操作和速度状态的定义。Loop()函数完成程序的主要功能和子程序的调用,如小车的蓝牙遥控、自动避障和循迹等函数的调用。LEDBlin()函数用来定义WS2812B RGB三色LED闪烁和蜂鸣器发声,bizhang()函数实现小车的自动避障功能,Line()函数实现小车的循迹功能,而yaokong()函数实现小车的手动遥控功能,通过手机客户端的SPP蓝牙串口软件,在名称文本框内输入要传送的字符,如字符A、B、C用来设置小车运动的工作模式(手动遥控、自动避障、循迹运行)。字符R1、R2、R3用来设置小车的移动速度,、、、分别用来控制小车的前进、后退、左转、和右转。

2.1 手动遥控

避障程序主要由主函数Loop()和电机L298N驱动函数来实现。首先在函数Loop()中通过函数BT_COM()读取蓝牙串口的数据[3],通过switch()多选择分支函数比对接收字符对应的电机驱动函数,如符号“↑”则调用Forward()函数小车前进,符号“↓”调用Backup()函数小车后退,“→”调用Turnright()函数小车右转,“←”调用Turnleft()函数小车左转,实现小车通过无线蓝牙的遥控控制。

2.2 避障代码

避障程序主要由超声波测距函数Distance(),电机L298N驱动函数和避障模式函数Bi Zhang()等构成[4]。首先在主程序中选择自动避障模式B,则调用测距模块函数Distance()通过Triq引脚输送一个大于10us的高电平,然后检测Echo引脚反馈回来的高电平持续时间,通过公式:距离=344m/s*高电/2将时间转换成距离。然后再调用Bi Zhang()函数来判断检测的距离:如果在20mm<us<40mm范围内小车左转,us>40mm小车直行,us<20mm小车后退。

2.3 循迹代码

循迹程序主要由循迹函数Line()和电机L298N驱动函数等构成。首先在主程序中选择自动避障模式C,当Line()函数返回值为0时表示小车没有在轨迹上,小车调用电机控制函数Forward()控制电机继续前进,当Line()函数返回值为1时表示小车在轨迹的右侧,小车调用电机控制函数Turnright()函数控制电机右转,同理当Line()函数返回值为2时,小车调用电机控制函数Turnleft()函数控制电机左转,当Line()函数返回值为3时表示小车在轨迹中间,小车调用电机控制函数Forward()控制电机继续前进。

2.4 实验研究

经实验测试小车成功地实现了无线蓝牙遥控功能,能够实现三种控制模式的切换。在前方遇到障碍物时能够自动的避障,轻松的避开障碍物,达到了预定的目标,效果如图1所示。

3 小结

借助Arduino资源丰富的开源硬件平台和高效率的Arduino类库函数实现了对智能遥控小车控制系统的设计。实验结果表明小车能够很好地实现自动的避障和循迹的功能,通过HC-05蓝牙模块还可以方便地实现无线遥控和控制模式的切换。基于Arduino智能小车的控制系统的研究将有助于把Arduino引入到智能产品的设计当中去,具有一定的实用价值,为后续开发工业智能货物运输机器人进行了一次有效的尝试。

参考文献

[1]陈吕洲.Arduino程序设计基础[M].北京:北京航空航天大学出版社,2015.

[2]宋楠,韩广义.Arduino开发从零开始学:学电子的都玩这个[M].北京:清华大学出版社,2009.

[3]聂茹.基于蓝牙遥控的多功能智能小车设计[J].自动化与仪器仪表,2016(04).

Arduino开发 篇5

什么是Arduino?它是一块开放原始码的单芯片微电脑 (如图1) , 2005年由意大利米兰互动设计学院的教授David Cuartielles和Massimo Banzi所设计, 原始构想是希望让设计师及艺术家们, 透过Arduino能很快地学习电子和传感器的基本知识, 快速地设计、制作作品的原型, 因此, 非常适合不具有电子背景的人使用, 以设计出各种不同的互动科技装置。

Arduino包含硬件与软件两大部分, 硬件部分是一个约手掌大小的控制板, 提供14个数位式输出/输入端, 6个类比式输出/输入端, 支持USB资料传输, 可以使用自备电源 (7~12V) 或是直接使用USB电源, 使用者可以在数位式输出/输入端上接上不同的电子装置, 如LED灯、按钮、蜂鸣器、游戏杆、马达等。软件的部分是使用基于C/C++语言, 如要控制接在第13个脚位的LED灯, 可以使用以下的程序代码。

然而, 这种用英文写程序的方式, 无形中限制了使用对象的广度。因此, 西班牙的Citilab组织基于Scratch的成功经验, 改写自由软件Scratch并命名新软件为S4A, 创造出使用拖曳积木的方式来控制Arduino装置的可能性, 让Scratch玩家们可以进一步将创意延伸到实体的互动科技装置上。这种方式对中小学教育可以说是一大福音, 学生不再需要有高深的专业程序知识, 每个人都能完成Arduino的互动装置。上述的LED灯控制程序在S4A中的写法如图2。

S4A如何控制Arduino呢?基本上, 在Arduino控制板上必须事先上传一份S4A的轫体程序, 然后透过这个程序不断地与S4A主程序沟通, Arduino与计算机间可以通过有线的USB连接线或无线的蓝牙模块来传输, 在S4A主程序中设定好使用的端口位置, 就可以侦测到Arduino的状态。以控制接在第13脚位的LED灯为例, 我们可以应用在以下的案例情境:让蝙蝠不断地在左右飞行, 当它碰到舞台边缘时, LED灯就会亮0.5秒。

传统的Scratch程序中, 程序的执行结果是通过屏幕与喇叭来做输出, 在这个例子中, 我们可以将程序的执行结果输出到LED灯, 因此, 借由S4A能引入一些硬件装置以让Scratch程序与现实世界链接, 探索更多的可能性。S4A除了原有的Scratch八大类积木外, 在动作类还额外提供了12个积木来与Arduino互动 (如图3) 。透过这些积木, 我们就能与接在Ardunio控制板上的各类电子组件与传感器互动。

除了LED数字输出外, 也可以使用模拟输入设备, 图4的滑杆装置就是一种常见的输入装置。

S 4 A提供一个模拟输入的积木, A0脚位对应到面板的Analog1, 它的输入值的范围是0~1023。我们使用岔开A0管脚上的滑杆来调整篮子的位置, 当滑杆左右滑动时, 就可以控制篮子的位置, 如图5。

S4A让互动科技创作变得更简单, 有鉴于此, 2011年11月在宜兰县佛光大学许惠美老师与苗栗县蟠桃小学范运平老师的号召下, 台湾的S4A教师专业社群因而诞生。社群创立之初便获得热烈响应, 中小学教师纷纷主动加入, 大家的共同目标是希望通过彼此分享机器人教材的运用, 讨论如何带着学生们从互动机器人中学习新知识, 一同研究将硬件机器人导入学校的具体做法, 藉由社群讨论的力量让教学更上一层楼, 希望运用更多元的教材来吸引学生的注意力, 增添教学乐趣, 也期望藉由这样活泼的教学方式带给学生多一些启发。

由于受限于文字篇幅, 无法以书面数据介绍太多的S4A案例, 进一步的数据可以参考笔者所撰写的书籍《程序设计逻辑训练——使用Scratch》, 其中第五章Arduino互动科技篇有专文介绍。动态的作品展示可以参考范运平老师所制作的一系列影片, 专辑地址是, http://www.youku.com/playlist_show/id_20022205.html。

Arduino开发 篇6

Why Zig Bee?

短距离无线通信技术有Zig Bee、Bluetooth、433 MHz和低功耗Wi-Fi, 其解决的就是通信中最后100 m, 甚至是最后10 m的问题, 那么为什么要选择Zig Bee呢?

范博士向记者阐述了原因:“如表1所示, 这四种技术各有所长, 但是从数字家庭应用所需的安全性和低成本来看, 433 MHz虽然使用起来很简单, 但是其致命点就是不安全, Zig Bee则内置了AES 128 bit的加密算法。而低功耗Wi-Fi由于速率快所以相对较贵, 从组网规模上看, Zig Bee最具优势, 理论上可达65 000个节点。综合这些因素, Zig Bee是最佳选择。”

周翔经理说:“全球工业、科学和医用频段最通用的是2.4 GHz, 今天的主题Zig Bee也是在2.4 GHz上的应用协议。Bluetooth在家庭中的应用绝对不会超过10 m, 隔一间房可能就不行了。Wi-Fi也很明显, 例如在厨房有一个小的无线路由器, 很可能客厅角落的信号就很弱, 甚至在某个角度收不到。虽然Zig Bee的通信速率并不是很高, 但是通信距离相对远一些, 而且它有一个83 MHz的带宽是完全公用的。”

陈雄基经理补充到:“在家庭中, Zig Bee本身能提供一个完整的路由功能, 所以它补偿了穿透力的问题。家里肯定不止一个门磁或者一个传感器, 其实它们都可以作为一个路由把信息传递出去。”

Zig Bee+Arduino+Android

星谷科技的业务主要分为物联网平台、Zig Bee-IP网关和Zig Bee外设三部分。值得一提的是, 星谷采用了Arduino开源硬件平台。Arduino提倡电子积木式开发, 可以非常方便灵活地制作各种传感器外设的原型, 解决了各种传感器与终端接入标准不一致的问题。Google I/O 2011发布了Android Open Accessory, 就是以Arduino作为标准。随着Android在手机、平板电脑、机顶盒、家电等智能终端中的广泛应用, 以及智能终端在智能家庭及物联网领域的应用, Arduino必然会在这些领域的开发中拥有举足轻重的地位。Arduino同样选用最适合大规模传感器组网的ZigBee作为短距离无线通信的解决方案。Zig Bee+Arduino+Android所能碰撞出的火花是我们难以预计的, 但是一定会很精彩, 会对数字家庭、物联网的发展起到很大的推动作用。

数字家庭的实现必然需要家电、家居等厂商的配合。范博士介绍到:“星谷科技以网关为核心的开放运营策略, 将与家电厂商、健康产品提供商合作, 在他们产品中嵌入Zig Bee芯片以实现智能家电和智能健康医疗。例如, 我们正在跟空调厂商接洽, 帮助他们在空调内安装Zig Bee的通信模块, 相信其他厂商也会看到这种应用的优势和广阔的市场前景, 会很快加入进来。”星谷科技的成功案例有很多, 其中与深圳移动合作的全国首个G3无线社区是一个经典案例。由于场地有限, 现场只向记者展示了一个智能安防的设计, 可以通过红外感应进行自动报警。

TI丰富的低功耗射频产品

陈雄基经理表示:“TI同时提供不同的平台, 不管是2.4 GHz还是433 MHz, 因为的确没有一种技术是完美的, 对于不同的应用场景, 用法也将不太一样。”今年年初, TI推出了提供ANT+与蓝牙连接的双模式单芯片解决方案CC2567, 陈雄基经理也向记者透露:“从技术的角度来讲, 几种不同的技术TI都能做, 从长期的产品路线图来说, 很有可能将它们整合到一个芯片上。”

Arduino开发 篇7

关键词:温度测量,DS18B20,Arduino,单总线

很多场合都需要进行温度检测,最常用的方法是采用单片机和温度传感器配合工作。但通常使用的单片机往往不容易上手,开发周期长。Arduino的出现解决了这一问题,它是一类便捷灵活、方便上手的开源电子原型平台[1]。基于AVR平台,Arduino对AVR库进行了二次编译封装,将端口都进行打包处理,因此不需要了解其内部硬件结构和寄存器设置,不需要用户直接处理底层系统,提高了应用程序的开发效率。本文利用Arduino的便捷灵活、方便上手这一特性,并选用DS18B20作为温度采集传感器,设计了一套多点温度测量系统。

1 系统总体设计

系统的结构如图1所示,主要由温度采集单元和Arduino主控板构成。温度传感器DS18B20以单总线的连接方式将采集到的温度数据发送给Arduino主控板,Arduino主控板通过串口将整合后的温度数据上传到PC端,在PC端对接收到的数据进行显示、存储、分析。

2 温度检测系统的硬件设计

2.1 主控板Arduino Mega 2560

Arduino Mega 2560是采用USB接口的核心电路板,它的处理器核心是ATmega 2560,具有54路数字输入/输出口,其中16路可作为PWM输出,16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮[2],其开发板图如图2所示。

与Arduino系列其他型号的开发板相比,Mega 2560是一个增强型的Arduino控制器,它提供了更多的输入输出口,可以控制更多的设备,以及拥有更大的程序空间和内存,为以后系统的升级提供了硬件基础。

2.2 DS18B20温度传感器

DS18B20是由美国DALLAS半导体公司推出的一种“一线总线”接口的温度传感器。具有体积小,硬件开销低,抗干扰能力强,精度高等特点,其常见的封装形式如图3所示。

DS18B20采用单总线的连接方式,单总线系统包括一个总控制器和多个DS18B20从机构成。通过单总线访问DS18B20的基本协议为:初始化、ROM操作命令、存储器操作命令和执行/数据四个步骤[3]。

由于每个DS18B20都有一个独特的片序列号,所以多只DS18B20可以同时连在一根单线总线上,系统中数据口为主控板的P10引脚,用于读写和温度转换,电源由主控板的5V电压口直接提供,无需外部电源[4]。

2.3 温度测量电路设计

本文设计的温度检测系统利用了主控板自带的5V电源直接供电,省去了外部电源电路的设计。并采用了一个4.7KΩ的上拉电阻驱动多个DS18B20,省去了大量的上拉电阻,避免了因总线上节点过多而造成供电不足,同时进一步提高了温度传感器布线的灵活性,设计的温度测量电路如图4所示。

3 温度检测系统的软件设计

首先Arduino在数据线上发出低复位脉冲,然后恢复总线为高,随后DS18B20发出响应脉冲,Arduino发现有响应脉冲后再搜索,按位逐个取得器件的序列号,也就是器件地址,再对各个器件发出转换命令进行测温,由每个DS18B20测温并把结果保存到自己的RAM中,经过转换时间后,由Arduino按地址读出每个DS18B20的测温结果,将温度数据发送到串口,上传至PC,其程序主流程图如图5所示。

4 系统实现及实验

实现了一个13点的温度测量系统,为了验证该系统的可靠性,进行了温度场的分布测量实验。实验中采用医用特定电磁波治疗仪(TDP)的治疗灯头[5]的温度场分布作为测量对象,测试系统实物图如图6所示。

为得到医用TDP治疗灯头的温度场分布,进行了多次测温实验,灯头与测温系统的垂直距离分别取10cm,20cm,30cm,测温范围为50cm2的水平面。关于空间内的温度数据分析,本文以垂直距离为10cm时的温度数据为例进行了3D建模分析,其空间分布情况如图7所示,其中Z轴表示摄氏温度值,X-Y平面为10cm处的测温水平面,从图中可以看出,灯头中心处温度最高,随着与灯头中心距离的增加,温度逐渐降低。

5 结语

本文设计并实现了一种基于Arduino的多点温度测量系统,并利用该系统测量了医用TDP治疗灯头的温度场分布。TDP灯头的结构为圆盘形,其电热丝由内到外环绕在圆盘内,故其温度分布为中心处最高,由内到外逐渐降低。对系统的测温数据进行分析后得到其温度场呈圆形分布,这与TDP灯头的实际温度场分布一致。实验结果表明本系统具有良好的实用性和可靠性。

参考文献

[1]赵广元,王文庆,蔡秀梅.基于Arduino和Matlab/Simulink的仿真环境设计研究[J].测控技术,2014,38(08):123-129.

[2]贾瑞.基于Arduino Mega2560的无线监控小车设计[J].数字技术与应用,2013,(10):144-146.

[3]覃鲜艳.基于DS18B20的无线测温系统的研究与设计[D].武汉:武汉理工大学,2012.

[4]何宗虎,张德祥,张玲君.基于单片机的高精度温度测量系统设计[J].现代电子技术.2011,34(09):131-135.

【Arduino开发】推荐阅读:

Arduino控制板06-12

构件开发07-14

协同开发07-15

开发成果07-18

多重开发05-09

开发公司05-11

再开发05-11

开发层系05-11

工况开发05-13

沿海开发05-17

上一篇:空间直方图下一篇:静电检测