ARDUINO获取的数据如何传到IOT平台

ARDUINO获取的数据如何传到IOT平台,第1张

Arduino 物联网的应用有很多实现方式,介绍一种简单的利用yeelink平台的方法。
1 先到yeelinknet根据注册要求,弄到属于你的API KEY(这个key负责把你和别人上传的数据区别开)。
2建立传感器的ID,并取得你的传感器所对应的URL地址。
3 把你的arduino接上传感器,并在获得传感器数据后,增加这样两行
serialprint("yeelink:");
serialprintln(传感器读数);
4打开Serial2yeelink工具,填入arduino的波特率,传感器url,api-key,点击connect。

注意,这种方法实际上是通过电脑做了中转,Serial2yeelink 把接收到的数据发送到了物联网。

下,LED熄灭)
一、成果展示
在这里插入描述
二、实现方法与解析
首先,让我们按图连接电路:在这里插入描述
代码如下
OK,that’s over
打开CSDN,阅读体验更佳
Arduino 用两个按键分别控制两个LED灯点亮_ling3ye的博客_用
按一下,亮,再按一下灭,走起 先说明一下4脚按键开关的工作原理 示例效果 BOM表 Arduino Uno 1 LED 2(各什么颜色你喜欢就好) 4脚按键开关 2 面包板 1 跳线若干 接线图 程序源码 本程序能分别通过按键控制LED灯的亮
继续访问
热门推荐 学习总结——按下按键灯亮,再次按下按键,灯灭
按键控制灯的亮灭1 主要实现按键控制灯的亮灭,按键按下,灯亮,再次按下,灯灭,主要对实现的逻辑进行控制,逻辑清晰,很简单,实现的方法有两种,方法1:将按键按下的值赋值给一个变量,变量除以2的值的是基数或者偶数来确定灯亮还是灯灭,程序中设置的是变量的值除以2为0时,灯亮;变量的值除以2为1时,灯灭;程序如下:int keypin=0; int ledpin=4; int val; int i;void
继续访问
arduino按钮控制led,按一次亮,再按灭
//按一下亮,再按不亮 int ledpin=11;//灯接口 int anniupin=7;//按钮接口 boolean change=false; void setup() { Serialbegin(9600);//可以不用加 pinMode(ledpin,OUTPUT);//灯输出端口 pinMode(anniupin,INPUT);//按钮输入端口 } void loop() { while(digitalRead(anniupin)==HIGH)// { delay
继续访问
Button2:Arduino库,简化了按钮的使用。 它允许您使用回调函数来跟踪单,双,三和长点击。 它还可以消除抖动
Button2:Arduino库,简化了按钮的使用。 它允许您使用回调函数来跟踪单,双,三和长点击。 它还可以消除抖动
Arduino实现按一下开灯,按一下关灯
arduino按键控制LED 灯(按一下切换一次状态)
物联网实验一 2021324 arduino按键控制LED 灯(按一下切换一次状态) #define led 13 //定义led灯为13引脚 #define button 3 //定义button键盘为3引脚 bool b1=false; int i; void keyScan() { if(digitalRead(button)==HIGH) { delay(5); if(digitalRead(button)==HIGH) { b1=!b1; while(digitalRead(butt
继续访问
Arduino 按一下按键灯全亮,再按一下灯全不亮 + Arduino模拟电路图
Arduino 按一下按键灯全亮,再按一下灯全不亮 + Arduino电路图 在 《Arduino 按一下按键灯全亮,再按一下灯全不亮》中 作者只提供了相应的代码 为了方便初学者更深刻的了解代码的运行原理 这里附上相应的Arduino模拟电路图。 这里为初学者提供相应的Arduino模拟电路图 附原文连接:>Arduino stm32没有software,因为它是一款基于ARM Cortex-M3微控制器的开源硬件平台,它主要是一种硬件,用于构建物联网应用,经由编程,它可以控制各种设备,如传感器,电机,系统,以及外设等。Arduino stm32不提供任何软件,用户可以使用C ++编程语言来编写自己的代码,以便控制硬件。此外,用户还可以使用Arduino IDE来下载,安装和使用其他编程语言,如Python,JavaScript,C#等,以实现其功能。

如果你只能在本地控制一个智能设备,那么它并不能被称之为智能。那有什么用呢你需要的是远程控制设备的功能。而这正是远程配置发挥作用的地方。
远程配置能够让开发人员和用户触发行动,进而在任何地点控制他们的设备。设备状态解析通过网络(在本案例中为PubNub)传送的信号,并根据信号指令永久地改变装置的状态(如灯泡从关到开)。
A 远程配置的消息传递层
在本教程中,我们将展示如何在[基于Atmel的]Arduino联网设备上实现远程配置。在开发的过程中,我们遇到了两个问题。
1 网设备的状态(如在线/离线状态)
2 连接到云的设备的状态
通过使用Presence API,第一个问题迎刃而解,因此,我们将着重关注第二个问题。我们将采用存储和回放的方法,存储并检索用于家庭自动化解决方案的联网设备的状态。如此,我们就能够远程控制智能设备,实时发送信号。
JSON对象就是一个典型的示例,如下所示:
{"状态":[
{"通电":"真"},
{"咖啡量: 一半"},
{"温度":""}
]}
远程配置的整体流程
● 注册一个免费的PubNub账户。如此便可获得独特的发表/订阅键,用于激活PubNub。这些键位于开发人员控制台。
● 利用Arduino通过PubNub物联网网络发布消息,控制智能设备。
● 通过web浏览器,访问这些消息。
了解教程!
步骤一:连接PubNub
例如,控制冰箱的温度。如下参数可存储为设备的状态,如查看冰箱门的开启状态、温度、功耗,甚至还有冰箱的容积。
在Arduino IDE上运行,并查看步骤二中关于连接PubNub至Arduino的教程,获得更多详情。
步骤二:在Arduino中创建JSON对象
为在Arduino中创建json对象,我们需要使用JSONh库。创建上文所述的JSON对象可参照如下步骤:
aJsonObject msg = aJsoncreateObject();
aJsonaddStringToObject(msg, "姓名", "Arduino");
aJsonaddNumberToObject(msg, "外部温度", 34);
步骤三:向设备发送信号
除此之外,只需再利用Arduino IDE发布消息即可。要做到这一点,可参照如下代码:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char pubkey[] = "demo";
char subkey[] = "demo";
char channel[] = "设备状态";

//setup
void setup()
{
Serialbegin(9600);
Serialprintln("串口设置");

while (!Ethernetbegin(mac)) {
Serialprintln("以太网设置错误");
delay(1000);
}
Serialprintln("以太网设置");

PubNubbegin(pubkey, subkey);
Serialprintln("PubNub 设置");
}
// establishing internet connection to the Arduino and publishing the state建立Arduino网络连接并发布状态
void loop()
{
Ethernetmaintain();
EthernetClient client;
client = PubNubpublish(channel, msg);
if (!client) {
Serialprintln("发布错误");
} else {
client->stop();
}
delay(5000);
}
另外,如果只能在web浏览器上查看设备状态怎么办在浏览器控制台中粘贴如下代码,并查看状态填写。
// 发布和订阅键初始化

var pubnub = PUBNUBinit({
publish_key: 'PUBLISH_KEY_HERE',
subscribe_key: 'SUBSCRIBE_KEY_HERE',
uuid: 'devices_state设备状态'
});

// 通过历史记录检索已经发布到该渠道的消息。

pubnubhistory({
channel: '历史记录_渠道',
callback: function(m){consolelog(JSONstringify(m))},
});
就是这样!还有一点:PubNub并不限制你发布或通过历史记录检索消息的数量。你可以利用多个Arduinos进行尝试,并远程查看其状态。
远程配置的用例数之不尽,从农业到运输和物流,再到家庭自动化。它使你能够在地球上的任何地方完全控制你的智能设备,功能异常强大。

arduino机器人属于什么行业,机器人及智能装备属于物联网产业。 在供给侧和需求侧的双重推动下,物联网进入以基础性行业和规模消费为代表的第三次发展浪潮,5G、低功耗广域网等基础设施加速构建。 数以万亿计的新设备将接入网络并产生海量数据,人工智能、边缘计算、区块链等新技术加速与物联网结合,应用热点迭起,物联网迎来跨界融合、集成创新和规模化发展的新阶段。 随着物联网技术创新、产业发展、应用示范等一批项目的逐步落实,机器人、智能装备、智慧城市等领域的物联网应用已经初步具备了规模化的基础。

有很多通信模块只有TCP功能,没有MQTT功能,比如WIFI,W5500等模块,还有一些NBIOT模块,但是又想连接阿里云物联网平台,官方提供了 *** 作系统,需要自己移植,很麻烦,比较难看得懂。就在想有没有一些简单一定的方法。
心想MQTT是基于TCP的,能否使用TCP转MQTT?因此就想使用TCP协议然后转MQTT协议连接阿里云物联网平台,经过试验证明是可以的。
首先我们先分析一下如何登陆接入Onenet平台。
先从它数据格式开始分析。首先我们要从后台取出三个信息,我们以这个为例。
我们把产品ID,设备名称,设备秘钥,简称三要素 (具体是什么看你自己的设备)
其实阿里云物联网平台的MQTT协议用的就是标准的,不过它加入了自己的认证方式。
MQTT协议需要上传四个参数,报活时间,clientID,用户名,密码。
那么阿里云的就在clientID,用户名,密码做了手脚。
clientID比较长,按照一定的格式
用户名:设备名和秘钥组成
密码:使用了加密串进行了加密,有sha1或者MD5加密方式
下面我们来介绍一下
MQTT接入都是发十六进制的数据。
么我们发送的时候就是这样子的一串数据
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六进制解释
数据长度:0x74
协议数据长度 0x00 0x04
协议类型: 0x4d 0x51 0x54 0x54
协议数据: 0x04 0xC0
keepAlive数据:0078
ClientID长度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用户名:0009
用户名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密码长度:0028
密码: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36复制代码上面的就是连接服务器的连接包
下面呢,我们来做个发布包(上传数据到服务器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六进制数据解释
数据头:0x30
数据长度:0x1D
TopicName数据长度:0009
TopicName数据内容:2f7379732f706f7374
主体json数据: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。

这里我们使用了一个库: PubSubClient

创建产品

创建新设备

(1) 产品ID, 用户ID,和登录key

(2) 设备名称, ID和 设备key

OneNet MQTTS用携带token的方式进行鉴权

访问者(可以为应用或者设备)固化访问密钥于软件中,在需要进行服务访问时,通过密钥计算临时token,通过临时token进行服务访问认证

访问者首先通过访问管理者获取临时访问token,访问管理者可根据需要自定义该token的访问有效期(即过期时间),访问者获取该token后方才能访问OneNET

访问管理者直接将密钥授权给访问者(例如,直接为设备烧写key),访问者通过密钥生成token进行访问

计算方法: >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13044262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存