【ニュース】 【2025-04-02】「Visual Studio CodeとPi5でC言語のLチカをステップ実行する」をChapter4に追加しました。【2025-04-01】「I2C通信におけるマスタとスレーブのやり取り」についてChapter7に追加しました。 【2025-03-28】11.10.4 /etc/rc.local リリース日時2024-11-19のOSを補足しました。
/******************************************************/
目 次
/******************************************************/
はじめに
本書の追加情報や出版後に生じる対応情報などを適時アップします。本ページは、目次の順番で情報提供します。 なお、 本書に関する<お問い合わせ>につきましては、奥付に明記した手続きにより出版社宛て にお願い致します。また、著者及び職場等へのお問い合わせは、一切お断り致します。
本サポートページの動画は、著者のYouTubeチャンネルでまとめて見ることができます。
また、今後サポートページで追加予定のドキュメント、ソースコードおよび各種資料は、著者のGitHubのWebサイトからダウンロードできます。
/******************************************************/ Chapter1 Raspberry Piの概要
1.4. Raspberry Pi 5用公式アクティブクーラーの取り付け方法
公式アクティブクーラーの取り付け方法をQittaに投稿しました。取り付けのポイントは、クーラーのプッシュピンを適切な位置まで押し込むことです。
/******************************************************/ Chapter2 OSのセットアップ
2.4.2. Raspberry Pi Zero 2WにBookworm(64-bit) Desktopをインストール
セットアップの手順をQiitaに投稿しました。Raspberry Piシリーズ(Pi 5、Pi 4B)のようにサクサク動作するわけではなく、Webブラウザなどの負荷が大きいアプリの動作は厳しいです。それでも、初心者や学生を対象としたプログラミング学習やホビーユースなど、使用できる用途はあるかもしれません。ご参考までに。
2.9.3. Raspberry Pi Connectの設定と接続の手続き
上記の記事をQiitaにアップしました。従来のVNCはLAN内での利用が一般的でしたが、Pi Connectはインターネットからのアクセスが可能です。ただし、リモートのデスクトップ画面をフィットさせる機能が不十分だったり、Copy&Paste機能が煩雑だったりと、今後の改良や機能の追加が期待されます。
2.9.4. Raspberry Pi 4 Model BをDCファンで自動的に冷却する
小型DCファンとトランジスタ回路を利用して、指定した温度でラズパイを冷却して、サーマルスロットリングが発生しない記事を作成しました。
/******************************************************/ Chapter3 プログラムの開発環境
/******************************************************/ Chapter4 GPIOのデジタル出力を使う
図4-1 Chapter 9におけるブレッドボードの全体像(カラー写真)
はんだ付けを始める前に
はんだ付け作業の注意事項を動画にまとめましたので、作業前にご覧ください。
VIDEO
DCジャックのはんだ付けの方法
Chpater7の「LCDのはんだ付けの方法」と「はんだブリッジの修正方法」も併せてご参照ください。
VIDEO
ブレッドボードを使用したLED点灯回路の組み立て
ブレッドボードとジャンパーワイヤを使用することで、簡単に回路を試作できます。はんだ付けをしないので、電子部品の取り外しも容易で、繰り返して使用できます。この動画では、LED点灯回路の組み立ての事例を紹介しています。Chapter 5以降の組み立ても、同様な方法で組み立てください。また、Chapter 7では2枚目のブレッドボードを使用しますので、電源ラインを1枚目のブレッドボードにジャンパーワイヤで接続してください。
Visual Studio CodeとPi5でC言語のLチカをステップ実行する
4-Led01.cをステップ実行する事例をQiitaに投稿しました。ハードウェアとソフトウェアが密接に連携する組込みシステムやIoTのモノづくりおいて、問題の特定に「デバック」は有効な手段です。
/******************************************************/ Chapter5 GPIOのデジタル入力を使う
/******************************************************/ Chapter6 パルス出力・PWM出力・タイムスタンプ・スレッドを使う
/******************************************************/ Chapter7 I2Cバスを使う
LCD AQM1602のはんだ付けの方法
ビデオの中でピンヘッダをノーマルタイプに変更しますが、自走ロボットのRCサーボモータのCN7コネクタに使用するピンヘッダと同じものです。なお、この動画は前版で制作したものですが、改訂新版でも同じです。
フラックス、はんだ吸取器、はんだ吸取線を使用した3通りのはんだブリッジの修正方法を紹介します。なお、はんだ吸取線の動画では対象物が表面実装ICですが、参考にしてください。① フラックスを使用した修正方法
③ はんだ吸取線を使用した修正方法
VIDEO
【深化学習】I2C通信におけるマスタとスレーブのやり取り LCD(AQM1602)を初期化するフローチャート(徹底入門 図7-8)に示すように、マスタ(ラズパイ)からLCDへ9つの設定値を伝送します。フローチャートの❶では、lgI2cWriteByteData関数を使用して、LCDのアドレス(0x3e)、インストラクションレジスタ(0x00)、設定値(0x38)の順に3バイトを送信します。そのときのSDA信号のトランザクション(通信)を下図に示し、解説します。
●トランザクションはSTART(S)で始まり、STOP(P)で終了します。
SCLがHIGHの期間、STARTとSTOPは以下のように変化します。
・START:HIGH→LOW
・STOP :LOW→HIGH
●図中のビット表示
・灰色:マスタが送信するビット
・白色:スレーブが送信するビット
●7ビットのスレーブアドレスと8ビット目のR/Wビット
・マスタは7ビットのスレーブアドレスと、8ビット目にR/Wビットを送信します。
・R/WビットがLOWなら「Write(データ送信)」、HIGHなら「Read(スレーブへのデータリクエスト)」を意味します。
●アクノリッジビット(ACK/NACK)
各バイト送信後には、スレーブからマスタへアクノリッジビットが返されます。表に示すように、アクノリッジビットはACKとNACKの2種類あります。
アクノリッジビット
略号
値
意 味
Acknowledge
ACK
LOW
受信の応答
Not Acknowledge
NACK
HIGH
受信の無応答、または転送終了の合図※
※NACKは、スレーブからデータを受信しているマスタが転送を終了する際にも使用されます。
マスタがスレーブアドレスとR/Wビットを送信すると、スレーブ(LCD)はこれを受信し、正常であればACKを返します。もしに、スレーブアドレスが誤っていたり、LCDに不具合があったりするとACKを返せず、SDA信号はHIGHのままになりNACK(無応答)と解釈されます。この場合、トランザクションは中断します。
なお、アクノリッジビットはラズパイ内部のI2C回路によって検出され、I2Cデバイスドライバを介して、lgI2cWriteByteData関数に伝わるものと考えられます。
●ACK応答の実測データ
次の図は、LCDのインストラクションレジスタに設定値0x38のライトに成功したときのタイミングチャートです。各バイトの受信後、LCDからACKビットが返されているのが確認できます。その後、フローチャート❷のトランザクションが続行されます。
●NACK応答の実測データ
次の図は、LCDをバスから外した状態でのタイミングチャートです。マスタは最初にスレーブアドレスとR/Wビットを送信しますが、スレーブ(LCD)が存在しないためACKビット(LOW)を返せません。結果としてSDA信号線はHIGHのままで、マスタはNACKビットを検出し、STOPビットを送信してトランザクションを終了します。このとき、lgI2cWriteByteData関数はエラーコードを返します。
以上のように、I2C通信ではマスタとスレーブの間でACK/NACKをやり取りしながらデータ転送が進行し、誤ったアドレスやスレーブの不具合時にはNACKを返してトランザクションを中断する仕組みになっています。
【参考文献】NXPジャパン:I2Cバス仕様およびユーザーマニュアル
/******************************************************/ Chapter8 SPIバスを使う
/******************************************************/ Chapter9 Piカメラで撮影する
/******************************************************/ Chapter10 自走ロボットを製作する 10.4.4 ライン検出基板の外形加工
この動画は前版で制作した動画で、解説しているユニバーサル基板の秋月電子通商の販売コードはP-00185から117830へ変更になりました。
VIDEO
・メッキ線の伸ばし方
この動画は前版で制作したものですが、φ0.8のはんだメッキ線でも同様の方法で対応可能です。
VIDEO
10.5.3 メインボードの外形加工
この動画は前版で制作したものですが、改訂新版でも同じです。
VIDEO
10.7 ラズパイなしでのテスト走行
VIDEO
/******************************************************/ Chapter11 自走ロボットを制御する(基礎編)
11.9 タイヤを正転・逆転・ストップさせる
VIDEO
11.10 シャットダウンボタンを追加する VIDEO
11.10.4 /etc/rc.localによる自動起動
リリース日時2024-11-19のOSには、/etc/rc.localファイルがありません。次のコマンドでrc-localサービスの状態をターミナルで確認すると、サービスは存在しています。
$ systemctl status rc-local
rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static)
Drop-In: /usr/lib/systemd/system/rc-local.service.d
debian.conf
Active: inactive (dead)
Docs: man:systemd-rc-local-generator(8)
そこで、以下の手順で/etc/rc.localファイルを作成し、実効権限を与えます。
$ sudo mousepad /etc/rc.local
以下の内容を入力して保存し、終了します。
#!/bin/sh -e
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
sudo /home/my-pi/MyApp2/11-Shutdown &
exit 0
#!はシバンまたはシェバン(shebang)と呼ばれ、rc.localの先頭に記述することで、スクリプトを実行するシェルを指定します。オプション「-e」は、スクリプト内容のコマンドがエラーを返したら、即座に終了します。IPアドレスを取得し、設定されていればその値を出力します。
次のコマンドで/etc/rc.localに実行権限を与え、OSを再起動します。
$ sudo chmod +x /etc/rc.local
11.11 緩やかなラインをトレースする
VIDEO
(参考)8の字のラインをトレースする
VIDEO
/******************************************************/ Chapter12 自走ロボットを制御する(応用編)
12.2 RCサーボモータの位置決めをする
12.4 障害物を検出して自動停止して撮影する
VIDEO
/******************************************************/ 役に立つTips ※準備中。
/******************************************************/ 章末問題 Chapter4からChapter9 ※準備中。
/******************************************************/
RasPi学習ボー(Model RasPi-2021))のプリント配線板のガーバーデータ 実践教育訓練学会 の助成を受け、「C言語ではじめるRaspberry Pi徹底入門」(以下、「徹底入門」)の前半、Chapter9までの実習で使用する回路をプリント基板として設計しました。このプリント基板は「RasPi学習ボード」と名付けています。
ラズパイを活用した教育の振興を目的として、実践教育訓練学会のご厚意により、プリント基板のガーバーデータやドリルデータなどの製造情報を無償で読者に提供いたします。2021年7月には、RasPi学習ボードが「MODEL RasPi-2021」へとバージョンアップされ、ラズパイのSoC冷却用ファンの駆動回路が追加されました。
なお、RasPi学習ボードは、書籍『C言語ではじめるRaspberry Pi徹底入門』(技術評論社)の教育利用を目的として設計されています。本学習ボードの利用は、自己の責任と判断に基づいて行ってください。利用結果に関して、技術評論社、実践教育訓練学会、および著者は一切の責任を負いかねます。記載された情報は2024年12月時点のものであり、今後、仕様が変更される可能性があります。
RasPi学習ボード・プリント配線板の製造情報等🄫菊池達也
クリエイティブ・コモンズ・ライセンス(表示4.0国際)CC BY-NC-SA
RasPi学習ボードの主な特長
Raspberry Pi 5, 4B, 3B+, 3B, Zero 2Wに対応しています。ただし、Raspberry Pi 5で使用する場合は、RasPi学習ボードのI2Cインターフェース回路の変更が必要です。具体的な変更方法については、RasPi学習ボード2021の仕様書に詳細を記載していますので、そちらをご確認ください。 配線が固定されているため、学校やセミナーなどの集合教育を目的としたRaspberry Pi のプログラミング教育に適しています。また、収納や持ち運びが容易で便利です。 Arduino UNO R3に準拠したシールドを装備しており、新しい回路を追加することで拡張性を高めることが可能です。 Raspberry PiのSoCを冷却するためのファン駆動回路を実装しています。Raspberry Pi 4B、3B+、および3Bでは、「Raspberry Piの設定」を利用して設定した温度でファンが自動的に動作します。 ダウンロードの方法
RasPi学習ボードのガーバーデータなどの製造情報や仕様書などの資料は、著者のGitHubウェブサイトに公開されています。「RasPi学習ボード2021」フォルダにある資料一式「RasPi学習ボード2021.zip」をダウンロードしてください。
なお、「RasPi学習ボード2021.zip」はWindowsで圧縮していますので、Linuxで解凍するとファイル名が文字化けします。Linuxで解凍する場合は、unarコマンドの使用をおすすめします。
$ sudo apt install unar -y
$ unar RasPi学習ボード2021.zip
製造情報について
RasPi学習ボード(MODEL RasPi-2021)の製造情報はフォルダ「プリント配線板製造情報」の中にあります。各ファイルの意味は次の通りです。
Excellon ドリルファイル
ドリルデータ Rasp2_demo.drd
ドリルリスト Rasp2_demo.dri
Gerber RS-274X (拡張フォーマット)ファイル
部品面パターン Rasp2_demo.cmp
はんだ面パターン Rasp2_demo.sol
部品面レジスト Rasp2_demo.stc
はんだ面レジスト Rasp2_demo.sts
部品面シルク Rasp2_demo.plc
外形線図 Rasp2_demo.out
これらの Excellon ドリルファイルとGerber RS-274Xファイルはgerbv - A Free/Open Source Gerber Viewerで、ドリルリスト以外のファイルを確認することができます。Windows版やLinux版があります。
http://gerbv.geda-project.org/
ラズパイでは下記のコマンドでインストールできます。
$ sudo apt install gerbv -y
プリント基板の製造については、インターネットで受付可能なメーカーをご利用いただけます。手続きの詳細については、各メーカーに直接お問い合わせください。
製造仕様の留意点
・外形寸法 100.0mm × 160.0mm
・銅箔厚み 35um (電流容量を確保するため)
・長穴 あり (DCジャック端子が長穴仕様)
・表面処理 無鉛はんだレベラー (はんだ付けが容易ですが、コストが上がります)
参考までに、本製造情報を基にP板.comで発注する場合は、フォルダ「プリント配線板製造情報」にあるすべてのファイルをZIP形式でまとめ、メーカーにアップロードしてください。「製造指示書.xls」には、P板.com指定の形式で必要事項が入力済みです。詳細な手続きについては、P板.comの公式ホームページをご参照ください。
組み立てについて
学生やホビー愛好者の方でも、エントリーレベルのはんだごてでキット感覚で楽しく組立てられるようにアートワーク設計を行いました。ベタパターンは使用していませんが、電源系には太い配線を採用しています。そのため、熱容量が大きい3C型のこて先にに交換することをおすすめします。
はんだ付けに不慣れな読者もいるかもしれませんが、本ブログで紹介したLCD AQM1602のはんだ付け手順や、吸取器を使った修正方法のスキルがあれば十分対応可能です。組立て指示書は用意していませんが、以下の手順で進めると良いでしょう。
抵抗など背の低い部品から順番に実装してください。 部品をマスキングテープで仮止めすることで作業がしやすくなります。 なお、ピンヘッダ(JP1~JP7)の挿入はややきつめに設計されています。これは、基板を裏返してはんだ付けを行う際にピンヘッダが落ちないようにするためです。ピンの挿入が不十分な場合は、はんだ付けをする前にペンチなどで修正してください。また、LCDのはんだ付けに関するビデオでも述べたように、安全衛生作業を遵守し、怪我のないように注意して作業を進めてください。
最後に、ご自身で組み立てたRasPi学習ボードを通じて、スキルアップにつながることを願っています。
/******************************************************/
ニュース履歴