Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all 678 articles
Browse latest View live

[教學投影片] LINE bot 聊天機器人結合 LinkIt 7697

$
0
0

 

作者/攝影   曾吉弘
時間   4小時
成本
  • LinkIt 7697開發板
  • LED (或用板子上的LED也可以)
難度  * * * * *
材料表
  • 個人電腦
  • LinkIt 7697開發板 LED (或用板子上的LED也可以)
  • Arduino IDE

本文先上架CAVEDU版本的LINE chatbot (Messageing API) 結合 LinkIt 7697 開發板,可以控制腳位狀態也可以回傳感測器狀態。製作過程參考了劉正吉老師的個人網站,獲益良多,在此感謝。

 

做法分為兩種:

 

  1. 使用ngrok讓7697直接能與LINE指定帳號溝通
  2. 7697透過 Mediatek Cloud Sandbox 雲服務,LINE再去讀取指定的資料通道。

 

請先看看投影片,後續的教學文章會先從 LINE 發訊息來控制 7697 的腳位狀態開始。

[contact-form]

 

程式碼下載請點我


[ 課程紀錄文 ] 2017. 7.22 Maker Faire Singapore Boson Workshop @新加坡科學中心

$
0
0

這趟Maker Faire Singapore旅程中,Cavedu教育團隊除了逛展之外,還有一個首要任務,感謝DFrobot的邀約,讓我們能夠在Maker Faire Singapore舉辦Boson Workshop,也在短短的45分鐘讓學員們更加暸解Boson電子積木的學習。

作者/攝影 吳怡婷
課程時間 2017/07/22
課程講師 邱楨詒
課程場地 新加坡科學中心

 

Boson是由Dfrobot最新開發出來的電子積木套件,透過一個個電子積木能夠讓孩子以及初步想要學習電子電路原理的初學者們,能夠以更加簡潔明確的方式進行學習。

View post on imgur.com

上課流程為老師先介紹了Boson的積木元件、操作應用影片以及積木元件分類,接下來就會是大家動手自己操作Boson。

Boson的積木元件分類為:黃色為input、紅色output、藍色Function、綠色Power

在分類的教學中,老師也在各分類上讓學員們自行操作使用。

View post on imgur.com

 

介紹完Boson的積木元件後,老師安排了從淺入深的小題目讓現場的學員們實際動手操作看看,現場的不論是大人小孩都非常認真的操作呢!

View post on imgur.com

View post on imgur.com

View post on imgur.com

View post on imgur.com

我們最後分享了一棟樂高小屋結合Boson的小專題,分享給現場學員操作,藉由這個專題分享也希望讓大家可以對Boson激出更多創作的可能性,果然樂高一出馬小朋友們立刻蜂擁來體驗呢,果然樂高的魅力無國界啊~

View post on imgur.com

View post on imgur.com

 

最後如果您對Boson想要更加的認識的話,歡迎參考看看另一篇文章-

[ 起步學習電子實作新選擇 ] 模組化電子積木BOSON開箱

 

相關文章:

 

[LinkIt 7697 iOS 方案] 寫出 Arduino code自動生成手機介面!

$
0
0
作者/攝影   曾吉弘
時間   3小時
成本
  • LinkIt 7697開發板
難度   * * *
材料表
  • 個人電腦
  • LinkIt 7697 開發板
  • iphone

本文要介紹聯發科技實驗室推出的LinkIt Remote iOS小程式,透過BLE來與 7697開發板互動,特色在於可以輕鬆設計各種簡易的控制界面喔!

 

LinkIt Remote iOS app

LinkIt Remote 是一個用來產生app介面的iOS小程式,是以 BLE 與 LinkIt 7697開發板搭配使用。只要在7697端設定好,就可以在兩者連線之後產生對應的介面。您需要做兩件事:

  • Arduino IDE 的 7697 SDK需要升級到9.5,才可使用最新LRemote 函式庫與本文的範例。

View post on imgur.com

  • 找一隻 iphone 安裝 LinkIt Remote iOS app,可用於掃描鄰近的 7697 開發板(需執行類似於本文的程式),並彼此溝通。

重點就是這一句:

寫Arduino code 可以自動生成 app 介面!

1.請開啟 File > Examples > LRemote > RemoteControl 範例,並上傳至您的 7697開發板。

2.下載 LinkIt Remote 到您的 iphone上,目前版本需要 iOS 10。

3.啟動 LinkIt Remote app,會看到 中的 7697 顯示在畫面的裝置清單中。

View post on imgur.com

4.點選這個 LinkIt 7697。item, the app connects to LinkIt 7697 and display the following remote UI control: (如果範圍裡有多台的話,就會看到多個項目,後續程式碼中的#25 LRemote.setName(“LinkIt 7697”); 可以修改開發板所顯示的名稱)

 

View post on imgur.com

5.請點選畫面中的 USR LED 搖頭開關,就會觸發 7697 的 USR LED (P7腳位)亮起。

6.請開啟 Arduino 的Serial Monitor,並拖拉畫面中的 Value Slider 滑桿,就可以在Serial Monitor中看到數值的變化,我們後續可以拿這個數值來控制LED亮度(analogWrite)、伺服機角度等等都可以喔。

View post on imgur.com

完工了,開始玩吧~

 

7697程式碼

 

最後是7697的程式碼,路徑是 File/Exmaples/LRemote/RemoteControl

由此可以看到如何編寫Arduino code 去定義畫面上的元件

  //設定 app 端介面 UI canvas
  LRemote.setName("LinkIt 7697");
  LRemote.setOrientation(RC_PORTRAIT);
  LRemote.setGrid(3, 5);         //設定螢幕棋盤格數 3行5列

  //加入按鈕
  button.setText("Press Me");   //加入文字
  button.setPos(1, 1);               //設定位置
  button.setSize(2, 1);              //設定元件尺寸
  button.setColor(RC_PINK);   //設定位置
  LRemote.addControl(button); //加入按鈕

  //加入大型圓形按鈕
  bigButton.setText("!BIG!");
  bigButton.setPos(0, 3);
  bigButton.setSize(3, 2);
  bigButton.setColor(RC_GREEN);
  LRemote.addControl(bigButton);

  //加入滑桿
  slider.setText("Value Slider(-100 ~ 1024)");    
  slider.setPos(0, 2);
  slider.setSize(3, 1);
  slider.setColor(RC_ORANGE);
  slider.setValueRange(-100, 1024, 0);   //設定滑桿範圍
  LRemote.addControl(slider);

  //加入文字標籤
  label.setText("Remote Test");
  label.setPos(0, 0);
  label.setSize(3, 1);
  label.setColor(RC_GREY);
  LRemote.addControl(label);

  //加入on/off搖頭開關
  switchButton.setText("USR LED");
  switchButton.setPos(0, 1);
  switchButton.setSize(1, 1);
  switchButton.setColor(RC_BLUE);
  LRemote.addControl(switchButton);

 

完整程式碼如下:

/*
  This example configures LinkIt 7697 to a reciver of the iOS LinkIt Remote App

  created Aug 2017
*/
#include <LRemote.h>

LRemoteButton button;
LRemoteSlider slider;
LRemoteLabel label;
LRemoteSwitch switchButton;
LRemoteCircleButton bigButton;

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);

  Serial.println("Start configuring remote");

  // Initialize GPIO
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, 0);

  // Setup the Remote Control's UI canvas
  LRemote.setName("LinkIt 7697");
  LRemote.setOrientation(RC_PORTRAIT);
  LRemote.setGrid(3, 5);

  // Add a push button
  button.setText("Press Me");
  button.setPos(1, 1);
  button.setSize(2, 1);
  button.setColor(RC_PINK);
  LRemote.addControl(button);

  // Add a big, round button
  bigButton.setText("!BIG!");
  bigButton.setPos(0, 3);
  bigButton.setSize(3, 2);
  bigButton.setColor(RC_GREEN);
  LRemote.addControl(bigButton);

  // Add a slider
  slider.setText("Value Slider(-100 ~ 1024)");
  slider.setPos(0, 2);
  slider.setSize(3, 1);
  slider.setColor(RC_ORANGE);
  slider.setValueRange(-100, 1024, 0);
  LRemote.addControl(slider);

  // Add a simple text label
  label.setText("Remote Test");
  label.setPos(0, 0);
  label.setSize(3, 1);
  label.setColor(RC_GREY);
  LRemote.addControl(label);

  // Add an on/off switch
  switchButton.setText("USR LED");
  switchButton.setPos(0, 1);
  switchButton.setSize(1, 1);
  switchButton.setColor(RC_BLUE);
  LRemote.addControl(switchButton);

  // Start broadcasting our remote contoller
  // This method implicitly initialized underlying BLE subsystem
  // to create a BLE peripheral, and then start advertisement on it.
  LRemote.begin();
  Serial.println("begin() returned");
}

void loop() {

  // check if we are connect by some BLE central device, e.g. an mobile app
  if(!LRemote.connected()) {
    Serial.println("waiting for connection");
    delay(1000);
  } else {
    delay(100);
  }
  
  // Process the incoming BLE write request
  // and translate them to control events
  LRemote.process();

  // Now we poll each control's status
  
  if(button.isValueChanged()){
    Serial.print("button new value =");
    Serial.println(button.getValue());
  }

  if(bigButton.isValueChanged()){
    Serial.print("big button new value =");
    Serial.println(bigButton.getValue());
  }

  if(switchButton.isValueChanged()){
    digitalWrite(LED_BUILTIN, switchButton.getValue());
  }

  if(slider.isValueChanged()){
    Serial.print("slider to new value = ");
    Serial.println(slider.getValue());
    analogWrite(7, map(slider.getValue(),-100, 1024, 0 , 255)); 
    //將slider的數值轉換之後用來控制LED
  }
}

 

相關文章:

[Raspberry Pi]自製縮時攝影機

$
0
0

最近常常用到3D印表機做些小玩具,通常都是今天開始印,隔天成品才做好,如果用樹莓派做個縮時攝影機,把3D列印的過程拍下來一定很有趣,讓我們來動手做吧!

作者/攝影   郭曜銘
時間   30 分鐘
成本
  • Raspberry Pi 2 or 3
  • Webcam
  • SD card
難度  * *
材料表
  • Raspberry Pi 2 or 3
  • Webcam
  • SD card

升旗縮時:這部影片拍攝三十分鐘,大約五秒一張。

3D列印縮時:這部影片拍攝七小時,大約十五秒一張

 

—-事前準備—-

  • 將Raspberry Pi安裝好作業系統(RASPBIAN JESSIE)https://www.raspberrypi.org/downloads/raspbian/
  • 接上電源和webcam。
  • 確認已連上網路。
  • 在樹梅派開啟終端機或用電腦連線至終端機畫面。

 

—-正文開始—–

一、更新系統及套件

1.輸入指令”sudo apt-get update”來更新你的系統

2.輸入指令”sudo apt-get upgrade”來升級已安裝的套件包

 

二、安裝拍照軟體”motion”

1.輸入指令”sudo apt-get install motion”來安裝motion

 

三、設定拍照軟體”motion”

1.輸入指令”sudo nano /etc/motion/motion.conf”,這裡使用”nano”編輯器來更改motion 的設定檔(你也可以使用你慣用的編輯器來編輯設定檔)。

2.在”nano”中你可以使用組合鍵”Ctrl+W”在文件中快速查詢關鍵字。

3.將下表中的值修改成對應的數值

名稱 數值 附註
daemon ON 3.png
framerate 1000 4.png
Stream_quality 100 5.png
Stream_localhost OFF 6.png
webcontrol_localhost OFF 7.png
quality 100 8.png
width 1280 9.png 此數值為webcam解析度的寬
height 720 10.png此數值為webcam解析度的高
Snapshot_interval 10 11.png 每隔10秒拍一張
target_dir /home/pi 12.png 照片存檔的位置










4.使用組合鍵”ctrl+X”離開nano,輸入”y”跟”enter”以保存檔案

5.輸入指令”sudo nano /etc/default/motion”編輯另一個設定檔

6.將名稱”start_motion_daemon”的值改成”yes”,並儲存離開

 

四、啟動攝影機

1.將你的攝影機擺放好

2.輸入指令”sudo service motion restart”重新啟動motion程式

3.輸入指令”sudo motion”執行程式

 

五、取得照片製作成影片

1.輸入指令”sudo motion stop”停止拍照

2.用隨身碟或SFTP將拍到的照片傳輸回電腦,照片會存在你剛剛設定的路徑。

 

3.利用影片製作軟體將所拍攝的照片製作成縮時攝影

我之前是用windows7內建的movie maker,你也可以使用更專業的剪輯軟體來製作影片。

 

相關文章:

[ 展覽分享 ] Cavedu教育團隊勇闖 Maker Faire Tokyo @國際展示場

$
0
0

Maker Faire(自造者嘉年華)是自造者年度的盛事,小編在2015年曾去過一次Maker Faire Tokyo,那個時候就被現場的氣氛震憾到,覺得世界上竟然有一群人在做這麼有趣的事,下定決心一定要再來一次,於是,隔了一年後,終於有機會可以到日本再探Maker Faire 。

 作者/攝影  郭皇甫
 活動時間  2017年8月5日(六)、8月6日(日)
 活動地點  東京 國際展示場-東7與東8

 

 

 

 

今年Maker Faire Tokyo日期是8月5日(六)、8月6日(日),第一天的時間是12:00到19:00;第二天的時間為10:00-18:00一樣在國際展示場展出,內部位置是在東7、東8。

國際展示場外面的內部區域圖,東7、東8竟然在最裡面…看來要走一段路了。

View post on imgur.com

進入國際展示場當然不免俗的要和今年的看板海報合照(有請老闆的兒子充當模特兒)

View post on imgur.com

一來到東7入口,就看到大家都非常守秩序的排好隊等著入場,在台灣要看到這樣的人潮,只有在演唱會或是百貨公司周年慶才能看到這種盛況。

View post on imgur.com

進入到會場後,發覺空間非常大,重點是有.冷.氣!!

View post on imgur.com

View post on imgur.com

會場也和往常一樣,有專門販售周邊商品的區域,商品種類也算多,都是些相當實用的物品。

View post on imgur.com

每年都會賣T恤,但今年出的墨綠色紀念T還不錯看。

View post on imgur.com

進入會場的右手邊,會看到一條超長的木頭軌道,沒有錯,Nerdy Derby出現了!!

View post on imgur.com

會場內有三條軌道,在其中一條軌道的末端,還加上繞圈的軌道設計,讓挑戰的難度瞬間提高不少。

View post on imgur.com

在Nerdy Derby的後方,有一區摺紙飛機區,可以讓你使用桌上的紙張摺出紙飛機,旁邊還放了三個圓環,你可以挑戰一次讓紙飛機通過三個圓環喔!

View post on imgur.com

桌上還有附有紙飛機分解小圖,相當貼心!在桌子的另一邊,還有一張手繪的圖畫,雖然看不懂日文,不過從圖可以看出它大概是在說「做出紙飛機,射過圓環」,簡潔明瞭!

View post on imgur.com

View post on imgur.com

接下來介紹的攤位是Maker Faire Tokyo常客之一的Mesh,它幾乎每年都會出現,而今年比較不一樣的是,將自家的產品做成三個運動項目提供給現場來賓體驗,分別是騎馬、投球以及跑步,這個攤位展區讓小朋友們都玩得很開心。

View post on imgur.com

View post on imgur.com

View post on imgur.com

View post on imgur.com

騎馬是藉由搖動繩子上的感測器,讓機器人的馬達轉動,利用震動讓機器人在斜坡上移動;九宮格投球則是利用了板子倒下時,觸發感測器並發出音樂來讓小朋友體驗;跑步比較另類一點,透過快速原地踏步,讓感測器回傳到電風扇與燈泡上,你就能看到電風扇愈轉愈快,燈泡也會漸漸發亮。在一旁有大大的箱子,上面不時有像火焰的東西冒來,它也是Mesh的產品,只要扇動扇子,就能看到箱子上方火焰熊熊冒出,感覺就像是在生火一樣,太酷了!

View post on imgur.com

View post on imgur.com

View post on imgur.com

View post on imgur.com

像這一攤是利用焊槍在木質板上畫出Make機器人的圖形。他會先用印章蓋在木質板上,再利用焊槍沿著圖案,輕輕地在木質板上畫過,這樣就會有一個清楚的機器人圖案出現了喔!

View post on imgur.com

Maker Faire Tokyo的攤位大多具有互動性,且現場的展品都是可以動手操作體驗的。像左邊的圖片是一個兩人遊戲,它利用上下搖晃錘子,讓玩具小人互打,看哪一方先打掉對方的頭,即可獲勝;右邊的圖片是利用劍玉跟前方的螢幕互動,在劍玉的內部裝有許多感測器,當球碰到劍玉的正確位置時,螢幕上的遊戲便會加分喔!

View post on imgur.com

View post on imgur.com

 

有看到這一攤掛了滿滿的雞嗎?它是藉由操作方向盤去控制小車的左右移動,在限定的時間內閃避紙上的雞,當你的小車不小心碾過雞的圖案時,在一旁的雞就會發出慘叫聲,大人小孩都玩得不亦樂乎。原來在小車的下方裝有感測器,當小雞的圖案經過感測器,就會觸發叫聲。

View post on imgur.com

View post on imgur.com

左邊的是兩人一組的合作遊戲,當按壓隨機在九宮格上發藍光的格子後,便會轉成粉紅色,兩人四隻手都要按對,才會再換位置;右方的是移動迷宮,操控把手上的前後左右鍵,來控制迷宮的傾斜度,讓裡面的滾珠可以順利的滾到出口,在迷宮的中央還會一邊幫你計時呢!(一旁的小黑板寫著不同秒數通關時,可以獲得的稱號,10秒是神的等級)。

 

View post on imgur.com

View post on imgur.com

現場看到一台超小型的二輪車,它可以讓一個人騎上去,當你按下右邊把手下的油門時,它真的就會前進喔!超酷的!不過這台小車相當考驗平衡感,能夠騎著它走完一直線,是非常不容易的。

View post on imgur.com

View post on imgur.com

水下機器人的場地不大,只用了一個水箱,裡面有現成的玩具船、用空瓶做的機器人、保麗龍做的載具,也是有滿多小朋友會湊過去玩;另外也有人做出一款手足球,專門是用電鑽玩的,透過電鑽前的鑽頭旋轉,讓球員能夠踢球,看似簡單,但效果很好。

View post on imgur.com

View post on imgur.com

走到這一個攤位發現怎麼會有GAMEBOY在這裡?仔細一看才發現,原來是Arduboy(Arduino+Gameboy),它主要使用Arduino IDE來編譯遊戲,雖然主機跟螢幕都很小巧,但遊玩的流暢度非常好。主網頁上https://arduboy.com/,還有教你如何製作遊戲喔!

View post on imgur.com

View post on imgur.com

在東8館內,集中了一群手作樂器的Maker,這些Maker的攤位使用各種方式來詮釋音樂,有的是敲擊桌椅;有的是使用笛子;有的則是用機器人,像這個攤位就是製作了五個機器人,分別演奏五種樂器,不僅有聲音,也有LED的視覺效果,相當吸晴。

View post on imgur.com

這一攤擁有許多亮麗顏色的小毛怪,一開始就被它的顏色吸引過去,它是利用多個直笛吹氣發出固定音階,而地上這些五顏六色的小毛怪則是會隨著音樂吹奏而轉動,相當可愛。

View post on imgur.com

View post on imgur.com

左邊這張圖看起來就是一個遙控車的概念,事實上它就是一個遙控車,不過上面裝的布偶可是發揮了很大的作用,當你在遙控車子的同時,車上的布偶也會跟著車子左轉、右轉而左右擺動,在某種程度上來說,相當的療癒。右邊則是利用風扇演奏音樂,把風扇當吉它背在身上並全程演奏,好玩也好累!

View post on imgur.com

View post on imgur.com

會場內特別設置了一個「專門放置小孩」的區域,小孩子可以在這裡休息、玩東西,右圖的風洞則是讓小朋友可以從底下不斷地丟碎紙進去,然後看著碎紙從風管飛出來,具有一定程度的療癒效果,有帶小孩的父母,也可以在這邊稍作休息。

View post on imgur.com

View post on imgur.com

 

 

當然會場內最吸睛的,還是這隻由氣球組成的大Makey,許多人都搶著跟它合照,老闆的兒子也不例外要來一張。

View post on imgur.com

雖然這次的行程很趕,短短的一天半,還有很多的攤位還沒逛完,但是收獲滿滿,也看到了許多新創意,激發了腦中的一些點子,或許這就是Maker Faire Tokyo的魅力所在,來逛展的也許就會是下一個Maker也說不定,你就是那個Maker 嗎?

View post on imgur.com

 

相關文章:

[賀] 阿吉老師MIT CSAIL交換學者起行感言

$
0
0
撰寫/攝影 曾吉弘

View post on imgur.com

 

MIT to MIT,這大概是最棒的生日禮物了吧?

是的,阿吉要去MIT CSAIL(Computer Science and AI Lab,電腦科學與人工智慧實驗室)待一陣子,受邀以交換學者(Visiting Scholar)的身分與App Inventor團隊合作產出更多Android手機搭配連網裝置的教學應用。除了要讓對方知道台灣也有非常多熱情又專業的教學者/團體之外,也希望回國之後能再為台灣的教育做些什麼,這個想法一直是初衷的初衷。

阿吉這次去,有七項期許(蔡英文,2017):

  1. 測試/開發新的​AI2元件
  2. 網站文件更新與繁體中文內容修正​
  3. 協助辦研習/訓練與各種活動,這就是CAVEDU最擅長的囉~
  4. ​MIT to 台灣:更多優秀的學生說不定能因為CAVEDU也能有機會去MIT走走看看。例如MIT辦的Global App Inventor Summit就很不錯。
  5. 台灣 to MIT:CAVEDU希望能把諸多台灣的連網開發板/雲服務廠商例如MTK LinkIt系列開發板、QNAP、Webduino與Motoduino等等好東西帶過去。當然DFRobotSeeedStudio等周邊開發套件也一起來吧,實際上這些早就應用在CAVEDU的課程裡面了。希望都能把這些支援BLE、Wi-Fi的開發板整合到 AI2 IoT 新站,要打架就要打群架(哈爸 Wuulong Hsu,2017),大家一起來就是一個生態系喔。
  6. 認識更多新朋友
  7. 打掃與協助環境整潔(掃地僧)

View post on imgur.com

AI2 EV3元件首次發表@MIT, 2016

 

CAVEDU從2010年開始使用App Inventor(當時還叫做Google App Inventor),我真的覺得這是個好東西!

有了App Inventor之後,Android手機上豐富的資源都很容易可以取得(市面上Android相關書籍只要談到硬體、藍牙都是放在後1/3本才會談到),也能與各種Google服務有相當不錯的整合,不用再啃Java了。

 

就當時的時空背景來說,App Inventor結合樂高機器人是最簡單的手機遙控機器人的解決方案,因為Lego機器人端可以不用寫程式,這是其他開發平台比較難做到的。以我們一年執行50場以上App Inventor的各種研習來看,它在圖形化程式教學環境還會紅好一陣子吧。所有的教學資源都在App Inventor中文學習網(本網站源自於2010年台中女中的未來教師社群計畫,不小心就變成一個站了,感謝台中女中王裕德老師),台灣第一本App Inventor的書也是CAVEDU所寫的喔!如果您曾經用過本網的教學範例,歡迎留言讓我們知道。移除

View post on imgur.com

 Dr. Hal Abelson@MIT, 2016

 

2015廣州的App行動教學研討會、2016的Master Training of Mobile Learning首次踏上波士頓與Hal Abelson、Mitchel Resnick與David Wolber等教授見面,他們對於台灣的教學能量相當驚奇。我們與對方很久之前就一直寫信保持聯繫,對於日理萬機的大人物來說都能在兩三天之內回信,真的很感動。

View post on imgur.com

Dr. Resnick @Scratch, MIT Media Lab, 2016

 

經過相當的努力之後,由CAVEDU開發的Lego EV3機器人元件也正式納入App Inventor官方網站之中(感謝林祥瑞等人)。人家是寫.aix單一外掛元件,但我們可是寫好整套,等級應該不一樣吧~

事實上從Scratch、Lego機器人、MakeyMakey到App Inventor,都與MIT(尤其是Media Lab)有很密切的關係。

CAVEDU的概念是這樣的:什麼東西好玩、適合運用於教學,就拿來玩玩看,教學本來就有一定程度的實驗性。只可惜台灣的大帽子主義太重,才會出現Lego機器人主機要寫成”智慧型嵌入式微電腦控制系統”這種鬼東西。

View post on imgur.com

Dr. David Wolber@廣州App Inventor研討會,2015

 

雖然推掉了不少邀約,也沒辦法去今年的東京/北京/上海/深圳的好多場maker faire,但能有這次機會擔任交換學者,心中實在是非常興奮也覺得任重道遠。

 

CAVEDU呢?放心,我只是換個地方做事情,如果願意用視訊的方式邀我演講也是可以的喔。1+1>2,沒有什麼事情比托付給團隊同仁更讓我放心。我也樂見大家屢屢有好點子(挖洞)並付諸實行(填坑),準時交貨是我們的基本要求。再和大家說一次CAVEDU的核心思想:

提供優質的教學內容

View post on imgur.com

2017 放課後@華山

 

CAVEDU當初只是一個愛碎碎念的Yahoo奇摩部落格,寫了幾本書就覺得自己很厲害,但跌跌撞撞也是走到了今天。小小成績能被更多人看見,能有個阿吉被MIT邀請去一起做一些事情。有CAVEDU才有我,感謝所有的後勤部隊。

不怕爛、不怕慢,只怕不開始。

口號會過去,熱情永不減。如果您也想為教育或台灣貢獻一份心力,現在就開始吧。

