goo blog サービス終了のお知らせ 

JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

Raspberry Pi Pico MicroPython アナログ入力(ADC)テスト

2021-11-10 08:01:54 | Raspberry Pi Pico
 Raspberry Pi Picoのアナログ入力(ADC)のテストをします。
 Picoは、ADC(アナログデジタルコンバータ)を5個持っています。
 ただし、ユーザーが使えるのは、3個です。
 各チャンネルの使用目的とピン割り当ては、以下のとおりです。

 ADC(0) ユーザー GP26 31番ピン
 ADC(1) ユーザー GP27 32番ピン
 ADC(2) ユーザー GP28 34番ピン
 ADC(3) Vsys電源電圧
 ADC(4) 内蔵温度計

 PicoのADCの解像度は12ビットで0~3.3Vを0~4095に変換します。データは、16ビット(0~65535)で格納されます。

 まず、ADC(0)を使って、読み込んだ電圧を測定してみましょう。
 回路図です。10kΩのボリュームに3.3Vを加え、電圧を変化させて、ADC(0) GP26(31番ピン)に入力します。


 MicroPythonのスクリプトです。
 4行目 GP26を入力に設定します。(この行を記入しなくても動作しました。)
 5行目 使うADCを指定します。
 6行目 AD変換された値をVに変換する係数です。
 9行目 ADC(0)の値を読み込み、V(ボルト)に変換します。
 10行目 Shellにその値を表示します。{:.2f}で、小数点以下2桁まで表示します。

 1.74~1.76Vが測定されました。最終桁は少し動きます。
 実際の電圧をデジタル電圧計で測定してみました。


 0.1V以内の誤差で測定できるようです。

 次に、CPU(コア)の温度を内蔵のセンサーで測定してみます。
 スクリプトです。
 5行目 センサーが接続されているADC(4)を指定します。
 9行目 温度に変換する式です。
 10行目 小数点以下1桁まで表示します。


 室温は、20℃程度でしたので、やや低めに測定されました。
 Shellには、漢字も表示できるんですね。

 Web上にRaspberry Pi Picoの情報はまだ多くはありません。そこで、Interface 8月号を購入しました。「ラズパイのマイコン Pico 攻略本」です。

 さすがに、詳しく書いてあり、参考になります。MIcroPythonについては、巻末の方に特集が掲載されています。

Raspberry Pi Pico MicroPython Digital I/O テスト

2021-11-09 12:46:39 | Raspberry Pi Pico
 Paspberry Pi Picoに関する情報はWeb上にはまだ多くはありません。そこで、基本的なことから、一つずつ勉強していくことにします。

 まず、スペックやピン配列については、本家Raspberry Pi のサイトから情報を得ます。そこからRasoberry Pi Picoのページを開きます。

 スペックとピン配列が掲載されています。ピン配列です。

 GP0~GP22,GP26~28が各ピンに配置されています。
 GP23~GP25とGP29はボード回路の制御に使われており、利用できるGPは26本です。なお、GP25は、オンボードLEDに接続されています。
 また、電源とGND,UART,ADC,SPI,I2C,などの配置が記載されています。

 まず、基本としてデジタル入力、出力のテストをします。
 この機能は、全てのGP(GPIO)で利用でき、入力は内部でプルアップすることができます。

 テスト回路です。GP15のスイッチを押すとGP16のLEDが点灯します。

 GP15はデジタル入力としプルアップします。GP16は出力に設定します。スクリプトです。


 ブレッドボードです。

 同じ回路です、スイッチを押すたびに点灯、消灯を繰り返すスクリプトです。

 入力ピンをプルダウンする場合は、Pin.PULL_DOWNと記載します。

 最初、プルアップ、プルダウンをどのように記載するか分からなかったのですが、こちらのYouTube動画が参考になりました。Pico購入時からThonnyのセットアップ、MIcroPythonのスクリプトの作り方まで丁寧に説明しています。ただし、英語です。でも画像を見れば分かりますよ。

 各GPIOに流すことができる電流は、GPIO制御レジスタで設定できるようです。デフォルトで4mA、GPIO全体で50mAです。

Raspberry Pi PicoをArduino IDEで使う

2021-11-05 21:45:19 | Raspberry Pi Pico
 Raspberry Pi PicoをThonny IDEを利用して、Micropythonでプログラミングする勉強をしています。

 I2C LCD AQM0802Aの表示はネット上のサンプルスクリプトで動作を確認しました。しかし、PWMやUARTなどどうも思うように動かせません。私のMicropythonの知識が浅いせいですが、進まなくなってきました。

 そこで、ちょっと浮気して、Arduino IDEでのプログラミングを試してみます。使い慣れたArduino IDEですから、うまく動かせるかもしれません。

 Arduino IDEでRaspberry Pi Picoを使う手順です。こちらのサイトを参考にしました。

 Arduino IDEをインストールします。(私は、最新版の1.8.16をインストールしました。)

 Arduino IDEを立ち上げ、ツール→ボード→ボードマネージャと進み、ボードマネージャを開き、検索欄に「pico」と入力し、検索された中から「Arduino Mbed OS RP2040 Boards」をインストールします。

 Raspberry Pi PicoのBOOTSELボタンを押しながらパソコンのUSBに接続します。

 この時点では、Raspberry Pi Picoが接続されているCOMポートは認識されていませんでした。
 しかし、スケッチ例の中から01.BasicsのBlink(LED点滅)のスケッチを書き込むと、自動的にCOMポートが認識され、コンパイルされたプログラムがRaspberry Pi Picoに書き込まマれ、ボード内蔵のLED(Pin25に接続されている)が点滅しました。

 この後、確認するとCOM9(Raspberry Pi Pico)として認識されていました。そこで、ツールシリアルポートをこのポートに設定します。

 これで、Arduino IDEでRaspberry Pi Picoが使えるようになりました。気づいたことは、コンパイルに非常に時間がかかることです。これは私のパソコンが非力なのが一つの原因だと思います。

 なお、スケッチを書き込んだ後は、Raspberry Pi Picoを電源に接続するだけでプログラムが動作します。

 また、Raspberry Pi PicoのBOOTSELスイッチを押さないで、USBに接続して、パソコンからスケッチを書き込むと、RPI-RP2が表示され、すぎに消えて、書き込まれたスケッチが動作します。

 この後、Arduino IDEを使ってRaspberry Pi Picoの機能を確認していきたいと思います。

 スケッチは、Arduinoとまったく同じです。



