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

知识点:什么是掌控板?
掌控板是一块普及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。这里的“物”指的是我身边一切能与网络联通的物品。例如你带的手表、你骑的共享单车、马路上的汽车、家里的冰箱、路边的路灯、甚至是一棵树。只要一件物品能够与网络相连,它就都是物联网中的“物”。而所谓物联网,就是“物”与人,以及“物”与“物”之间,通过网络来传递和处理信息。

在这里插入图片描述

物联网的基本特征从通信对象和过程来看,物与物、人与物之间的信息交互是物联网的核心。物联网的基本特征可概括为整体感知、可靠传输和智能处理 。整体感知—可以利用射频识别、二维码、智能传感器等感知设备感知获取物体的各类信息。可靠传输—通过对互联网、无线网络的融合,将物体的信息实时、准确地传送,以便信息交流、分享。

智能处理—使用各种智能技术,对感知和传送到的数据、信息进行分析处理,实现监测与控制的智能化。根据物联网的以上特征,结合信息科学的观点,围绕信息的流动过程,可以归纳出物联网处理信息的功能:

(1)获取信息的功能。主要是信息的感知、识别,信息的感知是指对事物属性状态及其变化方式的知觉和敏感;信息的识别指能把所感受到的事物状态用一定方式表示出来。

(2)传送信息的功能。主要是信息发送、传输、接收等环节,最后把获取的事物状态信息及其变化的方式从时间(或空间)上的一点传送到另一点的任务,这就是常说的通信过程。

(3)处理信息的功能。是指信息的加工过程,利用已有的信息或感知的信息产生新的信息,实际是制定决策的过程。

(4)施效信息的功能。指信息最终发挥效用的过程,有很多的表现形式,比较重要的是通过调节对象事物的状态及其变换方式,始终使对象处于预先设计的状态 。

在这里插入图片描述
2、OneNET平台

是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。OneNET平台作为连接和数据的中心,能适应各种传感网络和通信网络,将面向智能家居、可穿戴设备、车联网、移动健康、智能创客等多个领域开放。

中移OneNET,将数据传输协议、数据储存格式等中间层的东西标准化,形成一个统一、开源的设备云平台,标准化、简约化、集成化,减少企业负担的同时为下一阶段的大数据分析提供基础条件。

核心能力输出

OneNET作为设备连接和数据的中心,面向物联网产业上下游企业提供标准化接入和定制化开发,具体能力输出包含2个方面:

  1. 硬件侧:平台适配各种网络环境、兼容国内外主流通信协议,定制化支撑私有通信协议,以及完备的SDK包,可支持各类传感器和智能硬件的快速接入和可控触发控制;还提供对智能硬件的网络状态、终端状态、流量情况、位置信息进行全面的管理和监控;

  2. 软件侧:平台通过丰富的API、应用孵化器、轻应用行业模板支持各类智能硬件和行业应用的图形化展示、SaaS层软件开发,满足物联网领域数据存储、数据安全、大数据分析等平台级服务需求。

OneNET平台在提供设备连接服务和数据中心服务的基础上进行开放合作,面向智能硬件创客和创业型企业推出硬件社区服务(包括硬件集市、双创云等),以及数据展现、数据分析和应用生成服务;面向重点行业领域/大客户推出行业PaaS服务和提供行业应用定制化开发服务。

IoT PaaS基础能力:提供智能设备自助开发工具、后台技术支持服务、物联网专网、短彩信、位置定位、设备管理、消息分发、远程升级等基础服务

SaaS业务服务:提供第三方应用开发平台,快速实现不同业务需求,借助轻应用孵化器快速搭建Web和APP应用

IoT数据云:提供高扩展的数据库、实时数据处理、智能预测离线数据分析、数据可视化展示等多维度的业务运营服务

开发者社区:高频的开发者社区,汇聚着不同的知识源,集合更多的物联网爱好者,让项目与开发成果开始传播

在这里插入图片描述
5、在电脑查看掌控板实时的光线值

掌控板上显示电脑上发送的命令(字符串),并点亮红色灯;当发送“open”命令时,掌控板传送“光线值”的数据流到电脑,并点亮蓝色灯,发送“close”,蓝灯熄灭。

#MicroPython动手做(26)——物联网之OneNET
#在电脑查看掌控板实时的光线值

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

my_wifi = wifi()

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

def OneNET_recv(_msg):pass
_OneNET_msg_list = []
def OneNET_callback(_topic, _msg):
    global _OneNET_msg_list
    try: _msg = _msg.decode('utf-8', 'ignore')
    except: print(_msg);return
    OneNET_recv(_msg)
    if _msg in _OneNET_msg_list:
        eval('OneNET_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim14 = Timer(14)

_iot_count = 0
def timer14_tick(_):
    global _iot, _iot_count
    _iot_count = _iot_count + 1
    if _iot_count == 1000: _iot.ping(); _iot_count = 0
    try: _iot.check_msg()
    except: machine.reset()

_iot = None
def OneNET_setup():
    global _iot
    _iot = MQTTClient("600844609", "183.230.40.39", 6002, "350265", "l6S0BsjGXsQACV3hBhml7=3hgCo=", keepalive=300)
    _iot.set_callback(OneNET_callback)
    if 1 == _iot.connect(): print('Successfully connected to MQTT server.')
    tim14.init(period=200, mode=Timer.PERIODIC, callback=timer14_tick)

def pubdata(_dic):
    print(_dic)
    _list = []
    for _key in list(_dic.keys()):
        _d = {'id':_key,'datapoints':[{'value':_dic[_key]}]}
        _list.append(_d)
    _data = {'datastreams': _list}
    j_d = json.dumps(_data)
    j_l = len(j_d)
    arr = bytearray(j_l + 3)
    arr[0] = 1
    arr[1] = int(j_l / 256)
    arr[2] = j_l % 256
    arr[3:] = j_d.encode('ascii')
    return arr

def OneNET_recv(_msg):
    oled.fill(0)
    oled.DispChar(_msg, 0, 0, 1)
    oled.show()
    if _msg.isdigit():
        rgb.fill( (int((int(_msg))), int(0), int(0)) )
        rgb.write()
        time.sleep_ms(1)

_OneNET_msg_list.append('open')
def OneNET_recv_6f70656e():
    rgb.fill((int(0), int(0), int(153)))
    rgb.write()
    time.sleep_ms(1)

_OneNET_msg_list.append('close')
def OneNET_recv_636c6f7365():
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)


OneNET_setup()
while True:
    _iot.publish('$dp', pubdata({"light":light.read()}))
    time.sleep(3)

mPython X 实验图形编程

在这里插入图片描述

在电脑查看掌控板实时的光线值

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

在电脑查看掌控板实时的光线值

在这里插入图片描述

OneNET平台上的下发命令记录

在这里插入图片描述

原来也能传送汉字

在这里插入图片描述
输入数字1-255(设置字符串格式),则自动调整RGB红灯的不同亮度

在这里插入图片描述

6、通过OneNET平台控制小车的进退左右

#MicroPython动手做(26)——物联网之OneNET
#通过OneNET平台控制小车的进退左右

from mpython import *

import network

my_wifi = wifi()

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

import music

import time

from umqtt.simple import MQTTClient

from machine import Timer

import machine

import ubinascii

