"大眾創(chuàng)新 萬眾創(chuàng)業(yè)",學(xué)校對于創(chuàng)客教育日漸重視,熱情高漲,紛紛開始創(chuàng)客教育課程,有條件的打造學(xué)校創(chuàng)客實(shí)驗(yàn)室,不吝斥資;但是也有很多學(xué)校囊中羞澀,巧婦難為無米之炊,不知何處下手.
誠然很多朋友說,現(xiàn)在硬件便宜了,買個(gè)山寨的不到20,自己diy10元,但是實(shí)際情況是硬件的申請是要報(bào)計(jì)劃的,流程冗長繁復(fù),短則幾月,長則經(jīng)年,等到設(shè)備下來,黃花菜都涼了,老師們并非沒有熱情自購,但是終究不是長久之計(jì),實(shí)際上像淄博于方軍老師最開始就是自購硬件自己玩兒,帶幾個(gè)學(xué)生玩兒,然后從興趣小組發(fā)展到社團(tuán),從社團(tuán)發(fā)展到興趣班到班級授課.突然想起還請支教的那幾個(gè)小朋友了,安裝軟件棒棒噠.
就我2012以及2013年在青島市黃島區(qū)海青鎮(zhèn)和菏澤曹縣支教的經(jīng)歷以及不時(shí)回老家訪談的情況而言,當(dāng)前很多學(xué)校辦公經(jīng)費(fèi)短缺,用于創(chuàng)客教育的資金甚少,難以開展活動(dòng).后來遇到了隨身科技的楊峰,我們兩個(gè)非常投緣,探討設(shè)計(jì)硬件開發(fā)課程,后來我選擇了一些一線教學(xué)中常用的硬件模塊并從淘寶購買了散件,自己配了大概30套Scratch隨身實(shí)驗(yàn)包,Arduino芯片用的是國內(nèi)的版本,中貝斯特,Arduino Uno兼容版價(jià)格是24元,Arduino Nano小板子的價(jià)格是19元,大大降低了成本.我當(dāng)時(shí)只加入了紅綠藍(lán)各色LED燈,RGB全彩燈,蜂鳴器,光敏電阻以及杜邦線,連面包板都是用的4塊錢一個(gè)的小板子.但是配套課程遲遲未出,也是醉了,但是各學(xué)新类郑可以采用這樣的思路開展自己教學(xué).
當(dāng)然如果DIY的話,一個(gè)Arduino的成本在10元左右
可是有些學(xué)校資金實(shí)在是極度短缺,怎么辦呢?突然記起2010年大四上學(xué)期我在東師的時(shí)候,學(xué)校聘請我們系的師兄師大附中的尚航師兄給我們講解機(jī)器人,當(dāng)時(shí)用過VJC的機(jī)器人仿真環(huán)境,豁然開朗,現(xiàn)在用VMware,VirtualBox以及Qemu等模擬操作系統(tǒng),用VJC模擬機(jī)器人,模擬Arduino電路板自然不在話下.于是開始留意電路仿真軟件.
之前也有接觸過機(jī)器人仿真軟件Microsoft Robotics Studio,大概嘗試了下,是一款相當(dāng)棒的軟件,在資金不足的情況下,可以讓學(xué)生通過這個(gè)軟件了解機(jī)器人,進(jìn)行一些編程活動(dòng).
Microsoft Robotics Studio是為科研工作者、機(jī)器人業(yè)余愛好者和商業(yè)開發(fā)者提供的一個(gè)基于Windows平臺的環(huán)境,它可以與諸多各類的硬件一起簡單的實(shí)現(xiàn)機(jī)器人應(yīng)用吨拗。 Microsoft Robotics Studio開發(fā)環(huán)境的特點(diǎn)和益處包括:結(jié)合緊密的機(jī)器人開發(fā)平臺, 輕量級實(shí)時(shí)定向服務(wù)蛤售, 可擴(kuò)展性的平臺代承。
來源:Microsoft Robotics Studio入門系列
Microsoft Robotics Studio面向廣泛的人群琅翻,加速機(jī)器人的開發(fā)與普及。實(shí)時(shí)仿真器是提出的一個(gè)重要的部分晒杈。它是可以立即從電腦和游戲控制臺顯現(xiàn)嫂伞,?拯钻?帖努,當(dāng)它可以支付得 起、廣泛的應(yīng)用粪般、機(jī)器人仿真技術(shù)拼余。游戲依賴于使用帶有實(shí)時(shí)系統(tǒng)規(guī)定參數(shù)的物理仿真器所制做出的照片級真實(shí)渲染效果。這對我們的努力是一個(gè)極好的起點(diǎn)亩歹。
昨日在圖書館無事亂翻書,看到一本書<Arduino軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南>,里面介紹了
電子設(shè)計(jì)自動(dòng)EDA(electronic design automation),從計(jì)算機(jī)輔助設(shè)計(jì)CAD,計(jì)算機(jī)輔助制造CAM,計(jì)算機(jī)輔助測試CAT和計(jì)算機(jī)輔助工程CAE的基礎(chǔ)上發(fā)展來的.
介紹了Fritzing, Virtual BreadBoard, Proteus, EAGLE四款軟件.豁然開朗
本來打算到京東購買此書,價(jià)格是50.2,發(fā)現(xiàn)京東閱讀APP上也有此書,然后發(fā)現(xiàn)京東暢讀一年的價(jià)格是98,遂購買京東暢讀,免費(fèi)閱讀此書.
通過利用上述四款軟件,可以對電路進(jìn)行模仿,從而實(shí)現(xiàn)不投入資金的情況下學(xué)習(xí)Arduino硬件編程.
軟件介紹
Fritzing
Fritzing是個(gè)電子設(shè)計(jì)自動(dòng)化軟件匙监。它支持設(shè)計(jì)師凡橱,藝術(shù)家,研究人員和愛好者參加從物理原型到進(jìn)一步實(shí)際的產(chǎn)品亭姥。還支持用戶記錄其Arduino和其他電子為基礎(chǔ)的原型稼钩,與他人分享,在教室里教電子致份,并建立一家生產(chǎn)印刷電路板的布局变抽。
Fritzing是一款支持多國語言的電路設(shè)計(jì)軟件,可以同時(shí)提供面包板/原理圖/PCB圖三種視圖設(shè)計(jì),不管設(shè)計(jì)者在三種視圖中的任意一種進(jìn)行電路設(shè)計(jì),軟件都會自動(dòng)化同步其他兩種試圖.還可以生成制版廠生產(chǎn)所需要的greber文件,PDF圖片和CAD格式文件,極大的推廣和普及了Fritzing的使用.
——引自:《Arduino軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南》
個(gè)人覺得使用Fritzing的好處之一是,學(xué)生在實(shí)際動(dòng)手設(shè)計(jì)電路的時(shí)候先用軟件模擬,謀定后動(dòng),避免燒壞電子元器件或者無謂摸索浪費(fèi)時(shí)間.
Arduino樣例支持與編程
Fritzing中有所有的Arduino自帶實(shí)例的電路圖,便于學(xué)習(xí),在實(shí)際教學(xué)中
Virtual BreadBoard(簡稱VBB)
Arduino仿真利器Virtual BreadBoard
這個(gè)軟件目前收費(fèi),但是大家肯定有不花錢的辦法對吧.
Proteus電路仿真軟件
解決方案
在《Arduino軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)》(這本書應(yīng)該給我廣告費(fèi))里給出了詳細(xì)的通過電路仿真軟件模擬仿真Arduino硬件及各種硬件并且寫入程序的方法,大家可以參閱.(好吧我承認(rèn)我懶啊,懶得寫辣么多)
以上仿真軟件可以跟Arduino軟件協(xié)同使用,仿真軟件會自動(dòng)加載Arduino軟件生成的hex文件,執(zhí)行程序并仿真.
教師可以在機(jī)房配置好環(huán)境,通過網(wǎng)絡(luò)同傳給學(xué)生機(jī),這樣學(xué)生機(jī)就可以在電腦上進(jìn)行模擬仿真了,同時(shí)最好教師自己有一套實(shí)際的硬件,畢竟模擬的不如實(shí)際的硬件動(dòng)手來的直觀.
再有就是突然想到類似于3dmax等三維建模軟件不知道是否有類似于電路仿真的插件,如果有的話直接就可以把模型設(shè)計(jì)和電路設(shè)計(jì)結(jié)合在一起了.當(dāng)然工業(yè)街應(yīng)該有這樣的軟件,可惜沒有簡單易用的
仿真不是目的,只是手段,教學(xué)生自己動(dòng)手軟硬結(jié)合比啥都重要有意義有興趣.只是在資金不足的時(shí)候,讓所有學(xué)生有接觸軟硬件的機(jī)會.
——南京藥科大學(xué)周玉林
突然有個(gè)疑問,現(xiàn)在提到開源硬件,必然是Arduino,Arduino當(dāng)然簡單易學(xué),資料眾多,便于推廣,但是stc等也不錯(cuò)啊,只是未必軟適合義務(wù)教育階段學(xué)校罷了,不夠高中階段學(xué)習(xí)是沒有問題的,早在2013年的時(shí)候師大附中的金書輝老師就帶領(lǐng)學(xué)生玩兒單片機(jī)了,所以你看關(guān)鍵還是要有合適的引導(dǎo),采用適合學(xué)生的方式來傳授知識.
又飄雪大神指點(diǎn)搜proteus和Arduino就能找到相關(guān)內(nèi)容,感興趣的可以找一下.
整體來說,Proteus的Arduino仿真硬件部分是基于Proteus的原理圖,而程序驅(qū)動(dòng)部分則是依賴于Arduino程序在Arduino IDE中編譯生成的Hex文件
Atmega328P就是Arduino UNO的芯片在這用來代替Arduino Uno
19號實(shí)際上就是Arduino13引腳,通過10k的電阻接地.
仿真結(jié)果
具體教程放兩篇文章:
基于Protues的Arduino學(xué)習(xí)筆記01-Arduino UNO實(shí)驗(yàn)板設(shè)計(jì)
一下內(nèi)容轉(zhuǎn)載自EEboard愛板網(wǎng):http://www.eeboard.com/bbs/forum.php?mod=viewthread&tid=3429
二氮块、Arduino單片機(jī)的Proteus仿真方法
Arduino單片機(jī)的Proteus仿真基本過程是:軟件在Arduino IDE編程軟件里編寫,硬件在Proteus ISIS軟件模塊里通過繪制電氣原理圖建立诡宗。程序編寫完后滔蝉,選擇Arduino IDE編程界面菜單欄的Tools菜單項(xiàng),再選擇Board→Arduino Duemilanove w/ATmega328塔沃,也可以選擇Board→Arduino Uno蝠引,然后點(diǎn)擊編譯按鈕,生成Hex文件(二進(jìn)制機(jī)器碼文件)蛀柴。有了Hex文件螃概,接著轉(zhuǎn)到Proteus電氣原理圖,雙擊原理圖中的型號為ATMEGA328P 單片機(jī)芯片鸽疾,出現(xiàn)對話框吊洼,通過文件目錄瀏覽的方法確定Hex文件存儲位置,并進(jìn)行一些單片機(jī)芯片工作狀態(tài)參數(shù)的設(shè)置制肮,最后點(diǎn)擊Proteus ISIS軟件界面左下方的播放按鈕冒窍,就可以看到Arduino單片機(jī)在Proteus仿真環(huán)境中的運(yùn)行效果了。
圖4 Arduino程序的編譯
圖4中顯示的程序是一個(gè)最簡單的Arduino單片機(jī)項(xiàng)目實(shí)例豺鼻,任務(wù)是:連在Arduino單片機(jī)數(shù)字端口13上的LED發(fā)光二級管综液,讓它不斷閃爍。要想成功仿真這個(gè)項(xiàng)目儒飒,有兩點(diǎn)要特別注意谬莹,一是Arduino程序的Hex文件生成和位置確定,二是Proteus原理圖中的Atmel328P芯片中Hex文件加載和工作參數(shù)設(shè)置桩了。
圖5 Arduino項(xiàng)目實(shí)例LED閃爍的硬件原理圖
Arduino編譯之后附帽,Hex文件會自動(dòng)刪除,而在Proteus仿真的Arduino單片機(jī)中圣猎,需要使用Arduino軟件產(chǎn)生的Hex文件士葫,可是,Arduino 1.0默認(rèn)使用完Hex文件會自動(dòng)刪除的送悔,所以取不到hex文件慢显,為了取出hex文件爪模,加載到Porteus中的單片機(jī)ATMEGA328P,需要修改如下:
首先要在D盤建立一個(gè)文件夾荚藻,用來專門放置Hex文件屋灌,文件名可以隨便取名,我命名為Arduino_Hex应狱,然后點(diǎn)擊Arduino軟件界面菜單欄的File->preferences共郭,打開對話框,如圖6疾呻,把Show verbose output during的兩個(gè)參數(shù)項(xiàng)打勾除嘹,雙擊preferences.txt文件,找到文件所在位置岸蜗,再雙擊尉咕,用記事本打開文件。這時(shí)要點(diǎn)擊Arduino界面preferences對話框下方的OK按鈕璃岳,接著關(guān)掉Arduino IDE編程界面年缎。最后,在剛才打開的preferences文檔的最后一行編輯加入build.path=d:\Arduino_Hex铃慷,保存文檔单芜。這樣以后您再編譯Arduino程序,就可以在d:\Arduino_Hex中犁柜,看到編譯的Hex目標(biāo)文件了洲鸠。(所有圖片雙擊,都可以放大A尬隆)
圖6 Arduino的Preference參數(shù)設(shè)置
談完了Arduino程序的Hex文件生成和位置確定坛怪,再談?wù)劻硪粋€(gè)值得注意的問題,Proteus原理圖中Atmel328P芯片的Hex文件加載和工作參數(shù)設(shè)置股囊。
雙擊圖5中的Proteus ISIS電氣原理圖中ATMEGA328P單片機(jī)袜匿,出現(xiàn)編輯對話框,點(diǎn)擊“Program File”參數(shù)項(xiàng)的“文件夾”按鈕稚疹,來確定Hex文件的位置居灯,到d:\Arduino_Hex文件夾中可以找到當(dāng)前程序的Hex文件。上個(gè)程序的Hex文件會被新編譯的Hex文件“沖掉”内狗,所以您每次仿真項(xiàng)目時(shí)怪嫌,都要編譯一次Arduino程序。
圖7 Proteus中的ATMEGA328P單片機(jī)的Hex文件加載和參數(shù)設(shè)置
確定了Hex文件柳沙,還有三個(gè)參數(shù)項(xiàng)要修訂岩灭,一是“CLKDIV8(Divide clock by 8)”參數(shù)項(xiàng)修改為“Unprogrammed”;二是“CKSEL Fuses”參數(shù)項(xiàng)修改為“(1111)Ext. Crystal 8.0-MHz”赂鲤;三是Advanced Properties的Clock Frequency參數(shù)項(xiàng)設(shè)為16Mhz噪径。最后點(diǎn)擊編輯對話框的“確定”按鈕柱恤,然后就可以仿真了。
網(wǎng)絡(luò)上有一個(gè)Arduino單片機(jī)的Proteus仿真視頻找爱,講解的就是圖5所示LED燈閃爍的項(xiàng)目梗顺,可以看看Proteus電氣原理圖是如何建立,Arduino程序是如何編寫车摄,以及程序編譯后是如何仿真的過程寺谤。只不過這個(gè)視頻中,Arduino程序編譯后的Hex文件吮播,并沒有在自己指定的文件目錄里找到变屁,而是還是用老辦法在默認(rèn)目錄里找到。
三意狠、Arduino單片機(jī)的Proteus仿真項(xiàng)目實(shí)例
這個(gè)仿真項(xiàng)目實(shí)例的任務(wù)是:分別按下K1(正轉(zhuǎn))按鈕敞贡、K2(反轉(zhuǎn))按鈕和K3(停止)按鈕,直流電機(jī)會分別產(chǎn)生相應(yīng)的動(dòng)作摄职,而且當(dāng)調(diào)節(jié)電位計(jì)時(shí),電機(jī)的轉(zhuǎn)速也隨之發(fā)生變化获列。(所有圖片雙擊谷市,都可以放大!)
圖8 直流電機(jī)正反轉(zhuǎn)击孩、啟停和調(diào)速仿真圖
圖8中的電氣符號用到了芯片元件迫悠、電源終端、虛擬儀器和連線標(biāo)號巩梢,它們分別從各自的模式庫中提取出來创泄。
圖9 仿真圖中的電氣符號的提取
仿真圖中,電源終端用到了VCC電源與接地符號括蝠,虛擬儀器用到了四通道示波器和直流電壓表鞠抑,連線標(biāo)號的作用是相同連線標(biāo)號的兩根線在電氣意義上是相連的,如圖8中的標(biāo)號A忌警、B和PWM搁拙。至于芯片元件,仿真圖里用到了電阻法绵、電容箕速、CPU、晶振朋譬、直流電機(jī)盐茎、穩(wěn)壓管、L298N驅(qū)動(dòng)等等徙赢,芯片元件的提取通常有兩種方法字柠,父探越、子類別檢索方法和關(guān)鍵字查詢法。
父募谎、子類別檢索方法是:先選擇元件模式庫扶关,再點(diǎn)擊“P”按鈕,打開元件查詢提取對話框数冬,如圖10所示节槐,例如提取的元件是單片機(jī)芯片ATMEGA328P瘫筐,先在類別里找到Microprocessor ICs排抬,在子類別里找到AVR Family,再在制造商里找到Atmel庶喜,然后在縮小了尋找范圍的結(jié)果中找到這個(gè)單片機(jī)芯片ATMEGA328P秸架,找到后雙擊芯片揍庄,就可以把芯片提取到ISIS界面左側(cè)的DEVICES欄中,供原理圖繪制時(shí)隨時(shí)選用东抹,如圖11所示蚂子。
圖10 芯片元件的父、子類別檢索法
關(guān)鍵字查詢法是:如果事先知道要提取的元件名稱缭黔,可以在元件查詢提取對話框左上方的關(guān)鍵字輸入欄里輸入元件名稱食茎,如搜尋motor元件,直接輸入motor馏谨,回車后别渔,在結(jié)果中可以很容易地找到所需元件。
圖11 芯片元件的關(guān)鍵字查詢法
按照圖8所示的直流電機(jī)控制電氣原理圖惧互,把硬件線路繪制完成哎媚,剩下的事就是編寫程序,編譯仿真了喊儡,我設(shè)計(jì)的這個(gè)仿真項(xiàng)目正好把數(shù)字量和模擬量輸入輸出都涉及到了拨与,按鈕輸入和驅(qū)動(dòng)芯片L298N的電機(jī)轉(zhuǎn)向控制端A、B是數(shù)字量輸入輸出管宵,電位計(jì)輸入和L298N的轉(zhuǎn)速調(diào)節(jié)控制端PWM是模擬量輸入輸出截珍。
數(shù)字量輸入輸出的Arduino命令分別是digitalRead(數(shù)字端口號)和digitalWrite(數(shù)字端口號,LOW或HIGH);模擬量輸入輸出的Arduino命令是analogRead(模擬端口號)和analogWrite(數(shù)字端口號, 0~255)箩朴。模擬端口只有輸入模式岗喉,沒有輸出模式,Arduino模擬量輸出是以PWM信號形式從具有PWM輸出功能的數(shù)字端口輸出的炸庞。Arduino微控制器的數(shù)字端口和模擬端口與ATMEGA 328芯片引腳的對應(yīng)關(guān)系圖如下钱床。標(biāo)有013標(biāo)號的引腳對應(yīng)的是數(shù)字端口,在013前面有符號“”的引腳對應(yīng)的端口具有PWM輸出功能埠居。標(biāo)有A0A5標(biāo)號的是模擬端口查牌。
圖12 Arduino UNO端口與Atmega328P引腳對應(yīng)圖
有了Arduino UNO端口與Atmega328P引腳對應(yīng)圖事期,就可以方便地利用Proteus硬件仿真圖,有針對性地編寫Arduino程序了纸颜。由于以下程序中有詳細(xì)的注釋兽泣,所以對每行Arduino程序的作用就不再累述了。
Arduino程序:
//任務(wù):通過按鈕控制電機(jī)啟停和正反轉(zhuǎn)胁孙,通過電位計(jì)調(diào)節(jié)電機(jī)轉(zhuǎn)速唠倦。
int K1=5; //把K1(正轉(zhuǎn))按鈕連在數(shù)字端口5
int K2=6; //把K2(反轉(zhuǎn))按鈕連在數(shù)字端口6
int K3=7; //把K3(停止)按鈕連在數(shù)字端口7
int potpin = 3; // 把電位計(jì)連在模擬端口3
int A=2; //數(shù)字端口2、3控制電機(jī)啟停和轉(zhuǎn)向
int B=3;
int PWMpin = 9; // 數(shù)字端口9輸出PWM信號涮较,控制電機(jī)轉(zhuǎn)速
//初始化
void setup()
{
pinMode(K1,INPUT);//把數(shù)字端口5稠鼻、6、7設(shè)置輸入模式
pinMode(K2,INPUT);
pinMode(K2,INPUT);
pinMode(A,OUTPUT);//把數(shù)字端口2狂票、3設(shè)置輸入模式
pinMode(B,OUTPUT);
}
//主程序
void loop()
{
//如果按下K1(正轉(zhuǎn))按鈕
if(digitalRead(K1)==LOW)
{
//電機(jī)正轉(zhuǎn)
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
}
//如果按下K2(反轉(zhuǎn))按鈕
if(digitalRead(K2)==LOW)
{
//電機(jī)反轉(zhuǎn)
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
}
//如果按下K3(停止)按鈕
if(digitalRead(K3)==LOW)
{
//電機(jī)停止
digitalWrite(A,LOW);
digitalWrite(B,LOW);
}
int sensorValue = analogRead(potpin); //讀取電位計(jì)采樣值
sensorValue = sensorValue/4; // 采樣值 0-1024 轉(zhuǎn)換為 0-255
analogWrite(PWMpin, sensorValue);//把處理后的轉(zhuǎn)換值以PWM信號形式輸出
delay(20);//延時(shí)
}
把程序編寫完候齿,編譯Hex文件,再把Hex文件加載到Proteus仿真圖中Arduino單片機(jī)芯片中闺属,最后點(diǎn)擊仿真圖左下方的播放按鈕慌盯,就可以看到基于Arduino直流電機(jī)控制項(xiàng)目的運(yùn)行效果了。
四掂器、結(jié)束語
經(jīng)常有對創(chuàng)客文化感興趣的網(wǎng)友润匙,詢問這樣的問題,是否可以少投入些硬件成本唉匾,而又能用Arduino單片機(jī)多多做些趣味電子項(xiàng)目。所以這篇文章就是談在資金不足的情況下匠楚,如何通過仿真的方法來實(shí)現(xiàn)我們創(chuàng)意實(shí)踐巍膘。
為啥有必要學(xué)習(xí)Arduino呢?其實(shí)許多學(xué)習(xí)者曾經(jīng)為了追趕電子科技的進(jìn)步芋簿,也花了大量的精力去一個(gè)個(gè)地學(xué)習(xí)那些微控制器和智能邏輯部件峡懈,如51、ARM与斤,DSP和FPGA肪康,當(dāng)初僅僅是為做一些應(yīng)用,沒想會消耗那么多的時(shí)間和金錢撩穿,“陷在”了冷酷的程序和無止盡的硬件原理中磷支,最后也只是做了些走馬燈和數(shù)碼管秒表實(shí)驗(yàn),就草草結(jié)束食寡,而又去追新了雾狈。這樣追逐哪有什么利用微控制器做應(yīng)用的樂趣可談。好在目前秉承開放式學(xué)習(xí)架構(gòu)的Arduino系統(tǒng)越來越流行抵皱,它可以讓所有樂于創(chuàng)作的人在短時(shí)間之內(nèi)就可以完成一個(gè)作品善榛,并且可以透過網(wǎng)絡(luò)辩蛋,獲得大量共享資訊的支援。您會發(fā)現(xiàn)移盆,有了Arduino悼院,微控制器的世界不再那么的陌生和令人敬畏,微控制器就是一個(gè)易用的工具咒循,讓我們能夠騰出精力全力投向作品中最能體現(xiàn)個(gè)人創(chuàng)新精神的部分据途。