九 實例:用AVR單片機創造機器生命
1 什么是機器生命
? ?? ? 機器生命就是一個能自主生存的機器,一個自動為生存下去而奮斗的機器。對于機器生命來說,生存的含義就是不斷電,繼續運行。機器生命具有完全自主決策、自主行動、活動于未知世界、不需人類參與就能持續運行并且自我維護等特征。影片《終結者》中的天網就是超級機器生命。《霹靂5號》描述了一個機器人從無生命到有生命的過程。
? ?? ? N.維納(Norbert Wiener,1894~1964)寫《控制論》時創造出第一個機器生命Wiener龜,這個機器龜僅有2個電子管組成的模擬計算機,但它卻能實現真正的烏龜覓食、睡覺、探索、逃避等行為,其表現如同一個有生命的生物一樣。機器龜上面有太陽能電池,當自身電池快用完前,機器龜樂于尋找一個光線充足的地方充電,充滿電后可能找個地方睡懶覺,或者探索未知世界,它有避免碰撞和避免到傾斜地方的趨向,我們無法預知它的行蹤,因為它不是按照程序運行的,就如同我們自己一樣。后來維納在他的機器龜上又加了一個電子管,三個電子管連接成簡單的神經網絡,通過對機器龜訓練,維納通過搖鈴可控制機器龜的行為。正如有生物學家訓練狗使得狗聽到搖鈴聲后就流口水。

2 我們可以自己動手做一個機器寵物
? ?? ? 我們今天有先進的單片機,制作一個更好的機器生命其實不難。機器生命遠比按固定程序運行的機器人好玩,就如同寵物狗比玩具狗好玩一樣。我們設想的機器生命可以是一個小型履帶式機器人,帶有太陽能板,能感受光線強弱,障礙物距離和碰撞,為了實現人機互動,該機器生命具有語音識別功能。試想你學習一天,回到寢室,叫一聲TONY,你的機器寵物轉身飛快跑向你,那種感覺只有寵物的創造者才能體會……

3 如何實現?如何設計電路?如何設計結構?
? ?? ? 這個機器生命方案采用ATmega16單片機做控制器,單片機的8路AD通道和其余24個IO接口都被使用。AVR單片機AD轉換頻率高于音頻,可以用來進行簡單的語音采集。機器生命的程序較復雜,而AVR單片機適合進行快速復雜運算。本設計的電路板上除了ATmega16單片機外,還有2個LG9110電機驅動芯片、2個LM386音頻功放芯片,和LM393電壓比較器芯片,再加上少量電阻電容和三極管,電路簡潔,適合初學者和中級愛好者動手制作。
? ?? ? LCD采用通用1602模塊,支持3位控制線4位數據線,如果你采用IO口復用技術,可用6條線控制LCD模塊。
? ?? ? 此方案涉及光電檢測、自動充電、語音識別、超聲波測距、鍵盤(4個碰撞開關)、LCD液晶顯示、電機驅動等技術,這些都是動手做簡單機器人的基本技術,如果愛好者能把這個機器生命做好,那么你的電路設計、調試經驗和編程能力都會有很大的提高。
? ?? ? 這個機器生命的技術含量相當于20世紀70年代國際機器人領域的先進水平。當時已經有很多非常精密和復雜的工業機器人被應用,但這種簡單的機器人怎么能稱作先進呢?因為技術的復雜和技術的先進不是一個概念,復雜+精密不一定等于先進。先進的東西不一定復雜和精密。