30歲的時候,曾經寫了一篇網誌聊表一下雄心壯志,五年過去了,卻只感自己庸庸碌碌,為了追尋而追尋。還以為被瑣事充滿就是充實的生活,殊不知已經連思考的力氣都沒有。

機會來了,你準備好了嗎

各位的期望我真切地感受到了,謝謝大家如此愛護CAVEDU,我會加油的。對了,我會和新科MIT博士生謝宗翰大大(CAVEDU)住一起喔,天天吸收天地靈氣希望可以讓研究更順利~

View post on imgur.com

與羅賓博士合影@MIT Media Lab, 2016

 

相關文章:

 

[LinkIt 7697開發板教學]MCS雲端RGB LED類比控制-Blocklyduino圖形化開發環境

$
0
0
作者/攝影   曾吉弘
時間   3小時
成本
  • LinkIt 7697開發板
  • RGB LED
  • 麵包板
  • 線材
難度   * * *
材料表
  • 個人電腦
  • LinkIt 7697開發板
  • RGB LED
  • 麵包板
  • 線材

本文要介紹如何使用Mediatek Cloud Sandbox (聯發科技實驗室推出的雲服務)來控制LinkIt 7697上的 RGB LED 的個別顏色亮度。程式使用Blocklyduino圖形化開發環境開發板製作的小型電路專題。您可由此比較與一般Arduino IDE的類C語法的異同。請參考我們上課的投影片(超過100頁喔)!:

 

 

MCS端設定

        請登入MCS雲服務,建立新的原型,其下有三個整數(integer)型態的控制器,channel id 分別是 red, green, blue,下限0上限255,這是對應於Arduino的 analogWrite語法的參數。詳細建立資料通道畫面如下:

View post on imgur.com

建立好三個資料通道之後,請為這個原型建立一個測試裝置,完成如下圖:

View post on imgur.com

硬體線路

請將Linkit 7697插上麵包板,並根據下圖將RGB LED負極(最長腳)接到GND腳位。左到右分別代表R G B三個顏色的腳位,請分別接到LinkIt 7697的P10、P8與P6腳位。

View post on imgur.com

Blocklyduino程式碼

初始化/setup():在此會先連上指定的Wi-Fi AP、MCS伺服器並新增所指定的通道id。請注意相關資訊不要打錯

View post on imgur.com

重複執行/loop()

在此會持續與MCS保持同步,如果任一通道有更新(使用者在MCS輸入新的數值)的話,就會根據新的數值來控決定對應的RGB LED顏色強度。最後則是把MCS的數值顯示於Serial Monitor

View post on imgur.com

7697程式碼

上述BlocklyDuino轉出來的Arduino程式碼如下,請直接上傳到7697之後就可以執行,重要的指令都以註解方式寫在程式碼中。

 

操作

請先檢查相關資料是否都正確,執行7697端程式。確認7697已連上MCS之後,請在各個控制器通道輸入0~255之間的數值,即可看到RGB LED顏色產生變化,也會把相關數值顯示於Serial Monitor

 

由於BlocklyDuino目前尚未提供MCS的PWM控制器資料通道的指令,但您可以自行在轉為Arduino code之後將 MCSControllerInteger red(“red”);     改為 MCSControllerPWM red(“red”);   這樣就能在MCS端使用PWM控制器資料通道的拉桿來控制LED亮度。

#include <LWiFi.h>
#include "MCS.h"

char _lwifi_ssid[] = "";     //Wi-Fi 帳號
char _lwifi_pass[] = "";   //Wi-Fi 密碼
MCSDevice mcs("", ""); //MCS測試裝置的 deviceId, deviceKey

MCSControllerInteger red("red");            //新增 channelId 為 red 的整數型控制資料通道
MCSControllerInteger green("green");  // green
MCSControllerInteger blue("blue");       // blue

void setup()
{
  mcs.addChannel(red);                             //將這三個channel 加入測試裝置
  mcs.addChannel(green);
  mcs.addChannel(blue);
  while (WiFi.begin(_lwifi_ssid, _lwifi_pass) != WL_CONNECTED) {
    delay(1000);                                            //每隔1秒試著去連上指定的 Wi-Fi AP
  }
  while (!mcs.connected()) {                    //持續與MCS保持連線
    mcs.connect();
  }
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(6, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  while (!mcs.connected()) {                         //檢查與MCS的連線狀態,如果斷線會在此重連
    mcs.connect();
    if (mcs.connected()) {
      Serial.println("MCS Reconnected.");
    }
  }
  mcs.process(100);
  if (red.updated()) {                                       //如果各控制資料通道更新
    analogWrite(10, red.value());                 //根據該值來控制LED亮度
  } else if (green.updated()) {
    analogWrite(8, green.value());
  } else if (blue.updated()) {
    analogWrite(6, blue.value());
  }

  Serial.print(red.value());
  Serial.print(", ");
  Serial.print(green.value());
  Serial.print(", ");
  Serial.println(blue.value());                      //顯示各資料通道數值於Serial monitor
}

 

 

相關文章:

 

 

 

 

 

[ DIY人型機器人 ] DeAGOSTINI-Robi機器人組裝分享

$
0
0

View post on imgur.com

作者/攝影   葉哲志
時間   二~三天
成本
  • 約42,000
難度   * * *
材料表
  • Robi機器人第一至七十期

View post on imgur.com

Robi是由日本機械人創作者高橋智隆所設計的機器人,並在DeAGOSTINI出版的「洛比」週刊活耀於2014年,「洛比」除了會在每一期介紹各式各樣與機器人相關的內容,每篇雜誌都會伴隨Robi機器人的部件,讓訂閱者能享受了解、組裝機器人的樂趣。

View post on imgur.com

組裝Robi機器人的契機在我個人參訪CAVEDU教育團隊時,意外得知了這個小傢伙,半個身體與整箱的零件堆放在一個大紙箱裡頭,不過! Robi與所有的零件就堆放在眼前了,機會難得,就由我接手讓Robi動起來!

View post on imgur.com

View post on imgur.com

Robi已經有些部分完成了,除了Robi的頭部外殼與擺放用的支撐架(圖中的不是實際運作的上半身噢),其餘還包含了一部分的上肢,可惜的是有銜接Robi左手的部分似乎遺失了某塊零件,看來在搞定之前只能擱置了。

View post on imgur.com

那麼就先把所有尚未組裝的零件來張合照,這些就是將要攻克的目標!

View post on imgur.com

什麼?你說怎麼有隻腳剛剛都沒提到?其實那是我剛開始組Robi時太興奮而忘記記錄的,所以確實有一隻腳已經被我給完成了,但別擔心看不到怎麼組裝的,機器人也是兩隻腳,當然能帶各位體驗一次組裝Robi的過程啦~

 

首先以我開始組裝的27號期刊為例,薄薄的一本乍看之下根本只剩一張紙了阿…

View post on imgur.com

View post on imgur.com

其實每篇期刊介紹機器人的內容都很獨特,位於內頁左半邊的目錄依序介紹「洛比的機器人見聞錄」、「機器人巨星檔案」、「機器人技術的世界」及「組裝導覽」,見聞錄裡主要介紹現行實際運作的機器人,諸如保全、相聲、送貨……等等所涉獵的機器人,巨星檔案則是像原子小金鋼或鋼鐵人這類位於科幻中存在的機器人,機器人技術則時常介紹一些機器人所運用的科技,機器人繪製自身所見的3D地圖從沒聽過對吧!但內容還是要請各位訂購後在閱讀了,所以現在就先翻到「組裝導覽」。

View post on imgur.com

內容先是介紹當期所給的零件與組裝時需配合的已組裝好零件,再來就是手把手的圖例教學啦,基本上照著做十分的容易,所以後續就接著左腳的實際組裝吧!

View post on imgur.com

Robi機器人其中的核心角色—「伺服馬達」,可以跟旁邊的實際腳部大小做比較,能利用的空間被十足的精簡了呢。

View post on imgur.com

雖然使用了工具來拆裝,但這把螺絲起子也是期刊所給的,它也是整個組裝中唯一的工具噢。把伺服馬達拆開是為了要接線,這樣才能控制Robi靈活的作動。

View post on imgur.com

View post on imgur.com

電線銜接馬達控制面板的部分必須使用貼紙保護,在很早以前就先把貼紙給了玩家們,還好之前的組裝者好好的保留了下來。

 

View post on imgur.com

View post on imgur.com

接完線就能配合其餘零件按圖索驥了。

View post on imgur.com

馬達與零件是有防呆措施的,只要不刻意用力按壓,裝錯了一定能知道。

View post on imgur.com

馬達與零件是有防呆措施的,只要不刻意用力按壓,裝錯了一定能知道。

View post on imgur.com

View post on imgur.com

用螺絲固定腳踝零件至底板,之後讓馬達之間互相串接,這樣就不會有一堆亂七八糟的線暴露在外了。要留意線路的走法,避免被錯誤的壓迫到,而此時增加的第二顆伺服馬達有額外貼了白色貼紙,這樣能讓Robi的腳踝看起來一致。

View post on imgur.com

View post on imgur.com

要注意螺絲分做圓頭與平頭,鎖個圓頭螺絲在腳底害Robi每一步像在踩積木,他一定氣到摔給你看。

View post on imgur.com

View post on imgur.com

依序鎖零件,串接第三顆馬達,鎖零件,串接第四顆馬達,Robi的腳便迅速的成型了!

View post on imgur.com

 

View post on imgur.com

準備下半身合體!期刊很有趣的附贈了顆足球,Robi再等等就有靈活的雙腳啦。

View post on imgur.com

 

 

 

 

 

雖然小腿的部分還需要收線處理,但基本上已經把Robi組完一半了!截至目前為止是到達54號期刊,剩下其他特殊的零件。

View post on imgur.com

剩餘的零件就是用於線路的排線、揚聲器、人體感測器、貼紙……等等,但礙於上半身缺乏關鍵的零件而無法將東西安裝於身體內部,因為是需要不斷組裝後測試有沒有損壞的部件,先跳過組裝後半段要拆開再試,。

View post on imgur.com

那麼Robi的組裝就先暫且告一段落,其時實際的去接觸機器人十分有趣之外,在組裝的過程你能發現機器人的結構富含諸多的巧思,如果有機會的話,不妨多多參與機器人相關的事物吧,他真的值得你去體驗,那麼有關於Robi機器人的分享到此,謝謝觀看!

 

相關文章:

 

 

 

 

 

 

 


[Processing匯入OpneCV視覺函式庫] 臉孔追蹤小專題

$
0
0
作者/攝影   曾吉弘
時間   3小時
成本
  • Webcam
難度   * * * *
材料表
  • 個人電腦
  • Webcam 或筆電內建攝影鏡頭
  • Processing IDE

本文要介紹如何在 Processing 中匯入OpenCV視覺函式庫,並做到臉孔追蹤的效果。

 

這比建置完整的OpenCV環境做法簡單多了,但是功能相對也會比完整的openCV環境來得少,就看您個人的需求囉。其實 Processing 的程式碼都很簡潔,也很容易做出漂亮的介面,是阿吉老師上課很喜歡的。Processing結合Arduino也很簡單。

 

硬體

請將#1伺服機的訊號腳位接到Arduino的#9腳位,用於控制PTZ平台的水平方向移動(Pan)

請將#2伺服機的訊號腳位接到Arduino的#11腳位,用於控制PTZ平台的垂直方向移動(Tilt)。其餘分別接電接地完成即可。

View post on imgur.com

示意圖(圖片來源 adafruit 與 sparkfun.com):

View post on imgur.com

View post on imgur.com

您可由 thingiverse這樣的網站找到更多的PTZ平台設計

 

Processing設定

1.下載Processing

2.開啟 Sketch → Import Library…   Add Library:在跳出選單中下載openCV, processing video函式庫

View post on imgur.com

View post on imgur.com

View post on imgur.com

3.下載Arduino函式庫,完成之後可以在 File → Examples 看到相關範例,都可以直接玩玩看喔

 

View post on imgur.com

4.開啟範例程式:LiveCamTest,就可以直接追蹤臉孔囉,以下是我們加入Arduino相關控制碼

import gab.opencv.*;
import processing.video.*;
import java.awt.*;
import processing.serial.*;
import cc.arduino.*;

int center_x, center_y;
Arduino arduino;

Capture video;
OpenCV opencv;

void setup() {
  size(640, 480);  
  video = new Capture(this, 640/2, 480/2);
  opencv = new OpenCV(this, 640/2, 480/2);
  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);  
  println(Arduino.list());

  arduino = new Arduino(this, Arduino.list()[0], 57600); 
  //0代表第一個COM裝置,請根據實際狀況修改
  arduino.pinMode(9, Arduino.SERVO);     //#1 servo 水平
  arduino.pinMode(11, Arduino.SERVO);   //#2 servo 垂直
  video.start();
}

