「Raspberry Pi Pico」の使い方について、開発環境として手軽に導入できる「Thonny」を使用して、プログラム言語「Python(CircuitPython)」を使ったプログラミング方法について、環境づくりからサンプルプログラム(コピペ)による動作確認まで詳しく紹介します。
ライブラリの追加方法についても、液晶表示器SSD1306の動作に必要なライブラリを追加する方法を例に、サンプルプログラム(コピペ)を使って動作確認まで紹介しています。
「Raspberry Pi Pico W」で「CircuitPython」を使用したWi-Fi通信を使用した遠隔操作、データ表示の方法は以下のリンクで詳しく紹介しています。
「Raspberry Pi Pico」についての仕様や端子配列、基本的なプログラム、もう1つの「Python」互換のプログラミング言語「MicroPython」での開発環境の準備については以下のリンクで詳しく紹介しています。
1.CircuitPythonとは
2.開発環境 Thonnyのインストール方法
3.ラズパイPicoとパソコンの接続
4.Thonnyの起動と CircuitPythonプログラム環境の準備
5.サンプルプログラム(Lチカ)での動作確認
6.プログラムの保存方法
・ラズパイPico単独で動作させるための保存方法
・バックアップデータの保存方法
7.ライブラリの追加方法
・ライブラリのダウンロードと追加方法
・動作確認の準備(液晶表示器SSD1306の配線方法)
・液晶表示器SSD1306のサンプルプログラム(コピペ)で動作確認
8.ラズパイPico本体の初期化方法
9.まとめ
1.CircuitPythonとは
「CircuitPython」とはマイコンボード(マイクロコントローラ)上での動作に最適化された「Python3」と互換性のある「MicroPython」から派生した、教育および初心者向けのオープンソースのプログラミング言語です。
「CircuitPython」の開発環境の特徴は、マイコンボードをパソコンと接続した時にUSBメモリのように認識できてマイコンボード内のデータを操作できることです。
マイコンボード内のデータをフォルダとして開いて操作できるため、メモ帳や他のエディタで作成したプログラムを直接このフォルダ内に置くことで実行できたり、ライブラリや参照データを保存したりすることができます。
「CircuitPython」の公式サイトは以下のリンクになります。
2.開発環境 Thonnyのインストール方法
以下から「Thonny」のインストール方法について画像多めに順番に詳しく紹介していきます。
まず「Thonny」で「Python」のプログラムを動作させるために「Python」をインストールしておく必要があります。
インストールがまだの方は以下のリンクを参考にインストールしてください。
既にインストール済みの方は次へ進んでください。
次に開発環境「Thonny」をインストールします。以下のリンクをクリックしてください。
下画像のようなページが表示されるので、画面右上あたりの「Download〜」の中からパソコン環境に合わせてダウンロードしてください。
Windowsの場合はWindowsをクリックします。
上図のようなウインドウが表示されます。
最近のパソコンなら「64bit」だと思うので一番上をクリックします。「32bit」ならその下をクリックします。
ファイルのダウンロードが始まるので少し待ちます。
上画像はブラウザが「Edge」の場合の例です。
ダウンロードが終了したらファイルを開きます。
ファイルはダウンロードフォルダに保存されているので、そちらから直接開いてもOKです。
ファイルを開くと下画像のようなウインドウが開くので矢印の箇所をクリックします。
(クリックする方は「自分にだけインストール(推奨)」するというものです。
全てのユーザーに対してインストールする場合はその下をクリックしてください。)
下画像のようにインストール画面が表示されますが基本的には「Next」をクリックしていくだけです。
上画像の画面ではチェックボックスをチェックして、アイコンをデスクトップに置くようにしましょう。
上画像の画面で「Install」をクリックするとインストールが始まります。
最後に「Finish」をクリックしてインストール完了です。
3.ラズパイPicoとパソコンの接続
次に「Raspberry Pi Pico」とパソコンをUSBケーブルで接続します。
「BOOTSEL」ボタンを押しながら接続して、パソコンに認識されると下画像のように「RPI-RP2」フォルダが開きます。
4.Thonnyの起動と CircuitPythonプログラム環境の準備
次に開発環境「Thonny」を起動します。
「デスクトップ」に下画像のようなアイコンがあるのでクリックします。
「Thonny」が起動するので下画像のように初期設定を行います。
「Language」を「日本語」に、「Initial settings」を[Raspberry Pi]に設定します。
上画像のように設定できたら「Let`s go!」をクリックします。
「Thonny」が起動して下画像の開発画面が表示されるたら右下の矢印部(表示内容は異なる場合があります。)をクリックします。
下画像のように画面右下に表示されるリストの中から[Install CircuitPython]をクリックします。
下画像のようなウインドウが表示されるので「CircuitPython」のプログラミング環境をインストールしていきます。
上画像のドロップダウンボタンをクリックします。
表示されるリストの中から[Raspberry Pi・Pico/Pico H]をクリックします。
「version」は自動で選択されるので、そのまま「インストール」ボタンをクリックします。
インストールが終わるまでしばらく待って、左下に「Done!」と表示されたら完了です。
「閉じる」をクリックします。
正常にインストールが完了すると「Raspberry Pi Pico」がUSBメモリのように認識されて、下画像のような「CIRCUITPY」フォルダが開いてきます。
このフォルダを開くことで「Raspberry Pi Pico」内のデータを操作することができます。
フォルダ内の「lib」フォルダはライブラリファイルを保存しておくフォルダです。
「code.py」が実行される「CircuitPython」のプログラムファイルです。
「CircuitPython」の開発環境の準備が整ったら下画像のように右下部をクリックすると[CircuitPython(ジェネリック)]が選択できるためクリックして選択します。(COM番号はパソコンごとに異なります。)
下画像のように右下に「CircuitPython(ジェネリック)」と表示されていれば開発環境の準備は完了です。
5.サンプルプログラム(Lチカ)で動作確認
開発環境が整ったらサンプルプログラムで動作確認を行います。
サンプルプログラムとして、ラズパイ本体のLEDを点滅させる「Lチカ」プログラムを準備しました。
「Thonny」開発画面に以下のサンプルプログラムをコピペで貼り付けてください。
※プログラムのコピーは下の黒塗り部の右上アイコンクリックでもできます。
import digitalio
from board import *
import time
led = digitalio.DigitalInOut(LED)
led.direction = digitalio.Direction.OUTPUT # LED端子をledとして出力に設定
while True: # ずっと繰り返し
led.value = True # LEDを点灯
time.sleep(0.5) # 0.5秒待つ
led.value = False # LEDを消灯
time.sleep(0.5) # 0.5秒待つ
プログラムを貼り付けた画面は下画像のようになります。
プログラムを貼り付けたら、下画像の「保存」ボタンをクリックします。
下画像のようなウインドウが表示されます。
今回はラズパイPico本体にプログラムを保存したいため「 CircuitPythonデバイス」の方をクリックします。
下画像のようなウインドウが表示されるので「code.py」を選択して「OK」ボタンをクリックしてください。
「上書く?」とフレンドリーにw聞いてくるので「はい」をクリックしましょう♪
ファイルの保存が終わったら、下画像のように「実行」ボタンをクリックします。
下画像のようにラズパイ基板上のLEDが0.5秒ごとに点滅するのが確認できると思います。
LED点灯
LED消灯
プログラムについて、LEDを点灯させるプログラムについて簡単に紹介します。
Trueが点灯で、Falseが消灯です。
time.sleep(0.5) # 0.5秒待つ
カッコ内の数値で待機時間を設定できるため、この数値を変更するとLEDの点滅間隔を設定できます。
「CircuitPython」で使用できるコマンドについての詳細は以下リンクの公式サイトで確認できます。
当サイトでも少しづつ紹介していきたいと思います。
5.プログラムの保存方法
・ラズパイPico単独で動作させるための保存方法
ラズパイPicoに電源を入れた時に単独で動作させたいプログラムは、データを保存する時に選択する保存先を下画像のように「CircuitPythonデバイス」を選択して、ファイルを「code.py」に保存します。
・バックアップデータの保存方法
プログラムファイルのバックアップ等の保存はラズパイPico本体内にも保存できますが、本体に異常があった時等で初期化した時に消えてしまうため、パソコン側に保存しておくことをおすすめします。
パソコンへの保存は以下のように行います。
まず、プログラムが実行中であれば「停止」ボタンを押してプログラムの実行を停止します。
次に下画像のように[ファイル]→[名前を付けて保存]をクリックします。
下画像のウインドウが表示されたら「このコンピュータ」を選択します。
パソコン内で自分が保存したい保存先を選択して、わかりやすい名前(ここではblink.pyとしています)を付けて「保存」をクリックします。
保存が完了すると、下画像のようにタブの部分が保存したファイル名に変わります。
下画像のようにLチカのサンプルプログラムの点滅時間を0.5秒から1.0秒に変更して「実行」ボタンを押すとラズパイPicoの動作が変更されて実行されます。
この段階ではパソコン内に保存したプログラムが実行されている状態です。
パソコン内に保存して実行していたプログラムをラズパイ単体で動作するようにしたい時には、本体の「code.py」を開いて、コピペで置き換えて保存しなおします。
まずは「停止」ボタンを押して実行を停止します。
次に、下画像のように「ファイルを開く」ボタンを押します。
下画像のウインドウが表示されたら「CircuitPyhtonデバイス」を選択します。
ラズパイPico本体内のデータが表示されるので「code.py」を選択して「OK」ボタンを押します。
すると下画像のようにパソコン内に保存した「blink.py」とラズパイPico本体内に保存されている「code.py」がタブで切り替えて表示できるようになります。
この状態で「blink.py」の内容を「code.py」にコピペして置き換えることでラズパイPico本体のプログラムを置き換えることができます。
7.ライブラリの追加方法
より複雑なプログラムを簡単に作成するために必要なライブラリを使用する方法を紹介します。
ライブラリファイルはラズパイPico本体内の「lib」フォルダに保存することで使用可能なため、必要なファイルを準備して「lib」フォルダに追加していきます。
例として、液晶表示器(OLED)として一般的なAdafruit社製のSSD1306の動作に必要なライブラリを追加する方法で紹介します。
・ライブラリのダウンロードと追加方法
まずは、ライブラリファイルをダウンロードします。
以下のリンクからAdafruit社のライブラリダウンロードページを開いてください。
英語ですが下画像のようなサイトが表示されます。
下へスクロールすると下画像のようなダウンロードボタンがあるのでバージョンを確認してクリックしてください。
バージョンは「Thonny」を起動した時に画面下の「シェル」部で確認できます。
下画像では「CircuitPython 7.3.3」と表示されているのでバージョンは「7」です。
ダウンロードボタンをクリックするとダウンロードが始まるのでしばらく待ちます。
ダウンロードが完了したら上画像のようにファイルを開きます。(画面はEdgeの場合の表示です。)
ダウンロードしたファイルは「ダウンロード」フォルダにあるため、そこから開いても大丈夫です。
ファイルを開くと圧縮ファイルが展開されるのでしばらく待ちます。
ファイルの展開が終わると「ダウンロード」フォルダに下画像のようなフォルダができています。
フォルダを開くと下画像のようなデータが表示されます。
この中で「lib」フォルダの中にライブラリファイルが入っています。
この「lib」フォルダの中のライブラリファイルを、ラズパイ本体の「lib」フォルダにコピーすることで使用できるようになります。
コピーする時は下画像のようにダウンロードした「ライブラリフォルダ」と「ラズパイ内部フォルダ」を並べておくと作業がしやすいです。
次から実際に液晶表示器SSD1306を使用することを例に、ライブラリの追加方法を紹介します。
・動作確認の準備(液晶表示器SSD1306の配線方法)
まずはラズパイ本体と液晶表示器SSD1306の配線方法について紹介します。
「Raspberry Pi Pico」の端子配列は以下のようになります。(公式サイトより抜粋)
配線方法はブレッドボードを使用して下画像のように行いました。
「Raspberry Pi Pico」本体の1番端子とブレッドボードの1番ピンを合わせておくと端子番号の確認がしやすいです。
「SSD1306」と「Raspberry Pi Pico」は以下表のように接続します。
SSD1306 | Raspberry Pi Pico |
---|---|
VCC | 3V3(OUT) |
GND | GND |
SDA | GP16 |
SCL | GP17 |
今回使用したブレッドボードはサンハヤト製の6連結ピンのものです。
安価なものはありますが 5連結ピンのものが多く、ピンが少ないため今回のような使い方はできません。少し割高ですが6連結ピンの方が自由度があっておすすめです。
液晶表示器SSD1306は今回は画面サイズ「128×64」のものを使用しました。
個人的には表示色は白色が一番見やすくて綺麗と思います。
「Raspberry Pi Pico」は単体で買うと端子がついていません。
ピンヘッダーを別で買ってはんだ付けする必要がありますが、ピンヘッダーは細ピンヘッダーが差しやすくて使いやすいです。
ハンダ付が不安な方はハンダ付け済みのものを購入しましょう。
・液晶表示器SSD1306のサンプルプログラム(コピペ)で動作確認
液晶表示器SSD1306で画面を表示するサンプルプログラムを以下に準備しました。
「Thonny」に「コピペ」して実行してみてください。
※下コード(黒枠)内の右上角にある小さなアイコンのクリックでコピーできます。
import board
import busio
import digitalio
import adafruit_ssd1306
# I2C 通信設定
i2c = busio.I2C(board.GP17, board.GP16) # (SCL端子, SDA端子)
# 液晶画面設定
display = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C) # 画面サイズ幅, 高さ, 通信仕様, デバイスアドレス
# 画面表示
display.fill(0) # 画面表示初期化
# 文字表示("表示内容", x座標, y座標, 色, フォント, サイズ[倍率])
display.text("OLED TEST SSD1306", 13, 0, True, font_name="font5x8.bin", size=1)
display.text("Hello!!", 25, 32, True, font_name="font5x8.bin", size=2)
# 線の描画(始点x, 始点y, 終点x, 終点, 色)
display.line(0, 9, 128, 9, True)
# 四角の描画(x座標, y座標, 幅, 高さ, 色)
display.rect(5, 20, 118, 40, True)
display.show() # 画面表示実行
「Thonny」の画面にサンプルプログラムを貼り付けたものは下画像のようになります。
矢印部の実行ボタンを押して実行してみると、下の「シェル」部にエラーが表示されます。
「ImportError」が発生し「adafruit_ssd1306」ライブラリが存在しないことを知らせていますので、必要なライブラリファイルをラズパイ本来の「lib」フォルダにコピーしていきます。
まずはそれぞれの「lib」フォルダをクリックして開きます。
左のライブラリフォルダには300個以上のデータが入っています。
この中から目的の「adafruit_ssd1306」ファイルを探しましょう。(拡張子は.mpyです。)
「adafruit_ssd1306.mpy」ファイルを見つけたらドラッグ&ドロップでラズパイ内部フォルダへコピーします。
これでライブラリファイルの追加は完了です。
再度「Thonny」で実行ボタンを押して実行してみましょう。
また同じ「ImportError」が発生します。今度は「adafruit_framebuf」が無いことを知らせているため、同様にライブラリフォルダから探してラズパイ内部フォルダへコピーします。
ライブラリファイルが追加されたことを確認します。
再度「Thonny」で実行ボタンを押して実行してみましょう。
今度は「OSError」が発生します。これは文字のフォントファイル「font5x8.bin」が無いことを知らせています。
「font5x8.bin」は別の場所にあるため下画像のように「ライブラリフォルダ」側の「上へ」ボタンを押します。
ライブラリフォルダの「examples」をクリックします。
「examples」フォルダには1000個以上のデータが入っているのでこの中から目的の「font5x8.bin」ファイルを探しましょう。
「font5x8.bin」ファイルが見つかったらラズパイ側へコピーしますが、このファイルは「lib」フォルダではなくラズパイのプログラムファイル「code.py」が保存されている場所に置く必要があります。
このため、下画像のように「ラズパイ内部フォルダ」側の「上へ」ボタンを押します。
右の「ラズパイ内部フォルダ」側に「code.py」があるのが確認できたら下画像のようにドラッグ&ドロップで「font5x8.bin」をコピーします。
これで文字を表示するためのフォントファイルも準備できました。
再度「Thonny」で実行ボタンを押して実行してみましょう。
今度はエラーは発生せず、下画像のようなサンプル画面が表示されたと思います。
「CircuitPython」での液晶表示器SSD1306の使い方については、以下のリンクで詳しく紹介しています。
8.ラズパイPico本体の初期化方法
いろいろな開発環境を試したりライブラリをインストールしたりしていると、思いどりに動かなかったり、動作がおかしくなったりして初期状態に戻したいと思うこともあると思います。
そんな時のためにラズパイPico本体を初期化する方法については以下のリンク先で紹介しています。
9.まとめ
「Raspberry Pi Pico」で開発環境「Thonny」を使用した「CircuitPython」の開発環境について詳しく紹介しました。
開発環境の「Thonny」はエディタの機能が物足りないですが、気軽に導入できてお試しにはちょうど良いと思います。
「CircuitPython」の開発環境では、マイコンボードをパソコンと接続した時にUSBメモリのように認識され、マイコンボード内のデータを操作できます。
マイコンボード内のデータをフォルダとして開いて操作できるため、メモ帳や他のエディタで作成したプログラムを直接このフォルダ内に「code.py」として置くことで実行できたり、ライブラリや参照データを保存したりすることができます。
「CircuitPython」は「MicroPython」から派生した言語ということもあり、細かい設定ができそうな印象です。「Adafruit社」が開発を支援しているということもあり、同社の電子部品を使うために必要なサンプルプログラムがたくさん公開されていて色々遊べそうです♪
お試しするなら「MicroPython」で、がっつり遊ぶなら「Circuit Python」といったところでしょうか。
両方の開発環境が整ったところで、これから色々紹介していきたいと思います。
基本的なプログラムや「Raspberry Pi Pico W」で「CircuitPython」を使用したWi-Fi通信、遠隔操作、データ表示の方法は以下のリンクで詳しく紹介しています。
「Thonny」を使用した「MicroPython」の開発環境の準備は以下のリンクで詳しく紹介しています。
コメント
ロジカラさん
python初心者に的確なツール紹介をして頂き有難うございます。
Thonny+micropythonで勉強を始めたのですが、本題(プログラム記述)に入る前に、開発環境等の煩わしさに頭が混乱しまい、やる気をそがれてしまいました。
Thonny+Circuitpythonで本ページの手順に従って勉強し始めましたが、明らかにストレスを感じないで進めることが出来ました。
Circuitpythonの造りとロジカラさんのページ構成のお蔭でラズパイpicoとpython習得を投げ出さずに済みそうです。
有難う御座いました。
土田さん初めまして、読んでいただきありがとうございます。
自分が記事を書く時には使えるようになってから書くので、できるだけ初心に戻ったつもりで書くようにしてますが、長くなるばかりで伝わっているのか正直不安でした(汗)
一人でも伝わっている方がいたのであれば嬉しい限り♪コメント感謝です!
私もまだまだ勉強中、お互い頑張りましょう^^
お邪魔致します
Adafruit CircuitPython 8.2.6 on 2023-09-12; Seeeduino XIAO RP2040 with rp2040
とSSD1306の組みの
https://logikara.blog/pico_thonny_micropy/#mokuji_7-3i2c
の「液晶表示器SSD1306のサンプルプログラム(コピペ)で動作確認」を
またまた、コピペさせて戴きました。
でもこのscriptだと、同じ「2040」と言っても
動きませんでした。
枕の
import board
import busio
の箇所を
from board import *
from busio import I2C に
i2c = busio.I2C(board.GP17, board.GP16) を
i2c = I2C(SCL,SDA)に
したら、
同じscriptで描画しました!!!
しかし、官製の郵便葉書の料額印面(切手部分)
位の大きさながら、LEDが眩しく賑やかな
Xiao RP 2040 ですが
Wifiに繋がないなら、これも面白いですね!!
小さなブレッド・ボードでも半分余白がありますよ。
ココに(今に)来る前に、(5年位前か)アルドウイーノを少し
いじりましたが・・・どうも、私には理解しずらく、熱も冷め
その後はずっと、ラズパイに触って居ます。
一年に一回くらいのインターバルで
無性に、ハンダ鏝を握りたくなるんですよね :)
糸ハンダのリール(7・800g?)一巻をハンダ付けで
消費したいのですが・・・
ピンヘッダやpinソケットのハンダでは
いくらも減らせません。 :)
ユニバーサル基板にソケットを付け
Picoは、抜き挿し出来る様にして、TFT液晶も
抜き挿し出来る様にしました。
ブレッドボード上のジャンパー線は安定しません。
スクリプトの中を「切ったり貼ったり」
コピペしたりしてして、オリジナルの動作を
失わず、カツ私のカスタマイズを加えるべく
『どんな記述でこうなるのか』をscriptを読みながら
「切ったり貼ったり」してます。:)
始めは、とにかくコピーです。
でも、今は気圧計(EL液晶表示)と
Webラジオ(ラズパイ同梱のVLCから出力しDACを
通し綺麗な音で再生+1.8インチ液晶表示 で)は
実用品になっていて、毎日利用しています。
お邪魔しました。
こんばんは^^
XIAO RP2040も持って見えるのですね、しかし動かないのはなぜでしょう?
私は持ってないので確認できないですが、前から気になってたデバイスで、あの小ささは魅力ですし、ちょうど新しい部品を色々とポチってたとこなのでついでにポチりました♪
そろそろ次のネタを模索中だったので面白そうなら記事にしますね。
しかし、ラズパイ系は人気ですね〜個人的にはM5Stack系のC言語が好きなんですけど・・・やっぱりpythonだからでしょうか?
とんかつさんは日々挑戦して成長してるようで、私も負けてられませんね。
今まで好き放題書いてきましたが、ほぼ書きたいことは書いたので、次は何を書こうかな〜と停滞中^^;
とりあえず手持ちの部品の使い方紹介でもしときます。
お互い楽しみましょう♪
お邪魔します
ネット検索中に[ Pico DAC ]の文字を見つけました。
秋月に部品のオーダーがあったので、(Ver.1の)商品を、
ついでに、購入して見ました。
商品は、基板とパーツセットで合計1430円でした。
(他に勿論Picoが必要ですが、基本的に他に必要なパーツは
無しです。Picoはこのセットには含まれていません)
既に、Ver.2が発表されていました。
慌てて、発注したので Ver.2 が有ることは知りませんでした。
ともかく、今日配達になったので
早速、ハンダ付けを楽しみました :)
ゆっくりと、checkしながら6時間位楽しみました。
音も、一発で出ました。
ハンダ付けは、細かすぎることも無く良く出来たキットです。
Picoを載せ、Bootボタンを押しながら、PCと接続。
予めダウンロードして措いた[ uf2ファイル ]を
ドラッグ&ドロップし
後は、そのまま、PCから何か、
(CDでも、ラジコでも、等汁等汁でもmp3ファイルでも、お好きなモノを)再生すれば
基板に挿した、イヤホンorヘッドフォンから、綺麗な音が
再生されます。
大きなヘッドフォンも余裕でドライブします :)
オーディオの世界は、「沼に入ると」上がありません。
でも、このPic-DACで、充分です。
私もいくつか廉いDACを持っていますが・・・
ハンダ付けを楽しんで、¥1430で、この音も楽しめれば
充分です :)
美味しい外食、一食分で、充分楽しめ、今後も
『良い音』が。楽しめるので、言う事ありません :)
基板の裏は、剥きだしなので、適当なケースに
入れ、長く利用で出来そうです。
Pic-DAC 特設ページ
https://interface.cqpub.co.jp/pico_dac/
ココに、利用できる[ uf2ファイル ]が有ります
CQ出版社・・懐かしい。。昔、CQHam Radio を随分買いました。
Pico で、音も楽しめるのですね!
失礼しました。
こんばんわ^^
DACですか〜私は動くものが好きなのでDACはチャレンジしたことがありません(汗)
Interfaceはたまに買ってるので、このDAC基板は見かけた覚えはありますがスルーしてました・・・
電子工作も楽しみ方は人それぞれですね♪
お互い楽しみましょう。