如何使用 NB-Iot + Arduino 通过MQTT协议上传数据至阿里云平台?

如何使用 NB-Iot + Arduino 通过MQTT协议上传数据至阿里云平台?,第1张

有很多通信模块只有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复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。

下,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模拟电路图 附原文连接:>在Maker Faire现场展台上展示的开源硬件平台可见一斑:基于Ardurino开发的创意产品占绝大部分,由此可见,由Ardurino构建的创客生态系统已蔚然成风,各类基于Ardurino的软硬件开发平台、技术资料、配件等已经非常完善。
而对其他开源硬件平台而言,使用者偏少。无外乎有以下几大原因:第一,Ardurino是创客的“开山鼻祖”,江湖老大的地位不可动摇;第二,Ardurino功能简单,对初学者而言上手更快;第三,关于Ardurino的所有配套资料、使用群体最庞大,志同道合者居多。
事实上,当使用Ardurino基本的控制功能达不到创客们的更高级、更先进的要求(如通讯、互联、互动等)时,创客们会另寻出路,会选择采用基于ARM架构或X86架构的开源硬件平台。举几个简单的例子,仅供参考。
Ardurino:适用于入门级新手创客。开发工具有Arduino IDE,具有丰富的Arduino驱动代码。对于入门级创客来说,大家更多的是看中Arduino庞大的网络资源,各种叠加扩展板和传感器板。
AVR单片机:Arduino的核心芯片用的就是Atmel的AVR 8位单片机,可以说Atmel是Arduino的鼻祖。
Atmel Xplained / Xplained Pro 开发板:作为低成本单片机,Atmel Xplained / Xplained Pro 开发板有很多型号可供大家选择,如:8位或32位AVR单片机、ARM Cortex-M0+ 或 Cortex-M4 或 Cortex-M4F、ARM Cortex-M0+ 加无线 SoC、ARM Cortex-A5 微处理器等。基于ARM Cortex-M0+ 架构的开发平台,低外围资源,但同时具备低功耗,二次开发简易,拥有32位ARM的计算性能等优势。Xplained Pro开发板同样具有可扩展性,可以使用标准排针在开发板侧面连接扩展板。
树莓派RaspberryPi:相比Arduino,树莓派提供更高性能的处理能力,可以轻松实现I/O控制、高速数据通信、视频处理、实时运算等,创客可以在Debian Linux环境下编程,实现各种过去需要在PC环境实现的功能。树莓派是初级创客向高阶创客演进的理想平台。目前全球用户超过300万,每年以200万的速度递增。
CooCox开发工具:用于ARM Cortex-M设备的开发,CoIDE具有强大的工程管理和调试功能,集成了一个开放和分享的组件代码平台,支持Arduino编程语言,Arduino驱动代码可平滑移植到CoIDE,基本不需改动代码,适用于有进阶需求的创客。
MSP430 LaunchPad:LaunchPad是TI专门推出的一系列开发平台,其特点是使用简单:下载使用一体,无需额外硬件。与此同时,来自美国的工程师还向创客们演示直接在电路板上方加上“Booster Pack”外围板(相当于扩展板),去完成不同外设的二次开发。有用过Launchpad开发办的工程师评价到:将Arduino的程序移植到Launchpad上几乎是一件非常简单的事情,有时候甚至不需要任何的更改,只要对端口进行相应的调整即可。总体来说,Launchpad的性价比是非常高的,低功耗,低价格,性能也有保障,可以说是一个Arduino玩家的理想替代选择。LaunchPad非常适合学习和低资源需求的应用。
Galileo(伽利略)开发板 & Edison平台:英特尔嵌入式事业部产品经理王景佳指出,伽利略开发板是基于英特尔架构全新兼容Arduino(接口、开发环境均可与Arduino兼容)的可开发电路板系列的首款产品。此次,Intel展位上来自北京高校的大学生们展示着基于伽利略开发板开发的各种硬件创作成果。基于Quark处理器的伽利略开发板在本次制汇节上可谓大赚眼球。如果说Arduino是创客运动的导火索,那么Edison则是创客运动的新里程。尽管本次没有展出Edison实物,但创客们还是很期待Intel为大家带来更多惊喜。
与此同时,适合创客的其他高级平台还包括: 基于Freescale iMX6 SOLO (1GHz Cortex A9) RIoT Board, 基于Ti Sittara Cortex A8 BeagleBone Black, 基于Atmel Cortex A5 的SAMA5D3-Xplained等等,他们提供更强大的计算性能和更灵活的应用能力。
无一例外,以上谈及的开源硬件均是与Ardurino兼容的智能硬件平台。事实上,从这里我们也能看到Ardurino在创客运动中不可动摇的地位。
事实上,创客们需要的是一个开放、分享的氛围。谁能为他们营造这种氛围,谁才能占据创客硬件市场的领导地位,Ardurino就做到了这一点。对于其他硬件平台而言,打造一个“类Ardurino”经营模式的生态系统是有很多问题亟待解决的,譬如,如何引起创客对新的软硬件平台的关注并选择使用;如何完善软硬件支持;创客们在实现产品创作时是否能拥有跟Ardurino类似的开放、分享平台等等。
不过有挑战才有创新,这是值得赞颂的,因为这才是“创客精神”。对于创客们而言,越多开源硬件平台,他们的选择就越多,创客的群体才会日益壮大。创客文化的精髓——“开放”、“分享”,才会传遍大江南北!创客运动来袭,连接你我他,你准备好了吗?

