| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【行空板教程】玩转物联网 -> 正文阅读 |
|
[嵌入式]【行空板教程】玩转物联网 |
【行空板教程】玩转物联网前言互联网仅仅是人与人之间信息交流的网络,我们更希望其满足人与物、物与物之目前的互联网仅仅是人与人之间信息交流的网络,我们更希望其满足人与物、物与物之间信息的自动交互和共享。物联网是互联网的延伸与扩展,物联网可以实现物理世界与信息世界的无缝连接,将各种功能不同的智能传感器嵌入到电网、铁路、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道等物体中,通过无线传感器网络、互联网、超级计算机和云计算等组成物联网,实现人类社会与物理系统的整合,使世界上的物、人、网与社会融合为一个有机的整体。那么本次教程,就让我们打开物联网的大门吧! 相关知识点MQTT的工作原理说到物联网,那么就一定要提MQTT协议。那什么是MQTT协议呢? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 中介承担着转发MQTT 通信的服务器的作用。相对而言,发布者和订阅者则起着客户端的作用。发布者是负责发送消息的客户端,而订阅 者是负责接收消息的客户端。MQTT 交换的消息都附带“主题”地址,各个客户端把这个“主题”视为收信地址,对其执行传输消息的操作。 形象地比喻一下,中介就是接收邮件的邮箱。 中介在等待各个客户端对其进行连接。订阅者连接中介,把自己想订阅的主题名称告诉中介。这就叫作订阅。 然后发布者连接中介,以主题为收信地址发送消息。这就是发布。发布者一发布主题,中介就会把消息传递给订阅了该主题的订阅者。 主题采用的是分层结构。用“#”和“+”这样的符号能指定多个主题。如上图所示,/Sensor/temperature/# 中使用了“#”符号,这样就 能指定所有开头为/Sensor/temperature/ 的主题。此外,/Sensor/+/room1中使用了符号“+”,这样一来就能指定所有开头是/Sensor/、结尾是/room1 的主题。 MQTT原理转载至 [图解物联网 / 日本NTT DATA集团等著;丁灵译. --北京:人民邮电出版社, 2017.4] 准备阶段1、注册EASYIOT账号这里我们用的物联网平台是:DFRobot Easy IoT 物联网平台:http://iot.dfrobot.com.cn/ ,它操作简单,更加适合入门者学习,当然也方便我们教学。我们用浏览器输入网址后,进行登录,没有账号的读者可以选择右上角的注册按钮进行注册。 登录IoT网站,注册账号。进入工作间。新建一个设备,默认名字“设备一”。(ps:一个账号,默认一共有10000条信息的储存容量。这些容量共所有设备共享。) 例如,下图设备上方显示“0/1000”,那么此设备最大可储存1000条信息,已使用0条信息的储存空间。如果此设备收发的信息超过1000条,新信息将不再存入。 每个设备默认每隔1s储存一次消息。 观察到设备唯一识别码Topic以及左侧的用户信息 点击眼睛图标可以将隐藏的Iot_id和Iot_pwd显示出来。 为了稍后编程需要,记下相关账号:
2、paho-mqtt python库行空板内置了paho-mqtt库,这里我们主要用到下面这几个函数:
详细文档https://pypi.org/project/paho-mqtt/1.1/ 3、pingpong库如果我们想要控制外部LED灯的亮灭,这个时候就需要用到pingpong库,这个在我们行空板是内置安装了,我们就不需要再安装了。 控制Led灯行空板背面有一颗蓝色LED灯(标记为L)可供用户控制。
程序设计1、向物联网平台发布数据
测试结果: 2、订阅物联网发来的数据作为一个接收者,同一个主题没有发布(pub)信息的时候,就自己一直等候。
测试结果: 3、按钮控制LED电路连接:程序编写:
效果: 行空板教程:玩转物联网 4、远程控制开关灯
效果: 注意事项loop()方法在MQTT客户端中也非常重要,它主要是用来去查询消息缓存区。当有新的消息到达时,这些消息会存储在接收缓存区,等待有客户端程序去读取。loop()方法就是一个内置的读取接收和发送缓存区,并分发消息的方法。简单说就是,如果不loop,也不自己去主动读取接收缓存区,就触发不了回调函数,所以要记着写上loop。 loop_forever() --会阻塞程序,其实是周期调用loop()方法,如果程序需要一直处于订阅中的话,可以用这个方法,它也会对客户端进行重连。 总结好了,本次课程到这里就结束了!通过本次课程我们学会了如何使用行空板通过mqtt协议发布消息和订阅消息。剩下的我们是不是就可以做一个智能家居项目呢?算是抛砖引玉吧。期待读者们有更多物联网相关的作品。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:24:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |