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

news2025/1/12 18:48:37

知识点:什么是掌控板?
掌控板是一块普及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为“虚谷物联”项目的核心软件,是为了帮助中小学生理解物联网原理,并且能够基于物联网技术开发各种创意应用。

在这里插入图片描述

8、读取环境光强度发送至SIoT网页端

#MicroPython动手做(29)——物联网之SIoT
#读取环境光强度发送至SIoT网页端

#MicroPython动手做(29)——物联网之SIoT
#读取环境光强度发送至SIoT网页端

from umqtt.simple import MQTTClient
from mpython import *
import network
import music
import time


brightness=9

# 事件回调函数
def on_button_a_down(_):
  global g_my_variable
  time.sleep_ms(10)
  if button_a.value() == 1: return
  oled.DispChar("           采集光线值", 0, (3-1)*16, 1)
  oled.show()
  while True:
    mqtt.publish("eagler8/zkb1",(str(light.read())))
    time.sleep(2)


my_wifi = wifi()
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
my_wifi.connectWiFi("zh","zy1567")
while not (my_wifi.sta.isconnected()):
  pass
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网页端上读取到的光线值

在这里插入图片描述

显示消息监控的光线值图表

在这里插入图片描述

9、实时模式网页端控制板载RGB灯
Mind+ 实验图形编程

在这里插入图片描述
网页端输入命令“on”或者"off"

在这里插入图片描述

实时模式网页端控制板载RGB灯

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10、通过主题消息“on”和“off”开关LED灯

#MicroPython动手做(29)——物联网之SIoT
#通过主题消息“on”和“off”开关LED灯

#MicroPython动手做(29)——物联网之SIoT
#通过主题消息“on”和“off”开关LED灯

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

my_wifi = wifi()

my_wifi.connectWiFi("zh", "zy1567")

mqtt = MQTTClient("ok", "192.168.31.248", 1883, "siot", "dfrobot", keepalive=30)

try:
    mqtt.connect()
    print('Connected')
except:
    print('Disconnected')

def mqtt_topic_6561676c6572382f7a6b6231(_msg):
    global i
    if str(_msg) == "on":
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        oled.DispChar("                 开灯", 0, 32, 1)
        oled.show()
    if str(_msg) == "off":
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)
        oled.DispChar("                关灯", 0, 32, 1)
        oled.show()

def on_button_a_down(_):
    global i
    time.sleep_ms(10)
    if button_a.value() == 1: return
    mqtt.publish("eagler8/zkb1", "on")
    music.play('E5:1')

def on_button_b_down(_):
    global i
    time.sleep_ms(10)
    if button_b.value() == 1: return
    mqtt.publish("eagler8/zkb1", "off")
    music.play('D5:1')

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))

mqtt.set_callback(mqtt_callback)

mqtt.subscribe("eagler8/zkb1")

def timer14_tick(_):
    mqtt.ping()

tim14 = Timer(14)
tim14.init(period=20000, mode=Timer.PERIODIC, callback=timer14_tick)

button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)

button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)


mqtt.publish("eagler8/zkb1", "hello")
music.play('G5:1')
oled.fill(0)
oled.DispChar("        连接SIoT成功", 0, 16, 1)
oled.show()
rgb[1] = (int(0), int(51), int(0))
rgb.write()
time.sleep_ms(1)
while True:
    mqtt.wait_msg()

通过主题消息“on”和“off”开关LED灯

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mPython x 实验图形编程

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/830606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chat模块封装

