SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IoT Starter Studio

IoT開発向けのSDカード型デバイス&プラットホーム「Electric Imp」を試してみよう

IoT Starter Studio 第9回

3. Lチカにチャレンジ

 デバイス設定が完了してElectric Imp本体がインターネットに繋がりました。実際にコードを書いて動かしてみましょう。先ほどのデバイスの登録が完了するとActions</>マークがアクティブになるので選択しましょう。

 このようなIDEの画面になります。AgentDeviceのタブに分かれていて、それぞれのコードを記述していきます。

 公式サイトのサンプルコードを参考にLチカにチャレンジしてみましょう。Squirrelのimpでの使い方を詳しく調べたい方はドキュメントを参照してください。

 サンプルコードを参考に、以下のコードをIDEのDeviceタブにコピー&ペーストします。

// Assign pin9 to a global variable
led <- hardware.pin9;

// Configure LED pin for DIGITAL_OUTPUT, and set initial state to off
led.configure(DIGITAL_OUT, 0);

// Assign a global variable to track current state of LED pin
state <- 0;

// Function to blink LED
function blink() {
    // Flip the state variable: 1 -> 0, 0 -> 1
    state = (state == 1) ? 0 : 1;

    // Set LED pin to new value
    led.write(state);        

    // Schedule the blink function to run again in .5 seconds
    imp.wakeup(0.5, blink);
}

// Initial call to the blink function to begin looping
blink();

 Checkボタンを押すとコードのsyntaxをチェックしてくれます。

 ソースコードの文法にミスがある場合、実行前にエラーが無いかを確認しましょう。

配線してコードの実行

 配線をしてコードを実行しましょう。

 ブレッドボード銅線(ジャンパワイヤ)LEDを用意します。写真を参考に、開発ボードAprilのPin9GNDをブレッドボードと銅線を利用してLEDに接続しましょう。

 準備ができたらBuild and Runボタンを押すとコードが実行されます。

 実際の動作はこちらになります。

4. WebからLEDを操作してみよう

 セットアップ時に表示されたAgent URLを使って、デバイスを操作することが可能です。最後にIoT開発を体験するためにAgent URLに送られたクエリ文字を処理するAgentをプログラムにして、WebからLEDの制御をしてみましょう。

 公式サイトにある図のようにAgentを利用してブラウザでアクセスすることでLEDのON・OFFを切り替えられる仕組みを作ります。

 Agentタブに以下のコードを貼り付けます。

// Log the URLs we need
server.log("Turn LED On: " + http.agenturl() + "?led=1");
server.log("Turn LED Off: " + http.agenturl() + "?led=0");

function requestHandler(request, response) {
    try {
        // Check if the user sent led as a query parameter
        if ("led" in request.query) {
            // If they did, and led = 1 or 0, set our variable to 1
            if (request.query.led == "1" || request.query.led == "0") {
                // Convert the led query parameter to a Boolean
                local ledState = (request.query.led == "0") ? false : true;

                // Send "set.led" message to device, and send ledState as the data
                device.send("set.led", ledState);
            }
        }

        // Send a response back to the browser saying everything was OK.
        response.send(200, "OK");
    } catch (ex) {
        response.send(500, "Internal Server Error: " + ex);
    }
}

// Register the HTTP handler to begin watching for HTTP requests from your browser
http.onrequest(requestHandler);

 またDeviceタブに以下のコードを貼り付けます。

// Assign pin9 to a global variable
led <- hardware.pin9;

// Configure LED pin for DIGITAL_OUTPUT, and set initial state to off
led.configure(DIGITAL_OUT, 0);

function setLedState(state) {
    if(state){
        led.write(1);
    }else{
        led.write(0);
    }
}

agent.on("set.led", setLedState);

 準備ができたらBuild and Runボタンを押し実行しましょう。

 Agent URLにアクセスし、https://agent.electricimp.com/xxxxxxxxxx?led=1でアクセスした際にLEDが点灯し、https://agent.electricimp.com/xxxxxxxxxx?led=0でアクセスした際にはLEDが消えることが確認できます。

おわりに

 通常のIoT開発ではハードウェア側の環境、Web側の環境をそれぞれ用意する必要がありました。Webからデバイスの制御、デバイスで取得した値へのWebからのアクセスなどは未だに障壁があると言えます。

 Electric Impを使うことでそれらを簡潔に行うことが出来るため、まさにIoT開発向けのデバイスと言えるでしょう。気になった方は是非試してみて下さい。

 最後になりますが、Electric Impは現時点で技適認可が降りていないため、国内で利用する場合は電波暗室を利用するなど注意をして下さい。また、今回紹介したimp001モジュールは製造終了となっており、日本の技適対応を行う予定は無いそうです。ただ後続製品は販売されていますので今後に期待しましょう。

購入はこちら

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
IoT Starter Studio連載記事一覧

もっと読む

この記事の著者

菅原のびすけ(dotstudio株式会社)(スガワラ ノビスケ)

 日本最大規模のIoTコミュニティ「IoTLT」主催。岩手県立大学大学院ソフトウェア情報学研究科を卒業後、株式会社LIGでWebエンジニアとして入社し、Web開発に携わる。2016年にdotstudio株式会社を立ち上げ、今はIoT領域を中心に活動している。JavaScript RoboticsコミュニティNodeBotsの主催や、IoTバックエンドサービスであるMilkcocoaのエバンジェリストとしても活動中。共著: 『JavaScriptでインタラクティブ3Dコンテンツを作ろう』 共著: 『現場のプロが教える WEBデザイン 新・スタンダードテクニック37』 共著: 『フロントエンドエンジニアのための現在とこれからの必須知識』twitter: @n0bisuke URL: dotstudioのプロフィールページ

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9850 2017/01/20 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー