プログラミング
記事内に商品プロモーションを含む場合があります

【Raspberry Pi Pico WH】1.3インチLCDモジュール(WAVESHARE-19650)をMicroPythonで動かすまで

Aru

久しぶりにマイコンボードで遊ぼうと思い、Raspberry Pi Pico WHと、Raspberry Pi Pico用の1.3インチLCDディスプレイモジュール(WAVESHARE-19650)を購入しました。

この記事では、購入した2つの製品の選定理由、MicroPythonでのセットアップ手順、そして遭遇した初期不良(はんだの接触不良)とその対処などを書きました。Picoシリーズをこれから始めたい方や、WaveshareのPico用LCDモジュールの購入を検討している方の参考になればと思います。

結論・全体像

結論から言うと、はんだ付け不要のはずが、結局はんだ付けが必要になりました。 原因はLCDモジュール側の初期不良(はんだの接触不良)で、付け直すことで正常動作しました。一方で、Thonny + MicroPythonでの開発は、マイコンと思えないほど簡単だと感じています。

マイコン開発をしばらくやっていなかったので、劇的に簡単になったなぁという感想です。

購入に至った経緯と選定理由

ワンボードマイコンを久しぶりに購入しようと思い、とりあえず価格の安いRaspberry Pi Picoを購入してみました。ただ、何も周辺を購入しないと「LEDライト点滅」くらいしか遊べなさそうで面白くないので、比較的安かったのでディスプレイモジュールも一緒に購入することにしました。

  • Raspberry Pi Pico WHを選択
    ピンヘッダーがはんだ付け済みのモデルです。手持ちのハンダごてが年季が入った古いもので、新たに買いたくなかったので、ピンヘッダーがはんだ付けされたこちらを選びました
  • Pico 2は在庫切れだった
    当初はPico 2も候補でしたが、あいにく在庫切れだったためPico WHにしました。遊ぶだけならスペックが低くても十分です。価格は違いますが、そもそも安いので、そこまでの違いは感じません。WiFi付きにしたのは、ネットに繋がった方が楽しそうだったからです。
  • WAVESHARE-19650(Pico-LCD-1.3)を選択
    240×240の正方形LCDでジョイスティック付き。Picoに直接スタックできるところが良かったのでこれを選びました

補足: LCDモジュール側にメスのピンヘッダーが付いていて、Pico WHのオスのピンヘッダーにそのまま挿すだけで接続できます。

購入した製品のスペック

Raspberry Pi Pico W / WH

Pico WHは、Pico W(RP2040 + 無線モジュール)にピンヘッダーがはんだ付け済みのモデルです。メーカー公式の情報をもとに、候補だったPico 2と比較したのが次の表です。

項目Pico W / WHPico 2
MCURP2040RP2350
CPUデュアルコア Arm Cortex-M0+ @ 133MHzデュアルコア Arm Cortex-M33(またはRISC-V Hazard3)@ 150MHz
SRAM264KB520KB
フラッシュ2MB4MB
無線2.4GHz Wi-Fi(802.11 b/g/n)+ Bluetooth 5.2なし(Pico 2 Wのみ搭載)
GPIO26本(うちADC 3ch)26本(うちADC 4ch)
PWM16ch24ch
入力電圧1.8〜5.5V DC1.8〜5.5V DC

表は公式サイトの掲載情報をまとめたものです。Pico 2はSRAM・フラッシュが2倍、クロックも高いので、スペック面では明らかに上位ですが、遊び目的ならPico Wでも十分だと思います。

WAVESHARE-19650(Pico-LCD-1.3)

Waveshare公式の主な仕様は次の通りです。

項目内容
画面1.3インチ IPS LCD(65K色)
解像度240×240ピクセル
ドライバST7789
インターフェース4線式SPI
操作系ジョイスティック1個 + ボタン4個(A/B/X/Y)
接続Picoのピンヘッダーに直接スタック
動作電圧2.6〜5.5V

補足: IPSは視野角の広い液晶パネルの方式、SPIはマイコンと周辺機器を結ぶシリアル通信の規格です。ここでは「こうしたもの」と認識しておけば十分です。

仕様のうち、特に気にしたのはジョイスティックが付いていることと、Picoにスタック接続できることです。

セットアップ手順

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

今回はMicroPythonで試す予定なので、まずファームウェアをダウンロードしました。

https://micropython.org/download/RPI_PICO_W

