【物联网】掌控板SIOT测光线值

2019-06-151.1万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用掌控板和SIoT搭建一个光线值采集系统。首先,通过掌控板板载光线传感器收集光线值,并通过MQTT协议发布到主题hq/001。然后,通过SIoT服务器接收并查看这些数据。文章详细介绍了硬件连接、软件设置及代码编写过程,适合STEAM教育场景。


【物联网】掌控板SIOT测光线值图1
“万物互联”的时代正渐行渐近,物联网技术也越来越受到创客教育、STEAM教育领域的重视。
最近,读了谢作如老师的文章《做一个通用的物联网数据采集工具》,
文章中提到:“运用物联网技术不仅可以远程控制灯的开关,还可以实现数据自动采集的功能,
这样方便老师、学生使用“数据探究”的方式去研究科学问题,为科学探究提供了有力支撑,
今天分享一篇借助掌控板物联网测光线值文章分享给大家!
【物联网】掌控板SIOT测光线值图11
一、思 路

1、掌控板板载光线传感器负责收集光线值(0-4095),将光线值发布主题hq/001。
2、转发MQTT 通信的服务器(192.168.0.6)接受掌控板光线值得信息,
3. 在服务器MQTT 的设备列表查看消息,打开网页http://127.0.0.1:8080/html/messages.html?topic=hq/001,导出数据
【物联网】掌控板SIOT测光线值图12
二、环境
1、硬件:掌控板 编程板
2、软件:mPythonX0.3.2
3、SIoT下载地址:  SIOT1.0
【物联网】掌控板SIOT测光线值图2

三、编程流程:
1、连接串口,通过mini数据线连接掌控板和计算机
2、烧录固件,将掌控板固件升级为2019-05-09,文件系统:2019-05-14
3、编写代码,通过物联网、wifi、显示等模块编写代码
4、刷入运行,刷入掌控板前,对代码进行调试代码,功能实现后刷入 掌控板

四、编写程序

1、在功能模块找到“物联网”,选取MOIT对应模块

【物联网】掌控板SIOT测光线值图3

2、连接无线网络,设置服务器地址、登陆账号密码

【物联网】掌控板SIOT测光线值图4
【物联网】掌控板SIOT测光线值图14

3、当A键按下,每隔2s定时采集光线值;当B键按下,取消采集光线值

【物联网】掌控板SIOT测光线值图7

【物联网】掌控板SIOT测光线值图8
[mw_shl_code=python,true]from mpython import *
import network
from umqtt.simple import MQTTClient
from machine import Timer
import ubinascii

my_wifi = wifi()
my_wifi.connectWiFi("*****************, "*****************")

mqtt = MQTTClient("hq", "192.168.1.6", 1883, "siot", "dfrobot", keepalive=30)

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

def mqtt_topic_68712f303031(_msg):
    oled.DispChar("", 0, 48, 1)
    oled.DispChar(_msg, 0, 48, 1)
    oled.show()

def timer1_tick(_):
    mqtt.publish("hq/001", (str(light.read())))

tim1 = Timer(1)

def on_button_a_down(_):
    oled.DispChar("定时采集光线值", 0, 32, 1)
    oled.show()
    tim1.init(period=5000, mode=Timer.PERIODIC, callback=timer1_tick)

def on_button_b_down(_):
    oled.DispChar("取消采集光线值", 0, 32, 1)
    oled.show()
    tim1.deinit()

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("hq/001")

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)


oled.fill(0)
oled.DispChar(my_wifi.sta.ifconfig()[0], 0, 0, 1)
oled.DispChar("连接成功", 0, 16, 1)
oled.show()
# 设置物联网服务器地址
while True:
    mqtt.wait_msg()
[/mw_shl_code]

五、运行服务器,采集数据:
1、解压SIoT1.0,双击SIoT文件,服务器开始运行

【物联网】掌控板SIOT测光线值图5

2、在浏览器输入网址127.0.0.1:8080,登陆 账号siot,密码:dfrobot,

说明:账号密码可以通过config.json文件进行修改。


【物联网】掌控板SIOT测光线值图6

3、项目,设备id在编写程序时系统根据主题自动建立

【物联网】掌控板SIOT测光线值图9

六、打开网页,导出数据

【物联网】掌控板SIOT测光线值图10


2、在网页中找到hq项目的001主题,就可以看到一个图表,直观显示数据。

【物联网】掌控板SIOT测光线值图13



七、知识拓展:
1、MQTT
   概念:MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议。
   特点:可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务,使其在物联网、小型设备、移动应用等方面有较广泛的应用
2、SIoT
   为一个为教育定制的跨平台的开源MQTT服务器程序,S指科学(Science)、简单(simple)的意思。
  SIoT支持Win10、Win7、Mac、Linux等操作系统,一键启动,无需用户注册或者系统设置即可使用。

日落光线值统计表.rar

734 Bytes, 下载次数: 6674

日落光线值

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
王尧坤
王尧坤
每天来学习点新东西
rzegkly
rzegkly
作者
回复王尧坤
相互学习,相互交流
gada888
gada888
MQTT搞的人头大。但这个看着简单的多
rzegkly
rzegkly
作者
回复gada888
谢谢,请多多指导!
ancenli
ancenli
好文不断啊
- 没有更多了 -