在最後一刻停下來!用Arduino和距離感測器製作小雞賽車!(第1篇)

到目前為止,我們已經在DevicePlus上介紹過Arduino的使用方法和一些應用案例。在本文中,我們將嘗試一個用Arduino讓感測器工作的電子作品。此次的分享嘉賓是福田和宏先生!他過去曾在Device Plus上連載過“Arduino 基礎”等作品。

◆◆◆

大家好!讓我們直接進入主題吧。透過將幾個微控制器和電子元件相組合,就能創作出很多不同的作品。從機器人和無人機等流行設備到鬧鐘和玩具等小物件,您可以實現各種創意。這次要為大家介紹的是一款名為“小雞賽車”的車形機器人製作過程。

作品簡介

01

使用這次的作品可以玩一種遊戲,讓名為“小雞賽車”的車形機器人向著牆壁行駛,比賽從機器人停下的地方到牆壁的距離誰最短。它採用了可以透過按鈕來操作車形機器人的設計,因此任何人都可以輕鬆享受競賽遊戲。

這款小雞賽車中配有馬達,透過開關使其前進。參加遊戲的人手握按鈕,當小車馬上要撞上牆壁時按下按鈕使之停止。

然後使用距離感測器來測量賽車與牆壁之間的距離。即使和好幾個人一起玩,只要能測量出到牆壁的距離,就能比出誰在離牆壁最近的位置停下來了,是不是很有趣?

另外,我們還需要提前準備一個用來檢測是否已碰撞到牆壁的機制。我的設計是在小雞賽車的前端安裝了開關,這樣,如果它撞到牆上開關就會被按下。如果這個開關被按下,就意味著玩家失敗。

arduino explorer rover

所需的電子零件

在確定了小雞賽車的大致動作之後,讓我們來看看需要使用哪些電子零件。這次我們將使用Arduino進行控制。由於“Arduino UNO”等產品體積較大,不適合安裝在這麼小的作品上,因此,我決定使用體積小巧的“Arduino Nano”。“Arduino Nano”的尺寸為45×18mm,大小是可以放在食指上的程度,所以正好可以安裝在作品上,而不用擔心尺寸太大。另外,雖然體積更小,但卻具有與“Arduino Uno”相同的功能,這點很關鍵。

驅動馬達使用配有齒輪的馬達。這是因為齒輪會增強驅動的力量,這樣即使放置電池等較重的零件,也可以輕鬆地讓賽車跑起來。此外,還需要馬達驅動器讓馬達運轉。

使小雞賽車停下來的操作,我用按鈕開關來實現。這次,我想將開關線延長,以便從遠處也可以控制賽車。

我使用微動開關來判斷小雞賽車是否撞到了牆上,選用了附有金屬板的微動開關。金屬板的存在可以確保開關被按下而不必擔心碰撞角度。此外,透過在前方安裝左右兩個微動開關,可以提高發生碰撞時按下開關的準確性。

停止時,需要測量到牆壁的距離,我使用距離感測器來完成這項工作。這次用的是可以使用超音波測量距離的距離感測器。

另外,我還希望在顯示器上顯示結果,以便讓玩家知道測量出來的距離。我使用的是文字液晶顯示器,這樣可以比較容易地顯示文字。

可以透過LED讓玩家知道開始的時間以及是否成功。安裝一個綠色和三個紅色的LED。透過倒數計時來通知開始時間,先是所有紅色LED點亮,然後逐一熄滅,綠色LED點亮表示開始,賽車駛出。另外,如果成功了,綠色LED亮起;如果失敗了,則紅色LED亮起,據此來告知參賽者結果。

除此之外,還要配備調整馬達速度和設置距離的功能。

arduino explorer rover

接下來,我們根據小雞賽車的結構,來選擇電子零件。這次使用的電子零件如下:

04

Arduino Nano Every

使用“Arduino Nano Every”作為微控制器來負責控制。Arduino Nano Every是一款於2019年5月發售的新Arduino Nano。當然,如果不想使用Arduino Nano Every,使用舊Arduino Nano或與Arduino Nano相容的產品也沒有問題。

 

05

超音波距離感測器

透過發射超音波並測量接收到牆壁反射回來的超音波時間,來測量與物件之間的距離。

 

06

文字液晶顯示器

可以顯示文字和符號的顯示器。這次使用的是“AQM1602Y-FLW-FBW”,最多可以顯示2行16個文字。此外,該顯示器有背光,因此即使在較暗的環境下也可以查看所顯示的文字。

 

07

圓形機器人底盤套件

該套件中包括馬達、車輪和外殼。馬達採用驅動力量較大的減速馬達(齒輪馬達)。按照說明書組裝,可以很容易地製作出小雞賽車外殼。將電子電路和感測器等安裝到這個外殼裡面,即可完成製作。當然,您也可以只購買馬達,自己來製作外殼。

 

08

馬達驅動器

使用輸出為1.0A的馬達適用的可逆馬達驅動器來驅動馬達。這次我使用的產品規格如下:

【絕對最大額定值(Ta=25℃)】
電源電壓(VCC):18V
電源電壓(VM):18V
輸出電流(lomax):1A
工作溫度範圍:-20〜75℃
保存溫度範圍:-55〜150℃
【推薦工作範圍】
電源電壓(VCC):6.5〜15V
電源電壓(VM):6.5〜15V
輸出H電壓設置:<VCC,VM

