|
2023年10月よりiOSのSwift Playgroundを使ってESP32とBLE通信が行える様に
なりました。 とまぁ書いてみたのですが、BLE通信できるだけなんですよね。 とは言え!、WiFiに繋がなくても家のスマートホームを操作できる!! 等々の可能性が出来ました ==>SwiftPlaygroundについて気付いた事 ・iPadだけでソフト作れます。 私はmacOS機を持っておらず、iPadPro(iPadOS17)で作成しています。 ==>まぁ仕方ないんですけど ・iPhoneにはインストールできない様だ 折角作ったアプリなので同一ユーザーならiCloud経由でソフト使いたい。 まぁiPhoneSE(1st)使用の私は買い替えが先ですカネ・・・・ ・旧iPadのSwiftPlaygroundでは作ったアプリが動きそうにないです。 Swift PlaygroundをインストールしたiPad mini2を持っていますが iPadOS17で作成したソフトをセットできませんでした。 現状のSwiftPlaygroundはどのiOSを積んだiPadまで対象なのでしょうか? ==>治るといいなバグ (これ直らないと日本でプログラム教育用はムリかなぁ・・) ・時々ソースコードがモゲる、しかもundoが効かない(最悪です) ソースコード変更中にフッとした事で編集行以降のソースが消滅します。 しかもundoボタンはソース消滅時以前に戻れないので絶望に落とされます。 >>>僕の遭遇頻度は2時間程度の作業中に1回ほど<<< >>>区切り事にコピーを取る癖を付けて回避します<<< ・時々ソフトが落ちる ソースコードがモゲるより遥かにマシですが、、、 通常コード入力時に間違えて日本語入力すると結構頻繁に落ちます。 「//」のコメントとか「””」の入力時は落ちないんですけどね・・・ ・カーソルが自動で移動する機能がシックリこない 修正しようとカーソル指定したのに、別の場所へ飛んでしまう事があります そうなると次やっても同じ状況を繰り返すので、カーソル指定で悩みます ==>こんなん作ってます ・DMMのディスプレイ ZOYI社BLE DMM(テスター)のディスプレイ 自作BLE DMMを考えていましたが手が回りそうにないので 中華DMMに繋いでみました。 ![]() ・iPad使用BLEキーボード iPadをPCのキーボードとして使ったBLEキーボード ![]() ![]() 2020年頃はAirKeyboardというアプリ頼りで問題アリな状態でした。 今回ESP32を2台を使いBLE通信/BLEキーボードのソフトを作る事によって、 PCからは純粋なBLEキーボードとして認識出来る様にしました。 作成アプリはボタンを押した放したのイベントを送信するダケの作りです。 ※気になる点は多いのでまだまだ作成中ですね~ ・ESP-NOWとBLEの通信ブリッジ 現状は自作スマートホームでESP-NOW通信を使っています。 iPadで動作設定や状況確認等行う為に通信ブリッジを作りました。 ・BLEラジコンプロポ 3Dプリンタで作ったフレームを使ったBLEラジコンのプロポ ![]() 早速チセさん作のOMjoystickを見つけてBLEコントローラーを作りました。 凄い画面がモッサイですが左右のジョイスティック値が送信できます。 ==>BLE通信はどんな機器と行っているの? BLE通信は最初にESP32とiOS Pythonista3で確立した通信手順を使っています。 ※同じ通信手順に拘ったお陰でBluetooth/BLEに必要な設定の勉強になりました。 ・ESP32 ESP-NOWネットワークと繋ぐ為に利用しています。 電池駆動でBLE通信待機を長時間行うには消費電力が多すぎて断念しました。 ・nRF52840 低消費電力待機が出来るんじゃね?との期待を持って購入しました。 一応nRF52840と本件のBLEソフトで通信する事ができました。 まだ目標未達成ですが、5V電源で3mAh程度のBLE待機を確認しました。 BLE通信が使えるかどうかの検討日記です:検討日数は約2週間でした 2023年4月末のPyhonista3アプリのアップデートによって僕の作ったBLEプログラムは 動かないゴミプログラムと化しました。「スマートホームシステムの敵はサービス終了」と 別の日記で紹介していますが、僕も相変わらず地雷を踏んだって事だよなー。 まーそうは言っても少ない費用で開発するのだから仕方ないですよね >< そういった中でMacでXcodeで開発する線を検討していたのですが、そこで Swiftというプログラム言語が使えてiOS機にはSwift Playgroundなるモノが ある事を再認識しました。久しぶりに確認すると「アプリケーションの公開」 も出来るみたいな事も書いています。iPadで開発するSwift Playgroundsなら Apple Developper Programの費用も不要みたいです。 まーこの辺は実際使ってみないと判らない そーいった訳でSwift Playgroundsに挑戦してみようと思います。 最初のステップ:CoreBluetoothのサンプルとしてBLE Scannerを探して動かす。 Pythonista3もESP32でもBLE機器に接続する側の基本はBLE Scannerで 機器一覧を作って接続相手の識別を持った機器への通信する方式でした。 いきなり最終目標のCoreBluetoothに手をだしますww 僕がBLE通信出来ない事には僕のヤル気が出ないので自分を鼓舞する為に 悪手ですがココから始めます。BLEスキャンの記事はネットにいくつか ありましたが古いバージョン用ばかりで、今回使っているバージョン4.3 では使えないモノばかりです。※ソースは古いバージョンの警告表示が出てきます。 そんな中でgundraburさんのBLE Scannerを動かす事ができました。 https://github.com/gundrabur/BLEScanner 実際のソースコードは160行程度で解析・改造には持ってこいです。 ソフトをiCloudのSwiftPlaygroundフォルダにペーストして動・・ かしかたが判らず App追加してContextViewにそれっぽいソースをペースト、BluetoothClassを追加すると iPad画面右側でBLEScanしたリストが出だしたので「動く」という事が判りました。 どーやら「実行」という手順を踏まなくても、Swiftは動くみたいですね。 すっ飛ばしたステップ:ESP32側のBLE通信ソフトを用意する ESP32側のBLE通信ソフトはPyhonista3を使って通信していた奴を使用 通信相手に長期動作確認済みの自作ソフトがあるのは心強いです! 第二のステップ:画面を作りつつESP32と通信する BLE Scannerを任意ESP32と接続して送受信ログ出来る様にします。 途中までは、こちらのブログ記事を参考にさせて頂きました。 https://knkomko.hatenablog.com/entry/2019/07/16/013443 ![]() 作成途中の画面はこんな感じです。レイアウトは徐々に慣れていく予定~~ 検討では画面に「Connect」と「送信」と受信リスト表示を用意しました。 Pythonista3でBLE通信を行った際のコードをSwiftに移行する様な感じでした。 デバッグ済のESP32機があったお陰で必要最低限の試行錯誤で出来た感じです。 ![]() お気に入りの記事を「いいね!」で応援しよう
Last updated
2024/10/10 01:11:20 PM
コメント(0) | コメントを書く
[部品:電気・電子・USBの工作や部品等の検討・紹介] カテゴリの最新記事
|