Tag Archives: linkit one

[0329 C-Day 有什麼?] 系列之一:LinkIt ONE BOX!!!!!

隨著329 C-DAY的來臨,展品也陸陸續續進入驗收階段(?),其中,LinkIt ONE似乎是今年熱門的焦點之一。俗話說的好,再好的板子,遇不到對的殼,就只是一塊板子,如果遇到對的殼呢?就變成「有殼的板子」…。著手設計LinkIt ONE的外殼,總共換了三個版本,最後這一款不僅讓天線可以自由伸展、固定,也增加了盒底固定,另外為了能夠在電腦上固定(額外功能?),在其中的一面推出固定座,讓我們來看看成品吧!!

1 2 3 4 5

後製的部份應該會加文字、噴漆,感覺應該會更不一樣,希望大家喜歡這次的外殼設計,圖檔也同步上傳至Thingiverse網站,請點此前往。

150307 LinkIt ONE 物聯網研習,活動花絮來囉

3/7 週六,有許多位學員來參加我們辦的 LinkIt ONE 物聯網研習,其中有來自MediaTek Labs 的開發團隊,他們很想知道終端使用者對於這片板子的看法,也有工研院與業界的朋友一起參與,很熱鬧喔

如果您是台大的同學,今年的 hackNTU 臺大黑客松四門課程中的 IoT 物聯網課程,就是使用 LinkIt ONE 系統來帶您入門,千萬別錯過啦!

只要您手邊有板子,今天的範例都能做到,請跟著本篇完成第一個範例吧:

[LinkIt One 教學] MediaTek Cloud Sandbox 控制 LED 並檢視狀態 – 可同時用手機與網頁來操作

CAVEDU LinkIt ONE 教學文章請點我

IMG_7531_Fotor

IMG_7530

下午進行到 GPS 路徑追蹤時,先示範如何接線以及如何在 MCS 上檢視 data point

 

5F0A0384

我這張照片看起來像大法師之類的

 

5F0A0382

大家紛紛上樓去看是否順利將 GPS data 上傳到 MCS 了,都有成功喔(不過要稍等一下就是了,GPS 取得也是要時間的)。

5F0A0386

同樣的畫面,在原廠提供的 Android app 中也可以正確檢視,下圖中只看經度緯度,沒有上傳海拔,所以海拔為0喔

2015-03-07 14.45.44

 

 

 

 

 

MediaTek Labs 同仁帶來的氣象站 demo

5F0A0372

 

以下是上課花絮,大家都在愉悅(?)的 coding 與查看 API 之中度過了美好(精實)的一天喔

 

5F0A0376

2015-03-07 14.43.47 2015-03-07 14.43.31

hackNTU 臺大黑客松 x CAVEDU 的物聯網課程

hackntu

很高興能受邀擔任 [hackNTU 臺大黑客松]  IoT 物聯網系列課程的講師群,其餘還有 iOS, Web, UI/UX 等共四門課程,聽起來就很有趣!

CAVEDU 有許多講師現在也是台大的學生喔。這次的物聯網課程可說是戰戰兢兢啊,不過我們一定會拿出很有趣的課程的。歡迎有興趣的朋友來聽聽看課程說明會

【HackNTU Courses 課程資訊】

物聯網正在發酵,想搭上這波浪潮嗎?IoT(Internet of Things,物聯網)透過軟硬體的整合,期望能打造更有智慧的生活。透過與Arduino相容的MediaTek LinkIt ONE 開發板,我們將學習如何透過各種元件及電路與軟體相互配合,讓科技實際解決生活中的問題。

11045317_796944483724110_8284041693927658958_n
本次課程的講者將由CAVEDU專業教育團隊授課。CAVEDU在機器人、軟硬整合的領域中已有十年以上的教學經驗,近年提供全台各地校園研習課程,同時亦有出版相關書籍。

CAVEDU專業教育團隊連結:http://www.cavedu.com/

課程說明會詳細資訊:
■ 時間:3/7(六)19:00
■ 地點:臺大博理館113教室
■ 課程說明會報名網址:https://po
seidonho.typeform.com/to/lNiCEA
■ 課程報名網址:https://poseidonho.typeform.com/to/RGx2qd
PS. 點進網址可看課程詳細介紹!

