2015/03/20

LinkIt ONE:WiFi簡單練習

試著讓LinkIt ONE連接家裡的WiFi無線路由器,然後連接到聯發科網站(www.mediatek.com),取回首頁內容。

裝上WiFi天線,別跟GSM天線搞錯了,也別裝錯孔。

程式碼如下:
#include <LWiFi.h>
#include <LWiFiClient.h>
#define BAUDRATE 19200

#define WIFI_NAME "__SSID__" // 填入WiFi AP網路名稱SSID
#define WIFI_PASSWD "__password__" // 填入密碼
#define URL "www.mediatek.com"
LWiFiClient cli; // 客戶端

void setup(){
  Serial.begin(BAUDRATE);
  LWiFi.begin(); // 初始化WiFi模組
}

void loop(){
  if(Serial.available()){
    char d = Serial.read();
    switch(d){
      case 'c':{ // 採用WPA認證模式,另有connect與connectWEP
        if(LWiFi.connectWPA(WIFI_NAME, WIFI_PASSWD) > 0){
          Serial.println("Connect ok");
        }
        else{
          Serial.println("Connect fail");
        }
      }
      break;
      case 'g':{ // 連接網站,送出HTTP請求
        Serial.println("Connecting to website...");
        cli.connect(URL, 80);
        cli.println("GET / HTTP/1.1");
        cli.println("Host: " URL);
        cli.println("Connection: close");
        cli.println();
      }
      break;
    }
  }
  while(cli.available()){
    int x;
    x = cli.read(); // 讀取
    if(x < 0)
      break;
    Serial.print((char) x); // 印出到序列埠
  }
}


結果如下,我發現LWiFi連接時,不一定一次就成功。
嘛,這只是簡單練習一下。

參考資料:

26 comments:

  1. Anonymous20/4/15 16:59

    請問有方法使用wifi取得網站資訊像天氣時間等嗎?
    因為他好像只能取得原始碼而已...
    謝謝

    ReplyDelete
    Replies
    1. 哪個網站呢?
      如果該網站沒有提供REST API之類的存取介面,那當然就只能取得原始碼,然後自己想辦法解析。

      Delete
    2. Anonymous20/4/15 19:14

      yahoo的天氣之類的,因為我自己不太會架網站,想用現有的資源來實現,謝謝。

      Delete
    3. 有的,Yahoo有提供天氣的API,
      https://developer.yahoo.com/weather/

      Delete
    4. Anonymous20/4/15 20:28

      喔喔!! 謝謝您!!
      不過我看了一下這個網站,有些不太懂
      1. 這是架設一個app來使用嗎? 這樣的話要怎樣應用在開發板上?
      2. 您有這方面的使用範例可以參考嗎?(像這篇一樣)
      不好意思,目前初學還在慢慢摸索

      Delete
    5. Anonymous20/4/15 20:37

      喔喔!! 謝謝您!!
      不過我看了一下這個網站,有些不太懂
      1. 這是架設一個app來使用嗎? 這樣的話要怎樣應用在開發板上?
      2. 您有這方面的使用範例可以參考嗎?(像這篇一樣)
      不好意思,目前初學還在慢慢摸索

      Delete
    6. 要在開發板撰寫程式,透過HTTP來存取遠端的網站,其形式通常都是REST API,

      可參考這篇
      http://yehnan.blogspot.tw/2015/03/linkit-onemediatek-cloud-sandboxled.html

      Delete
    7. Anonymous20/4/15 20:57

      謝謝您,我在參考看看!!

      Delete
    8. Anonymous22/4/15 21:20

      您好,可以問一下他能連的網址有限制嗎?
      我用wifi能連到http://weather.yahooapis.com卻不能連到http://weather.yahooapis.com/forecastrss?w=2306179
      他不就是該網站的一個子頁面嗎?

      Delete
    9. 是啊,就是該網站提供的某頁面。

      你碰到什麼問題?錯誤訊息?

      Delete
    10. Anonymous23/4/15 11:09

      c.connect(SITE_URL, 80)
      這邊會fail,回傳的值都是0,試了幾次都會這樣。

      Delete
    11. Anonymous23/4/15 14:13

      不好意思,我問題解決了,連到子頁面要改用httpclient的library
      用http.get(weather.yahooapis.com, /forecastrss?w=2306179);
      謝謝您的幫助~

      Delete
    12. Anonymous3/5/15 21:54

      可以請問樓上是怎麼解決的嗎
      那個要怎麼改><

      Delete
    13. 這種方式應該也可以
      c.connect("weather.yahooapis.com", 80);
      c.println("GET /forecastrss?w=2306179 HTTP/1.1");
      c.println("Host: " SITE_URL);
      c.println("Connection: close");

      Delete
  2. 你好,請問有藍牙與手機連結的分享嗎?
    謝謝^^

    ReplyDelete
    Replies
    1. 請看官方的使用者手冊
      https://labs.mediatek.com/site/global/developer_tools/mediatek_linkit/documentation/index.gsp
      LinkIt ONE Developer’s Guide

      Delete
  3. 你好,想請問如果要用LinKit ONE 連到Parse Sever該如何做呢??

    ReplyDelete
    Replies
    1. 謝謝葉大。
      我以為可以不要用他提供的雲端服務,用自己架設的雲端伺服器

      Delete
    2. 是不是就需要雲端伺服器的API,因為我在網路上只有看到Parse提供給Arduino YUN這塊板子的SDK。
      如果沒有提供給Linkit ONE的話,是不是就要換一個?還是有其他方法可以用?

      如果Linkit ONE連到的網頁需要登入帳號密碼,請問該怎麼讓Linkit one登入呢?

      Delete
    3. 就使用最基本的REST API
      http://docs.parseplatform.org/rest/guide/

      Delete
    4. 需要登入帳號密碼的話呢?

      Delete
    5. 看對方使用哪種認證方式,
      有些可把帳號密碼寫在程式裡,
      有些要使用額外的程式庫,進行認證。

      Delete
  4. This comment has been removed by the author.

    ReplyDelete