Raspberry Pi Picoに実際に触れてみた

# 目次
[1.はじめに](#1はじめに)
[2.Raspberry Piとは](#2raspberry-piとは)
[3.Raspberry Pi Picoのセットアップ](#3raspberry-pi-picoのセットアップ)
[4.Lチカプログラムを実行](#4lチカプログラムを実行)
[5.温度センサーを読み取る](#5温度センサーを読み取る)
[6.最後に](#6最後に)
[7.参考文献](#7参考文献)


# 1.はじめに
今回念願だったラズパイを新年の初売りで手に入れることが出来ました！！
実際に触れて遊びたいなと前々から思っていたのですが、ラズパイは半導体不足の影響を受けていて、日本では在庫切れが多発していたり、売っていても値段が高くてちょっと手が出しずらい状況でした。しかし、安くなって売り出されていたので今回買ってみました！！
今回買ったモデルはRaspberry Pi 4 Model B 2GB RAM（メモリが少ないモデルしか売ってなかった…）で、これを使ってサーバーを実際に立ててみよう！！と考えていたんですが、まだマイクロHDMIケーブルが家になくてラズパイのセットアップが出来ない（一応VNC接続などを使えば可能）状況でした。そこでどうしようかなぁと考えていたんですが、とりあえずラズパイを触ってみたいなと思ったので、ラズパイを触る前の予行演習として初売りの時に買っておいたRaspberry Pi Pico（お値段なんと550円！）を使用して少しだけ遊んでみました。これも人気で在庫切れが多発していたので入手出来て良かったです。

![20220113_182959.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/050f82d0-14a0-6e21-af8f-817b33d353e3.jpeg)



# 2.Raspberry Piとは
そもそもラズベリーパイとは、2012年にイギリスのラズベリーパイ財団によって、教育目的で開発されたワンボードコンピュータです。＄30程度の低価格と、便利なライブラリ、そして世界中の人が多くの作例をインターネットで共有した事により、一躍IoT時代の代表的なプラットフォームとなりました。さまざまなモデルが存在しており、自分が使用する目的合わせて買うことができます。現在は世界的な半導体不足で値段が高騰しているため、日本円で3500円から20000円くらいになります。工夫次第でラジオや音楽プレーヤーやサーバーなど、さまざまな用途で使えます。
今回使用したRaspberry Pi Picoはほかのラズパイとは違い、OSが入れられないモデルで、使用方法としてはArduinoが近いと思います。それでも、さまざまなセンサーや機器につなげることで幅広い使い方ができます。開発はPythonやMicroPython、C/C++などの言語で行えます。

# 3.Raspberry Pi Picoのセットアップ
では、セットアップしていきたいと思います。
環境はWindows10です。

**1.ファームウェア書き込み**
![Inked20220112_203836_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/5ec67bfc-6b01-bb2d-bf80-d0393733a0a6.jpeg)

上記の画像の赤で囲まれた部分にある「BOOTSEL」と書かれたボタンがあるので、そのボタンを押しながらマイクロUSBケーブルを接続します。

すると、Windows10では右下のほうにデバイスをセットアップしていますと出ると思います。
完了するとファイルエクスプローラーで開くことが出来ます。
![Inked1-1-1_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/87b0e72a-1515-49b9-295d-1ab26fe86b2c.jpeg)
その中に入っている「INDEX.HTM」をダブルクリックして公式サイトにアクセスします。

![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/0d80d6db-ec24-9b2d-9be0-d283c7687ebc.png)
このサイトを下にスクロールしていきます。

![Inked2-2_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/9c49beb0-be49-d815-0e68-70349498bcec.jpeg)
この画面になったら「Getting started with MicroPython」と書かれているところをクリックします。

![Inked2-3_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/4f669b4c-1de2-7079-1fef-8503d9e59a31.jpeg)
上のような画面になったら、ピンク色の文字の「MicroPython UF2」というところをクリックします。
すると、ファイルダウンロードが始まると思います。

このダウンロードしたファイルをエクスプローラーの左に表示されている「RPI-RP2」直下にドラッグ＆ドロップします。

![1-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/93030498-ba70-2507-ad79-becaa4f718e9.png)
このようにデバイスとドライブに表示されなくなれば成功しています。

次にPicoにプログラムを書き込むための開発環境のインストールを行います。

**2.Thonnyのインストール**
Thonnyとは初心者用のPython IDEです。調べた感じ、Thonny IDEがPicoの開発環境としての参考文献が多いのでトラブルを解決しやすそうです。（vscodeでの参考文献もあったのでそっちでも簡単そうです。）
以下のリンクにアクセスしてダウンロードします。

https://thonny.org

![Inked2-5_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/b88a784b-3535-a904-6326-92125c8b6d68.jpeg)
上のような画面になったら上にある青色の文字の「Windows」をクリックします。(自分のOSに合ったファイルをダウンロードをする)
ダウンロードが出来たら、そのファイルを開きます。

![1-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/a42557b2-a2f9-4cba-0e24-0c7021689577.png)
すると、上のような画面が中央付近に現れるのでどちらかを選び、インストールします。特別な場合を除いて「Install for me only」の方でいいと思います。
あと何回か画面が切り替わりますが、基本的にデフォルトのまま「Next」ボタンで大丈夫だと思います。（Create desktop iconのチェック欄だけはチェックする方がお勧めです。）
インストールが終わったら、デスクトップ上にできたアイコンをクリックして開きます。

![1-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/64a6ca33-6ddd-0b36-bbd9-d18d6af6f9d9.png)
初回起動時には上のような画面が出るので言語だけ選んで次に進みます。

これで開発環境の構築が完了です。

# 4.Lチカプログラムを実行

最初にプログラムを書き込むための設定を行います。
![Inked1-9_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/ca9e85e0-8e31-3e60-d05e-915aa4a2f801.jpeg)
右下にPythonのバージョンが表示されていると思います。
ここをクリックすると、
![1-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/2bbf3b91-c3f6-a570-f02c-c21a793e5ce5.png)
このような画面が出てくると思うので、「MicroPython」を選択します。

次に左上の保存ボタンを押し、名前を付けてファイルを保存します。どこに保存するか聞かれるので、「Raspberry Pi Pico」を選択します。
![1-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/b9b12238-d907-5d81-6a64-e84b36f1edc2.png)


これで完了です。

まずはじめに2秒LEDが点灯し、2秒LEDが消灯するのを繰り返すプログラムを実行してみます。
以下のコードをThonnyに書き込みます。

```py:Ltika.py
import machine
import utime
led = machine.Pin(25, machine.Pin.OUT)

while True:
    led.value(1)
    utime.sleep(2)
    led.value(0)
    utime.sleep(2)
```

![Inked1-11_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/64cf2b92-bf1f-68b5-133d-1b2014decdae.jpeg)
コードが書けたら左上の緑の実行マークを押して実行できます。

# 5.温度センサーを読み取る

まず、新しくファイルを作ります。
Raspberry Pi Picoにデフォルトで搭載されている温度センサーを使って2秒ごとに温度を取得＆表示していきます。
以下のコードをThonnyに書き込みます。

```py:temperature.py
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)
```

軽くコードの説明をしていきます。

3行目のADCというのはアナログ-デジタル変換回路のことで、センサーからアナログ値を読み取ってそれをデジタル値に変換する機能を持ちます。温度センサーはADCの4チャネルに接続されているので、()の中には4が入ります。

4行目はADCで読み取った値を変換する計算式です。ADCは16ビットの値で帰ってきます。なので、ADCの最大電圧3.3Vを16bit(65535)で割って16bitの 1 目盛りのあたりの電圧を計算します。

while文で無限ループを作っています。
read_u16関数で16ビットのADCの値を読み取り、先ほど出した値をかけることで電圧値を出します。
`temperature = 27 - (reading - 0.706)/0.001721`
これはラズパイピコに搭載されている温度センサーが27度を基準にしているため、温度センサの数値を27度から引いて計算しています。

結果を見てみましょう。
![1-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688073/9a2e1615-21cd-ae61-88ce-8dde99081b3e.png)
うまく室温が検出できています。

# 6.最後に
今回、ラズパイのセットアップが出来なくてラズパイピコを予行演習として使ってみたが、ラズパイピコとラズパイを組み合わせてIoT機器を作れたりするかもと感じました。
今後もっといろいろな機能を試したいと思います。

今回初めてのQiita投稿で少し慣れない部分や苦労した部分もありますが、記事の書き方の練習にもなり、いい経験になったと思いました。


# 7.参考文献

https://hellobreak.net/raspberrypi-pico-micropython-0205/

https://hellobreak.net/raspberrypi-pico-temperature-0205/

https://tech-and-investment.com/raspberrypi-pico-setup/

https://tech-and-investment.com/raspberrypi-pico2-temp/