感謝 MediaTek Labs 贊助 – 海洋大學與元智大學有 LinkIt ONE 可以用喔

新學期新氣象,本學期在海洋大學機械系的 Arduino 微處理機課程以及元智大學藝術設計系的互動科技課程,都由 MediaTek Labs 贊助對應班上人數的 LinkIt ONE 開發板。我想這學期的課程一定會擦出很不一樣的火花哩!

我不敢說板子能上網就一定比較厲害,但至少能變的花樣一定比較多。在和同學的討論之中,已經有針對 GPS 結合網路的諸多位置應用想法跑出來了,想到就很興奮。

再者,這樣應該會比上課一直刷程式碼來得有趣。不過別誤會,加入網路之後課程難度只會更高,同學甚至有可能要學第二套程式語言(例如 python 或簡易的 html),怎麼樣讓大家愉悅地成長,是我這學期最大的挑戰。

班上做得不錯的同學,5月底要把作品帶到 Maker Faire 來展出,與大家分享。這列入學期成績的一項好了,哇哈哈

linkit

150307 物聯網 IoT研習營(使用 MediaTek LinkIT One )

讓您親身體驗時下最夯的科技議題「物聯網」(Internet of Things),從架構到基本使用,再到創作運用,讓您充分掌握物聯網的脈動。

本次研習使用 Mediatek (聯發科)的 LinkIt One 開發板,是一片具備 Wifi、藍牙、GPS 與行動網路(需另外有 SIM 卡)的 Arduino 相容板,專為物聯網應用而生!並搭配專屬的 MediaTek Cloud Sandbox 就能從網頁與手機來檢視 LinkIt One 上傳的各種資料,是非常完整的全方位開發環境。歡迎您一同進入物聯網的世界!相關文章請參考以下連結:http://blog.cavedu.com/?s=linkit

報名網頁請點我

主辦單位:CAVEDU 教育團隊、翰尼斯企業有限公司
協辦單位:MediaTek Labs、智能機器人研究所、《Make》國際中文版

時間 : 104年3月7日星期六 9:30~16:30

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

備註: 請自行攜帶筆記型電腦,以便實際操作

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

付款方式:
1.匯款:
銀行名稱 :華南商業銀行 雙園分行
戶名 :翰尼斯企業有限公司
銀行代號 :008
帳號 :122-10-015315-3
2.來店付款
翰尼斯企業有限公司
台北市中正區中華路二段165號1樓

09:30 CAVEDU 教育團隊簡介

09:50 LinkIt One 硬體介紹、註冊 MCS 帳號、下載開發環境、安裝驅動程式

10:30 基礎電子電路實作(接線,麵包板)
LinkIt One 結合感測器:按鈕、光敏電阻、可變電阻

11:20 Android 裝置使用藍牙與 LinkIt One 互通(傳 integer / char)

12:00 中餐

13:00 MCS 環境介紹:建立 prototype、data channel 與 test device

14:00 LinkIt One 結合 MCS:控制 LED 亮滅(On/Off)與漸明漸暗(PWM),並可在 MCS 檢視類比腳位狀態。

16:00 LinkIt One 其他功能展示(Wifi:取得指定網頁內容、GPS、GPRS,如現場有困難則可用影片)

16:20 結語、賦歸

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

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

[LinkIt One 教學] LinkIt One 紀錄 GPS 點於 MediaTek Sandbox (實測於台北 – 武陵農場來回)

為了測試 LinkIt One 的 GPRS 行動網路功能以及電池續航力,決定去一趟武陵農場走走(想玩就說一聲啦!)

早上6:00從台北出發, LinkIt One 插上 3G行動網路預付卡以及 GPS 與 GPRS 天線,希望能順利把GPS座標上傳到 MediaTek Cloud Sandbox 雲端服務。

我們正在與聯發科規劃一系列的 LinkIt One 研習,到時候您也能體驗這項雲端服務喔!

2015-01-23 06.06.08

連 beta 版都算不上的行動版,之後要加裝外殼、燈號/聲音來確認資料是否順利寫入(前一天晚上還在確認啊…)

2015-01-23 06.06.15

來看看,這是從台北走國道五號到宜蘭市的座標軌跡,中間缺一段應該是在雪隧。

2015-01-23 07.12.45

這一段就是走台七甲線到武陵農場,好遠的一段路啊。

2015-01-23 09.02.32

武陵農場內的七家灣溪旁,就是櫻花鉤吻鮭培育中心那邊喔

2015-01-23 13.00.19

 

最後是福利時間,來看看美麗的櫻花與梅花吧!

[LinkIt One 教學] MediaTek Cloud Sandbox 控制 LED 並檢視狀態 – 可同時用手機與網頁來操作

照過來照過來,看看如何使用 MediaTek Cloud Sandbox 雲端服務來控制 LED 並檢視狀態 – 手機與網頁都可以同時控制喔。沒有LinkIt One 開發板的朋友,也可以先到 MCS 註冊一個帳號,我們很快就會辦理 LinkIt One 的物聯網研習,歡迎大家報名喔!

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

先來看影片,配音員阿吉老師

這是系統的樣子,我們直接在 pin 13 插一個超白光 LED,錄影效果比較好。三支天線由上而下分別是 GPRS、Wifi/BT 與 GPS。

IMG_0710

這是本範例的介面,請看最下面的 LED_CONTROL 是控制 LED 亮滅,右邊的 LED 則是檢視 LED 狀態。

螢幕快照 2015-01-21 下午9.19.00

程式碼如下:

//#include <b64.h>
#include <HttpClient.h>
#include <LTask.h>
#include <LWiFi.h>
#include <LWiFiClient.h>
#include <LDateTime.h>
#define WIFI_AP "IT Portable Hotspot"
#define WIFI_PASSWORD "12345678"
#define WIFI_AUTH LWIFI_WPA  // choose from LWIFI_OPEN, LWIFI_WPA, or LWIFI_WEP.
#define per 50
#define per1 3
#define DEVICEID "********" // Input your deviceId
#define DEVICEKEY "***************" // Input your deviceKey
#define SITE_URL "api.mediatek.com"

LWiFiClient c;
unsigned int rtc;
unsigned int lrtc;
unsigned int rtc1;
unsigned int lrtc1;
char port[4]="   ";
char connection_info[21]="                    ";
char ip[21]="              ";             
int portnum;
int val = 0;
String tcpdata = String(DEVICEID) + "," + String(DEVICEKEY) + ",0";
String upload_led;
LWiFiClient c2;
HttpClient http(c2);

void setup()
{
  
  LTask.begin();
  LWiFi.begin();
  Serial.begin(115200);
  while(!Serial) delay(1000); /* comment out this line when Serial is not present, ie. run this demo without connect to PC */

  Serial.println("Connecting to AP");
  while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)))
  {
    delay(1000);
  }
  
  Serial.println("calling connection");

  while (!c2.connect(SITE_URL, 80))
  {
    Serial.println("Re-Connecting to WebSite");
    delay(1000);
  }
  delay(100);

  pinMode(13, OUTPUT);
  getconnectInfo();
  connectTCP();
}

void getconnectInfo(){
  //calling RESTful API to get TCP socket connection
  c2.print("GET /mcs/v2/devices/");
  c2.print(DEVICEID);
  c2.println("/connections.csv HTTP/1.1");
  c2.print("Host: ");
  c2.println(SITE_URL);
  c2.print("deviceKey: ");
  c2.println(DEVICEKEY);
  c2.println("Connection: close");
  c2.println();
  
  delay(500);

  int errorcount = 0;
  while (!c2.available())
  {
    Serial.println("waiting HTTP response: ");
    Serial.println(errorcount);
    errorcount += 1;
    if (errorcount > 10) {
      c2.stop();
      return;
    }
    delay(100);
  }
  int err = http.skipResponseHeaders();

  int bodyLen = http.contentLength();
  Serial.print("Content length is: ");
  Serial.println(bodyLen);
  Serial.println();
  char c;
  int ipcount = 0;
  int count = 0;
  int separater = 0;
  while (c2)
  {
    int v = c2.read();
    if (v != -1)
    {
      c = v;
      Serial.print(c);
      connection_info[ipcount]=c;
      if(c==',')
      separater=ipcount;
      ipcount++;    
    }
    else
    {
      Serial.println("no more content, disconnect");
      c2.stop();

    }
    
  }
  Serial.print("The connection info: ");
  Serial.println(connection_info);
  int i;
  for(i=0;i<separater;i++)
  {  ip[i]=connection_info[i];
  }
  int j=0;
  separater++;
  for(i=separater;i<21 && j<5;i++)
  {  port[j]=connection_info[i];
     j++;
  }
  Serial.println("The TCP Socket connection instructions:");
  Serial.print("IP: ");
  Serial.println(ip);
  Serial.print("Port: ");
  Serial.println(port);
  portnum = atoi (port);
  Serial.println(portnum);

} //getconnectInfo

