相關文章

70adcb7f57c984004b5d32f718b73ab6 你曾經想要擁有一部無線遙控車嗎?如果能夠再裝上攝影機可以讓你利用手機或電腦就可以遠端實境影像遙控那就更棒了,今天我們就來介紹一下Motoduino Lab.(慧手科技) 利用Intel Edison for Arduino實作的Intel Edison Wi-Fi 無線遙控攝影車,讓你可以利用簡單的網路瀏覽器在手機、平板或電腦上都可以透過Wi-Fi連線看到車子傳送的影像,並遙控車子行駛的方向,讓車子搖身一變成為任憑差遣的迷你SNG車!

Intel Edison 是Intel 針對物聯網與穿戴裝置應用推出的開發板,內含以 Intel Atom 為基礎的 500MHz 雙核心處理器,1 個單核心的微控制器 MCU 能夠收集和預先處理資料。

  • Intel Atom 500MHz
  • Intel Quark MCU 100MHz
  • 1 GB RAM & 4 GB Flash
  • Bluetooth 4.0
  • 雙頻WiFi 802.11 a/b/g/n
  • 40 GPIO

另外,配合Edison module,Intel 還提供二種擴充板:

1. Intel Edison Breakout Board Kit (參考: 什麼是 Intel Edison?)

 

2. Intel Edison Kit for Arduino (參考: 什麼是 Intel Edison?):

可和Arduino相容完整的擴充板套件,提供Maker熟悉的Arduino開發環境外,也可支援 Eclipse、Wyliodrin,和 Intel 自己的 XDK。程式語言則是支援 C/C++、Python、Node.js/Javascript。

Edison Kit for Arduino 內含:

  • 20個 數位 IO pin(包括4 pins PWM)
  • 6個 類比 IO pin
  • 1個 UART (Rx/Tx)
  • 1個 I2C 和 SPI
  • 2 Micro USB device connectors
  • SD Card connector
  • USB Host
  • DC power jack (7V~15V)

雖然Edison 功能強大,又是架構在Yocto Linux OS運作,為了降低製作門檻,本實作選用了Edison Kit for Arduino (以下簡稱Edison Arduino板)為開發製作的環境,這樣我們可以很方便就找到適合Arduino遙控車用的L298P馬達驅動擴充板(motor shield),安裝在Edison Arduino板 . 程式開發也可以在maker較熟悉的Arduino IDE開發環境來開發。遙控車車體則以市面上較容易買到的車架,直流馬達,車輪,自行DIY組裝。攝影鏡頭則是採用3C產品中極為普遍的Logitech C310 或C170 USB網路攝影機,你也可以換成別的高解析度的網路攝影機,唯要注意需符合UVC (USB Video Class)規格的web camera。

步驟一: 準備材料

下列為本實作之材料清單:

  1. Intel Edison Kit for Arduino
  2. 自走車車體(含馬達, 車輪, 車底板, 螺絲, 萬向輪, 起子, 4x 1.5V電池盒)
  3. L298P 馬達驅動擴充板
  4. Logitech C310 或C170 USB網路攝影機
  5. 9V電池盒
  6. 9V電池
  7. 4x 1.5V電池
  8. 塑膠六角柱,螺絲
  9. 9V/1A 電源供應器
  10. Micro USB - USB 線 2條

選配

  1. USB 2.0 Hub
  2. Wi-Fi AP Router
  3. 紅外線感測模組 (紅外線循跡車用)

步驟二: Intel Edison Kit for Arduino 板子安裝設定

首先,先將Edison Module 和Edison Kit for Arduino 板子取出,將Edison Module插於Edison Kit for Arduino 板子上,並鎖上螺絲,如下列照片。

  

 

Intel Edison for Arduino板子配置如下:

相較於Arduino UNO有6個PWM輸出, Edison 只有4個PWM輸出,因此Edison Arduino 板子上提供了PWM swizzle Jumper,讓我們可以將4個PWM輸出設定為想要使用的相對映的4個Arduino UNO的4個PWM輸出。Edison Arduino 板子出廠時PWM 輸出設定在Arduino 的(數位Pin 3,5,6,9),  但是我們使用的馬達驅動擴充板(L298P Shield)必須使用(數位Pin 10, 11)做為PWM的控制輸出,因此必須將Edison Arduino 板子上的跳線帽(Jumper)調整為(數位Pin 3,5,10,11),如下列圖片所示。程式中也必須執行setPwmSwizzler(3,5,10,11),PWM才能正確運作。


▲原預設PWM Swizzle Jumper(3,5,6,9)設定


▲改為PWM Swizzler (3,5,10, 11) Jumper設定


L298P 馬達驅動擴充板設定:

接著,要設定L298P 馬達驅動擴充板(如下圖),為了供應足夠電力,遙控車的馬達必須使用外部電源供電,馬達驅動板上的外部電源Jumper要拔除,然後將擴充板插到Edison Arduino 板子上的Arduino 擴充槽。我們會利用板子上的D10, D11, PWM輸出, 控制車子馬達轉速,D12, D13控制2個馬達的前進,後退的轉動方向。  

步驟三: Intel Edison for Arduino 軟體安裝設定

