姚熙腾+陈恺韬+周一睿
摘要:为提高日常教学中白板擦除的效率,让板擦自动擦过白板,作者基于树莓派设计开发了导轨滑块数控白板自动清洁系统。该系统以小型白板为实验对象,采用树莓派3代b型进行开发,通过l298n型驱动板控制直流电机,使用python进行编程,控制驱动板输入电压从而控制电机,并引入了三个按键模块,精确控制擦白板过程,使白板擦除不再费时费力,解决了白板使用过程中的痛点。
关键词:白板;自动清洁;智能控制;数字技术
中图分类号:TP334 文献标识码:A 文章编号:1007-9416(2017)01-0139-02
白板,是我们学习生活中的常见物品,而擦白板是一件费时费力的事情。有没有可能运用技术手段,让白板上的字自动擦除?在科技老师的指导下,我们研究小组基于树莓派,设计出一种白板自动清洁系统,只要一按按钮,装置就会自动扫过白板,将上面的字擦得干干净净,从而给教学带来了便利。
1 总体方案设计
主要材料:树莓派3代b型、L298n型驱动板、GA12-N20型减速直流电机、导轨两根、滑块两只、铝板横杆一根、纳米海绵擦、杜邦线等。
制作过程:
(1)在白板的上端和下端墙壁上分别装上导轨,并保持上、下两根导轨平行;
(2)在上、下导轨上分别装上一块滑块;
(3)在上、下滑块上安装电机,同时,将齿条固定到墙上的相应位置,以便电机齿轮沿着齿条转动来驱动滑块;
(4)在上、下滑块间安装铝板横杆,横杆下放置纳米海绵擦;
(5)在白板的一侧放置开发板,驱动板和电机通过电线相连,开发板控制线和驱动板相连,开发板独立接5v电源,驱动板独立接12v电源。
2 编程及接线方法
参考L298n型驱动板和树莓派的接线方法。(图1、图2)
我们最终的接线如下:(图3)。
L298n作为双h桥芯片,可以同时控制两部直流电机或一部步进电机,只需要控制in1-4的电压,就可以控制电机是否运行。
我们将in1-4分别连接至树莓派上的gpio22,gpio23,gpio24,gpio25,通过python(2.7.9)程序进行电压控制,L298n控制板额外连接了12v电池盒。
先用简单的程序进行测试。测试程序如下:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
BTN1=32
BTN2=36
BTN3=38
GPIO.setup(BTN1,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(BTN2,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(BTN3,GPIO.IN,pull_up_down=GPIO.PUD_UP)
while True:
if (GPIO.input(BTN1)==0):
print ("xiangzuo")
if (GPIO.input(BTN2)==0):
print("ting")
if (GPIO.input(BTN3)==0):
print ("xiangyou")
GPIO.cleanup()
程序測试正常,进入下一阶段。我们先测试了三个按键,按钮一端接地,即板上的gnd,按钮在按下时会接通地线,我们定义按键输出线数据为btn1,btn2,btn3,分别接在开发板上gpio26,gpio27,gpio28,利用print语句测试按键反应,程序如下:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
INT1=31
INT2=33
INT3=35
INT4=37
GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)
GPIO.setup(INT4,GPIO.OUT)
GPIO.cleanup
GPIO.output(INT1,GPIO.HIGH)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,GPIO.HIGH)
GPIO.output(INT4,GPIO.LOW)
time.sleep(5)
GPIO.output(INT1,GPIO.LOW)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,GPIO.LOW)
GPIO.output(INT4,GPIO.LOW)
GPIO.cleanup
在程序测试之后,我们引入了三个按钮,在电机程序中添加了相关控制补丁,修改后的程序为:(#后为注释)
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
INT1=31
INT2=33
INT3=35
INT4=37
BTN1=32
BTN2=36
BTN2=38
GPIO.setup(BTN1,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(BTN2,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(BTN3,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)
GPIO.setup(INT4,GPIO.OUT)
while True:
if (GPIO.input(BTN1)==0):
#电机正转
print ("xiangzuo")
GPIO.output(INT1,GPIO.HIGH)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,False)
GPIO.output(INT4,False)
time.sleep(2)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)
GPIO.setup(INT4,GPIO.OUT)
if (GPIO.input(BTN2)==0):
#電机反转
print("ting")
GPIO.output(INT1,GPIO.LOW)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,False)
GPIO.output(INT4,False)
time.sleep(2)
if (GPIO.input(BTN3)==0):
#电机反转
print ("xiangyou")
GPIO.output(INT1,GPIO.LOW)
GPIO.output(INT2,GPIO.HIGH)
GPIO.output(INT3,False)
GPIO.output(INT4,False)
time.sleep(2)
GPIO.cleanup()
3 使用操作方法
(1)将开发板通过usb micro(普通安卓充电口)接口通电。
(2)待开机完成后点开(屏幕为触摸屏)桌面motor(1)(1)(1).py,在最上面的工具栏找到run选项,选择run module。
(3)按接线板上三个按钮中间的一个,并将板下端电池盒上的on off开关开至on。
(4)按上下两个按键启动电机向左或右运行,从而擦去字迹。按中间的按键停止电机运动。