什么是Arduino

什么是Arduino,第1张

Arduino是一种基于开源硬件和软件的电子开发平台,它包括一个基于C/C++编程语言的开发环境和各种模块化的硬件模块。Arduino的核心是一个基于Atmel AVR微控制器的电路板,这个电路板上包含了数字和模拟输入/输出引脚、USB接口、电源接口等。用户可以通过编写Arduino程序,控制这些硬件模块的运作,实现各种功能,如LED闪烁、电机驱动、温度监测、声音识别等等。Arduino的优点在于它简单易用、开源、灵活、价格低廉,适合初学者和专业开发者使用,广泛应用于教育、创客、艺术等领域。

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

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬体(各种型号的Arduino板)和软体(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬体部分是可以用来做电路连线的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程式开发环境。你只要在IDE中编写程式代码,将程式上传到Arduino电路板后,程式便会告诉Arduino电路板要做些什么了。

Arduino能通过各种各样的感测器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的程式语言来编写程式,编译成二进制档案,烧录进微控制器。对Arduino的编程是通过 Arduino程式语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软体,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

基本介绍 外文名 :Arduino 创始人 :Massimo Banzi 分类 :计算机技术->微型计算机 主控晶片 :AVR单片机、ARM晶片 开发环境 :Arduino IDE 程式语言 :C/C++或汇编语言 发展历程,平台特点,功能,硬体组成,主机板,扩展板,著作权与付费, 发展历程 Massimo Banzi之前是义大利Ivrea一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi跟David Cuartielles讨论了这个问题。 David Cuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为电路板设计程式语言。两天以后,David Mellis就写出了程式码。又过了三天,电路板就完工了。Massimo Banzi喜欢去一家名叫di Re Arduino的酒吧,该酒吧是以1000年前义大利国王Arduin的名字命名的。为了纪念这个地方,他将这块电路板命名为Arduino。 随后Banzi、Cuartielles和Mellis把设计图放到了网上。著作权法可以监管开源软体,却很难用在硬体上,为了保持设计的开放源码理念,他们决定采用Creative Commons(CC)的授权方式公开硬体设计图。在这样的授权下.任何人都可以生产电路板的复制品,甚至还能重新设计和销售原设计的复制品。人们不需要支付任何费用,甚至不用取得Arduino团队的许可。然而,如果重新发布了引用设计,就必须声明原始Arduino团队的贡献。如果修改了电路板,则最新设计必须使用相同或类似的Creative Commons(CC)的授权方式,以保证新版本的Arduino电路板也会一样是自由和开放的。唯一被保留的只有Arduino这个名字,它被注册成了商标,在没有官方授权的情况下不能使用它。 Arduino发展至今,已经有了多种型号及众多衍生控制器推出。 平台特点 跨平台 Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流作业系统上运行,而其他的大多数控制器只能在Windows上开发。 简单清晰 Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 avr-g库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。 开放性 Arduino的硬体原理图、电路图、IDE软体及核心库档案都是开源的,在开源协定范围内里可以任意修改原始设计及相应代码。 发展迅速 Arduino不仅仅是全球最流行的开源硬体,也是一个优秀的硬体开发平台,更是硬体开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。 因为Arduino的种种优势,越来越多的专业硬体开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软体开发者使用Arduino进入硬体、物联网等开发领域;大学里,自动化、软体,甚至艺术专业,也纷纷开展了Arduino相关课程。 功能 可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软体结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者感测器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软体进行互动,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软体。 Arduino的IDE界面基于开放原始码,可以免费下载使用,开发出更多令人惊艳的互动作品。 硬体组成 主机板 Arduino的型号有很多,如 Arduino Uno Arduino Nano Arduino Nano Arduino LilyPad Arduino Mega 2560 Arduino Ether Arduino Due Arduino Leonardo ArduinoYún 扩展板 Arduino的扩展板很多,如 Arduino GSM Shield Arduino GSM Shield Front Arduino Ether Shield Arduino Ether Shield Arduino WiFi Shield Arduino Wireless SD Shield Arduino USB Host Shield Arduino Motor Shield Arduino Wireless Proto Shield Arduino Proto Shield 著作权与付费 为了保持设计的开放源码理念,因为著作权法可以监管开源软体,却很难用在硬体上,Arduino决定采用Creative Commons许可。 Creative Commons(CC)是为保护开放著作权行为而出现的类似GPL的一种许可(license)。在Creative Commons许可下,任何人都被允许生产电路板的复制品,还能重新设计,甚至销售原设计的复制品。你不需要付版税,甚至不用取得Arduino团队的许可。然而,如果你重新发布了引用设计,你必须说明原始Arduino团队的贡献。如果你调整或改动了电路板,你的最新设计必须使用相同或类似的 Creative Commons许可,以保证新版本的Arduino电路板也会一样的自由和开放。唯一被保留的只有Arduino这个名字。它被注册成了商标。如果有人想用这个名字卖电路板,那他们必须付一点商标费用给Arduino的核心开发团队成员。

1、由于scratch软件和arduino连接需要使用s4A软件,在浏览器中搜索S4A,然后找到官网,下载软件。点击我接受,下一步。

2、在浏览中选择需要安装的盘的位置,然后选中要安装在哪个文件夹中,点击安装,直到开始安装程序。

3、安装完成之后打开软件,如下图所示,有scratch软件所有的模块信息,右侧又增加了arduino单片机的显示信息。为了要连接arduino需要先关闭软件。

4、打开arduino单片机程序编写界面,点击打开选项,找到arduino连接scratch的固件程序,连接arduino单片机,配置端口,下载程序到单片机。

5、下载成功后再打开s4A软件,显示你当前连接的单片机的端口状态,以及数据信息。说明单片机和scratch连接成功。

6、试着连接电路,写个简单的小程序来运行试试。首先在界面,拖动需要的各个模块,按照积木形式排成程序。如图所示。然后将连接好的电路,单片机连接电脑,连接scratch软件。

7、点击软件右侧小绿旗开始运行程序。可以看到通过scratch图形化界面编写的小程序,控制单片机上的端口,执行让灯亮灭的 *** 作,至此实验完成。

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

创建产品

创建新设备

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

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

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

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

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

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

计算方法: >

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存