怎么做跳转不影响原网站排名,电商扶贫网站建设,国外专门做旅游攻略的网站,什么事网络营销文章目录 1. 前言2. 简介2.1 初步了解OneNET物联网平台创建产品步骤2.2 OneNET物模型讲解 3 WIZnet以太网芯片4 示例概述4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1. 前言 物联网平台提供安全可靠的设备连接通信能力#xf… 文章目录 1. 前言2. 简介2.1 初步了解OneNET物联网平台创建产品步骤2.2 OneNET物模型讲解 3 WIZnet以太网芯片4 示例概述4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1. 前言 物联网平台提供安全可靠的设备连接通信能力支持设备数据采集上云规则引擎流转数据和云端数据下发设备端。此外也提供方便快捷的设备管理能力支持物模型定义数据结构化存储和远程调试、监控、运维。本章讲解OneNET物联网平台的使用方法并讲解使用设备连接OneNET物联网平台。 在以太网应用中使用 W5500 MQTT应用协议让用户可以更加方便地在设备之间实现OneNET远程连接和通信。本教程将介绍W5500以太网MQTT连接OneNET的应用以及注意事项帮助读者更好地掌握这一技术。
2. 简介
2.1 初步了解OneNET物联网平台创建产品步骤 如何在OneNET平台创建产品 OneNET网址中移坤灵 - 中国移动物联网开放平台 (10086.cn) 进入之后登录账号然后点击右上角开发者中心再点击产品开发界面下的创建产品然后选择对应的参数即可。 点击产品详情在物模型界面添加一个自定义功能点 点击下一步在设备开发的Topic管理页面中记录物模型topic 这里需要记录的四个topic对应的功能如下表所示 Topic名设备操作权限作用$sys/70TwP2gxl5/{device-name}/thing/property/post发布设备上报属性$sys/70TwP2gxl5/{device-name}/thing/property/post/reply订阅云端回复上报状态$sys/70TwP2gxl5/{device-name}/thing/property/set订阅云端设置设备属性$sys/70TwP2gxl5/{device-name}/thing/property/set_reply发布设备回复设置 一直点击下一步然后发布产品即可。 之后在设备接入管理的设备管理界面下添加一个测试设备 然后记录以下参数 参数值产品ID70TwP2gxl5设备名W5100S_W5500设备密钥SXFUeWlDUjJqamN4bGNndWRHNmZYc0Eyc2ZTNWh2bWo 生成MQTT连接参数 连接地址和端口号如下图所示 其他参数如下图所示
计算password工具https://open.iot.10086.cn/doc/iot_platform/images/tools/token.exe
打开之后按照下图所示生成password: 2.2 OneNET物模型讲解
1.定义 物模型是对设备的数字化抽象描述描述该型号设备是什么能做什么能对外提供哪些服务。 物模型将物理空间中的实体设备数字化在云端构建该实体的数据模型即将物理空间的实体在云端进行格式化表示。 如上图所示物模型属于应用协议之上的语法语义层。在物联网平台中物模型完成对终端产品形态产品功能的结构化定义包括终端设备业务数据的格式和传输规则 物模型功能模块在物联网平台中的位置如图所示 物模型在业务逻辑属于物联网平台的设备管理模块。用于实现不同设备能够以统一的物模型标准对接应用平台不同应用之间能够以统一物模型标准进行数据互通。
2.设备抽象模型 物模型基础功能分为三类属性、服务、事件功能点数量不超过100个。
功能类型说明属性用于描述设备的动态特征包括运行时的状态应用可发起对属性的读取和设置请求。服务用于描述终端设备可被外部调用的能力可设置输入参数和输出参数。服务可实现复杂的业务逻辑例如执行某项特定的任务支持同步或异步返回结果。事件设备运行时可以被触发的上行消息如设备运行的记录信息设备异常时发出的告警、故障信息等可包含多个输出参数。
3 WIZnet以太网芯片 WIZnet 主流硬件协议栈以太网芯片参数对比
ModelEmbedded CoreHost I/FTX/RX BufferHW SocketNetwork PerformanceW5100STCP/IPv4 MAC PHY8bit BUS, SPI16KB4Max.25MbpsW6100TCP/IPv4/IPv6, MAC PHY8bit BUS, Fast SPI32KB8Max.25MbpsW5500TCP/IPv4, MAC PHYFast SPI32KB8Max 15Mbps
W5100S/W6100 支持 8bit数据总线接口网络传输速度会优于W5500。W6100 支持IPv6与W5100S 硬件兼容若已使用W5100S的用户需要支持IPv6可以Pin to Pin兼容。W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存。
4 示例概述
4.1 流程图 程序的运行框图如下所示 4.2 准备工作核心
软件
Visual Studio CodeWIZnet UartToolOneNET平台
硬件
W5100S IO模块 RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板Micro USB 接口的数据线TTL 转 USB网线
4.3 连接方式 通过数据线连接PC的USB口主要用于烧录程序也可以虚拟出串口使用 通过TTL串口转USB连接UART0 的默认引脚 RP2040 GPIO0UART0 TX ---- USB_TTL_RXRP2040 GPIO1UART0 RX ---- USB_TTL_TX 使用模块连接RP2040 进行接线时 RP2040 GPIO16 ---- W5100S MISORP2040 GPIO17 ---- W5100S CSRP2040 GPIO18 ---- W5100S SCKRP2040 GPIO19 ---- W5100S MOSIRP2040 GPIO20 ---- W5100S RST 通过PC和设备都通过网线连接路由器LAN口
4.4 主要代码概述 我们使用的是WIZnet官方的ioLibrary_Driver库。该库支持的协议丰富操作简单芯片在硬件上集成了TCP/IP协议栈该库又封装好了TCP/IP层之上的协议我们只需简单调用相应函数即可完成协议的应用。
第一步mqtt_onenet.c文件中引用对应的库。
第二步宏定义相关内容
第三步定义一个mqtt连接参数的结构体并进行定义这里给结构体赋的值是连接OneNET对应的参数以及物模型的订阅发布主题。
第四步: 设置预设IP地址信息以及标志位。
第五步编写几个函数包括网络初始化函数1秒定时器回调函数1毫秒定时器回调函数MQTT初始化函数MQTT接收消息回调函数DNS解析函数以及json解析函数。
第六步编写定时器回调处理函数用于DHCP和MQTT 滴答定时器处理函数。
第七步主函数先是对串口和SPI的初始化然后写入W5100S的网络配置参数初始化DHCP后开始DHCP获取IP获取到就打印获取到的IP获取次数超过最大获取次数时就使用静态IPDNS解析域名之后初始化MQTT然后主循环是一个状态机的轮询会按照流程图进行连接、订阅、定时上报消息、保活以及接收消息处理。
主函数代码如下所示
int main()
{/* Variable definition */int ret;struct repeating_timer timer_1s;struct repeating_timer timer_1ms;uint8_t pubmsg[128] {0};/*mcu init*/stdio_init_all(); /*Initialize the serial port*/wizchip_initialize(); /*Initialize the SPI*//* LED init */gpio_init(LED_PIN);gpio_set_dir(LED_PIN, GPIO_OUT);/*timer init*/add_repeating_timer_ms(1000, repeating_timer_1s_callback, NULL, timer_1s); // Add DHCP and DNS 1s Tick Timer handleradd_repeating_timer_ms(1, repeating_timer_1ms_callback, NULL, timer_1ms); // Add MQTT 1ms Tick Timer handler/*dhcp init*/DHCP_init(SOCK_DHCP, ethernet_buf); // DHCP initialization/*dns init*/DNS_init(SOCK_DNS, ethernet_buf);/* Set the network address information */printf(wiznet chip mqtt of onenet example.\r\n);network_init(net_info); // Configuring Network Informationprint_network_information(get_info); // Read back the configuration information and print it/* Resolve mqtt broker domain names using dns */do_dns(mqtt_params.mqttHostUrl, mqtt_params.server_ip);/*mqtt init*/mqtt_init();while (true){switch (run_status){case CONN:{ret MQTTConnect(c, data); /* Connect to the MQTT server */printf(Connect to the MQTT server: %d.%d.%d.%d:%d\r\n, mqtt_params.server_ip[0], mqtt_params.server_ip[1], mqtt_params.server_ip[2], mqtt_params.server_ip[3], mqtt_params.port);printf(Connected:%s\r\n\r\n, ret SUCCESSS ? success : failed);if (ret ! SUCCESSS){run_status ERROR;}else{run_status SUB;}break;}case SUB:{ret MQTTSubscribe(c, mqtt_params.subtopic, mqtt_params.subQoS, messageArrived); /* Subscribe to Topics */printf(Subscribing to %s\r\n, mqtt_params.subtopic);printf(Subscribed:%s\r\n\r\n, ret SUCCESSS ? success : failed);if (ret ! SUCCESSS){run_status ERROR;}else{run_status KEEPALIVE;}ret MQTTSubscribe(c, mqtt_params.pubtopic_reply, mqtt_params.subQoS, NULL); /* Subscribe to Topics */printf(Subscribing to %s\r\n, mqtt_params.pubtopic_reply);printf(Subscribed:%s\r\n\r\n, ret SUCCESSS ? success : failed);if (ret ! SUCCESSS){run_status ERROR;}else{run_status KEEPALIVE;}break;}case PUB:{if (pub_time 5){pub_time 0;sprintf(pubmsg, {\id\: \123\,\version\: \1.0\,\params\: {\LEDSwitch\: {\value\:%s}}}, gpio_get(LED_PIN) ON ? true : false);pubmessage.payload pubmsg;pubmessage.payloadlen strlen(pubmessage.payload);ret MQTTPublish(c, mqtt_params.pubtopic, pubmessage); /* Publish message */if (ret ! SUCCESSS){run_status ERROR;}else{printf(publish:%s,%s\r\n\r\n, mqtt_params.pubtopic, pubmessage.payload);}}else{run_status KEEPALIVE;}break;}case KEEPALIVE:{if (MQTTYield(c, 30) ! SUCCESSS) /* keepalive MQTT */{run_status ERROR;}else{run_status PUB;}sleep_ms(100);break;}case ERROR: /* Running error */printf(system ERROR!\r\n);sleep_ms(1000);break;default:break;}}
}4.5 结果演示
1.打开WIZ UartTool填入参数获取到IP之后解析mqtt服务器域名然后进行OneNET的连接连接成功后会打印订阅的主题并定时向服务器上报板载LED灯状态。 2.通过OneNET下发指令控制LED打开 3.平台物模型上也可以收到设备上的板载LED灯状态
5 注意事项
订阅和发布的物模型主题不要弄错了否则会导致无法正常运行。把OneNET的物模型主题复制过来时需要把{device-name}替换成设备名如果想用WIZnet的W5500来实现本章的示例我们只需修改两个地方即可
(1)在library/ioLibrary_Driver/Ethernet/下找到wizchip_conf.h这个头文件将_WIZCHIP_ 宏定义修改为W5500。
(2)在library下找到CMakeLists.txt文件将COMPILE_SEL设置为ON即可OFF为W5100SON为W5500。
6 相关链接
WIZnet官网
WIZnet官方库链接
本章例程链接
想了解更多评论留言哦