編號 引腳名 功能
1 VREF 輸出H電壓設置引腳
2 OUT2 輸出引腳
3 RNF 輸出單元GND
4 OUT1 輸出引腳
5 VM 電源(馬達輸出單元)
6 VCC 電源(小信號單元)
7 FIN 控制輸入(正)
8 GND GND
9 RIN 控制輸入(反)

為了使賽車的左右兩個車輪轉動,我使用了2個馬達。

 

紅色LED
綠色LED

使用LED來通知倒數計時和結果資訊。我準備了3個紅色和1個綠色的LED。

 

10

按鈕開關

供玩家用來控制小雞賽車。為了便於操作,最好選擇能夠連接到面板的形狀。

 

11

微動開關

用來檢測是否與牆壁發生了碰撞。在賽車前方安裝左右兩個微動開關。

除了上述零件之外,我還使用了以下電子元件:

電子元件名稱 數量 URL
節拍開關 1 http://akizukidenshi.com/catalog/g/gP-03649/
滑動開關 2
https://www.amazon.co.jp/Zhejiang-Jianfu-Electronics-Co-基板用スライドスイッチ-SS-12D00-G5-10個セット/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/札幌貿易-ピンヘッダ-1×3-3P-2個入り<con-000>/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/

另外,需要使用如下排母將每個電子元件用導線連接起來。如果直接將佈線焊接起來則不需要這些元件。

電子元件名稱 數量 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/
導線連接器 4 http://akizukidenshi.com/catalog/g/gC-12160/

當然,如果能實現同樣的功能,選擇其他電子元件也沒有問題。在這種情況下,需要注意它們的連接方法和控制方向。

 

為Arduino供電

首先需要確保為Arduino提供的電源。由於這是一個能夠移動的作品,所以需要在作品自身上安裝電池等作為電源。Arduino Nano可以透過連接USB資料線供電。因此,還可以透過安裝行動電源等來實現供電。然而,目前市場上的行動電源很多是針對智慧手機的,往往又大又重。此外,Arduino消耗的電量很小,不需要像行動電源那麼大的容量。

因此,這次我用的是電池。Arduino中配有稱為“VIN”的引腳,當它與最大21V的電源相連接時,就會將電壓轉換為5V並為Arduino供電。因此,我使用了可輸出9V電壓的006P電池來供電。

將電池扣的正極(紅線)連接到“VIN”引腳,將負極(黑線)連接到“GND”引腳即可實現供電。

12

 

確認電子零件的工作情況

準備好電子零件後,需要確認每個電子零件是否可以正常工作。這是為了一旦出現無法工作的情況,便於採取諸如更換成其他電子零件等的措施。

在確認時,最好使用麵包板進行連接。另外,如果能事先確認作品應該可以在實裝後正常工作,那麼您在編寫程式時會更安心。

首先,我們來確認LED和開關是否能夠正常工作。另外,我們要確認一下按下開關後是否開始計數。

將LED連接到Arduino的數位輸出引腳可以打開和關閉LED。此外,我們還需要給LED連接一個電阻,以防止過電流(關於更詳細的LED使用方法,請參閱“Arduino基礎:透過數位輸出來控制LED照明”“Arduino基礎:透過數位輸出來控制LED照明”。

這次我使用3個紅色LED和1個綠色LED。將LED分別連接到Arduino的數位輸出引腳8、9、10、11。

玩家操作時使用的按鈕開關,連接數位輸入引腳即可讀取開關狀態。此外,透過將另一個引腳連接到GND,按下按鈕時數位輸入引腳的狀態會變為0V。另外,還要透過程式設計來啟用上拉功能,以使其在未按下按鈕時處於5V狀態,如果要瞭解更詳細的內容,請參考“Arduino基礎:讀取開關狀態”Arduino基礎:讀取開關狀態”。這次,我們連接數字輸入引腳7。

現在,讓我們將LED和開關連接到麵包板上來嘗試計數吧。電子零件的連接如下圖所示。由於開關不能直接連接到麵包板上,所以我們用焊接導線的方式連接。

13

連接好之後,創建以下程式。透過這個程式,當您按下開關時,所有紅色LED燈亮起,然後每秒熄滅1個LED燈,最後綠色LED燈亮起。

將程式傳輸到Arduino,就可以確認按下按鈕時LED是否按預期工作啦。

◆◆◆

這次我簡單為大家介紹了“小雞賽車”以及所需的電子零件。下一次,我將為大家介紹如何確認超音波距離感測器等電子零件的工作情況,以及整個電子電路的創建方法。

福田 和宏
福田 和宏
作家,居住在日本札幌。喜歡撰寫有關電子創作、電腦、Linux、智慧手機等方面的文章,也為“Raspberry Pi Magazine”和“日經Linux”寫稿。著作包含《有這本書就夠了!Raspberry Pi超簡單入門》(SOTECHSHA)、《學習各種電子元件的控制!Arduino電子創作 實戰手冊》(SOTECHSHA)、《Arduino實用入門》(技術評論出版社)等書籍。目前,創辦了“札幌電子工藝部”(https://sapporo-elec.com/),這裡彙集了眾多電子創作玩家,大家使用各自的電子技能創作各種作品。任何人都可以參加,也期待您的加入!

Check us out on Social Media