[備忘録]PlatformIOでraspberry pi picoのセットアップ

## はじめに
ubuntuではすんなり設定できたのですが、windows11でraspberry pi picoをPlatformIOで開発しようとした際の環境構築でつまずいたため、備忘録の意味を込めてまとめました。
この記事が同じようなエラーでつまずいた人の参考になれば幸いです。
また、初めてのQiita投稿なので温かい目で見ていただけると嬉しいです。
### 使用環境
- windows 11

## PlatFormIOのインストール
1. visual studio codeの左側のバーの拡張機能で「PlatformIO」で検索
1. PlatformIO IDEをダウンロード
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/9af0e40f-19af-219b-7b99-ae75e847103f.png)

## プロジェクトの作成
1. 左側のバーのPlatfromIOをクリック（アリ？のロゴ）
1. openをクリック（下図参照）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/9149aaa0-507d-9e9c-ccf3-c45f18307604.png) 
1. Quick Accessの「New Project」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/6f843da2-3347-5820-ce59-7169c3aa6c4c.png)

1. 作成するプロジェクト名、ボード、プロジェクトを保存する場所の選択
今回はプロジェクト名を「pico_motor_driver」、ボードを「Raspberry Pi Pico」、保存場所をデフォルトで選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/78e70f5f-9525-48dd-8076-e7214254f368.png)

1. Finishをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/1b76e002-2853-f13d-8c54-989b53d708c6.png)

1. しばらく待って、下の図のような画面が出てきたらプロジェクトの作成が完了です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/d4b16314-629e-6350-af90-b9c5dee41ea2.png)

## raspberry pi picoへの書き込み
試しに「Hello World」とターミナルに出力するプログラムを書き込んでみます。
```cpp
#include <Arduino.h>

void setup() {
}

void loop() {
  Serial.println("Hello World");
  sleep_ms(100);
}
```
コードのビルドは下のチェックマーク、書き込みは下の右矢印マークで行えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/2295221a-8a3d-2de5-63dc-fbdc15a4e868.png)

ターミナルの出力は以下になります
（ターミナル出力は、下のプラグマーク？をクリック）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/13c001a6-5e94-ab6d-3229-dc712bc087f0.png)


### raspberry pi picoが認識せずに書き込めない時の対処法
私の環境では、初めてraspberry pi picoに書き込む際、`looking for port`が続いて書き込むことができなかったです。どうやらraspberry pi picoのドライバーが入っていないことが原因のようです。
この問題は[こちら](https://toonrobotics.com/win11_platio_2022_10_20/)を参考にすることで解決することができました。

## PlatformIOでマルチコアの使用
現在の設定でもコードを動かすことは可能ですが、マルチコアのプログラミングに対応していないみたいです。([参考](https://qiita.com/shirokuma89dev/items/796d4f5f57c2422dfd87))
試しに以下のコードを書きこんでみます。
```cpp
#include <Arduino.h>

void setup() {
}



void loop() {
  Serial.println("core0");
  sleep_ms(1000);
}

void setup1(){
}

void loop1(){
  Serial.println("core1");
  sleep_ms(500);
}
```
ターミナルへの出力結果は以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/5d7aa5a2-ef7b-b2de-e029-974d3a639667.png)
この結果からcore0のプログラムのみ動いており、core1のプログラムが動いていないことが分かります

### platformio.iniを書き換
現在のplatformio.iniは以下のようになります
```platformio.ini
[env:pico]
platform = raspberrypi
board = pico
framework = arduino
```
これを以下に書き換えます
```platformio.ini
[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
```
初めてbuildするときは多少時間がかかります。
platformio.iniを書き換えて、先程のコードを書き込むと出力は以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3860884/8aaf0334-6f27-2f7a-6391-6d9eb42ce3aa.png)
この結果からマルチコアができていることが分かります。

### セットアップがエラーで止まった場合
私の環境ではplatform.iniの設定を変えて、インストール等が始まった際に以下のエラーが出ました。
```
error: unable to create file Application/8_uarts_server/RT-Thread/uart_server_rtt/rt-thread/components/vmm/linux_patch-v3.8/0001-RTT-VMM-implement-dual-system-running-on-realview-pb.patch: Filename too long
error: unable to create file Application/8_uarts_server/RT-Thread/uart_server_rtt/rt-thread/components/vmm/linux_patch-v3.8/0002-arm-gic-correct-the-cpu-map-on-gic_raise_softirq-for.patch: Filename too long
```
これはgitの初期設定で、ファイル名の名前が長いとダメみたいなのでターミナルで以下の設定をします。（windowsの場合は管理者権限でターミナル実行してください）
```
git config --system core.longpaths true
```
私の場合は再度ビルドすることでインストールが完了しました。
####  参考
https://github.com/earlephilhower/arduino-pico/issues/1278、

https://myscreate.com/filename-too-long/


## おわりに
初めての記事投稿ですが誰かの役に立てばうれしいです。
また、マイコン触りたての初心者なのでここが違うなどあれば、教えていただけると幸いです。