ラベル Raspberry Pi Pico W の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry Pi Pico W の投稿を表示しています。 すべての投稿を表示

2023年4月13日木曜日

Raspberry Pi PicoをUSBマウスとして使う(2/3)(マウスボタンのクリック・ドラッグ)



前回の続きです.

Raspberry Pi PicoをUSBマウスとして使用するにあたって,マウスボタンの実装をします.

まずボタンは物理的にはスイッチとして実装されており,Raspberry Pi PicoではON (down)かOFF (up)かの状態が瞬間ごとに読み取れます.これだけではクリックとドラッグの区別ができませんので,ソフトウェアで実装します.

ソフトウェア

まず,ONかOFFかの読み取りは定期的に行われているので,前回の状態を記憶しておいて,ON→OFFとOFF→ONの状態変化を読み取ります.OFF→ONがボタンのdown,ON→OFFがボタンのupになります.

マウスのイベントとしては,MOUSE_DOWN, MOUSE_UP, MOUSE_CLICKを発出する必要があります.MOUSE_DRAGとMOUSE_CLICKのモードを作成して,MOUSE_DRAGモードの際にはMOUSE_DOWNとMOUSE_UPのイベントを発出します.MOUSE_CLICKモードの際には,マウスボタンを離した瞬間にMOUSE_CLICKイベントを発出することにします.

さらに,MOUSE_DRAGモードとMOUSE_CLICKモードの区別は以下のようにします.downの瞬間にdownしている時間の計測を始めます.初期状態はMOUSE_CLICKにしておいて,ある閾値(ここでは0.5秒)を超えたら,MOUSE_CLICKからMOUSE_DRAGに状態変化すると同時に,ここでMOUSE_DOWNイベントを発出します.

マウスボタンがupされた時点で,現在MOUSE_DRAGモードの場合にはMOUSE_UPイベントを,MOUSE_CLICKモードの場合にMOUSE_CLICKイベントを発出します.

図示すると以下のようになります.

ハードウェア

ハードウェアの製作は以下のようになります.push buttonの片方のピンを3.3Vに接続して,もう片方のピンをGPIOにpull down接続します.今回はGP16とGP17を使いました.

配線全体は以下のようになります.


以下の写真はボタンの部分の配線です.


以下の写真はRaspberry Pi Pico側の配線です.


ダブルクリックについて

ダブルクリックが未実装です.これも時間を測って,時間の閾値を決めてその時間内にマウスボタンがON→OFF→ON→OFFされたらダブルクリックイベントを発出する必要があるみたいです.

もしくは,OSに合わせてハードウェア側でクリックの時間をある程度決めないといけないのかも知れません.

続きはここで.

2023年4月12日水曜日

Raspberry Pi Pico/Pico WをArduino IDEから使う方法(macOS)

 Raspberry Pi Pico/Pico Wは通常のRaspberry Piと違い,OSが動いていないため,パソコンでプログラムを書いてこれらに書き込む必要があります.開発方法は以下の3種類あります.

  • ターミナルのコマンドプロンプトからgccとcmakeでbuild,installする
  • microPython用のファームウェアを書き込んで,Thonnyを使ってmicroPythonで開発する
  • Arduino IDEをRaspberry Pi Pico/Pico W対応にして,Arduinoのようにプログラムを書き込む
ここでは,Arduino IDEを使う方法をメモします.こちらのページを参照しました.

手順1:Arduino IDEをダウンロード,インストール

まずArduino IDEをインストールします.Arduino IDEはArduinoというマイコンボードのためのプログラムを書くために提供されている統合開発環境(IDE)ですが,拡張機能を入れることで,Raspberry Pi Pico/Pico Wでも使用できます.
以下のサイトにアクセスします.
以下のような画面が表示されます.

右側の「DOWNLOAD OPTIONS」から使用しているOSに合わせてダウンロードします.ここでは「macOS Apple Silicon」用の行をクリックします.
以下のような画面が表示されます.

