Raspberry Pi Picoを久々に動かす

1/16/2023

Pico Raspberry Pi

t f B! P L

Google-code-prettifyを導入してソースコードをきれいに表示できるようになった。せっかくなのでソースコードを掲載できるような内容ということで、数年ぶりにRaspberry Pi Picoを使ってオンボードのLED点滅と温度計数値取得を試してみた。


  • Raspberry Pi Pico
    • https://www.raspberrypi.com/products/raspberry-pi-pico/
    • Raspberry Pi財団が開発したマイコンボード。3D Printer / OctoPiで使っているRaspberry Pi 3Bとは似て非なるもの。USBからしか通信ができない(Wifi付きなPico Wが発売されている)が、ADコンバータが内蔵されているなどI/Oは充実。

環境準備

  • UF2ファイル
    • PicoでMicroPythonを動作させるためのファームウェア
    1. Raspberry Pi公式サイトのMicroPythonのページから、UF2ファイルをダウンロード
    2. PicoをBOOTSELモードで起動(Windows上ではUSBメモリとして認識される)
      • ボード上の”BOOTSEL”ボタンを押しながらUSBケーブルをPCに挿す

    3. エクスプローラからダウンロードしたUF2ファイルをPicoへドロップ
    • UF2ファイルを入れた瞬間にPicoは勝手に再起動して、MicroPython使用の準備完了となる。
BOOTSELを押しながら電源(USB)ONでPCにメモリとして接続

Picoの中身は謎のファイル2つだけ

  
  • Thonnyインストール
    • https://thonny.org
    • Pythonの統合開発環境。PicoをUSBでWindows PCとつないだ状態で、Thonnyのソフトウェアからそのままコードを走らせることが可能。Picoのチュートリアルにはたいてい登場する。

    • ThonnyのOption > Interpreterの設定から、PicoとUSBデバイスを選ぶ
      • Interpreter: MicroPython (Raspberry Pi Pico)
      • Port: USB シリアルデバイス

プログラムを走らせる(LED点滅)

  • Picoはボード上にLEDがあるため、外に回路を何も繋がなくてもLチカまでは試すことができる。
  • LEDはGPIO25につながっているので、GPIO25の出力をON/OFFすれば点滅する
オンボードのLEDはBOOTSELボタンの隣
  • ひとまず参考サイトにあったタイマーを使ってON/OFFさせるコードを実行。
    • Thonnyを使う場合、画面上の緑色の(Run current script)ボタンから直接実行可能。
    • Pico単体で実行させる場合は、コードをmain.pyという名前でPicoに保存して再起動すると実行される
from machine import Pin
import utime
led = Pin(25, Pin.OUT)
while True:
    led.value(1)
    utime.sleep(1)
    led.value(0)
    utime.sleep(0.5)



プログラムを走らせる(LEDーPWMで明るさ調整)

  • GPIO25の出力をON/OFFするだけでなく、出力の値をPWM(周波数100Hz)を用いて調整。
  • random(0~1.0)を使って乱数を発生させて、明るさをsleep時間毎に変動させる。
from machine import Pin, PWM
import utime, random
pwm = PWM(Pin(25))
pwm.freq(100)
while True:
    x = random.random()
    pwm.duty_u16(int(65535*x))
    utime.sleep(0.1)
    print(x)

プログラムを走らせる(オンボード温度計の数値取得)

  • Picoには最初からついている温度計の値を読み取る
    • 温度計はADC4番
    • PicoのADCレンジは3.3V = 65535
    • 温度計は、27℃ = 0.706V、変化率は-1.721mV/℃
from machine import Pin
import utime
sensor_temp = machine.ADC(4) # 内蔵温度センサーはADC4
conversion_factor = 3.3 / (65535) # センサの変換係数
while True:
    reading = sensor_temp.read_u16() * conversion_factor # 内蔵温度センサーの読取り
temperature = 27 - (reading - 0.706)/0.001721 # 読取り値を温度に変換 print('Pico', temperature) utime.sleep(1)

  • 実行すると、Thonny上で読み取った温度をが表示される。

短時間である程度使い方は思い出すことが出来たので、今後は以前Raspberry Piにつないで遊んでいたLED MatrixやSG90とかを繋いで試していきたい。

今日はとりあえず光らせることと温度を測ることは出来た。
久しぶりに見るとはんだ付けの仕上がりが安定してない


参考にしたサイト


このブログを検索

ラベル

Outdoor (21) 3D Printer (12) Raspberry Pi (10) Learning (9) Movie (7) Pico (6) FreeCAD (5) Game (5) Blog (4) MSFS (4) Python (4) Gadget (1) Unity (1)

ブログ アーカイブ

About

思い付きで始めた様々なコトをやった感想やメモ、Web上で見つけた後々役立ちそうなコトなどをまとめてます。 万人の役に立つコンテンツではなく自分用メモ的な内容ですが、何かの役に立てば幸いです

人気の投稿

QooQ