版元ドットコム

探せる、使える、本の情報

文芸 新書 社会一般 資格・試験 ビジネス スポーツ・健康 趣味・実用 ゲーム 芸能・タレント テレビ・映画化 芸術 哲学・宗教 歴史・地理 社会科学 教育 自然科学 医学 工業・工学 コンピュータ 語学・辞事典 学参 児童図書 ヤングアダルト 全集 文庫 コミック文庫 コミックス(欠番扱) コミックス(雑誌扱) コミックス(書籍) コミックス(廉価版) ムック 雑誌 増刊 別冊
ラズベリー・パイ Pico/Pico W攻略本 Interface編集部(編集) - CQ出版
..

ラズベリー・パイ Pico/Pico W攻略本 (ラズベリーパイ ピコ ピコ ダブル コウリャクボン) 開発環境/PIO/USB/OS/人工知能/Wi-Fi/オーディオ/MicroPython/C/C++ (カイハツカンキョウピーアイオーユーエスビーオーエス)

コンピュータ
このエントリーをはてなブックマークに追加
発行:CQ出版
B5判
320ページ
定価 2,800円+税
ISBN
978-4-7898-4477-2   COPY
ISBN 13
9784789844772   COPY
ISBN 10h
4-7898-4477-3   COPY
ISBN 10
4789844773   COPY
出版者記号
7898   COPY
Cコード
C3055  
3:専門 0:単行本 55:電子通信
出版社在庫情報
不明
書店発売日
登録日
2023年2月1日
最終更新日
2023年3月1日
このエントリーをはてなブックマークに追加

紹介

Picoは800円弱で入手でき,PCがあれば開発を始められます.安価ながら動作速度は100MHz超の高級マイコン・ボードです.Wi-Fi機能を追加したPico Wの販売も予定されています.本書はPico/Pico Wについて,仕様から実際の製作例までを幅広く解説します.

目次

本書は月刊『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月時点)

上記内容は本書刊行時のものです。