2015年07月23日

KoshianでiPhoneからモード切替

以前、ワイヤレスモジュールについてご紹介させて頂きました。

今回はマクニカBluetooth SMART モジュール Koshianを使って
2つのLEDを操作するということをしてみました。



以前にも紹介させて頂いたBroadcomのWICED SMARTでこちらのブログを参考に
プログラムをちょっと変えて2つのLEDを操作します。


下記にちょっと変える部分を参考程度にご紹介。
あまりWICED SMARTの情報が少ない中での試行錯誤なので
無駄な部分もあるかもですが笑

platform.hに
#define GPIO_PIN_A             0
#define GPIO_SETTINGS_A        (GPIO_OUTPUT | GPIO_INIT_LOW | GPIO_A)

#define GPIO_PIN_B             2
#define GPIO_SETTINGS_B        (GPIO_OUTPUT | GPIO_INIT_LOW | GPIO_B)
//GPIO_INIT_LOWで初期値0、HIGHで初期値1
を追記。

bleprofile.hに
#define GPIO_A           0x4000
#define GPIO_B           0x8000
を追記。


**.cのLチカの部分をコメントアウトして、
書込み値に応じてP0とP2の出力(KoshianのRXとTXポート)を変える。

if ((len == 1) && (handle == HDLC_PROJECTIONBALL_PROJECTIONBALL_VALUE)) {
            led2_hostinfo.generated.projectionball_projectionball_client_configuration = attrPtr[0];
            //if (led2_hostinfo.generated.projectionball_projectionball_client_configuration != 0)
            //    {
            //bleprofile_LEDBlink(250, 250, led2_hostinfo.generated.projectionball_projectionball_client_configuration);

            //}
        if(led2_hostinfo.generated.projectionball_projectionball_client_configuration==3){

            gpio_setPinOutput(0,0,1);
            gpio_setPinOutput(0,2,1);
        }else if(led2_hostinfo.generated.projectionball_projectionball_client_configuration==2){

            gpio_setPinOutput(0,0,0);
            gpio_setPinOutput(0,2,1);
        }else if(led2_hostinfo.generated.projectionball_projectionball_client_configuration==1){

            gpio_setPinOutput(0,0,1);
            gpio_setPinOutput(0,2,0);
        }else if(led2_hostinfo.generated.projectionball_projectionball_client_configuration==0){

            gpio_setPinOutput(0,0,0);
            gpio_setPinOutput(0,2,0);
        }

を追記。


**_db.c 内の
const BLE_PROFILE_GPIO_CFG led2_gpio_cfg =
{
    {
        GPIO_PIN_WP,                               // This need to be used to enable/disable NVRAM write protect
        GPIO_PIN_A , GPIO_PIN_B, -1  , -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // Other GPIOs are not used
    },
    /*.gpio_flag =*/
    {
        GPIO_SETTINGS_WP,
        GPIO_SETTINGS_A,GPIO_SETTINGS_B ,0 , 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    }
};
に修正。


**_db.c 内のconst UINT8 gatt_database[]の'○','○'の部分と
文字数に合わせてその前の数字を変えるとiPhoneから認識される
モジュール名が変更できます。


上記の例のPROJECTIONBALLやled2、projectionball部分は
プロジェクト名等によって変更してください。
途中まで入れると予測変換で自動で文字列が出てきます。



こんか感じで書き換えて、コンパイルして書込み。

koshian-io.jpg

iPhoneから書き込む値を
0で2つのLED消灯、
1で片方点灯、
2でもう片方点灯、
3で両方点灯
というようにiPhoneから2つのLEDを操れます。


ということでこのプログラムしたKoshianをプロジェクションボールに搭載。
LEDの代わりにプロジェクションボールの切替スイッチにKoshianを直結。
星や顔、メールマークなどの描画モード切替がiPhoneからできるようにしました。


Koshianで安くIoTデバイス化!


早速、先日のイベントでデモしましたが、
iPhoneから操作できるというのはなかなか評判が良かったです。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック