書籍概要

Arduino IDEではじめる FreeRTOS入門
[ESP32 ラズパイPico 2W対応]

著者
発売日
更新日

概要

組み込みプログラミングにおいて,「AをやりながらBも同時に進める」といった並行処理は,プログラムの難易度を著しく上昇させます。しかし,リアルタイムOS(RTOS)を用いることで,タスク管理が容易になり,コードの見通しを良くすることができます。

本書の主題であるFreeRTOSは,軽量かつ幅広いプラットフォームに対応したRTOSです。現在はMITライセンスのもとオープンソースとして提供されています。Wi-Fi,Bluetooth,イーサネットを介したクラウド接続機能も強化されています。

本書では,リアルタイムOSであるFreeRTOSを,手軽に利用できるプラットフォームとしてArduinoを使うことを軸に解説します。特に,標準でFreeRTOSベースで構成され,デュアルコアに最適化されたESP32,およびデュアルコアのタスク割り当てが可能なRaspberry Pi Pico WをArduinoで使用する方法に焦点を当てます。小型で安価なXIAOシリーズを中心に,ブレッドボードでの具体的な製作例を通して,FreeRTOSの実践的な使い方を詳細に解説します。

こんな方におすすめ

  • ラズパイPIやESP32で,もっと多機能な作品を作りたい人
  • FreeRTOSを使いたい人

サンプル

samplesamplesample

目次

第1章 FreeRTOSとは

  • 1-1 RTOSとは
  • 1-2 FreeRTOSとは
  • 1-3 FreeRTOSの内部構成と動作
    • 1-3-1 Amazon FreeRTOSの全体構成
    • 1-3-2 FreeRTOS Kernel部の構成
    • 1-3-3 タスクの状態遷移
    • 1-3-4 タイムスライス
    • 1-3-5 メモリ管理

第2章 ArduinoとFreeRTOS

  • 2-1 ArduinoとFreeRTOSの連携
  • 2-2 Arduino ESP Coreの概要
  • 2-3 Arduino-Picoの概要

第3章 テスト用ハードウェアの製作

  • 3-1 XIAO IoT Boardの製作
    • 3-1-1 XIAO IoT Boardの全体構成
    • 3-1-2 主要部品の概要
    • 3-1-3 回路設計と組み立て
  • 3-2 Pico IoT Boardの製作
    • 3-2-1 Pico IoT Boardの全体構成
    • 3-2-2 主要部品の概要
    • 3-2-3 回路設計と組み立て
  • 3-3 周辺デバイスライブラリの使い方
    • 3-3-1 BME280センサライブラリの使い方
    • 3-3-2 OLED用ライブラリの使い方
    • 3-3-3 実際の例題

第4章 FreeRTOSの基本の使い方

  • 4-1 FreeRTOSを使うための準備
    • 4-1-1 ESP32系の場合
    • 4-1-2 Raspberry Pi Pico系の場合
    • 4-1-3 ビルドと書き込み
  • 4-2 タスクの作り方とタスク制御
    • 4-2-1 タスクの基本書式
    • 4-2-2 タスク生成関数
    • 4-2-3 タスク制御用API関数
    • 4-2-4 例題によるタスクの作成方法
    • 4-2-5 例題によるタスク制御の使い方
  • 4-3 Queue(キュー)の使い方
    • 4-3-1 Queueとは
    • 4-3-2 Queue制御用のAPI関数
    • 4-3-3 競合が起きる例題
    • 4-3-4 Queueを使った例題
  • 4-4 Semaphore(セマフォ)の使い方
    • 4-4-1 Semaphore(セマフォ)とは
    • 4-4-2 Semaphore制御用API関数
    • 4-4-3 例題によるSemaphoreの使い方
  • 4-5 Mutex(ミューテックス)の使い方
    • 4-5-1 Mutexとは
    • 4-5-2 Mutex制御用API関数
    • 4-5-3 Mutexなしの例題
    • 4-5-4 例題によるMutexの使い方
  • 4-6 Notification(タスクノーティフィケーション)の使い方
    • 4-6-1 Notificationとは
    • 4-6-2 Notification制御用API関数
    • 4-6-3 Notificationの使い方
    • 4-6-4 例題による単純なNotificationの使い方
    • 4-6-5 例題によるイベントモードのNotificationの使い方
  • 4-7 Event Group(イベントグループ)の使い方
    • 4-7-1 Event Groupとは
    • 4-7-2 Event Group制御用API関数
    • 4-7-3 例題によるEvent Groupの使い方
  • 4-8 Stream Buffer(ストリームバッファ)の使い方
    • 4-8-1 Stream Bufferとは
    • 4-8-2 Stream Buffer制御用API関数
    • 4-8-3 例題によるStream Bufferの使い方
  • 4-9 Message Buffer(メッセージバッファ)の使い方
    • 4-9-1 Message Bufferとは
    • 4-9-2 Message Buffer制御用API関数
    • 4-9-3 例題によるMessage Bufferの使い方
  • コラム FreeRTOSを使う際のポイント

