こんにちは、ガマンです。
ものづくり系エンジニアになるための役に立つ情報を配信しています。
今回はRaspberry Pi Picoを使ってLEDを光らせます.
・Raspberry Pi Picoを買ったけど、どうやって動かしたらいいの?
・プログラム書いたことないけど、どうやって書けばいいの?
と思った方がいらっしゃると思います.
・今回はLED、日本語では発光ダイオードという光る電子部品を光らせる
・Pythonの学習用開発環境Thonnyを使う
・MicroPythonという言語でコマンドやプログラムを書く
以上のことができるようになります。
初めてプログラムを書く方、初めてマイコンを動かす方も、
まずは真似していただいて、Raspberry Pi Picoを動かしてみてください。
1 MicroPythonファームウェアをインストールする
2 開発環境Thonnyをインストールする
3 プログラムを書き込む
4 LEDが光るか消えるか見る
■準備
●Raspberry Pi Pico側の設定
まずはRaspberry Pi Pico側の設定をします。
Raspberry Pi PicoでMicroPythonを実行させるための開発環境を作ります。
▲手順①Raspberry Pi Picoをパソコンに接続する
まずはUSBケーブルで、パソコンとRaspberry Pi Picoをつなぎます。
①Raspberry Pi Picoのmicro USBコネクタにUSBケーブルをさす
②パソコンにUSBケーブルのType-Aコネクタをさす
このとき、Raspberry Pi Picoに搭載されている
白い押しボタン式スイッチを押しながらさします。
↑↑↑
超大事です。
このスイッチはBOOTSELボタンと呼ばれ、
押すことによってBOOTSELモードにできます。
パソコン側がRPI-RP2ドライブとして認識してくれて、
ファームウェアの書き込みができるようになります。
▲手順②Raspberry Pi PicoにMicroPythonファームウェアをインストールする
③Raspberry Pi Picoのドライブ、RPI-RP2を開く
④INDEX.HTMというファイルがあるのでこれをダブルクリック
⑤Raspberry Pi PicoのWebサイトがブラウザで表示される
スクロールしていくと、「About Raspberry Pi Pico」という
大きなタグがあるのでクリックする
⑥下にスクロールしていくと、「Utilities」ユーティリティという項目に、
「Download UF2 file→」という緑色のアイコンがあるのでクリックします。
パソコン内のダウンロードフォルダに「picoprobe.uf2」(ピコプローブ)という
データができます。これがMicroPythonファームウェアです。
⑦このデータをRPI-RP2ドライブとして認識されている
Raspberry Pi Picoのフォルダに、ドラッグ&ドロップして書き込みます。
Raspberry Pi Picoのフォルダが自動的に閉じて、
USBデバイスがはずされた状態になります。
これでRaspberry Pi Pico側の設定は終わりです。
●パソコン側の設定
次にパソコン側の設定をします。
⑧Thonnyの公式Webサイトのトップページの右上から、
自分のパソコンのOSに対応したバージョンを選んでクリックします。
ダウンロードがはじまります。私はWindowsバージョンを選びました。
パソコン内のダウンロードフォルダに「thonny-3.3.6」というデータができます。
数字はバージョンが上がると変わると思います。このデータをダブルクリックして、
インストールを進めていきます。
MicroPythonを打ち込んあり、Raspberry Pi Picoにプログラムを書き込む
開発環境Thonnyをパソコンにインストールします。
インストールが終わってThonnyを立ち上げて、言語と初期設定を選択します。
私は日本語がいいので日本語、初期設定はRaspberry Piを選択しました。
これで準備はできました!
■MicroPythonを書いてみよう
それでは、いよいよプログラミングを始めましょう。
まずは手動でLEDを光らせたり消したりしてみます。
▲言語&デバイスの確認
インストールしたThonnyを立ち上げると、この画面が出たと思います。
始めに画面右下のデバイス名が「MicroPython(Raspberry Pi Pico)」になっていることを確認してください。もしなってなかったら、クリックすると選択できるので「MicroPython(Raspberry Pi Pico)」を選択してください。
▲shell(シェル)に1行ずつ
プログラムやコマンドを書く枠が2箇所ありますが、今回は1行ずつ書いたら瞬時に実行できるshellのほうに書きます。
プログラムの意味が分からなくても、
「いまはこれでいい」と思って進めてください。
●プログラム①LEDを光らせる
Raspberry Pi PicoのUSBコネクタの左横にある、
乳白色または黄色の部品、基板に‘LED’と白い文字で書いてある部品がLEDです。
下記がLEDを光らせるプログラムです。
led = Pin(25, Pin.OUT)
led.value(1)
shellの枠は1行ずつしか入力できません。
1行入力してエンターを押すと、それがすぐに実行されます。
を入力してEnterを押します。表面上はLEDに変化はありません。
を入力してEnterを押します。これも表面上はLEDに変化はありません。
を入力してEnterを押すと、LEDが光ります。
▲プログラム②LEDを消す
次に光っているLEDを消すプログラムを書いてみます。
今度は1行だけ書けばOKです。
を入力してEnterを押す、するとLEDが消えます。
▲プログラム③LEDを点滅(通称Lチカ)させる
今度は1行ずつではなく、まとまったプログラムを書いてみましょう。
先ほどと変わって、shellの上の枠に書きます。
from machine import Pin
import utime
led = Pin(25, Pin.OUT)
while True:
led.value(1)
utime.sleep(1)
led.value(0)
utime.sleep(1)
書き終わったら、枠の上にある[実行]アイコン(黄緑色の丸に白い三角のアイコン)があるのでクリックします。
するとLEDが1秒点灯、1秒消灯を繰り返してチカチカします。
チカチカを止めたかったら、[実行]アイコンの右のほうにある[Stop]アイコンをクリックすると止まります。
●プログラミング開発環境って何?
開発環境とは、プログラムを書く、プログラムの修正をする、プログラムをマイコンに書き込むなど、プログラムを扱うたくさんの機能を備えたソフトウェアです。IDEとか統合開発環境とか、いろんな呼ばれ方をされます。
●ファームウェアとは
ファームウェア (firmware) とは、電子機器に組み込まれたコンピュータを制御するためのソフトウェアなどのことです。
●2つの入力枠
プログラムを実行してみておわかりいただいたとおもうのですが、
上の枠が「まとまったプログラムをラズパイに入れて実行できる枠」です。
Shellの枠が「1行ずつリアルタイムでコマンドを打ち込んで実行できる枠」です。
shellの枠はプログラムが停止していないと実行できないので、
上の枠でプログラムを実行させた場合は、
STOPのアイコンを押して停止させてから1行ずつ入力します。
●「プログラム」「コマンド」「ソースコード」の違い
ここで出てくる「プログラム」や「コマンド」といった用語ですが、
コマンドは1回1回リアルタイムに実行する命令、
プログラムは、コマンドをたくさん集めて自動的に動くのがプログラムという意味で使っています。
C言語などは書いたらコンピュータがわかる言語に変換するコンパイルという作業がありますが、
MicroPython言語は,プログラムされたソースコードを1行1行,テキスト・データのまま読み込み,ファームウェアで解釈して実行されます.
●プログラムの解説
先ほどご紹介したプログラムですが、
これからはコピペではなく、0から自分でプログラムを書けるようになりたい方向けに
解説します。参考にしてみてください。
Raspberry Pi Picoの内蔵LEDは、回路図を見るとGPIOピン25に接続されています。
shellから点滅させることができるので、
プログラム①では、
led = Pin(25、Pin.OUT)
led.value(1)
と入力しました。
▲import
importは、ライブラリを読み込むという意味です。
さまざまな定義を読み込むときに必ず必要になるコマンドです。
▲machine
machineは、オンチップハードウェアを制御するためモジュールから読み込むという意味で、MicroPythonでは標準的に使われるようなので覚えておきましょう。
ここでは、GPIOのピンを定義するために使用しています。
▲GPIO
汎用的に信号を入出力できる、使えるピンまたはポートのことです。
出力としてLEDがつながっているので、このように定義します。
▲led
GPIO25にLEDがつながっているので、
で小文字ローマ字のledという名前として定義します。
▲value
ledというピンに1を出力する、0を出力するというようにすると、
これで点灯、
で消灯できます。
value 値(あたい)という意味です。
▲utime
プログラム③のutimeは時間のことです。
で時間を使えるように呼び出して、
utime.sleep(1)
でLEDを点灯させ、その後1秒待つ(寝る)という意味です。
値を変えてLEDの点滅速度を変えてみてください。
▲while True
while True:は、
Whileが「ぐるぐる回せ」、Trueが「常に条件が正しい」という意味なので、
While Trueは「永遠にぐるぐる回せ」ということになります。
値を変えてLEDの点滅速度を変えてみてください。
:(コロン)は「以下をずっと回す」という意味です。
* * *
それでは次回!
またね!
サンプルのプログラムですが改行が抜けているように見えます。
以下の通りではないでしょうか。
(誤)
import utimeled = Pin(25, Pin.OUT)
(正)
import utime
led = Pin(25, Pin.OUT)
おっしゃる通りでした!教えていただき、ありがとうございます!