寄付するかどうかを聞かれています.寄付しない場合は「JUST DOWNLOAD」をクリックしてください.ここではイメージファイル「arduino-ide_2.0.4_macOS_arm64.dmg」がダウンロードされました.

このファイルをダブルクリックして開くと,以下のようなウィンドウが開きます.


左のアイコンがアプリケーションのアイコン,右のアイコンが「アプリケーション」フォルダなので,左のアイコンを右のフォルダの中にドラッグ&ドロップすると,アプリケーション「Arduino IDE.app」が「アプリケーション」フォルダの中にコピーされます.
コピーが終了したら,「アプリケーション」フォルダの中,もしくはLaunch Padから起動します.以下のようなウィンドウが開きます.

手順2:Raspberry Pi Pico/Pico Wを使用するための初期設定

この状態ではRaspberry Pi Pico/Pico Wを使用できないので,初回のみ,使用するための初期設定を行います.メニューバーの「Arduino IDE」から「Preferences...」をクリックしてください.以下のような設定ウィンドウが開きます.

一番下にある「Additional boards manager URLs:」のテキストボックスに,以下のURLをコピー&ペーストしてください.

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

貼り付けたら右下の「OK」ボタンをクリックします. 

次にメニューバーの「Tools」から「Board」→「Boards Manager...」を選択してください.

以下のように,ウィンドウの左側にBoards Managerが表示されます.

一番上のテキストボックスに「pico」と打ち込んでください.

左のboards managerの表示をマウスでドラッグして広げると,以下のように「pico」にマッチするモジュールとして「Arduino Mbed OS RP2040 Boards by Arduino」,「Raspberry Pi Pico/RP2040 by Earle F. Philhover, III」と「[DEPRECATED - Please install standalone packages] Arduino Mbed OS Boards by Arduino」が表示されます.


2番目の「Raspberry Pi Pico/RP2040 by Earle F. Philhover, III」の「INSTALL」をクリックしてください.インストールが終了すると,以下のような表示に変わります.


これでインストールは終了です,左の縦バーで上から2番目のアイコン「Boards Manager」をクリックしてください.

ボード・マネージャーが閉じてスケッチブックに戻ります.

手順3:ボードと書き込みポートの選択

次にArduino IDEでプログラミングするボードを選びます.ここでは,Raspberry Pi Picoを選択します.メニューバーから「Tools」→「Board」→「Arduino Mbed OS RP2040 Boards」→「Raspberry Pi Pico」(Raspberry Pi Pico Wを使っている場合は「Raspberry Pi Pico W」)を選んでください.


「Tools」メニューに表示される項目が増えます.

ここで,Raspberry Pi Pico/Pico WボードをUSBケーブルでパソコンに接続してください.認識されていない場合は,Raspberry Pi Pico/Pico Wの「BOOLSEL」ボタンを押しながらUSBケーブルを接続してください.すると,接続用のUSBポートが新しくできるので「Port:」で「/dev/cu.usbmodem2201」(最後の4桁の番号は違う場合があります)を選択してください.

手順4:サンプルスケッチの書き込み

メニューバーで「File」→「Examples」→「01.Basics」→「Blink」を選択してください.新しくウィンドウが開いて,Blinkのソースコードが表示されます.


ボードとして「Raspberry Pi Pico」もしくは「Raspberry Pi Pico W」が表示されていること,メニューバーの「Tools」→「Port:」で「/dev/cu.usbmodem????」が選択されていることを確認して,左から2番目の書き込みボタンをクリックしてください.

Raspberry Pi Picoのボードに載っているLEDが点滅します.


Raspberry Pi Pico Wでも,ボードの選択をすれば同じプログラムが動きます.


メニューバーの「File」→「Examples」の中に色々とサンプルプログラムが入っているので試してみてください.

2023年4月11日火曜日

Raspberry Pi Pico/Pico WからI2SでPCM5102ボードにオーディオ出力(USB-DAC)

