木子呢 发表于 2021-11-1 17:44:30

Mind+Python编程进阶系列课程—03 自制通信设备(上)

自制通信设备
课程目录:

[*]Python编程进阶系列教程—序章
[*]Python编程进阶系列课程—01 趣味数字电导仪
[*]Python编程进阶系列课程—02 简易气象站

一、实践情境

5G元年的列车早已驶出,人工智能、大数据的浪潮还在涌动,云办公、云问诊成为防疫期间的热词。

如今,物联网技术正处于时代发展的“风口”,其在安全防范、实时监测、追踪定位等领域都有广泛的应用。相较于传统的硬件设备,物联网技术使得各种硬件设备能够通过信息传输设备与互联网连接起来,继而进行信息的传递,以实现智能化识别与管理,为人们的日常生活带来便捷。本实践就以此为切入点,自制一个通信设备,实现智能终端借助物联网平台进行信息交换。



二、实践目标

本实践项目将以计算机为智能终端,自制一个基于WiFi的通信设备,实现与物联网平台的连接并向平台发送信息。

三、知识目标

1、了解物联网、MQTT以及SIoT

2、掌握搭建SIoT物联网平台的方法

3、掌握通过Python编程实现向SIoT物联网平台发送信息的方法

4、掌握从SIoT物联网平台网页端查看消息记录的方法

四、实践准备


软件使用: mind+编程软件x1、SIoT系统软件x1

Tips: 根据自己电脑的系统,对应下载SIoT软件压缩包。

下载链接:https://mindplus.dfrobot.com.cn/siot


五、实践过程

在本项目中,我们将分两步,自制一个基于WiFi的通信设备,实现一台计算机向物联网平台发送信息。

1、搭建SIoT物联网平台

2、向SIoT物联网平台发送消息

任务1:平台搭建

1. 搭建步骤

STEP1:电脑连接WiFi

将电脑连接到WiFi。

Tips:提供WIFI的路由器或手机热点可以不连接互联网,因为使用SIoT实现物联网应用时,只需要使用路由器或手机热点建立一个局域网即可。

STEP2:运行SIoT系统

双击运行SIoT应用程序,可以看到一个黑色的窗口。本课程以win10系统为例。



Tips:使用SIoT过程中一定不要关闭该窗口。

STEP3:电脑获取IP地址

电脑每次连接WIFI,都会生成一个IP地址,每个IP地址对应的电脑都是唯一的。运行SIOT程序后会在该电脑上建立一个服务器,其他设备要访问它,就需要知道该电脑的IP地址。

获取电脑IP的方法有很多,可在网页上搜索到,下面我们来介绍其中一种简易操作方法,通过以下3步获取电脑IP。

(1)同时按下键盘上“WIN”+“R”,弹出如下运行窗口。



(2)输入“cmd”,点击确定,弹出小黑框。




(3)在小黑框中输入“ipconfig”,点击键盘“enter”,在小黑框中可以看到IP地址,如下图IP为192.168.50.248。

Tips:连上不同的WiFi,IP地址是不一样的。


STEP4:打开服务器网页管理界面

(1)打开电脑浏览器,在网址栏输入STEP3中获得的IP地址,加上“:8080”,如,192.168.50.248:8080

Tips:“:”须在英文输入法下。


(2)点击键盘enter键,打开即为网页管理界面,如下图:


(3)打不开怎么办?

l 检查SIoT的小黑窗是否打开

l 检查IP地址是否错误,如果有多个IP地址就一个一个尝试

l 关闭网络防火墙

STEP5:登录账号

账号:siot,密码:dfrobot

输入账号、密码并点击登录,如下图,

Tips:网页端账号密码都是统一的




任务2:向平台发送信息

1. 分析设计

在本任务中,我们可使计算机向搭建好的SIoT物联网平台上发送信息,并通过平台网页端查看相应接收到的信息。


2. 软件编写

在编写代码之前,我们依旧需要先对软件进行一些设置。

软件设置:

STEP1:创建与保存项目文件

启动Mind+软件,选择“Python模式”,另存项目并命名为“m自制通信设备(上)”。

STEP2:创建与保存python文件

创建一个python程序文件“任务二.py”,双击打开。

STEP3:安装SIoT库

点击“库管理”,手动输入“pip install siot”进行安装。

Tips:mind+软件版本在1.7.1以上无须手动安装SIoT库。


程序编写、运行及回顾:

STEP1:编写python程序
import siot#导入siot库

import time#导入时间库

SERVER = "192.168.50.248"#MQTT服务器IP地址,,输入个人实际Ip

CLIENT_ID = ""#在SIoT上,CLIENT_ID可以留空

IOT_UserName ='siot'#用户名

IOT_PassWord ='dfrobot'#密码

IOT_pubTopic= 'microbit/001'#“topic”为“项目名称/设备名称”

siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确

siot.connect()#连接

siot.loop()#循环

while True:#永久循环

    siot.publish(IOT_pubTopic, "Hello World") #发送消息

    time.sleep(1)#延时1秒
Tips:上述“SERVER”中输入的是自己电脑的实际IP地址。

STEP2:运行程序并观察效果

(1)运行程序,观察软件终端

点击mind+软件右上方的运行按钮,我们可以看到在终端中显示“连接成功”的提示字样。


(2)平台查看消息

打开网页界面,先点击“设备列表”,可以看到“项目ID”、“名称”分别对应为程序中“IOT_pubTopic”的信息;再点击“查看消息”,在弹出的页面中可以看到设备的MQTT消息记录;最后单击“自动刷新消息记录”,勾选后可以使消息实时自动刷新显示。




可看到程序中对Topic:“microbit/001”的消息记录,伴有具体的消息内容及发送时间,如下图,


STEP3:回顾程序


1、导入库

import siot#导入siot库

为了能实现物联网相关的功能,我们需要先导入siot库,以便后续使用其中的函数功能。


2、设置MQTT相关参数

SERVER = "192.168.50.248"#MQTT服务器IP地址

CLIENT_ID = ""#创建空消息队列

IOT_UserName ='siot'#用户名

IOT_PassWord ='dfrobot'#密码

IOT_pubTopic = 'microbit/001'#“topic”为“项目名称/设备名称”

我们需要在程序中设置好MQTT相关的参数以便连接上物联网平台。其中,“SERVER”指IP地址;“CLIENT_ID”指客户端标识符,它是客户端到服务器的唯一标识,这里我们可以不输入内容;“IOT_UserName”指物联网平台账户的用户名;“IOT_PassWord”指账号对应的密码;“IOT_pubTopic”指主题,包括项目ID和设备名称。这里的项目ID为“microbit”,设备名称为“001”,可自行更改。

Tips:IOT_pubTopic的命名方式为“项目ID/设备名”,且/必须在英文输入法下。


3、物联网平台相关操作

在连接物联网平台时,我们需要先初始化验证IP账号等信息是否正确,之后才能连接上SIoT平台并保持登录状态,接着可向SIoT平台发送消息进行通信。

(1)初始化,确定上述输入的IP地址、客户端标识符、账号用户名密码等信息是否正确:

siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)

(2)连接SIoT物联网平台:siot.connect()

(3)保持物联网平台登录状态:siot.loop()

(4)向物联网平台的Topic发送消息

siot.publish(IOT_pubTopic, "Hello World")

这里的“IOT_pubTopic”指的是消息接收方,“Hello World”指的是具体要发送的内容,可以使用任何要发送的内容来作替代,如果内容存储在一个变量中则无需添加引号,这里我们可以发送255字符内的字符串,包括中文、英文等。


3. 调试修改

我们已经实现了每隔一秒自动发送消息至我们的SIoT物联网平台。但是,我们发现,每次发送的消息都是“Hello World”这一句固定不变,那如何才能随心所欲地自己决定要发送的消息内容呢?

相信你一定早就想到了,没错,我们可以修改一下程序,借助“input()”输入函数来实现。

STEP1:修改python程序

import siot#导入siot库

import time#导入时间库

SERVER = "192.168.50.248"#MQTT服务器IP地址,输入个人实际Ip

CLIENT_ID = ""#在SIoT上,CLIENT_ID可以留空

IOT_UserName ='siot'#用户名

IOT_PassWord ='dfrobot'#密码

IOT_pubTopic= 'microbit/001'#“topic”为“项目名称/设备名称”

siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord)#初始化,确定输入的用户名和密码正确

siot.connect()#连接

siot.loop()#循环

while True:#永久循环

    a = input("请输入要发送的消息(回车键确认):")#将输入的消息内容赋值给a

    siot.publish(IOT_pubTopic, a) #发送消息

    time.sleep(1)#延时1秒
STEP2:运行程序

STEP3:在终端输入要发送的消息内容,并按下回车键确认



STEP4:查看消息记录




六、巩固提高

1.项目小结

通过实践及对内容的理解,我们知道了物联网是可实现万物互联的一种网络,MQTT是物联网中一种用来传输消息的协议,而SIoT是以软件形式呈现的MQTT服务器程序。启动SIoT软件后,这台计算机也就成了一个标准的MQTT服务器,我们可以通过服务器的网页管理界面登录物联网平台的账号,在这里查看物联网平台上设备的所有消息记录。同样的,要想访问服务器,向物联网平台发送信息,使用任何一款MQTT客户端程序就可以了。这里,我们使用的是在mind+软件内编写的python程序。

事实上,由于我们是在同一台计算机上一边运行SIoT系统,一边又编写python程序访问服务器,所以这台计算机既是服务器,又是客户端。另外,物联网平台有很多种,这里我们利用SIoT系统生成的就称之为SIoT物联网平台。它是一种在局域网环境下即可建成的平台,而无须连入互联网。

因此,在实际生活中,只要有一台计算机开启SIoT服务,局域网内的所有计算机皆可编写程序与平台进行通信。

2.项目拓展

思考:

在生活中,无论是打电话还是发短信,通信往往都是双向的。在这节课上,我们实现了计算机向物联网平台发送消息,那我们是否也可以从物联网平台发送消息至计算机呢?

页: [1]
查看完整版本: Mind+Python编程进阶系列课程—03 自制通信设备(上)