ESPNOWの使い方がだいぶわかってきたので
M5stickの倒立振子ロボと組み合わせてみた。
2つのM5stickくん、 1台は操縦用TXくん(左)、
もう1台は受信用 倒立ロボRXくん(右)
ものはほとんど同じ。中身のスケッチもほぼ同じ・・・
自分でも間違う...一応表示1行目に名前を出してるけど。
まずはヨー回転の送信部を作ってみた。
TXくんには送信用のスケッチ
あたまに、
// ESPNOW /////////////////////////////////////////////////////////////////////
#include <esp_now.h>
#include <WiFi.h>
uint8_t slaveAddress[] = {マックアドレス };
uint8_t data_0,data_1,data_2,data_3,data_4;
// ESPNOW /////////////////////////////////////////////////////////////////////
せっとあっぷに、
// ESPNOW /////////////////////////////////////////////////////////////////////
WiFi.mode(WIFI_STA);
WiFi.disconnect();
if (esp_now_init() == ESP_OK) {
M5.Lcd.println("ESPNow ok");
}
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, slaveAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
M5.Lcd.println("Fail Espnow! ");
return;
}
// ESPNOW /////////////////////////////////////////////////////////////////////
るーぷに、
// ESPNOW /////////////////////////////////////////////////////////////////////
data_0 = -varAng*0; //前後進はまだ。
data_1 = (uint8_t)(yawAng*0.1); // LSB:10deg
uint8_t data[5] = {data_0,data_1,0,0,0};
esp_now_send(slaveAddress, data, sizeof(data));
// ESPNOW /////////////////////////////////////////////////////////////////////
追加したのはこれだけ。
でもって、RXくんには受信用のスケッチ
あたまに、
// ESPNOW /////////////////////////////////////////////////////////////////////
#include <WiFi.h>
#include <esp_now.h>
int i,esp_now[5],yawAng_RX;
void onReceive(const uint8_t* mac_addr, const uint8_t* data, int data_len) {
for (i=0; i<=4; i++) esp_now[i] = (int8_t)data[i];
}
// ESPNOW /////////////////////////////////////////////////////////////////////
せっとあっぷに、
// ESPNOW /////////////////////////////////////////////////////////////////////
WiFi.mode(WIFI_STA);
WiFi.disconnect();
esp_now_init();
esp_now_register_recv_cb(onReceive);
// ESPNOW /////////////////////////////////////////////////////////////////////
るーぷに、
// ESPNOW /////////////////////////////////////////////////////////////////////
Kspin = esp_now[1]*10.0;
// ESPNOW /////////////////////////////////////////////////////////////////////
こんだけ。
動かしたときの様子はこんな感じ
まだヨー角信号だけ、回転動作のみ送信。
ESPNOW使ってみて・・・
スケッチの設定はBlynkよりちょいと多い。
Blynkよりはるかに高速。
消費電力はどうなんだろう。
こんな感じです ちょびっと シンクロダンス? です。
ちょっとシンクロして動いてるっぽい。
これなら小さな子にも特に説明なく、
ちょいと動かしてるとこ見せるだけでそこそこ遊べるかも。。。
次は前後進を実装してみる。。。