2016/11/19

123Duino:開箱介紹

有幸早一步拿到123Duino這片板子的試用品,趕緊來嘗鮮。

123Duino目前正在flyingV群眾募資,打出的口號是「程式設計學習平台」,強調即插、即寫、即用。結束時間是在2016/12/29 23:59,有興趣的人,務必前往贊助,鼓勵新創專案。

板子的正面照,小小的,約7.5 x 3公分而已。
板子的背面照,咦,怎麼有顆鋰電池,而且板子正面有個開關,待我一撥...
哇,通電開機囉,板子正面的OLED顯示著溫度與濕度。
板子上不只有溫溼度感測器和OLED顯示器,其右邊是個RGB LED以及蜂鳴器,另外有加速度與多軸感測器,以及光敏電阻。
我拿到板子,預設已經燒錄測試所有功能的程式,會先顯示溫溼度,讓RGB LED以紅、綠、藍順序閃爍發光。
接著會以蜂鳴器發出一小段音樂。

然後是加速度與多軸感測器。
光敏電阻感測光強度。
最後畫面出現Press the right or left key,可按下板子左右兩邊的按鈕,可控制RGB LED發光。
嘿,這可是相容於Arduino的板子啊,接下來,讓我試著燒錄其他程式吧。

我的環境是Windows 10,Arduino IDE 1.6.12 。

插入電腦,咦,怎麼沒要求安裝驅動程式呢,嗯,123Duino採用ATmega32U4,而我之前應該已用過同一顆微控制器板子,所以已經安裝了,若你需要詳細步驟的話,請參看這篇文章

開啟Arduino IDE,從選單「工具-板子」選擇「LilyPad Arduino USB」。123Duino與這塊板子完全相容,因為此時開發團隊尚未準備好板子的相關組態定義,以後應該會有名為123Duino的設定可選。
然後,從選單「工具-序列埠」選擇正確的序列埠,你的埠號不一定跟我一樣。
開發團隊給了我一堆範例程式,開啟其中的Blink_RGB_LED,編譯燒錄,哈哈,成功讓LED按照紅綠藍順序發光囉。

嗯,至此算是告一段落,最後讓我燒錄Test_All,也就是板子原本的程式功能。

咦,怎麼出現錯誤訊息啊,哦,因為123Duino需要許多程式庫,而我尚未安裝;一個一個解決吧。首先到選單「草稿碼-匯入程式庫-管理程式庫...」開啟程式庫管理員,尋找Adafruit_SHT31_Library、Adafruit_GFX_Library、Adafruit_SSD1306,一一安裝。

Adafruit_SHT31_Library,溫溼度感測器的程式庫。
Adafruit_GFX_Library,繪圖程式庫。
Adafruit_SSD1306,OLED程式庫。
另外還有兩個程式庫,需要自已手動下載安裝。請到https://github.com/jrowberg/i2cdevlib,整個打包下載後,在子目錄Arduino裏頭有兩個子目錄I2Cdev與MPU6050,整個搬移到Arduino IDE存放程式庫的地方,也就是草稿碼簿(sketchbook)的子目錄libraries哩,如此即可。

然後再試著編譯,出現如下的錯誤訊息:
#error("Height incorrect, please fix Adafruit_SSD1306.h!");

哇哩咧,搞什麼啊,嗯,因為123Duino的OLED尺寸的高度是64像素,而Adafruit_SSD1306程式庫預設設定為32像素,所以要修改Adafruit_SSD1306.h,改成如下的樣子:
   #define SSD1306_128_64
//   #define SSD1306_128_32
//   #define SSD1306_96_16


耶,成功了,把測試全部功能的程式碼,燒錄回去囉。

最後再提醒各位,123Duino目前正在flyingV群眾募資,將於2016/12/29 23:59結束,有興趣的人,務必前往贊助,鼓勵新創專案。

2016/11/18

台灣樹莓派Raspberry Pi 工作坊【寵物小車】製作過程摘要記錄

我曾在MakerConf 2016,到台灣樹莓派sosorry開設的【寵物小車】工作坊幫忙擔任助教,底下摘要紀錄從零件材料到成品的製作過程。

此工作坊需花費8小時,課程內容包含Raspberry Pi環境設定、序列埠連接與無線網路設定、GPIO初步入門、H橋電路與馬達驅動、輪子與車體組裝、相機模組與OpenCV影像辨識、Linux開機流程。

若對此工作坊有興趣,想要請台灣樹莓派sosorry開課,或有任何合作機會,請到台灣樹莓派sosorry的網站留言

最終目標是建構具有眼睛(相機)的二輪電動車,搭配OpenCV程式進行影像辨識,讓牠能追逐某顏色的物體,如紅色小球,看看展示影片吧。
所需材料如下圖:

材料清單:
  1. 車體底板,兩個直流馬達與兩個輪子,一個萬向輪,螺絲螺帽與其他組裝零件。
  2. L298N直流馬達控制板。
  3. 相機模組。
  4. 麵包板。
  5. 1KΩ 電阻(1/4W)。 
  6. 1N4004 二極體。 
  7. 10KΩ可變電阻。 
  8. TIP120 電晶體。 
  9. LED。 
  10. 架高螺絲組(螺絲母x4 + 塑膠架高螺絲 x4 + 圓頭螺絲 x4)。 
  11. 公對母跳線(20cm)x2、母對母跳線(20cm)x4。