def OneNET_recv(_msg):pass
_OneNET_msg_list = []
def OneNET_callback(_topic, _msg):
    global _OneNET_msg_list
    try: _msg = _msg.decode('utf-8', 'ignore')
    except: print(_msg);return
    OneNET_recv(_msg)
    if _msg in _OneNET_msg_list:
        eval('OneNET_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim14 = Timer(14)

_iot_count = 0
def timer14_tick(_):
    global _iot, _iot_count
    _iot_count = _iot_count + 1
    if _iot_count == 1000: _iot.ping(); _iot_count = 0
    try: _iot.check_msg()
    except: machine.reset()

_iot = None
def OneNET_setup():
    global _iot
    _iot = MQTTClient('600999469', '183.230.40.39', 6002, '350265', 'l6S0BsjGXsQACV3hBhml7=3pwCo=', keepalive=300)
    _iot.set_callback(OneNET_callback)
    if 1 == _iot.connect(): print('Successfully connected to MQTT server.')
    tim14.init(period=200, mode=Timer.PERIODIC, callback=timer14_tick)

import parrot

def forward():
    parrot.set_speed(parrot.MOTOR_1, 80)
    parrot.set_speed(parrot.MOTOR_2, 80)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Forward.pbm', 0), 32, 0)
    oled.show()

def retreat():
    parrot.set_speed(parrot.MOTOR_1, -80)
    parrot.set_speed(parrot.MOTOR_2, -80)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Backward.pbm', 0), 32, 0)
    oled.show()

def right():
    parrot.set_speed(parrot.MOTOR_1, 80)
    parrot.set_speed(parrot.MOTOR_2, -0)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Right.pbm', 0), 32, 0)
    oled.show()

def Left():
    parrot.set_speed(parrot.MOTOR_1, -0)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Left.pbm', 0), 32, 0)
    oled.show()

_OneNET_msg_list.append('进')
def OneNET_recv_e8bf9b():
    rgb.fill((int(0), int(102), int(0)))
    rgb.write()
    time.sleep_ms(1)
    forward()

_OneNET_msg_list.append('退')
def OneNET_recv_e98080():
    rgb.fill((int(51), int(102), int(255)))
    rgb.write()
    time.sleep_ms(1)
    retreat()

_OneNET_msg_list.append('左')
def OneNET_recv_e5b7a6():
    rgb[0] = (int(0), int(102), int(0))
    rgb.write()
    time.sleep_ms(1)
    Left()

_OneNET_msg_list.append('右')
def OneNET_recv_e58fb3():
    rgb[2] = (int(0), int(102), int(0))
    rgb.write()
    time.sleep_ms(1)
    right()

image_picture = Image()
oled.fill(0)
oled.DispChar('   请准备好物联网控制', 0, 16, 1)
oled.show()
music.play('G5:1')
rgb[1] = (int(255), int(0), int(0))
rgb.write()
time.sleep_ms(1)
OneNET_setup()
while True:
    oled.fill(0)
    parrot.set_speed(parrot.MOTOR_1, 0)
    parrot.set_speed(parrot.MOTOR_2, 0)
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)
    oled.show()
    time.sleep(2)

mPython 实验图形编程

在这里插入图片描述

mPython 实验图形编程2

在这里插入图片描述

通过OneNET平台控制小车的进退左右

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32系列是一种微控制器芯片系列,其中HAL库是STM32提供的一个高级应用层库,可以方便地进行硬件抽象和外设驱动。ESP8266-01S是一种常用的物联网模块,可以通过Wi-Fi连接互联网。OneNET是华为提供的物联网云平台,可以将设备的数据上传到云端。 要在STM32系列芯片上利用HAL库连接ESP8266-01S模块,并实现数据上传到OneNET平台,需执行以下步骤: 1. 初始化STM32的串口和GPIO配置,以连接ESP8266-01S模块。通过串口与模块进行通信,以发送AT指令控制模块的工作。 2. 通过串口发送AT指令,使ESP8266-01S模块连接到Wi-Fi网络。这些AT指令包括设置Wi-Fi SSID、密码等,并执行连接操作。 3. 通过串口发送AT指令,使ESP8266-01S模块与OneNET平台建立TCP或UDP连接。这些AT指令包括设置服务器地址和端口号,并执行连接操作。 4. 编写STM32的C代码,通过HAL库函数,将需要上传的数据封装为JSON格式,并发送到ESP8266-01S模块。 5. ESP8266-01S模块收到数据后,通过已建立的TCP或UDP连接,将数据上传到OneNET平台。通过发送AT指令,模块将数据作为HTTP请求发送到OneNET的数据接口。 6. 在OneNET平台上可以配置数据接口和数据流。数据接口是OneNET平台提供的用于接收数据的API接口,数据流是数据的分类和整理方式。 通过以上步骤,可以实现STM32系列芯片利用HAL库连接ESP8266-01S模块,并通过模块将数据上传到OneNET平台。这样,可以方便地将STM32芯片连接到物联网,并通过OneNET平台实现远程监控和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值