2025年1月27日
020-1.SPIKEセンサー自作入門-第6回「タッチセンサーを自作する」
この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」で動作するセンサーの作り方を紹介します。センサーを自作して、市販のセンサーにはできないような面白い使い方を考えてみましょう。センサーを作るには電子工作のスキルが必要となります。様々な危険がともないますので、充分に注意して行いましょう。なお、以下の内容によって生じた損害については保障できかねますのでご了承ください。
SPIKEアプリおよびハブOSは、SPIKE App Legacyを利用しています。SPIKE App3での動作は未確認となりますのでご了承ください。(文/松原拓也)
◆ 3個のスイッチを読み取る

今回は特殊なタッチセンサーを作ってみたいと思います。3個のタクトスイッチを1つのセンサーで読み取ることができます。このセンサーはラージハブ(ハブ)側からは「きょりセンサー」として認識されます。
タクトスイッチには1~3の番号を割り当てています。 スイッチが押されるとその番号(1~3)をハブに伝えます。 スイッチが押されていない場合は「0」をハブに伝えます。

前回、作った回路。これをそのまま使います。

追加する部品です。
これらの部品は秋月電子通商などで売ってます。
◆ 回路の作成

自作センサーの回路図です。
Raspberry Pi Picoにある「GP~」と書かれた端子がGPIO(汎用的なポート)です。この空いている端子にスイッチを割り当てます。 今回は次のように割り当ててみました。
GP18:タクトスイッチ1
GP19:タクトスイッチ2
GP20:タクトスイッチ3

自作センサーの回路が完成しました。
プログラムを書き込むため、Raspberry Pi Picoをパソコン(PC)のUSBポートに接続します。 接続するさいには、念のためラージハブのコネクタを外しておきましょう。
Thonnyの起動時に「Device is busy or does not respond.(デバイスは忙しい。または返事をしない)」というエラーが表示される場合があります。これはRaspberry Pi Pico内部でプログラム(main.py)が実行しっぱなしである時に起こる現象です。もし、Ctrl+Cキーを押しても改善しないという場合、次の方法で対処しましょう。
(1)キーボードのCtrl+Dキーを押す(Send EOF/Soft reboot)。この時点では何も起こりません
(2)USBケーブルを挿し直す。すると、Shell画面に通信エラーが表示されます。
(3)「Stop/Restart backend」をメニュー選択。またはCtrl+F2を押す。これでプログラムが停止して、Shell画面にプロンプトが表示されます。
(4)この状態で再起動すると、またmain.pyが実行されてしまうので、次の手順でmain.pyを削除します。「ファイル - Save as」をメニュー選択。→ファイルの保存先は「Raspberry Pi Pico」を選択。→カーソルを「main.py」に合わせて、右クリックして、「Delete」を選択します。
これで、Raspberry Pi Picoが元の状態に戻ります。
◆ プログラムの作成

タクトスイッチの動作をテストするプログラム(pico_button.py)です。
実行してタクトスイッチを押すと、Shell画面に文字が表示されます。

自作センサーのプログラム(diydistsensor_ex1.py)を書き込みます。このプログラムは「diydistsensor.py」にタクトスイッチを読み取る機能を追加したものです。ページ下にあるリンクからダウンロードできます。
Thonnyを使ってファイルを開いたら、「ファイル - Save as...」をメニュー選択。→ファイルの保存先に「Raspberry Pi Pico」を選択。→ファイル名を「main.py」として保存します。書き込みが終わったら、PCとの接続を切り離します。これで、Raspberry Pi Picoの起動時にプログラムが自動的に実行されます。
なお、「Device is busy~」の対策として、Ctrl+Cキーを押したらプログラムを終了する機能を追加しておきました。

動作を確認してみましょう。 自作センサーをハブに接続して、ハブの電源をオンにします。すると、Raspberry Pi Pico内部でmain.pyが実行されます。 ハブ側は「きょりセンサーの値をライトマトリクスに表示するプログラム」を実行します。
写真は実行中の様子です。たとえば、3番のスイッチを押した場合、「3」と表示されます。スイッチが押されていない場合は「0」と表示されます。GPIO端子は大量に余っていますので、改造すればタクトスイッチを20個くらい取り付けることも可能です。
今回作成したプログラム(Thonny用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。