keiske-hongyo が 2022年12月11日17時04分07秒 に編集
初版
タイトルの変更
TinyGOを用いたBluetoothテストプログラム
タグの変更
tinygo
BME280
Xaio-ble
記事種類の変更
セットアップや使用方法
ライセンスの変更
(GPL-3.0+) GNU General Public License, version 3
本文の変更
# 1. 始めに 今回、Xaio-bleを購入したので違う使い方をしたいと思っていました。そのとき、TinyGoでXaio-bleのBluetoothがサポートになったので勉強のため、プログラムをの作成をしました。また、その情報をスマートフォンに表示をさせたいと考え、今回はFlutterを使用して、アプリを作成してみました。Flutterを使用したのはAndroidとIosのアプリを同時に開発できるからですが、Macがないのでiosは動作確認ができずandroidしか動作確認をしていません。 # 2.回路について 回路は前に紹介した[「簡易WBGT警報機の製作」](https://elchika.com/article/98531b24-6ebe-4d6a-a42e-af3230720732/)の回路をそのまま利用しています。回路についてはこのページで確認してください。 # 3. 構成について 今回は下の図に示すような構成で作成しています。データのやりとりについてはBluetooth経由で行っています。 ![構成図](https://camo.elchika.com/2f5c64699fa60f3ffed056c657801993a60e5cdc/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33646164353039642d616133622d343132302d616433622d6638623565376137366139332f34613336313263372d343535632d346130632d393934662d393265323735656363393830/) # 4.プログラムについて ## 4.1 TinyGo側プログラム センサの制御はTinygo用のBME280のライブラリを使用しています。このライブラリは温度、気圧、湿度のデータを4バイトの整数データ値で返すので、Bluetoothで送信するために1バイトごとにデータを分割しています。100msごとにセンサの情報とスイッチの状態を送信しています。また、スマートフォン側からLEDの制御情報が送られるとそれを受信し、LEDの制御を行っています。 プログラムについては[GitHubで公開しています](https://github.com/Keisuke-Hongyo/TinyGo_Bluetooth_Test/)のでそちらを参考にしてください。 ## 4.2 スマートフォン側プログラム スマートフォン側では、Tinygo側から100msごとにセンサとスイッチの情報を取得し、表示しています。また、ボタンをタップするとLLEDの点灯制御用データを送信します。 プログラムについては[TinyGo同様にGitHubで公開しています](https://github.com/Keisuke-Hongyo/Flutter_BME280/)のでそちらを参考にしてください。 下の画面は実際に作ったスマートフォンのアプリです。iosはMacがないので、Githubのiosの部分は何も設定していないので動きません。Macがあればできるのですが・・・。もし、Macがあってiphoneやipadがあるのなら試してみてください。 ![スマートフォン画面](https://camo.elchika.com/85875a42259b2692ae442591719d06902b954ded/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33646164353039642d616133622d343132302d616433622d6638623565376137366139332f32633538623235632d353561612d346635372d623935342d623932306362613766313038/) # 5.最後に 今回、TinygoとFlutterを使用してスマートフォンと連携するものを作成しました。Bluetoothでの通信については勉強不足で動作させるまで結構時間がかかりました。また、Flutterを使うのも初めてでネットを調べながら作ってみました。でも、新しいことをするのは時間がかかりますが、おもしろいです。今回のことを何か成果物の形で残せるように考えてみます。