ラズパイPicoをArduinoの代わりにシリアル通信させてみた

本サイトはアフィリエイト広告を利用しています。
ラズベリーパイ(raspberry pi)

ラズベリーパイPicoはUSBシリアルのデバイスとして認識できます。

応用すればUSB1本で簡単にデータ通信することが可能です。

PicoをArduinoの代わりにAD変換デバイスとして使う方法を紹介します。

 

スポンサーリンク

ラズパイPicoをArduinoの代わりにシリアル通信させてみた

ラズベリーパイPicoはUSBシリアル接続のデバイスとして使用することが可能です。

 

またPicoはArduinoと同様にアナログ入力ピンを持ち、AD変換の機能があります。

 

ラズパイPicoをAD変換のUSBデバイスとして使用することが出来ました。

ホスト側のPythonを利用して、リアルタイムでPicoのAD変換のデータをプロットしています。

 

設定方法からプログラムまで一から手順を説明します。

下記動画でも紹介しています。是非一緒にご覧ください。

USBシリアル経由でPicoのデータをリアルタイムで取得できていることが分かります。

 

PicoとArduinoはアナログ入力できます

PicoとArduinoはアナログ入力ピンが有り、AD変換が可能です。

 

アナログの電圧値をデジタルに変換することができます。

温度・湿度などのアナログのセンサーを接続することが可能です。

 

PicoをUSBシリアルと認識しています

Arduino同様にPicoもUSBシリアルでデータを送受信することが可能です。

下記記事のようにホスト側(ラズパイ)のPythonで受け取ることができます。

ラズベリーパイとArduinoを連携!アナログ入力を応用してみた

 

Picoと接続しているホスト(ラズベリーパイ)側からもUSBデバイスと認識できています。

dmesgで確認すると、よくあるUSBシリアルデバイス(ttyACM0)として認識していました。

dmesg | grep -i usb

 

dmesg | grep -i ttyACM

 

ラズベリーパイPicoとArduinoの比較

ラズベリーパイPicoとArduinoはCPUから違い、大きな差があります。

どちらにも多くメリットがあるので、代表的なAD変換箇所をメインに紹介します。

 

ラズベリーパイPicoのメリット

ラズベリーパイPicoのAD変換の使い方・メリットに関しては下記記事でも紹介しています。

ラズパイでAD変換!Picoでアナログ入力してみた

ラズパイでAD変換!Picoでアナログ入力してみた
ラズベリーパイpicoでAD変換してみました。 簡単に温度や電圧のアナログ入力値を測定することができます。 設定方法からプログラムまで一連の手順を紹介します。

 

Picoは価格が安い

ラズベリーパイPicoは1台500円程度で非常に安いです。正規のArduinoと比べると格安です。

またサードパーティーの互換品のArduinoと比べてもほぼ同じ価格です。

  • Pico…500円程度
  • Arduino…数百円~3000円程度 ※互換品~正規品で価格差があり

 

PicoのADCの分解能は12bit

ArduinoのADCの分解能が10bitに対して、Picoは12bitです。

さらに電圧が3.3Vのため、より精度の高いAD変換が可能となります。

下記計算のように精度だけで見ると、PicoはArduinoの5倍以上の数値となります。

  • Pico…3.3V/4096(2^12)≒0.8mV刻みのAD変換
  • Arduino…5V/1024(2^10)≒5mV刻みのAD変換

 

実際にPicoでAD変換のプログラムを実行したところ、約0.8mV刻みでAD変換できていました。

※プログラム上では16bit(read_u16())でreadしているため、65535(2^16)で分解しています。

 

Arduinoのメリット

ArduinoのAD変換については下記記事でも紹介しています。

ArduinoでAD変換!分解能10bitで電圧測定してみた

ArduinoでAD変換!分解能10bitで電圧測定してみた
Arduino Unoのアナログ入力を使用してAD変換してみました。 分解能は10bitですが趣味の電圧測定には十分使用できるレベルです。 Arduinoとの接続方法からプログラムまで分かりやすく紹介します。

 

Arduinoは5Vのアナログ入力

Arduinoは5Vまでのアナログ入力が可能です。またArduino Unoは6chあります。

(PicoのIO電圧は3.3Vのため、5Vの入力はできません)

  • Pico…アナログ入力_3.3V・3ch
  • Arduino…アナログ入力_5V・6ch

 

