姚熙騰+陳愷韜+周一睿
摘要:為提高日常教學(xué)中白板擦除的效率,讓板擦自動擦過白板,作者基于樹莓派設(shè)計開發(fā)了導(dǎo)軌滑塊數(shù)控白板自動清潔系統(tǒng)。該系統(tǒng)以小型白板為實驗對象,采用樹莓派3代b型進(jìn)行開發(fā),通過l298n型驅(qū)動板控制直流電機,使用python進(jìn)行編程,控制驅(qū)動板輸入電壓從而控制電機,并引入了三個按鍵模塊,精確控制擦白板過程,使白板擦除不再費時費力,解決了白板使用過程中的痛點。
關(guān)鍵詞:白板;自動清潔;智能控制;數(shù)字技術(shù)
中圖分類號:TP334 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)01-0139-02
白板,是我們學(xué)習(xí)生活中的常見物品,而擦白板是一件費時費力的事情。有沒有可能運用技術(shù)手段,讓白板上的字自動擦除?在科技老師的指導(dǎo)下,我們研究小組基于樹莓派,設(shè)計出一種白板自動清潔系統(tǒng),只要一按按鈕,裝置就會自動掃過白板,將上面的字擦得干干凈凈,從而給教學(xué)帶來了便利。
1 總體方案設(shè)計
主要材料:樹莓派3代b型、L298n型驅(qū)動板、GA12-N20型減速直流電機、導(dǎo)軌兩根、滑塊兩只、鋁板橫桿一根、納米海綿擦、杜邦線等。
制作過程:
(1)在白板的上端和下端墻壁上分別裝上導(dǎo)軌,并保持上、下兩根導(dǎo)軌平行;
(2)在上、下導(dǎo)軌上分別裝上一塊滑塊;
(3)在上、下滑塊上安裝電機,同時,將齒條固定到墻上的相應(yīng)位置,以便電機齒輪沿著齒條轉(zhuǎn)動來驅(qū)動滑塊;
(4)在上、下滑塊間安裝鋁板橫桿,橫桿下放置納米海綿擦;
(5)在白板的一側(cè)放置開發(fā)板,驅(qū)動板和電機通過電線相連,開發(fā)板控制線和驅(qū)動板相連,開發(fā)板獨立接5v電源,驅(qū)動板獨立接12v電源。
2 編程及接線方法
參考L298n型驅(qū)動板和樹莓派的接線方法。(圖1、圖2)
我們最終的接線如下:(圖3)。
L298n作為雙h橋芯片,可以同時控制兩部直流電機或一部步進(jìn)電機,只需要控制in1-4的電壓,就可以控制電機是否運行。
我們將in1-4分別連接至樹莓派上的gpio22,gpio23,gpio24,gpio25,通過python(2.7.9)程序進(jìn)行電壓控制,L298n控制板額外連接了12v電池盒。
先用簡單的程序進(jìn)行測試。測試程序如下:
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()
程序測試正常,進(jìn)入下一階段。我們先測試了三個按鍵,按鈕一端接地,即板上的gnd,按鈕在按下時會接通地線,我們定義按鍵輸出線數(shù)據(jù)為btn1,btn2,btn3,分別接在開發(fā)板上gpio26,gpio27,gpio28,利用print語句測試按鍵反應(yīng),程序如下:
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
在程序測試之后,我們引入了三個按鈕,在電機程序中添加了相關(guān)控制補丁,修改后的程序為:(#后為注釋)
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):
#電機正轉(zhuǎn)
print ("xiangzuo")
GPIO.output(INT1,GPIO.HIGH)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,F(xiàn)alse)
GPIO.output(INT4,F(xiàn)alse)
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):
#電機反轉(zhuǎn)
print("ting")
GPIO.output(INT1,GPIO.LOW)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,F(xiàn)alse)
GPIO.output(INT4,F(xiàn)alse)
time.sleep(2)
if (GPIO.input(BTN3)==0):
#電機反轉(zhuǎn)
print ("xiangyou")
GPIO.output(INT1,GPIO.LOW)
GPIO.output(INT2,GPIO.HIGH)
GPIO.output(INT3,F(xiàn)alse)
GPIO.output(INT4,F(xiàn)alse)
time.sleep(2)
GPIO.cleanup()
3 使用操作方法
(1)將開發(fā)板通過usb micro(普通安卓充電口)接口通電。
(2)待開機完成后點開(屏幕為觸摸屏)桌面motor(1)(1)(1).py,在最上面的工具欄找到run選項,選擇run module。
(3)按接線板上三個按鈕中間的一個,并將板下端電池盒上的on off開關(guān)開至on。
(4)按上下兩個按鍵啟動電機向左或右運行,從而擦去字跡。按中間的按鍵停止電機運動。