- Arduino用のAdafruit5X8 NeoPixel Shield
- BlynkアプリとArduino間の通信プロセスを理解する
- 必要なコンポーネント
- Adafruit RGBLEDシールドとArduino-ハードウェア接続
- Blynkアプリケーションの構成
- Arduinoコード制御AdafruitWS2812B RGBLEDシールド
- Arduinoボードへのコードのアップロード
RGB LEDは、その美しい色、明るさ、魅力的な照明効果により、数年の間に日々人気を博しています。そのため、装飾品として多くの場所で使用されています。例としては、自宅やオフィススペースなどがあります。また、キッチンやゲーム機でもRGBライトを使用できます。彼らはまた、気分の照明の点で子供のプレイルームや寝室に最適です。以前は、WS2812B NeoPixel LEDとARMマイクロコントローラーを使用してMusicSpectrum Visualizerを構築していましたが、興味があるかどうかを確認してください。
そのため、このプロジェクトでは、NeopixelベースのRGB LEDマトリックスシールド、Arduino、およびBlynkアプリケーションを使用して、Blynkアプリで制御できる多くの魅力的なアニメーション効果と色を生成します。それでは始めましょう!!!
Arduino用のAdafruit5X8 NeoPixel Shield
Arduinoの互換NeoPixel シールドは、それぞれがこの形成する5×8マトリクス状に配置されている内蔵WS2812bドライバ有し、40個の個別にアドレス指定RGBのLEDを含んNeoPixelシールド。必要に応じて、複数のNeoPixelシールドを接続して、より大きなシールドを形成することもできます。RGB LEDを制御するには、1つのArduinoピンが必要なので、このチュートリアルでは、Arduinoのピン6を使用することにしました。
私たちの場合、LEDはArduinoの内蔵5Vピンから電力を供給されます。これは、最大輝度で「LEDの約3分の1」に電力を供給するのに十分です。より多くのLEDに電力を供給する必要がある場合は、内蔵トレースを切断し、外部5V電源を使用して、外部5V端子を使用してシールドに電力を供給することができます。
BlynkアプリとArduino間の通信プロセスを理解する
ここで使用されている8 * 5 RGB LEDマトリックスには、WS2812Bドライバーに基づいて個別にアドレス指定可能な40個のRGBLEDがあります。 24ビットカラーコントロールと1ピクセルあたり1680万色を備えています。 「1線式制御」方式で制御できます。つまり、1つの制御ピンを使用してLEDピクセル全体を制御できます。 LEDを操作しているときに、これらのLEDのデータシートを調べたところ、シールドの動作電圧範囲は4 V〜6 Vであり、消費電流は5 V、赤、緑、最高の明るさで青。外部電源ピンには逆電圧保護があり、シールドにはArduinoをリセットするためのリセットボタンがあります。内部回路から十分な電力が得られない場合は、LED用の外部電源入力ピンもあります。
上の回路図に示されているように、Blynkアプリケーションをダウンロードしてインストールする必要があります色や明るさなどのパラメータを制御できるスマートフォンで。パラメータを設定した後、アプリに変更が発生した場合は、PCも接続されて更新されたデータを受信する準備ができているBlynkクラウドになります。 Arduino Unoは、通信ポートを開いた状態でUSBケーブルを介してPCに接続され、この通信ポート(COMポート)を使用して、BlynkクラウドとArduinoUNOの間でデータを交換できます。 PCは一定の時間間隔でBlynkクラウドにデータを要求しており、更新されたデータを受信すると、それをArduinoに転送し、RGBLEDの明るさや色の制御などのユーザー定義の決定を行います。 RGBLEDシールドはArduinoLEDに配置され、通信用の単一のデータピンを介して接続されます。デフォルトでは、ArduinoのD6ピンを介して接続されます。Arduino UNOから送信されたシリアルデータはNeopixelshiedに送信され、LEDマトリックスに反映されます。
必要なコンポーネント
- Arduino UNO
- 8 * 5 RGBLEDマトリックスシールド
- ArduinoUNO用USBA / Bケーブル
- ラップトップ/ PC
Adafruit RGBLEDシールドとArduino-ハードウェア接続
WS2812B Neopixel LEDには3つのピンがあり、1つはデータ用、もう2つは電源用ですが、この特定のArduinoシールドにより、ハードウェア接続が非常に簡単になります。必要なのは、NeopixelLEDマトリックスをArduinoUNOの上に配置することだけです。私たちの場合、LEDはデフォルトのArduino5Vレールから給電されます。Neopixel Shieldを配置すると、セットアップは次のようになります。
Blynkアプリケーションの構成
Blynkは、AndroidおよびIOSデバイス上で実行して、スマートフォンを使用してIoTデバイスおよびアプライアンスを制御できるアプリケーションです。まず、RGB LEDマトリックスを制御するために、グラフィカルユーザーインターフェイス(GUI)を作成する必要があります。アプリケーションは、選択したすべてのパラメーターをGUIからBlynkCloudに送信します。受信機セクションでは、Arduinoがシリアル通信ケーブルを介してPCに接続されています。したがって、PCはBlynkクラウドにデータを要求し、これらのデータは必要な処理のためにArduinoに送信されます。それでは、Blynkアプリケーションのセットアップを始めましょう。
セットアップの前に、Google PlayストアからBlynkアプリケーションをダウンロードします(IOSユーザーはApp Storeからダウンロードできます)。インストール後、メールIDとパスワードを使用してサインアップします。
新しいプロジェクトの作成:
インストールが正常に完了したら、アプリケーションを開くと、「新規プロジェクト」オプションの画面が表示されます。それをクリックすると、新しい画面がポップアップします。ここで、プロジェクト名、ボード、接続タイプなどのパラメーターを設定する必要があります。私たちのプロジェクトでは、デバイスを「 Arduino UNO 」、接続タイプを「 USB 」として選択し、「作成」をクリックします。
プロジェクトが正常に作成されると、書留郵便で認証IDが取得されます。後で参照できるように、認証IDを保存します。
グラフィックユーザーインターフェイス(GUI)の作成:
Blynkでプロジェクトを開き、「+」記号をクリックすると、プロジェクトで使用できるウィジェットが表示されます。この場合、以下に示すように「zeRGBa」としてリストされているRGBカラーピッカーが必要です。
ウィジェットの設定:
ウィジェットをプロジェクトにドラッグした後、カラーRGB値をArduinoUNOに送信するために使用されるパラメーターを設定する必要があります。
ZeRGBaをクリックすると、ZeRGBa設定という名前の画面が表示されます。次に、出力オプションを「マージ」に設定し、ピンを「V2」に設定します。これを下の画像に示します。
Arduinoコード制御AdafruitWS2812B RGBLEDシールド
ハードウェア接続が完了したら、コードをArduinoにアップロードする必要があります。コードの段階的な説明を以下に示します。
まず、必要なすべてのライブラリを含めます。Arduino IDEを開き、[スケッチ]タブに移動して、 [ライブラリを含める]-> [ライブラリの管理 ]オプションをクリックします。次に、検索ボックスでBlynkを検索し、ArduinoUNOのBlynkパッケージをダウンロードしてインストールします。
ここでは、「 Adafruit_NeoPixel.h 」ライブラリを使用して RGBLED マトリックスを制御しています。これを含めるには、指定されたリンクから Adafruit_NeoPixel ライブラリをダウンロードできます。それを取得したら、[ZIPライブラリを含める]オプションを使用して含めることができます。
#define BLYNK_PRINT DebugSerial #include #include
次に、LEDマトリックスに必要なLEDの数を定義します。また、LEDパラメーターを制御するために使用されるピン番号も定義します。
#define PIN 6 #define NUM_PIXELS 40
次に、先ほど保存した 認証 配列に点滅認証IDを配置する必要があります。
char auth = "HoLYSq-SGJAafQUQXXXXXXXX";
ここでは、ソフトウェアのシリアルピンがデバッグコンソールとして使用されています。したがって、Arduinoピンは以下のデバッグシリアルとして定義されています。
#include
セットアップ内では、シリアル通信は関数 Serial.begin を使用して初期化され、blynkは Blynk.begin を使用して接続され 、pixels.begin() を使用し てLEDマトリックスが初期化されます。
void setup() { DebugSerial.begin(9600); pixel.begin(); Serial.begin(9600); Blynk.begin(Serial、auth); }
ループ() 内では、 Blynk.run() を使用し ました 。これは、blynk GUIからの着信コマンドをチェックし、それに応じて操作を実行します。
void loop() { Blynk.run(); }
最終段階では、Blynkアプリケーションから送信されたパラメーターを受信して処理する必要があります。この場合、パラメータは、セットアップのセクションで前述したように、仮想ピン「V2」に割り当てられました。 BLYNK_WRITE 関数は、関連付けられた仮想ピンの状態/値が変更されるたびに呼び出される組み込み関数です。他のArduino関数と同じように、この関数内でコードを実行できます。
ここでは、仮想ピンV2で着信データをチェックするために BLYNK_WRITE 関数が書き込まれます。点滅設定のセクションに示されているように、カラーピクセルデータがマージされ、V2ピンに割り当てられました。したがって、デコード後に再度マージを解除する必要もあります。 LEDピクセルマトリックスを制御するには、赤、緑、青などの3つの個別のカラーピクセルデータすべてが必要です。以下のコードに示すように、マトリックスの3つのインデックスが param.asInt()の ように 読み取られ 、赤色の値が取得されました。同様に、他の2つの値はすべて受信され、3つの個別の変数に格納されました。次に、これらの値は、以下のコードに示すように、 pixels.setPixelColor 関数を使用してピクセルマトリックスに割り当てられます。
ここでは、 pixels.setBrightness() 関数を使用して明るさを制御し、 pixels.show() 関数を使用してマトリックスに設定された色を表示します。
BLYNK_WRITE(V2) { int r = param.asInt(); int g = param.asInt(); int b = param.asInt(); pixel.clear(); pixel.setBrightness(20); for(int i = 0; i <= NUM_PIXELS; i ++) { pixels.setPixelColor(i、pixels.Color(r、g、b)); } pixel.show(); }
Arduinoボードへのコードのアップロード
まず、Arduino IDE内でArduinoのポートを選択する必要があります。次に、コードをArduinoUNOにアップロードする必要があります。アップロードが成功したら、シリアル通信のセットアップに使用されるポート番号を書き留めます。
この後、PC上のBlynkライブラリのスクリプトフォルダを見つけます。ライブラリをインストールするとインストールされます。
「C:\ Users \ PC_Name \ Documents \ Arduino \ libraries \ Blynk \ scripts」
スクリプトフォルダには、「blynk-ser.bat」という名前のファイルがあります。これは、メモ帳で編集する必要があるシリアル通信に使用されるバッチファイルです。メモ帳でファイルを開き、ポート番号を前の手順でメモしたArduinoポート番号に変更します。
編集後、ファイルを保存し、ダブルクリックしてバッチファイルを実行します。次に、次のようなウィンドウが表示されている必要があります。
注: 上記のウィンドウが表示されず、再接続を求めるメッセージが表示される場合は、PCとArduinoシールドの接続エラーが原因である可能性があります。その場合は、ArduinoとPCの接続を確認してください。その後、Comポート番号がArduinoIDEに表示されているかどうかを確認します。有効なCOMポートが表示されている場合は、続行する準備ができています。バッチファイルを再度実行する必要があります。
最終デモンストレーション:
さて、回路とその機能をテストする時が来ました。Blynkアプリケーションを開き、GUIを開いて、[再生]ボタンをクリックします。その後、LEDマトリックスに反映する任意の色を選択できます。以下に示すように、私の場合、赤と青の色を選択しました。これはマトリックスに表示されています。
同様に、コーディングを少しカスタマイズすることで、これらのLEDマトリックスを使用してさまざまなアニメーションを作成することもできます。