前言
機器人教育融機械、傳感與控制等為一體,讓學(xué)生在手腦并用解決實際問題的過程中,有效地提高其邏輯思維能力、判斷能力、動手能力和創(chuàng)新能力,是實施素質(zhì)教育的一個重要平臺,十分有利于培養(yǎng)強國需要的高素質(zhì)人才。為推廣機器人教育,中國教育技術(shù)協(xié)會專業(yè)委員會啟動了“機器人進課堂”項目。該項目將在全國部分省市以地方課程或校本課程的形式開展機器人教育實驗,從試點開始逐步積累經(jīng)驗,擴大影響,直至形成遍及全國的成熟的機器人教育課程。 溫州中學(xué)有幸成為“機器人進課堂”項目的首批實驗學(xué)校,于2011年開始實施基于Arduino的機器人課程。本電子教材配合“Arduino創(chuàng)意機器人”課程進行使用,由浙江省溫州中學(xué)謝作如老師主編,南師大教育科學(xué)學(xué)院研究生張祿、張麗芳和劉正云三位同學(xué)一起參與編寫。作為面向中小學(xué)的Arduino選修課程,“Arduino創(chuàng)意機器人”設(shè)計了大量需要學(xué)生動手實踐的任務(wù)或者實驗,引導(dǎo)學(xué)生在玩中學(xué)、做中學(xué)。 本電子教材共設(shè)計了22課,其中4節(jié)課為選學(xué)內(nèi)容。我們期望教師采用兩節(jié)課連上的方式,以9個專題18課時的形式展開教學(xué)。當(dāng)然,也可以采用單節(jié)課的形式,其中教材中的1課剛好為1課時,根據(jù)學(xué)生的學(xué)習(xí)情況,適當(dāng)調(diào)整課時。如果有條件,建議增加幾個綜合創(chuàng)意的活動課,讓課時增加到36。具體教材的課時安排請參考我們提供教學(xué)設(shè)計、教學(xué)課件、教學(xué)微視頻等資源。 為方便更多的學(xué)校開展教學(xué),也方便學(xué)生們根據(jù)網(wǎng)絡(luò)視頻、教材自學(xué),我們特意為“Arduino創(chuàng)意機器人”教材設(shè)計了學(xué)習(xí)套件,采用了Arduino中國代理商DFRobot公司的各種模塊,必選模塊的價格為600左右。你也可以根據(jù)器材清單,通過淘寶網(wǎng)的其他店鋪購買。根據(jù)研究進程,我們將推出其他品牌的Arduino學(xué)習(xí)套件。 本電子教材的討論地址:blog.sina.com.cn/xiezuoru Arduino創(chuàng)意機器人學(xué)習(xí)套件地址:www點dfrobot點com點cn
教材目錄 緒論 認(rèn)識機器人 第一章 智能LED 第1課 走進Arduino的世界 第2課 閃爍LED 第3課 按鈕控制的LED 第4課 聰明的按鈕 第5課 呼吸燈 第6課 光控LED 第7課 LED綜合創(chuàng)意 第二章 智能風(fēng)扇 第1課 聲控風(fēng)扇 第2課 換擋風(fēng)扇 第3課 自動變速風(fēng)扇 第4課 遙控風(fēng)扇 第5課 搖頭風(fēng)扇 第6課 自動跟蹤風(fēng)扇 第7課 風(fēng)扇綜合創(chuàng)意 第三章 智能小車 第1課 走直線小車 第2課 跳8字舞的小車 第3課 避障小車 第4課 防跌落小車 第5課 巡線小車一 第6課 巡線小車二 第7課 小車綜合創(chuàng)意 附錄:Arduino機器人教學(xué)套件
緒論 認(rèn)識機器人
科技每時每刻都在悄然改變著我們的生活,機器人這個以前看似遙不可及的事物已經(jīng)慢慢融入了我們的日常生活中。什么是機器人?什么是智能機器人?怎么學(xué)習(xí)機器人技術(shù)?在緒論部分,我們將了解機器人,理解機器人的幾大主要組成部分以及它們的功能。 【任務(wù)導(dǎo)航】 認(rèn)識機器人的幾大主要組成部分及其功能。 了解機器人技術(shù)的發(fā)展。 【材料閱讀】 1.什么是機器人? 機器人(Robot)這個詞最早出現(xiàn)在上世紀(jì)初捷克科幻作家的一部叫做《羅索姆的萬能機器人》的小說中,在原文里本來是寫作“Robota”的,后來慢慢演變成了大家都接受的“Robot”一詞。不過,大家可別被機器人這個名字所誤導(dǎo),認(rèn)為機器人就一定長得和我們?nèi)祟愑袔追窒嗨。實際上,機器人的外表千奇百怪,很多和我們?nèi)祟惖耐獗頉]有半點相似性可言。那么機器人是如何定義的呢?科學(xué)家們說,“機器人是一種自動化的機器,能夠依靠自身的動力和控制能力實現(xiàn)某種任務(wù),這種機器具備一些與人或生物相似的智能能力,如感知能力、規(guī)劃能力、動作能力和協(xié)同能力等”。按照這個定義,我們?nèi)粘I钪忻刻於冀佑|到的很多機械設(shè)備,如:自動售貨機、全自動洗衣機、自動取款機、甚至是紅外感應(yīng)的自動沖水馬桶都能算是機器人了?!機器人離我們的生活并不遠(yuǎn),對吧? 而智能機器人比起一般的機器人來又進了一步。如果一個機器人能夠利用傳感器感知外部世界,然后依靠自身的智能對外界環(huán)境的變化做出反應(yīng),那么這種機器人就可以被叫做智能機器人了。 2.機器人的三大組成部分 根據(jù)機器人所需要完成的任務(wù)不同,它們的設(shè)計也是千差萬別,光從外貌很難看出規(guī)律。不過,如果我們仔細(xì)地對它們做個總結(jié)就會發(fā)現(xiàn),大多數(shù)的機器人無外乎包括下面的幾個部分,而且這幾大部件都和人類或動物的身體器官能夠一一對應(yīng)呢! 機器人的大腦——主控制器 和我們?nèi)祟惖拇竽X一樣,機器人的大腦——主控制器,是機器人最核心的部件。我們?yōu)闄C器人編寫的各種控制程序和人工智能程序都要運行在主控制器中。由機器人的傳感器得到的眾多的外界環(huán)境信息在這里得到匯總,然后控制器中的人工智能程序就會對這些信息進行處理,再隨之給各種驅(qū)動器、執(zhí)行器發(fā)出控制命令。機器人就是以這種方式去執(zhí)行各種各樣實際的任務(wù)了。 那么主控制器具體是什么東西呢?實際上,它就是一種計算機而已。這里的計算機是一個相當(dāng)寬泛的概念,它們可不僅僅是指我們家里每天用的個人電腦。除了個人電腦外,還有其它形形色色的各種計算機,小到只有同學(xué)們指甲蓋大小的單片機(MCU),大到要裝滿幾個大房間的超級計算機。而這些計算機中最廣泛被用作機器人控制器的還是要數(shù)單片機了。同學(xué)們可以想一想,如果我們要制造一臺全自動洗衣機——前面說過了全自動洗衣機也是一種機器人——那么用上一臺個人電腦去做控制器,是不是就有些“殺雞用牛刀”了呢?這種時候,單片機就可以大展拳腳了。單片機是典型的“麻雀 雖小,五臟俱全”。一片小小的單片機中就包括了中央處理器、存儲器、定時器、數(shù)字輸入/輸出接口、模擬輸入/輸出接口等。本書中所使用的機器人的主控制器就是以一個單片機為核心的,它的計算能力說出來可能會嚇同學(xué)們一跳,小小的一片單片機一秒鐘能做上千萬次的運算呢! 機器人的眼睛、耳朵和觸角——傳感器 如果機器人只能按照我們編好的程序指令有一是一,有二是二地行動,會不會就顯得太“笨”了呢?科學(xué)家們早就想辦法讓機器人具備了更高的智能,讓它們能夠根據(jù)環(huán)境的變化做出反應(yīng)。比如說,現(xiàn)在已經(jīng)有服務(wù)機器人可以根據(jù)主人家里的溫度變化調(diào)節(jié)空調(diào)、暖氣,讓主人一直處于舒適的環(huán)境中。再比如說,在國外的一些博物館中已經(jīng)有導(dǎo)游機器人為人們服務(wù)了,它們能不知疲倦地帶領(lǐng)你進行參觀并且進行講解。但是在博物館中,人來人往,導(dǎo)游機器人怎么能夠防止自己撞上其他游客呢?這些能力就要靠“傳感器”來實現(xiàn)了。傳感器就像是我們?nèi)祟惖难劬、鼻子、耳朵或是動物的觸角、聲納。它們可以將環(huán)境中的聲、光、電、磁、溫度、濕度等物理量轉(zhuǎn)化為機器人的大腦——控制器可以處理的電信號?刂破魍ㄟ^讀取這些電信號就可以很快知道周圍發(fā)生了什么,然后其中的智能程序就可以根據(jù)周圍環(huán)境的變化,做出實時的響應(yīng)了。 機器人的手、足——驅(qū)動器和執(zhí)行器 前面所舉的機器人的例子,如智能抽水馬桶、全自動洗衣機等,都是沒有移動能力的機器人。但是想想看,會跑的機器人也許能更好地幫助人類,我們可不想家里的智能管家機器人只能呆在一個房間中,對吧?因此,人們制造了一大類可以自由運動的機器人,它們被稱作移動機器人。而幫助它們移動的機械和電子設(shè)備就叫做驅(qū)動器。同樣,機器人的驅(qū)動器也是五花八門。大多數(shù)機器人就像我們?nèi)粘I钪谐R姷母鞣N車輛一樣,是用輪子或者履帶運動的。也有機器人應(yīng)用仿生學(xué)原理,像人或動物一樣用兩足、四足或六足的方式運動。還有的機器人可以用螺旋槳產(chǎn)生的推力翱翔在天空,可以像蛟龍一樣自由地潛入水下。看,有了驅(qū)動器的幫助,是不是機器人變得上山下海,無所不能了呢? 機器人的結(jié)構(gòu)中用來實際完成特定任務(wù)的裝置就被叫做執(zhí)行器,比如自動售貨機中,把貨物取出交給顧客的裝置就是執(zhí)行器。還有一些機器人的執(zhí)行器更加復(fù)雜,也看起來更像是人類的手臂。現(xiàn)代工廠中的焊接機器人、噴漆機器人、碼垛機器人就都有一只靈活、強壯的手。也許在工廠中做某些技術(shù)活兒時,機器人還是不如有經(jīng)驗的人類師傅。但是在做那些高強度、重復(fù)性的勞動時,機器人就會全面勝出了,它們可以不知疲倦地工作,又快又好地完成任務(wù),F(xiàn)在最先進的機器人已經(jīng)可以進行復(fù)雜的外科手術(shù)了。這些是不是很神奇呢? 【動手操作】 活動主題:尋找生活中的機器人。 同學(xué)們的生活中能見到各種各樣機器人的身影,讓我們睜大發(fā)現(xiàn)的眼睛,去尋找生活中的各種機器人,并且用這節(jié)課我們教給大家的思路分析它們的幾大組成部分吧,把你的結(jié)果填寫在下面的表格中。 表1 尋找生活中的機器人 【探究思考】 不管是《終結(jié)者》還是《I,Robot》中AI和機器人試圖取代人類,都是一種極為普遍的想法;蛟S這代表了人類對未來科技的恐慌,但這并未阻止技術(shù)的進步。雖然人類往往擁有不可預(yù)知的創(chuàng)造性,但機器人在很多方面都具備先天優(yōu)勢。所以,有人說人類將逐步失業(yè),機器人正偷走人類的工作。 請思考一下,哪些工作將逐步被機器人替代?人類該做出哪些對策? 【視野拓展】 1.機器人是如何幫助人類的? 機器人可以代替人類完成重復(fù)性、高強度的體力勞動。在現(xiàn)代化工廠中,大部分枯燥的體力勞動都可以用不知疲倦的工業(yè)機器人代替工人師傅們完成了,工人師傅們在電腦屏幕后就可以完成原來又臟又累的工作了。機器人進行重復(fù)性工作時的精確度也是人類無法比擬的,因此產(chǎn)品的質(zhì)量會更有保障。 機器人還可以代替人類在危險或者難以生存的條件下工作。不久的將來,大家就會發(fā)現(xiàn),一旦發(fā)生自然災(zāi)害后,救災(zāi)機器人會沖在第一線,挽救災(zāi)區(qū)人民的生命和財產(chǎn)。現(xiàn)在已經(jīng)有發(fā)達國家在軍隊中裝備了機器人,這種機器人可以負(fù)重幾百公斤在各種地貌環(huán)境中前進。從月球、火星到海底、火山,凡是科學(xué)家們需要探索的地方都少不了機器人的身影。美國發(fā)射的幾代火星探索機器人已經(jīng)正在火星上進行科考工作了。 機器人還可以與人類和諧相處,F(xiàn)代社會中生活節(jié)奏變得越來越快,在物質(zhì)豐富的同時也產(chǎn)生了各種社會問題。越來越多的“空巢老人”和行動不便的病人需要人來照顧,面對這些問題,科學(xué)技術(shù)能如何幫助我們呢?科學(xué)家們設(shè)計出了各種服務(wù)機器人,來滿足我們的要求!罢堖f給我一杯水”“把房間溫度調(diào)高一些”“幫我接通社區(qū)醫(yī)院的電話”,以后主人們只要像這樣說出自己的命令,服務(wù)機器人就會及時滿足他們的要求了。除了幫做家務(wù),當(dāng)主人感到孤獨時,機器人寵物還可以陪伴主人,給主人精神慰藉。根據(jù)最新的報道,法國科學(xué)家研制的Nao機器人,已經(jīng)被用于治愈自閉癥兒童,并且產(chǎn)生了驚人的效果。很多患有和人們交流障礙的兒童,通過和Nao機器人的相處改變了自己,也改變了未來。 2.什么是單片機? 單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時的4位、8位單片機,發(fā)展到現(xiàn)在的300M的高速單片機。一些功能比較簡單的機器人,都是用單片機作為控制器的。 2.怎么學(xué)習(xí)機器人技術(shù)? 機器人技術(shù)并非高不可攀的新技術(shù),但是其涉及運動學(xué)和動力學(xué)、系統(tǒng)結(jié)構(gòu)、傳感技術(shù)、控制技術(shù)等多領(lǐng)域的交叉學(xué)科,制作機器人的過程,就是整合科學(xué)、技術(shù)、數(shù)學(xué)領(lǐng)域的知識,以工程標(biāo)準(zhǔn)化的思想進行綜合實踐的過程。學(xué)習(xí)機器人的過程,大致可以分為模仿、改造、創(chuàng)新三個部分,循序漸進,螺旋上升。如果有能力,建議通過淘寶自行購買相關(guān)的學(xué)習(xí)套件,將自己的創(chuàng)意實現(xiàn)出來。
【挑戰(zhàn)自我】 你最想設(shè)計的機器人是怎么樣的?請大膽想象,并且對照機器人的三大結(jié)構(gòu),分別寫出機器人各個的功能。
第一章智能LED
第1課 走進Arduino的世界 對喜好機器人與機器人技術(shù)的人而言,除了希望了解機器人的定義及其構(gòu)成之外,更有興趣的是參與機器人的設(shè)計與創(chuàng)新,那么我們到底通過什么來制作機器人呢?大家有沒有接觸過Arduino?通過這節(jié)課的學(xué)習(xí),我們將帶大家進入到Arduino的神奇世界中來。 【任務(wù)導(dǎo)航】 1.認(rèn)識Arduino,了解Arduino控制板的種類; 2.掌握Arduino驅(qū)動的安裝; 3.體驗Arduino編程界面。 【材料閱讀】 1.什么是Arduino Arduino是一個基于開放源碼的軟硬件平臺,構(gòu)建于開放源碼simple I/O界面版,并具有使用類似Java、C語言的IDE集成開發(fā)環(huán)境和圖形化編程環(huán)境。由于源碼開放和價格低廉,Arduino目前廣泛地應(yīng)用于歐美等國家和地區(qū)的電子設(shè)計以及互動藝術(shù)設(shè)計領(lǐng)域,得到了Make magazine(中文版名稱為《愛上制作》)等出版物和Instructable等網(wǎng)站的認(rèn)可和推薦。Arduino被稱為“科技藝術(shù)”,作為一種新的“玩具”,甚至新的藝術(shù)載體,吸引了各個領(lǐng)域的人們加入到Arduino的神奇世界里來。 Arduino先后發(fā)布了十多個型號的板子,有可以縫在衣服上的LiLiPad ,也有為Andriod設(shè)計的Mega,也有最基礎(chǔ)的型號UNO,還有最新的Leonardo,如圖1.1.1~1.1.4所示。
圖1.1.1 LiLyPad 圖1.1.2 MEGA 圖1.1.3 UNO 圖1.1.4 Leonardo Arduino UNO是USB系列的最新版本,不同于以前的各種Arduino控制器,它不再使用FIDI的USB到串口驅(qū)動芯片,而是把Atmega8U2編程為一個USB到串口轉(zhuǎn)換器,目前Arduino UNO已成為Arduino主推的產(chǎn)品。 3.Arduino Romeo V1 本書使用的Arduino控制器是由DFRobot出品的Arduino Romeo V1,如圖1.1.5所示。該控制器采用的是最基礎(chǔ)且應(yīng)用最廣泛的UNO板卡。它繼承了Arduino 328控制器所有的特性而且集成了電機驅(qū)動、鍵盤、IO擴展板、無線數(shù)據(jù)串行通訊等接口。它不僅可以兼容幾乎所有Arduino系列的傳感器和擴展板,而且可以直接驅(qū)動12個舵機。除此之外,它還提供了更多人性化設(shè)計,采用了3P彩色排針,能夠?qū)?yīng)傳感器連接線,防止插錯。其中紅色對應(yīng)電源,黑色對應(yīng)GND,藍(lán)色對應(yīng)模擬口,綠色對應(yīng)數(shù)字口。 - 處理器:ATmega328;
- 輸出電源:5V(2A)/3.3V;
- 數(shù)字IO腳:(其中,3、5、6、9、10和11路作為PWM輸出),數(shù)字口的值為0或1;
- 模擬輸入值:A0-A7,模擬口的值為0-1023之間的任意值;
- EEPROM:1KB;
- IIC:3個(其中有兩個是90度針腳接頭);
- 測試按鈕:5個(S0-S4);
- 復(fù)位按鈕:1個(RST);
- 工作時鐘:16MHZ。
圖1.1.5 Remeo Arduino Romeo V1的功能和連接說明如圖1.1.6所示。 圖1.1.6 UNO的功能和連接說明
4.Arduino IDE 安裝 圖1.1.7 解壓后的Arduino IDE文件列表 Arduino IDE的環(huán)境不僅有文本式的編程環(huán)境(圖1.1.8所示),還有圖形化積木式的編程環(huán)境ArduBlock(圖1.1.9所示),本書采用的編程環(huán)境是后者。 圖1.1.8 Arduino IDE開發(fā)環(huán)境 圖1.1.9 ArduBlock開發(fā)環(huán)境 5.Arduino 驅(qū)動的安裝 Arduino控制器和計算機的連接一般采用USB連接線。計算機第一次連接上Arduino控制器,需要安裝驅(qū)動,以后再將Arduino控制器連到電腦上之后,就不需要安裝驅(qū)動了。驅(qū)動程序在Arduino IDE安裝目錄的Drivers文件夾中。下面以Windows 7操作系統(tǒng)為例,介紹驅(qū)動安裝過程,如圖1.1.10~1.1.15所示。 圖1.1.10 打開“設(shè)備管理器”,找到Arduino UNO設(shè)備
圖1.1.11 選擇“瀏覽計算機以查找驅(qū)動程序軟件”
圖1.1.12 選擇驅(qū)動程序Drivers所在的文件夾 圖1.1.13 如果系統(tǒng)出現(xiàn)安全提示,選擇“安裝” 圖1.1.14 安裝完畢 驅(qū)動程序安裝之后,在“設(shè)備管理器”的端口一項中將增加一個COM口設(shè)備,請記下該端口號,如圖1.1.15所示,Arduino與計算機通信端口號為COM4。 圖1.1.15 通過設(shè)備管理器查看Arduino的COM口 最后要在Arduino開發(fā)環(huán)境中設(shè)置相應(yīng)的串口號以及Arduino板的型號,注意Arduino板卡的型號為Arduino UNO,串口設(shè)置要與設(shè)備管理器中顯示的Arduino的COM口一致(比如我們這里的COM4)。 6.體驗Arduino 驅(qū)動安裝完之后,就可以開始Arduino之旅了。接下來我們用Arduino IDE開發(fā)環(huán)境中LED閃爍的示例來體驗一下Arduino吧。在Arduino UNO板的13號針腳上已經(jīng)帶了一個LED燈,如圖1.1.16所示。點擊文件——>示例——> Basic——>Blink,這時會彈出一個已經(jīng)加載到程序編輯區(qū)的IDE環(huán)境,點擊  ,將程序上傳到Arduino控制器中,程序上傳完之后會有上傳成功的提示,大家會看到LED燈在不停的閃爍。 圖1.1.16 數(shù)字針腳13指示燈
【動手操作】 活動主題一:Arduino 驅(qū)動的安裝 在裝完Arduino驅(qū)動之后,要打開設(shè)備管理器,查看自己的Arduino UNO的端口,并在打開Arduino IDE之后修改端口號使其保持一致,除此之外還要選擇板卡為Arduino UNO。 活動主題二:上傳Blink示例程序,觀察現(xiàn)象 【探究思考】 請同學(xué)們上網(wǎng)或者查閱相關(guān)的資料,了解一下通過Arduino平臺可以制作哪些有生活意義、有趣的智能人造物。 【視野拓展】 Arduino的歷史 Arduino這個經(jīng)典的開源項目,誕生于意大利的一間設(shè)計學(xué)校。Arduino的核心開發(fā)團隊成員包括:Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis和Nicholas Zambetti。 據(jù)說,Massimo Banzi的學(xué)生們經(jīng)常抱怨找不到便宜好用的微控制器,2005年冬天,Massimo Banzi跟朋友David Cuartielles討論了這個問題,David Cuartielles是一個西班牙籍晶片工程師,當(dāng)時在這所學(xué)校做訪問學(xué)者。兩人決定設(shè)計自己的電路板,并引入了Banzi的學(xué)生David Mellis為電路板設(shè)計編程語言。兩天以后,David Mellis就寫出了程式碼。又過了三天,電路板就完工了。這塊電路板被命名為Arduino。幾乎任何人,即使不懂電腦編程,也能用Arduino做出很酷的東西,比如對感測器作出回應(yīng),閃爍燈光,還能控制馬達。 隨后Banzi,Cuartielles,和Mellis把設(shè)計圖放到了網(wǎng)上。保持設(shè)計的開放源碼理念,因為版權(quán)法可以監(jiān)管開源軟件,卻很難用在硬件上,他們決定采用Creative Commons許可。Creative Commons(CC)是為保護開放版權(quán)行為而出現(xiàn)的類似GPL的一種許可。在Creative Commons許可下,任何人都被允許生產(chǎn)電路板的復(fù)制品,還能重新設(shè)計,甚至銷售原設(shè)計的復(fù)制品。你不需要付版稅,甚至不用取得Arduino團隊的許可。然而,如果你重新發(fā)布了引用設(shè)計,你必須說明原始Arduino團隊的貢獻。如果你調(diào)整或改動了電路板,你的最新設(shè)計必須使用相同或類似的 Creative Commons許可,以保證新版本的Arduino電路板也會一樣的自由和開放。唯一被保留的只有Arduino這個名字,它被注冊成了商標(biāo)。如果有人想用這個名字賣電路板,那他們可能必須付一點商標(biāo)費用給Arduino的核心開發(fā)團隊成員。你可以參考Arduino 的官方網(wǎng)站,在那里你會找到各種創(chuàng)意作品的源碼,當(dāng)然也有很多機器人應(yīng)用實例代碼,例如直流電機PWM 調(diào)速、舵機控制、超聲波測距、紅外傳感器尋跡等,相信它能使你早日實現(xiàn)DIY 機器人的夢想。 【挑戰(zhàn)自我】 同學(xué)們已經(jīng)大概了解了Arduino,請大膽想象,使用Arduino可以制作哪些機器人作品?
第2課 閃爍LED燈是我們?nèi)粘I钪凶畛R姷碾娖髦,已?jīng)成為我們?nèi)粘I钪斜夭豢缮俚碾娖,我們可以通過開關(guān)或者聲音控制燈的亮滅,那么我們能否用Arduino來實現(xiàn)呢?如何實現(xiàn)?這節(jié)課我們來用Arduino點亮一盞燈。 【任務(wù)導(dǎo)航】 - 熟悉ArduBlock;
- 搭建電路;
- 制作一個閃爍的LED。
【材料閱讀】 1.ArduBlock ArduBlock(圖1.2.1所示)是一款為Arduino設(shè)計的圖形化編程軟件,是Arduino官方編程環(huán)境的第三方軟件,目前必須依附于Arduino IDE軟件運行。ArduBlock是使用圖形化積木搭建的方式編程的,這樣的方式加強了編程的可視化和交互性,降低了編程門檻,即使沒有編程經(jīng)驗的人也可以嘗試給Arduino控制器編寫程序。除此之外我們還可以對程序進行批注。 圖 1.2.1 ArduBlock編程環(huán)境 程序中的各個模塊都是從左側(cè)的模塊庫里“拖進”編程界面的,然后用這些模塊積木進行拼接,拼接對了,會發(fā)出一聲“咔”的清脆響聲。如果要刪去模塊,直接把不需要的模塊“拖出”編程界面即可。當(dāng)我們編寫好一個程序,點擊編程環(huán)境上方的“上載到Arduino”按鈕,會發(fā)現(xiàn)Arduino文本式的編程環(huán)境上的“上傳”圖標(biāo)也開始工作了,而且在Arduino文本式的編程環(huán)境里還生成了文本式的代碼。程序上傳成功之后,文本式的文本環(huán)境下面會提示我們“上傳成功”。 2.Arduino與LED模塊的連接 LED(Light Emitting Diode,發(fā)光二極管)是一種能夠?qū)㈦娔苻D(zhuǎn)化為可見光的固態(tài)半導(dǎo)體器件,如圖1.2.2所示。它可以直接把電能轉(zhuǎn)化為光,具有體積小、耗電量低、高亮度低熱量、使用壽命長的特點,是Arduino機器人作品中實現(xiàn)光效功能的最佳選擇。LED發(fā)光模塊具有紅、綠、藍(lán)等多種顏色,并且只能顯示一種顏色,如圖1.2.3所示。一般來說,LED接到Arduino上,需要串聯(lián)限流電阻。 圖 1.2.2發(fā)光二極管 圖 1.2.3 LED發(fā)光模塊 本書使用的LED發(fā)光模塊是由DFRobot出品的數(shù)字食人魚LED發(fā)光模塊,如圖1.2.3所示。該發(fā)光模塊利用SMT將LED二極管焊在可愛的PCB板上,然后引出3P接口,我們通過3P線將LED發(fā)光模塊插到Arduino的數(shù)字口上即可。 不管是LED發(fā)光模塊還是連接到Arduino控制器的其他傳感器,一般有三條連接線,分別為輸入電壓(標(biāo)注為“+”或“5V”或“VCC”等)、輸出信號(標(biāo)注為“D”或“S”等)以及地線(標(biāo)注為“-”或“GND”等),這三條線分別和Arduino控制器的數(shù)字口或者模擬口連接。這三條線分別連接電壓、數(shù)字口或者模擬口、地。以LED發(fā)光模塊與Arduino的連接為例,連接圖如圖1.2.4所示。 圖1.  2.4 控制器與LED發(fā)光模塊的接連 接好線之后要記住接的針腳號,如圖接的是數(shù)字針腳3。這里要提醒大家的是在接線的時候,黑色的線接黑色的針腳,即GND,紅色的線接紅色針腳,即VCC,綠色的線接信號針腳,即D。除此之外,數(shù)字針腳0和1用于計算機和Arduino之間的通信,其中數(shù)字針腳0用于接收信號,數(shù)字針腳1用于發(fā)送信號,所以在接線的時候數(shù)字針腳0和1不要接。 3.制作閃爍的LED 數(shù)字針腳的值為1或0,即高電平或低電平,我們使用的這款LED發(fā)光模塊,高電平可以點亮LED,而低電平則熄滅LED。 其中【延遲】模塊的功能是上一個模塊執(zhí)行的持續(xù)時間,例如延遲1000毫秒,指的是上一個模塊會持續(xù)執(zhí)行1000毫秒。 【動手操作】 活動主題一:制作閃爍的LED 在了解了Arduino的相關(guān)知識,也熟悉了ArduBlock編程環(huán)境之后,我們自己動手制作閃爍的LED吧。 器材:Arduino板子、LED、USB數(shù)據(jù)線。 1.硬件搭建 同學(xué)們在連接LED發(fā)光模塊與Arduino控制器時,要注意黑線一般接GND,紅線接5V,第三根線接數(shù)字針腳,同時要記住自己接的針腳號。在這里提醒大家數(shù)字針腳0和1不要接。 圖 1.2.5 閃爍LED程序 在下載程序之前,要提醒同學(xué)們是查看自己的板卡和端口號是否正確,ArduBlock編程環(huán)境里面的數(shù)字針腳號是否與LED發(fā)光模塊接到Arduino控制器上的數(shù)字針腳號一致。 活動主題二:模擬交通燈 紅燈亮A秒之后滅掉,綠燈亮B秒之后滅掉,黃燈亮C秒之后滅掉,以此類推。 器材:Arduino板子、三個LED、USB數(shù)據(jù)線。 1.硬件搭建 將三個LED發(fā)光模塊分別接在Arduino控制器的數(shù)字口,比如數(shù)字針腳3、4、5。 2.參考程序 圖 1.2.6模擬交通燈 【探究思考】 大家已經(jīng)學(xué)會了制作閃爍的LED,想想日常生活中哪些地方用到了LED?這些LED有何功能?有什么效果? 【視野拓展】 全彩的LED 我們前面使用的LED發(fā)光模塊,盡管有紅、綠、藍(lán)等多種顏色,但是只能顯示一種顏色。其實,還有一種類型的LED,它可以顯示多種顏色,這類LED稱為全彩LED。全彩LED內(nèi)置了紅(Red)、綠(Green)和藍(lán)(Blue)三種顏色的燈珠,根據(jù)三原色的原理調(diào)出多種顏色。常見的LED大屏幕都是利用這種原理進行調(diào)色,呈現(xiàn)出全彩的效果。 8*8 LED RGB Matrix是由DFRobot出品的一個XY軸可任意級聯(lián)的三色全彩LED顯示矩陣模塊,如圖1.2.6所示。它可以用于顯示圖片和文字,支持多圖層和各圖層的各種平移效果。 圖 1.2.7 8*8 LED RGB Matrix 【挑戰(zhàn)自我】 大家已經(jīng)學(xué)會了制作閃爍的LED,想想還能做哪些效果的LED?流水燈的效果能否實現(xiàn)?
第3課 按鈕控制的LED在上節(jié)課我們已經(jīng)學(xué)會了制作閃爍的LED,即用程序來控制LED的變化,而控制的實現(xiàn)只能靠不同時間的間隔來表現(xiàn)一些特殊的閃爍方式,這好像有些呆板了,而且實際應(yīng)用大都是利用外部信號來控制的,日常生活中我們的燈一般是通過開關(guān)來控制的,我們也先用簡單的按鈕來控制LED吧。 【任務(wù)導(dǎo)航】 - 認(rèn)識按鈕,正確連接電路;
- 制作“按鈕按下亮,放開滅”的LED;
3.制作“按鈕按下亮,延時一段時間,自動滅”的LED。 【材料閱讀】 1.按鈕 按鈕,也稱為按鍵,是一種常用的控制電器元件,常用來接通或斷開“控制電路”(其中電流很。,從而達到控制電動機或其他電氣設(shè)備運行目的的一種開關(guān)。 我們使用的按鈕如圖1.3.1所示,也叫做按壓式的開關(guān)數(shù)字輸入模塊,能夠?qū)崿F(xiàn)非常有趣的互動作品,該按鈕模塊使用大按鈕加優(yōu)質(zhì)按鍵帽,使用方便可以做到“即插即用”。按鈕有兩種狀態(tài),即按下或者放開。我們使用的這款按鈕按下是1(HIGH),放開是0(LOW),注意不同廠家生產(chǎn)的按鈕可能不同。按鈕模塊與LED模塊一樣,也是接Arduino控制器的數(shù)字口,通常黑線接GND,紅線接5V,綠線接數(shù)字針腳。
圖1.3.1 按鈕 2.選擇結(jié)構(gòu)--【如果】 當(dāng)我們需要判斷某些結(jié)果來決定是否要執(zhí)行不同的程序時,選擇性結(jié)構(gòu)是一個很方便的結(jié)構(gòu),判斷結(jié)果決定是否執(zhí)行內(nèi)部的程序。選擇性語句的判斷有【如果】和【如果—否則】。在程序當(dāng)中,若有以上幾種結(jié)構(gòu),便會依據(jù)不同的條件選擇,執(zhí)行不同的程序片段,以達成不同的目的。這節(jié)課我們主要來學(xué)習(xí)【如果】模塊。 選擇結(jié)構(gòu)【如果】的基本形式: 圖1.3.2 選擇結(jié)構(gòu)—【如果】 其語義是:如果條件滿足即值為真,則執(zhí)行模塊里面語句,否則不執(zhí)行該語句。其過程可表示為圖1.3.3。其中判斷條件既可以是關(guān)系運算也可以是邏輯運算。 圖1.3.3 選擇結(jié)構(gòu)
(1)功能:讀取指定數(shù)字針腳的輸入值。 (2)參數(shù):需要讀取輸入值的針腳號。 (3)實例:  含義是讀取數(shù)字針腳3的值。 【動手操作】 主題一:制作“按鈕按下亮,放開滅”的LED 1.硬件搭建 連接電路時,按鈕模塊與LED模塊一樣,都要接到數(shù)字口。 器材:Arduino 控制器、LED模塊、按鈕模塊以及USB數(shù)據(jù)線。 2.參考程序 圖1.3.4 按鈕按下亮,放開滅的LED
主題二:制作“按鈕按下亮,延時一段時間,自動關(guān)閉”的LED 1.生活實例 (1)走廊里的燈,亮了之后過一會自動關(guān)閉了。 (2)中國地質(zhì)大學(xué)學(xué)生發(fā)明了投幣式臺燈,當(dāng)硬幣投入臺燈下的儲蓄罐中時,臺燈便可開始照明,半小時后,燈自動熄滅。 2.參考程序 圖1.3.5 按鈕按下亮,延時一段時間,自動關(guān)閉的LED 【探究思考】 除了以上按鈕控制LED亮滅的效果,還可以用按鈕控制LED實現(xiàn)哪些效果? 【視野拓展】 波段開關(guān) 一般的開關(guān)如前面介紹的按鈕只有兩種狀態(tài)即按下或者放開,如果說需要輸出多個狀態(tài)的話,我們還需要再接幾個按鈕到Arduino控制器上面,而波段開關(guān)它有多種狀態(tài)。以DFRobot出品的波段開關(guān)為例,如圖1.3.6所示,該模塊波段開關(guān)是一種通過旋轉(zhuǎn)來調(diào)整信號輸出的開關(guān)。它只需要一個模擬口就能讀取12個狀態(tài),大大節(jié)省了其他數(shù)字端口。而且這款波段開關(guān)具備12個檔位,每個檔位邊上都有LED顯示,產(chǎn)生炫酷的燈光效果,我們可以實時了解檔位的狀態(tài),非常方便。 圖1.3.6 波段開關(guān) 【挑戰(zhàn)自我】 請同學(xué)們嘗試實現(xiàn)按鈕按下LED亮,再按下LED滅。 第4課 聰明的按鈕 一般來說,家里面的燈都是通過開關(guān)來控制的,即按下開,再按下關(guān),那么能否用Arduino實現(xiàn)呢?這節(jié)課我們一起來學(xué)習(xí)用按鈕開關(guān)實現(xiàn)按下開,再按下關(guān)的LED效果。 【任務(wù)導(dǎo)航】 1.掌握布爾類型和變量; 2.制作“按鈕按下開,再按下關(guān)”的LED。 【材料閱讀】 在編程過程中變量和常量是基本的數(shù)據(jù)對象。編寫程序總是要與各種數(shù)據(jù)打交道,如馬達的速度、等待的時間等,這就需要涉及到變量和常量了。 常量指的是程序在運行過程中,其值不能改變的數(shù)據(jù),如圖1.4.1所示。其中常量分為數(shù)字常量、字符常量、字符串常量等。 
圖1.4.1 ArduBlock環(huán)境中的常量 變量是指在程序中用來代表數(shù)據(jù)的字符,這些字符的值是可以變化的,其中變量有多種類型,如數(shù)字變量、模擬變量、字符變量等等。ArduBlock環(huán)境中的部分變量如下圖1.4.2所示。 
圖1.4.2 變量 2.布爾類型 布爾類型(bool)用于表示真/假。該類型的變量值只能是0或者1。無論賦予任何非零值給該類型的變量,它的值都只會是1。 表4-1 布爾類型
3.非運算符 運算符是告訴編譯程序執(zhí)行特定算術(shù)或邏輯操作的符號。運算符主要分為三大類:算術(shù)運算符、 關(guān)系運算符與邏輯運算符、按位運算符。我們這節(jié)課主要來學(xué)習(xí)邏輯運算符里面的非運算。 非運算是單目符號運算的一種,所謂單目運算符就是只有需要一個操作數(shù)的運算符。非運算的符號是“!”,其意思就是取與表達式相反的值,若表達式值為真,則邏輯非運算結(jié)果為假。例如  ,如果數(shù)字針腳的值為0,非0就是1即真;相反如果數(shù)字針腳的值為1,非1就是0即假。 4.按鈕抖動 通常的按鍵所用開關(guān)為機械彈性開關(guān),當(dāng)機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產(chǎn)生這種現(xiàn)象而做的措施就是按鍵消抖。而最簡單的消抖方法就是加入延時。 【動手操作】 活動主題:制作“按鈕按下開,再按下關(guān)”的LED。 1.硬件搭建 電路的連接跟上節(jié)課一樣,這里還是要特別強調(diào)一下我們的按鈕模塊接數(shù)字口,并且黑線接GND,紅線接5V,第三根線接信號針腳。在接好電路之后,要記住自己接的是哪個數(shù)字口。 器材:Arduino Romeo控制器、按鈕、LED發(fā)光模塊以及數(shù)據(jù)線。 2.參考程序一 圖1.4.3 按鈕按下開,再按下關(guān)的LED 參考程序二 提示:參考程序二加了延時。 參考程序三 提示:參考程序三加了兩個延時(按下和放開都加了延時)同時加了當(dāng)循環(huán)。 【探究思考】 - 請同學(xué)們下載程序,仔細(xì)觀察LED的穩(wěn)定性如何?解釋為什么出現(xiàn)這種現(xiàn)象?如何來解決?
- 思考一個按鈕控制LED,還有哪些情況?
【視野拓展】 通常的按鍵所用開關(guān)為機械彈性開關(guān),當(dāng)機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產(chǎn)生這種現(xiàn)象而作的措施就是按鍵消抖,如圖1.4.4所示。 抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。這是一個很重要的時間參數(shù),在很多場合都要用到。 圖1.4.4 按鍵抖動
按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數(shù)秒。鍵抖動會引起一次按鍵被誤讀多次。為確保CPU對鍵的一次閉合僅作一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時讀取鍵的狀態(tài),并且必須判別到鍵釋放穩(wěn)定后再作處理。 消抖是為了避免在按鍵按下或是抬起時電平劇烈抖動帶來的影響。按鍵的消抖,可用硬件或軟件兩種方法。一般來說,我們會使用軟件方法去抖,即檢測出鍵閉合后執(zhí)行一個延時程序,5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5ms~10ms的延時,待后沿抖動消失后才能轉(zhuǎn)入該鍵的處理程序。 軟件消抖的方法是不斷檢測按鍵值,直到按鍵值穩(wěn)定。實現(xiàn)方法:假設(shè)未按鍵時輸入1,按鍵后輸入為0,抖動時不定?梢宰鲆韵聶z測:檢測到按鍵輸入為0之后,延時5ms~10ms,再次檢測,如果按鍵還為0,那么就認(rèn)為有按鍵輸入。延時的5ms~10ms恰好避開了抖動期。 【挑戰(zhàn)自我】 - 思考能否用模擬變量實現(xiàn)按鈕按下LED亮,再按下LED滅?
- 兩個按鈕控制LED,有哪些效果?思考并嘗試實現(xiàn)。
第5課 呼吸燈在前面的實例當(dāng)中,我們都是用Arduino控制器來控制LED燈的亮或滅的變化。但是并沒有體現(xiàn)LED的電壓由高到低或者由低到高的變化,即中間過程沒有得到體現(xiàn)。但有時要有,比如在KTV或演唱會上,為了達到很好的燈光效果,有時要使燈的亮暗漸變,即是個連續(xù)變化的過程。那我們能否實現(xiàn)呢? 【任務(wù)導(dǎo)航】 - 掌握PWM;
- 掌握模擬輸出;
- 掌握當(dāng)循環(huán)。
【材料閱讀】 1.呼吸燈 呼吸燈,顧名思義,就是燈光在微電腦控制之下完成由亮到暗的逐漸變化,感覺像是在呼吸。廣泛應(yīng)用于手機之上,并成為各大品牌新款手機的賣點之一。如果你的手機里面有未處理的通知,比如說未接來電,未查收的短信等等,呼吸燈就會由暗到亮的變化,像呼吸一樣那么有節(jié)奏,起到一個通知提醒的作用。 2.PWM 現(xiàn)今多數(shù)系統(tǒng)皆采用數(shù)字控制的方式,由核心微處理器接收回傳的感測信息,并針對與目標(biāo)的差值再調(diào)整輸出。而數(shù)字信號只有0與1兩種變化,怎么調(diào)整輸出值的大小滿足需求呢?這時我們可以將數(shù)字信號轉(zhuǎn)化成模擬信號,這就需要我們的PWM了。 脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中,它可以將數(shù)字信號轉(zhuǎn)化為模擬信號。 Arduino Romeo控制器的數(shù)字口上有6個針腳支持PWM信號,即3、5、6、9、10和11。PWM的輸出值為0~255,LED發(fā)光模塊接到這幾個針腳上面,就可以控制LED的亮度,不會只有單純的亮跟滅兩種選擇。這里要注意的是LED發(fā)光模塊是可以調(diào)亮度的,有些LED發(fā)光模塊不能調(diào)節(jié)亮度,即便插在這個針腳上面,也無法控制LED的亮度。本書用的LED發(fā)光模塊是可以調(diào)節(jié)亮度的。 3.模擬針腳的輸出 - 功能:將指定的值給模擬口。
- 參數(shù):Pin是需要輸入值的針腳號;Value的取值為0~255之間的任意值。
(3)實例:  意思就是將模擬針腳3的值設(shè)定為255。 前面介紹的選擇結(jié)構(gòu)只能判斷一次,只有程序流程重新來過時,才會再次判斷。而某些情況下還需要條件滿足的時候不斷地重復(fù)執(zhí)行某些語句,這就需要循環(huán)型的控制語句如重復(fù)循環(huán)或當(dāng)循環(huán)了。 當(dāng)循環(huán)的基本形式: 功能描述:當(dāng)條件成立即為真(1)的時候,執(zhí)行循環(huán)體內(nèi)的語句,且循環(huán)體會重復(fù)執(zhí)行;當(dāng)條件不成立的時候即為假(0)時,跳出循環(huán)體,結(jié)束循環(huán)。如果條件始終成立,則會進入死循環(huán),循環(huán)體一直執(zhí)行下去。 【動手操作】 活動主題一:數(shù)值控制LED亮度 1.硬件搭建 在連接電路時,LED模塊要接到數(shù)字口支持PWM信號的針腳上,即3、5、6、9、10、和11。 器材:Arduino Romeo控制器、LED發(fā)光模塊以及數(shù)據(jù)線。 2.參考程序 活動主題二:制作呼吸燈
圖1.5.1 呼吸燈參考程序 【探究思考】 1.能否用按鈕控制LED的亮度情況?如何實現(xiàn)? 2.你會使用條件語氣制作呼吸燈? 3.還可以制作哪些效果的LED? 【視野拓展】 PWM,脈寬調(diào)制:即通過一系列脈沖的寬帶來調(diào)制(或控制)來等效得到所需要的波形(包括形狀和幅值),如圖1.5.2所示,咱們可以通過很多脈沖來恢復(fù)得到正弦波形。這也可以從高中所學(xué)積分的面積等效的原理解釋。比如第1個脈沖所圍的面積,等于第一個脈沖前由正弦波形圍成的面積。通過改變方波的占空比,就可以改變等效的輸出電壓波形。試想一下,如果每個脈沖的寬度相等,則所等效的波形為一條直線,即為直流電壓信號。PWM調(diào)制廣泛應(yīng)用與電機調(diào)速和閥門控制中。比如現(xiàn)在的電動車就是通過PWM調(diào)速的。 圖1.5.2 PWM 2.數(shù)字信號和模擬信號 數(shù)字信號:是指幅度取值離散的,其值被限制在有限域范圍內(nèi),如二進制碼就是一種離散信號。其特點是抗干擾能力強,易于數(shù)字信號處理,F(xiàn)在很多信號基本上都是數(shù)字信號,如手機信號,計算機處理信息等等。 模擬信號:是指其信號波形是連續(xù)變化的,咱們可以在任意的瞬間取值。由于模擬信號易受干擾影響,不容易處理,一般都是先將模擬信號離散成數(shù)字信號,以便處理。兩者的區(qū)別如圖1.5.4所示: 圖1.5.4 A/D區(qū)別 【挑戰(zhàn)自我】 前面我們已經(jīng)學(xué)過了用按鈕控制LED的亮滅,請同學(xué)們嘗試用按鈕控制呼吸燈。
第6課 光控LED 既然Arduino能夠輸出模擬的電壓,那么Arduino能不能感知到外界模擬的信號呢,如聲音、光線等信息?這些就需要用到我們的傳感器了。這節(jié)課我們就來學(xué)習(xí)利用傳感器感知外界的信息來控制LED。 【任務(wù)導(dǎo)航】 2.能夠正確連接傳感器,并利用傳感器信息進行相應(yīng)的控制; 3.掌握串口監(jiān)視器的使用。 【材料閱讀】 1.傳感器 傳感器是一種物理裝置或生物器官,能夠探測、感受外界的信號、物理條件(如光、熱、濕度)或化學(xué)組成(如煙霧),并將探知的信息傳遞給其他裝置或器官。傳感器一般由敏感元件、轉(zhuǎn)換器件 和轉(zhuǎn)換電路三個部分組成,通過敏感元件獲取外界信息并轉(zhuǎn)換成電信號輸出,然后由控制器進行分析處理,如圖1.6.1所示。 圖 1.6.1 傳感器結(jié)構(gòu) 可以從不同的維度對傳感器進行分類,這里我們只介紹以其輸出信號為標(biāo)準(zhǔn)對傳感器進行分類,可以分為: 模擬傳感器——將被測量的非電學(xué)量轉(zhuǎn)換成模擬電信號,如聲音傳感器、光線傳感器等。 數(shù)字傳感器——將被測量的非電學(xué)量轉(zhuǎn)換成數(shù)字輸出信號(包括直接和間接轉(zhuǎn)換),如尋線傳感器、防跌落傳感器等。 開關(guān)傳感器——當(dāng)一個被測量的信號達到某個特定的閾值時,傳感器相應(yīng)地輸出一個設(shè)定的低電平或高電平信號,如按鈕。 其中開關(guān)傳感器以及數(shù)字傳感器統(tǒng)稱為數(shù)字傳感器。 2.光線傳感器 光線傳感器也稱環(huán)境光線傳感器,本書使用的光線傳感器是由DFRobot出品的模擬環(huán)境光線傳感器,如圖1.6.2所示。該傳感器模塊可以用來對環(huán)境光線的強度進行檢測,通常用來制作隨光線強度變化產(chǎn)生特殊效果的互動作品。 圖1.6.2 光線傳感器 光線傳感器是一種模擬傳感器,它要接到Arduino Romeo控制板的模擬口上,值的范圍為0~1023,光線強弱的不同會輸出不同的值,光線越強數(shù)值越大,光線越暗數(shù)值越小。光線傳感器在接線時,也是黑線接GND,紅線接5V,第三根線接模擬針腳。光線傳感器與Arduino Romeo控制器的連接示意圖,如圖1.6.3所示。 圖1.6.3 光線傳感器與Arduino的連接 3.串口監(jiān)視器 光線傳感器可以檢測當(dāng)前環(huán)境的光線值,那光線值到底是多少呢?這就需要用到串口監(jiān)視器了。ArduBlock開發(fā)環(huán)境下的  (串口監(jiān)視器)用來監(jiān)控串口的通訊狀況。單擊串口監(jiān)視器按鈕后將出現(xiàn)類似于如圖1.6.4所示的窗口。 串口監(jiān)視器可以顯示從Arduino Romeo 控制器發(fā)來的數(shù)據(jù),比如光線傳感器、聲音傳感器的值等。Serial Monitor(串口監(jiān)視器)是非常有用的工具,特別是在調(diào)試程序時。 圖1.6.4 串口監(jiān)視器 串口輸出要用到  ,具體使用方法如圖1.6.5所示: 圖1.6.5 串口輸出針腳值 這里要提醒大家的是其中的【message】模塊可有可無,而且【message】模塊里面的message可以改為其它的字符串;如果我們要輸出的模擬傳感器的值,我們要選擇【和模擬量結(jié)合】模塊,如果是數(shù)字傳感器或者LED發(fā)光模塊的值,我們要選擇【和數(shù)字量結(jié)合】模塊,其中數(shù)字針腳或者模擬針腳換成我們傳感器或者LED發(fā)光模塊的針腳值。 【動手操作】 活動主題一:讀取光線傳感器的值 1.硬件搭建 光線傳感器模塊要接到Arduino控制器模擬口上。 器材:Arduino Romeo控制器、USB線、光線傳感器。 2.參考程序 圖1.6.6 串口輸出光線傳感器的值 活動主題二:制作光控LED 1.作品描述 如果光線暗,LED點亮,否則LED熄滅。 2.硬件搭建 光線傳感器模塊要接到Arduino控制器模擬針腳上,LED發(fā)光模塊接到Arduino控制器的數(shù)字針腳上。 器材:Arduino Romeo控制器、USB線、光線傳感器以及LED發(fā)光模塊。 3.參考程序 圖1.6.7 光控LED 提示:程序中30是光線暗的時候傳感器的值。不同的光線傳感器數(shù)值是不一樣的,需要根據(jù)具體傳感器進行修改。
【探究思考】 利用光線傳感器還可以實現(xiàn)哪些效果的LED?光線傳感器還可以控制哪些東西?能不能制作其他效果的LED? 【視野拓展】 映射 ArduBlock編程環(huán)境中有一個【映射】模塊,該模塊可以將一定范圍內(nèi)的一個值轉(zhuǎn)化為另一個范圍內(nèi)的值。下面簡單介紹一下該模塊的使用。
下面給大家舉個簡單的例子,比如說0~100之間的20可以轉(zhuǎn)化為0~10之間的2。  這節(jié)課我們實現(xiàn)了光控LED,即光線暗LED亮,光線強LED滅;我們也知道了光線傳感器的值為0~1023,而LED的亮度為0~255,那么能否根據(jù)光線光線的強弱控制LED的亮度呢?【利用映射實現(xiàn)】 【挑戰(zhàn)自我】 我們已經(jīng)學(xué)會了用按鈕或者傳感器控制LED的亮滅和明暗,請同學(xué)們想想,我們還可以制作哪些有創(chuàng)意的LED?還能用哪些傳感器控制我們的LED?
第7課 LED綜合創(chuàng)意通過前面幾節(jié)課的學(xué)習(xí),我們已經(jīng)了解并學(xué)會了利用按鈕或者傳感器來控制LED的亮度以及明暗情況,在我們一起設(shè)計和開發(fā)的過程中,同學(xué)們有沒有產(chǎn)生一些創(chuàng)意的想法呢?這節(jié)課我們就來制作一些有創(chuàng)意的LED。 【任務(wù)導(dǎo)航】 1.熟悉防跌落傳感器和聲音傳感器; 2.設(shè)計并嘗試實現(xiàn)一個創(chuàng)意的LED作品。 【材料閱讀】 1.聲音傳感器 本書所用到的聲音傳感器使用的是DFrobot出品的模擬聲音傳感器,如圖1.7.1所示。這是一款簡單、實惠的電子耳朵,它可以用來對周圍環(huán)境的聲音強度進行檢測,并轉(zhuǎn)化為模擬信號,檢測到的聲音強度與輸出電壓成正比,它通常用來制作一些與聲音有關(guān)的機器人作品,例如聽到聲音點亮LED,延時一段時間LED自動關(guān)閉。該傳感器模塊的接線與光線傳感器模塊的接線相同,同樣接的是模擬口。 圖1.7.1 聲音傳感器 2.防跌落傳感器 本書使用的數(shù)字防跌落傳感器模塊采用夏普的紅外測距模塊,如圖1.7.2所示。該模塊輸出的數(shù)字信號,有效距離10cm,當(dāng)檢測到10cm內(nèi)有障礙物時,輸出低電平;而沒有檢測到障礙物時,輸出高電平。該模塊也有三個針腳,接線方法與LED發(fā)光模塊一樣,紅色接VCC,黑色接GND,第三根線接數(shù)字針腳。同樣,使用該傳感器也可以制作一些創(chuàng)意的機器人作品,例如使用兩個防跌落傳感器可以制作手勢控制LED,比如手勢從左到右點亮LED;手勢從右到左熄滅LED。 圖1.7.2 數(shù)字防跌落傳感器
【動手操作】 活動主題一:聲控?zé)簦牭铰曇?/strong>LED亮,再聽到聲音LED滅) 1.硬件搭建 在連接電路時,聲音傳感器模塊要接到模擬口上面,LED發(fā)光模塊接到數(shù)字口。 器材:Arduino Romeo 控制器、USB線、聲音傳感器以及LED模塊。 2.參考程序 圖1.7.4 聲控LED 活動主題二:制作手勢控制LED 1.硬件搭建 在搭建硬件時,兩個數(shù)字防跌落傳感器以及LED發(fā)光模塊接到數(shù)字口上面。 器材:Arduino Romeo 控制器、USB線、兩個數(shù)字防跌落傳感器以及LED模塊。 2.參考程序 圖1.7.4 手勢控制LED 活動主題三:其他創(chuàng)意的LED 【探究思考】 同學(xué)們互相交換自己的創(chuàng)意LED,并相互評價。 【視野拓展】 風(fēng)能驅(qū)動的LED路燈 這是一款可以被風(fēng)驅(qū)動的LED路燈,如圖1.7.5所示。外面的燈罩是透明的扇片并排列成圓筒型,點亮后與我們傳統(tǒng)的走馬燈相似,而中間就是低能耗的LED燈,只要風(fēng)速達到1.5米/秒就可以被點亮,LED功率不大卻足夠照亮附近的區(qū)域。 白天只要有風(fēng)轉(zhuǎn)動燈罩,LED路燈就能將風(fēng)能轉(zhuǎn)化成電能儲存起來,如同涓涓細(xì)流般匯聚起來讓LED燈點亮整個晚上。這款利用風(fēng)能的LED路燈將風(fēng)能發(fā)電部分與LED路燈完美地融為一體,簡單而實用,而且扇片快速轉(zhuǎn)動時透出光線的效果也是很獨特的。無需額外的電網(wǎng)供電與控制,幽藍(lán)色的LED路燈能夠很好地融入自然環(huán)境,在幽暗的環(huán)境里為人們提供一個明亮的守候。 圖1.7.5 風(fēng)能驅(qū)動的LED路燈
直接用手指掌控的LED燈 現(xiàn)實生活中我們習(xí)慣用開關(guān)來控制燈光的關(guān)閉,燈的亮度,現(xiàn)在介紹的是一款可以帶觸摸的智能控制燈亮程度的LED臺燈,如圖1.7.6所示;蛟S這樣酷的臺燈會出現(xiàn)在某個精致的書吧,在面板上方用手指輕觸感應(yīng)用手指跨度的距離對LED燈光強弱進行控制,關(guān)閉燈光的方式是迅速劃過面板。 圖1.7.6 手指掌控的LED 【挑戰(zhàn)自我】 同學(xué)們想一想我們還可以制作哪些有創(chuàng)意的LED?我們設(shè)計的LED還有哪些地方需要改進?
第二章 智能風(fēng)扇
第1課 聲控風(fēng)扇風(fēng)扇是我們生活中常見的家用電器,它是通過直流電機帶動扇葉轉(zhuǎn)動的,可以用Arduino控制風(fēng)扇嗎?如何控制呢?在這節(jié)課里,我們可以理解Arduino控制直流電機的方式以及制作聲控風(fēng)扇。 【任務(wù)導(dǎo)航】 1. Romeo控制直流電機; 2. 制作聲控風(fēng)扇。 【材料閱讀】 1.Romeo控制直流電機 Romeo控制器不僅繼承Arduino328控制器所有的特性,而且集成了電機驅(qū)動、按鈕、IO擴展板、無線數(shù)據(jù)串行通訊等接口。由于本節(jié)課主要用到的是帶動風(fēng)扇的電機,這里就主要講解一下Romeo中直流電機的控制。 控制LED是將LED模塊直接連接到數(shù)字針腳,那么控制風(fēng)扇是不是也將電機直接連接到數(shù)字針腳呢?當(dāng)然不是,因為針腳直接輸出的電流太小,無法帶動電機轉(zhuǎn)動,所以需要專門的電機輸出——Romeo板的L298驅(qū)動。 Romeo中電機控制針跳線,將分配用于電機控制針腳為數(shù)字口4、5、6、7。拔掉跳線將釋放數(shù)字口,電機控制器將被禁用。接線圖如2.1.1所示,連接電機的地方變式電機驅(qū)動模塊。另外,Romeo可以使用外接電源,也可不使用,通過跳線控制。 圖2.1.1 電機接線圖 Romeo控制電機有兩種模式:PWM模式和PLL模式,這里我們用到的是PWM模式,PLL模式在視野拓展中會有介紹。通過改變兩個數(shù)字IO針腳和兩個PWM針腳的PWM對直流電動機控制端口實現(xiàn)。如表2.1.1是PWM控制模式的針腳分配,圖2.1.2是對應(yīng)的實物。其中,M1是電機1,M2是電機2。 表2.1.1 PWM針腳分配 圖2.1.2 PWM控制模式 2.模擬聲音傳感器 模擬聲音傳感器在第一章進行了簡單的介紹,這里再具體介紹一下。它是一款簡單、實惠的電子耳朵,它能“聽到”聲音的大小,并轉(zhuǎn)化為模擬信號。通過模擬反饋電壓信號的大小值體現(xiàn)環(huán)境聲音的大小。要一個簡單的3芯數(shù)據(jù)線就能將它連接到“大腦”Arduino控制器。Arduino在“聽到”不同強弱的聲音后做出你設(shè)定的反應(yīng)。它是基于麥克風(fēng)為聲音檢測的傳感器,可用來對周圍環(huán)境中的聲音強度進行檢測,具有300倍的放大器,輸出模擬信號能使用3.3V和5V為基準(zhǔn)AD采集,可以用來實現(xiàn)根據(jù)聲音大小進行互動的效果、制作聲控機器人、聲控開關(guān)、聲控報警等。實物如圖2.1.3所示,接線時注意連接模擬針腳。 圖2.1.3 模擬聲音傳感器 【動手操作】 活動主題:制作我的聲控風(fēng)扇 同學(xué)們在了解了相關(guān)的知識后,可以自己制作本課的聲控風(fēng)扇了,我們用到的器材主要是Romeo板子、模擬聲音傳感器、風(fēng)扇(帶直流電機)。 1.硬件搭建(聲控風(fēng)扇的連接) 在連接物理電路時,需要注意:模擬聲音傳感器接到模擬口(程序中,傳感器連接的是模擬口1,電機接的是M1接線柱)。 (1)讀取模擬聲音傳感器的值 圖2.1.4 讀取模擬聲音傳感器的值 (2)聲控風(fēng)扇 圖2.1.5 聲控風(fēng)扇 【探究思考】 請同學(xué)們討論一下,在生活中聲控風(fēng)扇可以用在哪里呢?哪些地方也用到了聲音控制? 【視野拓展】 1.直流電機的控制方式 直流電機是將直流電能轉(zhuǎn)換成機械能的裝置,是目前應(yīng)用最廣泛的一種機器人驅(qū)動器件,具有效率高、調(diào)速性能好和起動轉(zhuǎn)矩大等特點。直流電機應(yīng)用磁感應(yīng)原理將電能轉(zhuǎn)換為機械能,在磁場中放入通有電流的導(dǎo)體就會產(chǎn)生磁感應(yīng)效應(yīng)。 圖2.1.7中所示為一個典型的直流電機控制電路。電路得名于“H橋驅(qū)動電路”是因為它的形狀酷似字母H。在這里,4個三極管組成H的4條垂直腿,而電機就是H中的橫杠(注意:圖2.1.7及隨后的兩個圖都只是示意圖,而不是完整的電路圖,其中三極管的驅(qū)動電路沒有畫出來)。 如圖所示,H橋式電機驅(qū)動電路包括4個三極管和一個電機。要使電機運轉(zhuǎn),必須導(dǎo)通對角線上的一對三極管。根據(jù)不同三極管對的導(dǎo)通情況,電流可能會從左至右或從右至左流過電機,從而控制電機的轉(zhuǎn)向。 圖2.1.6 H橋驅(qū)動電路示意圖 要使電機運轉(zhuǎn),必須使對角線上的一對三極管導(dǎo)通。例如,如圖2.1.8所示,當(dāng)Q1管和Q4管導(dǎo)通時,電流就從電源正極經(jīng)Q1從左至右穿過電機,然后再經(jīng)Q4回到電源負(fù)極。按圖中電流箭頭所示,該流向的電流將驅(qū)動電機順時針轉(zhuǎn)動。當(dāng)三極管Q1和Q4導(dǎo)通時,電流將從左至右流過電機,從而驅(qū)動電機按特定方向轉(zhuǎn)動(電機周圍的箭頭指示為順時針方向)。 圖2.1.7 H橋驅(qū)動電動機順時針轉(zhuǎn)動 圖2.1.9所示為另一對三極管Q2和Q3導(dǎo)通的情況,電流將從右至左流過電機。當(dāng)三極管Q2和Q3導(dǎo)通時,電流將從右至左流過電機,從而驅(qū)動電機沿另一方向轉(zhuǎn)動(電機周圍的箭頭表示為逆時針方向)。 圖2.1.8 H橋驅(qū)動電動機逆時針轉(zhuǎn)動 2.PLL控制模式 Romeo也支持PLL相位鎖相環(huán)控制模式。如表2.1.2是PLL控制模式的針腳分配,圖2.1.10是對應(yīng)的實物圖。 表2.1.2 PLL針腳分配 圖2.1.9 PLL控制模式 對這種控制模式感興趣的同學(xué)可以利用網(wǎng)絡(luò)查找并了解一下。 【挑戰(zhàn)自我】 我們制作的聲控風(fēng)扇有聲音時轉(zhuǎn)動,沒聲音時馬上就停掉了,如果想讓風(fēng)扇過一會在停掉,可以怎樣解決呢? 回想一下LED中學(xué)過按鈕可以控制LED的亮滅,可以控制風(fēng)扇的開關(guān)嗎?自己嘗試一下。
第2課 換擋風(fēng)扇家中的風(fēng)扇一般是可以換擋的,而上節(jié)課我們制作的風(fēng)扇不能實現(xiàn)這個功能。Arduino可以制作出換擋風(fēng)扇嗎?答案是肯定的,這節(jié)課就來學(xué)習(xí)換擋風(fēng)扇的制作。 【任務(wù)導(dǎo)航】 1.掌握選擇結(jié)構(gòu)的嵌套; 2.進一步熟悉PWM控制直流電機的速度; 3.制作換擋風(fēng)扇。 【材料閱讀】 1.選擇結(jié)構(gòu) 我們前面已經(jīng)學(xué)習(xí)過選擇結(jié)構(gòu),包括“如果……”和“如果……否則……”兩種基本結(jié)構(gòu),如圖2.2.1所示: 圖2.2.1 選擇結(jié)構(gòu) 其實選擇結(jié)構(gòu)還可以嵌套使用,如圖2.2.2所示: 圖2.2.2 選擇結(jié)構(gòu)的嵌套 2.用按鈕換擋 用按鈕換擋可以制作出換擋風(fēng)扇,用自然語言描述換擋風(fēng)扇的功能:初始狀態(tài)是空檔,風(fēng)扇靜止;按鈕按下一次,風(fēng)扇一檔,風(fēng)扇轉(zhuǎn)動稍快;再按一次,風(fēng)扇二檔,風(fēng)扇轉(zhuǎn)動更快;再按一次,回空擋,風(fēng)扇停止轉(zhuǎn)動…… 控制風(fēng)扇轉(zhuǎn)速是通過設(shè)定針腳5的值,前提是電機接的M1接線柱;若接M2的話,則是設(shè)定針腳6的值。注意:值的取值范圍應(yīng)該是0-255之間。 【動手操作】 活動主題:制作我的換擋風(fēng)扇 同學(xué)們在了解了相關(guān)的知識后,可以自己制作本課的換擋風(fēng)扇了,我們用到的器材主要是Romeo板子、按鈕、風(fēng)扇(帶直流電機)。 1.硬件搭建(換擋風(fēng)扇的連接) 在連接物理電路時,需要注意:按鈕接到數(shù)字口上(程序中,按鈕連接的是數(shù)字口2,電機接的是M1接線柱)。 2.參考程序 圖2.2.3 換擋風(fēng)扇 【探究思考】 想一想,你做的換擋風(fēng)扇性能如何,符合你的預(yù)期嗎?請同學(xué)們相互討論一下,你的風(fēng)扇還可以做哪些改進,或者是還可以添加哪些創(chuàng)意的效果。 【視野拓展】 1.ArduBlock中控制電機的模塊 我們都使用了“設(shè)定針腳數(shù)字值”和“設(shè)定針腳模擬值”這兩個模塊來控制電機的轉(zhuǎn)動,以控制電機M1為例,我們可以通過設(shè)定針腳4的高低電平來控制其轉(zhuǎn)動方向,通過設(shè)定針腳5的PWM值來控制其轉(zhuǎn)動速度。 其實,ArduBlock還為我們提供了其它的電機控制模塊。在“教育機器人”一欄中,分別有“電機運行”“設(shè)置電機”“停止電機”三個電機控制模塊。下面我們就分別介紹一下這三個模塊。 “電機運行”模塊如圖2.2.4所示,是同時設(shè)置電機M1和M2的轉(zhuǎn)動方向和轉(zhuǎn)動速度。參數(shù)的正負(fù)代表轉(zhuǎn)動方向,參數(shù)值大小代表轉(zhuǎn)動速度,參數(shù)范圍在-255到255之間。 圖2.2.4 “電機運行”模塊 “設(shè)置電機”模塊如圖2.2.5所示,是設(shè)置某一個電機的轉(zhuǎn)動方向與轉(zhuǎn)動速度。上面參數(shù)是電機編號,下面參數(shù)是電機轉(zhuǎn)動方向和轉(zhuǎn)動速度,同“電機運行”。 圖2.2.5 “設(shè)置電機”模塊 “停止電機”模塊如圖2.2.6所示,是停止所有電機。 圖2.2.6 “停止電機”模塊 這幾個模塊使用起來都比較簡單,有興趣的同學(xué)可以嘗試試用一下。 2.延時消抖 還記得LED中按鈕抖動現(xiàn)象嗎?細(xì)心的同學(xué)會發(fā)現(xiàn),我們這里的按鈕也會有抖動現(xiàn)象。對于本課中的風(fēng)扇利用延時消抖,其實很簡單,就在程序最后加上一個小的延時,如下面紅框中標(biāo)出的即是。 圖2.2.7 延時消抖
【挑戰(zhàn)自我】 請同學(xué)們思考一下,根據(jù)前面學(xué)過的按鈕控制的LED,若使用兩個按鈕做換擋風(fēng)扇,一個是加檔,一個是減檔,你可以實現(xiàn)嗎?嘗試一下。再想一想還有其他的控制方式嗎?
第3課 自動變速風(fēng)扇通過前面的學(xué)習(xí),同學(xué)們了解了風(fēng)扇的轉(zhuǎn)速是可以變化的,比如用按鈕制作的換擋風(fēng)扇,那么風(fēng)扇可以根據(jù)我們的需要自動變速嗎?聽起來很酷吧。在這節(jié)課里,我們就來嘗試一下制作自動變速風(fēng)扇。 【任務(wù)導(dǎo)航】 1.了解超聲波傳感器及其測距原理; 2.制作自動變速風(fēng)扇。 【材料閱讀】 1.超聲波傳感器 我們使用的超聲波傳感器是HC-SR04超聲波傳感器,它基于聲納原理,通過監(jiān)測發(fā)射一連串調(diào)制后的超聲波及其回波的時間差來得知傳感器與目標(biāo)物體間的距離值。其性能比較穩(wěn)定,測度距離精確,盲區(qū)為2cm,如圖2.3.1是HC-SR04超聲波傳感器。 圖2.3.1 HC-SR04超聲波傳感器 HC-SR04超聲波傳感器的主要參數(shù)如下: - 使用電壓:DC5V;
- 靜態(tài)電流:小于2mA;
- 電平輸出:高5V,低0V;
- 感應(yīng)角度:不大于15°;
- 探測距離:2cm到450cm;
- 精度:0.2cm。
在使用HC-SR04超聲波傳感器時,應(yīng)先將其插好在電路板上再通電,避免產(chǎn)生高電平的誤動作,如果產(chǎn)生了,重新通電方可解決。針腳定義,如表2.3.1所示。 表2.3.1 HC-SR04超聲波傳感器針腳定義
2.超聲波傳感器測距 在這里,我們只學(xué)習(xí)超聲波測距的最簡單的一種,也是本課需要用到的,即將超聲波傳感器固定住,此時可以測量其與障礙物之間的距離。HC-SR04的工作原理:(1)采用IO觸發(fā)測距,給至少10us的高電平信號;(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;(3)有信號返回,通過IO輸出一高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間,測試距離=(高電平時間×聲速)/2。 在ArduBlock里面可以直接讀出超聲波傳感器測到的距離值,如下圖2.3.2所示,Trig連接數(shù)字口8,Echo連接數(shù)字口9。 圖2.3.2 超聲波測距并顯示 【動手操作】 活動主題:制作我的自動變速風(fēng)扇 同學(xué)們在了解了相關(guān)的知識后,可以自己制作本課的自動變速風(fēng)扇了,我們用到的器材主要是Romeo板子、HC-SR04超聲波傳感器、風(fēng)扇(帶直流電機)。 1.硬件搭建 在連接物理電路時,需要注意:Trig和Echo分別接到數(shù)字口(程序中,Trig和Echo分別連接數(shù)字口8和9,電機接的是M1接線柱)。 2.參考程序 由于風(fēng)扇、電機或者載重的不同,使風(fēng)扇轉(zhuǎn)動的最小電平也會不同的,請同學(xué)們自己檢測一下使風(fēng)扇轉(zhuǎn)動的PWM值最小是多少,并記錄下來。 圖2.3.3 自動變速風(fēng)扇 【探究思考】 請同學(xué)們思考并討論一下,在我們?nèi)粘I钪校睦镉杏玫匠暡y距?哪里可以運用超聲波測距呢?超聲波測距都有哪些優(yōu)缺點? 【視野拓展】 1.超聲波測距 由于超聲波指向性強,能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因而超聲波經(jīng)常用于距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現(xiàn)。利用超聲波檢測往往比較迅速、方便、計算簡單、易于做到實時控制,并且在測量精度方面能達到工業(yè)實用的要求,因此在移動機器人研制上也得到了廣泛的應(yīng)用。 超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為340m/s,根據(jù)計時器記錄的時間t,就可以計算出發(fā)射點距障礙物的距離(s),即:s=340×t/2 。這就是所謂的時間差測距法。 超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發(fā)射后遇到障礙物反射回來的時間,根據(jù)發(fā)射和接收的時間差計算出發(fā)射點到障礙物的實際距離。由此可見,超聲波測距原理與雷達原理是一樣的。 測距的公式表示為:L=C×T 式中L為測量的距離長度;C為超聲波在空氣中的傳播速度;T為測量距離傳播的時間差(T為發(fā)射到接收時間數(shù)值的一半)。 超聲波測距主要應(yīng)用于倒車提醒、建筑工地、工業(yè)現(xiàn)場等的距離測量,雖然目前的測距量程上能達到百米,但測量的精度往往只能達到厘米數(shù)量級。 2.紅外線測距 還有一種測距是利用紅外線測距的。紅外測距原理和雷達測距原理相似,是發(fā)射紅外線然后測量回波時間,光速乘以時間再除以2就得到距離。 由于光速很快,而紅外測距儀一般測量距離比較短,用常規(guī)的脈沖法(發(fā)射一個脈沖然后計算收到反射脈沖的時間)常常因為時間過短而無法測量,所以一般是將紅外線發(fā)射功率調(diào)制上一個較低的頻率,然后測量回波與發(fā)射波的相位差,根據(jù)相位差可以計算出回波時間。利用紅外線發(fā)射裝置發(fā)出紅外線,經(jīng)過障礙物反射以后,被一紅外線接收探頭收到,將接收到的紅外線信號轉(zhuǎn)化為電信號進行計算,公式就是從發(fā)射到接受到的時間的一半乘以光速! 紅外測距還是有很多應(yīng)用的,比如:汽車超速抓拍、貨車限高檢測、飛機高度檢測、列車到站檢測、接觸網(wǎng)檢測、船舶對接檢測、礦井電梯位置檢測、倉儲料位監(jiān)測、橋梁高度檢測、吊機高度位置檢測、礦井輪廓掃描等等。 【挑戰(zhàn)自我】 請同學(xué)們思考一下,假如超聲波傳感器可以前后移動,那么測距的時候需要做哪些考慮呢?寫下你的想法,與其他同學(xué)討論一下。
第4課 遙控風(fēng)扇紅外遙控器是我們常用的一種遙控設(shè)備,可以用它控制電視、空調(diào)等家用電器。前面我們用過的風(fēng)扇也是生活中常見的家用電器,可以用遙控控制嗎?這節(jié)課通過對紅外遙控的學(xué)習(xí),我們就可以控制風(fēng)扇了,開始智能家居的一點嘗試吧。 【任務(wù)導(dǎo)航】 1.了解紅外遙控套件; 2.制作遙控風(fēng)扇。 【材料閱讀】 1.紅外遙控套件簡介 紅外遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外遙控裝置具有體積小、功耗低、功能強、成本低等特點,繼彩電、錄像機之后,在錄音機、音響設(shè)備、空凋以及玩具等其它小型電器裝置上也紛紛采用紅外遙控。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。 紅外遙控主要包括紅外遙控器和紅外接收頭,如圖2.4.1所示。紅外遙控器有21個按鍵,紅外接收頭針腳的定義是:D連接數(shù)字口,VCC接5V,GND接GND。 圖2.4.1 紅外遙控套件 紅外遙控器都有對應(yīng)的鍵值,在使用時,首先需對遙控器進行解碼,本書中用到的紅外遙控器的鍵值(十六進制的數(shù)值)如表2.4.1所示。 表2.4.1 紅外遙控器鍵值附表 【動手操作】 活動主題:制作我的遙控風(fēng)扇 同學(xué)們在了解了相關(guān)的知識后,可以自己制作本課的遙控風(fēng)扇了,我們用到的器材主要是Romeo板子、紅外遙控套件、風(fēng)扇(帶直流電機)。功能:通過遙控控制風(fēng)扇開啟,關(guān)閉。 1.硬件搭建 在連接物理電路時,需要注意:紅外接收頭連接到數(shù)字口,取出紅外遙控器電池外面的塑料絕緣片(程序中,紅外接收頭連接數(shù)字口11,電機接的是M1接線柱)。 (1)紅外遙控器的解碼程序 圖2.4.2 紅外遙控器的解碼 (2)遙控風(fēng)扇的參考程序 圖2.4.3 遙控風(fēng)扇 【探究思考】 請同學(xué)們思考一下,在我們小時候的玩具中,有沒有用到遙控的呢?比如遙控飛機、遙控汽車等,它們是紅外遙控嗎?如果不是,與紅外遙控有什么區(qū)別? 【視野拓展】 1.紅外遙控工作原理 紅外遙控器發(fā)出的信號是一連串的二進制脈沖碼,為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調(diào)制在特定的載波頻率上,然后再經(jīng)紅外發(fā)射二極管發(fā)射出去,而紅外線接收裝置則要濾除其他雜波,只接收該特定頻率的信號并將其還原成二進制脈沖碼,也就是解調(diào)。 內(nèi)置接收管將紅外發(fā)射管發(fā)射出來的光信號轉(zhuǎn)換為微弱的電信號,此信號經(jīng)由IC內(nèi)部放大器進行放大,然后通過自動增益控制、帶通濾波、解調(diào)變、 波形整形后還原為遙控器發(fā)射出的原始編碼,經(jīng)由接收頭的信號輸出腳輸入到電器上的編碼識別電路。 要想對某一遙控器進行解碼必須要了解該遙控器的編碼方式,這就叫知己知彼,百戰(zhàn)不殆 。本節(jié)課使用的遙控器的編碼方式為:NEC協(xié)議。下面就介紹一下NEC協(xié)議: (1)8位地址位,8位命令位; (2)為了可靠性,地址位和命令為被傳輸兩次; (3)脈沖位置調(diào)制; (4)載波頻率38khz; (5)每一位的時間為1.125ms或2.25ms。 2.智能家居 智能家居是以住宅為平臺,利用綜合布線技術(shù)、網(wǎng)絡(luò)通信技術(shù)、 智能家居-系統(tǒng)設(shè)計方案安全防范技術(shù)、自動控制技術(shù)、音視頻技術(shù)將家居生活有關(guān)的設(shè)施集成,構(gòu)建高效的住宅設(shè)施與家庭日程事務(wù)的管理系統(tǒng),提升家居安全性、便利性、舒適性、藝術(shù)性,并實現(xiàn)環(huán)保節(jié)能的居住環(huán)境。 智能家居是在互聯(lián)網(wǎng)影響之下的物聯(lián)化體現(xiàn)。智能家居通過物聯(lián)網(wǎng)技術(shù)將家中的各種設(shè)備(如音視頻設(shè)備、照明系統(tǒng)、窗簾控制、空調(diào)控制、安防系統(tǒng)、數(shù)字影院系統(tǒng)、網(wǎng)絡(luò)家電以及三表抄送等)連接到一起,提供家電控制、照明控制、窗簾控制、電話遠(yuǎn)程控制、室內(nèi)外遙控、防盜報警、環(huán)境監(jiān)測、暖通控制、紅外轉(zhuǎn)發(fā)以及可編程定時控制等多種功能和手段。與普通家居相比,智能家居不僅具有傳統(tǒng)的居住功能,兼?zhèn)浣ㄖ、網(wǎng)絡(luò)通信、信息家電、設(shè)備自動化,集系統(tǒng)、結(jié)構(gòu)、服務(wù)、管理為一體的高效、舒適、安全、便利、環(huán)保的居住環(huán)境,提供全方位的信息交互功能。幫助家庭與外部保持信息交流暢通,優(yōu)化人們的生活方式,幫助人們有效安排時間,增強家居生活的安全性,甚至為各種能源費用節(jié)約資金。 同學(xué)們有沒有想過通過紅外遙控控制家中的其他家電呢?趕快體驗一下智能家居吧! 【挑戰(zhàn)自我】 前面我們做過一個換擋風(fēng)扇,這次我們使用紅外遙控控制風(fēng)扇,做一個可換擋的風(fēng)扇。
第5課 搖頭風(fēng)扇前面我們制作的風(fēng)扇都是朝一個方向吹的,而家里的有些風(fēng)扇是可以搖頭的,能不能讓我們的風(fēng)扇也搖頭呢?當(dāng)然可以,這就需要舵機的加入了,這節(jié)課我們將了解舵機的有關(guān)知識,并制作出搖頭風(fēng)扇。 【任務(wù)導(dǎo)航】 1.了解舵機相關(guān)知識; 2.制作搖頭風(fēng)扇。 【材料閱讀】 舵機簡介 舵機,又稱伺服電機,航海模愛好者們經(jīng)常用這種電機來控制模型的方向舵,所以它就俗稱為“舵機”。其工作過程是把所接收到的電信號轉(zhuǎn)換成電動機軸上的角位移或角速度輸出。目前廣泛應(yīng)用于機器人控制領(lǐng)域中。本書用到的舵機是TowerPro出品的SG90舵機,如圖2.5.1所示。該舵機采用高強度ABS透明外殼配以內(nèi)部高精度尼龍齒輪組,加上精準(zhǔn)的控制電路、高檔輕量化空心杯電機使該微型舵機的重量只有9克,而輸出力矩達到了驚人的1.8kg*cm。標(biāo)準(zhǔn)的舵機有三條控制線,分別是電源、地和信號線。舵機的針腳定義為:棕色線——GND,紅色線——5V,橙色線——信號線。 圖2.5.1 SG90舵機 舵機的控制一般需要不斷地發(fā)給它一個高電平時間在1-2ms之間、低電平時間在5-20ms之間的脈沖信號。注意:Arduino板上支持舵機的只有數(shù)字口9和10,因此舵機橙色線只能連接數(shù)字口9或10,另外我們使用的SG90舵機轉(zhuǎn)動角度在0-180°之間。 【動手操作】 活動主題:制作我的搖頭風(fēng)扇 同學(xué)們在了解了相關(guān)的知識后,可以自己制作本課的搖頭風(fēng)扇了,我們用到的器材主要是Romeo板子、舵機、風(fēng)扇(帶直流電機)。 1.硬件搭建(搖頭風(fēng)扇的連接) 在連接物理電路時,需要注意:舵機接到數(shù)字針腳(程序中,舵機連接的是數(shù)字針腳9,電機接的是M1接線柱)。 2.控制舵機從0°轉(zhuǎn)到180°的參考程序 圖2.5.3 控制舵機 3.搖頭風(fēng)扇的參考程序 搖頭風(fēng)扇是舵機從0°轉(zhuǎn)到180°,然后再轉(zhuǎn)回來,并且一直保持風(fēng)扇的電機開啟即可,如下所示。 圖2.5.4 搖頭風(fēng)扇 【探究思考】 請同學(xué)們觀察一下,風(fēng)扇都是自動搖頭,我們可以控制它嗎?討論一下,如何實現(xiàn)?
【視野拓展】 1.舵機的工作原理 舵機是遙控模型控制動作的動力來源,不同類型的遙控模型所需的舵機種類也隨之不同。如何審慎地選擇經(jīng)濟且合乎需求的舵機,也是一門不可輕忽的學(xué)問。 工作原理:控制信號由接收機的通道進入信號調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準(zhǔn)信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機驅(qū)動芯片決定電機的正反轉(zhuǎn)。當(dāng)電機轉(zhuǎn)速一定時,通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為0,電機停止轉(zhuǎn)動。當(dāng)然我們可以不用去了解它的具體工作原理,知道它的控制原理就夠了。就像我們使用晶體管一樣,知道可以拿它來做開關(guān)管或放大管就行了,至于管內(nèi)的電子具體怎么流動是可以完全不用去考慮的。 2.舵機的控制方式 舵機的伺服系統(tǒng)由可變寬度的脈沖來進行控制,控制線是用來傳送脈沖的。脈沖的參數(shù)有最小值,最大值,和頻率。一般而言,舵機的基準(zhǔn)信號都是周期為20ms,寬度為1.5ms。這個基準(zhǔn)信號定義的位置為中間位置。舵機有最大轉(zhuǎn)動角度,中間位置的定義就是從這個位置到最大角度與最小角度的量完全一樣。最重要的一點是,不同舵機的最大轉(zhuǎn)動角度可能不相同,但是其中間位置的脈沖寬度是一定的,那就是1.5ms。如圖2.5.5所示。 圖2.5.5 脈沖寬度 角度是由來自控制線的持續(xù)的脈沖所產(chǎn)生。這種控制方法叫做脈沖調(diào)制。脈沖的長短決定舵機轉(zhuǎn)動多大角度。例如:1.5毫秒脈沖會到轉(zhuǎn)動到中間位置(對于180°舵機來說,就是90°位置)。當(dāng)控制系統(tǒng)發(fā)出指令,讓舵機移動到某一位置,并讓他保持這個角度,這時外力的影響不會讓它的角度產(chǎn)生變化,但是這個是由上限的,上限就是他的最大扭力。除非控制系統(tǒng)不停的發(fā)出脈沖穩(wěn)定舵機的角度,舵機的角度不會一直不變。當(dāng)舵機接收到一個小于1.5ms的脈沖,輸出軸會以中間位置為標(biāo)準(zhǔn),逆時針旋轉(zhuǎn)一定角度。接收到的脈沖大于1.5ms情況相反。不同品牌,甚至同一品牌的不同舵機,都會有不同的最大值和最小值。一般而言,最小脈沖為1ms,最大脈沖為2ms。如圖2.5.6所示。 圖2.5.6 脈沖寬度與轉(zhuǎn)動角度 【挑戰(zhàn)自我】 搖頭風(fēng)扇很不錯吧?但是我們并不希望它一直在搖頭,有什么辦法可以控制它嗎,以便于我們讓它搖頭才搖頭,不讓它搖頭就停止搖頭,試一試吧。
第6課 自動跟蹤風(fēng)扇通過上一節(jié)課,我們可以讓風(fēng)扇搖頭了,那么它可以自動搖頭嗎?如何實現(xiàn)呢?這節(jié)課我們將學(xué)習(xí)數(shù)字防跌落傳感器,并通過兩個數(shù)字防跌落傳感器的配合使用制作自動跟蹤風(fēng)扇。 【任務(wù)導(dǎo)航】 1.了解數(shù)字防跌落傳感器; 2.制作自動跟蹤風(fēng)扇。 【材料閱讀】 1.數(shù)字防跌落傳感器 數(shù)字防跌落傳感器在第一章做過介紹,但因為是選修,所以這里再重點講解一下。采用夏普公司的距離傳感器,有效測距10cm,開關(guān)量輸出,可當(dāng)作近距離避障傳感器使用。如圖2.6.1所示。 圖2.6.1 數(shù)字防跌落傳感器 數(shù)字防跌落傳感器輸出的信號為數(shù)字信號,針腳定義為:紅線——5V,綠線——信號,黑線——GND。接線圖如圖2.6.2所示。 圖2.6.2 數(shù)字防跌落傳感器接線圖 2.自動跟蹤風(fēng)扇原理 自動跟蹤風(fēng)扇,也可稱為自動搖頭風(fēng)扇,是可以自動感應(yīng)的風(fēng)扇,比如它可以隨手的晃動跟著搖頭。它是通過左右兩個數(shù)字防跌落傳感器檢測障礙物的運動方向的,若左側(cè)傳感器檢測到障礙物而右側(cè)傳感器沒有檢測到,則舵機向左轉(zhuǎn)動;若右側(cè)傳感器檢測到障礙物而左側(cè)傳感器沒有檢測到,則舵機向右轉(zhuǎn)動;若兩側(cè)傳感器同時檢測到障礙物,則保持原來方向。 另外,數(shù)字防跌落傳感器的探頭前方無障礙時輸出高電平,有障礙時則相反。障礙在有效距離(10cm)內(nèi)則輸出低電平,否則是高電平。因此,可以通過比較左右傳感器的電平高低值判斷舵機的轉(zhuǎn)動方向,即哪側(cè)電平低向哪側(cè)轉(zhuǎn)動。 【動手操作】 活動主題:制作我的自動跟蹤風(fēng)扇 同學(xué)們在了解了相關(guān)的知識后,可以自己制作本課的自動跟蹤風(fēng)扇了,我們用到的器材主要是Romeo板子、數(shù)字防跌落傳感器、舵機、風(fēng)扇(帶直流電機)。功能:實現(xiàn)自動跟蹤轉(zhuǎn)動。 1.自動跟蹤風(fēng)扇的連接 在連接物理電路時,需要注意這樣幾點:數(shù)字防跌落傳感器和舵機均連接數(shù)字口(程序中,數(shù)字防跌落傳感器分別連接數(shù)字口11和12,舵機連接數(shù)字口9,電機接的是M1接線柱)。 2.參考程序 圖2.6.3 自動跟蹤風(fēng)扇 【探究思考】 請同學(xué)們思考一下,前面我們學(xué)過的超聲波測距可以用來做避障嗎?如果可以,你來試一試吧。 【視野拓展】 1.紅外傳感器 紅外傳感系統(tǒng)是用紅外線為介質(zhì)的測量系統(tǒng),紅外傳感技術(shù)已經(jīng)在現(xiàn)代科技、國防和工農(nóng)業(yè)等領(lǐng)域獲得了廣泛的應(yīng)用。紅外技術(shù)已經(jīng)眾所周知,這項技術(shù)在現(xiàn)代科技、國防科技和工農(nóng)業(yè)科技等領(lǐng)域得到了廣泛的應(yīng)用。紅外傳感系統(tǒng)是用紅外線為介質(zhì)的測量系統(tǒng),按照功能能夠分成五類:(1)輻射計,用于輻射和光譜測量;(2)搜索和跟蹤系統(tǒng),用于搜索和跟蹤紅外目標(biāo),確定其空間位置并對它的運動進行跟蹤;(3)熱成像系統(tǒng),可產(chǎn)生整個目標(biāo)紅外輻射的分布圖像;(4)紅外測距和通信系統(tǒng);(5)混合系統(tǒng),是指以上各類系統(tǒng)中的兩個或者多個的組合。 利用紅外線的物理性質(zhì)來進行測量的傳感器。紅外線又稱紅外光,它具有反射、折射、散射、干涉、吸收等性質(zhì)。任何物質(zhì),只要它本身具有一定的溫度(高于絕對零度),都能輻射紅外線。紅外線傳感器測量時不與被測物體直接接觸,因而不存在摩擦,并且有靈敏度高,響應(yīng)速度快等優(yōu)點。 紅外線傳感器包括光學(xué)系統(tǒng)、檢測元件和轉(zhuǎn)換電路。光學(xué)系統(tǒng)按結(jié)構(gòu)不同可分為透射式和反射式兩類。檢測元件按工作原理可分為熱敏檢測元件和光電檢測元件。熱敏元件應(yīng)用最多的是熱敏電阻。熱敏電阻受到紅外線輻射時溫度升高,電阻發(fā)生變化,通過轉(zhuǎn)換電路變成電信號輸出。光電檢測元件常用的是光敏元件,通常由硫化鉛、硒化鉛、砷化銦、砷化銻、碲鎘汞三元合金、鍺及硅摻雜等材料制成。 紅外線傳感器常用于無接觸溫度測量,氣體成分分析和無損探傷,在醫(yī)學(xué)、軍事、空間技術(shù)和環(huán)境工程等領(lǐng)域得到廣泛應(yīng)用。例如采用紅外線傳感器遠(yuǎn)距離測量人體表面溫度的熱像圖,可以發(fā)現(xiàn)溫度異常的部位,及時對疾病進行診斷治療(見熱像儀);利用人造衛(wèi)星上的紅外線傳感器對地球云層進行監(jiān)視,可實現(xiàn)大范圍的天氣預(yù)報;采用紅外線傳感器可檢測飛機上正在運行的發(fā)動機的過熱情況等。 【挑戰(zhàn)自我】 我們已經(jīng)學(xué)過風(fēng)扇的多種控制,想一想還可以做出什么創(chuàng)意來?查找并統(tǒng)計一下還有哪些傳感器。
第7課 風(fēng)扇綜合創(chuàng)意
通過前面6節(jié)課的學(xué)習(xí),我們已經(jīng)了解了許多關(guān)于風(fēng)扇的做法,在學(xué)習(xí)和制作過程中,同學(xué)們有沒有產(chǎn)生一些創(chuàng)意的想法嗎?如果有的話,那么這節(jié)課就讓我們來實現(xiàn)吧。 【任務(wù)導(dǎo)航】 1.制作定時風(fēng)扇、溫控風(fēng)扇或傾倒自動停止風(fēng)扇中的一種; 2.自己設(shè)計并嘗試實現(xiàn)一種有創(chuàng)意的風(fēng)扇; 3.評價自己和他人的創(chuàng)意風(fēng)扇。 【材料閱讀】 1.溫度傳感器 本書用到的溫度傳感器是DFRobot的LM35線性模擬溫度傳感器,如圖2.7.1所示;贚M35半導(dǎo)體的溫度傳感器,可以用來對環(huán)境溫度進行定性的檢測。溫度測量常用的傳感器包括熱電偶,鉑電阻,熱敏電阻和半導(dǎo)體測溫芯片,其中熱電偶常用于高溫測量,鉑電阻用于中溫測量(到攝氏800度左右),而熱敏電阻和半導(dǎo)體溫度傳感器適合于100-200度以下的溫度測量,其中半導(dǎo)體溫度傳感器的應(yīng)用簡單,有較好的線性度和較高的靈敏度。LM35半導(dǎo)體溫度傳感器是美國國家半導(dǎo)體公司生產(chǎn)的線性溫度傳感器。其測溫范圍是-40℃到150℃,靈敏度為10mV/℃,輸出電壓與溫度成正比。LM35線性溫度傳感器與Arduino專用傳感器擴展板結(jié)合使用,可以非常容易地實現(xiàn)與環(huán)境溫度感知相關(guān)的互動效果。 圖2.7.1 LM35線性模擬溫度傳感器 LM35線性模擬溫度傳感器的針腳定義為:1——模擬輸出信號,2——GND,3——VCC。接線圖如圖2.7.2所示。 圖2.7.2 模擬溫度傳感器接線圖 LM35線性模擬溫度傳感器的測試代碼如下: 圖2.7.3 溫度傳感器 2.傾角傳感器 本書用到的傾角傳感器是DFRobot的數(shù)字鋼球傾角傳感器,如圖2.7.4所示;阡撉蜷_關(guān)的數(shù)字模塊,利用鋼球的特性,通過重力作用使鋼球向低處滾動,從而使開關(guān)閉合或斷開,因此也可以作為簡單的傾角傳感器使用。鋼球開關(guān)數(shù)字輸入模塊,與Arduino專用傳感器擴展板結(jié)合使用,能夠?qū)崿F(xiàn)非常有趣的互動作品,比使用水銀開關(guān)更加安全。 圖2.7.4 數(shù)字鋼球傾角傳感器 數(shù)字鋼球傾角傳感器的針腳定義為:1——數(shù)字信號輸出;2——VCC;3——GND。接線圖如圖2.7.5所示。 圖2.7.5 數(shù)字鋼球傾角傳感器接線圖 【動手操作】 1.定時風(fēng)扇 定時風(fēng)扇基本思路提示:通過按鈕對風(fēng)扇進行定時,比如一個按鈕控制,按一次定時2分鐘后,風(fēng)扇自動停止;兩個按鈕控制,按第一個按鈕2分鐘后,風(fēng)扇自動停止,按第二個按鈕5分鐘后,風(fēng)扇自動停止。 2.溫控風(fēng)扇 溫控風(fēng)扇基本思路提示:通過溫度傳感器感應(yīng)環(huán)境溫度,當(dāng)溫度達到某個值時,風(fēng)扇自動開啟,此后,溫度逐漸增高時,風(fēng)扇自動加快轉(zhuǎn)速。 3.傾倒自動停止風(fēng)扇 傾倒自動停止風(fēng)扇基本思路提示:利用傾角傳感器,判斷風(fēng)扇是否傾倒,如果是的話,風(fēng)扇自動停止轉(zhuǎn)動,否則繼續(xù)轉(zhuǎn)動。 4.其它創(chuàng)意風(fēng)扇 自己設(shè)計并嘗試實現(xiàn)一種有創(chuàng)意的風(fēng)扇。 【探究思考】 請同學(xué)們相互介紹一下自己的創(chuàng)意風(fēng)扇,大家相互評價一下。 【視野拓展】 1.創(chuàng)意風(fēng)扇——無扇葉風(fēng)扇 簡介:外形像一只巨大的指環(huán)。它能產(chǎn)生強有力的涼爽空氣,而且安靜無聲,也比傳統(tǒng)電扇安全。另外,它清洗起來也比傳統(tǒng)電風(fēng)扇方便得多,從此不用為清理扇葉上積滿的灰塵發(fā)愁了。和傳統(tǒng)電風(fēng)扇一樣,能90度角擺動。不同的是,它還能通過人為控制發(fā)生燈光變化。 特色:沒有扇葉,少了運轉(zhuǎn)噪音,而且出風(fēng)量更穩(wěn)定;用風(fēng)扇風(fēng)乾頭髮時,不怕頭發(fā)給捲了進去,或是小朋友意外受傷;清理電風(fēng)扇時只要一條抹布就能輕松搞定;風(fēng)扇氣流集中強勁,吹起來更舒服;具備傳統(tǒng)電風(fēng)扇靈活調(diào)整特質(zhì),如可旋轉(zhuǎn)、上下角度調(diào)整等。 原理:底座中帶有的高功率馬達將空氣吸入風(fēng)扇基座內(nèi)部,經(jīng)由氣旋加速器加速后,空氣流通速度將大大增大,經(jīng)由無葉風(fēng)扇扇頭環(huán)形內(nèi)唇環(huán)繞,其環(huán)繞力帶動扇頭附近的空氣隨之進入扇頭,并以高速向外吹出,最終形成一股不間斷的冷空氣流。如此一來,徐徐涼風(fēng)飄然而至。這種新造型風(fēng)扇不僅外形靚麗,清理起來也十分方便,安全性也得到了提高。風(fēng)扇這種東西也從此變得更加安全。 2.創(chuàng)意風(fēng)扇——驅(qū)蚊電風(fēng)扇 構(gòu)造:電動機、葉片、外殼體,電風(fēng)扇外殼體上安裝的電熱驅(qū)蚊器。 原理:原電風(fēng)扇殼體上適當(dāng)位置安裝有一電熱驅(qū)蚊器,上面放有驅(qū)蚊藥片,接通電源后電熱驅(qū)蚊器發(fā)熱,使驅(qū)蚊藥片被加熱散出藥物從而達到驅(qū)蚊之效。電風(fēng)扇的馬達與驅(qū)蚊器分別受控于兩個獨立的電源開關(guān),使吹風(fēng)與驅(qū)蚊兩種功能可以同時、也可以分別地工作,使用起來十分有效、方便。電風(fēng)扇在使用過程中,驅(qū)蚊噴霧器噴出的驅(qū)蚊液可以通過扇葉的轉(zhuǎn)動而充分且大面積散發(fā),增強驅(qū)蚊效果,從而達到降溫、驅(qū)蚊的雙重功效。 【挑戰(zhàn)自我】 想一想風(fēng)扇還有哪些創(chuàng)意呢?或者你設(shè)計的創(chuàng)意風(fēng)扇還有哪些改進呢?
第三章 智能小車
第1課 走直線小車通過前面兩章的學(xué)習(xí),我們可以用Arduino控制LED燈,制作風(fēng)扇,但是我們可以使用各種傳感器制作出智能小車嗎?它可以走直線,走8字,會巡線避障......當(dāng)然答案是肯定的,只要大膽想象,扎實前進,我們就可以做出有意思的小車。這節(jié)課主要是通過簡單的接線,編寫并調(diào)試程序,從而認(rèn)識小車,了解小車的基礎(chǔ)知識,完成走直線小車的任務(wù)。 【任務(wù)導(dǎo)航】 【材料閱讀】 還記得我們在第二章學(xué)習(xí)的《聲控風(fēng)扇》嗎?在材料閱讀里面,我們了解了Romeo控制直流電機的相關(guān)知識,知道了數(shù)字針腳4、5、6、7與M1、M2對應(yīng)的關(guān)系。有了上述知識以后,仔細(xì)觀察發(fā)現(xiàn),我們的小車左右分別各有一個電機(如下圖),每個電機引出紅黑兩條線。在接線的時候,可以將兩個電機引出的紅線與黑線分別接入M1、M2的正負(fù)極,注意細(xì)心找到M1、M2旁邊的“+”“—”符號。在這里,紅黑線與M1、M2正負(fù)極的對應(yīng)關(guān)系,會影響到小車運動的方向。
圖3.1.1 小車直流電機
小車直走分為兩種情況:前進、后退。同樣,我們也可以通過兩種方式來實現(xiàn)小車前進、后退。 - 編程。在接線正常的情況下(紅線接正,黑線接負(fù)),可以改變4、7針腳的高低電平來控制小車前進、后退。這個道理與第二章控制風(fēng)扇正轉(zhuǎn)、反轉(zhuǎn)一樣,就不再贅述。
- 接線。在程序不變的基礎(chǔ)下,我們改變小車電機的連接線,可以使小車的運動方向發(fā)生變化。具體情況如下:將電機引出的紅線分別與M1、M2負(fù)極相連,黑線與正極相連,此時,原本前進的小車會后退,反之亦然;如果將一個電機的紅線接M1正極,黑線接M1負(fù)極,另一根紅線接M2負(fù)極,黑線接M2正極,此時直走的小車會原地打轉(zhuǎn)。感興趣的同學(xué)在動手操作環(huán)節(jié)可以進行嘗試。
【動手操作】 活動主題:走直線的機器人小車 1.硬件搭建 本次課中的小車已經(jīng)提前搭好,感興趣的同學(xué)可以參照搭建好的小車,自己組裝一個。將小車的電機接線接好(本課默認(rèn)將紅線接正極,黑線接負(fù)極),在ArduBlock中進行程序調(diào)試,讓小車前進、后退。 2.參考程序 參考程序提供兩種編程方法,通過接線改變小車前進方向的實驗可以自己嘗試。參考程序1如下: 圖3.1.3 針腳控制小車前進、后退
部分代碼解釋: 觀察小車,可以發(fā)現(xiàn),小車不斷地以100的轉(zhuǎn)速向前前進1秒,再后退一秒。在這里,我們是通過編程來控制小車運動方向,給數(shù)字針腳4、7以高電平,此時小車前進,反之,小車后退。 除了改變程序,還可以改動小車接線來解決這個問題。當(dāng)我們將兩個電機引出的紅線接在接線柱的負(fù)極,黑線接到接線柱的正極,此時,如果給數(shù)字針腳4、7設(shè)置高電平,小車將后退,反之,小車前進。 參考程序2如下:
圖3.1.3 電機控制小車前進、后退 部分代碼解釋: 參考程序中,M1、M2設(shè)置為255,此時小車前進;M1、M2設(shè)置為-255,此時小車后退。 在測試時,直接將USB與Arduino主板連接可以驅(qū)動小車,但是轉(zhuǎn)速較慢,而且受數(shù)據(jù)線長短的限制,小車運動空間比較狹小。這種情況下,我們可以給小車接上外接電源,比如:鋰電池,使得小車脫離數(shù)據(jù)線,以便我們觀察。將鋰電池接在Romeo主控器的外接電源接口上。 圖3.1.4 小車連接外接電源 【探究思考】 小車前進、后退的實驗中,小車走的是一條直線嗎?想想為什么。 【視野拓展】 1.小車“走不直”原因分析 在目前的智能小車中,差分驅(qū)動仍然是主流驅(qū)動方式。差分驅(qū)動是指左、右兩個輪子分別用左、右兩個電機驅(qū)動,通過分別改變兩個電機的轉(zhuǎn)速來控制小車前進或者后退。
在這里,左右兩個電機的特性肯定不會完全相同,這就將直接導(dǎo)致即使設(shè)置的轉(zhuǎn)速一樣,兩個輪子的實際轉(zhuǎn)速也是不相同的,所以本來應(yīng)該走直線的小車行駛軌跡會發(fā)生偏移,也就產(chǎn)生了所謂的“走不直”的現(xiàn)象。 影響小車“走不直”的原因還有很多,比如:道路上的障礙物、輪子瞬間打滑、小車左右重量不一致等等。而且這些因素是無法消除的,我們只有使用其他方法來解決這個問題。簡單的做法:根據(jù)小車走直線時,實際路線的偏差,對小車左右電機數(shù)值進行微調(diào)。 2.開環(huán)與閉環(huán) 在了解開環(huán)與閉環(huán)之前,在地面上畫出一條直線,分別嘗試閉著眼睛和睜開眼睛沿著直線走一遍。我們會發(fā)現(xiàn),睜開眼睛走直線比閉著眼睛走直線要簡單得多。事實上,沒有安裝任何傳感器的小車就相當(dāng)于眼睛閉著的我們,顯而易見,這樣走直線是很困難的。在這里,我們將小車只通過電機控制轉(zhuǎn)速,而不添加任何傳感器行走的方式稱之為“開環(huán)控制”。相對的,閉環(huán)控制是指小車通過各種傳感器感應(yīng)外界信息,根據(jù)這些信息調(diào)整自己的運動。我們在下面的課程學(xué)習(xí)中,會增加多種傳感器。 【挑戰(zhàn)自我】 1. 通過改變接線控制小車前進方向,使小車原地打轉(zhuǎn)。 2.嘗試使用其他辦法改進小車,使其“走直”。 3.使用電機模塊控制小車時,會在Arduino文本式編程環(huán)境中生成setRomeoMoto( )函數(shù),閱讀該函數(shù),嘗試?yán)斫怆姍C數(shù)值設(shè)置為正數(shù),小車前進,反之小車后退的原因。
第2課 跳8字舞的小車上一節(jié)課中,我們已經(jīng)學(xué)會了同時驅(qū)動兩個電機,使我們的小車自如地前進、后退。這節(jié)課我們將利用雙輪差速驅(qū)動,讓小車轉(zhuǎn)彎并且跳8字舞。 【任務(wù)導(dǎo)航】 - 雙輪差速驅(qū)動;
- 小車轉(zhuǎn)彎;
- 小車跳8字舞。
【材料閱讀】 1. 雙輪差速驅(qū)動 我們的小車是有2個電機和2個輪子的(這里不考慮主要起支撐作用的萬向輪)。對于采用這種驅(qū)動方式的機器人來說,它運動時會有以下幾種情況出現(xiàn): - 小車前進、后退(上節(jié)課已經(jīng)學(xué)習(xí)過)
左右輪子轉(zhuǎn)動速度不同時,小車就會轉(zhuǎn)彎。左右兩個輪子轉(zhuǎn)動的速度之差決定小車轉(zhuǎn)彎半徑大小。如果左右兩個輪子轉(zhuǎn)動的速率相同,方向正好相反,小車會原地轉(zhuǎn)動。具體分析見下圖:
圖3.2.1 雙輪差速小車的運動
2. 跳8字舞的蜜蜂 在生物界中,我們可以觀察到一個關(guān)于蜜蜂的奇特的現(xiàn)象。它們常常會在空中向左先飛半個小圈,又倒轉(zhuǎn)過來向右再飛半個小圈,就像是在跳一種“8字舞”。而這種現(xiàn)象是蘊含著一個有趣的科學(xué)道理的:蜜蜂這樣做,實際上是在用一種特殊的方式告知自己同伴蜜源的方位。它們的飛行軌跡與地面垂線的夾角,就正好表示了蜂房、太陽和蜜源三者之間的相對角度信息。比如:蜜蜂跳“8”字舞時,頭朝上直飛,太陽角是零度,意思是說:“朝太陽方向飛去,就是采蜜的方向”; 如果蜜蜂跳“8”字舞時,頭朝地直飛,太陽角是180°,意思是說:“背太陽方向飛去,就是采蜜的地方”; 如果蜜蜂跳“8”字舞時,飛行直線同地面垂直線的左面夾角是15°角,意思是說:“向左太陽角60°方向飛去,就是采蜜的地方”。當(dāng)其它蜜蜂看到這樣的信息時,就可以根據(jù)太陽的方向找到蜜源了。當(dāng)然,如果是陰天下雨,或者看不到太陽的時候,蜜蜂就會失去這種辨別方向的奇妙能力了。 3. 小車走“8”字必備條件怎樣才能讓我們的小車像蜜蜂一樣跳出完美的“8”字舞來呢?比如說,從以下示意圖的“a”點先順時針飛行上半圈,再次到達“a”時,再逆時針飛行下半圈。要實現(xiàn)這個效果,我們發(fā)現(xiàn)必須滿足以下條件: - 小車順時針轉(zhuǎn)動一定的時間以后,進行逆時針轉(zhuǎn)動;
- 小車順時針轉(zhuǎn)動的時間要滿足正好轉(zhuǎn)一圈,逆時針也是如此。
那么,我們只要根據(jù)左右電機的數(shù)值差,確定小車轉(zhuǎn)圈的半徑,從而測出小車轉(zhuǎn)一圈的時間,就可以走出一個8字出來。 圖3.1.2 8字圖
【動手操作】 活動主題一:會轉(zhuǎn)彎的機器人小車 根據(jù)雙輪差速驅(qū)動小車的原理,改變左右電機的轉(zhuǎn)動數(shù)值,使其向左轉(zhuǎn)、向右轉(zhuǎn)、原地轉(zhuǎn)圈。觀察一下現(xiàn)象并完成表格3.1.1。 表3.1.1 電機速度與小車狀態(tài)
參考代碼 圖3.1.3 小車左轉(zhuǎn)彎、右轉(zhuǎn)彎、原地轉(zhuǎn)圈 部分代碼解釋: (1)小車左電機M1設(shè)為100,右電機M2設(shè)為150,這個時候小車會向左轉(zhuǎn)。 (2)小車左電機M1設(shè)為150,右電機M2設(shè)為100,這個時候小車會向右轉(zhuǎn)。 (3)小車左電機M1設(shè)為150,右電機M2設(shè)為-150,這個時候小車會原地轉(zhuǎn)圈。 活動主題二:跳8字舞的機器人小車 同學(xué)們在了解了雙輪差速原理以及理解走“8”字的必備條件以后,就可以動手制作我們自己的跳8字舞小車了。 結(jié)合我們前文說的小車跳8字舞的兩個條件,把我們對左轉(zhuǎn)右轉(zhuǎn)的控制以及延時語句結(jié)合起來,我們就可以編寫出簡單明了的跳8字舞程序了。參考程序代碼如下,但是示例程序是不能執(zhí)行的,我們可以自己通過不斷的測試,改變其中的參數(shù)值,找出左右電機特定數(shù)值差時,小車轉(zhuǎn)一圈的時間。 參考程序
圖3.2.4 小車走8字
請同學(xué)們將最終程序的參數(shù)填入下面表3.2-1的表格中,并粗略估計圓圈的半徑。 半徑: (cm) 表3.2.2程序的參數(shù)
【探究思考】 通過上面的測試,我們已經(jīng)找到了一種小車走8字的參數(shù)值。請同學(xué)們繼續(xù)試驗,調(diào)整左右電機數(shù)值差、測出小車轉(zhuǎn)一圈的時間,實現(xiàn)幾個圓圈半徑大小與之前不一樣的8字舞,并將相關(guān)參數(shù)填在下面的表格中。 半徑: (cm) 表3.2.3 參數(shù)列表1
半徑: (cm) 表3.2.4 參數(shù)列表2
半徑: (cm) 表3.2.5 參數(shù)列表3
【視野拓展】 三輪全驅(qū)動全向?qū)C構(gòu) 三輪全驅(qū)動全導(dǎo)向機構(gòu)屬于同步驅(qū)動的裝置方式。如下圖所示,在該機構(gòu)中,三個輪子成120°放置,用齒輪或者鏈條將輪子同電機相連。每個輪子都可獨立地進行轉(zhuǎn)向控制和速度控制,因此在結(jié)構(gòu)和原理上類似于前輪驅(qū)動前輪導(dǎo)向機構(gòu)的前輪。當(dāng)三個輪子保持初始位置以相同的速度轉(zhuǎn)動時,及其本體做原地零半徑旋轉(zhuǎn)運動;當(dāng)三個輪子導(dǎo)向角度相同并以相同速度驅(qū)動時,本體按照該導(dǎo)向角方向做直線運動。施加適當(dāng)?shù)目刂,利用該機構(gòu)實現(xiàn)的機器人本體能夠按照任意指定的軌跡運動,具有很高的運動靈活性。但是該機構(gòu)的整體結(jié)構(gòu)比較復(fù)雜,完成每個動作都需要對6個伺服電機進行合理控制,且對于方向和驅(qū)動控制精度有較高要求,因此控制難度較大。 圖3.2.5 三輪全驅(qū)動全導(dǎo)向機構(gòu)
【挑戰(zhàn)自我】 根據(jù)第二章遙控風(fēng)扇的內(nèi)容,嘗試用遙控器控制小車前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、原地轉(zhuǎn)圈、跳8字舞。在下面填寫你遇到的問題以及擬解決辦法。
第3課 避障小車在自然界,有很多爬蟲是帶觸角的。當(dāng)前進的道路上出現(xiàn)障礙物時,它們會機智地伸出自己的觸角去確定障礙物的方向,然后及時地改變前進路線繞道前行。在這里,昆蟲的觸角是昆蟲感知外界信息的有力武器。同樣的,當(dāng)我們的小車在前進過程中,遇到障礙物了也可以通過類似的觸角去探索、發(fā)現(xiàn),最后避障前進。這節(jié)課,我們嘗試給小車裝上觸角,使我們的小車在前進的道路中智能避障。 【任務(wù)導(dǎo)航】 1. 了解觸碰傳感器; 2. 使用觸碰傳感器避障; 3. 使用防跌落傳感器避障。 【材料閱讀】 觸碰傳感器 觸碰傳感器(如下圖)是一個利用接觸片實現(xiàn)檢測觸碰功能的電子部件,主要用于檢測外界觸碰情況。例如:行進時,用于檢測障礙物;走迷宮時,用于檢測墻壁等等。觸碰傳感器是一種數(shù)字傳感器,在碰到障礙物時,值為0,否則值為1。當(dāng)觸角碰到障礙物時,觸碰傳感器上的LED會亮。我們可以根據(jù)觸碰傳感器值的變化,調(diào)整小車前進方向。 圖3.3.1 觸碰傳感器(左、右)
【動手操作】 活動主題一:使用觸碰傳感器制作避障小車 通過這個實驗,我們給小車裝上了觸角,這樣我們的小車就能跟昆蟲一樣自由避障了。實驗步驟: 1. 硬件搭建 將觸碰傳感器一左一前(具體安裝位置可以根據(jù)實際情況而定,也可以使用多個觸碰傳感器)安裝在小車上,注意將觸碰傳感器的兩個觸角接在外面。假設(shè)左邊的觸碰傳感器接在數(shù)字口2,小車前面的觸碰傳感器接在數(shù)字口3。我們也可以將鐵絲綁在觸碰傳感器的觸角上,以便擴大觸碰傳感器的感知范圍。 【提示】傳感器接線時,避免接在數(shù)字針腳4、5、6、7和0、1上。 2. 參考程序 我們可以根據(jù)觸碰傳感器值的變化,調(diào)整小車前進方向。比如:當(dāng)左前觸碰傳感器有一個檢測到障礙物時,小車后退或者后退以后再向左或向右轉(zhuǎn)彎。我們根據(jù)上面的思路進行編程,同學(xué)們可以根據(jù)實際情況調(diào)整程序里面小車電機數(shù)值、后退時間、左轉(zhuǎn)、右轉(zhuǎn)等。參考程序中,小車左傳感器或者前傳感器無論哪個檢測到障礙物,或者同時檢測到障礙物,小車都會后退一段距離,再右轉(zhuǎn)。如下圖。 圖3.3.2 小車簡單避障 部分代碼說明如下: 在這個程序中,只要有一個觸碰傳感器檢測到的值為“0”,也就是檢測到障礙物,說明我們讓小車后退1秒鐘,再右轉(zhuǎn)。如果小車兩個觸碰傳感器一直檢測不到物體,也就是數(shù)值為“1”時,讓小車前行。 程序下載完后,我們可以連接鋰電池,進行調(diào)試了。你的小車可以避障了嗎?
活動主題二:使用數(shù)字防跌落傳感器制作避障小車 我們可以根據(jù)數(shù)字防跌落傳感器值的變化,檢測前方是否有障礙物。注意,數(shù)字防跌落傳感器檢測到障礙物,值為0,這時,我們的小車應(yīng)該采取措施(停止、轉(zhuǎn)彎等等),因為防跌落傳感器可以檢測到前方10cm的距離,所以我們的小車檢測到障礙物以后,可以直接拐彎,不用后退。 在安裝的時候,要讓數(shù)字防跌落傳感器的感應(yīng)頭朝外?梢宰笥腋靼惭b一個。 當(dāng)數(shù)字防跌落傳感器檢測到障礙物,直接右轉(zhuǎn)。 圖3.4.3 防跌落小車 部分代碼說明如下: 在這個程序中,只要有一個防跌落傳感器檢測到的值為“0”,也就是檢測到物體,說明前方10cm以內(nèi)有障礙物出現(xiàn),我們讓小車右轉(zhuǎn)1秒鐘。如果小車兩個防跌落傳感器一直檢測不到物體,也就是數(shù)值為“1”時,讓小車前行。 【探究思考】 上面的避障程序可以使小車成功躲避障礙物,實現(xiàn)繞道前行。但是,如果我們利用教室里的桌椅自制一個簡單的迷宮,小車如何可以走出這個迷宮呢? 【視野拓展】 1.觸角作用 昆蟲除原尾目無觸角、高等雙翅目和膜翅目幼蟲的觸角退化外,其它種類都有1對觸角。觸角長在昆蟲兩只復(fù)眼的中上方,昆蟲活動的時候,這兩根觸角總是不停地擺動著,東察西探,象是尋找獵物的雷達。 觸角是主要的感覺器官,有嗅覺、觸覺和聽覺的功能。觸角能夠幫助昆蟲尋找食物和配偶,并探明身體前方有無障礙物。在有些昆蟲中,觸角還有其它用處,例如雄性芫菁在交配時用來握住雌蟲,魔蚊幼蟲用來捕捉食物,仰泳蝽的觸角在水中能平衡身體,水龜蟲則用來幫助呼吸。 常見的迷宮圖如下:
圖3.3.4 常見迷宮 觀察上面幾幅圖,不難發(fā)現(xiàn),讓機器人沿迷宮圍墻的某一側(cè)行走可以使機器人走遍沒有出口迷宮的每個地方,這是走迷宮的一般方法,我們稱沿左側(cè)行走的方法為左手規(guī)則,稱沿右側(cè)行走的方法為右手規(guī)則。 在本項目中我們將采用左手規(guī)則實施走迷宮的任務(wù)。假定你自己在一個漆黑的迷宮場地中按左手規(guī)則行走,你一定會用左手去尋找你左側(cè)的墻壁,以確定前進的方向,用右手伸向前方以防備在前進的過程中撞到前方拐彎處的墻上。因為場地漆黑你會根據(jù)兩手獲得的墻壁觸摸信息做出以下四種判斷: - 當(dāng)左手和伸向前方的右手都摸不到墻壁時,向左轉(zhuǎn)彎;
- 當(dāng)左手摸不到墻壁,伸向前方的右手摸到墻壁時,向右轉(zhuǎn)彎;
- 當(dāng)左手和伸向前方的右手都摸到墻壁時向右轉(zhuǎn)彎。
- 當(dāng)左手摸到墻壁,伸向前方的右手摸不到墻壁時,直走;
在讓機器人走迷宮時,我們可以用機器人的觸碰傳感器來代替我們的左右手,以獲取行進方向的信息,并對獲取的觸碰信息做出判斷,以此來決定行走的動作。走迷宮的機器人至少需要兩個觸碰傳感器,分別置于機器人左、中或者右、中。機器人可以使用灰度傳感器判斷是否回到終點。  圖3.3.5 左手規(guī)則示意 【挑戰(zhàn)自我】 你會用避障小車走迷宮嗎?將你的代碼或者是設(shè)計思路寫在下面的橫線上。
第4課 防跌落小車我們的機器人小車到處走動的時候,如果遇到有臺階的地方,它會自動停下來嗎?為了防止小車遇到臺階仍然往前走,我們就要給它安裝相應(yīng)的傳感器,使得它具有防跌落功能。 【任務(wù)導(dǎo)航】 1.使用數(shù)字防跌落傳感器進行防跌落; 2.使用超聲波傳感器進行防跌落。 【材料閱讀】 數(shù)字防跌落傳感器的安裝
圖3.4.1 數(shù)字防跌落傳感器安裝位置 我們已經(jīng)在《創(chuàng)意LED》以及《自動跟蹤風(fēng)扇》里面使用過了數(shù)字防跌落傳感器,使用方法不再贅述。在這里主要介紹一下制作防跌落小車時,該傳感器的安裝方式。數(shù)字防跌落傳感器一般安裝在輪子前方,機器人的外沿,安裝高度應(yīng)該小于地面10cm,具體可以根據(jù)實際情況調(diào)整,以此實現(xiàn)探測地面的不平度或者臺階而調(diào)整機器人前進方向?qū)崿F(xiàn)防跌落功能。將防跌落傳感器按照上述要求一左一右安裝在小車前方,如果條件允許,也可以根據(jù)上圖安裝四個。 【動手操作】 活動主題一:使用數(shù)字防跌落傳感器制作的防跌落小車 參考程序 我們可以根據(jù)數(shù)字防跌落傳感器值的變化,調(diào)整小車前進方向。注意,數(shù)字防跌落傳感器檢測不到障礙物,值為1,這時,我們的小車應(yīng)該后退。 參考程序中,當(dāng)數(shù)字防跌落傳感器檢測不到障礙物(臺階出現(xiàn)),會后退一段距離,再右轉(zhuǎn)。 圖3.4.2 防跌落小車 部分代碼說明如下: 在這個程序中,只要有一個防跌落傳感器檢測到的值為“1”,也就是檢測不到物體,說明此時小車在臺階的邊緣,我們讓小車后退1秒鐘,再右轉(zhuǎn)。如果小車兩個防跌落傳感器一直可以檢測到物體,也就是數(shù)值為“0”時,讓小車前行。
連接板子與電腦,加入上述代碼,調(diào)試小車,讓其在陽臺上直走,觀察你的小車是否有防跌落功能。
活動主題二:使用超聲波傳感器制作的防跌落小車 參考程序 我們也可以使用超聲波傳感器來實現(xiàn)小車的防跌落,超聲波傳感器的安裝跟數(shù)字防跌落傳感器一樣,朝向地面。 
圖3.4.3 防跌落小車 部分代碼說明如下: 該程序利用超聲波傳感器來檢測超聲波與地面的距離,如果超聲波傳感器測出來的距離大于10(具體數(shù)字自己可以設(shè)定,表示檢測不到障礙物也,也就是到達臺階邊緣),小車后退兩秒鐘,然后左轉(zhuǎn)或者右轉(zhuǎn);如果距離小于10,小車保持原來的狀態(tài)繼續(xù)前進。(超聲波檢測臺階的距離可以根據(jù)實際情況調(diào)整):
【探究思考】 思考數(shù)字防跌落傳感器的有效檢測距離為什么是10cm,如果有效距離過長,在遇到臺階的時候,還能避免摔下臺階的“悲慘命運”嗎?你覺得較之?dāng)?shù)字防跌落傳感器,使用超聲波傳感器進行防跌落,有什么優(yōu)勢?
【視野拓展】 爬樓梯機器人 通過上面的學(xué)習(xí),我們對小車檢測到樓梯,繞道行進已經(jīng)有了很深的了解。但是小車是怎么爬樓梯的呢?通過這個部分的視野拓展,我們將了解小車爬樓梯的基本原理,感興趣的同學(xué)可以作進一步研究。
(l)履帶式 履帶式爬樓梯裝置的原理類似于履帶裝甲運兵車或坦克,其原理簡單,技術(shù)也比較成熟。當(dāng)遇到樓梯等特殊地形時,用戶通過適當(dāng)操作將兩側(cè)的橡膠履帶緩緩放下至地面,然后把這四個車輪收起,依靠履帶無需旁人輔助便能自動完成爬樓等功能。
履帶式結(jié)構(gòu)傳動效率比較高,行走時重心波動很小,運動非常平穩(wěn),且使用地形范圍較廣,在一些不規(guī)則的樓梯上也能使用。但是這類裝置仍存在很多不足之處:重量大、運動不夠靈活、爬樓時在樓梯邊緣造成巨大的壓力,對樓梯有一定的損壞;且平地使用所受阻力較大,而且轉(zhuǎn)彎不方便,這些問題限制了其在日常生活中的推廣使用。
(2)輪組式 輪組式爬樓梯裝置按輪組中使用小輪的個數(shù)可分為兩輪組式、三輪組式以及四輪組式。單輪組式結(jié)構(gòu)穩(wěn)定性較差,在爬樓過程中需要有人協(xié)助才能保證重心的穩(wěn)定;而雙輪組式雖能實現(xiàn)自主爬樓,但由于其體積龐大且偏重,影響了它的使用范圍。
輪組式爬樓梯裝置的活動范圍廣,運動靈活,但是上下樓梯時平穩(wěn)性不高,重心起伏較大,會使乘坐者感到不適。此外,輪組式爬樓梯裝置體積較大,很難在普通住宅樓梯上使用。
(3)步行式 早期的爬樓梯裝置一般都采用步行式,其爬樓梯執(zhí)行機構(gòu)由鉸鏈桿件機構(gòu)組成。上樓時先將負(fù)重抬高,再水平向前移動,如此重復(fù)這兩個過程直至爬完一段樓梯。步行式爬樓梯裝置模仿人類爬樓的動作,外觀可視為足式機器人,采用多條機械腿交替升降、支撐座椅爬樓的原理。
步行式爬樓梯裝置爬樓時運動平穩(wěn),適合不同尺寸的樓梯;但它對控制的要求很高,操作比較復(fù)雜,在平地行走時運動幅度不大,動作緩慢。 【挑戰(zhàn)自我】 你會綜合選擇使用觸碰傳感器、數(shù)字防跌落傳感器、超聲波傳感器,制作既能避障又能防跌落的智能小車嗎?動手搭建起來吧。記得把你編程的思路寫在下面的橫線上。
第5課 巡線小車一 前面的學(xué)習(xí)中,我們通過觸碰傳感器成功地給小車裝上了觸角,這一節(jié)課中,我們將嘗試著給小車裝上眼睛,使我們的小車可以分辨出地面是深色還是淺色,從而可以沿著黑線的方向前進。 【任務(wù)導(dǎo)航】 【材料閱讀】 1. MINI巡線傳感器 MINI(如下圖)巡線傳感器以穩(wěn)定的TTL輸出信號幫助機器人進行白線或者黑線的跟蹤(可以檢測白背景中的黑線,也可以檢測黑背景的白線),黑色低電平,白色高電平。試想一下,能否讓小車通過這種傳感器沿著一條黑色的線前進呢?
圖3.5.1 MINI巡線傳感器
2. 小車走直線以及走“S”型分析 (1)地板是白色,線是黑色的。小車要看到這條直線,需要裝上能分辨黑白的“眼睛”——巡線傳感器。
圖3.5.2 小車走直線圖
將工具盒中的兩個MINI巡線傳感器一左一右安裝在小車底盤上,兩個傳感器之間的距離大于黑線寬度。將小車放置在黑線上(左右兩個MINI巡線傳感器跨在黑線上)。 小車會出現(xiàn)如下圖三種情況(途中紅色圓點代表巡線傳感器): a:一般情況下,小車左右巡線傳感器都檢測不到黑線(也就是左右巡線傳感器跨在線上),小車會直走 b:因為地面摩擦,重力等各種因素,小車會走偏。當(dāng)小車向右偏時,也就是左邊傳感器檢測到黑線,右邊傳感器檢測不到黑線,我們要讓小車左轉(zhuǎn)回來。 c:小車向左偏時,右巡線傳感器檢測到黑線,左巡線傳感器檢測不到,我們要讓小車右轉(zhuǎn)回來; 具體情況見下圖:
圖3.5.3 小車走直線分析圖
- 觀察“S”型圖,我們發(fā)現(xiàn)無論從哪頭開始走,小車都要左右拐彎。比之走圓圈,多了一種拐彎方式。如圖:
圖3.5.4 小車走”S”型圖 此時有三種情況: 當(dāng)小車左右傳感器都檢測不到黑線時,小車直走; 當(dāng)小車左傳感器檢測不到黑線,右傳感器檢測到黑線時,小車右拐; 當(dāng)小車左傳感器檢測到黑線,右傳感器檢測不到黑線時,小車左拐。 【動手操作】 活動主題一:小車沿黑線直走 使用巡線傳感器使小車沿著黑線直走。 首先讓我們像以往一樣,將小車和MINI巡線傳感器模塊連接好。這里,我們假設(shè)將左右兩個MINI巡線傳感器分別接到數(shù)字針腳2,3。
想讓小車一直沿著黑線直走,那么如果有一側(cè)的巡線傳感器檢測到黑線,我們就得往相應(yīng)側(cè)轉(zhuǎn)彎。參考程序如下: 圖3.5.5 小車沿黑線走直線 部分代碼說明如下: 在轉(zhuǎn)彎的時候,左右電機的數(shù)值差并不大,這是因為小車走直線時,左右偏差不會很大,所以不需要大轉(zhuǎn)彎。 活動主題二:小車沿黑線走S型 使用巡線傳感器使小車沿著“S”型前進。 1. 硬件搭建 接線參考小車沿黑線直走。 2. 參考程序 圖3.5.6 小車走S型 部分代碼說明如下: 小車走“S”時應(yīng)該如果要轉(zhuǎn)彎,應(yīng)該轉(zhuǎn)大彎,也就是說左右電機數(shù)值差要大,我們可以自己改變參數(shù),調(diào)試程序,使小車成功走“S”型。 【探究思考】 - 比一比:拿出你的小車與其他同學(xué)的小車賽跑吧,看誰既能成功沿黑線前進,又能先到達終點。想一想,怎么調(diào)整左右電機數(shù)值,使小車既能沿黑線行進,又能走的快。評價表格如下。
表3.5.1 評價表格
2.觀察下圖,如果還是使用上面的程序,小車可以巡線走嗎?想一想為什么? 圖3.5.7 “8”字路線 【視野拓展】 灰度傳感器 地面灰度檢測傳感器就是像圖3.5.8中所示的小模塊,機器人愛好者們往往在機器人的底盤上裝上它,讓機器人能夠巡著一根鋪設(shè)在白色地板上的黑線前進,所以它也常常被俗稱為“巡線”傳感器。它由一個LED小燈和一個光敏電阻組成。 圖3.5.8 模擬灰度傳感器 它的工作原理是這樣的:LED小燈會為傳感器提供一個持續(xù)穩(wěn)定的光源,它發(fā)出的光線被地面反射后并被光敏電阻檢測到。地面的顏色越淺,就會有更多的光線被反射到光敏電阻,越深則越多的光線被地面吸收。光線強度的變化就會使光敏電阻的阻值迅速發(fā)生變化,我們的傳感器就是依賴這種信息來檢測地面的灰度的。模擬灰度傳感器識別顏色的程序見下面。這里我們將地面灰度檢測傳感器接在模擬口0。 圖3.5.9 模擬灰度傳感器識別顏色 【挑戰(zhàn)自我】 - 如果你身邊有灰度傳感器的話(也可以詢問老師),你會使用它讓小車尋黑線前進嗎?
- 探究思考里面的“8”字要怎么解決呢,你想到好的辦法了嗎?
把你的想法寫下來吧。
第6課 巡線小車二在前面的學(xué)習(xí)中,我們認(rèn)識了MINI巡線傳感器,也成功使用巡線傳感器進行了簡單地巡線走。但事實上,機器人除了要走直線,曲線,還有各種復(fù)雜的路口。這節(jié)課,我們將來嘗試讓小車走丁字路口并學(xué)會分析十字路口。 【任務(wù)導(dǎo)航】 1.分析丁字路口; 【材料閱讀】 丁字路口分析 巡線走丁字路口,它的難度在于有一條迷惑的道路,此時,左右巡線傳感器同時檢測到黑線,應(yīng)該提前規(guī)定好該丁字路口應(yīng)向左還是向右轉(zhuǎn)彎。 丁字路口示意圖如下: 圖3.6.1丁字路口 【動手操作】 活動主題:小車巡線走丁字路口 丁字路口如上圖,我們要使小車從a出發(fā),經(jīng)過b,最終到達c。小車在線路連接上,不用做任何改變;程序上,可以在之前簡單巡線小車的基礎(chǔ)上,添加兩個巡線傳感器同時檢測到黑線時,小車的活動代碼。 參考程序
圖3.6.2 小車巡線走丁字路口 部分代碼說明如下: 人為定義,如果小車遇到上述丁字路口,就右拐。具體分析如下:代碼中前面兩個選擇結(jié)構(gòu)跟小車沿黑線直走時一樣的,這是為了確保小車可以在ab上直走。當(dāng)小車到達丁字路口,讓小車向右原地轉(zhuǎn)圈90度,轉(zhuǎn)圈的角度是由延遲時間決定,而延遲時間是由小車左右電機數(shù)值、丁字路口大小等多種因素決定的,我們需要通過不斷的測試得到這個時間值。 【探究思考】 - .觀察下圖,按照上述編程,小車還能從a到b,最后到達c嗎?為什么?
圖3.6.3 十字路口
2.觀察上圖。要使小車從a出發(fā),經(jīng)過b,最終到達d點,還可以使用上面的程序嗎?哪里需要改動? 【視野拓展】 “之”字巡線法 如果只有一個巡線傳感器,你會用它來巡線嗎? 因為只有一個巡線傳感器,所以我們處理的方法比較特殊。將小車傳感器位置放在靠近黑線左側(cè)或者是在黑線上。當(dāng)小車檢測到黑線的時候,立即左轉(zhuǎn);同樣,當(dāng)小車左轉(zhuǎn)以后,會發(fā)現(xiàn)白線,此時小車立刻右轉(zhuǎn)。反反復(fù)復(fù)如此前進,最后我們會發(fā)現(xiàn)小車按照“之字形”的折線巡線前進了。因此我們稱這種方法叫做“之”字巡線法。 如果我們將小車放在了黑線的右邊,因為在編程中,設(shè)定了小車遇到黑線,左轉(zhuǎn),遇到白線右轉(zhuǎn),所以此時小車會原地打轉(zhuǎn)。所以具體程序以及小車放置的初始位置很重要。 【挑戰(zhàn)自我】 - 你會讓小車在下面的路線中,走過一個十字路口再右轉(zhuǎn)嗎?(比如從a經(jīng)過b、c,最后到達d)將你的思路寫下來【提示:設(shè)置變量】
- 你會讓你的小車從d經(jīng)過c,最后到達b,再從b按照原路返回到達d嗎?
3.上節(jié)課留下來的“8”字,你會使用巡線傳感器完成了嗎?
 
