初めて Raspberry Pi Pico に触れてみる

# 初めに
友人から [Raspberry Pi Pico](https://www.raspberrypi.org/products/raspberry-pi-pico/) をいただいたので、遊んでみることにしました。

以降本記事では「Raspberry Pi Pico」を「Pico」と表記することにします。

## 本記事で行うこと
大きく分けて次の3つです。

- Picoで遊ぶための準備
- LEDを点灯させる
- 室温を表示する

LEDと温度センサはPicoに標準で搭載されています。

## 必要なもの

- Pico本体
- Windows PC（Linux, Macでも大丈夫です）
- USBケーブル
- インターネット環境（Picoで遊ぶための準備で必要になります）

# ここから本編

## Picoで遊ぶための準備
この項目では次のことを行います。

1. PicoとPCの接続
2. ファームウェア（MicroPython）の書き込み
3. Thonnyのインストール
4. 動作確認

### 1. PicoとPCの接続
Picoの「BOOTSEL」という**ボタンを押しながら**、USBケーブルでPCと接続します。
このときエクスプローラが開けば正しく接続できています。

2回目以降の接続では押さなくて大丈夫です。

### 2. ファームウェアの書き込み
開いたエクスプローラに「[INDEX.HTM](https://www.raspberrypi.org/documentation/rp2040/getting-started/)」があるので開きましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/69d08d84-7109-3fe4-5f76-1cceabcddb6d.png)

ページを少しスクロールすると「Getting started MicroPython」があるのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/91da8eb6-d66b-6e06-0686-b64cd3293d06.png)

「Drag and drop MicroPython」に「[Download UF2 file](https://www.raspberrypi.org/documentation/rp2040/getting-started/static/f70cc2e37832cde5a107f6f2af06b4bc/rp2-pico-20210205-unstable-v1.14-8-g1f800cac3.uf2)」があるのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/e9be12ac-aa31-2894-a145-ef701aa4fe4b.png)

ダウンロードしたファイルをコピーして先ほどのエクスプローラに貼り付けてください。

完了すると自動的にエクスプローラが閉じます。
これで書き込みは完了です。

### 3. Thonnyのインストール
[こちらのサイト](https://thonny.org/)の右上のほうから、使用しているPCに適したインストーラをダウンロードします。
ダウンロードが完了したらインストーラを実行してThonnyIDEをインストールしましょう。
ThonnyIDEを起動すると次のような画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/fc0eada9-13f2-ce7d-37a4-47fc9b73b63b.png)

### 4. 動作確認

shellに次のプログラムを打ち込んで動作を確認しておきましょう。

```python:
print('Hello')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/0d11d8e2-22fa-aa7e-9f97-5e2e8ebb8c5d.png)

先ほど実行したのはPython環境ですので、MicroPython環境に切り替えます。

Thonnyの右下にある「Python 3.Y.Z」（私の環境では Python3.7.9ですね）をクリックして、「MicroPython(Raspberry Pi Pico)」に切り替えましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/9f901b5c-53d1-c244-e127-da58309613fd.png)
Thonnyの右下が「MicroPython(Raspberry Pi Pico)」に変化していれば大丈夫です。
shellに次のプログラムを打ち込んで動作を確認しておきましょう。

```python:
print('Hello')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/00c8ca63-dbc0-91dd-ed13-6b4486e2dbb2.png)

準備は以上になります。

## LEDを点灯させる

### 点灯+消灯
まずはshellを通してLEDを点灯します。

```python:
>>> from machine import Pin
>>> led = Pin(25, Pin.OUT)
>>> led.value(1)
```

ここまで打ち込むとLEDが点灯します。
次にLEDを消灯します。

```python:
>>> led.value(0)
```

ちなみに現段階でのshellはこんな感じですね。
（本記事通りに進めているのであれば）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/7fb58a9d-9ad8-f810-31db-f762fb7ef129.png)

### 点滅
次に、LEDを点滅させてみましょう。
shellで行うのは面倒くさいので、エディタに書き込みます。

```python:
from machine import Pin, Timer

led = Pin(25, Pin.OUT)
tim = Timer()
def tick(timer):
    global led
    led.toggle()

tim.init(freq=2.5, mode=Timer.PERIODIC, callback=tick)
```
こんな感じですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/19ca8814-0913-9d82-e32b-aab515abb9ff.png)

「Save」で今書いたプログラムを保存しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/9ab223c9-0575-23e2-d7cd-2ee06ec4eb08.png)
「This computer」でPCに、「Raspberry Pi Pico」でPicoに保存します。
今回はPicoに「blink.py」で保存しましょう。

保存ができたら「実行」で動作を確認しましょう。LEDが点滅します。
動作を停止させるときは「Stop」です。

frepは周波数を表し、値を変えることによって点滅する速度を変更できます。
試しに frep=5.0 にして保存、実行してみましょう。点滅が速くなります。

## 室温を表示する
「New」から新しいファイルを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/c46da0fe-13f4-a8a3-0f9a-0fe6a0624060.png)
次のプログラムをエディタに書き込んで「temperature.py」で保存します。

```python:
import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
    reading = sensor_temp.read_u16() * conversion_factor
    temperature = 27 - (reading - 0.706)/0.001721
    print(temperature)
    utime.sleep(2)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/f263b9e6-fb00-baed-bbe9-befde416c837.png)
実行すると2秒おきに室温が表示されます。
あくまでPico周辺の温度なので、うちわであおいだりすると簡単に温度が変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690399/f703c646-0525-b745-e85f-65f1d36c54e9.png)

## main.pyファイル
Picoに「main.py」の名称のファイルがあると、Picoへの電源供給時にmain.pyが自動的に実行されます。

試してみたい方は次の手順を行ってみてください。

1. 新規ファイルにblink.pyの内容をコピーする
2. 新規ファイルをmain.pyの名前でPicoに保存する
3. USBケーブルからPicoを切り離し、再度接続する（**BOOTSELは押さない**）

これを行うとThonnyから実行をしていないのにLEDが点滅をし始めます。
停止するには、電源を切り離すか、Thonnyからstopをしてください。

# 最後に
今回のプログラムは公式が提供しているものですので、どなたでも閲覧できます。（[こちらです](https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf)）
3.1及び3.3あたりに記載されてますので参考にどうぞ。

Picoは500円程度で始められるので入門者には良心的ですね。
自室に時計がないので、Picoで卓上時計作ってみたら楽しそうですね。
友人に頼んでパーツ探してもらいます。