void uploadstatus(){
  //calling RESTful API to upload datapoint to MCS to report LED status
  Serial.println("calling connection");
  LWiFiClient c2;  

  while (!c2.connect(SITE_URL, 80))
  {
    Serial.println("Re-Connecting to WebSite");
    delay(1000);
  }
  delay(100);
  if(digitalRead(13)==1)
  upload_led = "LED,,on";
  else
  upload_led = "LED,,off";
  int thislength = upload_led.length();
  HttpClient http(c2);
  c2.print("POST /mcs/v2/devices/");
  c2.print(DEVICEID);
  c2.println("/datapoints.csv HTTP/1.1");
  c2.print("Host: ");
  c2.println(SITE_URL);
  c2.print("deviceKey: ");
  c2.println(DEVICEKEY);
  c2.print("Content-Length: ");
  c2.println(thislength);
  c2.println("Content-Type: text/csv");
  c2.println("Connection: close");
  c2.println();
  c2.println(upload_led);
  
  delay(500);

  int errorcount = 0;
  while (!c2.available())
  {
    Serial.print("waiting HTTP response: ");
    Serial.println(errorcount);
    errorcount += 1;
    if (errorcount > 10) {
      c2.stop();
      return;
    }
    delay(100);
  }
  int err = http.skipResponseHeaders();

  int bodyLen = http.contentLength();
  Serial.print("Content length is: ");
  Serial.println(bodyLen);
  Serial.println();
  while (c2)
  {
    int v = c2.read();
    if (v != -1)
    {
      Serial.print(char(v));
    }
    else
    {
      Serial.println("no more content, disconnect");
      c2.stop();

    }
    
  }
}



void connectTCP(){
  //establish TCP connection with TCP Server with designate IP and Port
  c.stop();
  Serial.println("Connecting to TCP");
  Serial.println(ip);
  Serial.println(portnum);
  while (0 == c.connect(ip, portnum))
  {
    Serial.println("Re-Connecting to TCP");    
    delay(1000);
  }  
  Serial.println("send TCP connect");
  c.println(tcpdata);
  c.println();
  Serial.println("waiting TCP response:");
} //connectTCP

void heartBeat(){
  Serial.println("send TCP heartBeat");
  c.println(tcpdata);
  c.println();
    
} //heartBeat

void loop()
{
  //Check for TCP socket command from MCS Server 
  String tcpcmd="";
  while (c.available())
   {
      int v = c.read();
      if (v != -1)
      {
        Serial.print((char)v);
        tcpcmd += (char)v;
        if (tcpcmd.substring(52).equals("1")){
          digitalWrite(13, HIGH);
          Serial.print("Switch LED ON ");
          tcpcmd="";
        }else if(tcpcmd.substring(52).equals("0")){  
          digitalWrite(13, LOW);
          Serial.print("Switch LED OFF");
          tcpcmd="";
        }
      }
   }

  LDateTime.getRtc(&rtc);
  if ((rtc - lrtc) >= per) {
    heartBeat();
    lrtc = rtc;
  }
  //Check for report datapoint status interval
  LDateTime.getRtc(&rtc1);
  if ((rtc1 - lrtc1) >= per1) {
    uploadstatus();
    lrtc1 = rtc1;
  }
  
}
LinkItOne_LED_MCS

