• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      談如何用Python控制Arduino

      2016-05-14 02:09羅亮陳紅盧解卿
      中國(guó)信息技術(shù)教育 2016年8期
      關(guān)鍵詞:本例串口文件夾

      羅亮 陳紅 盧解卿

      Python是一種面向?qū)ο?、解釋型?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它的設(shè)計(jì)哲學(xué)是優(yōu)雅、明確、簡(jiǎn)單。因?yàn)槠溟_源免費(fèi)的精神與簡(jiǎn)單易學(xué)的特點(diǎn),自1989年問世以來,尤其是2004年以后,Python的使用率呈線性增長(zhǎng)并被TIOBE編程語(yǔ)言排行榜評(píng)為2010年度語(yǔ)言。

      Arduino是一款便捷靈活、方便上手的開源電子原型平臺(tái),它包含可以用來做電路連接的Arduino電路板和配套的程序開發(fā)環(huán)境(Arduino IDE)?;贏rduino的項(xiàng)目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運(yùn)行的軟件,如Processing、VB、Python等。

      當(dāng)我們使用Python語(yǔ)言通過串口控制Arduino讀取設(shè)備狀況并實(shí)施控制的時(shí)候,就構(gòu)成了上位機(jī)下位機(jī)系統(tǒng)。安裝有Python之類軟件實(shí)施控制的計(jì)算機(jī)為上位機(jī),能夠控制設(shè)備并獲取設(shè)備狀況的Arduino為下位機(jī),它們相互之間可以通過串行口或無線的方式進(jìn)行通訊,進(jìn)而實(shí)現(xiàn)控制與被控制。

      安裝Python

      Python主要分為兩大類,即Python2和Python3。Python2是目前應(yīng)用最廣泛的一個(gè)版本,最新版本號(hào)為2.7.11,適合初學(xué)者學(xué)習(xí)使用。Python3相對(duì)于Python2而言,有很多接口發(fā)生了變化并且可用的第三方庫(kù)不多且不成熟,雖然它代表以后的發(fā)展趨勢(shì),但還是不建議初學(xué)者使用。Python下載地址為:https://www.python.org/downloads/。本例是下載了2.7.11版本,文件名為python-2.7.11.msi,安裝在文件夾“C:\Python27”,安裝過程中注意在如圖1的設(shè)置中添加可執(zhí)行文件搜索路徑。

      安裝Arduino

      Arduino主控板部分可在淘寶網(wǎng)上通過關(guān)鍵詞“arduino uno”“arduino mini”“arduino mega”搜索購(gòu)買。Arduino集成開發(fā)環(huán)境(Arduino IDE)可訪問“https://www.arduino.cc/en/Main/Software”,根據(jù)需要下載安裝,最新版本為1.6.7,歷經(jīng)Arduino 00xx、Arduino 1.0.x、1.5.x BETA、Arduino 1.6.x四個(gè)系列的版本。本例硬件使用了Arduino Uno,軟件使用了Arduino1.5.8版本。軟件安裝在文件夾“C:\arduino158”,當(dāng)Arduino Uno主控板與計(jì)算機(jī)通過USB連接后,需要安裝驅(qū)動(dòng),驅(qū)動(dòng)文件默認(rèn)在文件夾“C:\arduino158\drivers”,安裝完成后,在設(shè)備管理器中可以看到Arduino Uno占用的串行端口號(hào),如圖2所示。

      安裝Pyserial

      Pyserial是協(xié)助Python控制串口通訊的第三方庫(kù)。pyserialv2.7下載地址為:http://sourceforge.net/projects/pyserial/,pyserialV3.0下載地址為:https://github.com/pyserial/pyserial。

      若非Windows 64位操作系統(tǒng),下載pyserial-2.7.win32.exe直接安裝即可,否則需要使用pyserial-2.7.tar.gz文件手動(dòng)進(jìn)行安裝。安裝方法為:將pyserial-2.7.tar.gz解壓至C盤根目錄后,運(yùn)行CMD命令,進(jìn)入文件夾“C:\ pyserial-2.7”,執(zhí)行安裝命令:“python setup.py install”。具體執(zhí)行過程可參考圖3的步驟。

      啟動(dòng)Arduino IDE作為下位機(jī)進(jìn)行通訊調(diào)試

      當(dāng)Arduino主控板連上PC主機(jī)并安裝好相應(yīng)的驅(qū)動(dòng)程序后,我們使用鼠標(biāo)雙擊Arduino安裝文件夾中的arduino.exe可以達(dá)到啟動(dòng)Arduino集成編輯環(huán)境的目的。

      啟動(dòng)完成后,可通過菜單“file→preferences”設(shè)置中文環(huán)境,通過菜單“工具→板”設(shè)置“Arduino Uno”,“工具→端口”設(shè)置“Com3(Arduino Uno)”。如表1所示,輸入相關(guān)程序代碼后,點(diǎn)擊“上傳”按鈕燒錄程序至Arduino主控板中。啟用串口監(jiān)視器后,根據(jù)程序代碼,輸入字符o,點(diǎn)擊按鈕“發(fā)送”可以發(fā)現(xiàn)Arduino主控板與數(shù)字引腳13相連的Led燈會(huì)變亮,輸入字符c,點(diǎn)擊按鈕“發(fā)送”可以發(fā)現(xiàn)Arduino主控板與數(shù)字引腳13相連的Led燈會(huì)停止發(fā)光。具體程序代碼的功能,請(qǐng)查看表1中相應(yīng)的注釋。

      啟動(dòng)Python并進(jìn)行初步通訊調(diào)試

      安裝完成Python運(yùn)行與編輯環(huán)境及涉及串口通訊的第三方庫(kù)pyserial后,通過“開始→所有程序→Python 2.7→IDLE(Python GUI)”或“Python(command line)”直接啟動(dòng)Python,亦可以找到Python安裝文件夾下的“python.exe”雙擊啟動(dòng)。啟動(dòng)完成后,在命令提示符“>>>”下依次輸入import serial、ser=serial.Serial(2)、ser.write(“o”)、ser.write(“c”)等命令就可以實(shí)現(xiàn)對(duì)Arduino主板上與數(shù)字引腳13相連Led燈的控制,ser.close()關(guān)閉打開的串行口,exit()退出Python運(yùn)行環(huán)境。

      注意:本例Arduino使用串行口3,故serial.Serial()中的參數(shù)為2,參數(shù)始終比串行口序號(hào)小1。

      有關(guān)pyserial的詳細(xì)用法,可以參考http://pythonhosted.org/pyserial/。以下的例子是先定義串行口ser,然后再對(duì)串行口ser進(jìn)行配置。

      趣味拓展:隨論壇在線人數(shù)變化的燈

      我們?cè)谠L問論壇時(shí),經(jīng)常會(huì)看到類似的統(tǒng)計(jì)數(shù)據(jù):。結(jié)合Python和Arduino各自擅長(zhǎng)的功能,可以輕松做到讀取在線人數(shù)并根據(jù)在線人數(shù)多少?zèng)Q定亮燈情況。表2所示代碼是簡(jiǎn)化情況,我們可以根據(jù)需要修改Python及相應(yīng)的Arduino程序,讓亮燈更加人性化。

      尤其應(yīng)引起注意的是:①字符編碼問題。安裝chardet模塊,可以準(zhǔn)確知道網(wǎng)絡(luò)中獲取字符的編碼,從而正確處理。②多空一行。Python構(gòu)成語(yǔ)句塊的代碼需要多增加一個(gè)空行。詳見第18行代碼。③適當(dāng)延時(shí)。在程序執(zhí)行方式下,串行口對(duì)象ser來不及初始化,就迅速執(zhí)行后面代碼,導(dǎo)致無效write,當(dāng)加了第13行代碼后,則一切正常。④確保論壇首頁(yè)有“總計(jì)”“人在線”相關(guān)關(guān)鍵字,若無,請(qǐng)根據(jù)實(shí)際情況修改。

      后記

      Python第三方庫(kù)——pyserial提供了豐富的函數(shù)對(duì)串行口進(jìn)行操作,從而使Phthon能夠很方便地對(duì)Arduino進(jìn)行通訊。

      在編寫程序代碼進(jìn)行控制的過程中,要注意Python、Arduino使用同樣的通訊速率并且不要太大,建議都使用9600,否則容易出現(xiàn)數(shù)據(jù)錯(cuò)誤。

      經(jīng)過試驗(yàn),若上位機(jī)PC、下位機(jī)Arduino均安裝藍(lán)牙,亦可以使用pyserial進(jìn)行無線通訊達(dá)到控制的目的,有興趣的同仁可以自行嘗試。

      Python的GUI編程似乎并不容易上手,其內(nèi)建的Tkinter只能進(jìn)行簡(jiǎn)單GUI布局,若要做到VB集成開發(fā)環(huán)境所見即所得的效果,估計(jì)還需要安裝wxPython、Jython之類第三方庫(kù)才能做到。圖4是使用Python的Tkinter構(gòu)建的控制Arduino主控板Led燈GUI界面,相關(guān)程序可聯(lián)系linkall@sina.com取得。

      猜你喜歡
      本例串口文件夾
      Fast Folders,讓你的文件夾四通八達(dá)
      豐富多彩的分式方程的根
      摸清超標(biāo)源頭 大文件夾這樣處理
      調(diào)動(dòng)右鍵 解決文件夾管理三大難題
      MCS—51單片機(jī)中的多串口通訊技術(shù)的應(yīng)用
      都是忽視“O和1”的錯(cuò)
      不容忽視的空文件夾
      全國(guó)計(jì)算機(jī)等級(jí)考試機(jī)房準(zhǔn)備工作探討
      微機(jī)串口的測(cè)試診斷
      繞組重繞數(shù)據(jù)的索取
      甘德县| 舒城县| 北宁市| 盘山县| 长春市| 汉中市| 汪清县| 新兴县| 金华市| 化隆| 德惠市| 本溪市| 襄垣县| 郴州市| 澄江县| 二手房| 玉环县| 枣阳市| 西华县| 哈密市| 鹤壁市| 手游| 霸州市| 宜丰县| 鸡泽县| 大安市| 钟山县| 盘山县| 镇雄县| 高淳县| 陵水| 自治县| 德清县| 永宁县| 子长县| 白山市| 三门县| 淳安县| 北川| 仁寿县| 旬阳县|