项目需要的硬件如下:Arduino Uno Ethernet Shield LED灯 2个 电阻 2个 面包板(可选) 连接导线 路由器一个项目要的连接管脚如下:LED 1 --> pin 6 to ground LED 2 --> pin 7 to ground项目需要的软件如下:Eclipse IDE Arduino IDE 1xxLED 1 --> pin 6 to ground LED 2 --> pin 7 to ground项目需要的软件如下:Eclipse IDE Arduino IDE 1xxStep 1: 在 Arduino上编程如下:#include "etherShieldh"#include "ETHER_28J60h"int led2 = 7;int led1 = 6;static uint8_t mac[6] = {0xAA, 0xBB, 0xCC, 0xDD, 0xBB, 0xAA}; // this just needs to be unique for your network, // so unless you have more than one of these boards // connected, you should be fine with this value static uint8_t ip[4] = {192, 168, 0, 15}; // the IP address for your board Check your home hub // to find an IP address not in use and pick that // this or 100015 are likely formats for an address // that will workstatic uint16_t port = 80; // Use port 80 - the standard for >arduino机器人属于什么行业,机器人及智能装备属于物联网产业。 在供给侧和需求侧的双重推动下,物联网进入以基础性行业和规模消费为代表的第三次发展浪潮,5G、低功耗广域网等基础设施加速构建。 数以万亿计的新设备将接入网络并产生海量数据,人工智能、边缘计算、区块链等新技术加速与物联网结合,应用热点迭起,物联网迎来跨界融合、集成创新和规模化发展的新阶段。 随着物联网技术创新、产业发展、应用示范等一批项目的逐步落实,机器人、智能装备、智慧城市等领域的物联网应用已经初步具备了规模化的基础。

arduino的意义只是做实验,其实际意义是帮助刚好的理解开发过程。

arduino是一款便捷灵活方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE)。

arduino注意:

Arduino的开发性,支持源码下载,支持的平台有 Windows、MAC OS X、Linux。Windows 平台上面 Arduino IDE下载后为zip包,直接解压就可以使用。一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O介面版,具有类似Java 、C的Processing/Wiring开发环境。


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

原文地址: https://outofmemory.cn/dianzi/12958850.html

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

发表评论

登录后才能评论

评论列表(0条)

保存