第5章 応用編

  • 5-1 デュアルコアの使い方
    • 5-1-1 デュアルコアとは
    • 5-1-2 デュアルコア対応API関数
    • 5-1-3 例題によるデュアルコアの使い方
    • 5-1-4 XIAO IoT Boardの場合
    • 5-1-5 Pico IoT Boardの場合
  • 5-2 Wi-Fiの使い方
    • 5-2-1 Wi-Fiの使い方の差異
    • 5-2-2 例題によるWi-Fiの使い方
    • 5-2-3 XIAO IoT Boardの場合
    • 5-2-4 Pico IoT Boardの場合
  • 5-3 ESP-NOWの使い方
    • 5-3-1 ESP-NOWとは
    • 5-3-2 例題によるESP-NOWの使い方
    • 5-3-3 MACアドレスの取得方法
  • 5-4 ファイルシステムの使い方
    • 5-4-1 SDライブラリのプログラム構成と特徴
    • 5-4-2 SDライブラリのAPI関数の使い方
    • 5-4-3 例題によるSDライブラリの使い方
  • 5-5 IoTシステムの製作
    • 5-5-1 IoTシステムの全体構成
    • 5-5-2 XIAO IoT Boardの場合
    • 5-5-3 Pico IoT Boardの場合

第6章 インターネットラジオの製作

  • 6-1 全体構成と仕様
  • 6-2 デバイスの外観と仕様
  • 6-3 回路設計と組み立て
  • 6-4 プログラムの全体構成
  • 6-5 ESP32-audioI2Sライブラリの使い方
  • 6-6 液晶表示器ライブラリの使い方
  • 6-7 プログラム詳細

第7章 グラフ表示IoTボードの製作

  • 7-1 全体構成と仕様
  • 7-2 回路設計と組み立て
  • 7-3 プログラムの全体構成
  • 7-4 プログラムの詳細

第8章 メカナムホイール車の製作

  • 8-1 車体の製作
  • 8-2 デバイスの外観と仕様
  • 8-3 制御部の回路と組み立て
  • 8-4 車体の組み立て
  • 8-5 送信機の製作
  • 8-6 デバイスの外観と仕様
  • 8-7 送信機の回路と組み立て
  • 8-8 車体のプログラムの全体構成
  • 8-9 プログラムの詳細
  • 8-10 送信機側のプログラムの構成
  • 8-11 プログラムの詳細

第9章 カメラ付きリモコンカーの製作

  • 9-1 全体構成と仕様
  • 9-2 デバイスの外観と仕様
  • 9-3 制御部の回路と組み立て
  • 9-4 車体の組み立て
  • 9-5 車体のプログラムの作成
  • 9-6 プログラム詳細
  • 9-7 タブレットのプログラム作成
    • 9-7-1 画面設計
    • 9-7-2 コンポーネントの設定
    • 9-7-3 ブロックプログラミング
  • 9-8 カメラ内蔵XIAOのプログラム作成

第10章 自動水やり器の製作

  • 10-1 全体構成と仕様
  • 10-2 デバイスの外観と仕様
  • 10-3 制御ボードの設計と組み立て
  • 10-4 ハードウェア全体の製作
  • 10-5 プログラムの構成
  • 10-6 プログラムの詳細
  • 10-7 実行結果
  • 索引
  • プログラムなどのダウンロードについて
  • 参考文献

サポート

ダウンロード

(2026年6月11日更新)

本書で作成した例題のプログラムと,回路図,配置図がダウンロードできます。圧縮ファイルですので,解凍してお使いください。

回路図(Hardwareフォルダ)

  • 「○○_SCH」は回路図
  • 「○○_BRD」は配置図
  • 「Gerber」フォルダは,プリント基板発注用のデータ

プログラム(Programフォルダ)

章ごとに作成したプログラムが格納されています。

  • 「○○ .ino」はArduino IDEで開くスケッチ
  • 「Libraries」フォルダは共通して使えるライブラリ
  • 「○○ .aia」はMIT App Inventor2のプログラム

なお,ソースリスト中にWi-FiのSSIDやパスワード,クラウドサービスのIDなどが必要なものは,そのままでは動作しません。読者の方の環境に書き換える必要があります。

これらのファイルについて,一般的な環境においては特に問題のないことを確認しておりますが,万一障害が発生し,その結果いかなる損害が生じたとしても,小社および著者はなんら責任を負うものではありません。また生じた損害に対する一切の保証をいたしかねます。必ずご自身の判断と責任においてご利用ください。

以上のことをご確認,ご了承の上,データをご利用願います。

ダウンロード
ArduinoIDE_FreeRTOS.zip

商品一覧