🎉
【Raspberry Pi Pico W】GPIOの使い方(micropython×Thonny)
1. はじめに
1.1 この記事について
- Raspberry Pi Pico W(以下、Pico)のGPIOを使ったサンプルプログラムを記載する
- 入門・解説というより備忘録に近い
1.2 対象読者
- Picoを使ったことがある
- Thonnyを使ってPicoにプログラムを書き込み・実行ができる
- プログラム言語(特にmicropython)が多少読める、書ける
1.3 動作環境
- PC
- OS:Windows 11 Home
- プログラミング環境:Thonny(v4.1.4)
- Raspberry Pi Pico W
- ファームウェア:v1.24
2. GPIOとは?
- General Purpose Input/Output の略語
- 端的に言うと「入力(HIGH/LOW)と出力(HIGH/LOW)を好きに操作できるピン」
- 電子回路と組み合わせることで、LEDを光らせたり、スイッチの押下を検知したりできる
3. GPIO(出力)
3.1 外付けのLEDを点灯する
(ボード上ではなく)外付けしたLEDを、プログラムで点灯させる
3.1.1 回路図
部品表
名称 | 個数 |
---|---|
LED | 1 |
抵抗(470Ω以上推奨) | 1 |
LEDの特性について
- LEDには極性があり、アノード側が+側、カソード側をー側として使用する
- つまり、picoの3V3とアノードを、GNDをカソードに接続すればよい
- 逆に繋ぐと最悪壊れたり、LEDが破裂するため厳守すること!!
秋月電子 - 参考資料(極性についての注意)より
ROHMが簡易的にまとめた資料があるため、こちらを足掛かりに調べてみると、学びが捗ります。
ROHM LED特性データの見方
抵抗の推奨値の計算方法
- LEDのTypが2.0V、picoのGPIO出力が3mAとして計算
- 抵抗Rの値は433Ωが良い(Vf=1.8Vなら500Ω、Vf=2.5Vなら266.7Ω)
秋月電子 - LEDの抵抗値計算
秋月電子 - 5mm赤色LED 640nm OSDR5113A datasheet
3.1.2 ソースコード例
3_1_2_GPIO_LED_ON_OFF.py
from machine import Pin
from time import sleep
led = Pin(0, Pin.OUT, value=0) # GP0のピンを出力ピンに定義。初期値=0(LOW)
while True:
led.on() # LEDを点灯
sleep(1) # 1秒待つ
led.off() # LEDを消灯
sleep(1) # 1秒待つ
4. GPIO(入力)
4.1 外付けのスイッチの押下を検知する
(ボード上ではなく)外付けしたスイッチの状態を、プログラムで検知する
4.1.1 回路図
pico内部のプルアップ抵抗についての説明
※Pico内部のプルアップ抵抗は24kΩくらいだそうだ
ラズパイピコ内部プルアップ抵抗調査
プルアップ・プルダウンについて
ここの説明がわかりやすいので紹介しておきます(他力本願)
プルアップ抵抗・プルダウン抵抗とは?電子回路に必須の考え方 | VOLTECHNO.html
4.1.2 ソースコード例
picoのGPIOピンは、定義時にプルアップ抵抗かプルダウン抵抗を選択できます
今回は、プルダウンでの実装
4_1_2_GPIO_SW_PULL_DOWN.py
from machine import Pin
from time import sleep
switch = Pin(1, Pin.IN, Pin.PULL_DOWN) # GP0のピンを入力ピンに定義。PULL_DOWNに設定
led = Pin("LED", Pin.OUT) # ボード上のLEDを点灯
while True:
status = switch.value()
print("status:", status)
if status == 1: # ボタンが押された状態だったら
led.on() # OnBoardのLEDを点灯
else: # それ(押された状態)以外だったら
led.off() # OnBoardのLEDを消灯
sleep(0.1) # 0.1秒待つ
4.2 リードスイッチで磁力を検知する
磁力の有無をプログラムで検知する
4.2.1 回路図
4.2.2 ソースコード例
※PULL_DOWNのコードと同じなので省略
4.3 チルトスイッチで傾きを検知する
一定以上の傾きを検知する
チルトスイッチ/傾斜ボールスイッチ について
ようするに、一定以上の傾きでOFFになるスイッチ
- 通常時(傾きが一定以下)は、導通(スイッチが押された状態)
- 一定以上の傾きがあると、非導通(スイッチが押されていない状態)
物理構造的には、中に動く導体のボールが入っており、それが下に付くと電気を通す状態、離れると電気を通さない状態となる
振動(傾斜)スイッチ(丸型)AT-407 参考資料(端子と動作説明)
4.3.1 回路図
4.3.2 ソースコード例
※PULL_DOWNのコードと同じなので省略
5. まとめ
- PicoのGPIOの回路図+ソースコードの例についてまとめた
- 物理的な要因でON/OFFになるリードスイッチや傾斜ボールスイッチは、センシングの基礎
Discussion