電子工作というとArduinoが有名ですが、正規品だと少し値段が高い(4,000円くらい)上に対応言語がArduino言語(C言語っぽい言語)と初心者には少しハードルが高いです。
もう少し安価で知識のない人にも優しい言語に対応したマイコンないものかなんて思っていたら、2021年にPython(MicroPython)でコーディング可能なRaspberry Pi Picoが発売されました。(発売当時は500円でしたが今は1,000円前後)
マイコン | 値段 | 対応言語 |
---|---|---|
Arduino UNO | 4,000円程度 | Arduino言語 |
Raspberry Pi Pico | 1,000円程度 | Python C++ |
発売当初は値段のせいもあってかすぐに売り切れていましたが、最近では落ち着いてきて供給も安定しているようです。
この記事では、Raspberry Pi Picoを使用して電子工作に入門するための手順を紹介します。
電子工作というとオタクの趣味と思われるかもしれませんが、やってみると案外面白いものなので一緒に手を動かしながらやってみましょう。
Raspberry Pi Picoの準備
はじめにRaspberry Pi Picoの準備をします。
Raspberry Pi Picoは通常ピンヘッダが付いていないため、自分ではんだ付けをしてピンヘッダを装着するか、ピンヘッダ実装済みのRaspberry Pi Picoを購入する必要があります。
ピンヘッダ実装済みのRaspberry Pi Picoは若干高くなっている(当然ですが)ので、自分ではんだ付けができるという方はピンヘッダなしのRaspberry Pi Picoを購入するのが良いかと思います。
ちなみに、自分でピンヘッダを装着する場合にはピンヘッダも別で購入する必要がありますが、ピンヘッダのピッチ(ピン間の間隔)を間違えると装着できないので注意が必要です。
開発環境のセットアップ
Raspberry Pi Picoでプログラムを動かすために、本体のセットアップとPC側に開発環境のセットアップを行います。
Raspberry Pi PicoにUF2ファイルを配置
Raspberry Pi Picoは購入した状態ではそのままプログラムを動かすことができないため、動作環境(今回はMicroPython)に対応したUF2ファイルを配置する必要があります。
まず、Raspberry Pi PicoのBOOTSELボタンを押したままRaspberry Pi PicoとPCをUSBケーブルで接続します。(接続したらボタンは離して大丈夫です)
正しく接続されている場合、「RPI-RP2」という名前でRaspberry Pi PicoがメディアとしてPCに認識されます。
続いて、以下のリンクから「Download the correct MicroPython UF2 file for your board:」というテキストを探し、その下にある「Raspberry Pi Pico」というリンクを選択してUF2ファイルのダウンロードを行います。
ダウンロードが完了したら、UF2ファイルを先ほど接続した「RPI-RP2」にコピーします。
コピーに成功すると自動でRaspberry Pi Picoがアンマウント(PCから認識されなくなる)されますが、正常な挙動なので心配する必要はありません。
ここまでで本体のセットアップは完了です。
Thonnyのインストール
続いて、Raspberry Pi Pico用のプログラムを作成するエディタで転送まで行うことができる「Thonny」というソフトのインストールを行います。
以下のリンクからお使いのPCのOSに合わせたインストーラをダウンロードして、Thonnyのインストールを行います。
インストールが完了したら開発環境のセットアップは完了です。
Lチカ
プログラミングの世界では初めて書くプログラムを「Hello World」と言ったりしますが、電子工作の世界では「Lチカ」と言います。
「Lチカ」とは「LEDランプをチカチカさせる」ことで、通電の確認やプログラムが動作することの確認を行うために用いられます。
Raspberry Pi Pico上のLEDのLチカ
初めてThonnyを起動すると以下のように画面右下(使用されるインタプリタ)が「Python x.x.x」となっているので、そこを選択して「MicroPython (Raspberry Pi Pico)」に変更します。
変更した後にShellに赤文字でエラーが表示される場合は、Raspberry Pi Picoを接続し直したりツールバー上のSTOPボタンを選択することでエラーが解消されます。
エラーが表示されていないことを確認したら、Thonny上のエディタに以下のプログラムを入力します。
from machine import Pin
import time
led = Pin(25, Pin.OUT)
while True:
led.value(1)
time.sleep(1)
led.value(0)
time.sleep(1)
入力が完了したらRunボタン(緑色の再生マーク)を選択し、初めて保存する場合には保存場所の確認をされるので「Raspberry Pi Pico」→「main.py」として保存します。
プログラムが正常に保存されたら、Raspberry Pi Pico上のLEDランプが1秒ごとについたり消えたりするのが確認できます。
ここまでできたら初めての電子工作「Lチカ」は完了です。
ブレッドボード上のLEDでLチカ
またしてもLチカですが、今度は本体内蔵のLEDではなくブレッドボード上に刺したLEDをRaspberry Pi Picoに繋いでLチカをしてみましょう。
ここまではRaspberry Pi PicoとPCだけしか使っていませんでしたが、Raspberry Pi Picoに何かを接続する場合にはブレッドボードを使用します。
ブレッドボードもLEDも安価に購入することができるので、Raspberry Pi Picoを購入する際に一緒に購入しておくと良いです。(LED購入の際は誤って赤外線LEDを購入しないよう注意してください)
Raspberry Pi PicoとLEDをブレッドボードにセット
Raspberry Pi Picoのピンアサインを確認してみるとGPIO14の横にGNDが配置されていてちょうど良いのでそこにLEDを直接繋いでしまいます。
本来はLEDは抵抗と一緒に使用しなければいけませんが、今回は面倒臭いので直接繋いでしまいます。(白、青以外のLEDを使用する場合にはLEDが故障する可能性があるので注意してください)
LEDの足の長い方(アノード)をGPIO14に、足の短い方(カソード)をGNDに接続するようにブレッドボードに配置します。
プログラムを修正して転送する
先ほどのプログラムではGPIO25(内蔵LED)に対して1秒ごとにON/OFFの切り替えを行なっていましたが、LEDをGPIO14に繋いだので以下のようにプログラム中の「25」を「14」に変更します。
from machine import Pin
import time
led = Pin(14, Pin.OUT)
while True:
led.value(1)
time.sleep(1)
led.value(0)
time.sleep(1)
修正が完了したらSTOPボタンで既に動いているプログラムを停止後、RUNボタンでプログラムを転送します。
プログラムが正常に動作した場合、ブレッドボード上のLEDが1秒ごとについたり消えたりするのが確認できます。
タクトスイッチを使ってLEDのON/OFF切り替え
最後にタクトスイッチを使ってLEDを手動でON/OFF切り替えられるようにします。
何らかのアクションに伴って動作が変わると電子工作やってるぽくて面白いですよね。
Raspberry Pi Picoとタクトスイッチを繋ぐ
一般的なタクトスイッチは足が4本あり、以下のように「押下時に通電」する方向と「常に通電」する方向があります。
タクトスイッチの接続の仕方は色々ありますが、今回は電源(3V3)とGPIO28にタクトスイッチを接続します。
接続する際に使用していない足がブレッドボードに干渉する場合は足を伸ばしてしまって良いです。
スイッチ押下でLEDのON/OFFを切り替える
スイッチを押している間だけLEDをONにしても良いですが、実際に使うもの(例えばデスクライトなど)だとすると使い勝手が悪いので、スイッチを押下したらLEDのON/OFFが切り替わるようにします。
タクトスイッチは押下されていない状態だと不安定な状態となってしまうため、一般的にはプルアップ抵抗/プルダウン抵抗という抵抗を挟むことがありますが、Raspberry Pi PicoではPinインスタンスの初期化時にプルダウン/プルアップを指定することで物理的な抵抗を挟む必要がなくなります。
# プルダウン
pulldown = Pin(28, Pin.IN, Pin.PULL_DOWN)
# プルアップ
pullup = Pin(28, Pin.IN, Pin.PULL_UP)
スイッチが押下される毎に状態を切り替えるには、「ボタンの状態」「LEDの状態」の2つの変数を作成し、ボタンの状態がONからOFFに切り替わったタイミングでLEDの状態を切り替えるようにします。
from machine import Pin
led = Pin(14, Pin.OUT)
tact = Pin(28, Pin.IN, Pin.PULL_DOWN)
btnState = 0
ledState = 0
while True:
if tact.value() == 1:
btnState = 1
else:
if btnState == 1:
ledState = 0 if ledState == 1 else 1
led.value(ledState)
btnState = 0
修正が完了したらSTOPボタンで既に動いているプログラムを停止後、RUNボタンでプログラムを転送します。
転送が完了したら、何度かタクトスイッチを押下することで、タクトスイッチを押して離した瞬間にLEDのON/OFFが切り替わることが確認できます。
終わりに
Raspberry Pi Picoを使用して電子工作に入門するための手順を紹介しました。
少し長くなってしまいましたが、「電子工作ってこんな感じなんだ」ということを感じ取って頂けたら幸いです。
ちなみに今回作成したものは全て本体のmain.pyに保存しているため、パソコンではなくコンセントやモバイルバッテリーから電源を取っても動作します。
今回紹介したものは入門中の入門なので、もっと電子工作したい!という方はPWM制御やアナログ入出力など調べて手をつけてみるともっと楽しくなるかもしれません。
この記事について誤っている点・不明な点などありましたらコメントまでお願いします。
コメント