A 尋光
? ?? ? 我們可以用光電二極管來檢測光線強弱。當然也可以用光敏電阻。將光敏電阻和一個固定電阻串聯接在電源正負極之間,光敏電阻靠近正極一側。從光敏電阻和固定電阻連接點引出導線接到ATmega16的AD轉換輸入口。當強光照在光敏電阻時,光敏電阻阻值變小,因此其壓降變小,而固定電阻分壓增多,引出的AD檢測電位升高,被單片機轉化為數字量后判斷光線增強。機器生命有5個光電傳感器,其中4個面向機器人前后左右四個方向,另一個指向太陽能板所面對的方向。通過編程可以讓機器人自主移動到光線最強的地方。
B 充電
? ?? ? 本設計采用4.8V鎳氫充電電池為系統供電。太陽能電池板正負極通過一個三極管與電池正負極相連。有一個電壓比較器比較電池電壓與太陽能板的壓差,如果壓差高于某值,比較器控制三極管導通,太陽能電池板對充電電池充電。充電電池電壓上升,當高于某值時控制三極管關斷,結束充電。為使太陽能板能對電池組充電,要求太陽能板在陽光直射下輸出電壓高于8V。

C 語音識別
? ?? ? 用AVR單片機的高速AD檢測功能能實現簡單的語音識別。聲音信號被駐極體電容話筒接收后送至LM386音頻功放芯片放大和過濾后送至單片機AD轉換口,單片機對音頻信號幅值采樣轉化為一組數字,然后對這組進行取方差運算,得出一個特征值,該特征值可以用于簡單的語音識別。比如你發一個“e”,方差應該比較小,如果你發“p”爆破音,方差應該較大。當然,如果你用更復雜的數據處理,會得到更好的識別效果。本設計使用了2路聲音信號,目的是讓單片機判斷出聲源的大體方位。
D 超聲波測距
? ?? ? 用AVR的1個IO口輸出40KHz信號送至超聲波發射電路,當超聲波遇到障礙物返回后,被超聲波接收頭接收,信號經CX20106A解碼芯片處理,得到一個低電平脈沖,用該脈沖引發AVR單片機中斷,AVR通過檢查發波和收到回波之間的時間差即可算出障礙物距離。
E 電機驅動
? ?? ? 本設計采用2片LG9110電機驅動芯片驅動兩臺直流減速電機。LG9110輸出最大電流為800mA,僅需要2條控制線與單片機IO口直接相連即可控制一臺電機正反轉或者停止。LG9110僅有8個引腳,使用非常方便。
F 讓機器生命更聰明
? ?? ? 我的這個機器生命設計方案能實現最酷的效果是:白天,陽光明媚,機器生命跑到陽光底下曬太陽,太陽光會隨著時間變化,機器生命能自動跑到最合適的位置享受日光浴。到了晚上,機器生命會找個安靜的地方閉目養神,等待明天太陽升起。你可以訓練機器生命,讓它知道自己的名字叫什么。比如你叫著它的名字,同時站在它面前用強光照射它的太陽能電池板,如此反復訓練,會使機器生命聽到自己名字后向聲源方向跑去,在距離聲源一定遠處停止,因為以往這樣做它都能享受強光照射并充電。這就如同真正的寵物狗,你叫它名字它就跑到你跟前希望能獲得食物。這一切都是完全能夠實現的,關鍵就在于編程序實現它。
G 想象無極限,你的機器寵物將無所不能
? ?? ? 以上方案中,ATmega16的功能被發揮到極致,以至于沒有空閑的IO口,系統不能再擴展了。如果你用ATmega128單片機做,那么它擁有53個IO口,30多個中斷,128Kb的程序存儲器,4Kb的RAM,使得你能編寫更復雜的程序、儲存更多的動態數據、連接更多的外設,你的機器生命將變得非常有生命力。比如加入三軸加速度傳感器、地磁傳感器、GPS定位、雨水傳感器甚至攝像頭、無線通信模塊等,重新設計一個堅固和強勁的底盤,你的機器生命就可以在室外自由探索了。
? ?? ???以上芯片外設來源說明:在淘寶上購買很容易
? ?? ???底盤:340元的高級履帶式1:16電動坦克模型
? ?? ???加速度傳感器、地磁傳感器:美國AD公司的40元ADXL330加速度傳感器
? ?? ???GPS定位:幾十元的車載外置GPS天線
最后,我想說,機器人是非常好玩的,只要你有想象力,有毅力,努力研究實踐就能創造奇跡。
1 什么是機器生命
? ?? ? 機器生命就是一個能自主生存的機器,一個自動為生存下去而奮斗的機器。對于機器生命來說,生存的含義就是不斷電,繼續運行。機器生命具有完全自主決策、自主行動、活動于未知世界、不需人類參與就能持續運行并且自我維護等特征。影片《終結者》中的天網就是超級機器生命。《霹靂5號》描述了一個機器人從無生命到有生命的過程。
? ?? ? N.維納(Norbert Wiener,1894~1964)寫《控制論》時創造出第一個機器生命Wiener龜,這個機器龜僅有2個電子管組成的模擬計算機,但它卻能實現真正的烏龜覓食、睡覺、探索、逃避等行為,其表現如同一個有生命的生物一樣。機器龜上面有太陽能電池,當自身電池快用完前,機器龜樂于尋找一個光線充足的地方充電,充滿電后可能找個地方睡懶覺,或者探索未知世界,它有避免碰撞和避免到傾斜地方的趨向,我們無法預知它的行蹤,因為它不是按照程序運行的,就如同我們自己一樣。后來維納在他的機器龜上又加了一個電子管,三個電子管連接成簡單的神經網絡,通過對機器龜訓練,維納通過搖鈴可控制機器龜的行為。正如有生物學家訓練狗使得狗聽到搖鈴聲后就流口水。

