01.picoセットアップ C言語
01.picoセットアップ C言語
550円のRaspberry Pi picoを何か月か前に購入しました。セット内容は以下です。
Raspberry Pi Pico
・550円 SWサイエンス・ピンヘッダ無し 自分で半田付
・USBのCN--(VBUS)--Di--(VSYS)--DDコン--(3V3)
https://www.switch-science.com/catalog/6900/
コネクタ基板
・PIMORONI-PIM555 Pico Decker (Quad Expander)PIMORONI・1980円 SWサイエンス
・Picoと4枚が接続可能
・基板パターンとCNのみ パラ接続
https://www.switch-science.com/catalog/7378/
・写真は、pico接続済。
タッチディスプレイ
・WAVESHARE-19907(微雪電子)・2530円 SWサイエンス
・3.5インチ 480x320 microSDスロット付 リセットSW付
・Vcc=5V SPI通信 内部でVSYSから3V3を作成
https://www.switch-science.com/catalog/7330/
・解説
https://www.waveshare.com/wiki/Pico-ResTouch-LCD-3.5
e-Paperディスプレイ
・WAVESHARE-20053(微雪電子)・2409円 SWサイエンス
・2.66インチ 296x152
・Vcc=3.3V SPI通信 リフレッシュ間隔15s 白地に黒と赤で表示
https://www.switch-science.com/catalog/7324/
・解説
https://www.waveshare.com/wiki/Pico-ePaper-2.66-B
電池駆動基板
・SSCI-074131(SWサイエンス)・1980円 SWサイエンス
・Vin=0.6V~ 単4x1本 out=3.3V0.5A
・ピンヘッダ無し スライドSW付 リセットSW付
・電池を下向きにCNを半田付
https://www.switch-science.com/catalog/7413/
wifiモジュール
・Pico-ESP8266(微雪電子)・1500円 アマゾン
・内蔵の3端子で3.3Vを使用
https://www.amazon.co.jp/gp/product/B09KYF559X/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&psc=1
・解説
https://www.waveshare.com/wiki/Pico-ESP8266
細ピンヘッダ
・C-06641・350円 秋月電子通商
・1列40pin 10本
https://akizukidenshi.com/catalog/g/gC-06641/
ロングピンソケット
・C-05779・80円 秋月電子通商
・1列42pin 1本
https://akizukidenshi.com/catalog/g/gC-05779/
picoピン配置
基板の表側(白スイッチ側)から、USBコネクタを上にして左 | IO | SPI | I2C | UART |
---|---|---|---|---|
1 | GP0 | 0Rx | 0SDA | 0Tx |
2 | GP1 | 0CS | 0SCL | 0Rx |
3 | GND | |||
4 | GP2 | 0SCK | 1SDA | |
5 | GP3 | 0Tx | 1SCL | |
6 | GP4 | 0Rx | 0SDA | 1Tx |
7 | GP5 | 0CS | 0SCL | 1Rx |
8 | GND | |||
9 | GP6 | 0SCK | 1SDA | |
10 | GP7 | 0Tx | 1SCL | |
11 | GP8 | 1Rx | 0SDA | 1Tx |
12 | GP9 | 1CS | 0SCL | 1Rx |
13 | GND | |||
14 | GP10 | 1SCK | 1SDA | |
15 | GP11 | 1Tx | 1SCL | |
16 | GP12 | 1Rx | 0SDA | 0Tx |
17 | GP13 | 1CS | 0SCL | 0Rx |
18 | GND | |||
19 | GP14 | 1SCK | 1SDA | |
20 | GP15 | 1Tx | 1SCL |
右 | IO | SPI | I2C | UART | ADC | 他 |
---|---|---|---|---|---|---|
40 | Vbus | |||||
39 | Vsys | |||||
38 | GND | |||||
37 | 3V3EN | |||||
36 | 3V3out | |||||
35 | Vref | |||||
34 | GP28 | 2 | ||||
33 | GND | GND | ||||
32 | GP27 | 1SCL | 1 | |||
31 | GP26 | 1SDA | 0 | |||
30 | RUN | |||||
29 | GP22 | |||||
28 | GND | |||||
27 | GP21 | 0SCL | ||||
26 | GP20 | 0SDA | ||||
25 | GP19 | 0Tx | 1SCL | |||
24 | GP18 | 0SCK | 1SDA | |||
23 | GND | |||||
22 | GP17 | 0CS | 0SCL | 0Rx | ||
21 | GP16 | 0Rx | 0SDA | 0Tx |
信号線組数
・GP0-22,25-28の27pin・ADC 0-2の3組 (Vref入力も)
・I2C 0-1の2組 (SDA/SCL)
・UART 0-1の2組 (Tx/Rx)
・SPI 0-1の2組 (Tx/Rx/CSn/SCK)
*GP25は内部LED
対応言語
picoのソフト開発言語は、CかMicroPythonです。モニタのサンプルコードも、CとPythonでした。サンプルコードのCをArduino-IDE用に修正してもエラーとだけの表示で修正箇所がわかりませんでした。Cの1サンプルは30ファイルぐらいからなり色々なことが出来そうです。それに対してPythonは1ファイルだけで簡単に出来そうですが出来る範囲はCに比べて限定的なようです。そこで、Arduino-IDEを使わないC言語でプログラミングします。C言語開発環境のインストール
https://www.zep.co.jp/nbeppu/article/z-pico-da2/の通りにインストールします。10GB程度必要のようです。
インストールの流れ
1.ARM GCC Compiler 10.3-2021.10
(Cコンパイラ)
2.CMake 3.23.1
(実行ファイルのビルドに必要な各種ファイルの管理を自動化)
3.Build Tools for Visual Studio 2022
(マイコン上で動作する実行ファイルを作る)
4.Python 3.10.4
(補助的)
5.Git for Windows
(公式SDK等をGitHubからダウンロードに必要)
6.Visual Studio Code
(ソース・コードを書くエディタ)
7.TeraTerm 4.93
(ターミナルソフト Picoから送信される文字列を受信)
をインストール後、CのソースファイルとCMake用の設定ファイルを作成し、ビルドを実行すると、Picoに書込む実行ファイル(.uf2)が得られます。
1.GNU Arm Embedded Toolchain
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rmにて、Downloadsをクリック > gcc-arm-none-eabi-10.3-2021.10-win32.exe をクリック > 実行 > 指示に従い、最後はすべて選択 > 完了
2.CMake
https://cmake.org/にて、右上のDownloadをクリック > Release(3.23.1) > Binary distributions > Windows x64 Installer > cmake-3.23.1-windows-x86_64.msi をダウンロード > 実行 > 指示に従い完了
3.Build Tools for Visual Studio 2022
Visual Studio 2022https://visualstudio.microsoft.com/ja/downloads/
にて、下の方にある Visual Studio 2022 用のツール > Build Tools for Visual Studio 2022 > ダウンロード > 実行 > C++によるデスクトップ開発にチェック > 一覧で以下の項目にチェックが付いているのを確認 > インストール
・MSVC v143 -VS 2022 C++ x64/x86 ビルド...
・Windows 10 SDK
・Windows 用 C++ CMakeツール
・ツールのコア機能のテスト-ビルドツール
・C++ AddressSanitizer
指示に従い、PCを再起動する
4.Python 3.10.4
https://www.python.org/にて、上のメニューのDownloads > Windows > Python 3.10.4の Download Windows installer(64-bit) > 実行 > Add Python 3.9 to PATHもチェック > Deisable path length limit をクリック
5.Git for Windows
https://gitforwindows.org/にて、Download > 実行 >全てデフォルトのままクリック > 完了
PCのスタートメニューからGit Bashを起動しておく。
5-A.pico用のSDK
C:/Pico/ のディレクトリを作る。PATHには日本語がない事。Git Bashにて以下を入力cd C:/Pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git
そして、以下が出来ていることを確認します。
C:\Pico\pico-examples
C:\Pico\pico-sdk
5-B.サンプルソースが実行できる事の確認
PCのスタートメニュー > Visual Studio 2022 > Developer Command Prompt for VS 2022 > Developer Command Promptが起動したら以下を入力setx PICO_SDK_PATH "C:/Pico/pico-sdk"
cd C:/Pico/pico-examples
mkdir build
cd build
cmake -G "NMake Makefiles" ..
nmake
15分ぐらいかかります。
C:\Pico\pico-examples\build の中に実行ファイル(.uf2)が保存されます。例えば
C:\Pico\pico-examples\build\blink\blink.uf2 については、
picoの白ボタンを押しながらUSBケーブルを接続し、接続後白ボタンを離します。Picoはフラッシュ・メモリとして認識されるので“blink.uf2”をpicoにドラッグ・アンド・ドロップすれば書込み、すぐに実行します。
6.Visual Studio Code
https://code.visualstudio.com/downloadにて、Windows > User Installer > 64bit をダウンロード > 実行 > デフォルトのままで、PATHへの追加 はチェックを付ける。
6-A.Visual Studio Codeの設定
PCのスタートメニュー > Visual Studio 2022 > Developer Command Prompt for VS 2022 > Developer Command Promptを起動codeと入力してEnterを押すと Visual Studio Codeが起動します。
注)Windowsのスタート・メニューなどから起動した場合は、正常にビルドできないことがあります。
左側の縦メニューの拡張機能 > 検索欄に CMake Tools を入力 > CMake Toolsをインストール > 先のCMake Toolsの歯車マークをクリック > 拡張機能の設定 をクリック > Cmake:Configure Environment の項目の追加 をクリック > 項目欄に、PICO_SDK_PATH と 値欄に、C:\Pico\pico-sdk を記入 > OK
Cmake:Generatorの設定欄に NMake Makefiles と入力
ファイル > フォルダを開く... > C:\Pico\pico-examplesを選択
画面最下行に No Kit Selected と表示してしまうので、そこをクリックし、GCC 10.3.1を選択
サブディレクトリ無しのプログラムを作成
C:\Pico\testのホルダを作り、以下の3ファイルを入れます。
1 test.c
以下を作ります。
#include <stdio.h> // printf()を使う
#include "pico/stdlib.h" // USBポートを使う
#include "hardware/gpio.h" // GPを制御
void main(void) {
stdio_init_all(); // USBポートの初期化
gpio_init(25); // GP25(内蔵緑LED)の初期化
gpio_set_dir(25, GPIO_OUT); // GP25を出力モードに設定し
while (true){ // 永久Loop
printf("Hello World!\r\n"); // シリアル通信で表示
gpio_put(25, 1); //GP25をH(点灯)
sleep_ms(250); // 250mS待つ
gpio_put(25, 0); //GP25をL(消灯)
sleep_ms(250); // 250mS待つ
}
}
2 pico_sdk_import.cmake
C:\Pico\pico-examples\pico_sdk_import.cmake をコピーする。3 CMakeLists.txt
CMake(ビルドに必要なファイル管理を自動化する)の設定リストです。
#CMakeの必要最小限のバージョンを設定
cmake_minimum_required(VERSION 3.12)
#公式の pico_sdk_import.cmake を読込む。プロジェクトの前に置く
include(pico_sdk_import.cmake)
#プロジェクト名と言語を設定。今回は project1 ●
project(project1 C CXX ASM)
#CとC++のバージョンを指定
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
#SDKを初期化。Pico用環境を読込む
pico_sdk_init()
#ソースファイルからビルドする実行可能ターゲットを追加。 test という実行ファイルを作成するものとし,必要な test.c を読込む●
add_executable(test test.c)
#一般的に使用される機能を集約するpico_stdlibをプルします。ソースコードにビルドに必要な pico_stdlib のライブラリを読込む●
target_link_libraries(test pico_stdlib)
#USB出力は有効、UART出力は無効。標準出力を指定。printf などを使った場合にUSBポートが入出力になる。デフォルトはGP0(1番pin)がUART TXとして出力、GP1(2番pin)がUART RXとして入力●
pico_enable_stdio_usb(test 1)
pico_enable_stdio_uart(test 0)
#map/bin/hex/uf2等を作成。Picoに書込む.uf2ファイル作成指示を出す●
pico_add_extra_outputs(test)
ビルドする
PCのスタートメニュー > Visual Studio > Developer Command Prompt > 起動したら code と入力 > Visual Studio Code が起動 > ファイル > フォルダを開く... > C:\Pico\test のフォルダーの選択 > 最下行の No Kit Selected をクリック > GCC.... を選択 > 最下行の Build をクリックして、ビルドを実行 > しばらく待つ > C:\Pico\test\build\test.uf2 が出来る。picoの白ボタンを押しながらUSBに接続 > 先の.uf2をpicoにコピー > picoの緑LEDが周期0.5秒で点滅する。
Tera Termを起動
設定 > シリアルポート...は以下にする
・ボーレート:115200
・データ:8bit
・パリティ:none
・ストップビット:1bit
・フロー制御:none
Tera Term画面に0.5秒おきに Hello World! を表示します。
サブディレクトリがあるプログラムを作成
各ディレクトリに CMakeLists.txt を作成します。C:\Pico\test2\CMakeLists.txt ←作る
C:\pico\test2\pico_sdk_import.cmake ←先と同じ
C:\Pico\test2\test2_sub\CMakeLists.txt ←作る
C:\Pico\test2\test2_sub\test.c ←先と同じ
1 test2\CMakeLists.txt
#CMakeの必要最小限のバージョンを設定
cmake_minimum_required(VERSION 3.12)
#SDKでプル(プロジェクトの前に置く)
include(pico_sdk_import.cmake)
#プロジェクト名と言語を設定
project(project1 C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
#SDKを初期化
pico_sdk_init()
#ビルドにサブディレクトリを追加●
add_subdirectory(test2_sub)
2 test2_sub\CMakeLists.txt
#ソースファイルからビルドする実行可能ターゲットを追加●
add_executable(test test.c)
#一般的に使用される機能を集約するpico_stdlibをプル●
target_link_libraries(test pico_stdlib)
#USB出力は有効、UART出力は無効●
pico_enable_stdio_usb(test 1)
pico_enable_stdio_uart(test 0)
#map/bin/hex/uf2等を作成●
pico_add_extra_outputs(test)
ビルドする
上記と同様、変更点は、C:\Pico\test のフォルダーの選択 →
C:\Pico\test2 のフォルダーの選択
C:\Pico\test\build\test.uf2 が出来る →
C:\Pico\test2\build\test2_sub\test.uf2 が出来る
ビルドすると、上記と同じ動作をします。