TECH PLAY

ラズベリー・パイ Pico/Pico W攻略本

3,080円 (税込)

Amazon楽天

ラズベリー・パイ Pico/Pico W攻略本

書籍情報

発売日:

著者/編集:Interface編集部

出版社:CQ出版

発行形態:単行本

書籍説明

内容紹介

小型マイコン・ボード「ラズベリー・パイPico,Pico W(Wi-Fi対応版)」について,仕様から製作例までを幅広く解説.

目次

本書は月刊『Interface』2021年8月号に掲載した記事を中心に加筆・再編集したものです. ☆目次 ●はじめに ◎51×21mmの小さなボディにデュアル・コアCPUと高機能I/Oコントローラを凝縮 ●第1章 これがラズベリー・パイPicoだ ◎カメラやLCDを搭載するAI向け高機能タイプも ●第2章 RP2040搭載ボード&Pico用拡張ボード図鑑 RP2040搭載マイコン・ボード ラズベリー・パイPico対応拡張ボード ◎1200円で買える無線マイコン・ボード!CとMicroPythonでLチカ&HTTPクライアントを試す ●第3章 PicoのWi-Fi版「Pico W」 ボード構成 ハードウェア仕様 C/C++SDK MicroPython ◎搭載マイコン・チップRP2040は単体でも販売されるから製品開発にも使える ●Appendix1 今マイコンを始めるならコレ!Picoがお勧めな理由 ◎ラズベリー・パイやPCのI/Oボードとして活躍しそう!そうなれば強力なIoT端末が作れそう ●Appendix2 Picoマイコンの立ち位置 ◎教育/試作/業務まで幅広く使える ●Appendix3 公式の開発言語はC/C++とマイコン用Python 標準的な開発環境が公式から提供されている MicroPython実行環境としてのラズベリー・パイPicoの特徴 初心者はCircuitPythonという選択肢もある ☆第1部 開発のための基礎知識 ◎開発環境の構築方法からPico C/C++SDK付属サンプル・プログラムの試し方まで ●第1章 開発環境1…ラズベリー・パイ4を使った公式推薦のプログラミング 公式ウェブ・サイトから情報入手 開発環境の構築 任意…PCからラズベリー・パイ4Bの遠隔利用 サンプル・プログラム1…定番「Lチカ」 サンプル・プログラム2…UART通信 サンプル・プログラム3…A-D変換 サンプル・プログラム4…温度/湿度/気圧センサ サンプル・プログラム5…時計機能RTC サンプル・プログラム6…小型液晶ディスプレイ ◎ラズパイ4向けの公式C/C++ SDKをWindowsやLinuxで使う ●第2章 開発環境2…PCだけでPicoをプログラミング PCだけでPicoの開発ができる 環境構築 サンプルを動かしてみる 新規プロジェクトの作成 PC同様にデバッガも使える デバッグ環境の構築 Picoprobeでデバッグしてみる 統合開発環境を使ってGUIでデバッグ操作する ◎VS Codeからリモート接続!メインPC環境に手を入れずに公式SDKが使える ●第3章 開発環境3…PCからラズパイ経由でPicoをプログラミング きっかけ…ラズパイ上の公式SDKをPCから快適に操作したい セットアップの手順 ◎Arduino IDEで開発したスケッチをステップ実行!ブレーク・ポイント設定や変数などの情報を見える化 ●第4章 汎用デバッガ×VS Codeで構築するデバッグ環境 ステップ1:Arduino IDEにPicoの開発環境を追加する ステップ2:汎用デバッガJ-LinkとPicoの通信を試す ステップ3:J-Link×VS Codeでスケッチをデバッグする ◎新たな後継マイコンが登場してもアプリ側で対応しやすい ●第5章 公式C/C++ SDKの構造とRP2040ハード機能の使い方 SDKの階層構造 ボードの定義 RP2040のハードウェア機能を使うには ◎流入/流出電流値や内部プルアップ/プルダウン抵抗値など ●第6章 実験でチェック! I/O端子の実力 GPIOを動かす前に知っておきたい基礎知識 実験① GPIO端子はどれくらいの電流を流せるのか 実験② GPIO端子はどれくらいの電圧を出せるのか 実験③ GPIO端子にはどれくらいの電圧を加えられるか 実験④ プルアップ/プルダウン抵抗の効果 ◎多数ある拡張ボードを利用してサクッと試作 ●第7章 Arduino互換ボード利用のススメ Arduino Uno系の基板のピン配置 Arduinoシールドのピン配置 Picoの互換基板のデザイン Arduino IDEによる動作確認 ◎新定番になりうるのか?スペックの違いから特徴が生きる用途を考える ●Appendix1 700円マイコンESP32とPicoを比べてみた Picoの特徴 こんな用途に ☆第2部 変幻自在プログラマブルI/O ◎ハードウェア詳細とC/C++ SDKによる開発 ●第1章 使い方完全マニュアル PIOのハードウェア プログラムには専用のアセンブリ言語を使う PIOアセンブリ命令 実装例1:UARTを実装してみる 実装例2:PIO版ウォッチドッグ・タイマを実装してみる ◎正確なタイミングの高速I/Oを作れる ●第2章 プログラマブルI/Oの機能と簡易ライブラリ プログラマブルI/O機能のメリット C言語による開発環境の構築 まずはLチカで動作確認 I/Oピンを経由した信号出力 Armプロセッサとの接続や信号入力 異なるプログラムの並列実行 ◎GPIOにはできない速度!リアルタイムがうれしい ●第3章 簡易ライブラリで複数のRCサーボや測距センサを動かす 作例1:SPI入出力の処理 作例2:PCからのRCサーボモータ制御 作例3:PCへの距離センサ測定値伝送 作例4:PCのパラレルI/Oポート ◎PIOアセンブリ・コードが手軽に作れる ●第4章 実機がなくてもデバッグできる簡易PIOエミュレータ 開発のきっかけ エミュレーションの行い方 PIOアセンブリ・コードの書き方 実機での動かし方 複数のステート・マシンを使うアプリの作成方法 ☆第3部 ホストにもデバイスにもなれるUSB機能 ◎USBホスト&デバイスのサンプル・プログラムを動かす ●第1章 USB周りのハードウェア概要とライブラリTinyUSBの使い方 各機能ブロックの役割 PicoはオープンソースのUSBライブラリを使う ホスト側サンプル・プログラムを動かす デバイス側サンプル・プログラムを動かす ◎PCからはHIDデバイス&マス・ストレージとして見える ●第2章 USBキーボードをCircuitPythonでサッと作る USBキーボードの構成 PicoでCircuitPythonを使う手順 押されたキーを判別する仕組み ☆第4部 リアルタイムOSを載せる ◎アマゾンのバックアップで機能が充実!複数の処理もマルチタスクでシンプルに書ける ●第1章 FreeRTOSを載せる方法 開発環境 製作…電光掲示板を例にマルチタスク・プログラミング ◎安定性や対応マイコンの多さなどから試作に使いやすい ●第2章 ITRON仕様OS TOPPERS/ASPの載せ方 TOPPERS/ASPのPico対応 ビルドの前に TOPPERS/ASPのビルド 動作実験 ☆第5部 人工知能を載せる ◎開発環境のセットアップからマイコン向けサンプルの試し方まで ●第1章 フレームワークTensorFlowの準備 Pico用のTensorFlowリポジトリがある ビルド環境として利用するラズパイ4のセットアップ hello_worldで動作確認 hello_world以外のサンプルを試す際にはセンサの実装が必要 ◎加速度センサの値からスクワットやダンベル動作を推論する ●第2章 オリジナルの学習済みモデルを動かす ハードウェア マイコン向けのAIサンプル・アプリケーションを入手する データ収集のための変更点 データ収集 学習済みモデルを作る 推論環境を作る 推論を実行する ☆第6部 限界突破!開発事例 ◎ちょっとしたデバイスをサッと動かすのにPicoは便利 ●第1章 受信モジュールを利用したFMラジオの製作 ハードウェア ソフトウェア Picoラジオを組み立てる コラム Picoとラジオ・モジュール間の消費電流を下げるヒント ◎固定小数点演算/フィルタ/オシレータの工夫で ●第2章 リアルタイム処理のために軽量化!シンセサイザの製作 ハードウェアの構成 開発環境 シンセサイザ3つの主要部品 プログラム① 浮動小数点演算で信号処理 プログラム② 固定小数点演算で信号処理 プログラム③ 軽量化のための工夫① オシレータを軽量化1 プログラム④ 軽量化のための工夫② オシレータを軽量化2 プログラム⑥ 軽量化のための工夫④ フィルタを軽量化2 プログラム⑦ さらなる軽量化のための工夫⑤ フィルタを軽量化3 プログラム⑧ 軽量化のための工夫⑥ フィルタを軽量化4 プログラム⑨ 軽量化のための工夫⑦ アンプを軽量化 軽量化のまとめ プログラム⑩ USB通信に対応 コラム シンセサイザの制御 ◎前章に改良を加える ●第3章 音の時間変化に対応したシンセサイザ作り 開発環境 プログラム1:オシレータ/フィルタ/アンプをモジュレーションに対応させる プログラム2:LFOの実装 プログラム3:EGの実装 プログラム4:制御処理を軽量化1 プログラム5:制御処理を軽量化2 プログラム6:USB通信に対応させる ◎リアルタイムOS TOPPERS/ASPを利用する ●第4章 128×128ドット・マトリクスLEDによる掲示板 PIOを使ってマトリクスLEDに出力するサンプルhub75 製作する電光掲示板 ハードウェア ソフトウェア ビルド環境の構築 ☆第7部 Windowsでマイコン直たたき!RP2040の本質に迫る ◎C/C++でHello world!&Lチカ ●第1章 自前のプログラムをビルドする サンプル・プログラムをビルドする 自前のプログラムをビルドする ◎WindowsのPowerShell内でmake一発でプログラムをビルドしたい ●第2章 公式SDKを使わずにLチカとUART通信 公式SDKを使いたくない ブート・シーケンスのおさらい スタートアップ・ファイルを作る メイン・プログラムを作る 実行形式のバイナリ・ファイルを生成 UARTを使う コラム SIO以外のレジスタもビット単位に書き込めないのか? ◎マルチコア・プログラムを公式SDKを使わずにアセンブラから書き下ろす ●第3章 LチカとHello World!を2コアで並列動作させてみた 公式SDKを利用しないプログラム作り 2つのコアを動かす コラム 盲腸のようなコードは何のため? ◎PIO専用アセンブラを使ってPWMパルス生成とUART通信 ●第4章 噂のプログラマブルI/Oはこう使う ステート・マシンの命令 2つのステート・マシンを同時に動作させる PCとUART通信する サイドセットを使ってみる ☆第8部 Picoのプロトタイプに! MicroPython ◎MicroPythonと相性抜群のThonnyで始める ●第1章 開発環境を構築する 実行環境をPicoに書き込む 開発環境Thonnyを導入する Thonnyが便利なポイント サッと動かす…Importして数行書くだけ ◎シリアル通信/PWM/ウォッチドッグ・タイマなど ●第2章 GPIO活用リファレンス Picoのペリフェラルの使い方 Pin:GPIOにアクセスする ADC:アナログ値を読み取る UART:シリアル通信その1 I2C:シリアル通信その2 SPI:シリアル通信その3 PWM:パルス幅変調信号を出力 WDT:ハングアップを監視 Timer:タイマを利用 Signal:正論理/負論理を意識したI/O制御 ◎浮動小数点演算とマルチスレッドの実行時間を他のマイコン・ボードと比較 ●第3章 MicroPython×Picoの実力検証 PicoのMicroPythonの実力を検証 コラム 小さい数値の内部表現 ◎ライブラリ一覧とプログラム開発のポイント ●第4章 PIOプログラミング[導入編] MicroPythonにはPIO用のライブラリも用意されている 命令を効率よく実行する仕組み 移植性を高めるためにGPIOの割り当てを抽象化 MicroPythonからPIOでLチカしてみる コード・サイズを削減する工夫 コラム1 正確なディレイ・サイクルの作り方 コラム2 PIO向け関数のコンパイル処理 ◎定番Lチカからスイッチ入力,ロータリ・エンコーダ用ドライバまで ●第5章 PIOプログラミング[事例集] プログラム① NOP命令だけを実行する プログラム② LED点滅 プログラム③ MicroPythonからLED点灯を制御 プログラム④ スイッチON/OFF状態をPIOから取得する プログラム⑤ IRQを利用しステート・マシン間で処理を同期化する プログラム⑥ ロータリー・エンコーダ用ドライバの作成 ◎ESP32向けに書いたMicroPythonプログラムをPico向けにCircuitPythonで書いてみた ●第6章 CircuitPythonの特徴と互換性 2つの言語の使いやすさ 入手可能なバージョン プログラミングの観点で2つの言語の相違点,ソースコードの相互利用について ESP32版MicroPythonで作成したサンプルからの移植 ☆第9部 C++を利用してPico用のMyicroPython拡張モジュールを作る ◎STM32向けを流用して,ラズベリー・パイPicoとRZマイコンで試す ●第1章 開発の準備…環境構築とビルド&拡張の手順 MicroPythonの内部アーキテクチャ MicroPythonの開発ツール GitHubリポジトリのフォルダ構成 ソースコードのビルド 拡張モジュールを作るには OpenOCDによるデバッグ ◎Arduino用C++ライブラリを改造してPico用MicroPythonの拡張モジュールに作り替える ●第2章 拡張事例1…8×8マトリクスRGB LED 拡張機能の実装 実際に表示させる ①フォント描画,②SPI通信,③ファイル・システム ●第3章 拡張事例2…SPI接続のLCD 拡張機能の実装 LCDへの画像ファイルの転送 ◎ESP8266を利用しクラウドAWSにMQTTでトピックをパブリッシュするまで ●第4章 Wi-Fiネットワークの追加 MicroPythonのネットワーク・アーキテクチャ Wi-Fiネットワーク・ドライバの実装 クラウドへのアクセス ◎LCDやカメラの拡張モジュールを作る ●第5章 おまけ…ルネサス・マイコンでの事例 GR-MANGOボードの仕様 GR-MANGO向けのMicroPythonを作るには マイコン・レジスタにアクセスするモジュールを作る MicroPythonでRZマイコンの汎用入出力ポートを操作する LCDおよびカメラ関連の周辺機能を用意する Pico向けに作ったLCD拡張クラスとDISPLAY拡張クラスの実装 CAMERA拡張クラスの実装 コラム MicroPythonのプログラムの学び方 ☆第10部 Pico W活用事例 ◎せっかくだからPico Wを簡単なウェブ・サーバにしてみた ●第1章 公式サンプルの活用法 Picoからのハードウェアの変更点 Picoからのソフトウェアの変更点 サンプル・プログラムのコンパイル サンプル・プログラムを動かす main.pyの自動起動方法 ◎Pico Wファームウェア書き込み/Wi-Fiルータ接続プログラムの入手/HTTP通信 ●第2章 Wi-Fiのアクセス・ポイントに接続して通信する ◎Eclipse Mosquitto/MQTT Explorer/Grafanaの導入 ●第3章 Pico Wで得たセンサ・データをWi-Fi経由で取得する ブローカ/クライアント・ツールのインストール 設定後にできるようになること データの可視化には「Grafana」を使う ◎デバイス証明書/キーファイル/署名ファイルを整える ●第4章 AWS IoTへ接続しMQTTメッセージを送信する ◎プログラムをネットワーク経由で編集/実行できる ●第5章 MicroPythonのWebrepl機能を使うための設定と実行方法 ◎pico sdk関連のライブラリやpico_wフォルダ中にあるサンプルの紹介 ●第6章 Pico W用のサンプル・プログラムをビルドする ●Pico Wを使う際には技適特例申請が必要です(2023年1月時点)

著者情報

CQ出版株式会社

Interface編集部