注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
2. @CheerLightsに参加する
これはロマンチックなプロジェクトで、 @CheerLights - Twitter LEDのカラーチェンジングコミュニティに参加するものです。このコミュニティでは、世界中のLEDが同時に色を変えることができます。
オフィスの隅に置いて、「自分は一人ではない」と感じるためのリマインダーとしても使用できます。
@cheerlightsにツイートを送り、そのツイート内に色の名前を含めると、世界中のLEDが指定した色に変わります。
必要な部品
このプロジェクトで必要な部品は以下の通りです。
一式をまとめて購入するのが便利ですが、その場合のリンクはこちらです。
名前 |
このキットの内容 |
リンク |
|---|---|---|
ケプラーキット |
450以上 |
下記のリンクから個々に購入することも可能です。
SN |
部品 |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1 |
||
6 |
1 |
||
7 |
18650バッテリー |
1 |
|
8 |
バッテリーホルダー |
1 |
手順
回路を組み立てます。
以前に コードパッケージ をダウンロードしたフォルダにパスを切り替え、「kepler-kit-main/iot」のパスの下で
2_cheer_light.pyファイルを開きます。スクリプトを実行するには、 Run current script(現在のスクリプトを実行) ボタンをクリックするか、F5キーを押します。その後、Shellに接続プロンプト、IP、色(0xff0000は赤)が表示されます。
注釈
コードを実行する前に、Pico Wに
do_connect.pyとsecrets.pyのスクリプトがあることを確認してください。もし無ければ、 1. ネットワークへのアクセス を参照してそれらを作成してください。
スクリプトが実行された後、WS2812 RGBストリップは色を表示しますが、時抗その色は変わります。
起動時にこのスクリプトを実行する場合、以下の手順に従ってRaspberry Pi Pico Wに
main.pyとして保存する必要があります。スクリプトの実行を停止し、 File(ファイル) -> Save as(名前を付けて保存) をクリックします。
ポップアップウィンドウで Raspberry Pi Pico を選択します。
ファイル名を
main.pyに設定します。同じファイルがすでにPico Wに存在する場合は、プロンプトが表示されます。
USBケーブルを抜いて、Li-po Charger ModuleでRaspberry Pi Pico Wに電力を供給することができます。角に置いておけば、自動的に動作します。
仕組み
Raspberry Pi Pico Wは、 1. ネットワークへのアクセス で説明されているように、インターネットに接続する必要があります。このプロジェクトでは、そのまま使用します。
from do_connect import *
do_connect()
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の辞書に変換します。
次のコードは、URLから最新の@CheerLightsの色を取得し、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])#Convert from String to Integer
r.close()
return colour
else:
return None
except Exception as e:
print(e)
return None
最後に、1分ごとにws2812が動作するようにループを使用します。
while True:
colour = get_colour()
if colour is not None:
ws.write_all(colour)
time.sleep(60)