2016年10月21日 星期五

OPENCV(2)--Capture Video from Camera


    這篇介紹如何透過OPENCV 開啟電腦上的Webcam 擷取影像並做灰階化後及時同步顯示影像. 
     video可以看成是一段時間內幾十張單一影像的連續呈現,如30FPS(Frames per second) 就是每秒30張影像,因為人眼視覺暫留的作用,所以在我們看起來它就變成了動畫.所以camera擷取進的影像也是一張一張的圖片,而我們也可以直接對這一張張的影像圖片連續做處裡如灰階化.所以在OPENCV處理video的影像跟單一張圖片的影像並沒有區別.
     底下圖(1) 左邊即為webcam讀取的原始影像,右邊為灰階化後的即時影像

<圖1>



從程式碼中觀看,frame即為從webcam 讀取的單張影像,而只要連續對讀取的frame做處理即可
顯示即時處理後的影像結果.當然電腦的CPU/GPU處理的速度,會直接影響處理效率.
一般使用預設的的640x480 來做處理即可,即使未來對影像特徵值得處理也不需太高解析度的影像,甚至更小解析度32x32 就夠了.

     要在OPENCV裡使用Webcam 只要底下一行程式即可
     預設電腦的webcam 代號0
     cap = cv2.VideoCapture(0)

2016年10月19日 星期三

OPENCV(1 )--How to install OPENCV in Python


   This page show how to install OPENCV in Python.

A.In windows
1.先下載及安裝Python 2.7 or 3.x
       https://www.python.org/downloads/

      雖然很多人還是愛用python2.7版,但是我還是建議安裝Python3.x 版
      安裝時記得將底下add python 3.5 to path 打勾,至於安路徑目錄可以自行修改到
     任一磁碟都可以.




安裝好之後,直接開啟Dos 命令視窗.直接打python  按Enter ,應該會出現如下畫面
表示python 安裝成功,



2016年9月24日 星期六

使用中文語音下令機器人去控制家裡的電燈



      使用中文語音下達指令給機器人,讓機器人去控制家裡的電燈.
原本的範例也可以直接利用手機平板或是電腦直接做控制家裡的電燈,這次利用
Google語音辨識的功能,讓機器人去完成該指令動作,一來是省去了必須另外打開手機電腦
的麻煩,二來是讓機器人比較像是家裡一份子的感覺. 是機器人與物聯網概念的結合,其運用也可以用在其他家電如電視,電風扇,冷氣,電子鎖等等.

<圖一>系統概念圖


<圖二>阿布拉機機器人



<圖三>辨識語音輸出文字



影片DEMO:

2016年9月11日 星期日

ESP8266 WIFI(6) -Using Python to control LED ON/OFF




這篇介紹如何用Python 語言透過ESP8266 Wifi連線去控制Arduino 端的LED.

<圖一概念圖>





<圖二> 下圖是Python GUI 程式執行時,及Arduino 端LED實際運作狀態.
              當按下分別對應的LED按鈕後,LED即會 ON/OFF 動作. 



2016年9月2日 星期五

ESP8266 WIFI(5) -Set LED ON/OFF from WEB browser


 這篇文章介紹如何在瀏覽器透過ESP8266 wifi連線控制Arduino上的LED 開關.


<圖1>概念圖,非完整接線圖


<圖2>實際工作狀態



首先請先參閱之前的ESP8266介紹完成基本接線及測試,

ESP8266 Wifi (1)---Connected with PC.

http://arbu00.blogspot.tw/2015/12/esp8266-wifi-1-connected-with-pc.html
ESP8266 WIFI(2) -update firmware and modify baud rate.

2016年7月29日 星期五

使用Python透過Bluetooth與Arduino連結


        這篇文章示範如何使用Python透過Bluetooth跟Arduino連結.並使用Python建立出來的圖形介面來控制Arduino上LED 的ON/OFF.
 底下實驗概念接線圖

   Python 因為是跨平台的程式語言所以也執行在windows或是Linux,底下範例是直接使用一般電腦及windows 10去做示範.Python原始程式碼只要稍微修改一下也可以改成使用在安裝Linux的系統上,如樹梅派.


底下是之前USB2Serial範例的介紹連結:
http://arbu00.blogspot.tw/2016/07/pythonarduinoled.html




    底下所建立出來的圖形介面如下圖所示,
當按下按鈕<check>去跟Arduino確認是否已經連線成功.
按下按鈕<ButtonA>則會傳送字元'a' 到arduino當指令去啟動LED跑馬燈1
按下按鈕<ButtonB>則會傳送字元'b' 到arduino當指令去啟動LED跑馬燈2
按下按鈕<ButtonC>則會傳送字元'c' 到arduino當指令去啟動LED閃燈的動作.
按下按鈕<Exit>則會傳送'ESC' 鍵字元到arduino當指令去結束視窗跟所有動作.
當成是執行時必須先按下<Check>Button 再reset Arduino才能順執行以確保連線成功.
 


底下圖示當按下Button A 時會傳字元'a' 到Arduino,即可進行跑馬燈動作.
 




2016年7月26日 星期二

使用python與arduino連接控制LED之GUI圖形介面


        這篇文章示範如何使用Python跟Arduino連結.並使用Python建立出來的圖形介面來控制
Arduino上LED 的ON/OFF.

底下是第一個範例的介紹連結:
http://arbu00.blogspot.tw/2016/07/pythonarduinoled.html

    所建立出來的圖形介面如下圖所示,按下按鈕<Connect>去跟Arduino確認是否連線成功.
