WebShop>書籍・雑誌総合案内>ボード・コンピュータ・シリーズ>ラズベリー・パイPico/Pico W攻略本
WebShop内検索(googleで本サイトを検索:別ウィンドウ)
ボード・コンピュータ・シリーズ開発環境/PIO/USB/OS/人工知能/Wi-Fi/オーディオ/MicroPython/C/C++ラズベリー・パイPico/Pico W攻略本
Interface2021年8月号「ラズパイのマイコンPico攻略本」を中心に関連記事を集め,加筆修正したものです.
ラズベリー・パイPicoは,ネット通販や秋葉原で気軽に買ってきて,PCがあれば気軽に始められるマイコンです.これでも32ビット・マイコンで動作速度は100MHz超,20年前なら高級マイコンです.さらに単に動作速度が速いだけではなく,正確なタイミングで信号制御ができるI/Oコントローラやリアルタイムでの信号補間処理に特化したハードウェアも内蔵し,現代の最新マイコンに比べても一歩進んだ応用が可能なポテンシャルを持っています.
せっかくすごい道具が手に入ったのですから,使わない手はありません.まずはPCにつないで動かしてみましょう.高価な専用の機材は必要ありません.最初は定番のLチカから始めても良いですし,本書を見て興味が湧いた本気の製作例を真似てみるところから始めることも,マイコン学習の早道です. 最新の話題として外せないのが,PicoにWi-Fi機能を追加したラズベリー・パイPico Wがリリースされたことです.Pico Wがインターネットに繋がれば,便利なクラウド・サービスと連動した大規模なシステムへの応用も可能となります.本書では国内販売を先取りして,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を動かす前に知っておきたい基礎知識 実験(1) GPIO端子はどれくらいの電流を流せるのか 実験(2) GPIO端子はどれくらいの電圧を出せるのか 実験(3) GPIO端子にはどれくらいの電圧を加えられるか 実験(4) プルアップ/プルダウン抵抗の効果 多数ある拡張ボードを利用してサクッと試作 第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) 固定小数点演算で信号処理 プログラム(3) 軽量化のための工夫(1) オシレータを軽量化1 プログラム(4) 軽量化のための工夫(2) オシレータを軽量化2 プログラム(6) 軽量化のための工夫(4) フィルタを軽量化2 プログラム(7) さらなる軽量化のための工夫(5) フィルタを軽量化3 プログラム(8) 軽量化のための工夫(6) フィルタを軽量化4 プログラム(9) 軽量化のための工夫(7) アンプを軽量化 軽量化のまとめ プログラム(10) 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プログラミング[事例集] プログラム(1) NOP命令だけを実行する プログラム(2) LED点滅 プログラム(3) MicroPythonからLED点灯を制御 プログラム(4) スイッチON/OFF状態をPIOから取得する プログラム(5) IRQを利用しステート・マシン間で処理を同期化する プログラム(6) ロータリー・エンコーダ用ドライバの作成 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 拡張機能の実装 実際に表示させる (1)フォント描画,(2)SPI通信,(3)ファイル・システム 第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月時点) |
書籍・雑誌総合案内