void draw() {
  scale(2);
  opencv.loadImage(video);

  image(video, 0, 0 );

  noFill();
  stroke(0, 255, 0);
  strokeWeight(2);
  Rectangle[] faces = opencv.detect();   //偵測是否有臉
  println(faces.length);                            //偵測到幾張臉

  for (int i = 0; i < faces.length; i++) {    //根據臉孔數目來跑迴圈
    println(faces[i].x + "," + faces[i].y);    //顯示臉的座標
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); //畫長方形把臉框出來
    center_x = faces[i].x + (faces[i].width/2);   //起始點x + 0.5*寬
    center_y = faces[i].y + (faces[i].height /2);  //起始點y + 0.5*高
    print(center_x); 
    print(", "); 
    println(center_y);
    ellipse(center_x, center_y, 10, 10);
    arduino.servoWrite(9, int(map(center_x, 100, 270, 0, 180)));  
    //本組數值是center_x 於畫面之左右極值,需依照實際情況調整
    arduino.servoWrite(11, int(map(center_y, 80, 250, 0, 180)));  
    //本組數值是center_y 於畫面的上下極值,需依照實際情況調整
  }
  delay(100);
}

void captureEvent(Capture c) {
  c.read();
}

執行

 

由console的訊息可以看到以下訊息:

 

OpenCV for Processing 0.5.4 by Greg Borenstein http://gregborenstein.com

Using Java OpenCV 2.4.5.0

Load cascade from: C:/Users/user/Documents/Processing/libraries/opencv_processing/library/cascade-files/haarcascade_frontalface_alt.xml

Cascade loaded: haarcascade_frontalface_alt.xml

 

代表在此的臉孔追蹤還是用到了Haar分類演算法,點選連結可以看到關於本分類法的數理基礎。

 

執行畫面如下,可以看到畫面會把偵測到的臉孔標出來,也會在console中顯示偵測到的臉孔張數與座標

View post on imgur.com

View post on imgur.com

相關文章:

 

 

 

 

 

 

[LattePanda] 作品發表:中文手指閱讀器

$
0
0

這次跟各位讀者分享的作品,是淡江大學電機系CILAB實驗室朱永龍同學發表的專題,CILAB在互動式學習、人機互動、嵌入式系統、影像分析與辨識 、模式識別是主要研究方向,近年在小朋友學習、弱勢族群、MAKE領域發表相當多作品,更多作品可以到這裡

作者/攝影  徐豐智/朱永龍

本次作品為中文手指閱讀器,希望提供視障者一個輕巧且易於攜帶的閱讀器;將閱讀器穿戴在視障者的食指上,協助他們閱讀紙本書籍上的中文文字。視障者使用手指閱讀器時,系統首先會利用震動提示的方式,來引導視障者將食指移動到適當的閱讀位置(觸覺回饋)。系統辨識書籍上的中文文字完成後,透過朗讀文字提供視障者聽覺上的回饋。

 

來認識一下視障者的相關資訊吧

一般日常生活中閱讀文字是不可或缺的事情,除了閱讀書籍外,包括閱讀藥物罐上的說明,操作家電(例如微波爐)上的按鈕,閱讀車站內看板上相關訊息(例如位置、樓層)時,都需要辨識這些文字訊息。對視障者來說,理解這些文字訊息是一件困難的任務。對「中途失明者」來說更是如此,所謂的「中途失明者」是指年齡為15歲以上之視障者,他們原本擁有正常的視力,後來因為疾病或意外傷害導致失明。這些視障者未曾接受過特殊教育,他們普遍呈現摸讀速度緩慢、連續性不足、缺乏效率等問題。(*註解[1]-[5])

 

為了協助視障者閱讀文字,近年來國內外許多研究者提出許多研究成果。主要可分為穿戴式裝備或是手持式裝置兩大類型的輔具。(*註解[6]-[13])

  • 穿戴式輔具:

將身體當為攝影機或相機的載具,並在攝影機擷取影像後,搜尋影像中可能存在的文字區塊加以辨識。學者Yi與Tain將小型攝影機架設在眼鏡上,並透過影像分析與文字辨識技術,辨識出書寫在物品上的文字。Hanif與Prevost 同樣將小型攝影機架設在眼鏡上的方式,來辨識招牌上的文字,並提供一個震動回饋來與視障者互動。Mattar等人[8]設計一個頭戴式攝影機,來辨識招牌上的文字。Ezaki等人將攝影機架設在肩膀上,來辨識招牌上的文字。

  • 手持式輔具:

手持式裝置的特色就是視障者透過PDA或智慧型手機作為影像擷取裝置。學者Peters 等人[10]以PDA的相機擷取影像來辨識鈔票、條碼與商品上的標籤。Shen等人[11]使用智慧型手機辨識門牌或路標,並提供震動回饋來與視障者互動。

 

現在技術上常遇到的問題

  • 在擷取影像時,影像品質容易受到光源、焦距、反光等影響。
  • 在複雜背景中尋找文字區域也不容易。
  • 需要耗費大量的運算資源(處理時間可能需要數秒至數十秒)。
  • 很難辨別出哪些文字資訊才是視障者真正關心的資訊。

由MIT多媒體實驗室Shilkrot等人在2014與2015年所提出的穿戴式手指閱讀器。協助視障者閱讀紙本書籍上的英文文字。當系統辨識書籍上的英文文字後,利用語音朗讀文字的方式,讓視障者得知書籍上的文字內容為何。

這次主題以辨識繁體中文為主,將閱讀器套在食指上並指向書籍,閱讀器將透過震動提示引導視障者閱讀書中文字,閱讀器也將透過攝影機逐一朗讀出書籍上的文字內容,閱讀器也可以幫助外籍人士學習中文字。

View post on imgur.com

裡面的硬體裝置包含(1)小型攝影機、(2)震動馬達、(3)電容式觸控開關,(4)控制馬達的微控制系統。我們利用小型攝影機擷取影像資訊來判斷手指與書本文字的相對位置,並進一步擷取文字字元的影像。

 

我們來看看硬體

閱讀器裡面安置一個(5)電容式觸控開關,手指可藉由觸摸開關來切換閱讀器的中文閱讀模式、閱讀器內部也安置四個具震動功能之微型馬達,電腦端的控制系統可以即時控制馬達震動,並透過震動的提示資訊,引導食指移動到適當的閱讀位置。(6)LattePanda做我們文字辨識的後端處理系統,配合閱讀器可以隨時做文字處理,並隨時提供給使用者語音回饋。

View post on imgur.com

View post on imgur.com

情景一 單字閱讀模式

閱讀器擁有中文單字閱讀模式,使用者手指指向文字時,閱讀器將只偵測手指上方所指到的中文單字,單字閱讀模式不使用振動馬達,並且關閉其它跳行偵測和引導換行等震動提示功能。

View post on imgur.com

單一字閱讀

 

情景二 文章閱讀書籍文字

視障者在閱讀文章時並無法順利的將手指指在適當的文字位置上,文章閱讀模式在閱讀書籍時,閱讀器會透過震動馬達的震動來提示視障者,並引導食指移動到適當的文字位置,方便閱讀器做文字辨識。

我們在手指閱讀器內部安置了四個具震動功能之微型馬達。電腦端依據不同的使用情景設計了三種主要的引導機制(A)引導使用者到距離手指最接近的文字段落,並引導手指移至該行文字的開頭位置(圖4(a))。(B) 當手指出現跳行或偏移到其他橫行文字的情況時,閱讀器透過震動提示的方式,引導手指移回原本的閱讀的位置(圖(b))。(C) 當手指移動到此橫行文字段落的結尾邊界時,將提示回到行頭並到達下一行從頭開始閱讀(圖(c))。

View post on imgur.com

(a) 引導至開頭

View post on imgur.com

(b) 跳行提醒

View post on imgur.com

 

