AK-030ライブラリの使い方

1. ライブラリのインクルードの方法

AK-030ライブラリを使う場合は、ヘッダファイル AK-030.h をソースプログラムでインクルードしてください。

#include "AK-030.h"

2. ライブラリの初期化

下記のように new AK030()でAK030オブジェクトを生成してから、begin()関数を使ってAPN情報を設定してください。

#include "AK-030.h"

AK030 *ak030 = new AK030(); // AK030オブジェクトの生成

void setup(){
    Serial.begin(115200); // デバッグ表示用

    // 利用するキャリア(SIMカード)の接続情報(APN/USER/PASSWD/PPPAUTH)を指定
    ak030->begin("soracom.io","sora","sora","PAP");    
}

3. TCP通信の方法 ( 例 )

以下の例ではわかりやすさを優先し、エラー処理などを一部省略しています。

より詳細なコードは、サンプルプログラムの tcp_example を参照してください。

void loop(){
  // LTE網に接続する
  if (!ak030->connected()) { // 既に接続しているか確認
    Serial.println("connecting to LTE network...");
    ak030->connect();  // 接続する
    if (!ak030->ok()) {
      Serial.println("cannot connect LTE network");
      return;
    }
    Serial.println("...connected");
  }

  // example.comのIPアドレスを取得
  const char *ipaddr = ak030->dnsLookup("example.com");
  if (ak030->ng()) { // ここは !ak030->ok() としてもよい
    Serial.println("dns lookup failed");
    return;
  }
  Serial.printf("=> %s\n", ipaddr);

  // TCPソケットを開く
  Serial.printf("open tcp: ipaddr=%s, port=%d\n", ipaddr, 80);
  ak030->openTcp(ipaddr, 80);
  if (ak030->ng()) {
    Serial.printf("cannot open tcp\n");
    return;
  } else {
    Serial.println("...opened");
  }

  // HTTPリクエストを送信する
  const char req[] =
      "GET / HTTP/1.1\r\n"
      "Host: example.com\r\n"
      "\r\n";
  ak030->send(req,strlen(req)); // TCP送信

  // HTTPレスポンスを受信する
  const char data[3000];
  ak030->waitEvent(30);  // 最大で30秒間、受信イベントが来るの待つ
  if (ak030->eventDataReceived()) {
    int n;
    ak030->receive(data, sizeof(data), &n); // TCP受信
    Serial.printf("received %d bytes\n", n);
    Serial.println("===== received data begin =====");
    Serial.println(data);
    Serial.println("===== received data end =======");
  }
  ak030->close(); // TCPソケットを閉じる

  delay(1000*30); // 30秒間ウェイトする
}

現在のバージョンでは、複数の TCP および UDP ソケットを同時に使うことはできません。