この記事では,Raspberry Pi Picoをpico audioボードに接続して,ここにあるプログラムをRaspberry Pi Picoに書き込んで,USB-DACとして使いました.

ここでは,ここで購入できる一般のPCM5102 I2Sボードを使ってUSB-DACを作成します.

プログラムの書き込みはここと一緒です.配付されたプログラムから何も書き換えていません.

ハードウェアの結線は以下のとおりです.このDACボードは5V電源なので,以下のように接続します.


USB-DACボードの左から順に書いています.

  • GND→接続なし
  • MCLK→接続なし
  • BICK→PICO 31pin
  • DATA→PICO 34pin
  • LRCK→PICO 32pin
  • GND→PICO 38pin
  • MUTE→結線なし
  • VCC→PICO 40pin

Raspberry Pi Pico/Pico Wのピン配置はこのようになっています.

これでパソコンからUSB-DACとして認識して音が出ました.


2023年4月5日水曜日

Raspberry Pi Pico/Raspberry Pi Pico WをMicroPythonで使う (macOS環境)

Raspberry Pi PicoおよびRaspberry Pi Pico Wは,パソコン上でThonnyというソフトウェアを使って,MicroPythonというPythonのサブセットを用いてプログラミングができます.

本稿は以下のページを参考にしました.

https://www.marutsu.co.jp/pc/static/large_order/zep/m-z-picoled-da1

https://tech-and-investment.com/raspberrypi-picow-2-pico_led/


ファームウェアのダウンロード


以下のページからダウンロードできます.

https://www.raspberrypi.com/documentation/microcontrollers/micropython.html



ファームウェアの作成(ソースコードからビルド)


以下では,Raspberry Pi PicoとRaspberry Pi Pico Wのファームウェア両方をコンパイルしています.
brew install python@3.11
cd
mkdir pico
cd pico
git clone -b master https://github.com/micropython/micropython.git
cd micropython
git submodule update --init -- lib/pico-sdk lib/tinyusb
make -C mpy-cross

cd lib/pico-sdk
git submodule update --init
cd ../..

export PICO_SDK_PATH=../../lib/pico-sdk
export PICO_TINYUSB_PATH=../../lib/tinyusb
cd ports/rp2
make PICO_BOARD=pico BOARD=PICO submodules
make PICO_BOARD=pico BOARD=PICO
make PICO_BOARD=pico_w BOARD=PICO_W submodules
make PICO_BOARD=pico_w BOARD=PICO_W
これで,pico/ports/rp2/build-PICO/firmware-uf2にRaspberry Pi Picoのファームウェアが,pico/ports/rp2-build-PICO_W/firmware-uf2にRaspberry Pi Picoのファームウェアが作成されます.

ファームウェアの書き込み


BOOTSELボタンを押しながらUSBでmacに接続すると,USBメモリとして認識されるので,ファームウェアのファイルをコピーしてください.ファイルのコピーが終わると自動的に再起動がかかります.

Python開発環境Thonnyのダウンロードとインストール


ThonnyというPythonの統合開発環境から直接プログラムを書き込んで動かすことができます.
https://thonny.org/にアクセスすると,Windows,Mac,Linuxのそれぞれのインストーラーがダウンロードできるので,ダウンロードしてアプリケーションをインストールします.
アプリケーションを起動すると,言語と初期設定を設定するダイアログが表示されます.
それぞれ日本語とRaspberry Piに設定します.
[Lets go!]ボタンをクリックすると,アプリケーションが起動します.

メニューバーの[Thonny]→[Settings...]をクリックして,「Thonnyオプション」ダイアログを開きます.「インタプリタ」タブを選択して,「MicroPython (Raspberry Pi Pico)」を選択します.


OKボタンをクリックしてこのダイアログを閉じたあと,Thonnyを再起動してください.

Raspberry Pi Picoで「Lチカ」プログラムの作成・実行


以下のようなプログラムを入力します.
以下のようなプログラムです.