Edison的驅動軟體安裝步驟較為複雜且耗時,雖然Intel 網站有Intel Edison Get Started Guide (https://software.intel.com/en-us/iot/library/edison-getting-started), 或是簡體中文的 “Intel Edison 技术入门” 有”入門指南” (https://software.intel.com/zh-cn/iot/library/edison-getting-started), 引導你下載"iotdk_win_installer_xxxx.x.xx.exe",一步一步安裝Edison 軟體與驅動程式以及Edison IoT XDK開發環境,但是以筆者經驗,按照此步驟,整個Windows版本軟體安裝完成大約要1.5~2小時(包含下載時間)。

為了節省時間,你也可以直接下載下列軟體手動安裝,

1. Edison Driver

先到https://software.intel.com/en-us/iot/hardware/edison/downloads 下載Windows Standalone Driver 1.2.1 , 將Edison Arduino 板接上電源,USB 插座旁的switch往microUSB接頭方向撥,將microUSB 線接到Edison Arduino板子上的microUSB接頭(如圖示),另一端接PC後,即可安裝下載的Edison Driver, 執行“IntelEdisonDriverSetup1.2.1.exe”,按照畫面步驟指示,即可順利安裝Edison 驅動程式。

安裝成功後,Windows 裝置管理員的畫面會顯示出Edison的驅動裝置,如下畫面

同時,在Windows 的檔案總管「電腦」可以看到「Edison (F:)」硬碟(你的電腦不一定是F:).


2. 下載Edison Firmware Image

https://software.intel.com/en-us/iot/hardware/edison/downloads 下載Edison Yocto Linux image Release 2.1 Yocto* complete image

經過筆者公司團隊測試後,發現此最新版本Image 執行後,Arduino 程式上傳至Edison,無法正確寫入Edison的Flash,所以每次Edison 重新開機,必須要重新上傳Arduino 程式,才能執行Arduino 程式。因此,本實作是安裝前一版本的Edison Release 1.6.1 firmware Image, Arduino程式才可以正確寫入Edison Flash. 建議各位可以自行下載此版本。將下載的Image 檔解壓縮後,所有的檔案複製到Edison 的硬碟,如下圖。


3. 下載安裝FTDI driver

Edison console終端機(Serial terminal) 用的驅動程式.可以到FTDI 網站http://www.ftdichip.com/Drivers/D2XX.htm下載最新FTDI D2xx驅動程式CDM v2.12.06 WHQL Certified.exe. 將另一條microUSB 線插入Edison Arduino 板子的第二個microUSB 連接器, 另一端則插入電腦的另一個USB port(如下圖), 此連接器為Edison的Linux控制終端埠(Edison console). 接好後執行CDM v2.12.06 WHQL Certified.exe 安裝FTDI 驅動程式,裝置管理員的畫面會新增了”USB Serial Port(COMx)” 的Edison Console驅動裝置. Edison Linux 指令操作都經由此console 埠輸入或輸出。

4. Putty 終端機通訊程式

下載Putty (http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) 或其他Serial 通訊程式,  直接點擊putty.exe, 即可執行,出現PuTTY設定畫面如下圖,先在Connection Type選擇 「Serial」,再於Serial line 輸入前一步驟FTDI 驅動程式安裝的「USB Serial Port(COMx)」,如上圖的Edison Console為COM7, 即下圖的COM12改為COM7. 最後 Speed 要設為「115200」。

設定好後,按「Open」, 開啟Serial 連線。顯示空白畫面,按「Enter」會出現以下Edison login畫面。輸入「root」, 「Enter」, 登入Edison。

5. 更新Edison Firmware Image

Edison進入到Linux命令列, 必須先更新Edison Firmware Image, 將下載的Image燒錄到Flash. 雖然Intel 建議下載安裝Flash Tool Lite, (https://software.intel.com/en-us/get-started-edison-windows-32-step4) , 並提供詳細步驟(https://software.intel.com/en-us/get-started-edison-windows-32-step5) 利用Flash Tool Lite燒錄Flash, 不過筆者常常無法燒錄成功。因此,筆者建議進入到Edison Linux命令列, 輸入指令

# reboot ota

可以重新開機並將存放在”Edison”硬碟的Image直接燒錄到Flash。

步驟四: Edison Wi-Fi 連線設定

Edison 內建Wi-Fi,開機後,可以設定Edison的Wi-Fi與你的無線網路AP連線,輸入:

# configure_edison –wifi

系統會搜尋可連線的AP, 輸入要選擇連線的AP代號後,以及AP的密系統開始連線,連線成功,可以看到AP分配給Edison 的IP位址(下圖中IP:192.168.1.6),請將此IP位址記錄起來,後面操作時還會用到。

步驟五: Enable SSH Access on All Interface

Edison 系統Image 將SSH遠端連線伺服器出廠設定為只限定固定的連線IP,為了讓所有網路介面連線都可連上SSH 伺服器,我們可以暫時開啟SSH安全連線設定,必須修改/lib/systemd/system/sshd.socket 檔案,在BindToDevice=usb0 前面加上 #

# vi /lib/systemd/system/sshd.socket   (用vi修改編輯)

改好後重新開機

# reboot

步驟六: 安裝Arduino IDE

首先到Arduino網站https://www.arduino.cc/en/Main/Software下載最新的Arduino IDE開發環境Arduino 1.6.5軟體,選擇「Windows Installer」 不要選擇「Windows ZIP file for non admin install」。如果PC已經安裝過舊版Arduino則安裝過程會先移除舊版Arduino然後再安裝新版的Arduino IDE。

步驟七: 建立HTTP Video Server

接下來要在Edison建立HTTP server,除了原預設的port 80, 為Edison local HTTP server, 本實作增加了 Port 8080 做為攝影機的video server, Arduino IDE 則利用Port 8999 做為遙控車Webcam server. 

1. 打開 /etc/opkg/base-feeds.conf  加入底下三行:

src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

2. 輸入下列指令:

# cd /etc/opkg
# opkg update
# opkg install git
# cd /
# git clone https://github.com/drejkim/edi-cam.git

3. 安裝 ffmpeg

用來對攝影機影像,視訊格式轉換, 及視訊串流等功能。目前用的Edison Linux 已經有內建網路攝影機UVC 驅動程式,不用再安裝UVC driver, 只需安裝ffmpeg 即可。

# cd /edi-cam/bin
# ./install_ffmpeg.sh

4. 安裝Node.js

# cd /edi-cam/web/server
# npm install


5. 啟動Camera Video Server前置作業,修改index.html

打開/edi-cam/web/client/index.html, 修改檔案中的wsurl的預設網址或IP 位址,

var wsUrl = 'ws://myedison.local:8084/';

改成(以步驟四Wi-Fi設定為例,IP:192.168.1.6, URL: http://edison.local)

var wsUrl = 'ws://192.168.1.6:8084/';

或是

var wsUrl = 'ws://edison.local:8084/';


6. 攝影機安裝:

 

  1. 先將外部電源接上Edison板子的DC Jack上,移除 Micro USB線(SW1旁邊).
  2. 撥動SW1 開關到 USB host 端
  3. 插上攝影機USB插頭
  4. 確認系統偵測到Camera ,輸入下列指令, 可以成功偵測到Logitech device.

 

# lsusb


7. 啟動Camera Video Server: 輸入下列指令:

# cd /edi-cam/web/server/
# node server.js

這時候 Node.js server 已經啟動,


8. 測試攝影機: 打開瀏覽器,輸入IP 網址,這時候你就可以看到攝影機的影像了。

http://192.168.1.6:8080


步驟八: Arduino遙控攝影車程式修改啟動

最後階段,我們利用Arduino IDE 開發程式來建立 Wi-Fi連線,以及Node.js server 透過WebSockets 與網路瀏覽器(web browser) 雙向溝通, 控制自走車行駛外,也將攝影機的視訊影像傳送到瀏覽器,做為遠端監控功能。

啟用Arduino IDE 前,注意在Edison Arduino板子

 

  1. 撥動SW1 開關到 Micro USB 端
  2. 插上Micro USB 線
  3. 開啟 Arduino IDE
  4. 確認有偵測到COM Port

 

5. 有興趣讀者可以到Motoduino 網站(www.motoduino.com) 或 http://www.motoduino.com/download-english/category/8-intel-edison/ 下載Edison Robot car Arduino sketch程式「MyEdisonRobot.zip」。 

解壓縮後開啟 MyEdisonRobot.ino, 修改程式中的Wi-Fi AP router 的ssid, 及 password (pass[]). 以及IP 位址,如下圖。


6. 修改後,將程式上傳至Edison Arduino板子上。

7. 測試遙控車功能

打開瀏覽器,輸入下列你的Edison IP網址,將會出現遙控畫面,如本範例:

http://192.168.1.6:8999


在畫面上,先按「CONNECT」連線上了後,可以操控遙控車前進、後退、左轉、右轉,方向控制,記得,停止控制時需按「DISCONNECT」,才能交出遙控控制權,別人才能遙控。

8. 啟動影像伺服器:接上攝影機

 

  1. 移除 Micro USB (SW1旁邊),移除前確認板子上 DC Jack外部電源
  2. 撥動SW1 開關到 USB host 端
  3. 插上攝影機USB插頭
  4. 確認系統偵測到Camera,  輸入

 

# lsusb

9. 啟動Camera Video Server

跟步驟 七操作過的啟動Camera Video Server 一樣,輸入:

# cd /edi-cam/web/server/
# node server.js

10.  Edison Wi-Fi無線攝影遙控車完成

打開瀏覽器,輸入IP 網址,這時候你就可以看到Wi-Fi遙控攝影機的影像畫面了。

http://192.168.1.6:8999


遙控時,在畫面上,先按「CONNECT」連線上了後,可以操控遙控車前進、後退、左轉、右轉,方向控制,這時候影像會即時傳回你的瀏覽器畫面。

記得,停止遙控時需按「DISCONNECT」,才能交出遙控控制權,別人才能遙控。但是,你還是可以看得到攝影機的影像喔。

結語

我們終於完成了Edison Wi-Fi無線攝影遙控車實作了,相關程式與補充資料,可以到本公司網站下載區或http://www.motoduino.com/download-english/category/8-intel-edison/ 下載。

本實作只是一個使用Edison Arduino無線攝影遙控車的起步,還可以再加上錄影與音訊的接收傳送,也可以衍生到機器人與無人飛行器的遙控。利用Edison強大功能,我們後續也還會進行 Edison IoT 的開發與實作,敬請期待。 也特別感謝 Intel 與T客邦的支持與信任,讓我們在不到2個月完成了本實作與教學課程。如有任何問題與建議、想法,歡迎與Motoduino Lab. (慧手科技)聯絡,也歡迎不吝指教。

使用 Facebook 留言

發表回應

謹慎發言,尊重彼此。按此展開留言規則