Raspberry Pi Pico W (ソーラー駆動) リモート・ウェザーステーション

Raspberry Pi Pico W softap ウェザーステーション

Raspberry Pi Pico Wの特別な機能のひとつにSoftAP機能がある。

SoftAPはソフトウェア対応アクセスポイントの略で、Raspberry Pi Pico WからWiFiネットワークをブロードキャストすることができます。

これが、私たちがこのソーラー・プロジェクトを選んだ理由だ。

太陽光発電プロジェクトとSoftAPの交わり方

これが問題だ。

もし、自宅から離れた場所でデータを測定するプロジェクトを作りたかったら、そのデータをワイヤレスで取得できないことに気づくだろう。

このシナリオでは、ワイヤレス機能が使えないので、通常のピコを使った方がいいかもしれない。

太陽光発電プロジェクトは、日光を浴びる場所、つまり通常は屋外に設置する必要があることから、おそらくそのひとつだろう。

そこでSoftAPの出番だ。例えば、外の天気を知りたいとしよう。そしてRaspberry Pi Pico WがブロードキャストしているSoftAPに接続し、データを表示するIPアドレスにログインする。

これは、Raspberry Pi Pico Wの長所をどのように生かすことができるかという、ほとんど最良のシナリオだ。

つまり、LTEアドオンや長距離無線アドオンを購入することは可能だが、その場合はピコWのチュートリアルとは言えない。

Raspberry Pi Pico WのBluetoothはどうですか?

Bluetoothが使えれば最高ですが、このチュートリアルが公開された時点では、Raspberry Pi Pico WではBluetoothは有効になっていません。

2022年7月1日、Raspberry Piエンジニア兼フォーラム・モデレーターのjamesh氏は、「我々はすでにBTのソフトウェアに着手している。ソフトウェアのテストとチュートリアルの作成が必要です。"

部品

ブレッドボードの底にソーラーパネルを設置した完成品

Raspberry Pi Pico Wのファームウェアをアップデートする

Raspberry Pi Pico Wのファームウェアは常に進化しているので、最新のファームウェアを使うのがベストでしょう。例えば、最初に公開されたPico W用のMicroPython UF2には、ネットワークが常にオープンであるため、セキュリティにいくつかの問題があります。

このリンクから更新方法をご覧ください。 このリンクでは、独自のWiFiネットワークをブロードキャストするためのクイックスタート方法も紹介している。

ソーラーセットアップ

Pico Wに電力を供給するソーラーパネルは、少なくとも6Vと150mAを出力する必要がある。

ソーラーパネルは少なくとも6ボルト、150mAを出力する必要がある。

バッテリーは公称電圧3.7Vの18650シリーズのリチウムバッテリーでなければならない。

TP4056 USB-C充電モジュール

TP4056モジュールはバッテリーを保護し、Pico Wに電力を供給する。

天候追跡装置

pi3gによるBME688ブレークアウトボード。

このプロジェクトでは 自社設計のBME688ブレークアウトボード。

DHT11やDHT22など、どんなウェザーセンサーでも使えますが、この記事のコードと配線は、実際にはBME688用です。

配線

Pico WとBME688をブレッドボードに置きます。

接続するピンは 4 つある:BME688の3.3V、GND、SCL、SDAです。

これが私たちが使ったものだ:

ピコW's GP1 に接続する。 SCL;

GP0 に接続する。 エスディーエー;

GND に接続する。 GND;

これら3つのピンは、マイクロUSBスロットの隣に並んでいるはずだ。

3V3 に接続する。 3V3これはボードの反対側にある。

TP4056 USB-C充電モジュール

TP4056にワイヤーをはんだ付けする必要があります。

プラス接続には赤、マイナス接続には黒のワイヤーをはんだ付けするのが良い方法だ。

Raspberry Pi Pico Wソーラーパネル・プロジェクト

USB-Cコネクタの隣にあるピンは、ソーラーモジュールのような外部電源接続用だ。

これらのピンをソーラーパネルに接続する。

反対側には、電源出力用のピンがある。B+とB-と書かれたピンはバッテリーに接続する必要がある。

回路を変更する必要がある場合に備えて、バッテリーホルダーとTP4056をクランプで接続することにしたが、バッテリーホルダーをTP4056に直接ハンダ付けすることもできる。

ショットキーダイオード

Pico W の VSYS ピンにショットキーダイオードを接続する。

ダイオードのグレーのリングがピコWの方を向いていることを確認し、もう一方の端がブレッドボードのプラス・レールに接続されていることを確認する。

USBとソーラーシステムの2つの電源入力でPicoに電力を供給するので、ショットキーダイオードを使う必要がある。

ショットキーダイオード 逆電源を防ぎ、2つの電圧で使用できます。詳細はこちら。

TP4056をブレッドボードに接続する

太陽電池駆動のRaspberry Pi Pico W完成!
太陽電池駆動のRaspberry Pi Pico W完成!

TP4056のプラス出力を、ショットキーダイオードがあるブレッドボードのプラスレールに接続する。

次に、TP4056のマイナス出力をRaspberry Pi Pico Wのマイナスピンに接続する。

Raspberry Pi Pico W ウェザーステーションを動かすコード

すべてのコードを Githubリポジトリはこちら。

以下は Pico Wにファイルをアップロードする方法のガイドです。

上記のようにコンポーネントを接続すれば、コードを変更することなく実行できる。

とはいえ、変更したほうがいい点がいくつかある。

bme68x.py

このスクリプトはBME688の出力を変更する。

正確な温度と高度の測定値を得るには、太字で強調されているこれらの行を修正する必要がある:

 # change this to match the location's pressure (hPa) at sea level
        # bme68x.sea_level_pressure = 1013.25
       <strong> self.bme68x.sea_level_pressure = 1013</strong>

        # You will usually have to add an offset to account for the temperature of
        # the sensor. This is usually around 5 degrees but varies by use. Use a
        # separate temperature sensor to calibrate this one.
        <strong>self.temperature_offset = -9</strong>

main.py

main.pyファイルはアクセスポイントを起動し、接続した人にHTMLファイルを配信するサーバーも実行します。

HTMLファイルでは、BME688の測定値を見ることができます。

ソケット経由で)接続を受けると、Pico Wはindex.htmlファイルを送信しますが、送信する前にBME688から取得したデータでいくつかの文字列を置き換えます:

data = {
    'T': 0,
    'P': 0,
    'A': 0,
    'H': 0,
    'G': 0,
    }
...
def get_html(html_name):
    with open(html_name, 'r') as file:
        html = file.read()
        
    return html
...
sensor = bme68x.BME68X()
... 
response = get_html('index.html')
    data = sensor.save_data('data.json')
    blink_onboard_led(1, 0.2)
    response = response.replace('id_temp', str(data['T']))
    response = response.replace('id_pres', str(data['P']))
    response = response.replace('id_alti', str(data['A']))
    response = response.replace('id_humi', str(data['H']))
    response = response.replace('id_gas', str(data['G']))
    print_data(data)
    conn.send(response)
    conn.close()

ご覧のように、次のように書かれています。 data = sensor.save_data('data.json') センサーのデータを取得し、温度、圧力、高度、湿度、ガス伝導率の正しい測定値をHTMLファイルに修正する。

3秒ごとに自動更新される。

以下は、Raspberry Pi Pico Wでアクセスポイントをブロードキャストするために必要なコードのブロックです:


essid = 'Pico-W-Weather-Station'
password = '#FreeThePicoW'

ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=essid, password=password)

while ap.active() == False:
    pass

print('Connection successfull')
print(ap.ifconfig())

# Create sensor object
sensor = bme68x.BME68X()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(3)
blink_onboard_led(3, 0.2)

注:オリジナルのファームウェアを使用している場合、アップデートしないとSSIDのリネームやワイヤレスセキュリティができなくなります。2022年7月15日のナイトリービルドでテストしたところ、ようやくうまくいきました。 他にもいくつかの癖やバグがあるので、こちらのチュートリアルをぜひ読んでほしい。

こちらをクリックしてください。 WiFiネットワークのブロードキャスト(SoftAPアクセスポイント)

Pico Wアクセスポイントへの接続

APのブロードキャストに成功すると、Pico Wは提供されたコードで3回点滅します。

APに接続する。 ピコ・ウェザー・ステーション

パスワードを入力する #FreeThePicoW

IPアドレスを使ってPicoに接続する。Thonnyから実行した場合は、シェルにIPアドレスが表示されます。

そうでなければ、次のことを試してみてほしい。 192.168.4.1 これがPico WのIPアドレスで、右のスクリーンショットが表示されるはずです:

もう終わりだ

このプロジェクトでは、Raspberry Pi Pico WのSoftAP機能からネットワークをブロードキャストする方法を学びました。また、ソーラーパネルとバッテリーをPico Wに接続する方法も学びました。

ピコWについてもっと知りたいなら、 メガ記事はこちら

こちらをクリックしてください。 Raspberry Pi Pico Wについて知っておくべきすべてのこと

7コメント

  1. Carlos on 7月 25, 2022 at 8:34 am となります。

    TP4056のスペックには、電圧入力を5.5Vか6Vに保つようにと書いてある。私はこの点について混乱しています。明確にしていただけますか?

    ありがとうございます。

  2. Bigalbo on 7月 28, 2022 at 8:12 am となります。

    私はこのプロジェクトを実行し、非常に正確な測定値を得ることができた。しかし、10~15分ほどしか動作せず、その後停止してしまうという問題が発生しました。jsonファイルを削除すれば、再び動作するようになります。
    データを保存せず、データだけを送信する方法はありますか?
    よくやったと言わざるを得ない。

    • Nabla on 8月 8, 2022 at 1:14 pm となります。

      bme68x.py のメソッド save_data が Jason ファイルに行を追加し続けます。ある時点で大きくなりすぎているのでしょう。ファイルを保存する前に、data_listの最後のx行だけを保存するように変更することができます。そうすればファイルは十分小さくなる。

  3. Thomas on 9月 6, 2022 at 11:31 am となります。

    4.104文字の後、「data.json」は小さなピコのメモリーをいっぱいにする。

    質問:上記のプロジェクトを機能的に仕上げるために、これをどのように制限するか?
    例やコードの追加(アップデートとして)があれば非常にありがたい!

    TiA-そして良い仕事を続けてくれ...。
    追記:GitHub Repoの対応するIssueも公開された。

  4. BigMac on 9月 14, 2022 at 6:43 pm となります。

    このようなプロジェクトにTP 4056を使用するのは効果的な解決策ではない:
    https://www.best-microcontroller-projects.com/tp4056.html

    建設的なデザインは、WaveshareのようなMPTTセットスイッチを使うことだろう、
    説明はこちら:
    https://www.waveshare.com/solar-power-manager.htm

    乾杯

  5. Mark Beans on 7月 9, 2023 at 9:01 pm となります。

    素晴らしいプロジェクトのアイデアだ!どなたか3Dプリントでケースをデザインした方、いらっしゃいませんか?

  6. Pavlo on 2月 22, 2024 at 11:32 am となります。

    こんにちは。
    マニュアルをありがとう。
    TP4056仕様に基づく LED色:赤(待機時)、LED色:青(待機時、待機時なし)
    私の場合、ソーラーパネルを直射日光の下に置くと、TP4056のLEDが両方ともオンになります。これは意図的なものですか?
    バッテリーをソーラーから充電し、同時にピコに電力を供給することは可能ですか?

コメントを残す