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

すべてのカテゴリ

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

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
カバー画像

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
カバー画像

Pico の未使用端子処理 MicroPython

Raspberry Pi Pico の未使用端子の設定について、あまり気にしないで使っていました。結構多くのピンが未使用になる場合が多いので、気になって居たのですがデフォルトのまま使うことが多かったと思います。未使用のGPIO端子をフロート状態のままにしておくと、ノイズや不要な電流が発生することがあります。PICマイコンの未使用端子は出力Lowに固定していました。Picoでも同様に処理したこともありますが、以下の様にラベル(変数名)を付けて1端子当たり2行を記述します。from machine import Pingpio_pin = Pin(15, Pin.OUT)gpio_pin.value(0) # ピンをLowに設定未使用故にラベル(変数名)を付けたくないし、1行で済ませられないものかと考え、以下の様にプルダウン付きの入力ピンに設定することにしました。from machine import PinPin(15, Pin.IN, Pin.PULL_DOWN) # ピン15をプルダウンで入力に設定他に良い方法が見つかるまで、この方法で処理したいと思います。今後とも宜しくお願い致します。
0
カバー画像

Raspberry Pi Pico W 修行中

技適が通った Pico W が販売されたので購入しました。3/27日に注文し、3/31日に入荷していたのですが、まとまった時間が取れず試せていませんでした。Webページを参考に、WiFi経由で内蔵LEDをON/OFFさせるサンプルを動かして動作確認を済ませました。MicoroPythonはESP32で経験があるので、SPIとmicrodotを使えるようになれば、目先のやりたいことが出来るようになると思います。連休中は、これに加えてAppSheetの練習をして、Pico W とGoogle sheetを使ったアプリケーション作成に向けて準備を進める予定です。残りの日数で出来ることには限界があると思うので、その後も少しづつ進めようと思っています。暫く自主開発で経験を積んで、誰かのお役に立てるレベルになったら、出品も検討したいと考えています。今後とも宜しくお願い致します。
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
カバー画像

Picoでデバッグ用模擬信号

ココナラでPICマイコンのプログラムを作成するサービスを提供しています。作成するプログラムの中にはPIC への入力信号を元に信号を出力するものがあります。入力信号はレベル信号の場合が多いのですが、中にはパルス信号だったり入力信号が比較的短時間で変化するものや複雑なものがあります。ゆっくり動くレベル信号はタクトスイッチの手動操作で入力してデバッグしますが、パルス信号等の場合はファンクションジェネレータ等が使えると思います。複雑な入力信号が必要な場合は模擬信号を作って入力する必要に迫られることがあります。そのような時にRaspberry Pi Pico を使って模擬信号を作ってデバッグすることがあります。MPLAB X でPICを動かしながら、Thonny でPico を動かしてデバッグしています。MicroPython で作る模擬信号はスクリプト言語故に、パラメーターを変えながら試す際に手軽で便利だと感じています。Pico の信号電圧が3.3Vなので5Vで駆動しているPIC の場合は信号極性(High/Low)反転に注意しながらトランジスタで信号電圧を合わせて使います。PIC の場合、組み込み系のご相談が多いのですが、このような模擬信号を使うことで在宅でも対応可能な範囲が広がるように思います。今後とも宜しくお願い致します。
0
カバー画像

PicoとHM01B0で16諧調160x120

HM01B0カメラモジュールからRaspberry Pi Picoに160x120ピクセル16諧調グレースケールの画像を取り込むことに成功しました。タイトル画像はノートPCのキーボードを撮影した画像です。PicoはMicroPythonでしか使ったことが無く、Pico SDKも初めてです。cmakeやmakeも聞いたことがある程度の初心者です。 HM01B0カメラモジュールを入手してすぐにClaudeさんに泣きつきました。ArduCAM/RPI-Pico-Camのrp2040_hm01b0を一部修正して使うことにして悪戦苦闘が始まりました。rp2040_hm01b0は白黒2値の96x96ピクセル画像ですが、要望を伝えてディレクトリ構造と主要なファイルを送って指示を受けます。 私が持っているカメラモジュールはD0-D3の4bitしか配線できないので256諧調は諦めです。 4bitを接続するためにrp2040_hm01b0の配線に加えて以下を接続します。HM01B0  PicoD1          GP7D2          GP8D3          GP9言われるままにソースを入れ替えてビルドし、動作確認して結果を報告します。エラーメッセージや結果の画像を送っては次の指示を受けると言う作業の繰り返しでした。私は何も解からないので愚直に作業を続けます。やり取りが続いてClaudeのチャットが長くなってくると、私でも分かるような矛盾した方針を示すようになったりします。チャットが長くならないように要件を区切ってお願いする方が良さそうです。無料枠なので何度かやり取りするとリミット
0
カバー画像

Picoで「熊かも!」識別出来たよ

Raspberry Pi Pico 2 W(以下Pico2W)とHM01B0カメラモジュールを使った画像識別で「熊かも!」を作ろうと言う試みは、何とか識別出来るところまで来ました。タイトル画像はProcessingで画像と識別結果を表示したものです。160x120の画像を96x96にリサイズしているので横方向に縮んでいます。画像認識ではないので、熊かそうでないかの2クラス識別です。画像を囲んでいる赤枠は画像認識のバウンディングボックスではありません。Web上で見つけた熊画像と草地の画像を使ってEdge Impulse(以下EI)で学習させたモデルと、HM01B0カメラモジュールから画像を取得するプログラムを統合して実現しています。Pico2WのプログラムはPico SDK(C/C++)でClaudeさんに作ってもらいました。EIのモデルに入力する画像データの型を合わせるのに苦労したようで、何度もチャットを繰り返し、昨日やっと識別出来るようになりました。学習させた画像をスマホに表示してカメラに向けるとBear (1)またはNot Bear (0)と表示します。しばらくの間様々な画像を見せて楽しんだ後に次のステップに進みたいと思います。次のステップではProcessingを使わずに単独で機能し、Bear (1)と判定した時に画像(160x120)をSDカードに保存して追加学習に使えるようにしたいと思います。またWiFiを使って撮影時刻を記録出来るようにしたいと考えています。 ただ、熊を頻繁に撮影出来る場所に設置したり様子を見に行ったりするのは怖いので、何か手軽に試せる課題も探してみ
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
9 件中 1 - 9