"大眾創(chuàng)新 萬眾創(chuàng)業(yè)",學(xué)校對(duì)于創(chuàng)客教育日漸重視,熱情高漲,紛紛開始創(chuàng)客教育課程,有條件的打造學(xué)校創(chuàng)客實(shí)驗(yàn)室,不吝斥資;但是也有很多學(xué)校囊中羞澀,巧婦難為無米之炊,不知何處下手.
誠(chéng)然很多朋友說,現(xiàn)在硬件便宜了,買個(gè)山寨的不到20,自己diy10元,但是實(shí)際情況是硬件的申請(qǐng)是要報(bào)計(jì)劃的,流程冗長(zhǎng)繁復(fù),短則幾月,長(zhǎng)則經(jīng)年,等到設(shè)備下來,黃花菜都涼了,老師們并非沒有熱情自購(gòu),但是終究不是長(zhǎng)久之計(jì),實(shí)際上像淄博于方軍老師最開始就是自購(gòu)硬件自己玩兒,帶幾個(gè)學(xué)生玩兒,然后從興趣小組發(fā)展到社團(tuán),從社團(tuán)發(fā)展到興趣班到班級(jí)授課.突然想起還請(qǐng)支教的那幾個(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é)中常用的硬件模塊并從淘寶購(gòu)買了散件,自己配了大概30套Scratch隨身實(shí)驗(yàn)包,Arduino芯片用的是國(guó)內(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é)校聘請(qǐng)我們系的師兄師大附中的尚航師兄給我們講解機(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平臺(tái)的環(huán)境,它可以與諸多各類的硬件一起簡(jiǎn)單的實(shí)現(xiàn)機(jī)器人應(yīng)用。 Microsoft Robotics Studio開發(fā)環(huán)境的特點(diǎn)和益處包括:結(jié)合緊密的機(jī)器人開發(fā)平臺(tái), 輕量級(jí)實(shí)時(shí)定向服務(wù), 可擴(kuò)展性的平臺(tái)。
來源:Microsoft Robotics Studio入門系列
Microsoft Robotics Studio面向廣泛的人群,加速機(jī)器人的開發(fā)與普及。實(shí)時(shí)仿真器是提出的一個(gè)重要的部分。它是可以立即從電腦和游戲控制臺(tái)顯現(xiàn),??,當(dāng)它可以支付得 起、廣泛的應(yīng)用、機(jī)器人仿真技術(shù)。游戲依賴于使用帶有實(shí)時(shí)系統(tǒng)規(guī)定參數(shù)的物理仿真器所制做出的照片級(jí)真實(shí)渲染效果。這對(duì)我們的努力是一個(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ī)輔助測(cè)試CAT和計(jì)算機(jī)輔助工程CAE的基礎(chǔ)上發(fā)展來的.
Arduino軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南
介紹了Fritzing, Virtual BreadBoard, Proteus, EAGLE四款軟件.豁然開朗
本來打算到京東購(gòu)買此書,價(jià)格是50.2,發(fā)現(xiàn)京東閱讀APP上也有此書,然后發(fā)現(xiàn)京東暢讀一年的價(jià)格是98,遂購(gòu)買京東暢讀,免費(fèi)閱讀此書.
通過利用上述四款軟件,可以對(duì)電路進(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是一款支持多國(guó)語言的電路設(shè)計(jì)軟件,可以同時(shí)提供面包板/原理圖/PCB圖三種視圖設(shè)計(jì),不管設(shè)計(jì)者在三種視圖中的任意一種進(jìn)行電路設(shè)計(jì),軟件都會(huì)自動(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(簡(jiǎn)稱VBB)
Arduino仿真利器Virtual BreadBoard
這個(gè)軟件目前收費(fèi),但是大家肯定有不花錢的辦法對(duì)吧.
Proteus電路仿真軟件


解決方案
在《Arduino軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)》(這本書應(yīng)該給我廣告費(fèi))里給出了詳細(xì)的通過電路仿真軟件模擬仿真Arduino硬件及各種硬件并且寫入程序的方法,大家可以參閱.(好吧我承認(rèn)我懶啊,懶得寫辣么多)
以上仿真軟件可以跟Arduino軟件協(xié)同使用,仿真軟件會(huì)自動(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)該有這樣的軟件,可惜沒有簡(jiǎn)單易用的
仿真不是目的,只是手段,教學(xué)生自己動(dòng)手軟硬結(jié)合比啥都重要有意義有興趣.只是在資金不足的時(shí)候,讓所有學(xué)生有接觸軟硬件的機(jī)會(huì).
——南京藥科大學(xué)周玉林
突然有個(gè)疑問,現(xiàn)在提到開源硬件,必然是Arduino,Arduino當(dāng)然簡(jiǎn)單易學(xué),資料眾多,便于推廣,但是stc等也不錯(cuò)啊,只是未必軟適合義務(wù)教育階段學(xué)校罷了,不夠高中階段學(xué)習(xí)是沒有問題的,早在2013年的時(shí)候師大附中的金書輝老師就帶領(lǐng)學(xué)生玩兒?jiǎn)纹瑱C(jī)了,所以你看關(guān)鍵還是要有合適的引導(dǎo),采用適合學(xué)生的方式來傳授知識(shí).
又飄雪大神指點(diǎn)搜proteus和Arduino就能找到相關(guān)內(nèi)容,感興趣的可以找一下.
整體來說,Proteus的Arduino仿真硬件部分是基于Proteus的原理圖,而程序驅(qū)動(dòng)部分則是依賴于Arduino程序在Arduino IDE中編譯生成的Hex文件

Atmega328P就是Arduino UNO的芯片在這用來代替Arduino Uno
19號(hào)實(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電氣原理圖,雙擊原理圖中的型號(hào)為ATMEGA328P 單片機(jī)芯片,出現(xiàn)對(duì)話框,通過文件目錄瀏覽的方法確定Hex文件存儲(chǔ)位置,并進(jìn)行一些單片機(jī)芯片工作狀態(tài)參數(shù)的設(shè)置,最后點(diǎn)擊Proteus ISIS軟件界面左下方的播放按鈕,就可以看到Arduino單片機(jī)在Proteus仿真環(huán)境中的運(yùn)行效果了。
圖4 Arduino程序的編譯
圖4中顯示的程序是一個(gè)最簡(jiǎn)單的Arduino單片機(jī)項(xiàng)目實(shí)例,任務(wù)是:連在Arduino單片機(jī)數(shù)字端口13上的LED發(fā)光二級(jí)管,讓它不斷閃爍。要想成功仿真這個(gè)項(xiàng)目,有兩點(diǎn)要特別注意,一是Arduino程序的Hex文件生成和位置確定,二是Proteus原理圖中的Atmel328P芯片中Hex文件加載和工作參數(shù)設(shè)置。
圖5 Arduino項(xiàng)目實(shí)例LED閃爍的硬件原理圖
Arduino編譯之后,Hex文件會(huì)自動(dòng)刪除,而在Proteus仿真的Arduino單片機(jī)中,需要使用Arduino軟件產(chǎn)生的Hex文件,可是,Arduino 1.0默認(rèn)使用完Hex文件會(huì)自動(dòng)刪除的,所以取不到hex文件,為了取出hex文件,加載到Porteus中的單片機(jī)ATMEGA328P,需要修改如下:
首先要在D盤建立一個(gè)文件夾,用來專門放置Hex文件,文件名可以隨便取名,我命名為Arduino_Hex,然后點(diǎn)擊Arduino軟件界面菜單欄的File->preferences,打開對(duì)話框,如圖6,把Show verbose output during的兩個(gè)參數(shù)項(xiàng)打勾,雙擊preferences.txt文件,找到文件所在位置,再雙擊,用記事本打開文件。這時(shí)要點(diǎn)擊Arduino界面preferences對(duì)話框下方的OK按鈕,接著關(guān)掉Arduino IDE編程界面。最后,在剛才打開的preferences文檔的最后一行編輯加入build.path=d:\Arduino_Hex,保存文檔。這樣以后您再編譯Arduino程序,就可以在d:\Arduino_Hex中,看到編譯的Hex目標(biāo)文件了。(所有圖片雙擊,都可以放大?。?br>圖6 Arduino的Preference參數(shù)設(shè)置
談完了Arduino程序的Hex文件生成和位置確定,再談?wù)劻硪粋€(gè)值得注意的問題,Proteus原理圖中Atmel328P芯片的Hex文件加載和工作參數(shù)設(shè)置。
雙擊圖5中的Proteus ISIS電氣原理圖中ATMEGA328P單片機(jī),出現(xiàn)編輯對(duì)話框,點(diǎn)擊“Program File”參數(shù)項(xiàng)的“文件夾”按鈕,來確定Hex文件的位置,到d:\Arduino_Hex文件夾中可以找到當(dāng)前程序的Hex文件。上個(gè)程序的Hex文件會(huì)被新編譯的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)擊編輯對(duì)話框的“確定”按鈕,然后就可以仿真了。
網(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ī)會(huì)分別產(chǎn)生相應(yīng)的動(dòng)作,而且當(dāng)調(diào)節(jié)電位計(jì)時(shí),電機(jī)的轉(zhuǎn)速也隨之發(fā)生變化。(所有圖片雙擊,都可以放大?。?br>圖8 直流電機(jī)正反轉(zhuǎn)、啟停和調(diào)速仿真圖
圖8中的電氣符號(hào)用到了芯片元件、電源終端、虛擬儀器和連線標(biāo)號(hào),它們分別從各自的模式庫中提取出來。
圖9 仿真圖中的電氣符號(hào)的提取
仿真圖中,電源終端用到了VCC電源與接地符號(hào),虛擬儀器用到了四通道示波器和直流電壓表,連線標(biāo)號(hào)的作用是相同連線標(biāo)號(hào)的兩根線在電氣意義上是相連的,如圖8中的標(biāo)號(hào)A、B和PWM。至于芯片元件,仿真圖里用到了電阻、電容、CPU、晶振、直流電機(jī)、穩(wěn)壓管、L298N驅(qū)動(dòng)等等,芯片元件的提取通常有兩種方法,父、子類別檢索方法和關(guān)鍵字查詢法。
父、子類別檢索方法是:先選擇元件模式庫,再點(diǎn)擊“P”按鈕,打開元件查詢提取對(duì)話框,如圖10所示,例如提取的元件是單片機(jī)芯片ATMEGA328P,先在類別里找到Microprocessor ICs,在子類別里找到AVR Family,再在制造商里找到Atmel,然后在縮小了尋找范圍的結(jié)果中找到這個(gè)單片機(jī)芯片ATMEGA328P,找到后雙擊芯片,就可以把芯片提取到ISIS界面左側(cè)的DEVICES欄中,供原理圖繪制時(shí)隨時(shí)選用,如圖11所示。
圖10 芯片元件的父、子類別檢索法
關(guān)鍵字查詢法是:如果事先知道要提取的元件名稱,可以在元件查詢提取對(duì)話框左上方的關(guān)鍵字輸入欄里輸入元件名稱,如搜尋motor元件,直接輸入motor,回車后,在結(jié)果中可以很容易地找到所需元件。
圖11 芯片元件的關(guān)鍵字查詢法
按照?qǐng)D8所示的直流電機(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ù)字端口號(hào))和digitalWrite(數(shù)字端口號(hào),LOW或HIGH);模擬量輸入輸出的Arduino命令是analogRead(模擬端口號(hào))和analogWrite(數(shù)字端口號(hào), 0~255)。模擬端口只有輸入模式,沒有輸出模式,Arduino模擬量輸出是以PWM信號(hào)形式從具有PWM輸出功能的數(shù)字端口輸出的。Arduino微控制器的數(shù)字端口和模擬端口與ATMEGA 328芯片引腳的對(duì)應(yīng)關(guān)系圖如下。標(biāo)有013標(biāo)號(hào)的引腳對(duì)應(yīng)的是數(shù)字端口,在013前面有符號(hào)“”的引腳對(duì)應(yīng)的端口具有PWM輸出功能。標(biāo)有A0A5標(biāo)號(hào)的是模擬端口。
圖12 Arduino UNO端口與Atmega328P引腳對(duì)應(yīng)圖
有了Arduino UNO端口與Atmega328P引腳對(duì)應(yīng)圖,就可以方便地利用Proteus硬件仿真圖,有針對(duì)性地編寫Arduino程序了。由于以下程序中有詳細(xì)的注釋,所以對(duì)每行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信號(hào),控制電機(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信號(hào)形式輸出
delay(20);//延時(shí)
}
把程序編寫完,編譯Hex文件,再把Hex文件加載到Proteus仿真圖中Arduino單片機(jī)芯片中,最后點(diǎn)擊仿真圖左下方的播放按鈕,就可以看到基于Arduino直流電機(jī)控制項(xiàng)目的運(yùn)行效果了。
四、結(jié)束語
經(jīng)常有對(duì)創(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)用,沒想會(huì)消耗那么多的時(shí)間和金錢,“陷在”了冷酷的程序和無止盡的硬件原理中,最后也只是做了些走馬燈和數(shù)碼管秒表實(shí)驗(yàn),就草草結(jié)束,而又去追新了。這樣追逐哪有什么利用微控制器做應(yīng)用的樂趣可談。好在目前秉承開放式學(xué)習(xí)架構(gòu)的Arduino系統(tǒng)越來越流行,它可以讓所有樂于創(chuàng)作的人在短時(shí)間之內(nèi)就可以完成一個(gè)作品,并且可以透過網(wǎng)絡(luò),獲得大量共享資訊的支援。您會(huì)發(fā)現(xiàn),有了Arduino,微控制器的世界不再那么的陌生和令人敬畏,微控制器就是一個(gè)易用的工具,讓我們能夠騰出精力全力投向作品中最能體現(xiàn)個(gè)人創(chuàng)新精神的部分。