書き込み手順は次の通りです。

  1. BOOTSELボタンを押しながらPico WHをPCにUSB接続する
  2. ドライブ(フォルダ)として認識されるので、ダウンロードしたuf2ファイルをドラッグ&ドロップする
  3. ドライブが消えたら書き込み完了

2. Thonnyのインストールと設定

エディタとしてThonnyをダウンロードしてインストールしました。

https://thonny.org

インストール後、右下のインタプリタ表示をRaspberry Pi Picoに切り替えます。接続先(COMポート)は自動判定されます。

3. LEDチカテスト

まずは定番のLED点滅テストを実行しました。Thonnyのエディタに以下のコードを貼り付け、緑の実行(▶)ボタンで実行します。

from machine import Pin
import time

led = Pin("LED", Pin.OUT)   # Pico W/WHのオンボードLED

while True:
    led.toggle()            # LEDのON/OFFを切り替え
    time.sleep(0.5)         # 0.5秒待つ

実行すると、基板上のLEDが0.5秒間隔で点滅します。問題なく動作しました。

補足: Pico W/WHのオンボードLEDはGPIO25ではなく、無線モジュール側のピンに接続されています。そのためPin(25)ではなく、Pin("LED")で指定します。

ここまでは、いろんなサイトに載っている、とりあえず動かす方法と同じです。

PCから外しても動くようにするには、このコードをPico本体に保存します。Thonnyで「ファイル → 名前を付けて保存」を選び、保存先で「Raspberry Pi Pico」を選択します。

  1. 「ファイル → 名前を付けて保存」をクリック
  2. 保存先として「Raspberry Pi Pico」を選ぶ
  3. ファイル名をmain.pyにして保存

main.pyは起動時に自動実行されるファイル名です。保存後、USBケーブルを抜いて電源を入れ直すと、PCなしの単体で点滅が始まります。止めたいときは、もう一度PCに接続してmain.pyを削除(または上書き)します。

4. LCDとコントローラーの動作確認

WaveshareのWikiからデモプログラムを確認します。

https://www.waveshare.com/wiki/Pico-LCD-1.3

「Demo Download」の手順に従ってダウンロードし、PythonフォルダにあるPico-LCD-1.3.pyを読み込んで実行してみました。

トラブル:ジョイスティックの左とAボタンが効かない

ここでトラブルが発生しました。コントローラーの左方向とAボタンが反応しないのです。

放置しようかと思いましたが、とりあえずAボタンと左方向がどこに繋がっているかを調べてみると、これらはGPIOの15番(Aボタン)と16番(左方向)に対応し、ピン位置は20ピンと21ピンだということが分かりました。この2つは近くのピンなので「ピンが浮いているのか」とあたりをつけ、そこを触ってみました。ピンを触ってあげるとたまに入力できる状態で、どうやらはんだの接触不良のようです。

テスターが手元になかったため、とりあえずWAVESHARE-19650側のはんだを付け直してみると、正常に動作するようになりました。初期不良だったようです。

はんだ付けが不要な製品を買ったのに、結局はんだ付けをすることになりました。電子工作では、こうした想定外も起こるものだと学びました。電子工作あるあるですね。

今回の教訓

  • 「はんだ付け不要」と購入しても、結局はんだ付けが必要になる場合がある
    今回はLCDモジュール側の接触不良でした。この手のトラブルはある程度「ある前提」にした方が良いと思いました。
  • やっぱり、テスターとかはんだごてとかは必要
    最近、電子工作をしていないため、この手のものを持っていないのですが、やはり最低限のテスターとはんだごては必要だと思いました。

まとめ

最後に、この記事で覚えておきたいポイントをまとめます。

ポイント
  • Thonny + MicroPythonは、マイコンと思えないほど簡単
    Arduinoなども使ったことがありますが、マイコン開発もずいぶん簡単になったと感じます
  • Picoシリーズはピンヘッダー付き(WH)を選ぶと手軽
    はんだ付け済みなので、すぐにモジュールをスタックできます
  • LCDモジュールの初期不良は、はんだ付け直しで解決することもある
    ピン配置などをちゃんと確認して類推することで、不良も意外と対応できました

さて、次は何を作ろうか。LCDがあると、表示付きの小さなガジェットが作れて、いっそう遊びの幅が広がりそうです。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中 保有資格:CFP, マンション管理士、管理業務主任、宅建士など
記事URLをコピーしました