|
僕が最初にPythonを使い始めたのはiOSのPythonista3からだったと思います。
その時の動機は「iPadでBLE通信アプリが作成できる」というものでした。 そしてPythonista3のアップデートでBLE通信が出来なくなってから疎遠に・・ 次に2024年に使う動機は「WindowsでBLE通信アプリが作成できる」ってね。 サンデープログラミングの動機なんてこんなもんです。 現状のソフトの作り方は GUI部は今まで仕事で手慣れたVisualStudioC# 通信部はネットで情報収集しやすいPython スマート機器はESP32/ESP8266のArduinoIDE(C++) てな感じです。 ここからは過去の記事・日記です 2024年6月 Windows PythonのBLEAKでBLE通信出来る様になりました 以前Windows VisualStudioにてBLE通信に挑戦しましたがAdvatisingを取るので 一苦労していざServiceに繋ごうとして出来ませんでした。その際調べる事と 取り込むモジュールの多さより「面倒クサ」という事で封印していました。 今回WindowsにてPythonの調べものをしていたついでにBLE通信のBLEAKが目に ついたので検証してみたら8時間ぐらいでESP32と通信する事ができました。 2023年10月 Swift PlaygroundでBLE通信を行う目処ができました。 折角ネットに繋がらないガラパゴス環境だったのに代替のUDP通信でぶち壊しでした。 その後Pythonista3での解決策に力尽きた僕はMac購入XCodeでの開発を検討して 「そんな金無い」の結論に打ちひしがれていたのですが、フッとSwiftPlaygroundの 情報をみつけて挑戦する事にして、何とかBLE通信の目途が立ちました。 2023年5月 BLE通信が使えないので仕方なくUDP通信に切換えました Pythonista3の修正が何時か判らないのでBLE通信の部分をUDPに変更しました。 通信相手になるESP8266のIPアドレスを指定する必要があるものの何とかなりました。 2023年4月29日 アップデート後に動かなくなりました 昨日まで動いていたソフトが動かなくなりました。OSアップの様な再認証っぽい手続きが無かったので 多分pythonista3のバージョンアップだと思うのですが・・・・ ショックです。 幸いアップデートと無縁の旧式iPadMiniは動作しているので時間的猶予はあるのですが結構ヤバイです。 メインのiPad Proで動かなくなったので原因究明と修正は行おうと思っているのですが、、、、、、 調べてみると、なぜかwrite_characteristic_valueでエラーが返ってくる様になりました。(ウーム) try exceptで内容を見ると "PY_SSIZE_T_CLEAN macro must be defined for '#' formats" です。 2021年12月 BLE通信目当てでPythonista3に挑戦しました BLE接続でESP32の初期設定ができるってのは結構気持ち良いのが 判ったのでかねてより気になっていたPythonistaにチャレンジしてみました。 Pythonistaを選んだ理由はこんな偏屈な理由があるからかなっと。 ・iPadのソフトを作りたい ・Appleの開発者登録が面倒くさい ・Macとかの開発環境持ってません 正直iPhoneとiPadのソフト開発は環境を揃える所からで面倒くさそーです。 まーそれはともかく、チャレンジしてみました。 とりあえずの開発目標は、ESP32とのBLE通信を行ってWiFi設定とか行うとこまで。 ![]() ESP32側ではSerialの通信クラスに倣った命令系統の基本的な機能の begin / connected / available / read / sendchar の実装を行う事に しました。 ソースコードはQiitaに登録しました ※これさえあればループバックが作れますからね。他の機能は必要になるまで放置です。 ![]() ネットをイロイロ調べてみるのですが、ArduinoのESP32にBLE接続して 動かすのはLチカと呼ばれるLEDを点滅させるものとESP32のセンサー値を 画面に表示させるものぐらいです。公開して下さっているソースを解析する と、ESP32のサンプルコードBLE_Serialの送信部・受信部って感じでした。 あとPythonistaのBLE通信にはCBってのを使っているのですがコードが短い。 今後のことも考えてBLEの通信はシリアルベースで行える様にクラス化しました。 呼び出し関数をシリアル同じにして、旧来の常識で開発出来る様になりました。 ポンコツながらQiitaに基本的なソースコードを上げました。 ![]() Pythonitaで画面を作っています。 ESP32のBLE機器は複数台を想定しているので、対象の機器を選択機能と 個々のユニットの現状値が表示出来るようにしました。 ![]() 機器のUUID一覧を表示しても判らないので、UUIDに対応した名称を 登録出来るようにしました。 ここまでアッサリと出来た感じです(汗 Pythonistaが優秀なのかPythonが優秀なのか判りませんけど・・ あと、ソースの記述量が凄い少なくて気持ち悪いぐらいです。 BooxMAXも持ってる事だし、 AndroidでPythonアプリを 作れるか挑戦するのも良い気がしてきました。 ![]() ESP32のWeb接続設定などを登録出来る画面が作れました。 ESP32がWiFi接続出来ない状態でもBLE接続で初期設定出来る様になり、 ArduinoManagerを使っていた頃の状態にまで戻せました。 あとBLE接続はヒープ領域を対象に消費する為にGoogleSpreadsheet への書き込みを行う為にはBLE接続を解放する必要がありました。 BLEの再接続は・・・ 面倒なのでESP32をリセットして行います。 ※BLE接続の解放が完全に行えなかったので、接続解放接続を行っても動きません。 ※アプリ再起動で動くので気にしないで、本当に行いたい事の方を突き詰めていきます。 実際動いてみると、ナカナカ良いですよ ![]() ESPNOWクライアントを単機能にする事によって今まで無理だった 端末での確認が可能になりました。僕自身20年ぐらい前から模索 して事がやっとできた感じであります。 2020年~2021年頃 この頃迄はESP8266にWebServerを組み込んでスマート機器を作っていました。 WiFiのAP局接続数制限とAP局の交換などで発生する各機器の再設定が懸案でした。 ArduinoManagerのアップデートのお陰でESP32のBLEアプリが全滅しました。 まー、これはArduinoManagerに賭けた僕が悪い ![]() お気に入りの記事を「いいね!」で応援しよう
Last updated
2024/06/21 09:40:41 AM
コメント(0) | コメントを書く
[部品:電気・電子・USBの工作や部品等の検討・紹介] カテゴリの最新記事
|