[原创] MicroPython动手做(31)——物联网之Easy IoT

eagler8   2020-6-10 11:59 楼主

0.png

 

1、物联网的诞生
美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网报告2005:物联网》,正式提出物联网时代来临。

物联网(IoT)一词是由Kevin Ashton 于1999年在Proctor&Gamble的一次演讲中创造的 。他是麻省理工学院Auto-ID实验室的联合创始人。他率先将RFID(用于条形码检测器)用于供应链管理领域。他还创立了Zensi,一家生产能量传感和监测技术的公司。 所以,让我首先向您介绍Kevin Ashton的一句话,他在2009年为RFID期刊撰写了这篇文章。这将有助于您从核心理解物联网。

如果我们拥有能够了解所有事情的计算机 - 使用他们在没有我们任何帮助的情况下收集的数据 - 我们将能够跟踪和计算所有内容,并大大减少浪费,损失和成本。我们知道什么时候需要更换,修理或召回,以及它们是新鲜的还是过去的。 我们需要用他们自己的收集信息的方式赋予计算机权力,这样他们就可以随意地看到,听到和闻到这个世界。

上面凯Kevin的应用会让你了解物联网发展背后的意识形态。现在让我们尝试进一步简化这个术语,从根本上理解物联网。在此之后,我们将继续前进,并寻求物联网的好处。

回复评论 (33)

0-6.png

 

2、什么是物联网?

大家在听到物联网时,脑海中会出现一个什么样的印象呢?物联网的英语是Internet of Things,缩写为IoT,这里的“物”指的是我们身边一切能与网络相连的物品。例如您身上穿着的衣服、戴着的 手表、家里的家用电器和汽车,或者是房屋本身,甚至正在读的这本书,只要能与网络相连,就都是物联网说的“物”。

 

物联网(Internet of Things,缩写IoT)是一个基于互联网、传统电信网等信息承载体,让所有能够被寻找网络联机的对象,实现互联互通的网络。就像我们用互联网在彼此之间传递信息一样,物联网就是“物”之间通过连接互联网来共享信息并产生有用的信息,而且无需人为管理就 能运行的机制。他们可以互相感知和沟通。现在想象一下,无生命的物体是否可以在没有任何人为干预的情况下感知并相互作用。听起来很神奇不是吗?

点赞  2020-6-10 12:02

3. 物联网架构

 

目前物联网架构通常分为感知层、网络层和应用层三个层次,也有四层架构、五层架构和七层架构的分法,不过我们这里使用通常使用的三层架构进行说明。图示如下:

 

(1)感知层

 

与环境交互的传感器,执行器和边缘设备

 

感知层是物联网的皮肤和五官,用于识别物体、感知物体、采集信息、自动控制,比如装在空调上的温度传感器识别到了室内温度高于30度,把这个信息收集后,自动打开了空调进行制冷;这个层面涉及到的是各种识别技术、信息采集技术、控制技术。而且这些技术是交叉使用的的,各种感知有些是单一的,有些则是综合的,比如机器人就是整合了各种感知系统。 这一层最常见的就是各种传感器,用于替代或者延展人类的感官完成对物理世界的感知,也包括企业信息化过程中用到的RFID以及二维码技术。

 

(2) 网络层

 

通过网络并与应用层协调发现,连接和转换设备

 

网络层则主要实现信息的传递、路由(决定信息传递的途径)和控制(控制信息如何传递),分为两大部分, 一部分是物联网的通信技术,一部分是物联网的通讯协议,通讯技术负责把物与物从物理上链接起来,可以进行通信,通讯协议则负责建立通信的规则和统一格式。

 

物联网通讯协议和通讯技术一样的多,如MQTT、DDS、AMQP、XMPP、JMS、REST、CoAP、OPC UA。网络层就相当于人的大脑和神经中枢,主要负责传递和处理感知层获取的信息。

 

(3)应用层

 

为用户提供专业服务和功能的数据处理和存储

 

