Category Archives: Arduino嵌入式開發板

[雙A計畫] 常見問題整理

許多朋友對於 App Inventor 透過藍牙來控制 Arduino 這個議題相當有興趣,事實上通訊這個主題一直是非常吸引人的,當然也有一定程度的難度啦…

首先整理我們雙A計畫文章總覽:

[雙A計畫] 常見問題整理

[雙A計畫] 藍芽模組(HC05/06)常用指令教學

[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

[雙A計畫] Part6:Arduino 傳兩筆資料到 Android 手機

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

English version

Arduino LED Blink

Arduino LED PWM

Arduino LED Blink (Arduino 101 with BLE)

Arduino LED PWM (Arduino 101 with BLE)

就以下這兩點來說,讓大家有些基礎的概念:

1. 絕大部分的狀況,控制端(例如Android手機) 與被控端(例如 Arduino ) 的程式語言是完全不同的。

2. 牽涉到通訊與硬體就是很麻煩,錯任何一項就是不會動,所以要檢查再檢查喔!

請先參考我們的教學投影片,所有的雙A計畫範例請點我下載


補充一些常見問題如下

1. BTList 點選下去漆黑一片

手機需要先與藍牙發射器配對,我們才能用這個指令來抓到 Android 手機已配對的藍牙裝置位址(address)與名稱(name)。當然您可以直接使用藍牙發射器的 MAC address 來連線,但非常不建議這麼做,因為很容易輸入錯誤而當機。或是您很確定就是要連某片藍牙發射器的話,就把位址寫死在App Inventor 裡吧。

螢幕快照 2015-02-19 下午8.58.27

2. Serial Monitor 亂碼

請檢查鮑率。這會寫在 Arduino 程式中的這一行: Serial.begin(9600);

3. 藍牙發射器上的 LED 燈閃爍或是一直亮是什麼意思?

以 HC05, Hc06 這兩款常見的藍牙發射器來說,只要通電就會閃紅燈,代表正常啟動並可接受外來連線要求。一旦連線成功之後,

4. 藍牙發射器配對碼是什麼?

一般來說都是 1234 或 0000 。您可以透過 AT  command 來修改,但沒有必要。

5. 為什麼需要修改藍牙發射器名稱?鮑率需要改嗎?

就教室管理的角度來說,這件事很重要,否則 Android 掃描下去會看到十幾片同樣名稱的裝置,這樣就無法順利配對完成了。因此建議學校老師可以先使用 AT command (請參閱以上投影片)把藍牙發射器名稱改成 BT001, BT002 或任何好管理的名稱,再把這個名稱用標籤貼紙貼在發射器上。

鮑率一般來說不需要修改。

以上兩件事,如果您是個人使用者,周遭只有一片藍牙發射器而不容易搞混的話,就不太需要做這件事。

6. 什麼是序列通訊?

 

簡單來說,就是在同一條線上一次發送一個位元,因此是先發出去的一定先到。Arduino 端是透過I2CBT.read() 與 I2CBT.write() 來讀寫藍牙序列資料。與序列通訊對應的就是平行通訊,可以同時發送多筆資料。

補充:維基百科的序列通訊頁面

7. 為什麼在範例3 中要加入檢查碼?不加會怎麼樣?

封包傳輸過程中,會有一定的機率遺失,這與傳輸長度以及訊號強弱有關係。當然無線又比有線來的容易掉封包,因此如果掉了一個封包導致讀取位置錯誤的話,您就會感覺到資料怪怪的(例如電位器明明沒有轉動,但手機畫面的數值跳動範圍很大)。因此我們加了字元 ‘a’ 作為資料的第一段,App Inventor 每次讀到a,就知道這是一段封包的第一包(data[0]),就會接續處理後續兩筆資料(Data[1] 與 Data[2])。

至於要使用什麼字元,只要通訊兩端講好就好。重點在於哪邊是頭,以及一次要讀取多少 byte 的資料。這可以說是最基礎的通訊協定(protocol)喔!

螢幕快照 2015-02-19 下午9.31.52

另一方面,手機端會透過 Clock 元件定期發送 49 ,告訴 Arduino: [你可以把資料丟過來囉!]。Arduino 會在讀取到這筆資料後,把 Data[] 陣列送出去。我們可以將其視為基礎的握手(hand shaking)機制

螢幕快照 2015-02-19 下午9.31.41

 

 

8. 同一片藍牙發射器可以同時被多台 Android 裝置連線嗎?

無法。藍牙發射器是被控端 (slave),Android 裝置 (master)則視實際狀況可以控制多個 slave。例如兩台樂高機器人:

9. 程式無法順利執行?

這其實牽一髮動全身,大概會有幾個問題

a. 兩邊的程式沒有對應,請再次檢查程式是否正確

b. 藍牙發射器沒有先與Android 手機配對完成,請參考 1.

c. 連線失敗,請確認藍牙發射器的燈號是閃爍的紅燈。連線成功會恆亮紅燈。如果一開始就恆亮紅燈代表前一個連線還沒結束,這時候就無法被連。我們在 App Inventor 程式中是在點選之後發起連線 (BluetoothClient.Connect 指令),因此您在此會感覺到程式稍微停頓了一下,就是這時候 Android 會對藍牙發射器進行連線。

螢幕快照 2015-02-19 下午9.12.03

d. 執行程式時,可以先按一下 Arduino 的 reset 鈕讓程式強制重新啟動,確認藍牙發射器在閃紅燈,這時再執行手機 app。

最後也請大家參考 Cooper Maa 的藍牙教學,祝大家順利成功喔~

 

LabVIEW 藉由滑鼠控制 MeArm (四伺服機的機械手臂)

使用LabVIEW 控制 Arduino,藉由滑鼠點選左右鍵來控制 MeArm 的單顆伺服馬達 (四伺服機的機械手臂)。能控制一顆就能夠控制四顆,但我們先從一顆伺服馬達開始。

程式如下:在 while loop 中的下段是取得滑鼠狀態,並取得滑鼠左鍵 (button 1) 與右鍵 (button 2) 的狀態。

進到上段的兩個 case structure 之後,如果左鍵被按下就讓 servo 角度累加5,如果是右鍵就累減5。藉此達到滑鼠控制的效果。當然啦,改用電玩手把的話就可以用類比搖桿來控制 servo,效果就更棒了。

更多 LabVIEW + Arduino 的教學請按我 ,別忘了 CAVEDU 的 LabVIEW for Arduino:控制與應用的完美結合 這本書喔gggg

 

最後來看影片吧

[新譯書上市] 實戰數位家庭自動化:使用Arduino

書名:實戰數位家庭自動化:使用Arduino

作者: Marco Schwartz
譯者:CAVEDU教育團隊  曾吉弘
出版社:碁峰
出版日期:2015/02/25
語言:繁體中文

定價:$320,特價$240元

與咱們翻譯的另一本 實戰物聯網開發:使用Arduino Yun 相比,這本書是同一位作者的另一本著作,使用 Arduino UNO 搭配 Xbee 無線模組,用多個專題來介紹家庭自動化這個議題。歡迎列入參考書單喔!

ach017900-01_Fotor

購書請按我

Arduino已經被上百萬人用來開發電子裝置的原型,同時它也是用來打造家電自動化的完美平台。本書將以專案實作的形式,帶領您應用Auduino打造家電自動化系統。一開始先從幾個簡單的小例子開始,像是打造動作感測器、遙控電燈、利用藍牙傳送溫度感測器的數據。接著,將導入物聯網技術,您可以將資料送上雲端,並學會如何控制現有的裝置,打造一套您專屬的家電自動化系統。

您可以從本書學到:
.利用Xbee打造動作感測器
.如何使用Arduino控制家電
.如何利用Wi-Fi控制電燈
.利用藍牙與Aruduino遠端監測溫度
.透過雲端監控用電狀況
.使用EAGLE軟體自己設計PCB,自製PCB板

Chapter 01 製作 XBee 無線動作感測器
Chapter 02 使用手機或平板電腦控制燈光
Chapter 03 透過藍牙來量測溫度
Chapter 04 用 Xively 建置雲端氣象站
Chapter 05 在雲端監控能源消耗
Chapter 06 改裝商用家庭自動化裝置
Chapter 07 自製家庭自動化系統

150131 雙A計畫 Arduino x App Inventor 藍牙遙控機器人研習 @高雄 Hito Maker

今天是 CAVEDU 與 Hito Maker 合辦的 Arduino 習作工坊最後一場,最近很多雙 A 研習哩,足見 App Inventor 結合 Arduino 的多元魅力:快速、擴充性高與趣味(最後一點真的很重要)

先祝大家新年快樂,三月之後會有更多有趣的課程到熱情的高雄喔!Arduino Yun 聽說是大家都在詢問的課程呢。

141213 Arduino習作工坊@高雄:燈光與馬達

SAMSUNG DIGITAL CAMERA

先從 Arduino 雙輪機器人開始,搭配 L293D 來控制直流馬達方向與轉速。

SAMSUNG DIGITAL CAMERA

阿吉老師深入說明 App Inventor 實際上就是透過 BluetoothClient 元件來發送字元給 Arduino,換言之今天可以用按鈕2015-01-31 17.38.36

螢幕快照 2015-01-31 下午5.37.57
不同的按鈕發送不同的字元

 

螢幕快照 2015-01-31 下午5.42.00
姿態感測器大於30度,或是語音辨識結果為”前進”時發送字元

 

SAMSUNG DIGITAL CAMERA

SAMSUNG DIGITAL CAMERA SAMSUNG DIGITAL CAMERA  SAMSUNG DIGITAL CAMERA

Arduino Yun 使用 Temboo 服務發布 Facebook 動態

本文要告訴大家如何使用 Temboo 服務來發布 Facebook 狀態。請先到 Temboo 網站註冊一個帳號。按著本篇操作您就能讓您的 Arduino yun (其他可上網的 Arduino 也可以)自動發布 Facebook 狀態喔!

咱們的 Arduino Yun 系列文章請點我

1. Temboo 網站左側的 Facebook 選單中找到 / Publishing/SetStatus,我們可由此一步步操作完成。

yun_FB_001

2.  目標:先取得 OAuth Tokens 再取得 AccessToken。由於像 Facebook 或 Twitter 這類社群網站是代表您個人,所以對於外部程式的連結要求一定會更嚴格,請耐心操作喔。

yun_FB_002

3. 在頁面上方記得開 IoT Mode / Arduino Yun。在此的開發板選項有

  • Arduino + 網路擴充板
  • Arduino Yun
  • 德儀 LaunchPad

yun_FB_003

4. 這時 Temboo 會要求您在Facebook Developer建立一個app,用您原本的帳號登入即可。您可以能需要透過簡訊才能認證完成。

yun_FB_004

5. 在 Facebook 開發者頁面中,建立一個app。並在左側的 Settings 選單中點選下方的 + Add platform ,並選擇 Website。在 Site URL欄位中填入 https://www.temboo.com/oauth_helpers/confirm_facebook/  。我們實際上是讓 Temboo 透過 App ID 與 App Secret 去連結到您的這個 Facebook app 才能進行 Facebook 的相關動作。我這個 Facebook app 叫做 caveyun

完成如下圖。接著回到 Temboo 網站按 NEXT

yun_FB_005

6. 填入您的 Facebook App IDApp Secret 。

yun_FB_006

7.  啟動認證 – 同意外部連結。點選畫面中的 LUANCH AUTHORIZATION 會跳到 Facebook 的同意畫面,請點選同意。由於本範例會發布動態,請決定這個app 的動態的檢視權限(所有人、朋友或您自己)。否則太過頻繁發文,朋友會以為您被盜帳號啦!

yun_FB_007

8. 歷經千辛萬苦終於取得 AccessToken…  請點選 USE THESE VALUES 會直接帶到下一個畫面。

yun_FB_008

9.  可看到 AccessToken 已經自動帶入,請在 Message 欄位填入您想要發表的內容。按下右下角的 Run 就會發布動態。

yun_FB_009

10. 這是 Facebook 的回應,預設為 JSON 格式。畫面下方會帶出範例程式,請複製這份程式到您的 Arduino IDE 中並執行,應該也是一樣能發布 Facebook 狀態喔!

yun_FB_010

 

11. 回到您的頁面看看,順利發布完成囉!!您可以看到是透過 caveyun 這個 app 來發佈的。

yun_FB_011

150131 86duino 研習

不只是Arduino:86Duino為台灣的瞻營全電子所開發的新一代的開放式硬體平台(open-source hardware platform),採用Vortex86EX 處理器,提供更快的處理效能及高擴充性,且完全相容Arduino系列,並可支援x86架構的作業系統及執行以Arduino為基礎的系統。

86Duino採用了高性能32位元的x86兼容處理器,可以額外安裝作業系統,在單一封裝內集成了PCIE,DDR3,ROM控制器,xISA,I2C,SPI,IPC(DMA和中斷定時器/計數器包括內部外設控制器),網路,FIFO UART,USB2.0和SD/ SATA控制器形成一個系統級晶片(SOC)。

86Duino 提供了一個超完美的解決方案,讓使用Arduino及嵌入式系統的藝術家、設計師、業餘愛好者、任何有興趣的人,建立打造互動式科技所需的性能。

報名請按我

86Duino EduCake_05-500x500

86Duino原廠網站:
http://www.86duino.com/

主辦單位:CAVEDU教育團隊、翰尼斯企業有限公司

協辦單位:智能機器人研究所、《Make》國際中文版

時間 : 104年1月31日 星期六 09:30~17:00

地點 : 翰尼斯企業有限公司 台北市中正區中華路二段165號1樓

備註: 請自行攜帶筆記型電腦,以便實際操作。本次研習使用 86duino Educake。

收費:3,600元。名額有限,請儘早報名

付款方式:
1.匯款:
銀行名稱 :華南商業銀行 雙園分行
戶名 :翰尼斯企業有限公司
銀行代號 :008
帳號 :122-10-015315-3
2.來店付款
翰尼斯企業有限公司
台北市中正區中華路二段165號1樓
3. 線上付款
機器人王國網路商城
http://shop.robotkingdom.com.tw/

超級好禮相贈:
1. 86Duino Educake一組。

活動議程:

09:30 CAVEDU 教育團隊簡介

09:50 86duino 硬體介紹、下載開發環境
安裝驅動程式

10:30 基礎電子電路實作(接線,麵包板)
Arduino 結合感測器:按鈕、光敏電阻、可變電阻
揚聲器 – 簡易發聲原理,認識頻率

11:30 I2C通訊- 讀取加速度與電子羅盤之三軸變化

12:00 中餐

13:00 86duino 網路功能 – 擷取指定網站頁面字元

14:00 86duino SD卡功能 – 將感測器資料連續寫入 SD卡指定路徑檔案中

15:30 86duino 使用 Linux 開機與相應操作。

16:40 結語、賦歸

注意:主辦單位保留修改與解釋活動之所有權利。

服務電話:02-23062900
service@cavedu.com

來看看使用 86duino Educake 搭配 USB 鍵盤來控制 servo

 

 

150117 自己的Arduino自己做@Makerbar Taipei

1/17 星期六,有許多朋友來 MakerBar Taipei 一起來自製 Arduino。我們使用 ATTiny85 處理器來自製一個簡易 Arduino。但是功能也相當不錯喔,PWM、控制 servo 與藍牙遙控等等。

教學請看這裡,您也可以自己做做看!

以往相關的文章請點我

P1110576

上課燒燙燙的照片喔~

 

 

來看一下實機影片

LED 呼吸燈

控制伺服機

藍牙遙控

[LinkIt One 教學] 連接 LinkIt ONE 到 MediaTek Cloud Sandbox

本文要介紹如何讓您的 LinkIt ONE 開發板連上 MediaTek Cloud Sandbox 雲端服務。官方說明

前言

首先是在 MCS 上建立一個測試用裝置來代表您的 Linkit one 開發板,接著上傳 Arduino 程式碼好讓這片板子可以藉由 RESTful API 把 代表 D13 LED 燈狀態的資料點(data point) 發佈到 MSC,就能用 MSC 來控制 LED 燈狀態(使用  TCP Socket)。

硬體需求

您需要完成以下兩步驟::

  1. LinkIT ONE 開發板,用USB 或電池供電皆可
  2. 可讓 LinkIT ONE 開發板連上的無線網路

其它則不需任何電子零件,當然您之後要再加入也是可以的。

Step 1. 建立開關式資料通道(Switch-Type data channel) 的新產品 (product)

a. 登入 MSC 之後,請在左側導覽列點選 “Development“,接著點選 “Create” 來建立新產品

b. 請為您的產品填入相關資訊,包括名稱、版本、晶片版號、產品簡述等等,最後點選 save 存檔完成。

c. 在新建完成的產品頁面點選 “Detail

d. 在本頁面中,選擇 “Data Channel” 標籤並點選  “Add” 來建立新的資料通道。

在此要建立兩個資料通道,一個是用來呈現板載 LED 狀態的顯示器資料通道(Display Data Channel);另一個則是對 LinkIt ONE 開發板發送指令來控制 LED 亮滅的控制器資料通道(Controller Data Channel)

e. 請點選 “Display” Data Channel” 並輸入以下資訊:

請把 Data Channel Id 記下來,之後在進行 API 呼叫時要用它來識別。

f. 重複上一步,但請選擇 “Controller” Data Channel” 並輸入以下資訊。它也有一個 Data Channel Id, 請記下來,之後在進行 API 呼叫時要用到它。

g. 完成之後,您應該會在頁面上看到兩個資料通道,如下圖:

Step 2. 建立測試裝置

a. 請點選網頁右上角的 “Create Test Device” 來建立測試裝置。

b. 一旦建立好測試裝置之後,就會看到這個訊息視窗,建立成功囉!

c. 請點選左側導覽列的 “My devices“,您應該可以看到剛剛新增好的 test device。

d. 請點選 “detail” 來看一下裝置頁面。請把裝置ID (deviceId) 與 裝置金鑰(deviceKey),稍後呼叫 API 時會用到。

Step 3. 取得 Device ID, Device Key, Data Channel ID

以下是我們要控制這個 test device 裝置所需要的資訊。請注意以下的 deviceIddeviceKey 要使用您自己裝置的資訊,別忘了在程式碼中修改。

NameValueRemark
deviceIdDsre1qRQUnique Identifier for this Test Device
deviceKeyDFbtsNWg4AuLZ30vUnique API Key for this Test Device
dataChannelIdLEDData Channel Id for LED status
dataChannelIdLED_CONTROLData Channel Id for LED control

Step 4. 編寫開發板的程式

開發板端的程式流程如下,程式碼請由此下載。請注意,本份程式碼需要用到 HttpClient 函式庫,記得下載喔

a. 呼叫 RESTful API:GET api.mediatek.com/mcs/v2/devices/{deviceId}/connections.csv 。藉此取得 Socket Server IP 與Port 的回應值。

b. 初始化 TCP 連線的 socket server

c. 透過 RESTful API ,每5秒鐘上傳一次 D13 (LED) 的狀態到 MCS:POST api.mediatek.com/mcs/v2/devices/{deviceId}/datapoints.csv

d. 透過 TCP 連線來監聽由 MSC 發來的切換指令

e. 每 90 秒更新一次 TCP 連線

Step 5. 啟動!

上傳程式完成的話,請確認裝置真的連上無線網路(天線記得插!),並開啟 Serial Monitor 來看看是否有下列的連線確認訊息。

現在可以回到裝置頁面,這時 LED controller 已經正常運作了,當您將 LED 切換到 ON 時,板子上的 LED 就會亮起來,接著and moments later the state of the LED data channel 的狀態也會跟著顯示為 ON state。另外當您將 LED 切換到 OFF 時,板載LED會熄滅,LED data channel 也馬上會顯示為 OFF state。

完成了,您可以控制 LED 了嗎?

141209 Arduino Yun 物聯網結訓囉 @FutureWard 未來產房

為期四周的 Arduino Yun 物聯網課程結訓囉,大家應該都被折磨的很徹底才對。Arduino Yun 的強項當然在於聯網,不過要連怎樣的網頁甚至是網路服務,這就需要一些額外的申請步驟與認證手續。不會很難,只是麻煩點就是了。

我們四次上課的內容如下:

1. Arduino yun 硬體介紹、環境設定與無線網路設定(可透過無線網路來燒錄 Arduino 程式)。

2. 認識 REST API,能藉由瀏覽器指令(例如 http://arduino.local/arduino/digital/13/1 )控制或讀取腳位狀態

。藉由繼電器來控制一般家電(檯燈),並可自動寄發 Gmail(使用 Temboo 服務)

3. 使用 DHT11 溫濕度感測器,將感測器資料上傳到 Google Docs 試算表、發布訊息到 Twitter 社群網站。

4. 登入 Arduino Yun 的 Linux machine,下指令讓 Webcam拍照。藉由 PIR動作感測器來觸發拍照並上傳到 Dropbox 服務。

上課投影片請由此下載 (全部都放在 SlideShare),CAVEDU 會陸續把所有投影片上線。也歡迎大家許願告訴我們您需要哪方面的內容喔

P1300923

[LinkIt ONE 教學] 取得 Facebook 粉絲頁的 JSON 物件

各位朋友新年快樂,這篇文章要介紹如何使用 LinkIt ONE 來取得 Facebook 粉絲頁底層的 JSON 格式,您可以參考我們日前用 App Inventor 做的版本

LinkIt ONE 的 Wifi / BT 天線是整合在同一支,只要接上板子即可,如下圖。

2015-01-03 16.36.20

在程式中有一個叫做 c 的 LWiFiClient 物件,它負責管理網路相關的動作,get 與 post 等等

LWiFiClient c;

接著在 loop() 中,就透過 c.read() 把指定 URL (再次使用 CAVEDU Facebook 專頁的 open graph) 的字元逐一顯示出來。如下圖的最後一行  { “id” = …  開始就是了。有了這些資料之後就可以玩很多東西了。

while (c)
{
int v = c.read();

if (v != -1)
{
Serial.print((char)v);
}…   //以下省略

 

 

linkit_002

完整的程式碼如下,歡迎您也入手一片 LinkIt ONE 與我們互相討論喔~

/*
  Web client

 This sketch connects to a website 
 using Wi-Fi functionality on MediaTek LinkIt platform.

 Change the macro WIFI_AP, WIFI_PASSWORD, WIFI_AUTH and SITE_URL accordingly.

 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 modified 20 Aug 2014
 by MediaTek Inc.
 */

#include <LTask.h>
#include <LWiFi.h>
#include <LWiFiClient.h>

#define WIFI_AP "XXX"   //your WIFI AP
#define WIFI_PASSWORD "YYY"  //WIFI PWD#define WIFI_AUTH LWIFI_WPA  // choose from LWIFI_OPEN, LWIFI_WPA, or LWIFI_WEP.
#define SITE_URL "graph.facebook.com"  // note that "caveeducation" is part of the HTTP request rather than host name.

LWiFiClient c;

void setup()
{
  LTask.begin();
  LWiFi.begin();
  Serial.begin(115200);
  
  while(!Serial)delay(100);

  // keep retrying until connected to AP
  Serial.println("Connecting to AP");
  while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)))
  {
    delay(1000);
  }

  // keep retrying until connected to website
  Serial.println("Connecting to WebSite");
  while (0 == c.connect(SITE_URL, 80))
  {
    Serial.println("Re-Connecting to WebSite");
    delay(1000);
  }

  // send HTTP request, ends with 2 CR/LF
  Serial.println("send HTTP GET request");
  c.println("GET /caveeducation HTTP/1.1");
  c.println("Host: " SITE_URL);
  c.println("Connection: close");
  c.println();

  // waiting for server response
  Serial.println("waiting HTTP response:");
  while (!c.available())
  {
    delay(100);
  }
}

boolean disconnectedMsg = false;

void loop()
{
  // Make sure we are connected, and dump the response content to Serial
  while (c)
  {
    int v = c.read();
    if (v != -1)
    {
      Serial.print((char)v);
    }
    else
    {
      Serial.println("no more content, disconnect");
      c.stop();
      while (1)
      {
        delay(1);
      }
    }
  }

  if (!disconnectedMsg)
  {
    Serial.println("disconnected by server");
    disconnectedMsg = true;
  }
  delay(500);
}
LinkIt ONE 取得 Facebook JSON object

2015 Arduino習作計劃PLUS! @MakerBar Taipei

MakerBar與CAVEDU的Arduino習作計劃PLUS又來囉!本梯次結合12月加開的機器人之夜,一系列共五堂課,給大家最完整的Arduino習作計劃PLUS!  不僅有燈光、有動作還有無線藍牙操控,現在更多了聲音的控制,再次帶你進入有趣的控制器狂想曲。

想像一下,家中的床頭燈可以用手機直接操控明暗,或者讓機器開始走路…..

Arduino,是一種易取得且有趣的控制器平台,只要懂得基本操作,就可以自行設計生活中與周遭物品的互動方式,產生許多不同的趣味及應用。 MakerBar邀請專業的機器人教育團隊,推出一系列的輕鬆上手的Arduino習作計畫,跟著我們開始練習打造專屬的互動生活。

報名請按我!

CAVE2015_1_large

Arduino 習作五步驟:單場報名費 800元,五場合報特價3200元。(不含材料費)

1/07(三) – Arduino燈光之夜

1/14(三) – Arduino動力之夜

1/21(三) – Arduino電音之夜

1/28(三) – Arduino膜拜之夜(需自備遙控器)

2/04(三) – Arduino機器人之夜

課程介紹

1/07(三) Arduino燈光之夜 – 學習如何自由操控燈光顏色與閃爍
使用Arduino搭配單色與三色LED燈,製作出各種閃爍與呼吸燈效果,這是您踏入互動裝置藝術的第一步唷!課程當中將熟悉Arduino的基礎程式語法、電路連接方式以及如何控制燈的閃爍頻率與顏色。

1/14(三)  Arduino動力之夜 –  學習駕馭各式馬達及PWM
本課程中,您將可學會如何使用Arduino搭配馬達控制晶片來控制各種馬達,含小型直流馬達、伺服馬達與步進馬達等等,還有基礎的PWM(脈衝頻寬調變)控制方法,深入淺出,一點也不難!

1/21(三) Arduino電音之夜 – 學習利用Arduino播放音樂

學習使用Arduino播放數位聲音檔,從最基礎midi格式音檔到現今最流行的mp3檔案播放。

1/28(三) :  Arduino膜拜之夜 Mobile – 利用Arduino與手機聯結(需自備遙控器)

這次我們將透過一般家用常見的遙控器,讓它搖身一變成為與Arduino的溝通裝置,

讓你家的遙控器不僅可以遙控原有的電器產品,現在更能夠遙控你利用Arduino製作的互動LED燈與馬達!我們還會教你輕鬆開發Android Arduino互動APP:ArduinoV.S App Inventor及藍牙通訊
→使用App Inventor來編寫簡單的Android程式,透過藍牙通訊與Arduino進行互動,本次課程中將控制單色與三色LED燈的閃爍與呼吸燈效果。

2/04(三) Arduino機器人之夜 – 整合Arduino實作計劃的課程內容,學習使用Arduino控制以伺服機驅動的MeArm機器手臂,以及輪式機器人移動平台mini Car,並以藍牙或是紅外線控制。(課程中所使用的MeArm與mini Car由主辦單位提供。亦可與主辦單位預約購賣。MeArm 1,500元/Set。DFROBOT mini Car 850元/set。伺服機x4。直流馬達與輪胎x2、銅柱與螺絲、底盤。)
材料包購買

 

本活動需自備Arduino,現場有提供販售原廠Arduino uno一片800元 ,亦可自行準備相容版

各場另須材料包費用如下:

1/07(三)

燈光之夜材料包:300元(單芯線材、LED燈、電阻與麵包版一片)

1/14(三)

動力之夜材料包:500元(伺服馬達、直流DC馬達,步徑馬達與馬達驅動晶片、電池等)

1/21(三)

電音之夜材料包:500元(材料包括SD Shield、單體喇叭,電阻與電容)

1/28(三)

膜拜之夜材料包:300元(紅外線接收模組,藍牙模組與轉接線)

2/04(三)

機器人之夜材料包:400元(電池、Arduino搖桿模組X2、HC-SR04超音波感應器),另課程中須使用動力之夜與膜拜之夜的材料包。
注意事項

本課程需自備筆記型電腦,我們也將在上課該周禮拜二下午提醒大家上課相關事宜

 

MeArm 機器手臂 之CAVEDU 改良版

12/17 CAVEDU 與 MakerBar Taipei 舉辦的機器人之夜,學員學到了如何用 Arduino 來控制雙輪機器人與最近很紅的 MeArm 桌上型小機器手臂。另外在 Raspberry Pi 的課程中,也會改用 Raspberry Pi 的GPIO 腳位來控制這些伺服機,這樣可以玩的事情就更多囉。

在組裝過程中,我們有對轉動樞紐做一點改良,改用帳簿釘(影印店就有賣),這樣關節轉動會比較順暢,不會因為太緊而轉動不良甚至零件變形。改良版本會盡快放到網路上讓大家下載。

2014-12-17 20.25.20

 

來看美美的沙龍照喔

arm3  arm1arm2

141213 Arduino習作工坊@高雄

這次與 Hito Maker 團隊合辦,把 Arduino 習作工坊帶到高雄與大家一起分享。課程共有兩天12小時,今天早上是 Arduino 基礎元件教學,下午則是教大家如何控制常見的馬達(servo, stepper 與直流馬達),下次上課是 2015 年 1月10號,主題是聲音與藍牙通訊。歡迎您報名一起來玩喔

1/10 報名請按我

請按我回顧 CAVEDU 的 Arduino 習作工坊紀錄

本日來賓大合照,有人專程從台中來上課喔,也有高中學生來學 Arduino,看到大家都很積極,我們深受感動啊!之後我們會把更多有趣的課程帶到高雄,當然也需要各位的踴躍支持。(好想到高雄辦 Arduino yun 物聯網與 Raspberry Pi 的課程喔)

IMG_0150

IMG_0136

介紹 Arduino 環境中,後面的圖形方塊是 Ardublock,最近的使用度也愈來愈高

IMG_0143

步進馬達與控制晶片的接線示意圖

2014-12-13 14.22.25

控制步進馬達(左)與直流小馬達(右),要用到不同的控制晶片喔

2014-12-13 14.22.34

開始接馬達線路難免會有點手忙腳亂,大家要看清楚再接喔!

2014-12-13 13.43.212014-12-13 10.07.33

[Electric Imp 物聯網小惡魔教學] 環境建置與 BlinkUp app

本文介紹如何建置 Electric Imp 的開發環境,申請帳號,以及使用  BlilnkUp app 把無線網路帳密告訴 Imp 讓它可以上網。

https://electricimp.com/docs/gettingstarted/blinkup/

申請 Electric Imp 開發者帳號

請到 Electric Imp 官網申請一個帳號,之後就能用這個帳號使用 Electric Imp IDE 來寫程式。在一個帳號中您可以加入多片 Imp ,並在 IDE 中來編寫程式並檢視它們的狀態。填妥基本資料之後,收一下確認 email 就可以開始寫程式囉。

註冊與登入畫面

下載 Electric Imp app

Electric Imp app 可讓您透過 iOS / Android 裝置來設定您的 Imp。您可以由下面來連結來下載:

下載好之後請開啟 app 吧

輸入 WiFi 資訊

請在BlinkUp app 中來選擇所要連接的無線網路,並設定其密碼。這些資料會被加密之後傳送給 Imp。app 會自動選擇該裝置已連上的無線網路,所用的標準是 2.4GHz 802.11n standard,也相容較早的 2.4GHz 802.11b/g networks。如果您的 802.11n 網路使用 5GHz 頻寬的話,imp 可能會連不上。這時請將您的網路改為 2.4GHz不然就只好連到其它網路了。

如果您沒有看到所要連的網路的話,或是您想先設定好 imp 以便稍後使用,請選擇 Other Network 選項後輸入網路名稱。

在 BlinkUp app 中輸入無線網路資訊

imp 板子本身可以判別您選定的無線網路之加密型態:WEP, WPA, WPA2 等等,所以您只要輸入密碼就好。如果您要連的是未加密網路的話,密碼欄位留空即可。

imp 不支援企業級的 WiFi 認證,就是需要使用者帳號,專屬 SSD 與密碼才能登入的這種網路。

BlinkUp

現在可以來設定 imp 了,請用 mini USB 將 imp 連上電腦或轉接器來供電。正確運作的話, imp 上的 LED 會變成橘色,代表這是一片全新的 imp,反之紅色是代表這片 imp 已經被使用過了。

連線示意圖

請在 Electric Imp app 中按下Send BlinkUp 按鈕。如果您是使用 Android,請先設定為 Legacy Mode。請確認您的 imp 已經啟動,且狀態 LED 正在閃動。這時請把 imp 上緣的光感測器對準您的行動裝置螢幕,請保持 imp 固定不要晃動,否則會傳輸失敗。

imp 上緣的光感測器,用來接收手機傳來的光編碼資料

由於 BlinkUp 是以光學方式來傳送資料,所以會受到環境光的影響,例如陽光或直射強光。我們建議:

  • 擋掉所有的直射強光,或在陰影處操作 BlinkUp
  • 操作時保持固定

連線

傳輸完成之後,您的 imp 就可用接收到的資料來上網了,隨後就會連到 Electric Imp 的伺服器。您現在可以在 IDE 來寫程式了。

imp 的狀態都是由 LED 來表示。如果一切順利的話,您會看到 LEd 在一兩秒之後閃爍綠色,代表正確連線。您的 imp 不會自動顯示於 IDE,您需要重新整理瀏覽器,應該就可以看到它了。IDE 介紹請按我

您可能會看到 LED 閃綠色變得更快,然後保持綠色常亮。這代表 imp 已經被偵測到需要更新 imp 的作業系統(或韌體):快速閃爍代表正在下載更新,綠色常亮則代表新版的韌體已經安裝好了。如果您不小心中斷了這個過程也沒關係,imp 會在下次開機時再次安裝。安裝好更新之後,它會重新啟動,您會看到它閃紅色,再來是橘色,最後在連上網路時變為綠色。

如果它沒有閃綠色的話,代表連線有問題,請看以下說明。

不管有沒有連上線,imp 會在自動關閉 LED 來節電,但它還是在運作喔

狀況排除

如果 LED 閃爍紅燈的話,代表 imp 無法讀取 BlinkUp 傳輸的資料,也許離手機螢幕太遠或是它無法用收到的資料來連線。

如果發生這種狀況的話,再試一次。這次請注意看LED,LEd閃爍的顏色與模式會告訴您哪邊出問題了,請看LED 連線顏色編碼希望一切順利喔。

[LinkIt One教學] 雙馬達機器人

使用 LinkIt One 來進行各種 I/O 之後,要做一台機器人也是一定要的。只要使用 L293D 這樣的馬達控制晶片就可以控制直流馬達。先來看影片。偷懶使用 Motoduino 來當作馬達控制板,本程式無法調整馬達速度。

CAVEDU LinkIt One 系列文章

任何雙馬達車身都可以喔。行動電源是對 LinkIt One 供電,電池則是對馬達供電

10815893_889158677763902_535136444_n 10815734_889158541097249_2047084033_n

從上方看下去

10841307_889159007763869_1680010118_n

程式碼如下:

void setup() {
  // put your setup code here, to run once:
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  forward();
  delay(500);
  stopped();
  delay(500);
  back();
  delay(500);
  stopped();
  delay(500);
  left();
  delay(500);
  stopped();
  delay(500);
  right();
  delay(500);
  stopped();
  delay(500);
}

void forward()
{
  digitalWrite( 2, HIGH);
  digitalWrite( 3, LOW);
  digitalWrite( 4, LOW);
}

void back()
{
  digitalWrite( 2, LOW);
  digitalWrite( 3, LOW);
  digitalWrite( 4, LOW);
}

void left()
{
  digitalWrite( 2, HIGH);
  digitalWrite( 3, LOW);
  digitalWrite( 4, HIGH);
}

void right()
{
  digitalWrite( 2, HIGH);
  digitalWrite( 3, HIGH);
  digitalWrite( 4, LOW);
}

void stopped()
{
  digitalWrite( 2, HIGH);
  digitalWrite( 3, HIGH);
  digitalWrite( 4, HIGH);
}