ラズベリーパイPico UART通信を行う : Rubyではじめる電子工作 その6

前回の続き

 

hfactory.hatenablog.com

今回もこちらの書籍の第8章「Pico 同士で通信しよう」を進めていきます。

techbookfest.org

RP2040-Tinyを使用する

書籍ではラズベリーパイPicoを2台使用してUART通信を行っていますが、私はラズベリーパイPico1台の代わりにRP2040-Tinyを使用して行っていきます。(RP2040-Tinyのヘッダーピンのはんだ付けは澄ませておきましょう)

まず、RP2040-Tinyですが、下記のページで詳細が分かります。

www.waveshare.com

私はFPCケーブルで機器をつなぐ経験がなかったので、上記ページの画像による解説は助かりました。動画でも使い方が紹介されています。

www.youtube.com

FPCケーブルでアダプタ基板と接続できたらUSBケーブルのType-Cを使ってパソコンと接続します。USBケーブルのType-Cは書籍では必要な物のリストに入っていなかったので注意が必要です。ラズベリーパイPicoの時と同じようにBOOTボタンを押しながら接続し、ダウンロードしたR2P2のuf2ファイルをドラッグアンドドロップしてR2P2を書き込みます。行う手順は第2章でやったことと同じです。

実装

ラズベリーパイPicoの方は書籍の内容と同じになりますが、RP2040-Tiny側は書籍の内容を少し変更する必要があります。

配線ですが、RP2040-Tinyの方を通信の受け手とする場合UART RXが設定されているピン(GP1,GP5,GP9,GP13)が使用できます。

例えばGP1のピンを使用するなら、サンプルコードの一部を下記に修正します。

uart = UART.new( unit: :RP2040_UART0, txd_pin: 0, rxd_pin: 1, baudrate: 115200)

また、ピンの配置図を見るとGP4,GP5,GP8,GP9のピンはUART1となっています。これらのピンを使用する場合はインスタンスを生成する時に渡すunitは:RP2040_UART1になるので注意が必要です。

unitに渡すシンボルについて分かったこと

今回UARTのインスタンスを生成する時に引数unitにシンボル:RP2040_UART0を渡しました。第4章で温湿度計を作った際にも、I2C1のピンを使用した場合I2Cのインスタンスを生成する時に:RP2040_I2C1を渡しました。

以前温湿度計を作った際のブログでも引数unitに渡すシンボルについて書きましたが、今回で少し分かったことがあります。まず、フォーマットがRP2024_xxxxyの形になっていることです。xxxxの部分は使用するピンの役割(I2CやUARTなど)そして末尾のyがピンの配置図で確認した時にわかる末尾の数字に対応しています。(例えばGP0はUART0なので末尾が0でシンボルは:RP2024_UART0となります) 試しにpicorubyのGitHubのコードをspiで検索するとRP2040_SPI0という文字列がunit_nameとして存在することが分かります。ちなみにadcで検索しても上記フォーマットのunit name らしきものは見つかりませんが、それはADCクラスのインスタンスを生成する時にはunitは渡さず、ピン番号のみでインスタンスの生成が可能だからだと思われます。

 

マイコン同士の通信ができたので次回は無線通信を行っていきます。

次回の記事はこちらです。

 

hfactory.hatenablog.com