是在各种物联网通讯协议的支持下,对物联网形成的数据在宏观层面进行分析并反馈到感知层执行特定控制功能,包括控制物与物之间的协同,物与环境的自适应,人与物的协作。 应用层个人理解可分为两大部分,一部分是通用的物联网平台,建立在云平台之上,可以是IAAS/PASS/SAAS的一种或者混合。 目前已经有不少企业推出了物联网平台,比如树根互联、百度云天工、腾讯QQ物联智能硬件开放平台、阿里Link物联网平台、SAP Leonardo、亚马逊AWS、微软Azure、Google Cloud IoT Core。 另外一部分是在这个通用的物联网平台上再产生具体应用,这些应用类似于手机App,具体应用就是如何具体控制这些物如何收集信息,如何进行控制物。

 

这些具体应用场景包括:

个人应用:可穿戴设备、运动健身、健康、娱乐应用、体育、玩具、亲子、关爱老人;

智能家居:家庭自动化、智能路由、安全监控、智能厨房、家庭机器人、传感检测、智能宠物、智能花园、跟踪设备;

智能交通:车联网、智能自行车/摩托车(头盔设备)、无人驾驶、无人机、太空探索;

企业应用:医疗保健、零售、支付/信用卡、智能办公室、现代农业、建筑施工;

工业互联网:智能制造、能源工业、供应链、工业机器人、工业可穿戴设备(智能安全帽等);

从应用层面可以看出,物联网真的是可以无处不用,无处不在。物联网的最终目标是实现任何物体在任何时间、任何地点的链接,帮助人类对物理世界具有“全面的感知能力、透彻的认知能力和智慧的处理能力”。

 

0-8.png

点赞  2020-6-10 14:05

4、Easy IoT是什么  

Easy IoT是一个国际化物联网服务平台 http://iot.dfrobot.com.cn/,可以对联网的传感器/执行器数据进行实时监控和反馈,统计和分析已经接收的数据,并向传感器/执行器发送数据,帮助实现控制效果。

 

 为什么用Easy IoT ——Easy IoT  PC端和移动端

 

上手简单,即看即用
有pc端和移动端,国内国外随时随地使用
兼容多种硬件
支持HTTP或MQTT通信
提供配套硬件(Obloq)、库文件和示例程序
完善的使用示例文档
帮助入门者迅速开始一个物联网项目的实践

 

00.png

点赞  2020-6-10 14:31

目录清单
MicroPython动手做(01)——春节后入手了一块K210芯片AI开发板 
https://bbs.eeworld.com.cn/thread-1115786-1-1.html

MicroPython动手做(02)——尝试搭建K210开发板的IDE环境
https://bbs.eeworld.com.cn/thread-1115831-1-1.html

MicroPython动手做(03)——零基础学MaixPy之开机运行
https://bbs.eeworld.com.cn/thread-1116184-1-1.html

MicroPython动手做(04)——零基础学MaixPy之基本示例
https://bbs.eeworld.com.cn/thread-1116438-1-1.html

MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
https://bbs.eeworld.com.cn/thread-1116577-1-1.html

MicroPython动手做(06)——零基础学MaixPy之单目摄像头
https://bbs.eeworld.com.cn/thread-1116591-1-1.html

MicroPython动手做(07)——零基础学MaixPy之机器视觉
https://bbs.eeworld.com.cn/thread-1116617-1-1.html

MicroPython动手做(08)——零基础学MaixPy之识别颜色 
https://bbs.eeworld.com.cn/thread-1116662-1-1.html

MicroPython动手做(09)——零基础学MaixPy之人脸识别
https://bbs.eeworld.com.cn/thread-1116720-1-1.html

MicroPython动手做(10)——零基础学MaixPy之神经网络KPU
https://bbs.eeworld.com.cn/thread-1116925-1-1.html

MicroPython动手做(11)——搭建掌控板IDE环境
https://bbs.eeworld.com.cn/thread-1117964-1-1.html

MicroPython动手做(12)——掌控板之Hello World
https://bbs.eeworld.com.cn/thread-1118180-1-1.html

MicroPython动手做(13)——掌控板之RGB三色灯 
https://bbs.eeworld.com.cn/thread-1118275-1-1.html

MicroPython动手做(14)——掌控板之OLED屏幕
https://bbs.eeworld.com.cn/thread-1118389-1-1.html