2 我們可以自己動手做一個機器寵物
? ?? ? 我們今天有先進的單片機,制作一個更好的機器生命其實不難。機器生命遠比按固定程序運行的機器人好玩,就如同寵物狗比玩具狗好玩一樣。我們設想的機器生命可以是一個小型履帶式機器人,帶有太陽能板,能感受光線強弱,障礙物距離和碰撞,為了實現人機互動,該機器生命具有語音識別功能。試想你學習一天,回到寢室,叫一聲TONY,你的機器寵物轉身飛快跑向你,那種感覺只有寵物的創造者才能體會……

3 如何實現?如何設計電路?如何設計結構?
? ?? ? 這個機器生命方案采用ATmega16單片機做控制器,單片機的8路AD通道和其余24個IO接口都被使用。AVR單片機AD轉換頻率高于音頻,可以用來進行簡單的語音采集。機器生命的程序較復雜,而AVR單片機適合進行快速復雜運算。本設計的電路板上除了ATmega16單片機外,還有2個LG9110電機驅動芯片、2個LM386音頻功放芯片,和LM393電壓比較器芯片,再加上少量電阻電容和三極管,電路簡潔,適合初學者和中級愛好者動手制作。
? ?? ? LCD采用通用1602模塊,支持3位控制線4位數據線,如果你采用IO口復用技術,可用6條線控制LCD模塊。
? ?? ? 此方案涉及光電檢測、自動充電、語音識別、超聲波測距、鍵盤(4個碰撞開關)、LCD液晶顯示、電機驅動等技術,這些都是動手做簡單機器人的基本技術,如果愛好者能把這個機器生命做好,那么你的電路設計、調試經驗和編程能力都會有很大的提高。
? ?? ? 這個機器生命的技術含量相當于20世紀70年代國際機器人領域的先進水平。當時已經有很多非常精密和復雜的工業機器人被應用,但這種簡單的機器人怎么能稱作先進呢?因為技術的復雜和技術的先進不是一個概念,復雜+精密不一定等于先進。先進的東西不一定復雜和精密。