Raspberry Pi Pico MicroPythonのセットアップからLED点滅まで

2021-10-26 11:57:11 | Raspberry Pi Pico
 Raspberry Pi PicoへのMicro Pythonの導入については、ネット上にたくさんの記事があり、参考になりました。しかし、簡単にいくかなと思って作業を始めたのですが、思わぬところでひっかかり、LED点滅(Lチカ)ができるまで、半日もかかってしまいました。

 ということで、トラブルシューティングも含めて、丁寧に書いてみますなお、パソコンのOSはWindows10です

 まずは、本家のRaspberry Piのホームページを開きます。Raspberry Pi PicoのBOOT SELボタンを押しながらパソコンにUSBで接続すると、パソコンにはメモリデバイスRPI-RP2として認識されエクスプローラに下のような画面が表示されます。

 INDEX.HTMアイコンをクリックするとRaspberry Piのホームページが表示されます。
 赤丸印のMicroPython Getting started with MicroPythonをクリックします。



 MicroPythonのページに移動したら、下の方にDrag-and-Drop MicroPythonという記事があり、簡単なアニメーションがあり、下にPythonのセットアップの手順が書いてあります。

1 MicroPython.UF2ファイルをダウンロードします。(この記事を書いたときはrp2-pico-20210902-v1.17.uf2でしたが、逐次アップデートされると思います)このファイルはRaspberry Pi Pico上で動作するMicroPythonのファームウェアです。

2 Raspberry Pi PicoのBOOTSELボタンを押しながらパソコンにUSB接続します。

3 PI-RP2という名前のストレージ・デバイスとして認識されます。

4 ダウンロードしたUF2ファイルをドラッグアンドドロップします。PicoのフラッシュメモリにUF2ファイルが保存されると、先ほどの表示が消えて、Raspberry Pi PicoでMicroPythonが使える状態になります。

5 これで、Raspberry Pi PicoとパソコンがUSBシリアル通信で接続されてREPL(Real Event Print Loop)でMicroPythonのプログラミングが可能になります。

 次に、MicroPythonのプログラミングに使う、Python IDEとしてThonnyをダウンロード・インストールします。Thonnyのサイトは、こちら。右上の赤丸印(Windows)をクリックします。

 

 インストールが終わったら、Thonnyを立ち上げます。初期設定で言語は「日本語」にします。Thonny IDEの画面です。


 ネット上にあった、Pico本体上のLEDを点滅させるプログラムを書き、実行しましたが、shellウインドウにエラー表示され、動きません。PicoとThonny間の通信がうまくいっていないようです。画面右下の赤丸印の部分をクリックし、Configure interpreterをクリックして開きます。「インタプリタ」タブを開き、デバイスをMicroPython(Raspberry Pi Pico)に、PortをUSBシリアルデバイスのPicoが接続されているPortを指定します。

 これで、PicoとThonnyの通信ができるようになり、名前を付けて保存し、「実行」をクリックするとPico本体のLEDが点滅しました。

 では、次にGP15に接続したLEDを点滅させてみます。回路図です。
 プログラムです。

 このプログラムをmain.py(拡張子pyを付けます)という名前でPicoに保存するとPico単体(スタンドアローン)で動作することができます。つまり、PicoをUSB電源に接続するだけで動作させることができます。ブレッドボード上でGP15に接続したLEDが点滅している様子です。







 

Raspberry Pi Picoの勉強始めます

2021-10-25 17:11:15 | Raspberry Pi Pico
 巷で話題のRaspberry Pi Picoを先月秋月電子から購入しました。(550円)
 家庭菜園がそろそろ終わりになり、PICの方も一区切りしたので、Raspberry Pi Picoの勉強を始めることにしました。

 購入したRaspberry Pi Picoは、プラスチックのパッケージに入っていました。

 取り出して、手持ちのRaspberry Pi 3 ModelBと比べてみます。大きさの違いが分かりますね。

 このままでもテストには使えますが、20Pのピンヘッダをはんだ付けして、ブレッドボードにセットして使用することにします。今回は、ブレッドボードに刺しやすいように細ピンヘッダを取り付けました。


 これまで勉強してきた(使ってきた)1ボードマイコンと並べてみました。
 左から、ESP32,STM32,Raspberry Pi Pico,Arduino Nano,Arduino Pro Miniです。比べてみると中くらいの大きさですね。性能、機能的にはESP32とSTM32の中間ですが、価格が安いのが魅力ですね。


 開発言語としては、Python(Micro Python),C,C++が使えます。
 まずは、Web上に多くの情報があるMicro Pythonを使って勉強(テスト)していくことにします。

 次回は、最初の一歩、Lチカ(LEDの点滅)をやってみます。