另外還需要Raspberry Pi 3板子、microSD記憶卡(建議16 GB)、PL2303HXD USB轉TTL序列傳輸線(若無額外準備螢幕鍵盤滑鼠的話)。 

教學投影片可到slideshare觀看範例程式可到GitHub下載

首先下載Raspbian( 我下載的是Raspbian Jessie with PIXEL 2016-09-23),大小約1.52 GB,解壓縮後得到約4.35 GB的映像檔,燒錄到記憶卡,然後開機,進行第一次啟動的相關設定(此處不詳細介紹)。

然後更新既有套件:
$ sudo apt-get update
$ sudo apt-get upgrade -y

安裝寵物小車所需套件:
$ sudo apt-get install -y python-dev python-opencv python-pip
$ sudo pip install readchar bottle

因為之後要撰寫Python程式,所以需要python-dev,以及透過python-opencv使用OpenCV,至於python-pip則是Python自己的套件管理系統,以之安裝readchar與bottle,後者是輕量型Python網站開發框架,之後可經由網頁介面監控寵物小車。

工作坊內容還包括電子零件簡單介紹(LED、電阻、可變電阻、麵包板、電晶體等)、PWM概念、Raspberry Pi的GPIO腳位、Python程式語言初步入門(控制GPIO)、馬達驅動概念與H橋電路等等,底下直接跳到車體組裝。

組裝時,我用了底下的工具,十字螺絲起子,斜嘴鉗。有時要用斜嘴鉗夾住螺絲或螺帽,才能鎖緊。
拿出底板,以及一個馬達需要的固定零件。
撕掉保護膜。
組裝後的模樣。
另一顆馬達依樣畫葫蘆。
兩個馬達安裝完畢。
拿出萬向輪,與所需螺絲。
先是輪子部分。
然後固定到車體底板。
輪子也可裝上。
拿出L298N馬達驅動模組。
先鎖上部分螺絲。
然後固定到底板,並且連接馬達線路到驅動模組的螺絲端子。
從車底看過去的樣子。

電路圖如下,此時只需要看馬達與驅動模組之間的線路。
rpi的GPIO腳位圖如下,小心別接錯了。
電池盒與固定螺絲。
固定到底板上,並連接到驅動模組,此處電池負責給馬達。
另準備行動電源,供應5V電壓給rpi板子。
Rasoberry Pi板子與需要的螺絲。
固定到車體底板上,我只鎖了一組,因為沒有適合的孔洞,可自行鑽孔。
回頭看電路圖,連接rpi板子與馬達驅動模組之間的線路。
拿出相機模組。
安裝相機模組,排線藍色那面朝著乙太網路孔,排線看得到金屬接腳的那面,朝向HDMI埠。
硬體線路完成後,從GitHub下載範例程式

程式pi-follower-car/02-motor/02_4-move_car,可測試馬達線路,執行後,w代表前進、s後退、a左轉、d右轉。

執行raspi-config,到「5 Enable Camera」啟動相機模組;並到7 Advanced Options - A3 Memory Split」設定分配給GPU的記憶體,應大於128以上,建議256或512。

試著使用指令raspistill指令拍照,把圖檔傳回電腦觀看;可使用WinSCP來傳輸。
但那樣太麻煩了,若想要rpi上的GUI軟體畫面、傳送到Windows上顯示,需先安裝Xming(Xming X Server for Windows),啟動後可在工作列上看到如下圖示:
然後啟動SSH連線時,要開啟「X11 forwarding」選項。
然後便可在rpi上執行GUI程式,譬如看圖軟體gpicview,由Windows顯示畫面。
運用Python與OpenCV,以範例程式pi-follower-car/03-camera/03_1-image_load/image_load.py顯示影像處理的女神照片吧lena512rgb.png。
之前是靜態圖檔,動態顯示相機的預覽畫面:pi-follower-car/03-camera/03_2-camera_preview/camera_preview.py。
請參看工作坊的投影片,練習調整色彩空間:pi-follower-car/04-opencv/04_1-color_space/hsv_value.py。
試著抓取輪廓:pi-follower-car/04-opencv/04_2-contours/draw_contour.py。
影像處理的侵蝕與膨脹:pi-follower-car/04-opencv/04_3-image_processing/erode_dilate.py。
嗯,接下來是最後的重頭戲,我們想要寵物小車,持續追蹤某個顏色的物體,使用範例程式pi-follower-car/04-opencv/04_4-color_tracking/color_tracking.py調整HSV,定義出想追蹤的東西,下例為紅色蓋子。
哈,完成後,啟動寵物小車的最終程式pi-follower-car/04-opencv/04_5-follower_car/follower_car.py,讓牠不斷地追著跑吧。

若對此工作坊有興趣,想要請台灣樹莓派sosorry開課,或有任何合作機會,請到台灣樹莓派sosorry的網站留言