App Inventorの使い方 その1(自作アプリでBluetooth経由でLEDをON/OFFしてみよう~アプリ編~)
こんにちは、Ideagearの鈴木陽介です。
今回は、App Inventorというブラウザだけでスマホアプリを製作できるとても便利なソフトの使い方をご紹介します。
はじめに
App Inventorは、元々はGoogleが提供しており、その後はマサチューセッツ工科大学(MIT)が引き継いで現在に至ります。このような経緯があることと、現在はバージョン2ということで、正式名称は「MIT App Inventor 2」と呼ばれています。
このソフトは、現状ではAndroidのネイティブアプリにしか対応しておらず、iOS用アプリはつくれません。ただ、以下の3つの特徴があります。
- ブラウザだけで使える。
- デザインはドラッグ・アンド・ドロップだけでできる。
- プログラムはブロックプログラミングだけでできる。
まず、ブラウザだけで使えるという点ですが、たとえば、Arduinoのファームウェア(ハードを動かすためのソフトのこと)をつくるためには、Arduino IDEという統合開発環境をPCに構築(汎用あるいは専用のプログラミングアプリをインストール)する必要がありますし、KiCadもPCにインストールして使うソフトです。
また、Androidのネイティブアプリ製作で最もオーソドックスなのは、Android Studioを使ったKotlin開発環境ですが、これもPCにインストールして構築します。つまり、ブラウザだけでソフト開発できるということは、これらの面倒な事前準備が要らずにいきなり始められるということです。これだけでも十分初心者向けと言えます。
次に、デザインですが、これもカンタンです。
ほとんどの方は、Excelやパワポで図形や文字を駆使して資料をつくったことがあると思いますが、イメージとしてはほぼそれと同じ感覚です。
最後に、一番ストレスを感じるプログラミングですが、これも圧倒的に楽です。
というのもブロックプログラミングが採用されているからです。
ブロックプログラミングとは何ぞや?
と、思われた方は、ぜひ以下の記事をご覧ください。
このように、micro:bitはMakeCodeというブラウザでのブロックプログラミング環境がありますが、それとほぼ同じです。
ブロックプログラミングは、正直、ガチガチのコーディングをやってきた人にとっては初めはとっつきにくいのですが、慣れれば非常に楽です。プログラミングの知識はほとんどいらないため、単にソフトの使い方を覚えるだけで利用できるからです。
特に、「Androidアプリのプロトタイプをサクッとつくりたく、できればBluetoothもカンタンに使える方がいい。」というニーズにはとてもマッチしています。
では、前置きはこれくらいにして、さっそく使ってみましょう!
App Inventorを開く
先程もお伝えしたとおり、このソフトはブラウザ上で使えます。
こちらは英語版です。
今回は日本語版を使ってレクチャーしますが、正直、ネットで調べたり、YouTubeの動画で勉強したりする場合は、英語での情報量の方が圧倒的に多いため、英語版を使っているとそのままマネすればできる場合も多いため便利です。よって、プログラミングに慣れていたり、英語は得意な方は最初から英語版を使うことをオススメします。
とは言え、ありがたいことに日本語版も出ていますので使わせてもらいましょう!
まずは、下記から「MIT App Inventor 2 日本語化プロジェクト」のトップページを開いてください。
次に、「ここをクリックして日本語でアプリを作りましょう」をクリックしてください。
先程から散々ブラウザだけでいいとお伝えしていますが、元々Googleがリリースしていたサービスということもあり、Googleアカウントだけは必須です。
もし取得されてない方は取得してください。
※Googleアカウントの取得方法はネット上にいくらでもあるのでご自身で調べてください。
ここでは、Googleアカウントを取得済みであることを前提に話を進めます。
「許可する」をクリック。
「利用規約に同意します!」をクリック。
続いて、「プロジェクトを新規作成」をクリック。
このように任意の名前を入力してOKをクリック。
デザイン画面で編集する
こちらが「MIT App Inventor 2」を開くと最初に出てくる画面です。
現状は、右上のメニューにあるとおり、スマホの「デザイン編集」の画面になっています。
また、まだスマホの画面は一つしかないので、デフォルトで「Screen1」となっています。
ここに、ボタンやらラベルやらを配置して画面のデザインをつくっていきます。
では、まずは「ボタン」を配置してみましょう!
一番左にある「パレット」の「ユーザーインターフェース」内にある「ボタン」をクリックし、ドラッグ&ドロップでScreen1の中に配置してください。
ちなみに、ボタン上の文字を変更したい場合は、当該ボタンをクリックして選択し、その状態のまま右のプロパティ欄を下にスクロールします
すると、「テキスト」という項目がありますので、そこを変更してください。
このように、ボタン×2にラベルとテキストボックスを一つずつ加えて画面デザインをつくりました。
では、次は右上の「ブロック編集」をクリックしてください。
ブロック画面で編集する
続いて、プログラミングに入ります。
こちらが「ブロック編集」のデフォルト画面になります。
以下は、使い方の一例です。
App Inventorはブロックプログラミングを採用しているため、このように左のブロックから必要なブロックをビューアーに引っ張ってきて、ただ単に置いたり、ブロック同士をくっつけたりすることでプログラミングをします。
たとえば、こんな風に組み合わせます。
ボタン1をクリックされた時に、
もしラベル1の文字が「あいうえお」と同じだったら、
ラベル1の背景色をオレンジ色に変える。
というものです。
最初はとっつきにくいですが、慣れるととてもカンタンなことをおわかりいただけると思います。
ここでお気づきの方もいらっしゃると思いますが、ここで使えるブロックは、基本的にデザイン画面で自分がSreen上に配置したコンポーネント(基本ブロックを除く)からしか選べません。
ただ、今回は単なるソフトの使い方に留まらず、「Bluetoothを使えるようになる」というのがポイントですが、いくら探してもBluetoothに関するブロックが見つかりません。
それもそのはず、デザイン画面でBluetoothコンポーネントを配置していないからです。
ということで、一旦デザイン画面に戻ります。
Bluetoothコンポーネントを配置する
Bluetoothに関するコンポーネントはパレットの下の方にある「接続」にあります。
ところが、Bluetoothなんちゃらは2つあるため、どちらを使えばいいか迷いますよね。
この辺の話は詳しく説明すると長くなるので割愛しますが、カンタンに言えば、スマホアプリ側はクライアント、イヤホンなどの端末側がサーバー、というくらいにここでは理解しておいてください。
よって、今回は、「Bluetoothクライアント」を選びます。
で、「Bluetoothクライアント」をパレットからビューアーに移動すると、コンポーネントに追加されます。ところがビューアーには表示されません?どういうことでしょうか?
そこで、ビューアーを下にスクロールすると、「見えないコンポーネント」としてちゃんと見ることができます。
確かに、ボタンやテキストボックスといったスマホ画面で実際に操作するコンポーネントとは違い、「Bluetoothクライアント」は、ただ単にBluetoothを使えるようにしますよ!というだけで、単なる概念です。よって、コンポーネントの一覧に表示されないのも理解できます。
ただ、いかんせん、これをやらないとBluetoothのブロックがが使えないから困ります。
Bluetooth関連のブロックを使う
再びブロック編集の画面に戻ります。
このように、Bluetooth関連のブロックを使えるようになりました。
このように配置してみました。
一応説明すると、
「ボタン1」をクリックしたらBluetooth経由で「1」を送信。
同時に「ラベル1」の文字を「LED点灯中、ご注意を!」に変更。
「ボタン1」をクリックしたらBluetooth経由で「0」を送信。
同時に「ラベル1」の文字を「LED消灯」に変更。
というブロックプログラムになっています。
ところで、なんで電話番号?
と、思うかと思いますが、ここは英語版では「Number」となっています。
なので、単に「番号」と訳せばいいと思うのですが、、、
ちなみに、水色の数学系含めて、番号のブロックだと数字だけしか使えませんが、テキストのブロックだと文字だけではなく数字も使えます。ただ、稀に数字だけでも番号のブロックを使うとエラーになる場合があります。
したがいまして、今回は大丈夫ですが、基本的には数字だろうが文字だろうが、できる限りテキストのブロックを使う方がいいです。私も実際それで何回かハマめられました。
アプリを出力する
ここまでできたら、実際にアプリ化してみましょう!
メニューバー内の「ビルド」をクリックしてください。
すると、
・アンドロイドアプリ(.apk)
・アンドロイドアプリバンドル(.aab)
の2つが出てきまますが、一つ目のapkを選んでください。
aabは何かというと、プログラミングの世界でいうライブラリーのようなものです。
※AAB = Android App Bundleで、ハンドルではなくバンドル。
アプリ生成が始まりました!
ところが、エラーが残っている状態でビルドすると、このようにエラーメッセージが表示されます。
この場合は、ブロック編集画面のビューアーの左下にあるShow Warningsを確認してください。
一つでも×があるとエラーになります。
生成が終わると、このような画面が出てきます。
この画面が出てくれば、少なくともエラーは無かったことになります。
もしブロックプログラムにエラーがある場合はこの完了画面になる前にエラーで止まります。
つまり、このウィンドウが出てきた時点でアプリ出力は成功です!
左のアイコンをクリックするとPCにダウンロードされます。
右のQRコードをスキャンすると、スマホにそのままダウンロードできるか、擬似的にスマホ上で直接動作確認ができるようですが、私のAndroidスマホが中国で買ったネイティブ中華スマホばかりだからなのかw、何度スキャンしても白い画面が出るばかりで何も起こりません。
なので、私の場合は面倒ですが、毎回左側をクリックしてPCにダウンロードしています。
なお、ここにも英語で書かれていますが、このダウンロードリンクとQRコードは、両方とも有効期限が2hだけなのでご注意を!
PCにダウンロードすると、拡張子が「.apk」の真っ白なアイコンのファイルが現れます。
基本的にパソコンでは使えないため、クリックしても展開できません。
これをSDカードに保存してスマホに移すなり、DropboxのようなオンラインストレージやFacebookメッセンジャー、Chatwork、Slackといったサーバー保存型のチャットアプリにPCからアップロードし、スマホ側でダウンロードしてください。
ただ、一番カンタンなのは、PCとスマホをBluetoothでつないでこのapkを飛ばすことです。
アプリをスマホにインストールする
以下は、apkファイルをPCからBluetooth経由でAndroidスマホへ転送し、インストールする手順です。
Bluetoothによる転送が成功すると、スマホ側はこのような表示になりますので、タップします。
すると、正規のアプリじゃないけど、インストールして大丈夫か?
と、聞いてきます。
自分でつくったアプリだからいいに決まっていますが、このように聞かれると何かムカつきますよねw、インストールを継続してください。
インストールが完了したら、アプリを開いてください。
アプリを開いて最初の画面です。
App Inventorのデザイン画面と基本的には同じデザインと配置になっています。
試しに、「LED ON」をタップしてみます。
すると、プログラムした通りラベルの文字は変わりますが、英語のエラー表示が出てきます。
次に、「LED OFF」をタップします。
すると、同じくプログラムした通りラベルの文字は変わりますが、英語のエラー表示が出てきます。
エラー内容を見てみましょう。
「Not connected to a Bluetooth device.」
Bluetoothデバイスに接続されていません。
あれ?
実は、ブロック編集でBluetooth用のブロックを使えばつながるなんて単純な話ではないのです。
Bluetooth接続の基本
Bluetoothを使う時のポイントは2つ:
- 将来的に接続したいデバイス同士を事前にペアリングをする。
- 事前にペアリング済みのデバイスの中から今回接続したいデバイスを選び、接続する。
この2つのステップを経て初めてBluetoothの接続が成功します。
この内、ペアリングに関しては、スマホに本来備わっている機能を使えばいいですが、
接続についてはアプリの中で解決する必要があります。
※スマホとBluetoothデバイスとのペアリング方法に関しては、Bluetoothイヤホンやスピーカーとペアリングするのと同じです。よって、ここでは割愛します。
Bluetoothの接続機能を使うためにリストピッカーを追加する
つまり、現状のアプリには「Bluetooth接続」のボタンすらないため、仮にペアリング済みであっても接続のしようがありません。
だったら先に言えよ!という話ですがw、Bluetoothによる無線通信は思ったほど単純じゃないですよ。ということをご理解いたただくためにあえてそのまま進めました。
ということで、先ほどのPC上のダウンロード画面に戻り、「Dismiss」をクリックして邪魔なウィンドウを閉じます。
デザイン画面のパレットで、今度は「リストピッカー」を選びます。
またわけのわからない横文字が出てきましたがw、リストからピックアップするからリストピッカーと呼ばれているようです。多分w
ただ、大それた名前をしていますが、デザイン上はボタンと同じです。
今回は、目立たせるために長さを画面いっぱいとし、色も変えてみました。
背景色はプロパティから変更できます。長さや幅も同様です。
アプリのタイトル名とアプリ名の変更方法
そうしたら次はブロックの方ですが、その前に、アプリを開いた時に表示されるタイトル名とスマホのデスクトップ画面上に表示されるアプリ名、この2つをどこで変更するかをまだお伝えしていなかったので、そこを先に確認しましょう。
まず前者については、ビューアーの空白部分をクリックするとアプリ全体が選択されたことになりますので、その後にプロパティを下にスクロールすると「タイトル」が現れます。
ここの名称を変更すると、アプリを開いた時に上側に表示される名称が変更されます。
なお、その下のバージョンコードは1や2のような整数だけ、バージョンネームは小数点以下まで使用できますので、これらを上手に使ってバージョン管理をしてください。
私の場合は、これらも変更しつつもパッと見てわかるように、タイトルにもバージョンを入れています。
後者については、アプリ全体を選択したままで上の方にスクロールすると、「アプリ名」という項目がありますので、ここを変更するとことでスマホにインストール後に表示される名称を変えることができます。
ただ、ここで要注意なのは、パレットの上の方に表示されているのはアプリ名ではなくプロジェクト名だということです。
ですので、もしこのプロジェクト名を変更したい場合は、
「プロジェクト」→「プロジェクトを別名で保存」
からプロジェクト名を変える必要があります。
Bluetoothに接続するための一連のブロックを追加
今回、Bluetoothに接続するめには、このリストピッカーを使わないといけないとわかるまで結構時間がかかりましたが、実際にどのようにブロックを組み立てればいいかがわかるまでにもさらに時間を費やしました。
で、数時間試行錯誤した結果、上記に辿り着きました。
今回はとにかくできればいいという方は、ここは何も考えずに上記の通りブロックを配置してください。
ただ、一応説明すると、
1.リストピッカーをクリックし、リストが表示されたらBluetoothデバイスのアドレスと名前の一覧を表示
2.リストから選択されたら、Bluetoothを接続するが、そのアドレスは選択したデバイスとする
3.リストピッカー上の文字を「接続中...」へ変更する
だいたいこんな感じです!
もう一度、ビルドからapkファイルを生成します。
Bluetoothモジュールとスマホをペアリングする
アプリにBluetooth接続のボタンを追加することも重要ですが、それと同じくらい重要で、かつ忘れやすいのが「ペアリング」です。
機器同士をBluetoothで接続するためには、必ず事前にペアリングをする必要があります。
普段から、スマホからBluetoothでイヤホンやスピーカーをつなげたり、パソコンへ写真を送ったりしている方はペアリングなどお手の物だと思いますが、もしわからない方でもスマホで他の機器とペアリングする方法はについては解説記事が山のようにありますのでそちらを参考にしてください。
ここではパスワード入力のところだけ解説します。
こちらはHC-06とスマホをペアリングした時の写真ですが、HC-05でも同じです。
パスワード入力を求められていますが、ポップアップウィンドウにはご丁寧に、パスワードは「0000」か「1234」だと書かれています。ちなみに、私は毎回「1234」で通っています。
少なくとも、この記事を執筆している時点で、私はHC-05を2個、HC-06を1個使ったこと(いずれも深セン華強北の店舗で購入)がありますが、すべて「1234」で通りました。
ペアリングが完了すると、上記のようにデバイス名一覧に表示されます。
なお、HC-05とHC-06は複数使っても同じ名前で表示されるため、混同しないためにも名称変更でナンバリングするなどしてわかるようにしておきましょう。
Bluetooth接続ボタンを使ってデバイスとつなぐ
アプリのダウンロード&インストール方法は先程ご説明したので割愛します。
アプリを開いたら、「Bluetoothで接続」をクリックしてください。
すると、過去にペアリング済みのデバイスの一覧が表示されます。
各行ごとに、
MACアドレス デバイス名
の順番で表示されています。
なお、MAC(Media Access Control address)アドレスとは、カンタンに言えば、無線接続できるデバイスごとに割り当てられた個別の番号のことです。
ただ、これ以上のことは本論とは外れますのでご自身で調べてください。
デバイス側については次回の記事でご説明しますので、ここではこの中から一つを選ぶということ、そして、リストピッカーを使ってこの選択画面を出ないと接続できないこと、さらに繰り返しになりますが、その前にスマホの元々の機能でデバイスとペアリングをしていないとここに表示されないということを覚えておいてください。
ともかく、いずれかのデバイス名をタップします。
無事接続されると、先程のブロックプログラムの通りリストピッカー上の文字が「接続中...」に切り替わります。
まぁ厳密には、今回のプログラムでは接続に成功しても失敗しても、「Bluetoothで接続」をタップした時点で必ず文字が切り替わってしまうためダメですし、そもそも接続ボタンはあるのに切断ボタンが無いのも問題ですが、今回の入門編で最初からそこまでやると情報過多なので今回は割愛しました。
まとめ
いかがでしたでしょうか?
今回は、Androidアプリ製作の説明だけで結構な長さになってしまったためここまでとします。
ただ、スマホアプリって何だか難しそう?
と、思われていた方も、「これならできそう!」と、感じていただけたのではないでしょうか?
次回は、このアプリと対となるデバイス側の作り方をご説明します。
具体的には、Bluetoothモジュールをマイコンにつなぎ、後はLED(発光ダイオード)とブザーを使ってスマホアプリからLチカをできるようにします。
それではまた!
Discussion
Suzuky様
記事を参考にして、App Inventorで作成したandroidアプリから、RaspberryPi4に接続したLEDの点灯や消灯の実現を考えております。
記事の”Bluetooth接続ボタンを使ってデバイスとつなぐ”の前までは、マネをさせて頂き実行できましたが、その後がうまくいきません。
解決→実現に向け、是非、助言を頂けたらと希望しておりますが、助言がOKの場合、どのような手段でご連絡差し上げたらよろしいでしょうか。
う~ぱ様
コメントありがとうございます。もう少し具体的に教えていただけないでしょうか?
マイコン側でBluetoothモジュールは使用されていますか?
スマホとBluetoothモジュールとのペアリングはできたもののアプリの接続ボタンからモージュール選択画面に移行しませんか?
あるいは、アプリはできあがって、受け側のラズパイのソースコードの部分で困ってらっしゃいますか?
あと、アプリはWindows PCで作られていますか?Mac OSだと上手く動作できないという報告を受けています。
Suzuky様
ご連絡ありがとうございます。
当方の状況は以下の通りです。アドバイス頂けましたら幸いです。
以下、長文となりますが、ご確認をお願いいたします。
■実施環境
・使用しているマイコンは、RaspberryPi4です。Bluetoothモジュールが標準装備です。
・アプリの作成は、Windows環境です。
・使用スマホはAquosSense4(Android12)です。Andoroid12から付近のデバイスの権限が標準では、許可しない、になったとのことで、”許可する”に変更しました。
・https://zenn.dev/suzuky/articles/c872429ced4841で示される、LEDを点灯させるプログラムは、Arduino用でありましたので、それを参考にしてRaspberryPi4で動作するであろう、Pythonで自ら更新
■エラー状態
①先ずは、「Bluetoothで接続」のボタンを押して、対象となるRaspberryPi4を選択すると、「接続中」と表示なるが、 “Error 507: Unable to connect. Is the device turned on”?との表示が出る→接続されていないと思われる。
②続いて、「LED on」のボタンを押すと、"Error 515: Not connected to a Bluetooth device"と表示が出る。→①のエラーが原因か
③RaspberryPi4でLEDを点灯させるPythonのプログラムを実行し、その環境下で、「LED on」を押しても、"Error 515: Not connected to a Bluetooth device"と表示が出る。→①のエラーが原因か
■ご指摘に対するご回答
①マイコン側でBluetoothモジュールを使用しているか?
→使用しておりません。RaspberryPi4に標準搭載のBluetoothを利用しています。
②スマホとBluetoothモジュールとのペアリング
→スマホとRaspberryPi4のペアリングはできていると考えます。
それは、RaspberryPiOSでのTerminal画面で、bluetoothctl⏎、scan on⏎としたした際にスマホのMACアドレスが確認できています。また、https://appinventor.tmsoftwareinc.com/archives/246で作成したアプリで、蜂の音が、RaspberryPi4にUBS接続したスピーカから聞こえます。(ペアリングしていないとスマホから音がします)
③アプリの接続ボタンからモージュール選択画面に移行するか
→Suzuky様の記事で示される、「各行ごとに、MACアドレス デバイス名 の順番」がモジュール選択画面であれば、その表示になります。
④アプリは出来上がっていて
→Suzuky様の記事https://zenn.dev/suzuky/articles/c872429ced4841で示される、LEDを点灯させるプログラムを自身で更新しております。このプログラムも動作に問題がないか、検証が必要です。
⑤アプリはWindows PC
→Windowsで作成しております。
私の勝手な都合で恐縮致しますが、必要に応じて、作成したスマホアプリとかRaspberryPi4でのLED点灯ファイルもご提示が可能です。如何でしょうか。
このような取り組みをするとが初めてであり、Suzuky様の実行例を先ずは、マネさせていただいて、自身の技量向上につなげていきたいと考えております。
適切なアドバイスを頂けましたら助かります。
以上
う~ぱ様
状況のご連絡ありがとうございます。
以下、あくまでも私個人の感想として捉えていただければ幸いです。
・おそらくアプリとデバイス間のペアリングはできていると思われます。
・各種エラーは、アプリとデバイス間のBluetooth接続が成功していないので発生していると思われます。
・つながらない原因は、Python側のソースコードのBluetooth関連の部分が影響していると思われます。
・ ラズパイは昔使ったことはありますが、残念ながらPython含めて詳しくありません。
補足:
Zennの記事は、仕事や趣味で電子工作するなかでアーカイブとして、また、ワークショップのテキストとして使用するために書いております。
現状はArduinoとESP32を使うことが多く、Arduino IDEで扱えるソースコードであれば大した手間ではありませんのでご協力させていただきますが、
ラズパイを使うとなるとラズパイ自体の再購入、環境設定から勉強し直しまで膨大な時間がかかることが予想されます。
特に、直近の半年は、ESP32とそのWi-Fi機能を使った案件に集中する必要があります。ということで、ご理解いただけますと幸いです。
その他(余談):
・本記事のまとめの少し上あたりにも書かせていただいておりますが、今回のブロックプログラミングですと、一度「接続」をタップしてしてしまうと、接続の有無にかかわらず、強制的に「接続中...」に切り替わってしまいます。
このため、下記の通り、接続されたら「接続中」、切れたら「再接続」と表示されるよう修正されることをオススメ致します。
以上、よろしくお願いします。
Suzuky様
お忙しい中、ご対応頂きありがとうございます。
Pythonでのプログラムに行く前に、根本的に、間違いを起こしているようです。
Suzuky様とのやり取りでのご知見を参考にさせて頂きながら、この後は、自身で調査を進めます。
ただ、Suzuky様の本業の中で、何かヒントとなることがありましたら、ご連絡頂けましたら助かります。
〇実施状態
1.蜂の音のAndriodアプリでRaspberryPi4に接続したUSBスピーカからなることを確認(RaspberryPi4とスマホとのBluetoothペアリングはできているはず)
2.ご連絡頂いたブロックに更新したAndroidアプリを作成
3.スマホで上記Andriodアプリの付近のデバイスの権限を許可に変更
4.Andriodアプリの起動し、「Bluetoothで接続」のボタンをクリック
5.対象となるRaspberryPi4のMACアドレスを選択
その後の結果、
・”Error 507: Unable to connect. Is the device turned on?”との表示が出るが、数秒後に消える
・「Bluetoothで接続」のボタンは、”再接続”の表示となる
です。
ちなみに、3.を実施しないと、5.のMACアドレスを選択ができず、スマホ画面がブラックアウトし、その後、Runtime Error Need android.permission.BLUETOOTH_CONNECT・・・のエラーが出ますので、Andoroid12では3.の実施は必要そうです。
以上
う~ぱさま
見た感じでは1~5の手続きは問題ないと思います。
また、世の中のスマホアプリは、スマホの権限をすべて許可しないと正常に動かないものも少なくないため、今回のアプリに限らず、3を実施するのは順当だと思います。
ちなみに、接続をタップし、ラズパイのMACアドレスを選択後、「接続中...」と表示されますか?
先にご提示したブロックプログラミングは、
isConnectedは、接続したら何かをする(今回はボタン上の表示を「接続中...」へ変える)
Disconnectは、切断したら/接続できなかったら何かをする(今回はボタン上の表示を「再接続」へ変える)
という意味ですので、もし今回のに変えても「接続中...」が一度も表示されなかったとしたら、接続できていないと思います。
もう一つは、通信は送信側と受信側の両方が関係しますが、今回のブロックプログラミングはArduinoでHC-05などを使うのには十分でも、ラズパイで使うには不十分かもしれません。
また、BluetoothはClassicとLEの2種類あり、今回のアプリはClassic用ですので、もしRaspberryPi4がBLEだけ、あるいは、両方対応していても、う~ぱさんが作ったソースコードがBLE用のものだとしたら使えません。
その場合は、アプリ側をBLE用のブロックプログラミングに組み替えていただくか、ラズパイ側のソースコードをClassic用に変えてください。
総合的に判断すると、
1.スマホ(アプリ)とラズパイのペアリングはできている。
2.Bluetooth接続が完了しない。その原因は、ClassicとLEの違いかもしれない。
今回のスマホアプリはArduino Unoとの間にBluetooth Classicでの接続の実績があります。
ただ、HC-05/06はClassicのみ対応で、BLE接続はできないため、もしラズパイのPythonの側のソースコードがBLE用になっている場合は、今回のアプリはそのままでは使えません。
Suzuky様
度々のご知見を頂き、ありがとうございます。
ご指摘の、「接続をタップし、ラズパイのMACアドレスを選択後、「接続中...」と表示されますか?」については、表示がありません。
従いまして、ご指摘の「BluetoothはClassicとBLEがある」が原因かと考えます。
ちなみに、RaspberryPi4のBluetoothは、以下によると両対応ですが、
私自身の現在の実施がどちらで実施しているか、把握できておりません。私は、極めて、RaspberryPi4でSuzuky様が実現したようなシステムを実現したいと考えておりますが、Suzuky様のご知見(記事)を参照するには、少なくとも、HC-05/06をRaspberryPi4に接続して実施することが必要と考えております。
(HC-05/06をこれからネット注文します)
以上
う~ぱさん
ClassicとLEが両対応ならHC-05/06は不要だと思います。
Pythonの記述で、Bluetooth Classic用かBLE用かを書くだけですので。
ただ、物理的な設定(ジャンパーピンを使うなど)やソフト内でSetup等でどちらかを指定したり、切り替えたりしなければならない可能性もありますが、正直そこまでは把握していません。
ですので、おっしゃる通り、HC-05/06を外付けして、ソースコードはClassic用にするのが確かに確実です。
なお、HC-05の購入をオススメします。
05は送受信、06は受信だけ。ということで、スマホからLEDをON/OFFさせるだけなら06で十分ですが、経験上06は不安定かつ壊れやすいです。
いずれにしても、応援しています。頑張ってください!
Suzuky様
お忙しい中、ご見解を頂き、ありがとうございます。
Suzuky様
HC-05を購入して実施したところ、スマホアプリからラズパイに接続したLEDのON/OFFを実施することできました。
いろいろ相談頂き、ありがとうございました。
それはよかったです!