Konashi + BME280 + Swift – その1

令和の幕開けと共に展示した第二世代Chakuyo-bako。
ハードウェア側の変更として、基盤をBLE NanoからKoshian3.0に変更しました。

それに伴い、今までハードウェア側でやっていたI2C通信などの処理がiPhone側に寄ることになりました。

この一連の処理は丁寧に説明するととても長くなるので、いくつかのシリーズに分けて紹介します。

この記事では実際にコードを書く前の前知識について書きます。

前提の前提: Konashiなの?Koshianなの?

ざっくりいうとKonashiが開発するのに便利なやつでKoshianが上に乗ってるチップです。

この辺のことはこれを書いていないエムノの方が詳しいです。Chakuyo-bakoでは小型化するためにKonashiではなくKoshianがのっています。

何であんこ系なの?と思ったあなたはこれを読むとお悩み解決です。

https://service.macnica.co.jp/library/96029

ソフトウェア開発では、開発に便利なKonashiを使っているので以下はKonashiとなっています。

Konashiで通信するときの概念

ここが地味にすごく大事で、僕はなぜかとても混乱しました。

混乱する人がいないように図にしたいと思います。

従来の通信方式(iPhone + BLE nano + BME280の場合)

この場合は割とシンプルです。登場人物は3人。

iPhone側はSwiftで、BLE NanoはArduino IDEを使ったプログラムをそれぞれプログラムを書きます。まぁ何となくそうなんかなって直感的にわかると思います。

 

役割

iPhone : BLE Nanoから気温・湿度・気圧のデータをBLE通信でもらう。

BLE Nano: BME280とI2C通信をして、気温・湿度・気圧のデータをもらう。
                そしてBLE Peripheralとなり、iPhoneを通信する。

BME280: BLE NanoとI2C通信をして、気温・湿度・気圧のデータを渡す。

そしてこの経験が混乱を招きました。

Konashiを使った通信方式(iPhone + Konashi + BME280)

こちらも登場人物は3人。

役割を見るとBLE NanoがKonashiに置き換わっただけですね。

これが問題です。

というのもKonashiでArduino IDEでプログラムを書き込む…みたいなことはしませんので!

じゃあどうするのか?

iPhoneで全部書くんです。BLE通信に全ての想いを乗せて。

役割

iPhone : Konashiから気温・湿度・気圧のデータをBLE通信でもらう。

Konashi: BME280とI2C通信をして、気温・湿度・気圧のデータをもらう。
              そしてBLEPeripheralとなり、iPhoneを通信する。

BME280: KonashiとI2C通信をして、気温・湿度・気圧のデータを渡す。

今回BLE通信とI2C通信という2つの通信プロトコルが出て来たことによってより混乱してしまいました。(えっSwiftでI2C通信するの?えっえっ)

図にすると簡単かと思いますが、I2Cの各種リクエストも全てBLE通信でKonashiに書き込むとKonashiがよしなにそれを実行してくれます。

むしろKonashiの便利ポイントは全力でそこです。

これがiPhone + Konashi + BME280の通信の全容です。

これを理解することで開発がとても楽になります。

次の記事では実際にiPhone + Konashi + BME280で値を取得するためのプログラムを書きます。

諸事情でKonashi SDKを使わないバージョンになっています。

いいから早く繋がせろよっていう人はこちらのリポジトリを参照してください。(これはKonashi SDKを使っています。)

https://github.com/shma/konashi-bme280-i2c

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です