注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!仲間たちと一緒にRaspberry Pi、Arduino、ESP32についてさらに深く学びましょう。

参加する理由は?

  • 専門家のサポート: コミュニティやチームの助けを借りて、購入後の問題や技術的な課題を解決できます。

  • 学びと共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。

  • 限定プレビュー: 新製品の発表や先行情報をいち早く手に入れましょう。

  • 特別割引: 最新製品の特別割引をお楽しみください。

  • イベント・プレゼント: プレゼント企画や祝日セールに参加しましょう。

👉 一緒に探求し、創造を楽しみませんか?[ここ]をクリックして、今すぐ参加しましょう!

8.2 @CheerLightsに従う

このプロジェクトはロマンチックなものです。 @CheerLights - Twitter LEDの色が世界中のLEDを同時に変えるコミュニティに参加しましょう。

オフィスの一角に置いて、あなたが一人ではないことを思い出させてくれます。

Twitterで@cheerlightsをつぶやき、色の名前を含めることで、世界中のLEDの色を指定した色に変更できます。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

キット一式を購入するのが便利です。こちらのリンクから購入できます:

名前

このキットに含まれるアイテム

リンク

Pico 2 W スターターキット

450以上

Pico 2 W Kit

別々に購入することもできます。以下のリンクから購入可能です。

SN

コンポーネント

数量

リンク

1

Pico 2 Wの概要

1

2

Micro USBケーブル

1

3

ブレッドボード

1

買う

4

ジャンパーワイヤー

複数

買う

5

WS2812 RGB 8LEDストリップ

1

買う

6

Li-Po充電モジュール

1

7

18650バッテリー

1

手順

  1. 回路を組み立てます。

    ここで使用するLi-po充電モジュールは回路に電力を供給するため、USBケーブルを外してプロジェクトを別の場所に持っていって楽しむことができます!

    警告

    Li-po充電モジュールが図のように接続されていることを確認してください。そうしないと、短絡が原因でバッテリーや回路が損傷する可能性があります。

    ../../_images/2.cheerlights_bb.png
  2. 前にダウンロードした`コードパッケージ code package のフォルダに移動し、 8.2_cheer_light.py ファイルを開きます。

  3. スクリプトを実行するには、 現在のスクリプトを実行 ボタンをクリックするか、F5を押してください。その後、接続のプロンプト、IPアドレス、色(0xff0000は赤)がシェルに表示されます。

    注釈

    コードを実行する前に、Pico 2 Wに do_connect.pysecrets.py スクリプトを作成する必要があります。作成方法については 8.1 ネットワークへの接続 を参照してください。

    ../../_images/2_cheerlight1.png
  4. グローバルな@CheerLightsデバイスを制御

    • Discordサーバー に参加し、CheerLightsボットを使用して色を設定します。 CheerLights Discordサーバー のいずれかのチャンネルで /cheerlights と入力すると、ボットが起動します。

    ../../_images/05_iot_cheerlights_1.png
    • ボットの指示に従って色を設定します。これにより、CheerLightsデバイスを世界中で制御できます。

    ../../_images/05_iot_cheerlights_2.png
  1. スクリプトが実行された後、WS2812 RGBストリップは色を表示し、時々色が変わります。

  2. このスクリプトを起動時に実行したい場合は、 main.py としてRaspberry Pi Pico 2 Wに保存する必要があります。次の手順に従ってください。

    • スクリプトの実行を停止し、 ファイル -> 名前を付けて保存 をクリックします。

      ../../_images/2_cheerlight2.png
    • ポップアップウィンドウで Raspberry Pi Pico を選択します。

      ../../_images/2_cheerlight3.png
    • ファイル名を main.py に設定します。同じファイルがPico 2 Wに既に存在している場合、確認のプロンプトが表示されます。

      ../../_images/2_cheerlight4.png
    • USBケーブルを外し、Li-po充電モジュールを使ってRaspberry Pi Pico 2 Wに電力を供給できます。これを一角に置けば、Picoは自動的に動作します。

仕組みは?

このプロジェクトはネットワーク接続を必要とし、 network モジュールを使用してネットワークに接続します。 network モジュールの使用方法については 8.1 ネットワークへの接続 を参照してください。

from secrets import *
from do_connect import *
do_connect()

from do_connect import * : これは do_connect() 関数をインポートし、その中にWi-Fi接続を管理するロジックが含まれています。 do_connect() 関数が呼び出されると、 secrets.py に指定されたWi-Fiネットワークに接続します。接続に失敗した場合は例外を発生させ、成功すれば次のステップに進みます。

from secrets import * : これは通常、Wi-FiのSSID、パスワード、およびその他の機密情報(APIキーなど)を格納するために使われる独立したファイルであり、機密情報をメインのコードファイルに直接埋め込まないようにします。

WS2812 RGBストリップを設定する方法については、 3.3 RGB LEDストリップ を参照してください。

import machine
from ws2812 import WS2812
ws = WS2812(machine.Pin(18), 8)

次に、@CheerLightsの色を取得する方法を説明します。Twitterからの色変更を受け取るバックエンドシステムがあり、その変更をJSON形式でURL: http://api.thingspeak.com/channels/1417/field/2/last.json に投稿します。

このURLを直接ブラウザで開くと、次のような内容が表示されます。必要なのは field2 データで、これは16進数の色コード文字列です。

{"created_at":"2022-08-16T06:12:44Z","entry_id":870488,"field2":"#ff00ff"}

urequests モジュールを使用してこのデータを取得し、 json モジュールを使用してPythonの辞書に変換します。 以下のコードは最新の@CheerLights色をURLから取得し、WS2812で使用できる色値を返します。

def get_colour():
    url = "http://api.thingspeak.com/channels/1417/field/2/last.json"
    try:
        r = urequests.get(url)
        if r.status_code > 199 and r.status_code < 300:
            cheerlights = json.loads(r.content.decode('utf-8'))
            print(cheerlights['field2'])
            colour = int('0x'+cheerlights['field2'][1:7])#文字列から整数に変換
            r.close()
            return colour
        else:
            return None
    except Exception as e:
        print(e)
        return None

最後に、5秒ごとにWS2812を動作させるループを作成します。

while True:
    colour = get_colour()
    if colour is not None:
        ws.write_all(colour)
    time.sleep(5)