【雕爷学编程】MicroPython动手做(29)——物联网之SIoT

知识点:什么是掌控板?

掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。



1、物联网(Internet of Things,缩写:IoT)

是基于互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。其应用领域主要包括运输和物流、工业制造、健康医疗、智能环境(家庭、办公、工厂)等,具有十分广阔的市场前景。

物联网的概念最早是在1999年由Kevin Ashton在一次演讲中提出来的,当时他是一个RFID研究机构的执行主任,这家研究机构是在宝洁公司和吉列公司的赞助下成立的。而他本人也因此被称为物联网之父。随后麻省理工学院的Neil Gershenfeld教授出版了一本名为《When things Start to Think》的书。以这些为标志,正式揭开了物联网的序幕。

物联网的英文是Internet of Things,缩写为IoT。这里的"物"指的是我身边一切能与网络联通的物品。例如你带的手表、你骑的共享单车、马路上的汽车、家里的冰箱、路边的路灯、甚至是一棵树。只要一件物品能够与网络相连,它就都是物联网中的"物"。而所谓物联网,就是"物"与人,以及"物"与"物"之间,通过网络来传递和处理信息。

SIoT

一个为教育定制的跨平台的MQTT服务器程序,S指科学(Science)、简单(simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,一键启动,无需注册即可使用。SIoT针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器,摆脱联网困扰。SIoT重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。

那什么是物联网?什么又是MQTT呢?

物联网(Internet of Things,缩写IoT)是互联网的一个延伸,互联网的终端是计算机(PC、服务器),而物联网的终端是硬件设备,无论是家电、工业设备、汽车、监测仪器,所有这些终端都可以互联,可以总结为万物互联。

MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。

SIoT为"虚谷物联"项目的核心软件,是为了帮助中小学生理解物联网原理,并且能够基于物联网技术开发各种创意应用。

SIoT下载链接

系统集合 http://download3.dfrobot.com.cn/SIoT/SIoT1.2_full.zip

版本V1.2:

windows 32&64位系统

Mac系统

linux系统

虚谷号系统

1、SIoT采用GO语言编写

具有如下特点:

(1)跨平台。支持Win10、Win7、Mac、Linux等操作系统。只要启动这一程序,普通计算机(包括拿铁熊猫、虚谷号和树莓派等微型计算机)就可以成为标准的MQTT服务器。

(2)一键运行。纯绿色软件,不需要安装,下载后解压就可以使用,对中小学的物联网技术教学尤其适合。

(3)使用简单。软件运行后,不需要任何设置就可以使用。利用特定的"Topic"的名称("项目名称/设备名称"),就能自动在数据库中添加项目和设备的名称,并将消息数据存入数据库。

(4)支持数据导出。所有的物联网消息数据都可以在线导出,系统采用SQLite数据库,同时支持Mysql数据库。

(5)支持标准的MQTT协议。QoS级别为0。

(6)支持WebAPI。系统系统了完善的WebAPI,方便各种软件以HTTP的方式调用,支持App inventor、Scratch、VB等默认不支持MQTT的中小学生常用编程软件调用。

(7)支持插件开发。

(8)SIoT的资源 GitHub:https://github.com/vvlink/SIoT/ 提供文档、案例、课程。

SIoT软件开发团队

核心人员:苏宇、谢作如、夏青

技术支持:张路、叶琛、李冬冬

系统测试:李亮、林淼焱、张喻

注:SIoT软件的开发得到温州市科技局2019年科技创新项目的资助,为《物联网与科学探究创意实验课程开发》项目的成果之一,软件采用MIT协议开源。


2、SIoT使用手册

简介

介绍物联网、MQTT和SIoT软件。

下载和安装

介绍SIoT软件的下载、安装、运行以及软件操作界面。

客户端连接范例

介绍各种客户端和SIoT软件的连接。SIoT为标准的MQTT服务器,支持绝大多数的客户端程序连接。

典型应用案例

介绍各种利用物联网技术实现的典型应用案例,重点关注如何利用物联网技术进行科学探究。

高级操作技巧

介绍SIoT的一些高级操作,如安全设置、WebAPI和数据导出等。

《SIoT使用手册》在线版

https://siot.readthedocs.io/zh_CN/latest/index.html

SIoT文档开发团队

负责人:谢作如

参与人员:

谢作如(温州中学)

林淼焱(温州大学)

郑祥(温州四中)

郝晴(天津师大)

张喻(温州大学)

邱奕盛(温州中学)

许靖宇(天津师大)

宋达(天津师大)

毛雁(天津师大)

夏青(上海蘑菇云)

陆雅楠(上海师范大学)

......

3、在电脑上运行SIoT系统

(1)双击运行SIoT_win.exe,可以看到一个黑色的CMD窗口。

  • 使用SIoT过程中一定不要关该窗口。

(2)将电脑连接到WIFI。

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

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

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

a、同时按下键盘上"WIN"+"R",弹出运行窗口。

b、输入"cmd",点击确定,弹出小黑框。

c、在小黑框中输入"ipconfig",点击键盘"enter",在小黑框中可以看到IP地址。

4、 打开SIoT网页端

a、打开电脑浏览器,在网址栏输入在"STEP3"中获得的IP地址加上":8080",如:192.168.31.24:8080

  • ":" 需在在英文输入法下。

b、点击键盘enter键,打开即为SIoT网页端,如下图:

打不开的话------

复制代码
 ■ 检查siot的小黑窗是否打开
 ■ 检查ip地址是否错误,如果有多个ip地址就一个一个尝试
 ■ 关闭网络防火墙

5、登陆SIoT网页端

账号:siot

密码:dfrobot

输入账号、密码后,点击"登陆",

登陆后页面如下:

6、尝试在SIoT平台输入消息,控制点亮或熄灭板载LED灯

#MicroPython动手做(29)------物联网之SIoT

#尝试在SIoT平台输入消息,控制点亮或熄灭板载LED灯

python 复制代码
#MicroPython动手做(29)------物联网之SIoT
#尝试在SIoT平台输入消息,控制点亮或熄灭板载LED灯

from umqtt.simple import MQTTClient
from machine import Timer
from mpython import *
import ubinascii
import network
import music


_mqtt_topic_list = []

def timer14_tick(_):
  global mqtt
  mqtt.ping()

def mqtt_callback(topic, msg):
  try:
    topic = topic.decode('utf-8', 'ignore')
    _msg = msg.decode('utf-8', 'ignore')
    eval('mqtt_topic_' + bytes.decode(ubinascii.hexlify(topic)) + '("' + _msg + '")')
  except:
    print((topic, msg))

brightness=9

# 事件回调函数
def mqtt_topic_6561676c6572382f7a6b6231(_msg):
  global g_my_variable
  if (_msg == on):
    music.pitch(196, 50)
    rgb.fill((255*brightness//9, 255*brightness//9, 153*brightness//9))
    rgb.write()
  if (_msg == off):
    music.pitch(784, 50)
    rgb.fill( (0, 0, 0) )
    rgb.write()


my_wifi = wifi()
tim14 = Timer(14)
my_wifi.connectWiFi("zh","zy1567")
mqtt = MQTTClient("", "192.168.31.248", 1883, "siot", "dfrobot")
try:
  mqtt.connect()
  print('Connected')
except:
  print('Disconnected')
mqtt.set_callback(mqtt_callback)
tim14.init(period=20000, mode=Timer.PERIODIC, callback=timer14_tick)
mqtt.subscribe("eagler8/zkb1")
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(392, 50)
mqtt.publish("eagler8/zkb1","on")

Mind+ 实验图形编程

运行后出错,信息如下:

reader: read tcp 192.168.31.248:1883->192.168.31.221:53734: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

读取器:读取tcp 192.168.31.24:1883->192.168.31.221:53734:wsarecv:连接尝试失败,因为一段时间后被连接方未正确响应,或者由于连接的主机未能响应而建立连接失败。

在网页端,能查询到SIoT平台发出的消息,但无法控制板载LED灯

7、发布"hello"至主题"eagler8/zkb1"

#MicroPython动手做(29)------物联网之SIoT

#发布"hello"至主题"eagler8/zkb1"

python 复制代码
#MicroPython动手做(29)------物联网之SIoT
#发布"hello"至主题"eagler8/zkb1"

# MindPlus
# mpython
from umqtt.simple import MQTTClient
from mpython import *
import network
import music


brightness=9


my_wifi = wifi()
my_wifi.connectWiFi("zh","zy1567")
while not (my_wifi.sta.isconnected()):
  pass
oled.invert(0)
oled.DispChar("          Wifi连接成功", 0, (2-1)*16, 1)
mqtt = MQTTClient("", "192.168.31.248", 1883, "siot", "dfrobot")
try:
  mqtt.connect()
  print('Connected')
except:
  print('Disconnected')
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(392, 50)
mqtt.publish("eagler8/zkb1","hello")
oled.invert(0)
oled.DispChar("         SIoT连接成功", 0, (2-1)*16, 1)
oled.show()

Mind+ 实验图形编程

SIoT网页端收到的消息

SIoT 初始化参数


相关推荐
程序员大雄学编程14 小时前
用Python来学微积分23-微分中值定理
人工智能·python·数学·微积分
SunnyDays101114 小时前
如何使用Python编辑PDF文档:修改文本、添加图片、更新元数据等
python·编辑pdf·修改pdf文字
TDengine (老段)14 小时前
益和热力性能优化实践:从 SQL Server 到 TDengine 时序数据库,写入快 20 秒、查询提速 5 倍
大数据·数据库·物联网·性能优化·时序数据库·tdengine·1024程序员节
、、、、南山小雨、、、、14 小时前
加载YOLO模型,处理mp4视频
python·yolo·音视频
BreezeJuvenile15 小时前
外设模块学习(10)——红外避障模块(STM32)
stm32·单片机·学习·红外避障模块
omnibots15 小时前
瑞萨SDK编译linux时,make menuconfig报错
linux·服务器·前端·嵌入式硬件
wshlp12345615 小时前
deepseek api 灵活使用
python
AI视觉网奇16 小时前
coco json 分类标注工具源代码
开发语言·python
塔能物联运维16 小时前
物联网运维中基于自适应射频环境监测的动态频谱优化技术
运维·物联网
古希腊掌握嵌入式的神16 小时前
MCU-DEBUG 通过查看外设寄存器位debug出外设配置是否正常
单片机·嵌入式硬件