封装保存用户类 utils/chat.js class Chat{constructor(){// 当前登录的用户this._user null;// 会话数组 和多个人this._sessions []; //user message// 当前会话 (和谁在聊天)this._current_session null;}setUser(user){this._user user} }exp…

百度贴吧视频推送排名软件怎么卖

百度贴吧视频上传工具 软件有月卡、季卡、半年卡、年卡 【有时软件个别卡种售空,价格有上涨下降不定,需要的话联系客服获取当日价格】 视频教程: 软件功能: 1.软件不限制账号,可以批量循环发布 2.贴吧同步功能&am…

2023,谁在引领实时互动进入高清时代?

实践是检验真理的唯一标准,技术是行业进步的核心动能。在实时互动的新时代里,不断进化的声网已然完成自证。 作者|斗斗 出品|产业家 “一个医疗行业的客户,曾向我们提出一个需求,希望在120急救场景下,可以远程看清…

二进制的运算

二进制的运算 位与(&)位或(|)异或(^) 位与(&) 类似于逻辑与运行,当条件都为true时,结果才为true。 0 & 0 0 0 & 1 0 1 & 0 0 1 &…

人力资源管理servlet人事考勤员工部门java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 人力资源管理servlet 系统有1权限:管理员…

定时任务实现:Timer、Quartz

文章目录 JDK中Timer使用及原理Timer使用调度一次性任务调度可重复执行任务 取消调度器和任务 定时任务线程池Quartz框架核心类说明Trigger触发器SimpleTriggerCronTrigger(重点) Spring整合Quartz(重点)任务信息SQL存储Maven 主要依赖配置文件quartz配置…

【Python】Python 实现猜单词游戏——挑战你的智力和运气!

文章目录 前言学到什么?导入 random 模块定义生命次数定义神秘单词并进行随机选择定义 clue(猜测进度) 列表,用问号 ? 初始化定义心形符号的 Unicode 编码初始化 guessed_word_correctly 变量定义更新猜测进度函数 update_clue主循环&#…

月木商城项目:开发者的概述

概述 本项目由博主本人自主开发,从后端的方方面面到前端的css的样式设计,以及项目的部署上云全部由本人开发完成 博主的技术栈有哪些 给大家看一下我的笔记网站,让大家对我有个了解

JVM面试题--垃圾回收

对象什么时候可以被垃圾器回收 在学习相关内容之前我们要明白两个问题,我们为什么要垃圾回收?回收哪里的垃圾呢? 垃圾回收主要指的是堆中的对象,堆是一个共享区域,我们创建的对象和数组,都存储在当前位置…

Git基础知识:常见功能和命令行

文章目录 1.Git介绍2.安装配置2.1 查看配置信息 3.文件管理3.1 创建仓库3.2 版本回退3.3 工作流程3.4 撤销修改3.5 删除文件 4.远程仓库4.1 连接远程库4.2 本地上传至远程4.3 从远程库克隆到本地 5.分支管理5.1 创建分支5.2 删除分支5.3 合并分支解决冲突 参考: Git…

(5)将固件加载到没有ArduPilot固件的主板上

文章目录 前言 5.1 下载驱动程序和烧录工具 5.2 下载ArduPilot固件 5.3 使用测试版和开发版 5.3.1 测试版 5.3.2 最新开发版本 5.4 将固件上传到自动驾驶仪 5.5 替代方法 5.6 将固件加载到带有外部闪存的主板上 前言 ArduPilot 的最新版本(Copter-3.6, Pl…

顺序表、链表刷题指南(力扣OJ)

目录 前言 题目一:删除有序数组中的重复项 思路: 题解: 题目二:合并两个有序数组 思路: 分析: 题解: 题目三:反转链表 思路: 分析: 题解: 题目四&…

软考A计划-系统集成项目管理工程师-信息文档和配置管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

【LeetCode每日一题】——304.二维区域和检索-矩阵不可变

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 中等 三【题目编号】 304.二维区域和检索-矩阵不可变 四【题目描述】 …

【沁恒蓝牙mesh】CH58x flash分区与数据存储管理

本文主要介绍了 沁恒蓝牙芯片 CH58x 的flash 分区与数据存储管理 📋 个人简介 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页&…

DPG算法

1 一言以蔽之 (1) DPG是属于确定性策略梯度算法(2)用于解决连续动作空间问题 2 优点和缺点 2.1 优点(1)从理论上可以证明,deterministic policy的梯度就是Q函数梯度的期望,这使得…

SAP数据库表维护视图生成器的使用

在SAP中,经常需要自定义数据库表。而且可能需要人工维护数据库表中的数据,可以通过SM30进行维护数据;但是SM30事务的权限太大,不适宜将SM30直接分配;因此,可以通过给维护表分配事务代码,来达到控…

云曦暑期学习第三周——ctfshow--php特性(89-104)

目录 web89 preg_match函数 、数组 web90 intval()函数、强比较 web91 正则修饰符 web92 intval()函数、弱比较 web93 八进制、小数点 web94 strpos() 函数、小数点 web95 小数点 web96 highlight_file() 下的目录路径 web97 数组 web98 三目运算符 web9…

Windows搭建Snort环境及使用方式

目录 0x01 前置环境0x02修改配置文件0x03 自测0x04 使用0x05 感言 0x01 前置环境 环境描述windows10snort2.9.2https://www.snort.org/downloads 先把上面环境下载好! 需要注意的是安装npcap这个软件 0x02修改配置文件 软件安装目录:C:/Snort/ 配置文…

有哪些开源和非开源的项目管理工具?

开源和非开源项目管理工具各有其特点和优势。下面是一些常见的开源和非开源项目管理工具以及它们的简要介绍。 开源项目管理工具: OpenProject:OpenProject 是一个功能强大、易于使用的开源项目管理工具。它提供了项目计划、任务管理、团队协作、文档管…