所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

「BXY」micro:bit 高中信息技术教程—智能晾衣架

EVE EVE 2021-08-06 18:46:41
0
0
简单
一、实践情境

晾晒衣服是我们的生活日常。然而由于天气的变化多端,我们在晾晒衣服时可能会碰到突发下雨的情况,使得衣服全部淋湿。同样的,有时我们也会因为忘收衣服致使其被第二天的露水打湿。
为此,我们将设计一个智能的晾衣装置,能够在天气变化和晾衣结束时自动将衣物收进来。

projectImage

 二、实践目标
本实践项目运用micro:bit作为智能终端,通过水分传感器和光线传感器来采集水分和环境光线,并借助舵机实现智能收衣的功能。

三、知识目标
1. 认识水分传感器、光线传感器、舵机等硬件设备;
2. 理解上述不同元器件的使用和接线方法,能根据连线图进行实物连接;
3. 掌握以micro:bit为智能终端,通过BXY软件编写代码采集湿度与环境光线数据的方法;
4. 掌握以micro:bit为智能终端,通过BXY软件编写代码控制舵机运转的方法;

 四、实践准备
       硬件清单:

projectImage
材料清单 材料清单
1x
micro:bit开发板
1x
I/O扩展板
1x
DMS-MG90 金属9g舵机
1x
模拟环境光线传感器及模拟连接线
1x
Type-C&Micro二合一USB线
1x
Gravity: 水分传感器

软件使用:BXY编程软件

知识链接

- 舵机

简介:舵机是一种可以指定控制位置(角度)的电机,可以通过程序来指定控制舵机旋转的角度。我们最常用的舵机大多最大旋转角度是0°~180°,也有90°或者其他角度的。也有比较特殊的360°舵机,但是360°舵机不能够控制其旋转到指定的角度。这里使用的是180°舵机。

projectImage

- 水分传感器

简介:水分传感器是一个利用湿度方式检测有没有水分的传感器,可以检测有没有下雨。将传感器放置在室外,当有雨水滴到花瓣状检测面上时,湿度增大,随之电压升高。

> Tips:空气湿度和是否下雨之间没有必然的联系,空气湿度高并不代表天气是雨天。因此,这里不使用之前的DHT11温湿度传感器。

projectImage

- 光线传感器

简介:基于PT550环保型光敏二极管的光线传感器,可以用来对环境光线的强度进行检测。通常用来制作随光线强度变化产生特殊效果的互动作品。
 

projectImage

 五、实践过程

在本项目中,我们将利用水分传感器和光线传感器,分三步设计一个智能晾衣装置,来实时检测水分和环境光线,并利用舵机实现智能收衣的功能。

1、实时检测水分和环境光线
2、舵机动起来
3、实现智能收衣功能

 任务1:水分与环境光实时检测
          1、硬件搭建
**STEP1**:将micro:bit开发板插入I/O扩展板,注意正反,LED点阵屏朝扩展板的“micro:bit”图标方向

**STEP2**:通过传感器连接线将水分传感器和光线传感器分别连在扩展板的P0和P1端口。其中,红线和黑线分别对应电源正极和负极,蓝线对应信号线,用来传输信号。

> 注:使用水分传感器时,只有金属花朵部分可以接触水,其他部位不可接触水,否则可能烧毁硬件。
 

projectImage

**STEP3**:通过USB连接线将micro:bit接到计算机。

 2、软件编写
**STEP1**:软件设置

1、创建与保存项目文件

(1)启动BXY编程软件,选择主控类型“micro:bit”。

(2)新建项目,保存并命名为“m3.1”。

**STEP2**:程序编写

代码 代码
	                    					from microbit import * 

while True: 
    val = pin0.read_analog() 
    va2 = pin1.read_analog()
    print("水分:",val,"   光线:",va2) 
    sleep(500)
	                    				

3、运行调试
**STEP1**:点击“烧录”上传程序并观察终端
观察软件,我们可以发现测得的水分和光线值实时显示在终端中
 

projectImage

**STEP2**:将湿纸巾放在水分传感器的金属花朵上
观察软件终端,我们可以发现水分传感器检测到的数值明显增大。

projectImage

**STEP3**:用手遮住光线传感器
再次观察软件终端,我们可以发现光线传感器检测到的数值明显减小。

projectImage

 任务2:舵机动起来
在上个任务中,我们已经完成了对于水分和环境光的实时检测,接下来,我们将在此基础上添加舵机并使其转动。

1、硬件搭建
STEP1:通过连接线将舵机连在扩展板的P8端口。
> 注1:舵机工作角度需要根据实际情况进行调整,调整可以从程序中直接修改舵机移动的角度或者调整舵机上舵盘的初始位置。

projectImage

2、软件编写
**STEP1**:软件设置
1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“micro:bit”。
(2)新建项目,保存并命名为“m3.2”。

**STEP2**:程序编写
 

代码 代码
	                    					from microbit import * 
import Servo 

sv=Servo(pin8) 
while True: 
    sv.angle(0) 
    sleep(1000) 
    sv.angle(90) 
    sleep(1000) 
    sv.angle(180) 
    sleep(1000) 
    sv.angle(90) 
    sleep(1000)
	                    				

3、运行调试
**STEP1**:外接电源

projectImage


> 注:使用舵机时,需要外接电源,给扩展板上电源接口供电,否则可能会出现舵机不转或者程序无法烧录的情况。

**STEP2**:点击“烧录”上传程序,并观察效果
观察舵机,我们可以看到舵机在0-90-180-90-0间来转动。

任务3:智能收衣
在之前的两个任务中,我们已经完成了对水分和环境光的实时检测,也实现了控制舵机转动。因此接下来,我们将使两者结合起来。当检测到的水分变大,光线变暗时,控制舵机转动,模拟收衣的功能。

 1、软件编写
**STEP1**:软件设置
1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“micro:bit”。
(2)新建项目,保存并命名为“m3.3”。

**STEP2**:程序编写
 

代码 代码
	                    					from microbit import *
import Servo 
import time 
sv=Servo(pin8)
while True: 
    val = pin0.read_analog() # 读取P0引脚水分模拟量 
    va2 = pin1.read_analog() # 读取P1引脚光线模拟量
    print("水分:",val,"   光线:",va2)
    if val > 200 or va2 < 100 or button_a.is_pressed(): 
        sv.angle(50)
        display.clear()
        display.show(Image.SAD) 
        sleep(1000) 
    else: 
        sv.angle(140) 
        display.clear() 
        display.show(Image.HAPPY) 
        sleep(100) 
	                    				

 3、运行调试
**STEP1**:点击“烧录”上传程序,并观察软件
当水分值小于 200(没有下雨),光线值大于 100(白天),不按下 板载A 键(没有人为控制按键)时,放出衣架。

projectImage


**STEP2**:将湿纸巾放在水分传感器的金属花朵上
当水分值大于或等于 200(可能下雨了),收回衣架。
projectImage

**STEP3**:用手遮住光线传感器
当光线值小于 100(可能天黑了),收回衣架
 

projectImage

**STEP4**:按下板载A按键
当按下A 键(人为控制按键按下)时,收回衣架
 

projectImage

 六、延伸拓展
**思考:**
1、回顾程序,反思设计时有什么没考虑到的功能?归纳总结并完善算法设计。
2、如果想要精确控制和调整舵机的角度,我们就要不断地上传程序是不是很不方便,那么有没有什么办法可以通过某个传感器来控制呢?

Makelog作者原创文章,未经授权禁止转载。
0
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]