物联网项目:将Arduino连接到Ubidots和Android –第1部分

这个物联网项目探索了物联网的一个重要方面:如何使用以太网屏蔽将Arduino连接到物联网云平台 。 这方面很重要,因为可以将数据存储在云中然后进行分析。 一旦数据(如传感器值)存储在云中,便可以使用智能手机访问数据并远程控制Arduino板。

该项目由两个不同部分组成:

  1. 第一部分描述了如何从连接到Arduino板的传感器收集数据并将此信息发送到存储它的云平台。
  2. 第二部分介绍如何使用Android智能手机访问此信息。

为此,数据由DHT11传感器生成,该传感器读取温度和湿度 。 作为存储数据的云IoT平台,我们将使用Ubidots平台 。 该传感器连接到Arduino板,后者使用以太网屏蔽罩连接到网络 。 在该项目中, 以太网屏蔽是Wiznet 5500 。

项目概况

项目概述如下所示:

iot_ubidots

一旦温度和湿度传感器开始读取值, 它将通过Arduino板将其发送到云平台 。 该项目使用Ubidots将数据存储在云中。 该平台易于使用,并且可以轻松地与Arduino集成。 此外,它具有内置的仪表板功能,因此可以创建有趣的仪表板,以使用图表显示从板发送的值。

建设物联网项目

第一步是设置Arduino草图和电线连接。 DHT11传感器非常易于使用,并且可以轻松,快速地与Arduino集成在一起,此外还有一个库可以帮助开发系统。

下图显示了该项目的示意图:

ubidots_bb

在此草图中,DHT11传感器连接到Arduino板,该板再使用以太网屏蔽连接到网络以发送数据。

第一步,我们检查所有连接是否正确,以尝试读取温度和湿度的值。

下面的代码片段显示了用于测试传感器的Arduino草图:

#include "DHT.h"
#include <spi.h>#define DHTPIN 2
#define DHTTYPE DHT11DHT dht(DHTPIN, DHTTYPE);void setup() {Serial.begin(9600);dht.begin();
}void loop() {delay(50000);float h = dht.readHumidity();// Read temperature as Celsius (the default)float t = dht.readTemperature();Serial.print("Humidity: ");Serial.print(h);Serial.print(" %\t");Serial.print("Temperature: ");Serial.print(t);Serial.println(" *C ");
}

要记住的一件事是在您的Arduino IDE中导入DHT11库。 运行示例,您应该获得温度和湿度。

如果一切正常,是时候添加Ubidots支持使事情变得更复杂了。 这个物联网项目的目的是将数据发送到云并进行存储 ,因此我们必须实现一个负责发送数据的代理

Ubidots提供了一个有用的示例。 在Arduino中, 我们必须开发一个HTTP客户端,该客户端调用JSON服务以传递要存储在云中的数据

参考Ubidots文档 ,有必要创建客户端必须发送的身份验证令牌。 请阅读以下内容以了解更多如何创建令牌的信息。

在此IoT项目中,Arduino HTTP客户端同时发送两个变量:温度和湿度,因此要调用的URL为:

http://things.ubidots.com/api/v1.6/collections/values

而以JSON格式发送的数据是:

[{"variable": "varId", "value":val, "timestamp":timestamp}, {"variable": "vardId1", "value":val1, "timestamp":timestamp1}]

这是HTTP客户端的Arduino草图:

#include "DHT.h"
#include <spi.h>
#include <ethernet.h>#define DHTPIN 2
#define DHTTYPE DHT11// Ubidots Data
String tempVarId = "5656116076254219f78cad12";
String humVarId = "565611777625421b5e91a1ef";
String token = "aIk7lh3ipJGRdgAWOwJwDlPFwCdQu6uoLWZcGsMelXVAF62ycFsanB9Yywdk";DHT dht(DHTPIN, DHTTYPE);
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };char server[]="things.ubidots.com";EthernetClient client;
IPAddress ip(192, 168, 1, 40); // Arduino IP Add
IPAddress myDns(8,8,8,8);
IPAddress myGateway(192,168,1,1);void setup() {Serial.begin(9600);Serial.print("Here");dht.begin();// start the Ethernet connection:if (Ethernet.begin(mac) == 0) {Serial.println("Failed to configure Ethernet using DHCP");// try to congifure using IP address instead of DHCP:Ethernet.begin(mac,ip,myDns,myGateway);}
}void loop() {// Reading temperature or humidity takes about 250 milliseconds!// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)float h = dht.readHumidity();// Read temperature as Celsius (the default)float t = dht.readTemperature();Serial.print("Humidity: ");Serial.print(h);Serial.print(" %\t");Serial.print("Temperature: ");Serial.print(t);Serial.println(" *C ");save_value(t, h);delay(5000);
}void save_value(float tempValue, float humValue)
{Serial.println("Sending data...");// if you get a connection, report back via serial:int num = 0;delay(2000);// Post single value to single var// String varString = "{\"value\":"+ String(tempValue) + "}";String varString = "[{\"variable\": \"" + tempVarId + "\", \"value\":" + String(tempValue) + "}";varString += ",{\"variable\": \"" + humVarId + "\", \"value\":" + String(humValue) + "}]";num = varString.length();Serial.println("Connecting...");if (client.connect(server,80)){//client.println("POST /api/v1.6/variables/"+tempVarId+"/values HTTP/1.1");//Serial.println("POST /api/v1.6/variables/"+tempVarId+"/values HTTP/1.1");client.println("POST /api/v1.6/collections/values HTTP/1.1");Serial.println("POST /api/v1.6/collections/values HTTP/1.1");client.println("Content-Type: application/json");Serial.println("Content-Type: application/json");client.println("Content-Length: "+String(num));Serial.println("Content-Length: "+String(num));client.println("X-Auth-Token: "+token);Serial.println("X-Auth-Token: "+token);client.println("Host: things.ubidots.com\n");Serial.println("Host: things.ubidots.com\n");client.print(varString);Serial.print(varString+"\n");}else{// if you didn't get a connection to the server:Serial.println("connection failed");}boolean sta = client.connected();Serial.println("Connection ["+String(sta)+"]");if (!client.connected()){Serial.println();Serial.println("disconnecting.");client.stop();}Serial.println("Reading..");while (client.available()){char c = client.read();Serial.print(c);}client.flush();client.stop();}

请注意,在第65和66行,我们使用变量id(请参阅以下内容以了解如何获取ID)构建JSON数据以传递给服务,在第83行,我们在标头中发送身份验证令牌。

几乎已经阅读了Ubidots的Arduino HTTP客户端,是时候在Ubidots中配置项目了。

现在,有必要在Ubidots上配置项目,以便Arduino客户端可以发送数据。 这可以使用Ubidots Web界面完成。

有必要创建两个变量:

  1. 一个保存温度值的
  2. 保持湿度值的一种。

在我们必须创建Ubidots项目之前:

ubidots_project_config

配置项目后,我们可以定义变量:

ubidots_variable

我们对湿度变量执行相同的步骤,然后有了仪表板:

ubidots_dashboard

如您所见,这两个变量有两个我们先前在创建JSON请求时使用的ID。

这些变量的ID在Arduino草图中使用:

...
// Ubidots Data
String tempVarId = "5656116076254219f78cad12";
String humVarId = "565611777625421b5e91a1ef";
...

最后一步是创建令牌:

ubidots_authentication_token

一旦配置了变量,我们就可以使用它们来发送数据。

运行草图,Arduino开始向Ubidots发送数据。 Ubidots提供的一项功能是可以轻松创建仪表盘的功能。 例如,对于温度,我们可以创建一个简单的仪表板来显示Arduino和DHT11发送的数据:

ubidots_humidity_chart

ubidots_temperature_chart

在真正的Arduino板下方,通过以太网屏蔽连接到DHT11。

arduino_dht11_sketch-min

在物联网项目的第一部分中,您学习了如何使用Ubidots和以太网屏蔽将Arduino连接到云。 Arduino读取DHT11数据值并将其发送给Ubidots。

在下一篇文章中,您将了解如何从Android智能手机读取这些值以及如何在智能手机上创建图表。

翻译自: https://www.javacodegeeks.com/2015/12/internet-things-project-connect-arduino-ubidots-android-part-1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iphone黑屏转圈_iphone XR被曝新BUG,众多用户中招,无规律黑屏假死

进入今年一月份以来&#xff0c;苹果放宽了对iphone的定价&#xff0c;所以各大电商都对多款iphone XR进行了上千元的降价。这也让iphone XR瞬间取代了华为MATE 20 PRO成为新的“真香机”。而随着iphone XR的用户越来越多&#xff0c;这款手机也再次爆出新的BUG。根据网友的反馈…

怎么邀请人加入组队_糖豆人:终极淘汰赛怎么玩?玩法技巧介绍

这几天玩糖豆人&#xff1a;终极淘汰赛的玩家都在问&#xff0c;这个游戏模式怎么玩&#xff0c;糖豆人终极淘汰赛是一款60人同台竞争的卡通吃鸡游戏。想要获胜还是有一定难度的&#xff0c;战神游戏加速器为大家带来这款游戏的基础操作和具体玩法&#xff0c;超低延迟极速体验…

2017年4月21号课堂笔记

2017年4月21号 星期五 空气质量&#xff1a;良 内容&#xff1a;XML&#xff0c;Dom4j解析XML文件&#xff0c;单例 一、XML 老师代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!-- XML的注释xml是什么&#xff1f; 可扩展的标记语言…

服务器物理内存总是九十几,服务器物理内存使用率90以上

服务器物理内存使用率90以上 内容精选换一换开启弹性云服务器的虚拟内存后&#xff0c;会导致硬盘I/O性能下降&#xff0c;因此&#xff0c;平台提供的Windows弹性云服务器默认未配置虚拟内存。如果弹性云服务器内存不足&#xff0c;建议通过“变更规格”操作来扩大内存。如果业…

比较二进制_浮点数比较的精度问题

引言 先举个例子&#xff1a;#include <stdio.h>int main() {float a 0.1;float b 0.2;float c a b;if(c 0.3){printf("c 0.3n");}else{printf("0.1 0.2 ! 0.3n");}return 0; }如果变量a,b换0.75&#xff0c;0.5可以看出运行出c 1.25,说明浮…

open表和closed表_excel工作表合并,多文件数据一键合成

工作中 遇到十几个甚至几十个单独工作excel文件要合并成一个怎么办&#xff0c;难道还按照老办法复制工作表?几个还好说&#xff0c;遇到十几个几十个文件&#xff0c;手速不够快的宝宝心里苦。那么&#xff0c;有没有什么日常偷懒神技&#xff0c;一键合成多个excel文件&…

濡沫江湖一直显示获取服务器地址,濡沫江湖采集点坐标大全

濡沫江湖每个地图都有采集点&#xff0c;那么濡沫江湖采集点具体坐标是多少&#xff1f;下面9k9k小编就为大家整理带来濡沫江湖采集点坐标大全&#xff1a;小渔村(35,4)采集铜矿石、碎铁块小渔村(38&#xff0c;16)采集药草、杂草小渔村(14,35)采集亚麻、杂草小渔村(13,12)采集…

java第五次作业

《Java技术》第五次作业 &#xff08;一&#xff09;学习总结 1.在上周完成的思维导图基础上&#xff0c;补充本周的学习内容&#xff0c;对Java面向对象编程的知识点做一个全面的总结。 2.汽车租赁公司&#xff0c;出租汽车种类有客车、货车和皮卡三种&#xff0c;每辆汽车除了…

mysqld已删除但仍占用空间的_Windows 10删除备份文件方法

Windows具有许多内置备份功能&#xff0c;包括卷影副本&#xff0c;系统还原点和整个系统备份。尽管它们既不是最可靠也不是功能最丰富的备份解决方案&#xff0c;但它们确实提供了一种备份系统和个人数据的不错的方式。Windows内置备份工具的问题之一是它们几乎过于安静和方便…

服务器维修天长,台达精密空调服务天长市供电局

【IT168 厂商动态】项目背景&#xff1a;天长市供电局率属于安徽省供电局&#xff0c;主要负责其辖区内的电力生产与供应。本项目包括三个机房&#xff1a;南、北数据中心机房以及资料中心;台达风冷型精密空调为上述机房的IT设备运行提供7*24小时恒温恒湿高洁净度的运行环境&am…

终端主题_泛终端全渠道新模式中国移动5G泛智能终端渠道生态合作峰会开幕

11月20日&#xff0c;以“泛终端 全渠道 新业态 新模式”为主题的中国移动5G泛智能终端渠道生态合作峰会在广州成功举办。作为2020中国移动全球合作伙伴大会期间举办的重要主题峰会之一&#xff0c;该峰会吸引了超过100家终端、渠道等产业链合作伙伴&#xff0c;会议通过咪咕直…

jq中查找上级_【节能学院】电能管理系统在福州三岐小学项目中的设计及应用...

1项目概述该项目总投资约2.6亿元&#xff0c;建筑规模为4.8万㎡&#xff0c;建设地点在南屿镇葛岐村、晓岐村。项目设有教学楼A区、教学楼B区、教学楼C区、综合楼一区、综合楼二区、室内篮球场、室内游泳馆、足球场等。此电能管理系统为Acrel-3000V7.1系统&#xff0c;在结构设…

[HTML5amp;CSS3]Transform具体解释

Transform字面上就是变形&#xff0c;改变的意思。在CSS3中transform主要包含以下几种&#xff1a;旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。以下我们一起来看看CSS3中transform的旋转rotate、扭曲skew、缩放scale和移动translate详细怎样实现。老样…

比亚迪定薪后多久给offer_比亚迪车主给爱车做四门隔音,没想到两年后肠子都悔青...

许多车主都有过这样的经历&#xff1a;总感觉爱车的静谧性不够如意&#xff0c;为了提升隔音效果改善驾乘质感&#xff0c;往往产生给爱车做一个全车隔音的冲动。只不过冲动归冲动&#xff0c;在着手对车子进行隔音改造工程前&#xff0c;一定要选择靠谱的隔音材料&#xff0c;…

Centos开机自己主动挂载windows中的ntfs磁盘

装了windows和centos双系统后&#xff0c;发如今centos中无法进入windows中的磁盘&#xff0c;更不要说查看磁盘里的文件了&#xff01; 原来默认情况下。centos不支持Widows NTFS硬盘分区读写&#xff0c;要想把NTFS格式的磁盘挂载到CentOS 以下须要安装第三方软件ntfs-3g。…

人工智能方向毕业设计_毕业季|广州美术学院视觉设计学院毕业设计展

视觉艺术设计学院成立于2010年9月&#xff0c;由广州美术学院最传统的装潢系和新兴的数码艺术设计系联合组建而成&#xff0c;2018年11月&#xff0c;艺术与科技专业并入学院。学院现拥有视觉传达设计、数字媒体艺术设计、动画、艺术与科技4个专业。视觉文化设计工作室 视觉文化…

江西住建云实名认证怎么弄_王者荣耀无限时间怎么弄 2020年无限时间账号

腾讯游戏都是有健康系统的&#xff0c;王者荣耀自然也不例外&#xff0c;王者还是第一批出健康系统的游戏&#xff0c;今年健康系统同时有时间限制和充值限制&#xff0c;未成年玩家一天最多只能玩1.5个小时&#xff0c;游戏现在有传闻无限时间账号&#xff0c;那么无限时间怎么…

coherence安装_在Oracle Coherence中分发Spring Bean

coherence安装本文展示了如何通过使用Oracle Coherence中的EntryProcessor和可移植对象格式&#xff08;POF&#xff09;功能来分发Spring Bean。 Coherence通过EntryProcessor API支持无锁编程模型。 此功能通过减少网络访问并在条目上执行隐式的低级锁定来提高系统性能。 此隐…

spring 的aop操作

转载于:https://www.cnblogs.com/hwgok/p/6760663.html

excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接

如果将两个文本连接起来&#xff0c;通常第一反应用连接符号"&"。使用连接符&连接文本字符记得曾经有记者采访刘强东问奶茶妹妹漂不漂亮&#xff0c;他竟然回答看不出来好赖…当时真觉得这家伙身在福中不知福&#xff0c;饱汉不知饿汉饥。果然之后还闹出一些…