絞り込み条件を変更する
検索条件を絞り込む

すべてのカテゴリ

5 件中 1 - 5 件表示
カバー画像

pico のUSBシリアル input待ちに_thread利用

Raspbrry Pi Pico はUSBシリアルのコンソール機能を使ってPCと接続が容易と言うことで、センサーからの入力をPCに送るような機能を容易に実現出来るようです。これまでにもPCやRaspberry Pi にマイコンボードをUSBシリアル変換ケーブルで繋いで、検査装置のようなものを作ったりしましたがpicoを使えばUSBケーブルだけで済みそうです。MicroPythonによるPCとの通信はprint と input が使えることを確認しました。一定間隔で測定値を送り続けるだけの用途ならprintだけで済むのですが、送信間隔等の設定値を変更したいと言った場合は、inputでPCからのコマンドを受ける必要がありそうです。inputを使うと入力が済むまでの間、他の処理が止まってしまうのでinputの待ち受けに_threadを試してみることにしました。動作確認用のプログラム電源を入れると0~9の数字を繰り返し送信して来ます。PCから文字列'stop'を送ると繰り返し送信が停止し、'stop'以外の文字列を送ると繰り返し送信を再開します。teratermでも動作確認しました。ソースコード以下のコードで確認しました。import _thread # スレッドモジュールを準備 from utime import sleep instr = [''] def core0(instr): # print 担当     intf = 1     while True:         for i in range(10):             if instr[0] == 'st
0
カバー画像

Raspberry Pi Pico W に期待

PICマイコンを使うので、Raspberry Pi Pico を使う機会がありませんでした。現場で使うためには何らかのI/F基板を作る必要があり、基板を作るならCPUも一緒に実装した方がスッキリすると言う理由です。 Raspberry Pi Pico W であれば WiFi が使え、将来は BLE にも対応する予定と言うことですし、Micro Python で記述出来るようなので期待しています。 ESP32 が既に実現している機能で、私も ESP32 を Micro Python で使う機会があります。WiFiを手軽に使えるマイコンボードは IoT 分野で使い易くて助かります。 Micro:bit は WiFi は使えないながらも、BLE を手軽に使えて便利です。I/F基板への実装制御対象とのI/F基板にこれらのマイコンボードを実装する際には、直接半田付けするか、ピンヘッダーやコネクタで接続することになるかと思います。 とにかく小さくまとめたい場合は、ESP32を直接半田付けする方法が良いと思います。 Mciro:bit はカードエッジコネクタでI/F基板に接続するのが一般的だと思いますが、このコネクタの大きさと Micro:bit 自体の大きさから小さくまとめるには不利な選択になるかと思います。 一方で標準実装されたLED表示器、SW、センサー、無線機能を使う他、手軽に複数の装置に付け替えて使いたいと言った場合に向いていると思います。Raspbrry Pi Pico W は ESP32 に比べて外形寸法が大きい分だけ、小さくまとめるには前述2機種の中間的な存在になるのかな?
0
カバー画像

pico のUSBシリアル経由で入出力制御

前回の記事「pico USBシリアル input待ちに_thread利用」で作ったMicroPythonのプログラムに以下の機能を追加しました。前回の記事のURL https://coconala.com/blogs/2433234/3737101.1秒間隔でpicoの内蔵温度センサーの値(温度換算)を送信する。2.コマンド 'stop'を受信すると1の送信を停止する。3.コマンド 'run'を受信すると1の送信を再開する。4.コマンド '1' を受信するとpicoの内蔵LEDを点灯する。5.コマンド '0' を受信するとpicoの内蔵LEDを消灯する。送信される文字列は温度とLEDの状態で、以下のような文字列です。25.0,0外付けハードウェアを一切使わずに動作確認出来るようにしました。センサーやアクチュエーターを外付けしてPCやRaspberry Pi からUSBシリアル経由で制御できる装置を製作する時の参考になると思います。測定用や検査装置と言った用途の事前準備と考えています。ご希望があれば、マンマシン・インタフェースを提供し、ログをファイルやデータベースに記録するPCやRaspberry Pi 側のPythonアプリを提供することも可能です。pico のプログラムは以下のように実現しました。threadによるinput待ち合わせinputを実行すると他の処理が出来なくなるのを避けるために、前回同様にthreadを使っています。インターバルタイマーを利用前回の記事はsleepで時間(1秒)を作っていましたが、タイマー割込みによる方法に変更しました。classを作成温度セン
0
カバー画像

AndroidとPico間でUSBシリアル通信

タイトル画像はAndroidのUSBポートにOTGケーブル経由でRaspberry Pi Picoを接続し、シリアル通信を試しているところです。Android側はSerial USB Terminalと言うアプリを使っています。MicroPythonで使っているPicoに接続して 1+2 を送信し、3 とプロンプトを受信しています。以前の記事でもUSBシリアル通信の話を書いていますが今回はPico用に書いたプログラムの設定値変更を、Androidから手軽にしたいと考えて試してみました。写真のPico WであればBLEやWiFiも使えますが、USBシリアルならPicoでも使えます。プログラムの中でファイルを読み込んで使っている設定値(プログラム定数)等を書き換える用途に使え、Thonny等の助けが無くても現場で手軽に対応出来ると思います。特定のボタンを押しながら電源を入れた時に設定モードに入り、予め決められたコマンドとレスポンスを繰り返して設定ファイルを書き換えることで、次回電源ONで新しい設定値に従って動作するようにしたいと考えています。多数の定数を書き換える場合やファイルを流し込むような用途ではAndroid側に専用のアプリが必要そうですが、幾つかの定数を書き換える用途なら使えそうです。実用的で手軽な仕掛けになってほしいと思います。今後とも宜しくお願い致します。
0
カバー画像

ICM90248の磁気センサー読み出し MicroPython

MicroPython で使う Raspberry Pi Pico で 9軸センサー ICM90248 の磁気センサーを読み出しました。タイトル画像はスイッチサイエンスさんで購入した「Raspberry Pi Pico用10-DOF IMU センサ ICM20948 + LPS22HB」に Pico W を接続した状態で、センサーモジュール単体では下図のような姿です。加速度と角速度はライブラリを見つけて読み出せたのですが、磁気センサーも読み出せるライブラリをみつけることが出来ずに困っていました。ICのマニュアルを読み下して一人で作るにはボリュームが大き過ぎて無理と判断しました。ChatGPT, Gemini, Bing AI も試しましたが聞き方が悪いのか解決せず、海外のサイトで見つけたプログラムでやっと読み出すことが出来ました。ライブラリではないプログラムで、必要なら自分で修正することも出来そうです。磁気センサーだけでなく加速度と角速度、Roll, Pich, Yawを出力してくれます。ココナラの規定によりURLを載せることは出来ませんが、How to install library for ICM20948 in Pico Explorer? と言うQ&Aの中でTonygo2さんと言う方が紹介してくれています。読み出した磁気センサー測定値の内、X,Yの生値を散布図にしてみました。木製テーブルの上で、X-Y平面上を手作業で滑らせながら360度回転させた時の実測値です。時々、グラフの外に飛び出すような大きな値を持ったノイズがありますが、フィルター出来ると思います。円の中
0
5 件中 1 - 5