MicroPython动手做(15)——掌控板之AB按键
https://bbs.eeworld.com.cn/thread-1118496-1-1.html

MicroPython动手做(16)——掌控板之图片图像显示
https://bbs.eeworld.com.cn/thread-1118945-1-1.html

MicroPython动手做(17)——掌控板之触摸引脚
https://bbs.eeworld.com.cn/thread-1119462-1-1.html

MicroPython动手做(18)——掌控板之声光传感器
https://bbs.eeworld.com.cn/thread-1119583-1-1.html

MicroPython动手做(19)——掌控板之蜂鸣器与音乐
https://bbs.eeworld.com.cn/thread-1119668-1-1.html

MicroPython动手做(20)——掌控板之三轴加速度
https://bbs.eeworld.com.cn/thread-1119998-1-1.html

MicroPython动手做(21)——掌控板之磁场传感器
https://bbs.eeworld.com.cn/thread-1120188-1-1.html

MicroPython动手做(22)——掌控板之无线广播
https://bbs.eeworld.com.cn/thread-1120835-1-1.html

MicroPython动手做(23)——掌控板之WiFi与蓝牙
https://bbs.eeworld.com.cn/thread-1120934-1-1.html

MicroPython动手做(24)——掌控板之拓展掌控宝 
https://bbs.eeworld.com.cn/thread-1121208-1-1.html

MicroPython动手做(25)——语音合成与语音识别
https://bbs.eeworld.com.cn/thread-1123752-1-1.html

MicroPython动手做(26)——物联网之OneNET
https://bbs.eeworld.com.cn/thread-1125172-1-1.html

MicroPython动手做(27)——物联网之微信小程序
https://bbs.eeworld.com.cn/thread-1125520-1-1.html

MicroPython动手做(28)——物联网之Yeelight
https://bbs.eeworld.com.cn/thread-1125939-1-1.html

MicroPython动手做(29)——物联网之SIoT
https://bbs.eeworld.com.cn/thread-1126090-1-1.html

 MicroPython动手做(30)——物联网之Blynk

https://bbs.eeworld.com.cn/thread-1126427-1-1.html

MicroPython动手做(31)——物联网之Easy IoT 

https://bbs.eeworld.com.cn/thread-1126903-1-1.html

点赞  2020-6-10 14:40

5、注册一个Easy IoT账号

 

中国服务器:http://iot.dfrobot.com.cn
全球服务器:http://iot.dfrobot.com

 

0-99.png

本帖最后由 eagler8 于 2020-6-17 17:05 编辑
点赞  2020-6-17 16:02

6、登录Easy IoT,进入工作间

 

http://iot.dfrobot.com.cn/workshop.html?token=c0da2195355640ae94e9e08b04f34604

添加新的设备

 

01.png

 

点赞  2020-6-17 16:15

7、Easy IoT平台介绍
(1)用户密码区域,自动生成用户和密码,不能修改,掌控板用户和密码要和平台的用户和密码一致。
(2)重新生成用户名和密码,点击右侧眼睛显示用户名和密码。
(3)主题区域,每一个主题代表不同类型的命令,当平台发布了该主题的命令,接收端会对应执行这个主题的程序,主题名称自动生成,无法修改,点击发送消息,进入主题,发送命令。
(4)最多可添加5个新主题。
 

03.png

 

本帖最后由 eagler8 于 2020-6-17 17:12 编辑
点赞  2020-6-17 16:42

点击发送消息后,会出现如下界面,通过它发送字符串给掌控板。

 

04.png

点赞  2020-6-17 17:18

8、测试Easy IoT平台发送消息

 

#MicroPython动手做(31)——物联网之Easy IoT
#测试Easy IoT平台发送消息

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("664fa81baa7fe777", "182.254.130.180", 1883, "qlZ0uezGR", "3_W0uezGgz", keepalive=30)

mqtt.set_last_will("TvkJXezMR", "I am offline")

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

def mqtt_topic_54766b4a58657a4d52(_msg):
    rgb[1] = (int(102), int(0), int(0))
    rgb.write()
    time.sleep_ms(1)
    oled.invert(0)
    oled.DispChar((str(_msg)), 0, 0, 1)
    oled.show()