Arduinoはジャンパー線の接続が楽

Arduinoはデフォルトでピンソケットが実装されています。

購入してすぐにジャンパー線を接続することが可能です。

 

Picoはピンヘッダーがデフォルトでは実装されていません。

  • Pico…ジャンパー線の接続には「改造要」
  • Arduino…ジャンパー線の接続には「改造不要」

Picoでは別にピンヘッダーを購入してはんだ付けする必要があります。

 

(筆者も)はんだ付けが面倒だったため、ICクリップ-ワニ口を使用しています。

Picoの簡単なテストレベルでは十分に対応できます。

ICクリップは狭い箇所を接続するのに便利です。

 

ラズベリーパイPicoでUSBシリアル出力する

ラズベリーパイPicoでテスト的にUSBシリアル出力する方法は簡単です。

ラズパイPico公式のスタートガイドのファイルを使用するだけです。

 

下記記事の手順でファイルをPicoに書き込めば、自動的にUSBシリアル出力します。

ラズパイでAD変換!Picoでアナログ入力してみた
ラズベリーパイpicoでAD変換してみました。 簡単に温度や電圧のアナログ入力値を測定することができます。 設定方法からプログラムまで一連の手順を紹介します。

 

Pico側で出力するとUSB接続されているホスト側にもデータが届きます。

 

結果、ホスト側のPythonやシリアルコンソールでデータ取得することが可能です。

筆者はPythonにて下記設定でUSBシリアルのデータを取得しました。

  • デバイス名…ttyACM0
  • ボーレート…115200bps

 

PythonでPicoのデータを取得する

Picoのアナログ入力のデータをホスト側(ラズパイ)のPythonで取得します。

そして、リアルタイムでプロットするテストを行います。

 

Picoで取得するデータは可変抵抗で調整した0-3.3Vの電圧値です。

 

可変抵抗で3.3Vの電圧調整をする

ラズパイPicoで使用したピンは下記の通りです。

  • 3V3(36ピン)→可変抵抗_1or3ピン
  • GND[AGND](33ピン)→可変抵抗_1or3ピン
  • ADC0(31ピン)→可変抵抗_2ピン

 

回路としても非常に簡単です。部品としては可変抵抗しか使用していません。

今回は10kΩを使っていますが1kΩでも問題ありません。

 

PicoのMicroPythonのプログラム

Pico側で実際に使ったMicropythonのプログラムは下記です。

下記記事の電圧値をAD変換するプログラムにLチカを合わせたものです。

ラズパイでAD変換!Picoでアナログ入力してみた

 

ホスト側のPythonのプログラム

ホスト(ラズパイ)側で実際に使ったPythonのプログラムは下記です。

下記記事のプログラムをPico用に修正したものです。

ラズベリーパイとArduinoを連携!アナログ入力を応用してみた

 

PicoのAD変換をリアルタイムでプロットする

冒頭でも紹介しましたが、動画だと実際のテストの様子が分かりやすいです。

USBシリアル経由でPicoのデータをリアルタイムで取得できています。

是非一緒にご覧ください。

 

PicoのMicroPythonのプログラムを起動

最初にPico側のAD変換+Lチカの(Micropython)プログラムを起動しておきます。

 

ホスト側のPythonのプログラムを起動

次にホスト側のPython側の開発環境を立ち上げます。

(筆者は両方ともThonnyで実施したので、設定を切り替えているだけです)

 

ホスト側のプログラムを起動すると、自動的に電圧値のプロットが始まります。

 

リアルタイムで電圧値のプロットを確認

可変抵抗を調整すると、Pythonのグラフもリアルタイムで変わりました。

Picoからホスト(ラズパイ)側にデータがしっかり送られていることが分かります。

 

まとめ

今回はラズパイPicoのUSBシリアル通信の応用例に関して紹介させていただきました。

記事をまとめますと下記になります。

ラズパイPicoはUSBシリアル通信が可能です。
ラズパイPicoはArduinoと同様にアナログ入力が可能です。
ラズパイPicoのデータを簡単にホスト側に送ることが出来ます。

 

ラズベリーパイPicoにはICクリップ-ワニ口が便利です。

はんだ付けしなくても簡単にテストが出来るようになります。

皆さまも是非試してみてください。

コメント