A 尋光
? ?? ? 我們可以用光電二極管來檢測光線強弱。當然也可以用光敏電阻。將光敏電阻和一個固定電阻串聯接在電源正負極之間,光敏電阻靠近正極一側。從光敏電阻和固定電阻連接點引出導線接到ATmega16的AD轉換輸入口。當強光照在光敏電阻時,光敏電阻阻值變小,因此其壓降變小,而固定電阻分壓增多,引出的AD檢測電位升高,被單片機轉化為數字量后判斷光線增強。機器生命有5個光電傳感器,其中4個面向機器人前后左右四個方向,另一個指向太陽能板所面對的方向。通過編程可以讓機器人自主移動到光線最強的地方。
B 充電
? ?? ? 本設計采用4.8V鎳氫充電電池為系統供電。太陽能電池板正負極通過一個三極管與電池正負極相連。有一個電壓比較器比較電池電壓與太陽能板的壓差,如果壓差高于某值,比較器控制三極管導通,太陽能電池板對充電電池充電。充電電池電壓上升,當高于某值時控制三極管關斷,結束充電。為使太陽能板能對電池組充電,要求太陽能板在陽光直射下輸出電壓高于8V。

C 語音識別
? ?? ? 用AVR單片機的高速AD檢測功能能實現簡單的語音識別。聲音信號被駐極體電容話筒接收后送至LM386音頻功放芯片放大和過濾后送至單片機AD轉換口,單片機對音頻信號幅值采樣轉化為一組數字,然后對這組進行取方差運算,得出一個特征值,該特征值可以用于簡單的語音識別。比如你發一個“e”,方差應該比較小,如果你發“p”爆破音,方差應該較大。當然,如果你用更復雜的數據處理,會得到更好的識別效果。本設計使用了2路聲音信號,目的是讓單片機判斷出聲源的大體方位。
D 超聲波測距
? ?? ? 用AVR的1個IO口輸出40KHz信號送至超聲波發射電路,當超聲波遇到障礙物返回后,被超聲波接收頭接收,信號經CX20106A解碼芯片處理,得到一個低電平脈沖,用該脈沖引發AVR單片機中斷,AVR通過檢查發波和收到回波之間的時間差即可算出障礙物距離。
E 電機驅動
? ?? ? 本設計采用2片LG9110電機驅動芯片驅動兩臺直流減速電機。LG9110輸出最大電流為800mA,僅需要2條控制線與單片機IO口直接相連即可控制一臺電機正反轉或者停止。LG9110僅有8個引腳,使用非常方便。
F 讓機器生命更聰明
? ?? ? 我的這個機器生命設計方案能實現最酷的效果是:白天,陽光明媚,機器生命跑到陽光底下曬太陽,太陽光會隨著時間變化,機器生命能自動跑到最合適的位置享受日光浴。到了晚上,機器生命會找個安靜的地方閉目養神,等待明天太陽升起。你可以訓練機器生命,讓它知道自己的名字叫什么。比如你叫著它的名字,同時站在它面前用強光照射它的太陽能電池板,如此反復訓練,會使機器生命聽到自己名字后向聲源方向跑去,在距離聲源一定遠處停止,因為以往這樣做它都能享受強光照射并充電。這就如同真正的寵物狗,你叫它名字它就跑到你跟前希望能獲得食物。這一切都是完全能夠實現的,關鍵就在于編程序實現它。
G 想象無極限,你的機器寵物將無所不能
? ?? ? 以上方案中,ATmega16的功能被發揮到極致,以至于沒有空閑的IO口,系統不能再擴展了。如果你用ATmega128單片機做,那么它擁有53個IO口,30多個中斷,128Kb的程序存儲器,4Kb的RAM,使得你能編寫更復雜的程序、儲存更多的動態數據、連接更多的外設,你的機器生命將變得非常有生命力。比如加入三軸加速度傳感器、地磁傳感器、GPS定位、雨水傳感器甚至攝像頭、無線通信模塊等,重新設計一個堅固和強勁的底盤,你的機器生命就可以在室外自由探索了。
? ?? ???以上芯片外設來源說明:在淘寶上購買很容易
? ?? ???底盤:340元的高級履帶式1:16電動坦克模型
? ?? ???加速度傳感器、地磁傳感器:美國AD公司的40元ADXL330加速度傳感器
? ?? ???GPS定位:幾十元的車載外置GPS天線
最后,我想說,機器人是非常好玩的,只要你有想象力,有毅力,努力研究實踐就能創造奇跡。
評論