圖3.6.4 十字路口
第7課 小車綜合創(chuàng)意通過這三章的學(xué)習(xí),我們認(rèn)識了許多有意思的傳感器,并且做出了許多有趣的作品。在小車這一章的學(xué)習(xí)中,大家也肯定有很多自己的想法,這節(jié)課,讓我們嘗試將這些想法變成現(xiàn)實吧。 【任務(wù)導(dǎo)航】 1. 制作遙控控制或者串口控制的超聲波測障巡邏車; 2. 自己設(shè)計并嘗試實現(xiàn)一種有創(chuàng)意的小車; 3. 自評以及他評創(chuàng)意小車。 【材料閱讀】 串口控制 在ArduBlock【實用命令】中有一個【讀取串口】模塊,通過該模塊我們可以讀取到在串口監(jiān)視器中輸入的值。【讀取串口】模塊如圖所示: 圖3.7.1 讀取串口 串口監(jiān)視器如下圖: 圖3.7.2 串口監(jiān)視器
我們在鼠標(biāo)光標(biāo)位置輸入數(shù)字,再點擊后面的【發(fā)送】按鈕,【讀取串口】模塊可以讀出我們輸入的數(shù)字。我們可以結(jié)合【串口打印加回車】模塊,在串口監(jiān)視器中打印出發(fā)送的數(shù)值。下面舉出一個簡單的串口控制LED亮滅的實例。如下圖: 圖3.7.3 串口控制LED亮滅 在這個程序中,如果我們在串口監(jiān)視器中發(fā)送“1”,接在數(shù)字針腳8號口的LED將會點亮,同樣,如果我們在串口監(jiān)視器中發(fā)送“2”,LED將會熄滅。 【動手操作】 遙控控制的主要思路跟遙控風(fēng)扇一樣,先對特定的按鍵解碼,再給各個按鍵賦予對應(yīng)的指令,比如:按“2”小車前進,按“8”小車后退,按“4”小車左轉(zhuǎn),按“6”小車右轉(zhuǎn)等。 串口控制從實質(zhì)上說,比遙控控制更加簡單。我們在串口里輸入數(shù)值,將這些數(shù)值與小車的動作相對應(yīng),比如:輸入“2”小車前進,輸入“8”小車后退,輸入“4”小車左轉(zhuǎn),輸入“6”,小車右轉(zhuǎn)等。 3.超聲波測障 將超聲波傳感器運用在小車上,用它來檢測障礙物,這里有兩種多種處理方法。例如:超聲波傳感器檢測到障礙物,可以通過LED或者蜂鳴器發(fā)出警報;再比如:超聲波感應(yīng)到前面有障礙物時,小車減速。距離障礙物越近,速度越慢,直到停下來。 4.巡邏小車 巡邏小車的關(guān)鍵除了小車要四處行走,還可以加上舵機進行控制。具體操作可以考慮將超聲波傳感器安裝在舵機上,利用舵機的角度轉(zhuǎn)動,調(diào)整超聲波傳感器的方向,與小車自己的行進軌跡相配合,進行全方位、多角度的巡邏檢測。 舵機、超聲波以及小車的整體安裝可以參考下圖: 圖3.7.4 超聲波、舵機安裝示意圖
5.其它創(chuàng)意小車 同學(xué)們也可以加上自己的想法,制作具有個人特色的智能小車。 【探究思考】 串口控制的小車可以脫離電腦嗎?如果不可以,使用串口控制小車,是不是限制了小車的行動范圍?可以怎么解決呢? 【視野拓展】 創(chuàng)意小車--語音控制的小車 該小車為溫州中學(xué)學(xué)生設(shè)計制作。該語音控制小車由電源模塊、主機控制模塊、紅外測障模塊、聲音模塊、平衡模塊、電機驅(qū)動模塊6個模塊構(gòu)成。它們之間的關(guān)系如圖:
圖3.7.5 六大模塊關(guān)系圖
語言控制小車的主機控制模塊和電機驅(qū)動模塊由電源模塊供電。用戶向機器人發(fā)出指令,由聲音模塊接受,把信號傳輸給主機控制模塊,主機控制模塊將值處理后重新返回給聲音模塊。平衡模塊根據(jù)機器人所處形態(tài)返回值給主機控制模塊。紅外模塊由紅外傳感器根據(jù)前方障礙的遠(yuǎn)近返回值給主機控制模塊?偠灾,機器人可以根據(jù)用戶發(fā)出的指令實現(xiàn)前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、問候、測障、平衡檢測等功能。 因為其他模塊之前都已經(jīng)有所涉獵,在這里,我們主要認(rèn)識一下聲音模塊。如下圖: 圖3.7.6 聲音模塊 該聲音模塊由一塊電路板ASR M08-A(內(nèi)置麥克風(fēng))和一個揚聲器組成。可以接收人發(fā)出的非特定聲音,將聲音信號轉(zhuǎn)化為電信號,并輸出給單片機,單片機處理后把值返回給聲音模塊,根據(jù)返回的值播放SD卡中特定的音頻文件,并執(zhí)行特定的動作。機器人根據(jù)指令播放音頻文件時,需要用AD4格式的音頻文件,所以需要將普通的mp3格式的音頻文件轉(zhuǎn)換成AD4格式再存入SD卡才能正常運行。 【挑戰(zhàn)自我】 閱讀無線通信,通過無線,解決串口控制小車的遺留問題。如果有其他辦法,也可以進行嘗試。
附錄:Arduino機器人教學(xué)套件
| | | | 數(shù)字食人魚白色LED發(fā)光模塊(Arduino兼容) | | 數(shù)字食人魚綠色LED發(fā)光模塊(Arduino兼容) | | 數(shù)字食人魚藍(lán)色LED發(fā)光模塊(Arduino兼容) | | | | | | | | | | 數(shù)字鋼球傾角傳感器(Arduino兼容) | | | | 近距離紅外數(shù)字避障傳感器(防跌落傳感器) | | | | | | 模擬環(huán)境光線傳感器(Arduino兼容) | | | | | | | | | | | | | | | | | | | | 7.4V 2200MA 鋰電池 (帶充放電保護板) | | | | | | | | | | | | | | | | | | | | | | | | | |
給Arduino廠商的一點說明
“Arduino創(chuàng)意機器人”課程為開源課程,任何廠商可以使用課程資源進行商用,也可以修改教材以適合自己產(chǎn)品。如果有類似的產(chǎn)品,需要開發(fā)相應(yīng)的課程,請聯(lián)系我們團隊,具體的合作要求如下: - 免費提供2套以上完整的套件,供我們團隊開發(fā)課程,并根據(jù)我們的課程設(shè)計,提供相關(guān)的器材;
- 開發(fā)的課程資源版權(quán)歸我們所有,我們團隊有權(quán)免費提供在網(wǎng)絡(luò)上,供所有師生使用;
- 課程的設(shè)計由我們團隊決定,廠商按照我們的需求提供器材即可,不可干擾我們的研發(fā)工作。
主 編:謝作如
參與編寫:張祿 張麗芳 劉正云
完整的Word格式文檔51黑下載地址:
Arduino創(chuàng)意機器人教材10.12.doc
(13.67 MB, 下載次數(shù): 83)
2018-12-20 10:27 上傳
點擊文件名下載附件
2
|