按下按鈕<ButtonA>則會傳送字元'a' 到arduino當指令去啟動LED跑馬燈1
按下按鈕<ButtonB>則會傳送字元'b' 到arduino當指令去啟動LED跑馬燈2
按下按鈕<ButtonC>則會傳送字元'c' 到arduino當指令去啟動LED閃燈的動作.
按下按鈕<Exit>則會傳送'ESC'鍵 字元到arduino當指令去結束視窗跟所有動作.
 




有關這個範例的實際示範及詳細的說明可以觀看底下的影片教學.




2016年7月21日 星期四

使用python與arduino連接控制LED


        這篇文章示範如何使用Python跟Arduino連結.並簡單的控制LED ON/OFF.
由於Python 是跨平台的程式語言所以可以安裝在一般電腦的windows上,也可以安裝在
使用Linux的系統如樹梅派.
   
         底下的範例程式是在一般的電腦windows 裡執行Python程式.
使用這樣的連結的好處在於分工,例如我們可以把影像識別或是語音識別建立在執行速度比較快的CPU上,如一般PC或是樹梅派,而把一些如機械手臂的動作或是資料感測建立在arduino端,透過Python 的套件Pyserial 就可以從Python端下自訂的文字命令去控制Arduino ,或是得到從Arduino端回傳過來的一些感測器數值資料.

        為什麼選擇Python?因為Python 語法簡單易學但是功能強大,並且世界上網路上都有開源的
原始碼可以參考.例如之前建立的OPENCV 做影像識別或是語音辨識都可以透過Python做到
,而只要再透過Pyserial 就可以控制Arduino做出如機器人方面的應用.
     
          而Python本身也有支援強大的網路功能,所以要做到IOT物聯網的功能,如從Arduino端得到感測器的資料再透過Python傳到網路伺服器或是從網路端得到指令透過Python傳給Arduino作一些控制也都是可以的.

       Python的功能還不只如此對於統計或是科學方面上的應用也是支援很多的套件可以使用,可以說Python 是功能全面性的程式語言但是又不如C++那樣複雜難懂.最主要的是網路幾乎都可以找到你想要的範例程式碼而且都是開源免費的.






有關這個範例的實際示範及詳細的說明可以觀看底下的影片教學.




2016年7月16日 星期六

Make Electric current stick game by Arduino (使用Arduino製作電流急急棒)


    這是用Arduino 自製的電流急急棒範例.
其實我主要是想要測試智能串口HMI 顯示屏的功能,剛好小朋友的媽媽有學校園遊會的活動
於是應老婆大人要求做了這個小專案.


<前面> 螢幕為一HMI panel 型號為TJC4832T035_011R.綠色阻礙棒子接在一顆MG 90伺服馬達上,當開始計時時,馬達會每隔3秒揮動一次,另外也可以在綠色棒子上再貼上鋁箔,並把鋁箔連接上路徑鋁箔,當急急棒碰觸時一樣可以做到導電失敗.


主要功能及製作說明:
1.有兩隻粗細不同的棒子可以選擇,原因是怕小朋友很難過關所以原本是用3DP印出一
   直徑1.5CM 的棒子,測試過覺得難度太高,所以又增加了一隻用竹筷的細棒子.

2.路徑寬度原本是規劃2.5CM ,但是由於木板不好切割所以不是很均勻,建議用瓦楞板或是
厚紙箱做地圖即可,然後在路徑上可以貼上會導電的烤箱用的鋁箔,我在鋁箔有貼上銅箔膠帶
當固定膠帶,銅箔膠帶電子材料行買的到,但是一捲要好幾百(不至於全部用完),只是用來固定鋁箔.我之前就有買了這次剛好可以用到.

3.左側為一起始紅外線感測器,右端為一終點紅外線感測器,這個感測器跟用來做尋跡車用的紅外線感測器是一樣的,當棒子經過感測器左端上方即會自動開始計時,在時限60秒內,棒子沒碰觸到即可過關.當棒子經過右端終點感測器時會自動感應.

4.中途有架設一伺服馬達接上一綠色棒子當阻礙,每隔3秒會揮動一次,當然時間是由程式控制,可以自行改成是改變時間.

5.使用一串口HMI 的觸控panel當顯示,基本上主用是用來顯示狀態及倒數計時,可以參考下面實際圖片的說明. ㄧ般來說要顯示數字也可以用七節顯示器來做,所以這個顯示屏並非必要也可以用七節顯示器替代,不過我提供的Arduino source code 只有我使用的HMI 處屏的code,如果用七節顯示器則這部分的code就要自行修改.

    PS.這個HMI觸屏為一USART傳輸可控制的螢幕,透過簡單的UART跟Arduino連線
  可以透過文字指令跟這個觸屏作互動切換顯示.事先在HMI 觸屏提供的控件軟體編輯好
切換畫面或是按鈕或是文字欄,再透過UART序列傳輸指令即可以跟Arduino作互動.
  可以在掏寶上搜尋 "hmi觸摸屏"即可找到相關產品,至於使用方式,通常賣家都會提供資料.

2016年7月9日 星期六

My Robot ,Arbu_Lucky, feet parts.(阿布拉機機器人_雙足)



This page share  feet parts of My Robot < ArbuLucky>.

You can download 3DP parts fromm below website:
http://www.thingiverse.com/thing:1665399

   The 3DP element "Pillar.stl" defaul lengh is 60mm .you need to resize by youself.
Just use the slice AP like as Cura can easy to change the lengh.