def mqtt_topic_5a6c423074575a4d67(_msg):
    rgb[2] = (int(51), int(51), int(255))
    rgb.write()
    time.sleep_ms(1)
    oled.fill_rect(0, 16, 128, 16, 0)
    oled.DispChar((str(_msg)), 0, 16, 1)
    oled.show()

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("TvkJXezMR")

def timer14_tick(_):
    mqtt.ping()

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

mqtt.subscribe("ZlB0tWZMg")


music.play('D5:1')
rgb[0] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
mqtt.publish("TvkJXezMR", "hello")
mqtt.publish("ZlB0tWZMg", "world")
while True:
    mqtt.wait_msg()

 

点赞  2020-6-17 17:47

06-.jpg

点赞  2020-6-17 17:51

mPython X 实验图形编程

 

05.png

点赞  2020-6-17 18:21

二个设备接收到消息的情况

 

06--.png

 

07.png

点赞  2020-6-17 18:24

9、通过Easy IoT平台远距控制开关RGB灯

 

#MicroPython动手做(31)——物联网之Easy IoT
#通过Easy IoT平台远距控制开关RGB灯

from mpython import *

import network

my_wifi = wifi()

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

from umqtt.simple import MQTTClient

mqtt = MQTTClient('0805e3d04f3b34e7', '182.254.130.180', 1883, 'qlZ0uezGR', '3_W0uezGgz', keepalive=30)

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

mqtt.set_last_will('TvkJXezMR', 'Ready!')

import time

import music

from machine import Timer

import ubinascii

def mqtt_topic_54766b4a58657a4d52(_msg):
    oled.DispChar((str(_msg)), 55, 24, 1)
    oled.show()
    if 'on' == _msg:
        music.play('D5:1')
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        oled.DispChar('开灯', 52, 36, 1)
        oled.show()
    elif 'off' == _msg:
        music.play('F5:1')
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)
        oled.DispChar('关灯', 52, 36, 1)
        oled.show()

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("TvkJXezMR")

def timer14_tick(_):
    mqtt.ping()

tim14 = Timer(14)
tim14.init(period=20000, mode=Timer.PERIODIC, callback=timer14_tick)
oled.invert(0)
oled.DispChar('Hello, world!', 24, 10, 1)
oled.show()
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
music.play('G5:1')
while True:
    mqtt.wait_msg()

 

点赞  2020-6-17 19:24

通过Easy IoT平台远距控制开关RGB灯

 

12.gif

点赞  2020-6-17 19:35

mPython  实验图形编程

 

07-.png

点赞  2020-6-17 19:39

TvkJXezMR设备接收到的命令消息

 

08.png

点赞  2020-6-17 19:43

10、输入数字远距离画空心园

 

#MicroPython动手做(31)——物联网之Easy IoT
#输入数字远距离画空心园

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("664fa81baa7fe777", "182.254.130.180", 1883, "qlZ0uezGR", "3_W0uezGgz", keepalive=30)

mqtt.set_last_will("ZlB0tWZMg", "Hello, world!")

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

def mqtt_topic_5a6c423074575a4d67(_msg):
    if int(_msg) < 32:
        rgb.fill((int(0), int(0), int(153)))
        rgb.write()
        time.sleep_ms(1)
        music.play('E5:1')
        oled.fill(0)
        oled.circle(64, 32, (int(_msg)), 1)
        oled.show()
    else:
        rgb.fill((int(102), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        oled.fill(0)
        oled.DispChar("请输入正整数", 30, 12, 1)
        oled.DispChar("数值应小于32", 30, 24, 1)
        oled.show()

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("ZlB0tWZMg")

def timer14_tick(_):
    mqtt.ping()

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


music.play('D5:1')
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
oled.invert(0)
oled.DispChar("远距画空心圆", 30, 12, 1)
oled.show()
while True:
    mqtt.wait_msg()

 

点赞  2020-6-17 20:28

13-.jpg

 

19-.jpg

点赞  2020-6-17 20:31

mPython X 实验图形编程

 

23.png

点赞  2020-6-17 20:36
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复