ESP32 & BLINK で Dotstar制御 -球体POV製作への道 その8-
随分前に球体POVを自作しようと思い立ってちょこちょこ検討してたのですが、ほっといてる間に世の中のPOVは空を飛んでましたwww
https://ipod.item-get.com/2017/04/ntt_1.php
ここでやろうと思っていたのは以下のような構成でした。
回転部と制御部を無線にしてWiFiとBLEで回転数や表示画像をコントロールしようと思っていたのですが。。。結局モータや固定具などハード関連で頓挫しておりました。。。(;´д`)トホホ…
時が経ち心機一転的な意味も込めて再度通信デバイス選定から考え直して、本日より球体POVづくり再開します!空は飛ばんヤツで!
まずは回転部の要となるBLEとWiFi通信できるデバイスをRedBear DuoからトレンディなESP32にしようと思います。
ここではESP32でLEDテープをWiFi介してスマホでコントロールすることを実現します。
目次
構成
部品
- BLE、WiFi内蔵マイコンボード ESP32-DevKitC 安い!
- LEDテープ
ESP32-DevKitC
ここではArduino IDEでESP32のプログラミングを行います。Arduino IDEでの開発用ソースがインストール方法と共に以下にアップされています
https://github.com/espressif/arduino-esp32
Macの場合は以下の記事が参考になります。
ピン配置
Dotstar
Dotstarはリフレッシュレートが早く(19.2 KHz)、POVに最適なLEDテープです。
DotstarのArduino用ライブラリは以下にあります
https://github.com/adafruit/Adafruit_DotStar
Dotstarについての詳細や一般的なLEDテープNeopixelとの比較は以下を参照ください。
Blynk設定
スマホとESP32ボードはスマホアプリのBlynkを用いてWiFi通信させます。
新規プロジェクトを作成します。HARDWRE MODELはESP32 Dev Boardを選択。CONNECTION TYPEはWiFiを選択。AUTH TOKENはArduinoコード生成時に使用します(メールで送信されます)。
zeRGBaウィジェットを配置
zeRGBaウィジットでLEDの色を設定できるようにします。
OUTPUTはMERGEを選択。それぞれ最小値0、最大値255とします。
SEND ON RELEASEはOFFにして随時データ送信できるようにします。
ここではヴァーチャルピンV0に出力するようにしました。
Arduino IDEコード
[スケッチの例] -> [Blynk] -> [Boards_WiFi]-> [ESP32_WiFi]を参考にコード生成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h> #include <Adafruit_DotStar.h> #include <SPI.h> #define NUMPIXELS 11 // Number of LEDs in strip // Here's how to control the LEDs from any two pins: #define DATAPIN 12 #define CLOCKPIN 14 Adafruit_DotStar strip = Adafruit_DotStar(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BGR); int ledR = 0; int ledG = 0; int ledB = 0; // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "BlynkアプリのYourAuthTokenを入力"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "WiFiのSSID"; char pass[] = "パスワード"; void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); strip.begin(); // Initialize pins for output strip.setBrightness(30); strip.show(); } //ヴァーチャルピンV0 BLYNK_WRITE(V0) { ledR = param[0].asInt(); ledG = param[1].asInt(); ledB = param[2].asInt(); Serial.print( "ledR: "); Serial.print(ledR); Serial.print( " ledG: "); Serial.print(ledG); Serial.print( " ledB: "); Serial.println(ledB); //LED点灯 for(int i=0;i<NUMPIXELS;i++){ strip.setPixelColor(i, strip.Color(ledR, ledG, ledB)); } strip.show(); } void loop(){ Blynk.run(); } |
動作
いい感じ!
次回は本格再開目指して更にBLE通信も同時にできるようにしたいと思います!
なんとか6月中には実現したい。。たぶん。。。
「ESP32 & BLINK で Dotstar制御 -球体POV製作への道 その8-」への1件のフィードバック