2021-8-2 15:54:45 [显示全部楼层]
1040浏览
查看: 1040|回复: 0

[BXY高中信息技术教程] 「BXY」掌控板 高中信息技术教程—防盗警报系统

[复制链接]
一、实践情境
人随着社会的不断发展、科学技术的进步,人们的生活水平也有了极大的提高,私有财产也在无形中慢慢增多,因此人们对家庭防盗系统提出新的要求。为此,在这节课上,我们将设计一个防盗警报系统,能够在家中闯入不速之客时报警提醒我们。

MonAugust-202108026737..png

二、实践目标

本实践项目运用两块掌控板作为智能终端,结合红外线光电开关来实现人的检测和警报功能。

三、知识目标

  1. 认识红外线光电开关;
  2. 理解红外线光电开关的使用和接线方法,能根据连线图进行实物连接;
  3. 掌握以掌控板为智能终端,通过BXY软件编写代码采集红外线光电开关反馈数据的方法;
  4. 掌握以掌控板为智能终端,通过BXY软件编写代码实现两块主控板之间的数据传送.

四、实践准备

硬件清单

掌控板x1 I/O扩展板x1 红外线光电开关 x1 Type-C&Micro二合一USB线x1

软件使用:BXY编程软件

知识链接

  • 红外线光电开关

简介:红外线光电开关是一款通过红外测距的检测开关,检测障碍距离为0-2m,可通过调节螺母进行调节。模块抗干扰能力强,检测反应灵敏。它可以应用于很多方面,如电子门童、自动门、停车位检测等。红外线光电开关可用于各种应用场合,在使用红外线光电开关时,应注意环境条件,以使红外线光电开关能够正常可靠的工作。红外线光电开关在环境照度较高时,一般都能稳定工作。但应避免将传感器光轴正对太阳光、白炽灯等强光源。

五、实践过程

在本项目中,我们将利用两块掌控板和红外线光电开关,分三步设计一个防盗报警系统。系统中,一块掌控板通过红外线光电传感器检测人并将数据发送出来,另一块掌控板接收数据并实现警报功能。

  1. 实时检测红外数据
  2. 发送数据
  3. 接收数据

任务1:红外数据实时检测

1、硬件搭建

STEP1:将一块掌控板插入I/O扩展板,注意正反

STEP2:按下图通过连接线将红外线光电开关接入扩展板。

STEP3:通过USB连接线将掌控板接到计算机。

2、软件编写

STEP1:软件设置

1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“掌控板”。
(2)新建项目,保存并命名为“z5.1”。

STEP2:程序编写

from mpython import * # 导入mpython模块
import time

p8=MPythonPin(8,PinMode.IN)     #将引脚(P8)设置为"PinMode.IN"模式

while True:
    value=p8.read_digital()      # 读取P8引脚的数字输入
    oled.DispChar("Button_a:%d" %value,30,20)   # 显示至oled上
    oled.show()                                  # 刷新
    oled.fill(0)                                 # 清屏
    time.sleep(0.1)

3、运行调试

STEP1:点击“烧录”上传程序并运行

观察掌控板,我们可以发现当红外线光电开关前有障碍物时,屏幕显示的值为0,而当开关前空无一物时,屏幕则显示数值1。


任务2:发送红外数据

在上个任务中,我们已经成功借助红外线光电开关来实现人的检测。当有人经过时,传感器的反馈值会由1变为0。但刚才我们仅仅是在软件终端显示了数据。接下来我们需要将数据发送出来,以便后续另一块掌控板接收数据并反馈。

1、软件编写

STEP1:软件设置

1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“掌控板”。
(2)新建项目,保存并命名为“z5.2”。

STEP2:程序编写

from mpython import *
import time
import radio

p8=MPythonPin(8,PinMode.IN)
# 实例化MPythonPin,将引脚(P8)设置为"PinMode.IN"模式
radio.on()
radio.config(channel = 7)

while True:
    alarm=p8.read_digital()
    if alarm == 0:
        radio.send("Warning")
        oled.DispChar("nonnono" ,30,20)
        oled.show()
        oled.fill(0)
    else:
        radio.send("Safe")
        oled.DispChar("okokok" ,30,20)
        oled.show()
        oled.fill(0)

注:关于radio的介绍可见附录1

2、运行调试

STEP1:点击“烧录”上传程序并运行

观察掌控板,我们可以发现当有人从红外线光电开关前经过时,屏幕显示“nonono”。当人离开后,屏幕则显示“okokok”


任务3:接收红外数据

在之前的任务中,我们已经利用红外线光电传感器实现了人的检测并将数据发送出来,接下来,我们还需使另一个掌控板接收数据并模拟警报功能。

1、软件编写

STEP1:软件设置

1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“掌控板”。
(2)新建项目,保存并命名为“z5.3”。

STEP2:程序编写

from mpython import *
import radio
import _thread

radio.on()
radio.config(channel=7) # radio通道设置

def rec_loop(): # radio接收循环
    while True:
        value=radio.receive() # radio 接收数据,返回msg
        if value: # 当接收到数据时显示
            oled.DispChar(value,30,20)
            oled.show()
            oled.fill(0)

_thread.start_new_thread(rec_loop, ())

2、运行调试

STEP1:更换掌控板

STEP2:上传且运行程序,并使两块掌控板都通电

红外光电开关前无障碍物时,发射端掌控板屏幕显示okokok,接收端掌控板屏幕显示Safe。

发射端红外光电开关前有障碍物时,发射端掌控板屏幕显示nonono,接收端掌控板屏幕显示Warning。

六、延伸拓展

拿出手中的红外线光电开关,测试当它前方距离多少时会触发?检测每次测试结果是否相同,想一想这是为什么呢?


附录

附录1:扩展阅读

  • radio无线广播相关功能

简介:radio 模块提供无线广播功能,支持13 频道(Channel),在相同的频道(Channel)内能接收到成员发出的广播消息,适合10米范围内的多板组网的通讯。

要使用此模块首先需要:

  • import radio

    函数

  • radio.on()

    开启无线功能

  • radio.off()

    关闭无线功能

  • radio.config(channel)

    配置无线参数
    channel (int): 无线通道,范围1~13

  • radio.receive()

    接收无线广播消息,消息以字符串形式返回。最大可接收250字节数据。如果没有接收到消息,则返回 None 。当 receive 内参数为 True ,即 receive(True) ,返回(msg,mac)的二元组。默认缺省 receive(False) ,即只返回msg。

  • radio.send()

    发送无线广播消息,发送数据类型为字符串。当发送成功后返回True,否则返回False。


Z5.zip

2.21 KB, 阅读权限: 10, 下载次数: 3

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail