広告 IoT電子工作入門 電子工作

Raspberry Pi Pico 2Wで温湿度センサーDHT11を読む【第5回IoT電子工作】

※当サイトでは、一部の記事にアフィリエイト広告を掲載しています。

こんな方におすすめです

  • Pico 2Wで温湿度センサーを初めて使う方
  • センサーの読み取りエラーでプログラムが止まって困っている方
  • 測った温度と湿度をファイルに残したい方

センサーをつないで値を読むところまでは、うまくいきました。

ところがしばらく動かしていたら、急にエラーで止まっていました。

そんな経験はありませんか。

前回の第4回では、照度センサーの値をADCで読み取り、LEDの明るさを変えました。

今回は Grove の温湿度センサー、DHT11 を使います。

温度と湿度を読み取ってシェルに表示し、失敗しても止まらないプログラムに育てます。

最後に、読んだ値を CSV ファイルへ1行ずつ保存します。

DHT11 は安くて手に入りやすいセンサーですが、読み取りに失敗することがある前提で作られています。

そして失敗の種類によって、届くエラーの型が違います。

この記事では、MicroPython の公式ドライバを読んで分かったその違いまで踏み込みます。

第4回はこちらです。

この記事でわかること

  • Pico 2WとDHT11をMicroPythonで読む基本(measure() → temperature() / humidity())
  • アナログセンサーとデジタルセンサーの違い
  • DHT11が1本の線で数値を送るしくみと、チェックサムの役割
  • 読み取り間隔を2秒にする理由
  • try / except で「止まってほしくない場所」を守る書き方
  • ケーブル抜けとチェックサム不一致で、届くエラーの型が違うこと
  • 測った値を CSV ファイルに保存して、スプレッドシートで開く方法

Pico 2WでDHT11を使うのに必要な部品

今回使う部品は、Pico 2W、Grove Shield for Pi Pico、Grove 温湿度センサー(DHT11)、Groveケーブルです。

第4回まで使っていた LED と光センサーは、今回は使いません。

第5回で使うもの

  • Raspberry Pi Pico 2W
  • Grove Shield
  • Grove 温湿度センサー(DHT11)
  • Groveケーブル(4芯)
  • USBケーブル(データ通信対応のもの)

Grove 温湿度センサーには、DHT11 本体のほかにプルアップ抵抗が載っています。

プルアップ抵抗は、信号線をふだん電源側へ引き上げておくための抵抗です。

DHT11 を単体で買うと自分で抵抗を足す必要がありますが、Grove 版ならケーブルを挿すだけで済みます。

動作電圧は 3.3V と 5V の両方に対応しています。

Pico 2W・Grove Shield for Pi Pico・Grove温湿度センサー(DHT11)・Groveケーブルを配線前に並べた写真

dhtモジュールはファームウェアに入っている

ソフト側の準備はありません。

Pico 2W 用の MicroPython には、dht モジュールが最初から入っています。

海外や一部のキット教材では「dht.py を Pico にアップロードしてください」と書かれていることがあります。

ところが Pico 2W の Thonny のシェルで import dht を打つと、そのまま通りました。

公式ファームウェアに組み込まれているためです。

実際に Thonny のシェルで試したときの画面がこちらです。

>>> from machine import Pin
>>> import dht
>>> s = dht.DHT11(Pin(16))
>>> s.measure(); s.temperature(); s.humidity()
27
72Code language: JavaScript (javascript)

27℃、72% が返ってきました。

ただ、import dht が通っただけでは、まだ言い切れません。

Pico の中に誰かが置いた dht.py が残っていても、同じように通るためです。

MicroPython は、組み込みのモジュールより先に Pico の中のファイルを探します。

そこで、Pico の中身も確かめました。

>>> import os
>>> os.listdir("/")
['dht11_log.csv', 'main.py']
>>> os.listdir("/lib")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 2] ENOENTCode language: JavaScript (javascript)

Pico の一番上のフォルダ(/)に、dht.py はありません。

ライブラリ置き場としてよく使う /lib は、フォルダごとありませんでした(ENOENT は「そんなフォルダはありません」という意味です)。

つまり、動いているのはファームウェアに組み込まれた dht です。

MicroPython の本家リポジトリでも、Pico 系のファームウェアを作る設定ファイルに dht を組み込む指定が入っています。

追加のファイルを置く手間はないので、センサーを挿したらすぐ始められます。

ImportError が出る場合は、記事後半の「よくあるエラー」を見てください。

アナログセンサーとデジタルセンサーの違い

コードに入る前に、第4回の光センサーと比べておきます。

ここが分かると、DHT11 の扱い方が腑に落ちます。

第4回の光センサーが返していたのは電圧

第4回の照度センサーは、光の量を電圧の高さに変えて返していました。

その電圧を ADC(アナログ-デジタル変換)で読み取ると、0〜65535 の数が手に入りました。

ただし、この数はまだ「明るさ」ではありません。

しきい値を決めたりキャリブレーションしたりして、意味づけするのは私たちの仕事でした。

このように、電圧の高さで量を伝えてくるのがアナログのセンサーです。

DHT11は温度と湿度を数値のまま返す

DHT11 が返してくるのは、温度と湿度そのものです。

27℃、72% という数値が、そのまま届きます。

センサーの中で計算まで終わっているので、こちらで意味づけをする必要はありません。

このように、数値で返してくるのがデジタルのセンサーです。

面白いのは、信号線が第4回と同じ1本だという点です。

DHT11 は、その1本の線で High と Low を決まった形で並べて、数値を送っています。

第4回の光センサーは電圧をADCで0〜65535の数にして自分で意味づけし、第5回のDHT11は1本の信号線で27℃・72%の数値がそのまま届くことを比べた図

DHT11 の送り方(少しだけ詳しく)

  • DHT11 には、I2C や SPI にある「クロック線(今読んで、とタイミングを教えてくれる線)」がありません。
  • そのかわり High の長さで 0 と 1 を区別します。短い High(約26〜28マイクロ秒)が 0、長い High(約70マイクロ秒)が 1 です。
  • モールス信号のトンとツーに近い発想です。
  • 1回の読み取りで 40ビットを送ります。湿度の整数部・湿度の小数部・温度の整数部・温度の小数部・チェックサムが、8ビットずつ並びます。
  • マイクロ秒単位で長さを測るため、MicroPython でもこの部分は C で書かれた関数が担当しています。
  • 「1-Wire」と呼ばれることがありますが、Dallas社の 1-Wire 規格とは別物の、DHT11 独自の方式です。

チェックサムで正しく届いたかを確かめる

数値を線で送っていると、途中でノイズが乗って値が化けることがあります。

そこで DHT11 は、温度と湿度のうしろに確認用の数を付けて送ってきます。

これがチェックサムです。

DHT11 のチェックサムは、前の4つ(湿度の整数部・小数部、温度の整数部・小数部)を足した値です。

受け取った側でも同じ足し算をして、確認用の数と合えば正しく届いたと判断します。

合わなければ、そのデータは捨ててエラーにします。

つまり DHT11 は、読み取りに失敗することがある前提で作られています。

この話は、後半の try/except でもう一度出てきます。

DHT11は1秒に1回までしか測れない

センサーには、測れる間隔の上限があります。

DHT11 が測れるのは1秒に1回までです。

それより速く読むと、古い値や壊れた値が返ってきます。

この記事では、余裕を持って2秒間隔で読みます。

新しいセンサーを使うときは、データシートで「どのくらいの間隔で読めるか」を最初に確かめておくと安心です。

温度や湿度はそもそも急には変わらないので、2秒間隔でも困る場面はほとんどありません。

Pico 2WとDHT11の配線

配線は Grove ケーブルを1本挿すだけです。

センサーを Grove Shield のデジタルポート D16 に挿します。

第4回で LED を挿したのと同じポートです。

Pico 2WからUSBケーブルを抜きます。

Grove Shield をPico 2Wに取り付けます。

Grove 温湿度センサー(DHT11)をGroveケーブルでD16ポートに接続します。

USBケーブルでPCとつなぎ、Thonnyを起動します。

Grove コネクタは向きが決まっているので、逆差しの心配はありません。

第4回で「シールドの表記とピン番号がズレるのはアナログポートだけ」とお伝えしました。

デジタルポートの D16 は、コードでもそのまま Pin(16) と書けます。

Grove Shield for Pi PicoのD16ポートにGrove温湿度センサー(DHT11)を接続した配線写真

ここから、コードを4ステップで組み立てていきます。

コード①:Pico 2WでDHT11を1回読む

まずは1回だけ読んで、温度と湿度を表示します。

このコードは、DHT11 から値を受け取ってシェルに出すためのものです。

ポイントは、measure() と temperature() / humidity() の2段構えになっている点です。

from machine import Pin
import dht

# ── ピン設定 ──
DHT11_PIN = 16   # Grove D16 コネクタ

sensor = dht.DHT11(Pin(DHT11_PIN))

sensor.measure()
print(f"温度: {sensor.temperature()} ℃")
print(f"湿度: {sensor.humidity()} %")Code language: PHP (php)

実行すると、シェルに温度と湿度が1行ずつ表示されます。

温度: 27 ℃
湿度: 72 %Code language: HTTP (http)

measure()で受け取り、temperature()で取り出す

measure() は、センサーに「測って」と合図を出して、40ビットのデータを受け取る関数です。

チェックサムの確認もここで行われます。

temperature() と humidity() は、受け取って手元に置いてあるデータから値を取り出すだけです。

そのため、measure() を呼ばずに temperature() だけを何度呼んでも、値は新しくなりません。

最後に measure() したときの値が返り続けます。

「測る」と「取り出す」は別の仕事で、順番が決まっていると押さえておいてください。

ピン番号は DHT11_PIN という定数にまとめました。

コードの中に 16 と直接書くより、あとから別のポートへ挿し替えたときに直す場所が1か所で済みます。

小数点以下が出ないのは故障ではない

実行すると気づくのが、小数点以下が出ないことです。

27.3℃ ではなく 27℃ と返ってきます。

MicroPython の DHT11 用ドライバは、温度と湿度の整数部だけを返す作りになっています。

データの中には小数部の枠もありますが、ドライバはそこを読みません。

故障ではないので安心してください。

精度は、温度が ±2℃、湿度が ±5%RH です。

室温や湿度のおおよその変化を見る用途に向いたセンサーだと考えてください。

小数点以下まで細かく測りたい場合は、DHT20 や SHT31 のような上位のセンサーを選びます。

1回読めたので、次は読み続けてみます。

コード②:2秒ごとに温度と湿度を読み続ける

このコードは、コード①を while True のループに入れて、2秒ごとに読み続けるためのものです。

ポイントは、間隔を INTERVAL_SEC という定数にまとめた点です。

from machine import Pin
import dht
import time

# ── ピン設定 ──
DHT11_PIN = 16   # Grove D16 コネクタ

# ── 読み取り間隔 ──
INTERVAL_SEC = 2   # DHT11 は1秒に1回まで

sensor = dht.DHT11(Pin(DHT11_PIN))

while True:
    sensor.measure()
    print(f"温度: {sensor.temperature()} ℃  湿度: {sensor.humidity()} %")
    time.sleep(INTERVAL_SEC)Code language: PHP (php)

実行すると、2秒ごとに1行ずつ温度と湿度が流れていきます。

止めるときは Thonny の停止ボタンを押してください。

INTERVAL_SEC を1秒より短くすると、先ほどの制約に引っかかって値が壊れます。

数字を直接書かずに名前とコメントを付けておくと、半年後の自分が「なぜ2なのか」をたどれます。

手で包むと湿度がゆっくり上がる

動かしたまま、センサーを手で包んでみました。

シェルの湿度の値が、少しずつ上がっていきます。

手のひらから出る水分で、センサーのまわりの湿度が上がるためです。

ただ、DHT11 の反応はかなりゆっくりです。

私が試したときは、手で包んでから値が動き出すまでに数秒、上がりきるまでに十数秒かかりました。

すぐに変わらないからといって、配線ミスを疑わなくて大丈夫です。

手を離すと、こちらもゆっくり元の値へ下がっていきます。

温度は、手で包んだ程度では1〜2℃しか動きません。

変化を目で確かめたいときは、湿度のほうが分かりやすいです。

さて、このコード②をしばらく動かしていると、ある問題が起きます。

コード③:try/exceptで読み取りエラーでも止まらないようにする

コード②を動かしたまま、Grove ケーブルを抜いてみてください。

シェルに赤い文字でエラーが出て、プログラムが止まります。

Traceback (most recent call last):
  File "<stdin>", line 22, in <module>
  File "dht.py", line 1, in measure
OSError: [Errno 110] ETIMEDOUTCode language: JavaScript (javascript)

最後の行は、センサーから返事が来ないまま時間切れになった、という意味です。

その上の2行は、エラーが起きた場所です。

sensor.measure() の中、つまり dht モジュールの読み取り処理で止まったことが分かります。

line 22 は GitHub に置いたコード②の行番号です。記事のコードは説明用に短くしているので、行番号はずれます。

失敗の原因はケーブル抜けだけではありません。

めったに起きませんが、配線が長いときやノイズが乗ったときは、届いたデータが壊れることがあります。

チェックサムが合わなかったときです。

長時間の記録中に、たった1回の失敗で全部止まってしまうのは困ります。

そこで try / except を足します。

このコードは、読み取りの失敗を受け止めて、次の読み取りへ進むためのものです。

ポイントは、失敗の種類ごとに except を分けている点です。

from machine import Pin
import dht
import time

# ── ピン設定 ──
DHT11_PIN = 16   # Grove D16 コネクタ

# ── 読み取り間隔 ──
INTERVAL_SEC = 2   # DHT11 は1秒に1回まで

sensor = dht.DHT11(Pin(DHT11_PIN))

while True:
    try:
        sensor.measure()
        print(f"温度: {sensor.temperature()} ℃  湿度: {sensor.humidity()} %")
    except OSError as e:
        # 応答なし(ケーブル抜け・配線不良など)
        print("センサーから応答がありません:", e)
    except Exception as e:
        # チェックサム不一致だけ受け止める。それ以外は止める
        if str(e) != "checksum error":
            raise
        print("データが正しく届きませんでした:", e)
    time.sleep(INTERVAL_SEC)Code language: PHP (php)

実行したままケーブルを抜くと、「センサーから応答がありません」の行だけが出て、プログラムは動き続けます。

挿し直すと、何事もなかったように温度と湿度が戻ってきます。

チェックサムが合わなかったときは、「データが正しく届きませんでした」の行が出て、やはり次の読み取りへ進みます。

ケーブル抜けとチェックサム不一致はエラーの型が違う

ここで、この記事でいちばん伝えたいノウハウがあります。

DHT11 の読み取り失敗は、原因によって届くエラーの型が違います。

  • ケーブル抜け・配線不良(センサーが返事をしない)→ OSError
  • チェックサム不一致(返事は来たが中身が壊れていた)→ Exception("checksum error")
measure()の失敗が、ケーブル抜けならOSError、チェックサム不一致ならExceptionに分かれ、Exception側はchecksum errorのときだけ次へ進み、それ以外はraiseで止まる流れの図

私は最初、どちらも OSError で届くと思い込んでいました。

DHT11 のサンプルコードの多くが except OSError だけを書いているためです。

ところが MicroPython の公式ドライバを読むと、違いました。

micropython-lib の dht.py にある measure() の中身がこちらです。

def measure(self):
    buf = self.buf
    dht_readinto(self.pin, buf)
    if (buf[0] + buf[1] + buf[2] + buf[3]) & 0xFF != buf[4]:
        raise Exception("checksum error")Code language: PHP (php)

2行目の dht_readinto() が、C で書かれた受信処理です。

センサーから返事が来ないと、ここが OSError を投げます。

受信できたあとの3行目が、座学で説明したチェックサムの確認です。

前の4つを足して下位8ビットを取り、5つ目と比べています。

合わなかったときに投げているのは、OSError ではなく、ただの Exception です。

そのため except OSError だけでは、チェックサム不一致を受け止められません。

ケーブルを抜く実験ではうまく動いて見えます。

ところが、めったに起きないチェックサム不一致が長時間の記録中に1回でも起きると、そこでプログラムが止まります。

私の実機テストでも、チェックサムエラーはまだ一度も出ていません。

めったに出ないからこそ短いテストでは気づけない、やっかいな落とし穴です。

try/exceptは「止まってほしくない場所」を守る道具

では、チェックサム用に except Exception: と書けば、それで終わりでしょうか。

ここで大事な考え方がひとつあります。

try/except は、エラーを隠すための道具ではありません。

止まってほしくない場所を守るための道具です。

Exception は、ほとんどすべてのエラーの親にあたる型です。

そのまま受け止めると、変数名の打ち間違いのような本当のバグまで飲み込んでしまいます。

プログラムは止まらないのに、なぜか値が出ない、という原因の分かりにくい状態になります。

そこでコード③では、Exception を受け止めたあと、メッセージが "checksum error" かどうかを確かめています。

チェックサム不一致なら表示して次へ進み、それ以外なら raise でエラーをそのまま投げ直します。

想定している失敗だけを受け止め、想定していない失敗はこれまでどおり止める、という線引きです。

OSError を先に書いているのにも理由があります。

except は上から順に調べられ、最初に当てはまったものだけが実行されます。

OSError も Exception の仲間なので、順番を逆にすると、ケーブル抜けまで Exception 側に吸い込まれてしまいます。

細かい型を上、大きな型を下に書くのが基本です。

止まらないプログラムになったので、最後は読んだ値を残していきます。

コード④:温度と湿度をCSVファイルに保存する

シェルに流れる値は、Thonny を閉じると消えてしまいます。

そこで、読んだ値を Pico 本体のフラッシュ(電源を切っても消えない記憶領域)に CSV ファイルとして保存します。

CSV は、値をカンマで区切って並べただけの文字のファイルです。

Excel や Google スプレッドシートでそのまま表として開けます。

このコードは、コード③の try の中にファイルへの書き込みを足したものです。

ポイントは、ファイルの開き方 "w" と "a" の使い分けです。

from machine import Pin
import dht
import time

# ── ピン設定 ──
DHT11_PIN = 16   # Grove D16 コネクタ

# ── 読み取り間隔 ──
INTERVAL_SEC = 2   # DHT11 は1秒に1回まで

# ── 保存先 ──
LOG_FILE = "dht11_log.csv"

sensor = dht.DHT11(Pin(DHT11_PIN))

with open(LOG_FILE, "w") as f:
    f.write("sec,temp,humidity\n")

start_ms = time.ticks_ms()

while True:
    try:
        sensor.measure()
        temp = sensor.temperature()
        humi = sensor.humidity()
        elapsed_sec = time.ticks_diff(time.ticks_ms(), start_ms) // 1000
        with open(LOG_FILE, "a") as f:
            f.write(f"{elapsed_sec},{temp},{humi}\n")
        print(f"{elapsed_sec}秒  温度: {temp} ℃  湿度: {humi} %")
    except OSError as e:
        # 応答なし、またはファイルの書き込み失敗
        print("読み取りか保存に失敗しました:", e)
    except Exception as e:
        if str(e) != "checksum error":
            raise
        print("データが正しく届きませんでした:", e)
    time.sleep(INTERVAL_SEC)Code language: PHP (php)

実行すると、シェルに経過秒つきで温度と湿度が表示され、同じ内容が dht11_log.csv に1行ずつ追記されていきます。

"w"は作り直し、"a"は追記

最初に "w" でファイルを開いて、1行目に見出しを書いています。

"w" は、ファイルを新しく作り直す開き方です。

同じ名前のファイルがあれば、中身は消えて空になります。

実行するたびに新しい記録から始まるのはこのためです。

ループの中では "a" で開いています。

"a" は、ファイルのうしろに書き足していく開き方です。

with を使っているので、1行書くたびにファイルが閉じられます。

途中で止めたり電源が落ちたりしても、それまでに書いた行は残ります。

容量不足などによるファイルの書き込み失敗も OSError で届くので、コード③の except OSError がそのまま受け止めてくれます。

ここに注意

記録を残したいときは、実行前にファイル名を変えるか、前回の CSV を PC へダウンロードしておきましょう。

"w" で開き直すと、前回の記録は消えます。

時刻の列を経過秒にした理由

時刻の列は、日時ではなく、動かし始めてからの経過秒にしました。

Pico 2W は、PC につながずに電源だけで動かすと、正しい日時を知る手段がないためです。

time.ticks_ms() で起動からのミリ秒を取り、ticks_diff() で開始時点との差を出しています。

引き算ではなく ticks_diff() を使うのは、ticks_ms() の値が一定の大きさで0に戻る(桁あふれする)ためです。

正しい日時を記録したい場合は、Wi-Fi を扱う回で紹介する、ネット経由の時刻合わせ(NTP)を使います。

見出しを sec,temp,humidity と英語にしたのは、Excel で開いたときの文字化けを避けるためです。

MicroPython が書き出すのは、BOM(ファイルの先頭に付けて文字コードを知らせる印)なしの UTF-8 です。

日本語版の Excel は、この印がないファイルを Shift-JIS として読んでしまいます。

CSVをダウンロードしてスプレッドシートで開く

保存した CSV を PC へ取り出して、表として開いてみます。

Thonny の停止ボタンを押して、プログラムを止めます。

左のファイル欄(Raspberry Pi Pico 側)に dht11_log.csv があることを確かめます。

dht11_log.csv を右クリックして、PC へダウンロードします。

Google スプレッドシートを新しく作り、「ファイル」→「インポート」→「アップロード」で CSV を読み込みます。

プログラムが動いている間は、Thonny からファイルを取り出せません。

必ず停止ボタンで止めてから操作してください。

dht11_log.csvをGoogleスプレッドシートで開き、経過秒・温度・湿度が表になって並んでいる画面

経過秒・温度・湿度が表になって並びました。

よく見ると、経過秒がときどき3秒あいています。

読み取りと保存にも少し時間がかかるため、2秒ぴったりにはなりません。

Excel をお持ちの方は、ダウンロードした CSV をダブルクリックするだけでも開けます。

このデータは、第11回でグラフにする予定です。

今回は「貯める」ところまでにしておきます。

DHT11が読めないときのよくあるエラーと解決策

import dht で ImportError が出ます。dht.py をアップロードする必要がありますか?

公式の Pico 2W 用ファームウェアには dht が組み込まれているので、dht.py のアップロードは要りません。

このエラーが出る場合は、古い版や別ボード用のファームウェアが入っている可能性があります。

第2回の手順で、公式の最新ファームウェアを入れ直してください。

温度や湿度の値がずっと同じままです。壊れていますか?

ループの中で毎回 measure() を呼んでいるかを確かめてください。

temperature() と humidity() は、最後に measure() したときの値を返すだけです。

コードが正しい場合は、DHT11 の反応が遅いだけのこともあります。

手で包んで十数秒待ち、湿度が動くかを見てみてください。

まとめ:Pico 2WとDHT11の要点をおさらい

  • DHT11 は、1本の信号線で温度と湿度を数値のまま返すデジタルのセンサーです
  • 届いた値はチェックサムで確かめています。失敗の種類で、届くエラーの型が変わります
  • 応答なしは OSError、中身が壊れたときは Exception("checksum error") です
  • 想定した失敗だけを try/except で受け止めると、止まらずに CSV へ記録し続けられます

特に覚えておいてほしいのは、エラーの型の違いです。

ネットのサンプルをそのまま使うと、短いテストでは気づかない止まり方をすることがあります。

「どんな失敗が、どの型で届くのか」を一度ドライバで確かめておくと、長く動かすプログラムが安心して書けます。

次回予告

次回は、読んだ温度と湿度を LCD に表示します。

今回は信号線が1本でした。

次回は2本になり、I2C という通信方式が登場します。

2本になると何が嬉しいのかを見ていきます。

シリーズ一覧

IoT電子工作入門 電子工作

Raspberry Pi Pico 2Wで温湿度センサーDHT11を読む【第5回IoT電子工作】

2026/10/27

こんな方におすすめです Pico 2Wで温湿度センサーを初めて使う方 センサーの読み取りエラーでプログラムが止まって困っている方 測った温度と湿度をファイルに残したい方 センサーをつないで値を読むとこ ...

IoT電子工作入門 電子工作

Raspberry Pi Pico 2Wで照度センサーLED調光【第4回IoT電子工作】

2026/9/26

こんな方におすすめです Pico 2Wで照度センサーを初めて使う方 ADCとPWMのつながりを手を動かして理解したい方 暗くなるとLEDが自動で明るくなる仕組みを作りたい方 「Lチカはできた。次は何を ...

IoT電子工作入門 電子工作

Raspberry Pi Pico 2Wでボタン入力・LED制御【第3回IoT電子工作】

2026/9/26

第3回 IoT電子工作入門講座 RaspberryPi Pico 2Wでボタン入力・LED制御動画はこちら https://youtu.be/gZcQWe1X1FU?si=qtHp0hmu1m_js9 ...

IoT電子工作入門 電子工作

Raspberry Pi Pico 2Wの環境構築とLチカ【第2回IoT電子工作】

2026/8/30

前回の第1回記事では、Raspberry Pi Pico 2Wの基本的な特徴と必要な機材について解説しました。 https://thunderblog.org/electronic_work/rasp ...

IoT電子工作入門 電子工作

Raspberry Pi Pico 2Wを始める準備【第1回IoT電子工作】

2026/8/30

そんなあなたに。 私は製造業でエンジニアとして18年以上働いており、実際の現場でIoTシステムの導入やデータ分析を担当してきました。 その経験を活かして、初心者の方でも確実にステップアップできるよう、 ...

動画で手順を見たい方はこちらです。

サンプルコードはこちらです:

GitHubのサンプルコード置き場

  • この記事を書いた人
SNSアイコン

サンダー

電気機器メーカーに就職し、ハードエンジニアとして勤務しています。 ブログでは電気、プログラミング、データサイエンスについて書いています。 電気×プログラミング×データサイエンスの3本柱で日本の製造業を盛り上げたいです!

-IoT電子工作入門, 電子工作
-, , , , , ,