查了一下,有個「S4A」(Scratch for Arduino),只要先將網站中提供的 S4A 靭體 upload 到 Arduino 中,就可以利用這個改過的 Scratch 來寫程式,並透過電腦中有和 Arduino 連線的 Serial Port 進行通訊,達到控制接在 Arduino 上硬體的目的。
和 Arduino 通訊的部份,S4A 除了可以使用有線的方式,也可以透過無線網路或是藍芽的方式來傳遞資料。上網找了一下可用的零件,藍芽的 Serial port 模組似乎比較經濟,於是在網路買了一片 HC-05 Bluetooth RS-232 Module。加上之前買的「L293D」及給小孩玩的「科學魔法車」,就可以組一臺以 Scratch 無線遙控的魔法車。除了可以享受 DIY 動手做的樂趣,和樂高比起來,算是經濟實惠。
給小孩子玩,每個人都是愛不釋手。
下面是我家小小孩用電腦鍵盤操作車子的情形:
硬體部份
上面的車子使用的硬體如下:
- Arduino:使用前要先到 S4A 網站中下載 S4A 的 Arduino 靭體程式碼,並安裝到 Arduino 中。
- L293D:這一顆 IC 可以控制兩個馬達。
- 科學魔法車:只會使用到科學魔法車的車體和麵包板(此部份當然也可以換成樂高組裝的車子)。
- HC-05 Bluetooth Module:可能需要將連線速率設為 38400 (S4A內定的連線速率)。
- 行動電源:主要供電給 Arduino 。車子馬達的電源可使用魔法車的電池盒來獨立供電,或是像我將行動電源的電力分給馬達用(需改 USB 線,詳見後面的電路圖)。
市面上有一款名為「Motoduino」的板子,它等於是 Arduino + L293D,花的錢多一點,好處是不用在麵包板上插一堆線。不過,哈~我比較喜歡省錢,並享受被那一堆線玩的感覺!
如果 Arduino 和馬達的電源分開接,可以參考下面的接線方式:
Arduino 和馬達電源分開 |
如果 Arduino 和馬達共用 5V USB 行動電源,可以參考下圖:
Arduino 和馬達共用一個電源 |
前述兩種接法只差在電源的接法,其餘都一樣,主要分為兩大部份:
HC-05 藍芽模組與 Arduino
- HC-05 VCC ---- Arduino 5V
- HC-05 GND ---- Arduino GND
- HC-05 TXD ---- Arduino RXD
- HC-05 RXD ---- Arduino TXD
L293D 的部份
L293D 可以控制兩個馬達,而接腳的排列很對稱哦~
我打算利用:
- Arduino pin 5 , pin 6 分別控制車子右側馬達和左側馬達輸出的馬力,它們可以設定值範圍由 0 至 255,數值愈大,馬力愈大。
- Arduino pin 10, pin 11 用來控制車子右側馬達的轉向,當 pin 10 Off、pin 11 On 時順時鐘轉動(前進),而 pin 10 On、pin 11 Off 時逆時鐘轉動(後退)。
- Arduino pin 12, pin 13 用來控制車子右側馬達的轉向,當 pin 12 Off、pin 13 On 時順時鐘轉動(前進),而 pin 12 On、pin 13 Off 時逆時鐘轉動(後退)。
底下是 L293D 這顆 IC 的接法:
- L293D pin 0 ---- Arduino pin 5
- L293D pin 1 ---- Arduino pin 10
- L293D pin 2 ---- 右側馬達接腳 1
- L293D pin 3 ---- GND
- L293D pin 4 ---- GND
- L293D pin 5 ---- 右側馬達接腳 2
- L293D pin 6 ---- Arduino pin 11
- L293D pin 7 ---- 供給馬達的電源正極
- L293D pin 8 ---- Arduino pin 6
- L293D pin 9 ---- Arduino pin 12
- L293D pin 10 ---- 左側馬達接腳 1
- L293D pin 11 ---- GND
- L293D pin 12 ---- GND
- L293D pin 13 ---- 左側馬達接腳 2
- L293D pin 14 ---- Arduino pin 13
- L293D pin 15 ---- Arduino 5V
軟體部份
這臺遙控車使用到的軟體只有 S4A 。不過,在啟動 S4A 之前,記得要先插入藍芽傳輸器或是開啟電腦端的藍芽功能,並先和 HC-05 進行配對(配對密碼預設為「1234」),這樣子 S4A 才能和 HC-05 連線。
找到連接埠後,我們在 S4A 中,要進行的程序是去設定 Arduino 的 pin 5、pin 6 的值,以控制兩顆馬達的馬力輸出多少。另外則是設定 pin 10、pin11 和 pin 12、pin 13 兩組的 On、Off 的配對來控制馬達的正反轉。
圖中的做法是利用空白鍵檔煞車,上、下、左、右四個方向鍵則是用來控制前進、後退和左轉、右轉。
煞車
- pin 5, pin 6 值設為 0
- pin 10, 11, 12, 13 設為 Off
- pin 5, pin 6 值設為 255 (自行看要多少,進階版可使用變數)
- pin 10 Off, pin 11 On (右輪正轉)
- pin 12 Off, pin 13 On (左輪正轉)
後退
- pin 5, pin 6 值設為 255 (自行看要多少,進階版可使用變數)
- pin 10 On, pin 11 Off (右輪反轉)
- pin 12 On, pin 13 Off (左輪反轉)
以 Android 來遙控車子
除了用電腦中的 Scratch 來控制車子以外,如果有具藍芽功能的 Android 手機或是平板,另外一種玩法是先進行藍芽的連線,再用 Android Apps 來遙控。下面這個由台中教網開發的 App 還滿好玩的:
我自己也用 MIT App Inventor 2 寫了一個,請參考:
相關文章
- 雄 : Arduino : HC-05 藍芽模組的設定
- 雄 : Arduino : HC-06 藍芽模組的設定
- 雄 : Raspberry PI : 以 Scratch 控制 GPIO
- 雄 : Arduino : 用 Android 遙控藍芽科學魔法車
- 雄 : Android : S4A_Bluetooth 藍芽遙控 App
想請問一下;可以只用電池盒供電嗎?可以的話要如何接呢?
回覆刪除您好:
刪除用電池盒當然可以, 有人會買 6 顆 3 號電池的電池盒來當 Arduino 的電源, 個人因為沒有, 所以直接利用多餘的小型行動電源, 較輕也方便。接法在本篇文章中都有參考圖了。
不好意思 我想請問一下 您電路圖 是什麼程式 設計的? 我用的是 fritzing 不過找不到修改 或是去哪新增元件 無法 有HC-05的藍芽模組
回覆刪除您好:
刪除我也是用 fritzing 拉的圖, 那個 HC-05 是找 SparkFun 裡的 Bluetooth Mate Silver 亂改的, 只是樣子像而已, 如果輸出成電路圖, 應該會出亂子!
好的 謝謝 才剛摸索Arduino 會有很多 基本問題 不好意思喔
回覆刪除馬達部分
回覆刪除想問是用什麼規格的
請參考科學魔法車的網站
刪除http://www.letry.com.tw
我想問S4A裡digtal只有pin13、11、10沒有pin12請問要怎麼加?
回覆刪除咦~ 我的 S4A (1.5) Digital 有 10,11,12,13 可用吔~
刪除如果想增加其它腳位, 除了 S4A 的程式需要改, Arduino 的 firmware 也得配合修改才行, 改法應該類似幫 S4A 加上超音波傳感器的步驟, 有興趣可以參考底下的文章(我沒改過, 您自己試試):
http://www.tr3sdland.com/2013/02/ultrasonidos-s4a-arduino/
請問有辦法讓手機控制車子的前進速度分為快中慢三種?
回覆刪除基本上可以的,硬體的部份,L293D 的 L293D pin 0 和 L293D pin 8 如果是接在 Arduino 有 PWM 的接腳(有標示「~」的),可以送 0~255 來控制電力,也就是您要的速度。當然囉~手機的程式操作界面要加速度控制的部份,而程式要送出相關的指令給 Arduino,Arduino 再做出對應的處理即可。
刪除玩這種東西有趣的地方正是這裡,有什麼想法,試試看便知道可不可以了。
dear all,
回覆刪除請問一下,
可以用手機來控制長距離的無人飛機嗎?
可以的話, 需要什麼硬體和方法呢?
請各位指教!
請問一下,馬達是選用伺服馬達還是一般直流馬達
回覆刪除L293D 是用來控制一般直流馬達的
刪除Se puede hacer eso con linux?.. . que firmware lleva el hc-05?
回覆刪除請問在"Arduino 和馬達的電源分開接"部分,從圖看L293D是使用2顆AA電池供電?
回覆刪除您好:
刪除那只是代表圖而已,魔法車的電池盒用的是四顆電池。
謝謝您的回覆!
回覆刪除所以可以理解成
(1)魔法車電池盒(用4顆電池,1.5Vx4=6V)提供L293D+馬達電源
(2)行動電源(5V)提供 Arduino+HC-05 Bluetooth Module
您好:
刪除依那個架構的話,魔法車電池盒只供電姶兩顆馬達而已。
其它的部份 Arduino , Bluetooth Module , L293D ...... 通通用 5V 的行動電源供電。
謝謝您的回覆!
回覆刪除請問我用的是L293D模組
回覆刪除直接插在UNO板上
還能使用S4A嗎
您好:
刪除我沒有使用L293D模組, 您可能要查一下您的「L293D模組」用到 UNO 哪些腳位, 而 S4A 是使用哪些腳位, 才能知道會不會衝突。
請問改用HC-06接法相同嗎
回覆刪除您好:
刪除HC-06 一樣的接法。
你好,我最近嘗試了您上述的部分設備進行測試,在使用s4a時,連接USB到arduino是沒問題的,可以順利使用,但是當我把usb拔掉,改用藍芽時,s4a都search不到arduino。我是用電腦本身的藍芽連接,有找到HC-05,也確實連接,但是s4a都連不到,想請問有可能是什麼問題?
回覆刪除您好:
刪除S4A 連線時的 baud rate 用 38400, 您要先將 Arduino 端的藍牙模組設定為 38400, 不然會無法連線。
好的,感謝
刪除我會試試看
您好,我想請教一下
回覆刪除我在用S4A無線控制伺服馬達時
按下其中一個執行鈕(空白鍵)後
伺服馬達轉動一些些,然後S4A就當掉了
都不能用任何功能,只能關掉
請問有可能是什麼原因呢?
您好:
刪除因為所給的資料不足, 讓我猜的話, 建議您可能要檢查一下所寫 S4A 的程式是否有邏輯上的錯誤, 例如: 掉入不會再做任何動作的迴圈了。給您一個小建議, 問程式的問題, 沒有程式的畫面, 很難知道您的問題所在的; 哈~不過, 抱歉, 也有可能是個人的功力不足。
因為我是測試,所以程式部分只有一個"當按下空白鍵"接"motor 8 angle 50",不知道這樣會不會有問題,然後我在想有沒有可能是電腦的藍芽訊號的問題?
刪除請問如果腳7 用USB的話要接到哪裡
回覆刪除我的HC-06無法和電腦連線 請問原因可能是甚麼
回覆刪除雄哥,您寫的文章真的太棒了,但我遇到一個小小問題,那就是我單純接線(USB電腦-arduino)時車子可以藉由S4A的軟體做移動控制,但線一拔掉時我發現TX,RX的信號燈都滅了,導致連S4A軟體都搜尋不到arduino板子,敝人是使用筆電,藍芽的部分也做開啟配對好了,那可以請問雄哥關於這點怎麼做解決呢?
回覆刪除您好:
刪除TX/RX 如果不亮,表示您的藍牙被斷電了,可能要先查一下您的藍牙 Vcc 和 GND 接在哪裡? 我是接在 Arduino 的 Vcc 5V 和 GND,如果您和我一樣的接法,TX/RX 沒電了, Arduino 應該也沒電了,這種情形,您就得查一下是怎麼供電給 Arduino 的。
由於不知道您是如何接線的,只能胡亂把脈,希望對您有所幫助。
雄哥,感謝您撥出時間做回覆,但關於Vcc與GND我按照雄哥您供應的配線圖一樣接線並再次檢查確認無誤,然而TX/RX無亮燈,我在此必須補充一下我的板子是LEONARDO的(不知是否有相容問題),至於雄哥您說的若TX/RX沒電,arduinou也同樣沒電,可是我arduino板子是接上行動5V,在電源指示燈部分有亮,baud rate也已設為38400,還有一點,就是我家筆電不管藍芽是否與HC-05做配對TX/RX皆不亮,唯一的差別在於HC-05指示燈亮的速率(配對前一直閃,配對後間隔2秒閃一次),小弟也剛摸索,孤陋寡聞,有勞雄哥再次為我解決疑難雜症,感謝!
刪除家權您好:
刪除我沒用過 LEONARDO , 查了一下, 它的確和我用的 UNO 有不同之處, 它的 TX/RX 應該使用 Serial1 物件來操作(和透過 USB 控制不同), 而不是我用 UNO 程式中的 Serial, 您可能要改一下 Arduino 的程式。
雄哥:我是初心者,看了一下文章,跟科學魔法車官方那,我的車子接在左邊一個電池或兩個電池沒有反應,接三個那邊才有動作,請問是左邊那邊壞掉了嗎? 請問一下如果我用SSR(固態繼電器)能否一樣控制前後作動呢~官方用的繼電器我看不懂是哪種,方便給個意見嗎?
回覆刪除您好:
刪除所謂的有沒有反應要看您接什麼東西, 如果您是要接 Arduino ,因為它標準是使用 5V, 所以至少要接三顆 1.5 x 3 = 4.5 才行。我的示意圖因為當時找不到三顆電池的電池盒圖片才用兩顆的代替, 實際應用一定要自己算一下電壓, 小則不動, 過大則會燒了零件的。
謝謝雄哥,那如果馬達用一顆電池1.5V+大螺釘或者兩顆1.5V電池沒動的話是否就是兩顆那邊電池盒線路的問題呢?
刪除您好:
刪除科學魔法車兩顆電池的電池盒有個開關, 您有扳過去嗎? 開關如果沒開, 就會變成斷路。另外, 如果您有電表, 可以量一下電壓電池接出來的電壓有多少。
您好雄哥"
回覆刪除如果要改接ESP8266 只是把HT-05換掉就好了嗎?
您好:
刪除我沒有實作過, 不過應該是可以用 ESP8266 代替 HC-05 的通訊角色。
你好,我想請問一下
回覆刪除這是我上傳到板子時跑出的訊息
這是什麼意思?
avrdude: ser_open(): can't open device "\\.\COM1": 系統找不到指定的檔案。
您好:
刪除看起來應該是在 upload 前忘了設定板子在哪一個 srial port, 建議您請先確認一下 Arduino upload 的程序, 是否哪個步驟沒完成?
您好我想請問一下假如我是用esp8266的wifi模組但怎麼試都無法在s4a上找到我的arduino板子,請問是用編輯裡的join mesh嗎?
回覆刪除我玩過的S4A 只會去搜尋序列埠來進行通訊,不知您的 ESP8266 是以 serial port 和電腦通訊嗎? 還是現在的 S4A 已支援 wifi 通訊的方式了?
刪除非常感謝老師回答問題
刪除那應該是我自己搞錯了我以為可以直接連
看來是還沒支援WIFI不然就是需要別的東西我是單純將ESP8266連到ARDUINO
不好意思那我想在請問一下
刪除假如HC05換成是GROVE BLE V1.0的低功號藍芽模組可以嗎?
您好:
刪除雖然我用過的 BLE 模組和您說的型號不同 , 不過, 只要把握一個原則:
電腦能和模組連線,並在電腦上建立一個 serial port ,讓 S4A可以抓得到。
這樣應該都可以。
使用 serial port ,而且必須用 38400 的 baud rate 連線是 S4A 的基本限制, 如果想突破限制,使用別的連線方式或連線速度,只能考慮用別的軟體。
可以請問有arduino的程式碼嗎
回覆刪除雄老師你好:
回覆刪除我看了你的 S4A藍芽無線遙控科學魔法車,當我在藍芽使用上一樣使用hc-05,但我的問題是當我配對上時,卻沒有辦法連線,當我USB連接阜還接在電腦上時,可以操控,一但拔除S4A就斷開,這樣我的藍芽應該是沒有連線吧
Terry 您好,
回覆刪除好久沒玩了,
1. 印象中 USB 和 HC-05 二選一, 不能同時連線
2. HC-05 的 baud rate 必須設為38400, 這部份一定要確定
3. 如果前兩項都確定沒問題, TX , RX 接腳交換看看