(c) 閱讀至結尾邊界時(震動引導機制

 

中文字元切割

當手指閱讀器將指尖前方的影像資訊傳送至電腦端後,CILAB開發一套中文字元擷取與辨識演算法來辨識影像中的文字。下圖是系統流程圖,這個系統利用影像前處理(灰階、Otsu、Opening、Closing)等演算法,找出指尖位置與傾斜角度,再偵測出行高等相關資訊來做文字擷取切割出單一的文字圖,透過中文字元辨識以及文字轉語音讓閱讀器念出中文。

View post on imgur.com

系統流程圖

 

若是針對整張影像做二色化處理,其二色化結果非常容易受到光源以及其他因素影像,經常出現文字破損的情況,也進一步影響文字切割以及中文字元辨識(OCR)的準確性。設計者採用區域式(local-based)的二色化處理擷取出完整度較好的文字影像,並提升文字切割以及中文字元辨識(OCR)的準確性。

另外採用投影掃描線法來偵測橫行,圖的灰色區域代表掃描線經過文字區塊(圖6a)。當系統偵測橫行並計算出行高後,我們會根據指尖位置,往上方延伸兩倍行高的高度,以及四倍行高的寬度,進行區域影像的切割(如圖(a)之紅色矩形區域),並針對此矩形區域使用Otsu threshold再次進行二色化處理,圖7(b)為此矩形區域進行二色化處理後之結果。

View post on imgur.com

橫向投影掃描線法

View post on imgur.com

View post on imgur.com

 

 

接著使用垂直投影的方式來切割中文字元(圖(a)),此種方式相較於切割英文字元會有較為複雜的問題,對於某些中文字來說(例如:化、川),以垂直投影進行文字切割時,一個完整的中文字元會被分割成兩個或三個獨立的文字區塊。

我們發現中文字的外觀都非常接近方正型,我們根據中文字的行高資訊,在做文字切割時,將部分寬度較小的且鄰近的中文字元合併成一個中文字元,圖 (b)為成功切割出一中文字元。

View post on imgur.com

圖(a)垂直投影掃描線

View post on imgur.com

(b)切割獨立元

 

註解

[1] 柯明期, 中途失明者適應與重建之研究。師範大學特殊教育所碩士論文, 2004。

[2] 李佳玲, 中高齡視障者電腦使用動機及對圖書館電子化資源服務需求之研究。臺灣大學圖書資訊學研究所碩士論文, 2013。

[3] W. Jeong, “Emotions in information seeking of blind people,” in Diane Nahl and Dania Bilal (Eds.), Information and Emotion: The Emergent Affective Paradigm in Information Behavior Research and Theory pp. 267-278, 2007.

[4] 陳怡佩。視覺障礙兒童及青少年的資訊需求。臺灣圖書館管理季刊, 2(3), pp. 32-43, 2006.

[5] K. Carey, “The opportunities and challenges of the digital age: a blind user’s perspective,” Library Trends 55(4): 767-784, 2007.

[6] C. Yi, and Y. Tian, “Assistive text reading from complex background for blind persons,” in Camera-Based Document Analysis and Recognition. Springer, 15–28, 2012.

[7] S. M. Hanif, and L. Prevost, “Texture based text detection in natural scene images-a help to blind and visually impaired persons,” In CVHI, 2007.

[8] M. Mattar, A. Hanson, and E. Learned-Miller, “Sign classification using local and meta-features,” in IEEE CVPR Workshops, pp. 26–26, 2005.

[9] N. Ezaki, M. Bulacu, and L. Schomaker, “Text detection from natural scene images: towards a system for visually impaired persons,” in Proc. of ICPR, vol. 2, pp. 683–686, 2004.

[10] J.-P. Peters, C. Thillou, and S. Ferreira, “Embedded reading device for blind people: a user-centered design.” in Proc. of IEEE ISIT, pp. 217–222, 2004.

[11] H. Shen, and J. M. Coughlan, “Towards a real-time system for finding and reading signs for visually impaired users,” In Proc. of ICCHP, pp. 41–47, 2012.

[12] R. Shilkrot, J. Huber, C. Liu, P. Maes, and S. C. Nanayakkara, “Fingerreader: A wearable device to support text reading on the go,” in CHI EA, ACM, pp. 2359–2364, 2014.

[13] R. Shilkrot, J. Huber, M. E. Wong, P. Maes, and S. C. Nanayakkara, “Fingerreader: A wearable device to explore printed text on the go,” in ACM CHI 2015, pp. 2363–2372, 2015.

 

相關文章:

 

 

 

 

 

 

 

 

 

 

 

[開箱文] 新玩具!!ARDUBOY開箱!

$
0
0

哈囉!各位親愛的讀者們,學校開學也過了一段時間,相信大家都在漸漸的收心,但是小編今天要來跟大家介紹的,絕對是讓您無法收心的好物(誤!?)。

作者/攝影   郭皇甫/吳怡婷
時間   30分鐘
成本
  • ARDUBOY
難度   *
材料表
  • ARDUBOY

相信和小編一樣年代的玩家,都有聽過一款掌機叫「Game Boy」。沒錯!這款曾風糜全球,銷售超過1億台的掌機,現在又出現了。不過這次,不是「Game Boy」,而是「Arduboy」。小編有幸拿到了這台掌機,與擁有遊戲魂的你們,一同分享。

 

外盒的顏色只有黑與白,相當乾脆,似乎也說明了它的遊戲也只有黑白二色。盒裝正面寫著ARDUOBOY的字樣,以及相當懷念的十字按鍵與二顆AB按鈕。(這就是小時候躲在被子裡,陪我熬過許多夜晚的萬惡小按鈕)

圖01 Arduboy外盒包裝

 

盒裝的一側有QR Code與Arduboy的網址,英文寫著「開源遊戲平台。免費製作與分享8位元的遊戲」,衝著可以自製遊戲的這一點,非常值得!

圖02 盒裝側邊

另一側寫著「容易學習編寫、創作自己的遊戲。免費的遊戲、線上教學、加入社團吧!」。(我也想加入啊!!!)

圖03 盒裝另一側

轉到盒裝背面,這一面就相當詳細了,上頭寫著「Arduboy可以讓你創作並與他人分享自己的遊戲。可以在Arduboy的論壇裡,查看並下載遊戲」。右邊是遊戲參考畫面,左邊是Arduboy的規格。

圖04 盒裝背面

  • 重量:14公克
  • 內含遊戲:1款
  • 快閃記憶體:32kb
  • RAM:2.5kb
  • EEPROM:1kb
  • 頻率:16mhz
  • 單色顯示器:OLED
  • 像素:128*64 Pixels
  • 鋰聚合物電池:180mAh
  • 壓電揚聲器:1
  • 晶片:ATMEGA32U4

打開盒裝後,會看到可愛的Arduboy被包在夾鏈袋中,內含物有Arduboy、Micro USB線、說明書。

圖05 Arduboy與usb線

 

 

登登登!主角登場!正面採透明壓克力外罩,讓你可以清楚看到這塊板子的內部結構;背面使用金屬背蓋,整個提昇它的質感。

圖06 Arduboy正面

 

圖07 Arduboy背面

與Game Boy不同的是,Arduboy少了選擇與開始鍵,不過沒有關係,還是可以玩。電源開關在最上方;最下面是USB孔。

圖08 Arduboy按鍵

打開電源,遊戲主畫面是一隻小美人魚,頭髮還會飄動;遊戲選單在右邊,雖然不多,但夠用了。

圖09 遊戲開始畫面

遊戲運行畫面相當流暢,雖然是8-bit遊戲,但基本的人物、場景、怪物、血量、分數都有了。

圖10 遊戲運行畫面

遊戲結束後,還會有最高分數的畫面統計,真的是做得相當完整。

圖11 遊戲結束畫面

當然囉,一款遊戲怎麼能夠滿足廣大的遊戲迷呢?在Arduboy的社群(https://community.arduboy.com/)裡,有著更多的遊戲等著你下載,在這個社群裡,每個人都是遊戲製作者,把自己製作的遊戲分享出來,一方面可以得到測試的回饋;另一方面又能增加曝光度,何樂而不為呢?

圖12 Arduboy社群網站

同場加映,左邊彩色的盒裝裡也是Arduboy,以橫的方式手持,遊戲是相當經典的「俄羅方塊」,玩起來也是十分順暢喔!

圖13 二款Arduboy盒裝

圖14 二款不同的Arduboy

 

最後,附上遊戲試玩的影片,讓廣大的遊戲迷們一起過過癮吧!

 

相關文章:

 

 

[開箱]DFRobot Boson Starter Kit for BBC micro:bit

$
0
0
作者/攝影   曾吉弘
時間   30分鐘
成本
  • DFRobot Boson Starter Kit for BBC micro:bit
難度   *
材料表
  • DFRobot Boson Starter Kit for BBC micro:bit

本文要介紹DFRobot公司針對BBC micro:bit所推出的 BOSON kit 套件包(micro:bit另購),這樣可以讓您的專題更豐富喔

感謝DFRobot很快就寄出一套給我們玩,這次封面的色調走粉色系,看起來非常舒服。

其中最重要的就是這片micro:bit擴充板囉,上面有電源開關、六個周邊接頭、音量鍵以及耳機插孔(之前用microbit居然要剪線… 覺得不太方便)。當然原本板子上的0、1、2、3V與GND鱷魚夾頭也都在喔

 

盒子裡面有哪些東西呢?

  • micro:bit 之Boson 擴充板 x 1
  • 紅色按鈕 x 1
  • 紅色 LED 模組 x 1
  • 旋轉感測器(旋鈕式電位計) x 1
  • 聲音感測器 x 1
  • 動作感測器 x 1
  • 迷你風扇模組 x 1
  • 迷你伺服機 x 1
  • RGB LED 燈條 x 1
  • Micro USB 傳輸線 x 1
  • 3-Pin 傳輸線(連接microbit 與模組),短中各數條
  • 教學色卡 1批

 

盒子裡面提供了很多有趣的範例,馬上就可以開始玩喔,例如以下的彩虹燈,可以根據旋鈕來調整燈光顏色~

看看這些色卡,真的很漂亮。有四個馬上可以做出來的小專題喔!

(*圖片經同意引用自DFRobot網站)

 

相關文章:

 

 

10/17開始上課,10/16報名截止!物聯網運用與開發​【臺北市職能發展學院 X CAVEDU教育團隊】

$
0
0

$1133元,21小時物聯網精彩課程,整套LinkIt 7697設備帶回家,這次錯過我只能說太可惜啦…  10/17晚上開始上課,先把報名頁面點開吧!

Acupass報名請點我

以下為本次物聯網運用與開發課程招生簡章(詳細報名簡章請按我)

一、主辦單位:臺北市職能發展學院

二、培訓單位:翰尼斯企業有限公司

三、訓練班別與課程資訊:物聯網運用與開發

班別名稱 人數 時數 訓練起迄日期 上課時間 報名截止日 錄取公告 自行負擔費用
物聯網運用與開發 30人 21小時 106/10/17

106/11/7

週二、四

18:30-21:30

線上報名;106年10月16日中午12:00截止 106/10/16 1,133元
製表日期:106.10.06

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

四、參訓資格與訓練費用負擔:

(一)年齡:年滿15歲以上民眾有意願參加進修訓練者(自行負擔個人訓練費用之20%)。

(二)性別:男女兼收

(三)開班條件:具特殊身分參訓者人數,須佔每班次實際開訓人數10%(含)以上,如特定對象不足額方開放一般民眾參訓。

 

五、報名方式與繳交文件:

(一)先完成線上報名,報名網址:https://www.accupass.com/event/1710031605591491104938

(二)經培訓單位通知後,請繳交下列文件:

  1. 身分證(正反面影本)
  2. 1吋相片2張
  3. 特定對象身分證明文件(無者免附)

資料不齊或欠缺者,恕不接受報名。

六、錄訓機制:

(一)甄試方式:採「甄選審查錄訓」方式。

甄選審查錄訓將以筆試跟面試兩階段進行。筆試主要針對基礎知識了解程度做評鑑,將其評鑑結果跟面試成績做加總,占甄選審查標準20%。

面試主要針對申請人參與意願、基礎知識了解程度、學經歷及證照進行分數計算作為評鑑標準,占甄選審查標準80%。

筆試以是非題跟選擇題為主,使其學員了解物聯網基礎知識。口試將針對參與意願(50%)、基礎知識了解(25%)、學經歷簡述(25%)為評鑑標準。

【甄試日期】106年10月16日

甄試成績達錄訓標準70分者為合格,依甄試總成績高低順序排列後,分列正取、備取,錄取名單於各班錄取公告日公佈於CAVEDU教育團隊首頁(http://www.cavedu.com/),並以E-mail與簡訊方式通知錄取學員,未錄取者不另通知。

106/10/17開訓後(含開訓當日)如尚有缺額,將於開訓後3日內依備取序號依順序遞補學員。

八、課程大綱   

課程名稱 課程內容
教務說明

Linklt7697相見歡

教務管理規定說明

1.  職訓計畫介紹

2.  出缺勤管理辦法與退訓規定

3.  學員應盡權利與義務

4.  申訴管道

Linklt 7697 規格介紹、使用環境設定。

數位控制控制實習

基本電子輸入輸出控制實習 基本電子輸入輸出控制實習
雲端服務運用 認識  MediaTek Cloud Sandbox 雲服務

上傳感測器資料至 MCS 雲服務

MCS 雲端智慧居家控制

手機程式設計 編寫 Android app 使用 App Inventor

Android 裝置透過 BLE 與 7697 互動

擴充裝置電路設計實作 使用電路設計軟體設計與製作擴充電路板
開源時代-認識開放政府 認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

讓 LINE 與 7697 對話吧! 認識 LINE API 使用 Python/NodeJS

架設 LINE回音機器人透過 Line API 與 7697 互動

九、注意事項:

1.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。

扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

2.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

【11/9開課】人工智能服務與Opendata大數據專題實作|​臺北市職能發展學院 X CAVEDU教育團隊

$
0
0

Acupass報名請點我

以下為本次物聯網運用與開發課程招生簡章 (詳細報名簡章請按我)

一、主辦單位:臺北市職能發展學院

二、培訓單位:翰尼斯企業有限公司

三、訓練班別與課程資訊:人工智能服務與Opendata大數據專題實作

班別名稱 人數 時數 訓練起迄日期 上課時間 報名截止日 錄取公告 自行負擔費用
人工智能服務與Opendata大數據專題實作 30人 21小時 106/11/9

106/11/30

週二、四

18:30-21:30

線上報名;106年11月8日中午12:00截止 106/11/8  933元
製表日期:106.10.06

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

四、參訓資格與訓練費用負擔:

(一)年齡:年滿15歲以上民眾有意願參加進修訓練者(自行負擔個人訓練費用之20%)。

(二)性別:男女兼收

(三)開班條件:具特殊身分參訓者人數,須佔每班次實際開訓人數10%(含)以上,如特定對象不足額方開放一般民眾參訓。

 

五、報名方式與繳交文件:

(一)先完成線上報名,報名網址:https://www.accupass.com/event/1710031100534614309170

(二)經培訓單位通知後,請繳交下列文件:

  1. 身分證(正反面影本)
  2. 1吋相片2張
  3. 特定對象身分證明文件(無者免附)

資料不齊或欠缺者,恕不接受報名。

六、錄訓機制:

(一)甄試方式:採「甄選審查錄訓」方式。

甄選審查錄訓將以筆試跟面試兩階段進行。筆試主要針對基礎知識了解程度做評鑑,將其評鑑結果跟面試成績做加總,占甄選審查標準20%。

面試主要針對申請人參與意願、基礎知識了解程度、學經歷及證照進行分數計算作為評鑑標準,占甄選審查標準80%。

筆試以是非題跟選擇題為主,使其學員了解物聯網基礎知識。口試將針對參與意願(50%)、基礎知識了解(25%)、學經歷簡述(25%)為評鑑標準。

【甄試日期】106年11月8日

甄試成績達錄訓標準70分者為合格,依甄試總成績高低順序排列後,分列正取、備取,錄取名單於各班錄取公告日公佈於CAVEDU教育團隊首頁(http://www.cavedu.com/),並以E-mail與簡訊方式通知錄取學員,未錄取者不另通知。

106/11/9開訓後(含開訓當日)如尚有缺額,將於開訓後3日內依備取序號依順序遞補學員。

八、課程大綱   

課程名稱 課程內容
教務說明

人工智能服務與opendata大數據概論

教務管理規定—
  1. 職訓計畫介紹
  2. 出缺勤管理辦法與退訓規定
  3. 學員應盡權利與義務
  4. 申訴管道
基本電子輸入輸出控制實習 基本電子輸入輸出控制實習
程式語法基礎 認識 Python 程式語言

變數、判斷式與程式流程

基礎互動專題製作

雲端服務運用 認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

擴充裝置電路設計實作 使用電路設計軟體設計與製作擴充電路板
Facebook API 根據開發板資訊來發佈 Facebook 個人訊息
微軟認知服務 上傳照片到微軟認知服務 Face API 並取得臉孔資訊(年齡、性別、情緒等)

九、注意事項:

1.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。

扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

2.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

[阿吉老師的MIT奇幻之旅-雜記] 阿吉老師的美簽申請之旅

$
0
0
作者/攝影   曾吉弘
時間   1個月
成本
  • 面談費用$4960
  • 護照快遞費用$220
難度   *******
材料表
  • 相關文件
  • 耐心(要很多)

 

本文要介紹阿吉老師申請美簽B1的過程。根據官方網站的說明:B-1/B-2訪客簽證是提供給到美國短暫停留的商務(B-1),或旅遊或就醫(B-2)的人使用。一般而言,B-1簽證是專為與商務夥伴洽商、出席科學、教育、專業或商務大會/會議、進行地產交易或協商合約的旅客而設。B-2簽證則為旅遊性質,包括觀光、探訪朋友或親戚、就醫及出席聯誼、社交或服務性質的活動。B-1及B-2簽證通常被合併簽發為一組簽證:B-1/B-2簽證。

 

本文意在協助申請美國簽證者能順利完成,唯根據個人經歷流程分享,無惡意、誤導或造假之意圖。

 

好了,開始吧:

  1. 先和自己說:”我OK,我一定可以的!
  2. USTravelDocs網站建立帳號,由此可以看到相關的進度
  3. 填好DS160表格,這份文件大概要填1~1.5小時,問得非常鉅細靡遺,不過別擔心,每一個問題都有繁體中文翻譯,每一頁做完都可以存檔後繼續。耐心就一定能填完,如果有漏填任何一項,系統會和你說。網頁上有很多熱心網友把每一個頁面都擷圖下來,我就沒這麼做了。DS-160 FAQ請點我
  4. 繳費,現在台幣比較大所以是$4960,總之AIT說多少就是多少,線上轉上或印出去郵局繳費就對了。下圖中136後的11碼就是您用於安排面談的號碼。

請注意:在當天5點前繳納,需等待到下一個工作日中午1點之後生效使用。 如是當天5點之後繳納的費用,需等待到下兩個工作日中午1點之後生效使用。

5.安排面談,需要使用繳費單上的收據編號才能安排面談,也就是今天繳費,最快要明天中午之後才能安排面談,總之手腳要快!(需要攜帶的東西有以下,但是以官方網站最新公告為主:

  1. 預約確認單(要繳費完才能預約面談,所以趕快繳費!)
  2. DS-160確認頁

(圖片來源http://dennyeyberg.wixsite.com/filipino-am-visa/ds-160-confirmation-page-example)

  1. 有效護照
  2. 所有的舊護照(其實沒用到)
  3. 六個月內拍的5吋照片,AIT台北辦事處旁邊的全家可以拍,AIT裡面也有快拍機。
  4. 繳費收據(帶了但沒用到)
  5. 其他包含(但可能沒用到):旅行行程表、工作證明、收入/財力證明、成績單/畢業證書等。

 

6. 面談

  1. 美國在臺協會台北辦事處(10659台北市信義路三段134巷7號)
  2. 請比預約時間提早15分鐘到達即可,會有協會人員在外面幫您確認文件,他會幫您把用不到的東西抽掉歸還並協助排序。
  3. 進去前手機要先託管,會給您一個號碼牌,面談完離開後就可領回。
  4. 繳交相關資料,這時會確認相關資料是否遺漏,如果缺重要資料就…下次再來。要重新繳費預約面談(照片忘了拍倒還好,AIT中有拍照機)。
  5. 輸入指紋
  6. 面談
  7. 中間的時間都是在等,等多久很難說。我進去到出來共花了1小時,時間不算太久。

7. 查詢護照狀態,請由網頁中間輸入您的護照號碼,會顯示相關狀態。

8.如果確認已進入快遞寄送,可由此查詢(嘉里大榮美簽查詢服務),查詢的序號是預約確認單上右下角的八碼數字(以下圖片引用自嘉里大榮美簽查詢服務)

面談結束會問什麼問題其實很難預測,完全看面試官心情。但由於我是交換學者,所以他對於我的研究項目就興致勃勃地問很多,我就說是手機程式設計、IoT、機器人等等,這時…

 

他突然轉身進去問了其他同事一些東西

 

然後笑瞇瞇地給我一張紅色單子要進行額外的行政審查程序(Administrative Processing Case),要我繳交上面所勾選的資料,大部分像是旅遊計畫、研究計畫等等都是現成的東西沒什麼問題,但其中有一個東西是advisor letter需要MIT回答相關問題,所以又等了幾天才能補件。

這個行政審查程序最多不會超過60天(天啊!!),期間只能由這個網站去查詢case number,這個網站後來才知道有台大學長因為研究領域比較偏國防,足足拖了兩三個月。可能和新總統有關吧…

 

有幾件事先和大家說:

  1. AIT電話非常不容易打通,要有心理準備
  2. 面試官最大,但據實回答應該都沒什麼問題。尤其是像我這種已收到對方邀請函或是入學通知等正式文件的,就算碰到上述的行政審查程序,可能會晚點出發(沒辦法…),但應該還是能順利成行。
  3. 非移民簽證問題不大,除非是某些特殊狀況國家:查德、伊朗、利比亞、朝鮮、敘利亞、委內瑞拉、葉門和索馬利亞。更多資訊,請參閱:https://travel.state.gov/content/travel/en/news/important-announcement.html

 

終於順利拿到簽證,請密切關注阿吉老師的MIT奇幻之旅吧~

 

相關文章:


【臺北市職能發展學院 X CAVEDU教育團隊】物聯網運用與開發​-學員錄取名單

$
0
0

 

主辦單位:臺北市職能發展學院

培訓單位:翰尼斯企業有限公司

學員錄取名單:

正取

蔡O帆 華O永 連O宇
蔡O志 周O杰 陳O儒
高O育 強O涵 張O雄
廖O維 李O漢 周O和
李O熹 沈O財 鄭O澤
陳O峰 詹O洋 周O慧
彭O芳 林O源 吳O進
楊O誌 陳O銓 張O潁
曾O燕 徐O志 楊O軒
余O興 孫O青

上課地點:台北市中山區長安東路一段18號6F (長安東路 / 林森北路交叉口附近)

 

課程大綱   

課程名稱 課程內容
教務說明

Linklt7697相見歡

教務管理規定說明

1.  職訓計畫介紹

2.  出缺勤管理辦法與退訓規定

3.  學員應盡權利與義務

4.  申訴管道

Linklt 7697 規格介紹、使用環境設定。

數位控制實習

基本電子輸入輸出控制實習 基本電子輸入輸出控制實習
雲端服務運用 認識  MediaTek Cloud Sandbox 雲服務

上傳感測器資料至 MCS 雲服務

MCS 雲端智慧居家控制

手機程式設計 編寫 Android app 使用 App Inventor

Android 裝置透過 BLE 與 7697 互動

擴充裝置電路設計實作 使用電路設計軟體設計與製作擴充電路板
開源時代-認識開放政府 認識資料格式 JSON

使用 Opendata 開放資料平台抓取 PM2.5 空氣汙染資料

讓 LINE 與 7697 對話吧! 認識 LINE API 使用 Python/NodeJS

架設 LINE回音機器人透過 Line API 與 7697 互動

注意事項:

1.第一次上課請遞交學員資料卡、職能進修契約書,1吋大頭照(2張)、身份證正反面影本。

2.受訓期間膳宿自理,受訓期滿全期訓練成績合格者,由本單位發給結訓證書。於進修課程期間,除公假、病假、喪假外,其餘請假事由一律以事假認定。未依規定辦理請假時,均以曠課論。扣除公假及喪假外,請假時數累積達全期課程總時數1/5(含)以上者、曠課時數達全期課程時數1/10(含)以上者或參訓期間行為不檢,情節重大者,勒令退訓。

3.已報名繳費學員因故無法參訓,得於開訓前申請退還所繳費用,未於開訓前申辦者,已繳交之訓練費用,除該班次停辦外,一概不予退還。

 

更多課程詳情,請參閱CAVEDU教育團隊首頁(http://www.cavedu.com)。

[雙A計畫]藍牙模組(HC05、HC06)常見的指令使用教學

$
0
0

在教到藍牙之間的通訊的課時,常常會搞錯藍牙型號,想寫這篇文跟大家分享,市面上常用的HC-05和HC-06外觀幾乎一樣,不知道如何對藍牙鮑率做設定,想深入研究可以來看看喔。

作者/攝影   許鈺莨
時間   30分鐘
成本
  • 600~800
難度   * * *
材料表
  • 藍牙模組HC-05*1
  • 藍牙模組HC-06*1
  • USB TO TTL線*1
  • Arduino UNO*1

在按照本文中步驟操作時,請讀者一定要購買時請先與商家進行確認以下幾點:

  • 藍牙型號是HC-05還是HC-06
  • 若是已經確認藍牙型號後,請再與商家確認出廠預設鮑率是9600、38400…..等。

如果以上兩點都已確認過,在做藍牙相關設定時會比較快上手,但一切以商家給的文件為主。

接下來教大家如何快速辨別我們買的藍牙是型號是HC-05還是HC-06,還有藍牙指令設定,所以針對以下幾個部分,我以Keyes藍牙的 HC-05和HC-06做範例:
(本文參考instructable藍牙文件、Retun的Blog)

 

  1. 藍牙HC-05和用Arduino UNO 板設定AT指令教學
  2. [進階設定]HC-05主動模式和手機藍牙連線
  3. 藍牙HC-06和用Arduino UNO 板設定AT指令教學
  4. 藍牙HC-05 USB轉TTL模組設定AT指令教學
  5. 藍牙HC-06 USB轉TTL模組設定AT指令教學

1.藍牙HC-05和Arduino UNO 板設定AT指令教學(適合課堂上多人使用)

如果看見藍牙有六隻針腳時,就可能是型號HC-05的藍牙,但是還是要依照以下步驟實際接線測試或與商家確認藍牙型號。

 

設定HC-05的AT指令之前,先與Arduino UNO接線,請先將Arduino的RESET和Arduino的GND接在一起,使得Arduino成為重置模式再依照下方依序接線:

藍牙 Arduino UNO
KEY(or En) 3.3V
VCC 5V
GND GND
TXD TXD
RXD RXD
STATE 不用接

接完線後,將Arduino UNO 用USB連接到電腦,選擇該板子的COM Port,按下Serial Monitor,由於這是Keyes藍牙HC-05的鮑率出廠時預設為38400,所以Serial Monitor的鮑率要選38400,另外一個選項要選NL&CR,即可下AT指令,大小寫不拘。
用藍牙HC-05的好處就是如果設成別的鮑率,之後如果忘記了,在Serial Monitor還是可以固定選38400,再用「AT+UART?」指令查詢,或是設定成別的鮑率。

輸入AT指令第一次會出現ERROR:(0),第二次輸入AT出現OK,即可進入AT模式。

因為HC-05為主從一體(Slave & Master)藍牙,指令多達36種,所以接下來會告訴各位常用的指令。

如果你和我一樣是講師在課堂上教學的話,則一開始這裡有兩個步驟非常重要:

  1. 查詢HC-05 address
  2. 知道自己藍牙的address後改名字

因為在上藍牙通訊時,如果只有兩三位同學的話,還可以一個一個連address測試,但是10幾、20幾位同時在課堂上連線時會搞混,會不知道是不是會連到自己的藍牙,所以要先查出自己藍牙的address的指令,再改藍牙名字。

 

  • 查詢HC-05 address: 「AT+ADDR?

  • 改名字為CAVEDU: 「AT+NAME=CAVEDU

  • 查名字 :         「AT+NAME?(確認是否改對)

  • 改鮑率為9600 : 「AT+UART=9600,0,0

  • 查鮑率: 「AT+UART? 」

如果改完鮑率請把藍牙電源拔掉再重新接上,再把KEY腳位接上3.3V,新的鮑率設定才會生效

 

  • 設定配對密碼為1234: 「AT+ PSWD=1234」

HC-05還有設定主動模式(Master)的功能,指令如下:

 

  • 設定被動模式: 「AT+ROLE=0」

  • 查詢主/從模式:         「AT+ROLE? 」

  • 設定主動模式: 「AT+ROLE=1」

  • 預設出廠模式: 「AT+ORGL」

如上圖所示,設成出廠模式時,可以用前面所知的AT指令可以查到所有的狀態,包括名字、鮑率、密碼皆已回復。如果之前設成主端(Master),後來也會回復設成從端(Slave)。

 

 

 

  1. [進階設定]HC-05主動模式和手機藍牙連線

既然已經知道如何手動下AT指令設定HC-05為主動模式的話,接下來試著跟手機藍牙連線吧!

既然要和手機連線的話,手機裡就必須先安裝有接收藍牙字串的APP,我是用Android系統的手機,Google paly商店可以搜尋名字為「Bluetooth Terminal」的APP,而在IPHONE的App store也可以搜尋得到一樣名稱的APP,這款APP可以和HC-05雙向溝通。

 

而如何知道手機的藍牙位址,可以由 :設定à關於手機à狀態,知道訊息。

再上一個段落已經知道如何設定HC-05的主動模式了,所以這節以主動連到手機藍牙位址為主。

下列敘述完整步驟,從設定主動模式開始:

 

Step1:切換至主動模式。

輸入指令「AT+ROLE=1」,收到回應「OK」,表示藍牙模組已進入主動模式。

 

Step2:確認藍牙模式。

輸入指令「AT+ROLE?」,收到回應「+ROLE:1」、「OK」,表示當前藍牙為主動模式。

 

Step3:指定藍牙連線至手機連接模式。

輸入指令「AT+CMODE=0」,收到回應「OK」,表示藍牙將連線至手機。

 

Step4:重啟藍牙。

輸入指令「AT+RESET」,收到回應「OK」,表示藍牙重置。

 

Step5:初始化SPP 函式庫。

輸入指令「AT+INIT」,收到回應「OK」,表示藍牙SPP函式庫已初始化。

 

Step6:設定詢問模式。

輸入指令「AT+INQM=1,9,48」,收到回應「OK」

1:RSSI信號強度指示。

9:可以搜尋9個藍牙設備。

48:搜尋時間為48*1.28秒=61.44秒內。

 

Step7:開始詢問,將搜尋周遭藍牙裝置。

輸入指令「AT+INQ」,收到回應「+INQ:12:34:567890:1F1F,7FFF」(該參數為藍牙Address,不同模組Address亦不同)、「OK」。

 

Step8:結束詢問。

輸入指令「AT+INQC」,收到回應「OK」,需要再次輸入指令「AT+STATE?」確認藍牙狀態,若藍牙回應為「+STATE:INQUIRING」、「OK」,代表藍牙未結束詢問,必須回Step4重啟藍牙和Step5初始化SPP 函式庫後,輸入指令「AT+STATE?」,回應為「+STATE: INITIALIZED」,才能成功連線手機藍牙。

 

Step9:綁定連線手機藍牙Address。

輸入指令「AT+BIND=1234,56,abcdef」(在此裝置Address以12:34:56:ab:cd:ef為例),收到回應「OK」。

 

Step10:和手機藍牙連線。

輸入指令「AT+LINK=1234,56,abcdef」

連線後,手機會出現輸入配對密碼1234,表示配對成功,之後就都不需要配對。

當配對成功後,接下來開啟Bluetooth Terminal,先按下「send」後,會出現之前配對成功的裝置清單,選擇之後即可雙向溝通。

下列是配對成功,HC-05和手機雙向溝通的畫面:

3.藍牙HC-06和用Arduino UNO 板設定AT指令教學(適合個人使用)

 

目前的HC-06藍牙會有四條針腳居多,分別是VCC、GND、TX、RX,以下是HC-06的正反面:

HC-06正面                                               HC-06反面

在設AT指令前,也是先與Arduino UNO接線,只需要接四條線。

和前面HC-05方法一樣,要先將Arduino UNO 的RESET和自己的GND接線,再和HC-06接在一起。

藍牙 Arduino UNO
VCC 5V
GND GND
TXD TXD
RXD RXD

 

HC-06出廠後多半都已經設定為從端(Slave),而AT指令只有少數的指令如:密碼、鮑率、姓名….等,以下Arduino UNO Serial monitor示範AT指令,所有AT指令皆要大寫:

 

  • AT測試,回應OK

和HC-05不同的是,因為Keyes的HC-06出廠時預設為9600,所以Serial monitor的鮑率選項要選9600,選擇「沒有行結尾」或「No line ending」。

測試成功後,接下來就是設定其他的AT指令:

 

  • 查詢版本: 「AT+VERSION」

  • 設定名字為CAVEDU02: 「AT+NAMECAVEDU02」

  • 設定密碼為1234: 「AT+PIN1234」

  • 設定鮑率為9600: 「AT+BAUD4」
編號 鮑率 備註
1 1200 設定鮑率為1200
2 2400 設定鮑率為2400
3 4800 設定鮑率為4800
4 9600 設定鮑率為9600(原廠預設)
5 19200 設定鮑率為19200
6 38400 設定鮑率為38400
7 57600 設定鮑率為57600
8 115200 設定鮑率為115200

與前篇HC-05最大的不同點是,假設你鮑率已經設成9600,若想要改鮑率或改名時,則你的Serial monitor的鮑率選項要選9600才能成功下AT指令;如果你鮑率已經設成38400,則你的Serial monitor的鮑率選項要選38400才能成功。也就是說,當你設定好之後就要記住自己鮑率是設定多少,否則就要每個鮑率去試試看,不像HC-05有固定鮑率為38400可以容易設定,這也是HC-06最大的缺點。

 

那麼問題來了,大家有沒有發現HC-06的AT指令比較少,並沒有像HC-05一樣有查詢address指令,那上課時怎麼辦呢?

個人較好的做法是在上課前先一一設定藍牙名字,上課時學員們才不會連到別人的藍牙。

因此我的建議是,HC-05和HC-06價錢如果差不多的話,可以買HC-05有較多的AT指令設定,上課時學員既可以學習去查address指令,又可以不會搞混連線到別人的藍牙,重點是老師就不用在上課前花時間設定所有學員的藍牙名稱。

 

  1. 藍牙HC-05 USB轉TTL模組設定AT指令教學

如果沒有Arduino UNO板,則用USB 轉TTL模組也是可以設定AT指令,那麼要在哪裡設定AT指令呢?

其實只要能夠讀取COM Port,使用任何一種終端機軟體皆可,如Putty、RealTerm….等等,我是使用AI的 CH430G USB 轉TTL模組,和使用AccessPort這個終端機軟體。

USB 轉TTL模組

 

AcessPort終端機

在使用AcessPort終端機前,HC-05先與USB 轉TTL模組接線:

USB TO TTL HC-05
3.3V KEY(or En)
5V VCC
GND GND
RXD TXD
TXD RXD

 

接線時要注意是和USB 轉TTL模組連接,USB 轉TTL模組TXD和HC-05的RXD互接;

USB 轉TTL模組RXD和HC-05的TXD互接。

 

再將USB 轉TTL模組插入電腦USB時,會自動安裝驅動程式:

驅動安裝好了之後,需來到裝置管理員查COM Port,這也是和藍牙溝通的COM Port,所以在AcessPort終端機要選同一個 COM Port。

打開AcessPort終端機後按齒輪圖示 ,設定好鮑率9600和COM Port:

再按下電源圖示 ,就可以設定HC-05 AT指令,AT指令請參考「1.分辨藍牙HC-05和Arduino UNO 板設定AT指令教學」。

並在下方發送區輸入AT指令後要先按下鍵盤Enter後再按下「發送數據」即可,以下方圖示表示:

5.藍牙HC-06 USB轉TTL模組設定AT指令教學

USB 轉TTL模組和HC-06接線圖:

要注意的一點是,USB 轉TTL模組的TX要接HC-06的RX;USB 轉TTL模組的RX要接HC-06的TX。

USB TO TTL HC-06
5.0V VCC
GND GND
RXD TXD
TXD RXD

 

AT指令和前面一致,請參考「2.分辨藍牙HC-06和用Arduino UNO 板設定AT指令教學」

並在下方發送區輸入AT指令後按下「發送數據」即可,以下方圖示表示:

 

相關文章:

 

[Micro:bit] 使用MicroPython與Boson套件設計智慧風扇

$
0
0

本篇文章將帶領讀者使用Microbit輕鬆打造一台小型的智慧風扇,有興趣的朋友不妨參考一下本文,一起來動手DIY吧!

作者/攝影   袁佑緣
時間   3小時
成本
難度   * * *
材料表
  • Micro:bit
  • 樂高積木
  • Micro:bit Boson 擴充版

 

介紹

本篇文章的主角是BBC推出的微型電腦micro:bit,有興趣的朋友不妨參考一下micro:bit的官方網站(http://microbit.org/),裡面有許多適合入門又豐富有趣的應用喔!

而為了要打造一台電動風扇,我們需要加裝額外的擴充版跟電子元件,本文所使用的是DFRobot推出的Boson擴充版,Boson是DFRobot 所推出的一系列電子套件,外型就像積木一樣,除了相容於LEGO之外,還可以用金屬羅絲固定,並且附有磁吸式的底座,容易組裝也容易拆卸,且電路的接口都有經過特別的設計,隨插及用,非常適合沒有電路基礎的小朋友們入門電子實做的世界!

 

想了解更多boson kit相關資訊的朋友,不妨去參考一下DFRobot的官方網站說明喔(https://www.dfrobot.com/blog-630.html)!

準備

經過前面的介紹,接下來我們就要來正式進入我們的實做部份了,首先我們在軟體以及硬體上做一些準備。

 

組裝擴充版

準備我們的micro:bit以及Boson擴充板,組裝圖如下,記得micro:bit的logo朝下面,有LED陣列的那面朝上喔,如果說到時候燒錄程式失敗的話,就會用LED陣列顯示出錯誤訊息。

micro:bit控制板

組裝micro:bit boson擴充板

組裝完成!

 

風扇製作

本範例的硬體主要是用LEGO來做,請參考下方的圖片,零件上用LEGO動力機械的基本套件就能完成囉,當然有興趣的朋友也可以自己DIY設計一個獨特風格的電風扇底座,只要記得上面要有四個boson的座,在待會的實做部份我們會慢慢放入感測器以及馬達、風扇。

軟體安裝

Micro:bit 預設的程式撰寫環境有兩種,一種是圖形化的JavaScript Blocks Editor,另外一種則是我們接下來用的MicroPython Editor。

Microbit let’s code 網站:http://microbit.org/code/

MicroPython 線上編輯器

 

 

MicroPython是將原本就容易學習的程式語言Python實做到為微控制板的架構上,好比說是micro:bit,以下是micro:bit MicroPython的詳細說明文件(http://microbit-micropython.readthedocs.io/en/latest/tutorials/introduction.html),裡面有詳細敘述許多的功能,以及API取用的方法,比起圖形化的Block Editor 來說雖然難度上升了一點,但是彈性也增加了,可以讓我們程式撰寫的功能範圍變得更廣!

MicroPython for micro:bit文件

 

除了使用剛剛在官網看到的線上版,也可以下載MicroPython文件中推薦的Mu Editor(https://codewith.mu/#download),這款編輯器主打簡單、易學,初學者只要專心在學習如何撰寫MicroPython上就好。

Mu 編輯器

 

除此之外,這個編輯器還是跨平台的,不只Windows平台上可以執行,macOS或者是Linux也可以,請讀者依照自己的作業系統環境來下載。

下載Mu Editor

 

下載完成後,打開來之後就會有如下圖的編輯器,當我們要上傳程式碼的時後,請先將micro:bit用usb線接到電腦上,再按下flash的按鈕就行囉!

實做

STEP1:控制馬達 

首先我們先加入Boson套件中的馬達,請裝在基座的正中間,組裝如下圖。

裝完馬達跟風扇之後,接下來請把Boson的訊號線接到micro:bit Boson擴充板的8號腳位上,也就是右上角的那個插座,如下圖。

再來請打開我們的Mu Editor,並打上以下的範例程式碼。

from microbit import *

mode = [700, 900, 1023]
while True:
    for speed in mode:
        print(speed)
        pin8.write_analog(speed)
        sleep(1000)

 

程式碼解說

首先從microbit這個Python函式庫中引入所有的函式,也就是把我們所需要的工具都加進這支程式當中。

接下來再宣告一個變數mode,為三個數字的串列(list),其實就是建造一個三段變速的電風扇,而裡面的數字大小代表的則是馬達的輸出馬力,數字越大就會越強,風力也越大,注意到1023是最高的馬力,而最低馬力700則是個建議的數值,太低的話有可能馬達會轉不到風扇,這點要特別注意喔!

最後我們有一個大大的while迴圈,裡面在包著一個for迴圈,所謂的迴圈就是會在某種條件下一直執行動作的意思,好比說while True就是一直迴圈,for speed in mode就是在三段變速中各執行一次的意思。

至於for迴圈裡面的所執行的動作,就是很直接的把我們的馬達設成三段變速中的速度囉!其中要注意的是,我們所使用是函式(function)是write_analog,意思就是用類比(analog)電壓去驅動我們風扇的馬達,因為用數位的模式就只有開跟關的模式,為了要做到變速的模式,才需要用到類比控制喔!

 

 

 

STEP2:開關控制 

有了馬達之後,我們學會了撰寫程式碼來控制電風扇,但是這樣在使用上可能還不夠直接,如果說我們要像生活中的電風扇一樣,可以有個按鈕來開關電風扇呢?這時候就需要加裝感測器(sensor)啦,請依照下方的組裝圖加上一個Boson套件的按鈕,並把它接到擴充版上的腳位12上。

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('ON' if fan_switch else 'OFF')
        pin8.write_digital(int(fan_switch))
        while pin12.read_digital():
            sleep(100)

 

程式碼解說

在這個範例中,我們把重點放在風扇的開關上,所以在控制轉動風扇的馬達時,我們使用的就不是像前面變速式的類比(analog)方式,而是開跟關兩種模式互相切換的數位(digital)方式,所以用的函式是用write_digital。

在程式中,我們有宣告一個變數fan_switch,用來儲存現在使用者控制風扇的按鈕狀態(第12號腳位),每當使用者按下開關又放開之後,就會改變一次fan_switch的狀態,有可能是從開的狀態轉成關(ON->OFF),或者是相反,只要我們把這個fan_switch變數轉成數字後丟到控制馬達的函式上,就能夠達到開關風扇的功能囉!

請參考下面的示範影片,讀者是否能能順利做到開關風扇呢?

 

STEP3:風量調整

 

接下來我們來整合一下前面兩步的範例,除了要能夠開關之外,還要加入一個旋鈕來調整風力大小,讓這個風扇更加的貼近使用者!

請按照下圖,加裝一個Boson 旋鈕套件到風扇的基座上,並把訊號線接到擴充板的0號腳位上,也就是板子的左上角。

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]

def fan_mode_switch(value):
    interval = int(1023/3)
    for i in range(3):
        if value >= i * interval and value < (i+1)*interval:
            break
    return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
        while pin12.read_digital():
            sleep(100)
    if fan_switch:
        mode, power = fan_mode_switch(pin0.read_analog())
        if mode is not previous_mode:
            previous_mode = mode
            print("Fan mode: ", mode)
            pin8.write_analog(power)
    else:
        previous_mode = 'OFF'
        pin8.write_analog(0)
    sleep(300)

程式碼解說

程式好像比起前面兩個程式碼加起來多了不少,就讓我們慢慢來拆解看看是怎麼實作的吧!

首先我們比起STEP1中的三段變速又更明確的定義了馬力(fan_power)跟風速模式(fan_mode)了,並且我們用def定義了一個自己的函式出來,這個fan_mode_switch函式主要會從吃進來的value值,也就是我們旋鈕轉到的數值,來決定我們現在風扇的模式,並輸出對應的馬力值。

而我們是如何判斷風扇馬力的模式呢?其實就是把我們的旋鈕數值(0到1023)分成三等份,然後看看當下使用者轉到的數值是落那一個區間上,就把它對應到三種不同的風力模式(slow, medium, fast)。

最後,這隻範例程式碼還有一個小細節是值得初學者去注意的,當我們在切換模式的時候,我們都必須要注意只有當前一刻風力模式跟此刻轉到的風力模式時才需要去改變我們馬達的轉速,同時顯示的馬力大小才需要去更新,所以我們會用一個previous_mode變數來儲存上一刻的模式喔!

以下是我們的示範影片。

 

STEP4:智慧風扇

最後,我們還想要加入一些常見的風扇沒有的功能,來讓我們的小風扇更加的智慧化,並貼近使用者的使用環境。請依照下面的組裝圖加上一個Boson套件的motion 感測器,並把訊號線接到1號腳位上。

而什麼是motion sensor呢?其實就是所謂的PIR(Passive Infrared Sensor),常見的用途就是用來偵測人體的接近(靠著生物體的紅外線),有時候我們在逃生梯上下樓時,電燈自動會開啟其實就是因為有這種感測器,它會自動偵測有人在走動來自動打光。

而我們想要實做的功能就是除了STEP3中有的功能以外,還要加入一個情境,如果偵測到有人的話,例如說偵測到人的手,就會自動開啟電風扇,而不需要特地去壓按鈕還開電風扇,一起來看是如何實做的吧!

以下是這個範例的程式碼。

from microbit import *

fan_switch = False
fan_mode = ["slow", "medium","fast"]
fan_power = [700, 900, 1023]

def fan_mode_switch(value):
    interval = int(1023/3)
    for i in range(3):
        if value >= i * interval and value < (i+1)*interval:
            break
    return fan_mode[i], fan_power[i]

previous_mode, power = fan_mode_switch(pin0.read_analog())

while True:
    if pin12.read_digital():
        fan_switch = not fan_switch
        print('Fan status: ' + ('ON' if fan_switch else 'OFF'))
        while pin12.read_digital():
            sleep(100)
    if fan_switch:
        mode, power = fan_mode_switch(pin0.read_analog())
        if mode is not previous_mode:
            previous_mode = mode
            print("Fan mode: ", mode)
            pin8.write_analog(power)
    elif pin1.read_digital():
        fan_switch = True
        print('Fan status: ' + 'ON')
    else:
        previous_mode = 'OFF'
        pin8.write_analog(0)
    sleep(300)

程式碼解說

比起STEP3的程式碼,我們延伸了主結構中的if…else…,將fan_switch的狀態以外,再新增(elif)了一個motion sensor的狀態(pin1.read_digital),注意到motion sensor只能偵測是否有人靠近,所以使用的是數位的訊號(digital),它無法偵測距離多寡,而且如果身體靜止一段時間的話,也不會觸發motion sensor喔!

以下是我們最後完成的智慧風扇影片,可以用按鈕開關風扇,還可以用旋鈕調整轉速,並且還能用motion sensor在有人的時候自動開啟風扇!

 

相關文章:

 

 

 

 

[App Inventor+Microbit小專題 ] LED控制

$
0
0

作者/攝影   曾吉弘
時間   3小時
成本
難度   * * *
材料表
  • 個人電腦
  • App Inventor開發環境
  • 支援BLE的Android手機
  • BBC Micro:bit開發板

本文要介紹如何讓App Inventor 透過 BLE 來與最近非常熱門的BBC Micro:bit開發板互動。Micro:bit板子上已經具備了BLE藍牙通訊功能,搭配app Inventor寫好的micro:bit extesion,就能有更多互動的效果。本範例修改自 MIT App Inventor IoT網站之 Micro:bit範例

範例 aia檔下載請按我

藍牙配對

 

Micro:bit端設定:

  1. 同時按住Microbit 正面A、B按鍵,不要放掉
  2. 按住A、B鍵時,把背面的Reset 鍵按下後再放開。
  3. 這時應該可以看到 “PAIRING MODE!” 以跑馬燈方式出現在Microbit LED 螢幕上,若看到這訊息,便可以放開A、B鍵。
  4. PAIRING MODE! 結束後,會看到一個圖形出現在Microbit LED 螢幕上,不同的Microbit 出現的圖案也不同,這是Microbit 不同裝置獨特的”簽名” (Signature) 。

  1. 這時候的Microbit 已經準備好跟其他裝置配對,請看以下影片教學

 

 

 

Android手機端設定:

1.進入Android手機的設定–>藍牙

2.確認Micro:bit 已進入配對模式

3.當Micro:bit上的‘PAIRING MODE!’ 顯示完,搜尋(每隻Android手機這個選項的文字不一定相同,但意思差不多),應該會看到類似 micro:bit [XXXXX]的選項,其中XXXXX 會根據每片micro:bit而不同。點選該裝置來配對。

4.micro:bit 會出現向左的箭頭,然後Android裝置上會跳出畫面要求輸入配對PIN碼的視窗。

5.按住Micro:bit 的按鍵A ,這時microbit 會連續出現六個數字,這就是配對碼。

6.回到Android裝置上,輸入這六個數字。如果Microbit 出現[V],代表配對成功。如果是[X]代表沒成功,請再試一次

編寫程式來控制Micro:bit LED matrix

匯入BLE 與 micro:bit extension

 

請登入MIT App Inventor官方網站,建立新專案,在Designer葉面中點選Palette左下角的Extension,再點選”Import extension“與”URL:

  1. 貼入以下兩個 extension link:

 

2. 請加入 Microbit_Led 這個元件,這是一個非可視元件。並把它的 BluetoothDevice 屬性設為 “BluetoothLE1″。這步驟很容易忘記,別漏掉了

  1. 加入四個按鈕放入 horizontalArrangement元件中,分別用於掃描、停止掃描連線與斷線
  2. 加入一個說明訊息用的 label
  3. 加入一個 ListVeiw,當掃描到鄰近的BLE裝置時會顯示在這裡
  4. 新增一個 TextBox,在此輸入我們希望 micro:bit呈現的英文字(中文不行喔)
  5. 新增兩個按鈕,一個是 [Write to LED] 把 Textbox 內容丟給 micro:bit ,一個是[DrawSmiley],讓 Micro:bit 呈現我們所指定的點陣圖案。

Blocks頁面

  1. 掃描與連線

  1. 畫笑臉副程式

在此用一個副程式 DrawSmiley 來代表,我們會用一個 5 x 5 的數字陣列發給 Micro:bit,就能藉此顯示我們想要的圖形。

在此用到的是 Microbit_Led1.WriteLEDMatrixState指令搭配 binary to base 10 指令組合起來的 0101 陣列,1代表 LED亮起,0則是熄滅。仔細看看,這樣就是一個笑臉呢

0 1 0 1 0

0 1 0 1 0

0 0 0 0 0

1 0 0 0 1

0 1 1 1 0

  1. 發送Textbox內容到 Micro:bit

沒錯,就這麼簡單,直接把 Textbox內容透過 Microbit_Led1.WriteLEDText指令發送出去就好,但不能打中文喔

斷線

斷線時會呼叫 bluetoothLE元件來中斷藍牙連線,確認斷線之後則顯示相關訊息。

完工了!來試試看吧。請確認您的Micro:bit與Android已經配對好了。按下按鈕應該可以看到您在 Textbox 中輸入的文字(中文不行喔)以跑馬燈的形式出現在micro:bit 的 LED matrix 上。按下 smilley 按鈕應該也能看到笑臉圖案, 試試看用 Micro:bit LED 搭配 App Inventor 做出更多功能吧

 

相關文章:

 

完成如下圖:

[LattePanda] 使用Google Assistant玩互動語音助理

$
0
0

作者/攝影   袁佑緣
時間   1小時
成本
難度   * * * * *
材料表
  • LattePanda
  • 螢幕
  • 鍵盤
  • 滑鼠
  • 喇叭
  • 麥克風

本文說明如何使用 LattePanda搭配Google推出的Google Assistant服務,來打造一個智慧助手,一起來看看是如何完成的吧!

 

STEP0. 事前準備

為了要能夠使用語音服務,除了我們的小電腦LattePanda外,請額外再準備USB麥克風以及喇叭,另外本次的範例會需要連到Google 雲端的服務,所以請確認LattePanda能夠連到網路。

 

STEP1. 首先我們要到先設定一個Google Developer Project

請點選以下的網址到Google Cloud Platform,如下圖。

https://console.cloud.google.com/project

接著請點選”CREATE PROJECT”,建立一個新的專案,如下圖,建立一個新專案名稱為my-google-assistant。

初始設定完成後,要等幾分鐘才會建立完成,回到Platform的右上角可以看到正在建立新專案。

 

STEP2. 接著我們要完成Google Assistant API的設定

首先,請連到Google API的設定網頁(https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview),並把Google Assistant API設定為”ENABLE”。

接著,為了要取用Google雲端的API,我們必須先有一個認證的client端,所以請連到以下的網址來建立一組oauth client ID。

https://console.developers.google.com/apis/credentials/oauthclient

而如果還沒有設定過Consent Screen的話,系統會提示您填上必要的設定,請點選”Configure consent screen”,設定如下圖。

最後回到”Create client ID”這一步,在Application Type填上Other即可。

到這裡,我們就已經完成了Client ID的設定囉!

最後,請把這個Client ID資訊下載到電腦上(請點選右方的下載箭頭),待會在進行Google Assistant認證的時候會用到。

STEP3.設定Google Acitvity

 

在進到安裝Google Assistant 的程式之前,我們要先設定一下這個Google帳號的

Activity,請連到以下的網址進行設定。

 

https://myaccount.google.com/activitycontrols

 

至於什麼是Activity呢?簡單說就是允許Google能否取用某些個人資訊,例如聲音、App資訊等,為了要能夠讓Google助手能正常運作,請將以下三個Activity設為Enabled。

 

Web & App Activity

Device Information

Voice & Audio Activity

STEP4.安裝Google Assistant SDK Python函式庫

我們使用的Google Assistant SDK是基於Python這個程式語言下去實做的,所以必須先在電腦上安裝Python的執行環境。

請到Python的官網(https://www.python.org/downloads/windows/)下載最新版的安裝檔。

接下來執行下載的Python安裝檔,並記得將勾選”Add Python to PATH”的選項,讓Python的執行位址加到Windows的系統變數中。

再來,請按下Windows的快捷鍵<Win>+R,啟動Windows快速開啟,並打上cmd呼叫Windows Command Prompt。

請在開啟的Command Prompt中輸入以下指令

 

pip install –upgrade setuptools

 

呼叫Python的套件管理員更新setuptools這個套件。

接著再輸入以下指令

 

pip install –upgrade google-auth-oauthlib[tool]

 

把Google認證oauth client的工具安裝到系統中。

還記得我們在STEP2中下載的Client ID JSON檔嗎?請將下載的JSON檔的位址複製起來,並改到以下指令中的”path/to/client_secret_XXXXX.json”

 

在Command Prompt中輸入以下指令以完成認證。

 

google-oauthlib-tool –client-secrets path/to/client_secret_XXXXX.json –scope https://www.googleapis.com/auth/assistant-sdk-prototype –save

 

Google會自動提示您在瀏覽器中完成認證,認證完成如下圖。

認證完的credential.json會自動存在電腦的系統上,Windows環境中預設會存在AppData中,使用者以後在啟動Google Assistant時不用擔心需要再次認證。

最後我們看到Google Assistant SDK的source,前面有說過這個SDK是基於Python這款程式語言去實做的,使用上非常容易上手,而官方的github網址在這邊(https://github.com/googlesamples/assistant-sdk-python)。

裡面有紀錄如何安裝SDK,以及如何去使用提供的函式庫功能,另外還有一些現成的範例可以讓入門的使用者去做體驗,如果讀者想要擴充、修改自己的Google Assistant的功能,可以下載(Download ZIP)整個專案來去修改,有興趣的朋友不妨去嘗試看看!

 

而本文章為了快速的demo,在這邊直接使用包好的assistant-sdk範例套件,讓使用者可以省去下載、手動安裝的過程,所以請在Command Prompt中輸入以下指令

 

pip install google-assistant-sdk[samples]

 

最後我們輸入以下的指令來執行一個簡單的範例pushtotalk。

 

googlesamples-assistant-pushtotalk

 

這支pushtotalk會提示使用者按下Enter鍵並開啟Google Assistant的語音對談功能,請確定您的麥克風與喇叭都有接到LattePanda上,並確認前面的步驟都設定正確,接下來就可以來玩玩看Google Assistant有什麼功能吧!

 

 

相關文章:

 

 

 

Viewing all 678 articles
Browse latest View live