到目前為止,我們已經(jīng)在DevicePlus上介紹過Arduino的使用方法和一些應(yīng)用案例。在本文中,我們將嘗試一個用Arduino讓傳感器工作的電子作品。此次的分享嘉賓是福田和宏先生!他過去曾在DevicePlus上連載過“Arduino基礎(chǔ)”等作品。
◆◆◆
大家好!讓我們直接進(jìn)入主題吧。通過將幾個微控制器和電子元器件相組合,就能創(chuàng)作出很多不同的作品。從機(jī)器人和無人機(jī)等流行設(shè)備到鬧鐘和玩具等小物件,您可以實現(xiàn)各種創(chuàng)意。這次要為大家介紹的是一款名為“小雞賽車”的車形機(jī)器人的制作過程。
作品簡介
使用這次的作品可以玩一種游戲,讓名為“小雞賽車”的車形機(jī)器人向著墻壁行駛,比賽從機(jī)器人停下的地方到墻壁的距離誰最短。它采用了可以通過按鈕來操作車形機(jī)器人的設(shè)計,因此任何人都可以輕松享受競賽游戲。
這款小雞賽車中配有電機(jī),通過開關(guān)使其前進(jìn)。參加游戲的人手握按鈕,當(dāng)小車馬上要撞上墻壁時按下按鈕使之停止。
然后使用距離傳感器來測量賽車與墻壁之間的距離。即使和好幾個人一起玩,只要能測量出到墻壁的距離,就能比出誰在離墻壁最近的位置停下來了,是不是很有趣?
另外,我們還需要提前準(zhǔn)備一個用來檢測是否已碰撞到墻壁的機(jī)制。我的設(shè)計是在小雞賽車的前端安裝了開關(guān),這樣,如果它撞到墻上開關(guān)就會被按下。如果這個開關(guān)被按下,就意味著玩家失敗。
所需的電子零部件
在確定了小雞賽車的大致動作之后,讓我們來看看需要使用哪些電子零部件。這次我們將使用Arduino進(jìn)行控制。由于“Arduino UNO”等產(chǎn)品體積較大,不適合安裝在這么小的作品上,因此,我決定使用體積小巧的“Arduino Nano”?!癆rduino Nano”的尺寸為45×18mm,大小是可以放在食指上的程度,所以正好可以安裝在作品上,而不用擔(dān)心尺寸太大。另外,雖然體積更小,但卻具有與“Arduino Uno”相同的功能,這點很關(guān)鍵。
驅(qū)動電機(jī)使用配有齒輪的電機(jī)。這是因為齒輪會增強(qiáng)驅(qū)動的力量,這樣即使放置電池等較重的部件,也可以輕松地讓賽車跑起來。此外,還需要電機(jī)驅(qū)動器讓電機(jī)運轉(zhuǎn)。
使小雞賽車停下來的操作,我用按鈕開關(guān)來實現(xiàn)。這次,我想將開關(guān)線延長,以便從遠(yuǎn)處也可以控制賽車。
我使用微動開關(guān)來判斷小雞賽車是否撞到了墻上,選用了附有金屬板的微動開關(guān)。金屬板的存在可以確保開關(guān)被按下而不必?fù)?dān)心碰撞角度。此外,通過在前方安裝左右兩個微動開關(guān),可以提高發(fā)生碰撞時按下開關(guān)的準(zhǔn)確性。
停止時,需要測量到墻壁的距離,我使用距離傳感器來完成這項工作。這次用的是可以使用超聲波測量距離的距離傳感器。
另外,我還希望在顯示器上顯示結(jié)果,以便讓玩家知道測量出來的距離。我使用的是字符液晶顯示器,這樣可以比較容易地顯示字符。
可以通過LED讓玩家知道開始的時間以及是否成功。安裝一個綠色和三個紅色的LED。通過倒計時來通知開始時間,先是所有紅色LED點亮,然后逐一熄滅,綠色LED點亮表示開始,賽車駛出。另外,如果成功了,綠色LED亮起;如果失敗了,則紅色LED亮起,據(jù)此來告知參賽者結(jié)果。
除此之外,還要配備調(diào)整電機(jī)速度和設(shè)置距離的功能。
接下來,我們根據(jù)小雞賽車的結(jié)構(gòu),來選擇電子零部件。這次使用的電子零部件如下:
Arduino Nano Every
使用“Arduino Nano Every”作為微控制器來負(fù)責(zé)控制。Arduino Nano Every是一款于2019年5月發(fā)售的新Arduino Nano。當(dāng)然,如果不想使用Arduino Nano Every,使用舊Arduino Nano或與Arduino Nano兼容的產(chǎn)品也沒有問題。
超聲波距離傳感器
通過發(fā)射超聲波并測量直到接收到墻壁反射回來的超聲波的時間來測量與對象物之間的距離。
字符液晶顯示器
可以顯示字符和符號的顯示器。這次使用的是“AQM1602Y-FLW-FBW”,最多可以顯示2行16個字符。此外,該顯示器有背光,因此即使在較暗環(huán)境下也可以查看所顯示的字符。
圓形機(jī)器人底盤套件
該套件中包括電機(jī)、車輪和殼體。電機(jī)采用驅(qū)動力量較大的減速電機(jī)(齒輪電機(jī))。按照說明書組裝,可以很容易地制作出小雞賽車殼體。將電子電路和傳感器等安裝到這個殼體里面,即可完成制作。當(dāng)然,您也可以只購買電機(jī),自己來制作殼體。
電機(jī)驅(qū)動器
使用輸出為1.0A的電機(jī)適用的可逆電機(jī)驅(qū)動器來驅(qū)動電機(jī)。這次我使用的產(chǎn)品規(guī)格如下:
【絕對最大額定值(Ta=25℃)】
電源電壓(VCC):18V
電源電壓(VM):18V
輸出電流(lomax):1A
工作溫度范圍:-20?75℃
保存溫度范圍:-55?150℃
【推薦工作范圍】
電源電壓(VCC):6.5?15V
電源電壓(VM):6.5?15V
輸出H電壓設(shè)置:
編號 | 引腳名 | 功能 |
1 | VREF | 輸出H電壓設(shè)置引腳 |
2 | OUT2 | 輸出引腳 |
3 | RNF | 輸出單元GND |
4 | OUT1 | 輸出引腳 |
5 | VM | 電源(電機(jī)輸出單元) |
6 | VCC | 電源(小信號單元) |
7 | FIN | 控制輸入(正) |
8 | GND | GND |
9 | RIN | 控制輸入(反) |
為了使賽車的左右兩個車輪轉(zhuǎn)動,我使用了2個電機(jī)。
紅色LED
綠色LED
使用LED來通知倒計時和結(jié)果信息。我準(zhǔn)備了3個紅色和1個綠色的LED。
按鈕開關(guān)
供玩家用來控制小雞賽車。為了便于操作,最好選擇能夠連接到面板的形狀。
微動開關(guān)
用來檢測是否與墻壁發(fā)生了碰撞。在賽車前方安裝左右兩個微動開關(guān)。
除了上述部件之外,我還使用了以下電子元器件:
電子元器件名稱 | 數(shù)量 | URL |
節(jié)拍開關(guān) | 1 | http://akizukidenshi.com/catalog/g/gP-03649/ |
滑動開關(guān) | 2 | https://www.amazon.co.jp/Zhejiang-Jianfu-Electronics-Co-%E5%9F%BA%E6%9D%BF%E7%94%A8%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-SS-12D00-G5-10%E5%80%8B%E3%82%BB%E3%83%83%E3%83%88/dp/B01L3MJZGS |
半固定電阻器 | 2 | http://akizukidenshi.com/catalog/g/gP-14855/ |
二極管 | 1 | http://akizukidenshi.com/catalog/g/gI-07699/ |
330Ω電阻器 | 6 | http://akizukidenshi.com/catalog/g/gR-25331/ |
0.1μF電容器 | 4 | http://akizukidenshi.com/catalog/g/gP-10147/ |
3P排針 | 1 | https://www.amazon.co.jp/%E6%9C%AD%E5%B9%8C%E8%B2%BF%E6%98%93-%E3%83%94%E3%83%B3%E3%83%98%E3%83%83%E3%83%80-1%C3%973-3P-2%E5%80%8B%E5%85%A5%E3%82%8A%EF%BC%9Ccon-000%EF%BC%9E/dp/B00TP91KLK |
跳線接頭 | 1 | http://akizukidenshi.com/catalog/g/gP-03690/ |
電池扣 | 2 | https://www.marutsu.co.jp/pc/i/14367/ |
電池(006P) | 2 | http://akizukidenshi.com/catalog/g/gB-03257/ |
萬用電路板 95×72mm | 1 | https://www.marutsu.co.jp/pc/i/237293/ |
萬用電路板 72×47mm | 1 | https://www.marutsu.co.jp/pc/i/144023/ |
另外,需要使用如下排母將每個電子元器件用導(dǎo)線連接起來。如果直接將布線焊接起來則不需要這些器件。
電子元器件名稱 | 數(shù)量 | URL |
L型6P排針 | 1 | http://akizukidenshi.com/catalog/g/gC-05336/ |
42P排母 | 1 | http://akizukidenshi.com/catalog/g/gC-05779/ |
Xh-2P連接器 針座 | 4 | https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/B2B-XH-A-LF-SN/455-2247-ND/1651045 |
XH-2P連接器殼體 | 4 | https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/XHP-2/455-2266-ND/555485 |
Xh連接器 4P針座 | 3 | https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/B4B-XH-A-LF-SN/455-2249-ND/1651047 |
XH-4P連接器殼體 | 3 | https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=2AP6-4SFL# |
XH連接器觸頭 | 20 | https://www.digikey.jp/product-detail/ja/jst-sales-america-inc/SXH-001T-P0.6/455-1135-1-ND/527370 |
4P連接器殼體 | 1 | http://akizukidenshi.com/catalog/g/gC-12153/ |
導(dǎo)線連接器 | 4 | http://akizukidenshi.com/catalog/g/gC-12160/ |
當(dāng)然,如果能實現(xiàn)同樣的功能,選擇其他電子元器件也沒有問題。在這種情況下,需要注意它們的連接方法和控制方向。
為Arduino供電
首先需要確保為Arduino提供的電源。由于這是一個能夠移動的作品,所以需要在作品自身上安裝電池等作為電源。Arduino Nano可以通過連接USB數(shù)據(jù)線供電。因此,還可以通過安裝移動電源等來實現(xiàn)供電。然而,目前市場上的移動電源很多是面向智能手機(jī)的,往往又大又重。此外,Arduino消耗的電量很小,不需要像移動電源那么大的容量。
因此,這次我用的是電池。Arduino中配有稱為“VIN”的引腳,當(dāng)它與最大21V的電源相連接時,就會將電壓轉(zhuǎn)換為5V并為Arduino供電。因此,我使用了可輸出9V電壓的006P電池來供電。
將電池扣的正極(紅線)連接到“VIN”引腳,將負(fù)極(黑線)連接到“GND”引腳即可實現(xiàn)供電。
確認(rèn)電子部件的工作情況
準(zhǔn)備好電子部件后,需要確認(rèn)每個電子部件是否可以正常工作。這是為了一旦出現(xiàn)無法工作的情況,便于采取諸如更換成其他電子部件等的措施。
在確認(rèn)時,最好使用面包板進(jìn)行連接。另外,如果能事先確認(rèn)作品應(yīng)該可以在實裝后正常工作,那么您在編寫程序時會更安心。
首先,我們來確認(rèn)LED和開關(guān)是否能夠正常工作。另外,我們要確認(rèn)一下按下開關(guān)后是否開始計數(shù)。
將LED連接到Arduino的數(shù)字輸出引腳可以打開和關(guān)閉LED。此外,我們還需要給LED連接一個電阻器,以防止過電流(關(guān)于更詳細(xì)的LED使用方法,請參閱“Arduino基礎(chǔ):通過數(shù)字輸出來控制LED照明”(https://techclass.rohm.com.cn/knowledge/tech-info/how-tos/arduino/the-basics-of-arduino-control-led-lighting-with-digital-output))。
這次我使用3個紅色LED和1個綠色LED。將LED分別連接到Arduino的數(shù)字輸出引腳8、9、10、11。
玩家操作時使用的按鈕開關(guān),連接數(shù)字輸入引腳即可讀取開關(guān)狀態(tài)。此外,通過將另一個引腳連接到GND,按下按鈕時數(shù)字輸入引腳的狀態(tài)會變?yōu)?V。另外,還要通過編程來啟用上拉功能,以使其在未按下按鈕時處于5V狀態(tài),如果要了解更詳細(xì)的內(nèi)容,請參考“Arduino基礎(chǔ):讀取開關(guān)狀態(tài)”(https://techclass.rohm.com.cn/knowledge/tech-info/arduino/the-basics-of-arduino-reading-switch-states)。這次,我們連接數(shù)字輸入引腳7。
現(xiàn)在,讓我們將LED和開關(guān)連接到面包板上來嘗試計數(shù)吧。電子部件的連接如下圖所示。由于開關(guān)不能直接連接到面包板上,所以我們用焊接導(dǎo)線的方式連接。
連接好之后,創(chuàng)建以下程序。通過這個程序,當(dāng)您按下開關(guān)時,所有紅色LED燈亮起,然后每秒熄滅1個LED燈,最后綠色LED燈亮起。
const int LED_RED1_PIN = 8; const int LED_RED2_PIN = 9; const int LED_RED3_PIN = 10; const int LED_GREEN_PIN = 11; const int SW_PIN = 7 void setup() { pinMode( LED_RED1_PIN, OUTPUT ); pinMode( LED_RED2_PIN, OUTPUT ); pinMode( LED_RED3_PIN, OUTPUT ); pinMode( LED_GREEN_PIN, OUTPUT ); pinMode( SW_PIN, INPUT_PULLUP ); digitalWrite( LED_RED1_PIN, LOW); digitalWrite( LED_RED2_PIN, LOW); digitalWrite( LED_RED3_PIN, LOW); digitalWrite( LED_GREEN_PIN, LOW); } void loop() { if( digitalRead( SW_PIN ) == LOW ){ while( digitalRead( SW_PIN ) == LOW ){ delay( 10 ); } digitalWrite( LED_RED1_PIN, HIGH ); digitalWrite( LED_RED2_PIN, HIGH ); digitalWrite( LED_RED3_PIN, HIGH ); digitalWrite( LED_GREEN_PIN, LOW ); delay( 3000 ); digitalWrite( LED_RED1_PIN, LOW ); delay( 1000 ); digitalWrite( LED_RED2_PIN, LOW ); delay( 1000 ); digitalWrite( LED_RED3_PIN, LOW ); digitalWrite( LED_GREEN_PIN, HIGH ); }
將程序傳輸?shù)紸rduino,就可以確認(rèn)按下按鈕時LED是否按預(yù)期工作啦。
◆◆◆
這次我簡單為大家介紹了“小雞賽車”以及所需的電子部件。下一次,我將為大家介紹如何確認(rèn)超聲波距離傳感器等電子部件的工作情況,以及整個電子電路的創(chuàng)建方法。
福田和宏
作家,居住在日本札幌。喜歡撰寫有關(guān)電子創(chuàng)作、電腦、Linux、智能手機(jī)等方面的文章。在為“Raspberry Pi Magazine”和“日經(jīng)Linux”供稿。著有《這本書足夠!Raspberry Pi超簡單入門教程》(SOTECHSHA)、《學(xué)習(xí)各種電子元器件的控制!Arduino電子創(chuàng)作 實戰(zhàn)教程》(SOTECHSHA)、《Arduino實用入門》(技術(shù)評論出版社)等書籍。目前,創(chuàng)辦了“札幌電子工藝部”(https://sapporo-elec.com/),這里匯集了眾多電子創(chuàng)作發(fā)燒友,大家使用各自的電子技能創(chuàng)作各種作品。任何人都可以參加,也期待您的加入!
審核編輯黃宇
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660554 -
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186950 -
距離傳感器
+關(guān)注
關(guān)注
3文章
75瀏覽量
15121
發(fā)布評論請先 登錄
相關(guān)推薦
評論