Thonnyの起動時にRaspberry Pi PicoをUSBで接続していない場合は,右下のステータスバーでクリックして,Raspberry Pi Picoを選択すると,ThonnyがRaspberry Pi Picoに接続し直してボードを認識します.

ボードが認識されると,ウィンドウの上にある「実行」ボタンがクリックできるようになります.「実行」ボタンをクリックすると,プログラムがRaspberry Pi Picoに書き込まれて,LEDがチカチカします.

picozeroライブラリのインストール


上記のプログラムはピン番号が指定してある古いプログラムです.現在はpicozeroというライブラリが使えて,ピン番号を指定不要になっています.また,同じプログラムがRaspberry Pi PicoとRaspberry Pi Pico Wの両方で動きます.このライブラリを設定します.

まず,Thonnyのツールバーの右端にある,「通常モードに変更」をクリックして,Thonnyを再起動します.

すると,メニューバーが以下のように変わります.

メニューバーで「ツール」→「パッケージを管理...」を選択します.以下のようなパッケージ管理ダイアログが開きます.

検索テキストボックスに「picozero」と入力して,右の「PyPIを検索」ボタンをクリックすると,以下のようにpicozeroが表示されます.

検索結果にある「picozero」をクリックします.

下にある「インストール」ボタンをクリックします.インストールが進みます.

インストールが終了しました.「閉じる」ボタンをクリックしてください.

Raspberry Pi Pico/Pico Wでpicozeroを使った「Lチカ」プログラムの作成・実行


以下のようなプログラムを書きます.

このプログラムをmain.pyという名前で保存すると,Raspberry Pi PicoとRaspberry Pi Pico Wの両方で動きます.

2023年4月4日火曜日

Raspberry Pi Pico WでpimoroniのInky Packを使用

 Raspberry Pi Pico Wが日本で発売になったので,一緒にpimoroniのInky Packを入手しました.


Raspberry Pi PicoとRaspberry Pi Pico Wを接続すると,以下のようなサイズです.

pimoroniのgitにまとめてサンプルファイルがあるので,macOSからCの開発環境でサンプルファイルを書き込んでみます.


まずは開発環境のセットアップから始めます.HomeBrewが入っている状態で,ターミナルから以下のようにコマンドを打ち込みます.
brew install cmake
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc
Xcodeが入っていない場合は以下もやっておきます.
xcode-select install
Raspberry Pi Picoのリポジトリからpico-sdk, pico-examples, pico-extrasをコピーします.
cd
mkdir pico
cd pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git
git clone -b master https://github.com/raspberrypi/pico-etras.git
次に,pimoroniのリポジトリからpimoroni-picoをコピーします.
git clone https://github.com/pimoroni/pimoroni-pico.git
cd pimoroni-pico
git submodule update --init
cd ..
pico-examplesのサンプルファイルをコンパイルします.Raspberry Pi Pico Wを使っているので,環境変数PICO_BOARDを設定しておきます.全体をコンパイルするので,だいぶ時間がかかります.
export PICO_BOARD=pico_w
export PICO_SDK_PATH=../../pico-sdk
cd pico-examples
mkdir build
cd build
cmake ..
make
cd ../../
pimoroni-picoのサンプルファイルをコンパイルします.
cd pimoroni-pico
mkdir build
cd build
cmake ..
make
cd ../../
pimoroni-pico/examples/inky-packの動作を確認します.一度,Raspberry Pi Pico WをmacにUSBケーブルで接続します.認識できたら,一度ケーブルを抜いて,Raspberry Pi Pico WのBOOTSELボタンを押しながらUSBケーブルでmacに接続します.コンパイルしたプログラムを書き込みます.
cd pimoroni-pico/build/examples/inky_pack
cp inky_pack_demo.uf2 /Volumes/RPI-RP2/
書き込みが終了すると,すぐにプログラムが動きました.
eペーパーなので,USBケーブルを抜いても表示が消えません.