W5500通过MQTT连接阿里云平台

博客
1、简介 1.1 开发环境与连接平台 本文主要介绍W5500如何通过MQTT协议将设备连接到阿里云IoT,并通过MQTT协议实现通信。MQTT协议是基于TCP的协议,所以我们只需要在单片机端实现TCP客户端代码之后就很容易移植MQTT了, +W5500实现TCP客户端的代码我们以前已经实现过,程序下载:[wpdm_package template='link-template-default-wdc' id='16045'] 软件环境:Windows 硬件环境:STM32F103+W5500 开发工具:Keil uVision5 调试工具:Wireshark、串口调试助手 连接平台:阿里云-华东2节点(https://www.aliyun.com) 1.2 MQTT简介: MQTT官网地址:(http://mqtt.org/) 1.2.1 MQTT协议特点 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。 MQTT协议当前版本为,2014年发布的MQTT v3.1.1。除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于百TCP/IP网络,如:ZigBee。 MQTT协议运行在TCP/IP或其他网络协议,提供有序、无损、双向连接。其特点包括: 使用的发布/订阅消息模式,它提供了一对多消息分发,以实现与应用程序的解耦。 对负载内容屏蔽的消息传输机制。 对传输消息有三种服务质量(QoS): 最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1 至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1 只有一次,确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别 数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量 通知机制,异常中断时通知传输双方 MQTT协议原理及实现方式 实现MQTT协议需要:客户端和服务器端 MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。 MQTT传输的消息分为:主题(Topic)和消息的内容(payload)两部分 Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload) payload,可以理解为消息的内容,是指订阅者具体要使用的内容 连接 阿里云连接步骤: 以aliyun账号直接进入IoT控制台,如果还没有开通阿里云物联网套件服务,则 申请开通 接入引导 (1)、创建产品 (2)、添加设备 (3)、获取设备的Topic 创建产品 初步进入控制台后,需要创建产品。点击创建产品。产品相当于某一类设备的集合,用户可以根据产品管理其设备等。 产品名称:对产品命名,例如可以填写产品型号。产品名称在账号内保持唯一。 productKey:阿里云IoT为产品颁发的全局唯一标识符 添加设备 创建完产品之后,可以为该产品添加设备。进入产品管理页面下的设备管理,点击添加设备。 说明:用户可以自定义设备名称(即deviceName),这个名称即可作为设备唯一标识符,用户可以基于该设备名称与IoT Hub进行通信,需要指出的是,用户需要保证deviceName产品内唯一。 设备证书:添加设备之后,物联网套件为设备颁发的唯一标识符,设备证书用于设备认证以及设备通信,详细的请参考设备接入文档。 deviceName:用户自定义设备唯一标识符,用于设备认证以及设备通信,用户保证产品维度内唯一。 deviceSecret:物联网套件为设备颁发的设备秘钥,用于认证加密,与deviceName或者deviceId成对出现。 获取设备的Topic 添加设备之后,可以获取设备的Topic。点击Topic列表 说明:创建产品之后,物联网套件都会为产品默认定义三个Topic类。那么,在添加设备之后,每个设备都会默认有三个Topic,即图中所示。如果想要增加、修改、删除Topic,请到消息通信重新定义Topic类。 设备可以基于Topic列表中的Topic进行Pub/Sub通信,例如列表中有/1000118502/test9/update,且设备拥有的权限是发布,这就意味着设备可以往这个Topic发布消息;同样,列表中/1000118502/test9/get,权限是订阅,这就意味着设备可以从这个Topic订阅消息。 设备接入 获得productKey、设备证书以及设备的Topic这些参数,就可以基于aliyun IoT device SDK for C将设备连接上IoT Hub并进行通信,具体请参考《MQTT配置》部分 MQTT移植步骤: MQTT代码源码下载地址:(http://www.eclipse.org/paho/) MQTT的移植非常简单,将C/C++ MQTT Embedded clients的代码添加到工程中,然后我们只需要再次封装4个函数即可: int transport_sendPacketBuffer(unsigned char* buf, int buflen); 通过网络以TCP的方式发送数据; int transport_getdata(unsigned char* buf, int count); TCP方式从服务器端读取数据,该函数目前属于阻塞函数; int transport_open(void); 打开一个网络接口,其实就是和服务器建立一个TCP连接; int transport_close(void); 关闭网络接口。 如果已经移植好了socket方式的TCP客户端的程序,那么这几个函数的封装也是非常简单的,程序代码如下所示: /** * @brief  通过TCP方式发送数据到TCP服务器 * @param  buf数据首地址 * @param  buflen数据长度 * @retval 小于0表示发送失败 */ /*订阅消息*/ int Subscribe_sendPacketBuffer(unsigned char* buf, int buflen) { return send(SOCK_TCPS,buf,buflen); } /*发布消息*/ int Published_sendPacketBuffer(unsigned char* buf, int buflen) { return send(SOCK_TCPC,buf,buflen); }…
Read More
W5500检测温湿度上传到oneNET平台

W5500检测温湿度上传到oneNET平台

博客, 应用, 物聯網
前言 关于本文内容的一些名词解释 1、产品 产品是指用户手上的真实设备在OneNET上对应的虚拟名称,是用户在OneNET上最上层的云端资源。 2、产品ID 产品ID是指由OneNET后台为您的某一款真实产品分配的一个独立的ID号,如果您旗下的某一款产品有两款不同的系列(如 iPhone 7 / iPhone 7 Plus),那么建议创建两款产品来分别获得两个产品ID。 3、APIKey 用于对OneNET进行操作的鉴权以及权限控制,在使用OneNET Restful API时,HTTP请求消息的头域必须携带该APIKey字段,OneNET会依据APIKey字段判别该用户是否具有对应操作的权限。 APIKey的权限模型是通过设定对云端资源是否可以增加、查看、修改、删除等方式来描述的,最低的权限级别可细化到对某个数据流的访问权限。APIKey分为两种: ①产品APIKey: 在创建产品时,OneNET会为该产品生成一个默认的APIKey,这个APIKey是Masterkey,具有最大权限,能够对本产品下所有资源进行访问。 ②设备APIKey: 用户为某一产品下的某一台设备创建的Key称为设备APIKey,设备APIKey的作用权限只限于本设备的资源,而不能对其他设备进行访问操作。 4、设备 云端的“设备”是指在上面提到的“产品”下的实体,亦指用户的某一台真实设备在OneNET上对应的唯一的虚拟名称。 5、设备ID(Device ID,DID) 设备ID是指由OneNET后台为您的某一台真实设备分配的一个独立且唯一的ID号,一款产品下可以有多台设备,每一台独立的设备都有唯一的设备ID。 6、设备编号 用户在OneNET上创建设备时,如果设备接入协议选择HTTP,则需要填写“设备编号”。设备编号是每一台真实设备所拥有的唯一识别号,不需要OneNET后台分配,用户可以自定义设备编号,但必须保证每台设备之间的独立性和唯一性,建议用户在输入设备编号时采用原有产品线的序列号。 7、数据流(Datastream) 一个数据流可以理解为一类数据,如传感器之温度、位置之经纬度,空气之湿度等。用户可以自定义数据流名称,即数据流ID;一个设备可以添加多个数据流。 8、数据点(Datapoint) 即一个数据流中的一个具体的数据值。数据点采用“Key-Value”的方式存储。其中Key的组成包括设备ID、数据流ID、时间等信息,value部分可以为任何数据对象,如整数、字符串或者JSON数据类型。 一、实验目的:W5500通过DHT11采集环境温湿度并上传到OneNET平台,登录账号可查看到温湿度数据的变化图。 二、实验过程: 1、注册oneNET平台账号; (more…)
Read More

DSP+W5500移植教程

博客
        以DSPF28335与W5500基于SPI通信为例:  一、特性 1、W5500特性   支持硬件 TCP/IP 协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE   支持 8 个独立端口(Socket)同时通讯   支持掉电模式   支持网络唤醒   支持高速串行外设接口(SPI 模式 0,3)   内部 32K 字节收发缓存   内嵌 10BaseT/100BaseTX 以太网物理层(PHY)   支持自动协商(10/100-Based 全双工/半双工)   不支持 IP 分片   3V 工作电压,I/O 信号口 5V 耐压   LED 状态显示(全双工/半双工,网络连接,网络速度,活动状态)   LQFP48 无铅封装(7x7mm,间距5mm)   嵌入式服务器 2、DSPF28335特性   基于TMS320F28335浮点DSP控制器   高性能的静态CMOS技术,指令周期为6.67ns,主频达150MHz   6通道的DMA控制器   8个外部中断   增强型外设模块:18个PWM输出,包含6个高分辨率脉宽调制模块(HRPWM)、6个事件捕获输入、2通道的正交调制模块(QEP)   3个32位的定时器,定时器0和定时器1用作一般的定时器,定时器0   接到PIE模块,定时器1接到中断INTI3、定时器2用于DSP/BIOS的片上实时系统,连接到中断INT14,如果系统不使用DSP/bios,定时器2可用于一般定时器   串行外设2通道CAN模块、3通道SCI模块、2个McBSP(多通道缓冲串行接口)模块、1个SPI模块、1个I2C主从兼容的串行总线接口模块   12位的A/D转换器具有16个转换通道、2个采样保持器、内外部参考电压、转换速度为80ns,同时支持多通道转换   88个可编程的复用GPIO引脚   TI主推高性能TMS320C28x系列DSP控制器,主频高达150MHz   具备I2C、SPI、eCAN、ePWM等总线接口,适用于各种控制类工业设备   体积小、性能强、便携性高,同时适用于多种手持设备   符合高低温、振动要求,满足工业环境应用 3、引脚分配图:   DSPF28335引脚分配图:   W5500引脚分配图:   4、环境:   软件环境:Windows xp/Windows 7/Windows 8/Windows 10   硬件环境:DSPF28335 、 W5500   开发工具:Code Composer studio 6.0.0 、 USR-TCP232-Test(调试工具) 二、步骤 1、连接DSPF28335与W5500(选择引脚)   首先确认W5500与DSPF28335开发板上分别需要连接的引脚 (1)W5500:引脚描述 (2)DSPF28335引脚描述: 选择好两块开发板上的引脚后,对两块开发板进行连接: 序号型号 W5500 DSPF28335 连接方式 1 MISO 54 从输入主输出 2 MOSI 55 从输出主输入…
Read More
WIZnet 嵌入式以太网技术培训公开课(免费!)

WIZnet 嵌入式以太网技术培训公开课(免费!)

新闻
都说物联网是下一个风口,你还在为自己没站在风口上而担心,为缺乏物联网实战技能而苦恼吗?这一切都不是问题,福利来了: WIZnet公司将与炜世科技一起举办免费的“物联网通信协议详解”系列培训活动,通过现场实际操作完成系列实验,让你对物联网通信协议有更深入的认识,帮助你提高物联网嵌入式开发实战技能,让你轻松从入门到精通。全程免费,还有很多小礼品等着你来拿,快来报名吧! 第一期主题:TCP/IP协议基础及TCP和UDP实现 第二期主题:常用应用层协议DHCP/DNS/NTP协议讲解和实现 第三期主题:网络远程配置和固件升级实现 第四期主题:HTTP协议及嵌入式Web服务器的实现 第五期主题:MQTT协议详解和实现 主讲老师:陈海峰 博士 陈博士现任WIZnet香港分公司总经理,负责WIZnet香港分公司的产品研发以及技术支持。陈博士在WIZnet总部研究所工作多年,主要研究领域包括嵌入式以太网、高速以太网和无线传感器网络等。 报名时间:即日起至2017年9月19日 培训时间:2017年9月23日(第一期) 培训平台:W5500+STM32F103 培训地点:深圳市福田区上步中路1003号6楼 报名资格:有STM32编程基础的工程师、学生、创客等 报名方式:发送<WIZnet培训报名+姓名+单位+手机号+QQ号>到[email protected] 温馨提示:来时请带电脑,提前安装 Keil MDK V5。 期待您的到来!
Read More