概括:
本项目旨在构建机器人在收集环境因素自动化方面的一个应用。该机器人支持对任何给定区域的各种环境因素进行远程性能监控和维护。文中详细介绍了该机器人在数据采集(DAQ)系统中的设计、安装和使用。传感器提供任何类型区域或行业的自主监测和控制所需的准确可靠的实时数据。该系统采集的数据可以远程访问、绘制和分析。这为远程位置的监视和控制提供了一个完全自动化的解决方案。
图1基于Arduino的路虎机器人用于传感器数据采集的原型
描述:
先决条件和设备:
您将需要以下内容:
Arduino Board或Arduino克隆(如果你需要的话,这里有一本指南的)
两个直流电机。
5V TTL -UART蓝牙模块。
机器人底盘和轮子,适合您的底盘尺寸和电机尺寸。
Arduino IDE的编程。
方框图:
图2基于Arduino的传感器数据采集机器人框图
我们这个项目的目的是收集传感器数据,并将其存储起来,以便将来进行分析。数据采集技术有多种,如EEPROM、SD卡等。在这里,我们将使用基于互联网的存储,这是一种可靠和有效的方法来分析任何传感器数据。
硬件装配:
通过电路图给出的机器人连接。使用所选部件使机器人装配并将电机连接到电路。光耦合器用于保护Arduino免受高压风险。注意:RX的Arduino应连接到蓝牙模块的Tx,Arduino的TX应连接到蓝牙模块的RX。
在职的:
在这个机器人中,我们通过使用提供GPRS连接的GSM调制解调器增加了互联网功能。下面的部分将解释如何通过HTTP命令将传感器读数发送到网站。我们使用ThingSpeak网站,它提供了一个简单而免费的API来记录来自各种传感器的数据。
图3:图表显示LDR在数据采集Arduino机器人上感测的光强度变化
图4:图表显示DHT11传感器在数据采集Arduino机器人上记录的湿度变化
图5:数据采集Arduino机器人上DHT11传感器记录的温度变化图
这些是一些示例图表,该图是从机器人发送到的传感器数据到截图网站上的频道:
事说的设置
以下是要获取此示例的步骤所需的步骤ThingSpeak网站:
创建一个帐户ThingSpeak(注册)。
创建新通道
图6:截图的东西网站显示数据采集创建频道
从Apikeys选项卡复制Write API键以获取新频道。
配置新频道(见频道设置选项卡)。
添加三个字段到您的通道。
命名频道和每个字段。
保存新的频道设置。
笔记:通道和字段名称用于标记图表中的数据,这些名称对API没有影响,可以随时更改。
以下是用于此机器人的通道的设置:
图7:屏幕截图的东西网站显示创建信道中的光强度,温度和湿度场的添加,用于显示传感器数据
利布包括
除了现有库之外,我们现在还必须使用#include编译器指令在草图中包含Timerone,软串行和DHT库。
# include < TimerOne.h >
# include < SoftwareSerial.h >
# include < DHT.h >
这ThingSpeakAPI每15秒限制每15秒的数据最多一次。此外,在发送任何数据之前需要一些时间来建立GPRS连接。出于这个原因,我们调整Timer1.Initialize(4000000);//设置4秒的计时器。并使变量变为5名称tick_count,以便读数每20秒拍摄一次。(单位是微秒)
设置:
除了现有的机器人控制设置代码外,我们还应该对GSM进行一些初始化。
GPRS.WRITE(“AT + CGATT = 1”);//附上GPRS服务
GPRS.WRITE(“AT + CGDCONT = 1,”IP“,”Airtelgprs.com“);//定义PDP上下文
GPRS.WRITE(“AT + CSTT =”Airtelgprs.com“,”“,”“”);//设置接入点,用户ID和密码
GPRS.WRITE(“AT + CIICR”);//与GPRS耗时耗尽无线连接
GPRS.WRITE(“AT + CIFSR”);//获取本地IP地址。虽然没有实际需要。
gprs.write(“at + cipstatus”);//获取连接状态P.S.它应该是'IP状态'。//这可以用作检查点。
gprs.write(“at + ciphead = 1”);//将标题添加到HTTP请求。
GPRS.WRITE(“AT + CDNSORIP = 1”);//表示连接请求是否使用IP地址(0)或域名(1)
GPRS.write(“在+ CIPSTART = " TCP”、“api.thingspeak.com”,“80”);//启动TCP连接(模式,IP地址/名称,端口
gprs.write(“at + cipsend”); //告诉GSM模块我们要发送数据
数据集合:
Light = Analogread(A0);//读光强度
读取温度或湿度约为250毫秒!传感器读数也可能最多2秒'旧'(其一个非常慢的传感器)
h = dht.readHumidity ();//读取温度为摄氏度(默认值)
t = dht.readTemperature ();
数据发送到事物说:
itoa(光LIGHT_data 10);
itoa(h,湿度数据,10);
ITOA(t,temp_data,10);//函数将整数转换为字符串。
GPRS.write(“在+ CIPSEND”);//告诉GSM模块我们要发送数据
GPRS。写(“/更新吗?关键= XXXXXXXXXXXXXXXXXXXXXXX = ");//修改你的API KEY。
GPRS.write (LIGHT_data);
gprs.write(“&field2 =”);
GPRS.write (HUMID_data);
gprs.write(“&field3 =”);
gprs.write(temp_data);
GPRS。写(“HTTP / 1.1”);//最后是实际的HTTP请求//下面是必须设置的头。
GPRS。写(主持人:“api.thingspeak.com”);
GPRS.WRITE(“连接:保持活力”);
GPRS.WRITE(“接受:* /”);
gprs.write(“*”);
GPRS。写(“接收语言:en - us”);
GPRS.write(0x1A);//它告诉GSM模块我们不再发送数据了
//字符ctrlZ=0x1A;