[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 了嗎?

[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

[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);
}

[LinkIt One教學] – 簡訊控制LED亮滅

繼續來介紹 LinkIt One的通訊功能,先從 GPRS 模組開始。

請將 SIM 卡插入 LinkIt One 背面的 SIM 卡插槽,另外還要安裝 GPRS 天線,如下圖。另外請在 pin3 接上一顆LED。操作時,請插入一張有效的 SIM 卡(大張的),對這個號碼發送 “ON” 可以點亮 LED, “OFF”則熄滅 。大小寫沒有差別,程式中都有檢查到喔。

玩一兩次就好,傳簡訊要錢…   或是您可以找一張傳簡訊不用錢的門號就可以一直玩了

2014-11-22 18.16.48

以下為程式碼說明:

重點在於 dtaget[20] 這個字元陣列(長度為20)是用來依序存放簡訊的各個字元,我們藉由檢查前兩個字元是否等於 ON 來開燈,等於 OFF 則關燈。當然囉,一封簡訊可以有許多字元,您可以使用這種方式來把各種檢查碼放入簡訊中,LinkIt One 收到之後就可以執行對應的動作,就好像解碼天書一樣呢!

#include <LTask.h>
#include <LGSM.h>
const int pinLed = 3; // LED接在 D3 腳位

void setup()
{
    Serial.begin(9600);
    while(!LSMS.ready()) //等候 SIM卡模組 ready
    {
         delay(1000);
    }

    Serial.println("GSM OK!!");
}
void loop()
{

    char p_num[20];
    int len = 0;
    char dtaget[500];

    if(LSMS.available()) // 檢查有沒有新簡訊
   {
        LSMS.remoteNumber(p_num, 20); //顯示發送者電話號碼
        Serial.println("There is new message.");

        Serial.print("Number:");
        Serial.println(p_num);
        Serial.print("Content:"); // 顯示簡訊內容

        while(true)
        {
            int v = LSMS.read();
            if(v < 0)
                break;

            dtaget[len++] = (char)v;
            Serial.print((char)v);
         }

         Serial.println();
         LSMS.flush(); // 刪除簡訊
         if((dtaget[0] == 'O' && dtaget[1] == 'N') || (dtaget[0] == 'o' && dtaget[1] == 'n'))
         {
         //檢查簡訊前兩個字元是否為 ON 或 on
         digitalWrite(pinLed, HIGH); 
         // 這不用多說了吧,亮燈!
}

        else if((dtaget[0] == 'O' && dtaget[1] == 'F' && dtaget[2] == 'F') || (dtaget[0] == 'o' && dtaget[1] == 'f' && dtaget[2] == 'f'))
         {
             digitalWrite(pinLed, LOW); 
             // 熄燈
         }
    }
}

 

第一個LinkIt One 程式,好吧,還是 Blink

今天要告訴大家如何安裝 LinkIt One 的開發環境與執行第一支程式 Blink。請看執行影片:

[youtube=”https://www.youtube.com/watch?v=aLzZA_xxCvM”]

請依序操作:

1. 下載並安裝Arduino IDE 1.5.8版本 或直接下載 LinkIt-ONE-IDE (https://github.com/Seeed-Studio/LinkIt-ONE-IDE)

。兩者是一樣的東西,但是從官方網站下載的版本,在Example的部分會缺少一些範例!

01

 

2. 下載並安裝 LinkIt ONE SDK,先於Media Tek網站註冊會員(http://labs.mediatek.com/dpRegister/create),到電子信箱收註冊信並啟動你的帳號。

3. 回到網站登入帳號密碼後,下載SDK並解壓縮後安裝,記得LinkIt ONE SDK的安裝目錄要跟Arduino IDE的安裝目錄相同。 PS.紅色框框處請改成與Arduino IDE相同的安裝位置

02

03

04

 


 

第一支程式

0. 請將 LinkIt One 使用 micro USB 線接上電腦。安裝 driver 方式與Arduino相同,位於 <Arduino IDE>/drivers/mtk 之下,指定到這個資料夾即可。最後進入電腦裝置管理員中確認是否安裝 driver 完成,系統會給一片 LinkIt ONE 兩個 COM port,下圖為 19 與 18

06

1. 開啟 Arduino IDE。設定板子型號 => Tools => Board => LinkIt ONE。

05

3. 設定 port:Tools => Port => (COM 19) LinkIt ONE。COM號碼依照不同環境而異。

07

4. 第一支程式 Arduino IDE => File => Examples => Basics => Blink

08

5. 板子上記得切換成SPI Mode,Arduino IDE => Upload 上傳程式,會發現板子上LED每隔一秒閃爍一次。這也是所有 Arduino 玩家的第一個範例

10

11