【PR】この記事には広告が含まれています。
私の書籍「ラズパイPico WかんたんIoT電子工作レシピ」が技術評論社から発売されました。大変ご好評いただいており、5/2時点でAmazon 自作パソコン部門の1位になっています。
書籍内で使用するプログラムは下記のボタンからダウンロードできます。
購入者用サポート情報
ラズパイPico Wの入門書
内容はRaspberry Pi Pico Wの入門書で、インターネットと連動する電子工作を楽しむ方法について、プログラミングの基礎から解説しています。出版時点では無線LAN機能付きのPico Wに特化した入門書はあまりないため、ここが差別化ポイントとなっています。
僕自身、Pico Wが大好きで、この本を書くにあたり高い熱量で取り組むことができました。
これから電子工作をはじめる人や、ラズパイは使ったことがあるけどPico Wは初めてという方に向けて書きました。あまり難しい技術には触れず、応用しやすいシンプルなテクニックを多数紹介しています。
日常生活での小さな悩みを解決するアイディアからAIアシスタントの開発まで、さまざまなテクニックを紹介し、オリジナルの作品作りのきっかけになることを目指しています。
本書は、これからPico Wや電子工作に挑戦する方のために書きました。Pico Wさえあれば、電子パーツがなくてもプログラムを実際に動かして楽しめるコンテンツを豊富に用意しています。
本書のこだわり
この本では、無線LAN機能を活用した電子工作を5つの作例を通じて紹介しています。
各作例は実際に取り組んでいただけるように、必要な部品を最小限に抑えたものを選んでいます。
初心者の方が挫折しないように、難しい用語を避けてわかりやすく説明するように心がけました。また、本書は256ページのフルカラーであり、図解や写真を多く使い読みやすさに配慮した構成になっています。
サンプルページを公開中
作例の紹介では、いきなり全体のプログラムを示すのではなく、構成要素ごとに分けて丁寧に解説しています。これにより、各プログラムの役割が明確になり、アレンジのヒントとして役立つようにしました。
以下は本書で紹介している5つの作例です。
天気予報APIから今日の降水確率を取得して、LEDの明るさを変化させる装置です。
今日の日付から「何ごみの日」かを判定して、サーボモーターの角度で、ごみの種類を表現します。
BlynkというIoTプラットフォームを利用してスマホのアプリ画面を作成します。
作成したアプリ画面を操作することにより、遠隔からサーボモーターを動かせるようにします。また、照度センサーの値をスマホで確認できる機能も実装します。これらの機能は外出先からも確認および操作可能です。
2台のPico Wを通信させて、センサーのデータを送ることにより、玄関のカギの開閉状態を遠隔で確認できる装置です。
ChatGPTの機能をPico Wで利用して、天気に応じた洋服を提案するロボットを作ります。
書籍に登場するパーツ
以下は書籍に登場する7つのパーツとその特徴です。比較的リーズナブルで、扱いやすく入手性の良いパーツを選びました。
製品名 | 特徴 | 作例での用途 | 詳細 |
抵抗内蔵 5mm LED 5V 青色 | 抵抗を用意せずにそのまま使えるLED | 明るさで降水確率を表現 | 詳細を見る |
サーボモーター SG90 | 定番の小型サーボモーター | 表示器として活用 物理ボタンを押す | 詳細を見る |
フォトトランジスタ NJL7502L | 明るさを測定できる | 状態表示LEDの 点灯確認 | 詳細を見る |
赤外線障害物回避センサー | 障害物の有無を検知できる | カギの位置の判定 | 詳細を見る |
2.9インチ e-Paper タッチディスプレイ(白黒) | バックライトを使わない 紙のように見える電子ペーパー | カギの開閉状態を表示 | 詳細を見る |
0.96インチ 128×64ドット 有機ELディスプレイ(OLED) 白色 | 文字や図形、画像を表示できる 小型ディスプレイ | ロボットの顔 テキストの表示 | 詳細を見る |
静電容量式タッチセンサーTTP223B | 軽いタッチを検出可能 | 装置の動作開始条件に使用 | 詳細を見る |
監修は松岡貴志氏
本書の監修は、ラズパイ自由自在 電子工作パーツ制御完全攻略の著者である松岡貴志さんに担当していただきました。松岡さんの本を読んで、その知識の深さに感動したため、ぜひ監修を依頼したいと思いそれが実現したのです。
私一人の力では足りない部分が多かったのですが、松岡さんのご協力で大幅に本の品質が向上しました。お忙しい中にもかかわらず、私からの度重なる相談に丁寧に対応してくださったこと、ここで心から感謝の意を表します。
やった!動いた!をすべての人に
出版のお話をいただいてから1年間。「プログラミングや電子工作で遊ぶ楽しさを世界に伝える」という熱い想いを持ち、魂を込めて書いた1冊です。読者の方にパーツを動かせた感動を味わってもらいたくて、納得がいくまで何度も何度も書き直しました。
一般的な書店にはあまり置いていないので、通販での購入がおすすめです。
訂正情報
P.152のBlynkLib.pyについて、ライブラリ使用時にエラーが発生するため、以下のサイトから修正版のBlynkLib.pyをコピーして使用してください。
https://github.com/U-1F992/blynk-library-python/blob/master/BlynkLib.py
コメント一覧
はじめまして。コメント失礼いたします。
そぞらさんの著書を購入させていただき、日々勉強させていただいております。
Chapter 5の serve_rotation.py について質問がございます。サーボモーターを動かすプログラムを実行すると、途中でエラーが発生してプログラムが停止してしまいます。
もし可能でしたら、エラーの原因や解決策についてご教示いただけますと幸いです。
以下のエラー出力して停止してしまいます。
>> %Run -c $EDITOR_CONTENT
MPY: soft reboot
PROBLEM IN THONNY’S BACK-END: Exception while handling ‘Run’ (ConnectionError: read failed: [Errno 6] Device not configured).
See Thonny’s backend.log for more info.
You may need to press “Stop/Restart” or hard-reset your MicroPython device and try again.
Process ended with exit code 1.
Unable to connect to /dev/cu.usbmodem1201: [Errno 2] could not open port /dev/cu.usbmodem1201: [Errno 2] No such file or directory: ‘/dev/cu.usbmodem1201’
Process ended with exit code 1.
連絡が遅くなり申し訳ありません。
Chapter 5の serve_rotation.py について、エラーの原因ですが、エラーはThonnyがPico Wとの接続時に通信の問題を起こしている可能性があります。
Pico Wの再接続やThonnyの再起動を試してみてください。
また、他のプログラムが正常に動作するか試していただけると、問題の原因がより明確になるかもしれません。
よろしくお願いいたします。
初めまして、著書に大変お世話になっております
とても困った状況でして知恵をお貸しいただきたくコメントさせていただきます。
現在著書のサンプルコード(p61)を元にwi-fi機能を用いた電子工作を行っているのですが、PCに接続しthonnyを用いた場合正常に機能するにも関わらず、pcに接続しない電源供給のみの場合全く機能しません
以下に試行した事を記させていただきますので、もしよろしければアドバイスなどをいただけると幸いです
wifi機能を用いないプログラム、Lチカ(p49)をmain.pyに設定 → 問題なく起動
乾電池による起動、直流安定化電源での起動、USBケーブルおよびACアダプターの交換、最新ファームウェア再インストール→効果なし
別のpico wに1から書き込み→全く同じ症状
どうぞよろしくお願いします
はじめまして。著書をご愛読いただきありがとうございます。
現在の問題について、プログラムの進行状況を確認するための手段として、Pico W本体のLEDを用いたデバッグ方法を提案します。
以下の例では各ステップごとにLEDを異なる時間で点灯させる処理を追加しています。これにより、プログラムがどこまで進んでいるかを目視で確認できます。
from machine import Pin
import time
import network
led = Pin(“LED”, Pin.OUT)
# LED点灯でプログラムの進行を確認
def blink_led(duration):
led.on()
time.sleep(duration)
led.off()
time.sleep(1) # LED消灯後に短いスリープを追加
# 開始時に1秒間点灯
blink_led(1)
# 自宅Wi-FiのSSIDとパスワードを入力
ssid = “YOUR NETWORK SSID”
password = “YOUR NETWORK PASSWORD”
# Wi-Fi設定
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# Wi-Fi接続前に2秒間点灯
blink_led(2)
wlan.connect(ssid, password)
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print(‘接続待ち…’)
time.sleep(1)
if wlan.status() != 3:
# 接続失敗時に3秒間点灯
blink_led(3)
raise RuntimeError(‘ネットワーク接続失敗’)
else:
# 接続成功時に4秒間点灯
blink_led(4)
print(‘接続完了’)
status = wlan.ifconfig()
print(‘IPアドレス = ‘ + status[0])
このようにしてLEDの点灯時間を変えることで、プログラムがどの段階で停止しているのかを確認できます。問題のある箇所が特定できれば、より具体的な対応ができる可能性があります。
ありがとうございます、わかりやすいご説明のおかげでなんとか上手く動かせそうです
先ほどの返信につきまして、コードのインデントが崩れてしまっていますので、ご注意ください。