Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include <WiFi.h>
- #include <AsyncTCP.h>
- #include <ESPAsyncWebServer.h>
- //#include <Adafruit_MPU6050.h>
- //#include <Adafruit_Sensor.h>
- #include <Arduino_JSON.h>
- //#include "SPIFFS.h"
- #include <FastLED.h>
- #include "MPU6050_6Axis_MotionApps20.h"
- #include "I2Cdev.h"
- #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
- #include "Wire.h"
- #endif
- #include <ESPmDNS.h>
- //#include <DNSServer.h>
- CRGB leds[1];
- //#include "MPU6050.h"
- MPU6050 mpu;
- //DNSServer dnsServer;
- //#include <MadgwickAHRS.h>
- //Madgwick MadgwickFilter;
- int16_t ax, ay, az;//加速度 int16_tは2バイトの符号付き整数
- int16_t gx, gy, gz;//角速度 同上
- float ROLL, PITCH, YAW;
- #define I2C_SDA 26
- #define I2C_SCL 32
- const char* ssid = "Buffalo-G-D6FA";
- const char* password = "iudcnfhdud3xk";
- AsyncWebServer server(80);
- AsyncEventSource events("/events");
- JSONVar readings;
- unsigned long previous_time = 0;
- unsigned long previous_time_temp = 0;
- unsigned long previous_time_acceleration = 0;
- unsigned long gyro_delay = 10;
- unsigned long temperature_delay = 1000;
- unsigned long accelerometer_delay = 200;
- //Adafruit_MPU6050 mpu;
- //sensors_event_t a, g, temp;
- float rotationX, rotationY, rotationZ;
- float accelerationX, accelerationY, accelerationZ;
- float temperature;
- float rotationX_error = 0.05;
- float rotationY_error = 0.02;
- float rotationZ_error = 0.01;
- TaskHandle_t th; //マルチタスクハンドル定義
- // MPU control/status vars
- bool dmpReady = false; // set true if DMP init was successful
- uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU
- uint8_t devStatus; // return status after each device operation (0 = success, !0 = error)
- uint16_t packetSize; // expected DMP packet size (default is 42 bytes)
- uint16_t fifoCount; // count of all bytes currently in FIFO
- uint8_t fifoBuffer[64]; // FIFO storage buffer
- // orientation/motion vars
- Quaternion qa; // [w, x, y, z] quaternion container
- VectorInt16 aa; // [x, y, z] accel sensor measurements
- VectorInt16 aaReal; // [x, y, z] gravity-free accel sensor measurements
- VectorInt16 aaWorld; // [x, y, z] world-frame accel sensor measurements
- VectorFloat gravity; // [x, y, z] gravity vector
- float euler[3]; // [psi, theta, phi] Euler angle container
- float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector
- //gzip compressed arry
- //https://www.mischianti.org/online-converter-file-to-cpp-gzip-byte-array-3/
- //File: index.html.gz, Size: 549
- #define index_html_gz_len 549
- const uint8_t index_html_gz[] PROGMEM = {
- 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAD, 0x55, 0x5D, 0x6F, 0xD3, 0x30,
- 0x14, 0x7D, 0x47, 0xE2, 0x3F, 0x18, 0x3F, 0x20, 0x90, 0xD6, 0x66, 0x63, 0x82, 0x87, 0xE2, 0x44,
- 0x9A, 0xD6, 0x0A, 0x1E, 0x98, 0xA8, 0xD6, 0x22, 0x9A, 0xBC, 0xB9, 0xCE, 0x65, 0xF1, 0x96, 0xD8,
- 0x91, 0x7D, 0x9B, 0xD1, 0x7F, 0x8F, 0x13, 0xA7, 0x6B, 0xD6, 0x0F, 0xDA, 0x51, 0x9E, 0x62, 0xDF,
- 0x73, 0xCF, 0xB9, 0x37, 0xC7, 0xCE, 0x0D, 0x7B, 0x33, 0xFC, 0x7E, 0x3D, 0x8D, 0xC7, 0x23, 0xF2,
- 0x75, 0x7A, 0xF3, 0x2D, 0x62, 0x19, 0x16, 0x79, 0xF4, 0xFA, 0x15, 0xCB, 0x80, 0xA7, 0xEE, 0x49,
- 0x08, 0x43, 0x89, 0x39, 0x44, 0xA3, 0xC9, 0x98, 0xDC, 0x8C, 0x7F, 0x7C, 0x3A, 0xFF, 0x78, 0x4E,
- 0x7E, 0xC2, 0x9C, 0x4C, 0xC0, 0x54, 0x60, 0x58, 0xE0, 0xD1, 0x26, 0xB1, 0x00, 0xE4, 0x44, 0xF1,
- 0x02, 0x42, 0x5A, 0x49, 0x78, 0x2C, 0xB5, 0x41, 0x4A, 0x84, 0x56, 0x08, 0x0A, 0x43, 0xFA, 0x28,
- 0x53, 0xCC, 0xC2, 0x14, 0x2A, 0x29, 0xA0, 0xD7, 0x6C, 0xCE, 0x88, 0x54, 0x12, 0x25, 0xCF, 0x7B,
- 0x56, 0xF0, 0x1C, 0xC2, 0x0B, 0xEA, 0x75, 0x72, 0xA9, 0x1E, 0x88, 0x81, 0x3C, 0xA4, 0xD2, 0xB1,
- 0x29, 0xC9, 0x0C, 0xFC, 0x0A, 0x69, 0xCA, 0x91, 0x0F, 0xCE, 0xB6, 0x52, 0x2C, 0x2E, 0x73, 0xB0,
- 0x19, 0x80, 0xAB, 0x85, 0xCB, 0xD2, 0xD5, 0x46, 0xF8, 0x8D, 0x81, 0xB0, 0x76, 0x45, 0x6C, 0x32,
- 0xFA, 0x75, 0xC0, 0x73, 0xAD, 0x30, 0xB2, 0xC4, 0x6E, 0xF2, 0x3D, 0xAF, 0xB8, 0x8F, 0x52, 0x62,
- 0x8D, 0x70, 0x51, 0xC7, 0x84, 0x7E, 0x21, 0x55, 0xFF, 0xDE, 0xB1, 0x58, 0xE0, 0xC1, 0xDA, 0x96,
- 0xA0, 0xF5, 0x85, 0xCD, 0x75, 0xBA, 0xF4, 0x7A, 0xA9, 0xAC, 0x88, 0xC8, 0xB9, 0xB5, 0x8E, 0xA7,
- 0x4B, 0xC5, 0x2B, 0x5F, 0xC7, 0x21, 0xD9, 0x45, 0xF4, 0xE4, 0xD9, 0x04, 0x94, 0xD5, 0x86, 0xDC,
- 0x3A, 0xBA, 0x54, 0x77, 0xD6, 0x09, 0x5D, 0x78, 0x7A, 0xE0, 0xF8, 0x5B, 0x42, 0xAD, 0x6B, 0x4F,
- 0x4A, 0x5D, 0x88, 0x9B, 0xD4, 0xAE, 0x80, 0x6D, 0x68, 0x8D, 0x38, 0xAC, 0xEC, 0x22, 0xBD, 0xE6,
- 0xA8, 0x68, 0xF4, 0x65, 0x69, 0xB4, 0x15, 0xBA, 0x04, 0x16, 0x94, 0xCF, 0x92, 0x23, 0x66, 0x4B,
- 0xAE, 0x56, 0x14, 0xE3, 0x3B, 0xA5, 0xD1, 0x6C, 0x40, 0x3C, 0x20, 0x53, 0x17, 0xD5, 0xC8, 0x51,
- 0x6A, 0x35, 0x6B, 0x6C, 0x71, 0xD1, 0x88, 0x18, 0x9E, 0xB6, 0xCB, 0x23, 0x05, 0xE3, 0x5D, 0x82,
- 0xF1, 0x09, 0x82, 0xC9, 0x2E, 0xC1, 0xE4, 0x90, 0xE0, 0xDA, 0xF9, 0x7F, 0xF3, 0xF1, 0x4A, 0x08,
- 0xC8, 0xC1, 0x68, 0x77, 0xED, 0xEB, 0x0F, 0xE1, 0xE5, 0x5E, 0x72, 0x2F, 0xB0, 0xE9, 0x67, 0x11,
- 0x58, 0x66, 0x17, 0x65, 0xF4, 0xC1, 0x05, 0xDC, 0xE3, 0x04, 0x6F, 0xBB, 0x05, 0xE2, 0xFF, 0x54,
- 0x20, 0xD9, 0x57, 0x20, 0x79, 0x49, 0x81, 0x53, 0xBD, 0x9F, 0x42, 0x51, 0xD6, 0x75, 0x17, 0xE6,
- 0xD8, 0x5B, 0xBC, 0x6E, 0x1A, 0xD7, 0xDC, 0x75, 0xCB, 0x6F, 0x53, 0xB8, 0xFB, 0x7C, 0xBD, 0xC7,
- 0x8A, 0x5D, 0x1D, 0x5C, 0x0E, 0xC9, 0x95, 0x92, 0x45, 0xF3, 0xEA, 0x83, 0x0D, 0xC2, 0x7C, 0x81,
- 0xA8, 0xDB, 0xDB, 0x08, 0xB6, 0x9E, 0x4C, 0x5A, 0x89, 0x5C, 0x8A, 0x87, 0x76, 0x3F, 0xD6, 0x56,
- 0xD6, 0xBC, 0x77, 0x98, 0x49, 0xFB, 0x9E, 0x46, 0xB7, 0xA3, 0xC9, 0x68, 0xCA, 0x02, 0x4F, 0xFB,
- 0x9B, 0xD0, 0xEC, 0x90, 0xD2, 0xEC, 0x18, 0x95, 0xF8, 0x90, 0x4A, 0x7C, 0x8C, 0x4A, 0x72, 0x48,
- 0x25, 0xD9, 0x52, 0xE9, 0x9E, 0xFA, 0xB3, 0x75, 0xF7, 0xFC, 0x17, 0x73, 0xE8, 0x6D, 0x8C, 0xBF,
- 0x36, 0xA3, 0x2E, 0x7D, 0x39, 0xAC, 0x13, 0xEA, 0x73, 0xDB, 0x21, 0xB5, 0x5A, 0x1C, 0x33, 0xE2,
- 0xFD, 0x66, 0xFF, 0x7C, 0x0F, 0xDA, 0x01, 0xEF, 0x22, 0xF5, 0x1F, 0xF1, 0x0F, 0x9C, 0x9A, 0x8D,
- 0x6D, 0x27, 0x07, 0x00, 0x00
- };
- //File: script.js.gz, Size: 937
- #define script_js_gz_len 937
- const uint8_t script_js_gz[] PROGMEM = {
- 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC5, 0x57, 0x51, 0x4F, 0x1B, 0x39,
- 0x10, 0x7E, 0x47, 0xE2, 0x3F, 0x98, 0x7D, 0x89, 0x57, 0x5D, 0x6D, 0x82, 0x20, 0xD7, 0x53, 0x51,
- 0x5F, 0x80, 0x1C, 0xDC, 0x09, 0x5A, 0x44, 0x90, 0x68, 0x7B, 0xAA, 0x2A, 0x67, 0x77, 0x48, 0xDC,
- 0x4B, 0xD6, 0x39, 0xDB, 0x0B, 0x09, 0x28, 0xFF, 0xFD, 0xC6, 0x5E, 0xEF, 0x12, 0x27, 0x1B, 0xC8,
- 0xAA, 0x6A, 0x8F, 0x17, 0x12, 0x7B, 0xE6, 0x9B, 0x6F, 0xBE, 0x19, 0x8F, 0x9D, 0x31, 0x68, 0xA2,
- 0x12, 0xC8, 0x20, 0x22, 0x09, 0x9B, 0x80, 0x64, 0x11, 0x91, 0x90, 0xA5, 0x20, 0x21, 0xC5, 0x95,
- 0x7C, 0x00, 0x47, 0xBB, 0x3B, 0xBB, 0x3B, 0x77, 0x79, 0x96, 0x68, 0x2E, 0x32, 0x32, 0x65, 0xB8,
- 0xAB, 0x6F, 0x79, 0xAA, 0x47, 0x14, 0xC6, 0x30, 0x09, 0xC9, 0xD3, 0xEE, 0x0E, 0x41, 0x17, 0x9D,
- 0xCB, 0x8C, 0x98, 0x95, 0xB8, 0x30, 0xE9, 0xE1, 0x47, 0xFC, 0x17, 0x27, 0x63, 0x5E, 0x3A, 0x20,
- 0xD2, 0xA2, 0x06, 0xEC, 0x1C, 0xF8, 0x70, 0xA4, 0x9B, 0xA0, 0x15, 0x1E, 0x6B, 0x70, 0x3C, 0xE3,
- 0x9A, 0xB3, 0x31, 0x7F, 0x84, 0x6F, 0x07, 0xA7, 0x34, 0xB4, 0x50, 0x36, 0x35, 0xF2, 0x9E, 0x64,
- 0xF0, 0x40, 0x6E, 0xCE, 0xAF, 0x7B, 0xBD, 0xB8, 0x6F, 0x56, 0x68, 0x78, 0x54, 0xED, 0xC6, 0x03,
- 0x96, 0xFC, 0x33, 0x94, 0x22, 0xCF, 0x52, 0xCF, 0xF0, 0x44, 0x8C, 0x85, 0xA4, 0x9D, 0xD9, 0x9D,
- 0xFD, 0x0B, 0xAD, 0x0E, 0xC4, 0x89, 0xE4, 0x19, 0x5E, 0x81, 0x54, 0x53, 0x40, 0x0E, 0xF7, 0x70,
- 0x62, 0x77, 0xE9, 0xDB, 0x6E, 0xE4, 0x29, 0x95, 0x8A, 0x24, 0xB7, 0xFC, 0x87, 0x50, 0xA6, 0x72,
- 0x3C, 0xFF, 0x33, 0xA5, 0xC1, 0xC1, 0xA9, 0x91, 0x38, 0x08, 0x43, 0xD2, 0xF6, 0xD5, 0x78, 0xDD,
- 0x23, 0x22, 0x9D, 0x78, 0x3F, 0x22, 0xFB, 0x9D, 0x4E, 0xA7, 0xE4, 0xE6, 0x0A, 0x27, 0x3D, 0x76,
- 0xB7, 0x30, 0x38, 0xBB, 0xB8, 0x76, 0x3B, 0xF4, 0x89, 0xB0, 0xCC, 0x8A, 0xC4, 0xD4, 0x3B, 0xA2,
- 0x65, 0x0E, 0x64, 0x51, 0x48, 0x51, 0xFA, 0xC6, 0x0A, 0x74, 0x1F, 0x25, 0xA4, 0xCD, 0xF8, 0x47,
- 0x4D, 0xE9, 0x97, 0x9C, 0x37, 0x59, 0xB6, 0x0A, 0xCB, 0x56, 0x18, 0xB3, 0xE9, 0x14, 0xB9, 0x9D,
- 0x8C, 0xF8, 0x38, 0xA5, 0x15, 0xCB, 0x54, 0x4C, 0x9C, 0x75, 0x55, 0x18, 0x91, 0x29, 0x4D, 0x86,
- 0x20, 0x26, 0xA0, 0xE5, 0xDC, 0x93, 0xE0, 0x58, 0xCC, 0xCE, 0xDC, 0x3A, 0xC5, 0xCA, 0xA0, 0x6A,
- 0x87, 0x85, 0xD7, 0x3D, 0x93, 0xB6, 0xC7, 0x2F, 0x99, 0x06, 0x89, 0xAA, 0x28, 0x74, 0xFB, 0x9B,
- 0x18, 0xB4, 0x67, 0xE7, 0x4B, 0x50, 0xA3, 0x63, 0xA6, 0x78, 0x52, 0x1A, 0xD1, 0xA7, 0xC4, 0x74,
- 0xC6, 0xBB, 0xCE, 0xAC, 0x73, 0xD0, 0x39, 0xEC, 0xC2, 0x22, 0x8C, 0xB6, 0xF6, 0xE8, 0xA6, 0xBF,
- 0x1F, 0x0E, 0x0E, 0xD1, 0x63, 0xFB, 0x20, 0x07, 0xDD, 0xDF, 0xBA, 0x6C, 0xBF, 0x49, 0x90, 0x5F,
- 0x4D, 0xEB, 0xEB, 0x11, 0x59, 0x2E, 0xC1, 0xC4, 0xD9, 0x7A, 0x25, 0x30, 0x48, 0x7F, 0xB0, 0xA4,
- 0x52, 0x9A, 0x7A, 0xB2, 0x57, 0x35, 0xC4, 0xC5, 0x35, 0x37, 0x5A, 0xD6, 0x34, 0xAA, 0xA0, 0x97,
- 0x4F, 0x2F, 0x4B, 0x53, 0x0B, 0x56, 0xAC, 0x15, 0xC7, 0x33, 0x9E, 0x0A, 0xC5, 0xCD, 0x4C, 0x88,
- 0x1F, 0x11, 0xAE, 0xEB, 0x37, 0x78, 0xF1, 0x81, 0x7A, 0x43, 0x2F, 0x5C, 0x1B, 0x26, 0x22, 0xBB,
- 0xE5, 0x59, 0x2A, 0x1E, 0xAE, 0x41, 0x99, 0xD3, 0x50, 0x4C, 0x13, 0x87, 0xCE, 0xEC, 0x71, 0x47,
- 0xE4, 0x9F, 0x7D, 0xC6, 0x2D, 0xF1, 0x76, 0x7B, 0x35, 0xEC, 0x83, 0x65, 0x16, 0xF3, 0x2C, 0x03,
- 0x69, 0x83, 0x23, 0xB2, 0xB7, 0x58, 0x0D, 0xC8, 0x8A, 0x72, 0x3E, 0x4D, 0x51, 0xBB, 0x2B, 0x29,
- 0xBE, 0x83, 0xCD, 0x0F, 0xA5, 0x97, 0x7C, 0x46, 0xCB, 0x08, 0x6B, 0xA7, 0x7F, 0x2D, 0x44, 0x54,
- 0x13, 0xE0, 0xFF, 0x9C, 0x1C, 0xB6, 0x5A, 0x8E, 0x12, 0xB6, 0x40, 0xEF, 0x1E, 0x0D, 0x2F, 0xB8,
- 0xD2, 0x58, 0x54, 0x49, 0x5B, 0xD2, 0x56, 0xAD, 0x15, 0xAD, 0x94, 0x31, 0x22, 0x77, 0xD8, 0x6D,
- 0x50, 0x20, 0xAC, 0x5C, 0x17, 0xC5, 0xDA, 0x1D, 0xA1, 0x7B, 0x7B, 0x0E, 0xD6, 0x62, 0xF6, 0x45,
- 0x2E, 0x13, 0x70, 0x17, 0x93, 0x99, 0x17, 0xCA, 0x2E, 0xB8, 0x2E, 0x5D, 0x32, 0xA1, 0xAD, 0x36,
- 0x98, 0x6F, 0xAA, 0x55, 0x76, 0x73, 0x61, 0x59, 0xC3, 0x4E, 0xE0, 0x40, 0x43, 0x6E, 0x65, 0xAF,
- 0xD1, 0x12, 0xBE, 0x38, 0x41, 0x62, 0x0C, 0xF1, 0x58, 0x0C, 0x69, 0x60, 0xBD, 0x14, 0x39, 0x11,
- 0xA8, 0x78, 0xA2, 0x21, 0x0D, 0x0A, 0xBD, 0x17, 0x5E, 0x16, 0x2F, 0x84, 0x01, 0x29, 0x85, 0xAC,
- 0x8F, 0x63, 0xF2, 0x84, 0x58, 0x33, 0x89, 0x2A, 0xE3, 0x81, 0x60, 0xE9, 0xBC, 0xAF, 0xB1, 0x3F,
- 0xC8, 0xDE, 0xFB, 0xE5, 0x94, 0xE2, 0x8F, 0x57, 0xBD, 0x0F, 0x95, 0x4F, 0x3D, 0xBB, 0x53, 0xAE,
- 0x92, 0x15, 0x82, 0x48, 0xB1, 0x11, 0xCF, 0xE1, 0x5C, 0x8A, 0x6F, 0x86, 0x04, 0xCF, 0x86, 0xAA,
- 0x9E, 0xAF, 0x11, 0x5E, 0x0C, 0xBE, 0xA3, 0xEA, 0x7F, 0xF5, 0x3F, 0x7E, 0x30, 0x8F, 0x02, 0x05,
- 0x98, 0x00, 0xF6, 0x34, 0x2B, 0x63, 0x6E, 0x6C, 0x1C, 0x29, 0x30, 0x35, 0x84, 0xFB, 0x14, 0x84,
- 0xAE, 0x79, 0x6F, 0x2E, 0x2F, 0x10, 0x09, 0xF1, 0xE2, 0x6A, 0x6F, 0x5B, 0x90, 0xCF, 0x2F, 0x80,
- 0x7C, 0xDE, 0x16, 0xE4, 0xCB, 0x0B, 0x20, 0x5F, 0x9C, 0x5A, 0xC5, 0x30, 0xAC, 0x96, 0xE3, 0xD9,
- 0x86, 0x60, 0xBE, 0xD5, 0xE3, 0x86, 0xBC, 0x7C, 0xAB, 0x79, 0x4D, 0x4C, 0x63, 0xF5, 0xEA, 0x88,
- 0x6C, 0x50, 0x54, 0x0D, 0x93, 0x29, 0x7A, 0xE1, 0x43, 0x0E, 0xCA, 0xDA, 0x6E, 0xD1, 0xF2, 0x35,
- 0x5E, 0x41, 0x44, 0xB6, 0x2C, 0xF4, 0x92, 0xF3, 0x8A, 0xC0, 0x05, 0x40, 0xB3, 0x04, 0x58, 0x92,
- 0xE0, 0x03, 0x54, 0x9A, 0xAB, 0x07, 0xE4, 0x2B, 0xED, 0xE9, 0xE5, 0x50, 0xEF, 0xB8, 0x96, 0xC6,
- 0x8F, 0xB4, 0xB4, 0x0B, 0xB1, 0xB1, 0xAD, 0xBD, 0xFD, 0x26, 0x60, 0x75, 0xED, 0xED, 0xED, 0x37,
- 0x01, 0xAB, 0x6B, 0x73, 0x6F, 0x7F, 0xAD, 0x20, 0xFE, 0x15, 0x8C, 0x43, 0x1C, 0xF4, 0x95, 0xBB,
- 0xC9, 0xED, 0xEF, 0x03, 0xF3, 0xDC, 0xAB, 0x06, 0xF1, 0x6C, 0x54, 0x3E, 0x74, 0x3F, 0x5D, 0x5E,
- 0x9C, 0x6B, 0x3D, 0xBD, 0x86, 0x7F, 0x73, 0x50, 0xDA, 0x5D, 0x6A, 0xB8, 0x1D, 0x9B, 0x41, 0x4B,
- 0x83, 0xB3, 0xDE, 0x0D, 0xAA, 0x1F, 0xB4, 0x83, 0x37, 0x0E, 0x23, 0xE6, 0xF8, 0xDB, 0xC6, 0x3C,
- 0x7E, 0xDD, 0x9B, 0x61, 0xA9, 0x7A, 0xCF, 0x16, 0xCF, 0x28, 0x0A, 0x4F, 0x83, 0x05, 0x5D, 0xFC,
- 0x07, 0xCC, 0xC6, 0xF3, 0x34, 0x2D, 0x0D, 0x00, 0x00
- };
- //File: style.css.gz, Size: 462
- #define style_css_gz_len 462
- const uint8_t style_css_gz[] PROGMEM = {
- 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAD, 0x53, 0x4D, 0x6B, 0xDC, 0x30,
- 0x10, 0xBD, 0x07, 0xF2, 0x1F, 0x06, 0x42, 0x20, 0x81, 0xD5, 0xA2, 0x75, 0x37, 0x10, 0xB4, 0xF7,
- 0x1C, 0x73, 0x28, 0x3D, 0xA4, 0xBD, 0xC9, 0xD6, 0xD8, 0x16, 0xD1, 0x87, 0x91, 0xC7, 0xF1, 0x26,
- 0xA5, 0xFF, 0xBD, 0xB2, 0xB5, 0xDE, 0x28, 0x5F, 0x7B, 0x69, 0x75, 0x30, 0x62, 0x66, 0xF4, 0xE6,
- 0xBD, 0x37, 0xE3, 0x96, 0xAC, 0x81, 0xDF, 0xE7, 0x67, 0x00, 0xB5, 0x77, 0xC4, 0x6A, 0x69, 0xB5,
- 0x79, 0x16, 0x70, 0x8F, 0x23, 0xFC, 0xD0, 0x16, 0x7B, 0xF8, 0xEE, 0xAD, 0x74, 0xBB, 0xA9, 0x40,
- 0xE9, 0xBE, 0x33, 0x32, 0x26, 0xB5, 0x33, 0xDA, 0x21, 0x2B, 0x8D, 0xAF, 0x1E, 0xE7, 0x0C, 0xE1,
- 0x9E, 0x98, 0x34, 0xBA, 0x71, 0x02, 0x2A, 0x74, 0x84, 0x21, 0x86, 0xFF, 0x9C, 0x9F, 0x75, 0x19,
- 0x72, 0xAF, 0x5F, 0x50, 0xC0, 0x66, 0x5D, 0x04, 0xB4, 0x29, 0x5B, 0x7A, 0xF5, 0x9C, 0x0A, 0xAC,
- 0x0C, 0x8D, 0x8E, 0x6F, 0x79, 0x4A, 0xAC, 0xC9, 0x77, 0x4E, 0x3E, 0xA5, 0x9C, 0x7F, 0xC2, 0x50,
- 0x1B, 0x3F, 0x0A, 0x68, 0xB5, 0x52, 0x98, 0xA8, 0x94, 0xB2, 0x7A, 0x6C, 0x82, 0x1F, 0x9C, 0x62,
- 0x95, 0x37, 0x3E, 0x08, 0xB8, 0x28, 0x39, 0xDF, 0xF2, 0xED, 0x9C, 0x5D, 0x42, 0xF5, 0x7C, 0x76,
- 0xEF, 0x29, 0x1C, 0x09, 0xAC, 0xAB, 0x18, 0x8D, 0x74, 0x53, 0xA3, 0x4E, 0x2A, 0xA5, 0x5D, 0x23,
- 0xA0, 0xE0, 0xDD, 0x7E, 0x29, 0x90, 0x41, 0xA5, 0xEC, 0xC7, 0x8E, 0x63, 0xAB, 0x09, 0x67, 0x70,
- 0x3F, 0xD0, 0x64, 0x48, 0x84, 0xEE, 0xF6, 0xD0, 0x7B, 0xA3, 0x55, 0xF6, 0x9C, 0x91, 0x26, 0x83,
- 0x09, 0x24, 0xBD, 0xCC, 0xA9, 0xCE, 0xBC, 0x46, 0xD4, 0x4D, 0x4B, 0x02, 0x4A, 0x6F, 0xF2, 0x97,
- 0xFD, 0x62, 0xCE, 0x9E, 0x8D, 0x5A, 0x51, 0x2B, 0xE0, 0x96, 0x27, 0x6A, 0x99, 0x63, 0x20, 0x07,
- 0xF2, 0x6F, 0xC7, 0xD3, 0x84, 0x48, 0x60, 0xFE, 0xB2, 0x46, 0x76, 0x51, 0x4F, 0x12, 0x0C, 0x29,
- 0x44, 0x68, 0x63, 0x19, 0xE1, 0x24, 0x63, 0xB0, 0xAE, 0x17, 0x10, 0xB0, 0x43, 0x49, 0x57, 0x13,
- 0x10, 0xAB, 0x35, 0xAD, 0xC0, 0x6A, 0x17, 0x9B, 0x5E, 0x15, 0x53, 0xB7, 0x15, 0x6C, 0xEA, 0x70,
- 0x7D, 0x7D, 0xA0, 0x15, 0x50, 0x4E, 0x1E, 0x9D, 0x1C, 0xEB, 0xBA, 0x1A, 0xCA, 0x09, 0x7D, 0xB6,
- 0x76, 0x2E, 0x3C, 0xB0, 0xDF, 0x70, 0x7E, 0xF9, 0xC5, 0xF4, 0x5E, 0xBD, 0x6C, 0x0F, 0x5E, 0x7C,
- 0x9B, 0xA5, 0x1E, 0x75, 0x1E, 0x55, 0x1E, 0xA6, 0xC4, 0xE2, 0x8A, 0x88, 0xE2, 0x32, 0x75, 0xBC,
- 0x08, 0xD8, 0x63, 0x6A, 0x55, 0xFA, 0xA0, 0x30, 0x02, 0x3A, 0xEF, 0xF0, 0xAB, 0x5D, 0xF8, 0x64,
- 0x79, 0x78, 0x3C, 0x77, 0x77, 0xBB, 0x37, 0x6B, 0xB0, 0x59, 0xBC, 0xFE, 0x74, 0xBB, 0x4F, 0xFD,
- 0x0E, 0xB9, 0x31, 0xDB, 0x49, 0xC5, 0x62, 0xC0, 0xCD, 0x02, 0x99, 0x68, 0xB2, 0x10, 0xDD, 0x1C,
- 0xE2, 0x04, 0xB6, 0xCB, 0xC2, 0x25, 0x25, 0x0F, 0x2B, 0x48, 0x97, 0x9F, 0xCB, 0xE5, 0xD7, 0xBF,
- 0x88, 0xCB, 0xD6, 0x2D, 0x77, 0xEF, 0x55, 0xE0, 0x12, 0x2D, 0x3D, 0x91, 0xB7, 0xFF, 0x53, 0x79,
- 0x36, 0xFD, 0xE2, 0xB4, 0xF6, 0xBF, 0x7D, 0x1E, 0xFF, 0x94, 0x88, 0x04, 0x00, 0x00
- };
- //File: three.min.js.gz, Size: 144223
- #define three_min_js_gz_len 144223
- const uint8_t three_min_js_gz[] PROGMEM = {
- };
- String getGyroscopeReadings(){
- /*mpu.getEvent(&a, &g, &temp);
- float rotationX_temporary = g.gyro.x;
- if(abs(rotationX_temporary) > rotationX_error) {
- rotationX += rotationX_temporary*0.01;
- }
- float rotationY_temporary = g.gyro.y;
- if(abs(rotationY_temporary) > rotationY_error) {
- rotationY += rotationY_temporary*0.01;
- }
- float rotationZ_temporary = g.gyro.z;
- if(abs(rotationZ_temporary) > rotationZ_error) {
- rotationZ += rotationZ_temporary*0.01;
- }*/
- //rotationX = ROLL*(3.14/180);
- //rotationY = PITCH*(3.14/180);
- //rotationZ = YAW*(3.14/180);
- rotationX = euler[2];
- rotationY = -1 * euler[1];
- rotationZ = -1 * euler[0];
- readings["rotationX"] = String(rotationX);
- readings["rotationY"] = String(rotationY);
- readings["rotationZ"] = String(rotationZ);
- String jsonString = JSON.stringify(readings);
- return jsonString;
- }
- String getAccelerationReadings() {
- //mpu.getEvent(&a, &g, &temp);
- //accelerationX = a.acceleration.x;
- //accelerationY = a.acceleration.y;
- //accelerationZ = a.acceleration.z;
- readings["accelerationX"] = String(accelerationX);
- readings["accelerationY"] = String(accelerationY);
- readings["accelerationZ"] = String(accelerationZ);
- String accString = JSON.stringify (readings);
- return accString;
- }
- String getTemperatureReadings(){
- //mpu.getEvent(&a, &g, &temp);
- //temperature = temp.temperature;
- return String(temperature);
- }
- void SoftAPmode(){
- uint8_t macWifi[6];
- #ifdef ESP32
- esp_read_mac(macWifi, ESP_MAC_WIFI_STA);
- char wifiname[11];
- sprintf(wifiname,"ESP32-%02X%02X",macWifi[4],macWifi[5]);
- #elif defined(ESP8266)
- WiFi.begin();
- WiFi.macAddress(macWifi);
- char wifiname[9];
- sprintf(wifiname,"ESP-%02X%02X",macWifi[4],macWifi[5]);
- #endif
- WiFi.mode(WIFI_AP);
- WiFi.softAP(wifiname);
- WiFi.begin();
- }
- void setup() {
- FastLED.addLeds<NEOPIXEL, 27>(leds, 1);
- FastLED.setBrightness(5);
- leds[0] = CRGB::Red;
- FastLED.show();
- Wire.begin(26,32);
- Wire.setClock(400000);
- Serial.begin(115200);
- boolean SoftAP = false;
- if(WiFi.SSID() != NULL){
- WiFi.mode(WIFI_STA);
- WiFi.begin();
- }else{
- SoftAP = true;
- }
- unsigned int cnt = 0;
- while (WiFi.status() != WL_CONNECTED) {
- cnt++;
- delay(100);
- //led_toggle();//LED点滅
- //Wifiアクセスポイントに接続できない場合Soft APモードに変更する
- if(cnt >= 100 || digitalRead(39) == LOW || SoftAP == true){//接続トライ100カウント以上もしくは書き込みボタンを押すとSoft APモードに変更
- SoftAP = true;
- leds[0] = CRGB::Pink;
- FastLED.show();
- SoftAPmode();
- //dnsServer.start(53, "*", WiFi.softAPIP());
- break;//Soft APにしてもbreakしないと抜けられない
- }
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- Serial.println("IP address: ");
- if(SoftAP == false){
- Serial.println(WiFi.localIP());
- }else{
- Serial.println(WiFi.softAPIP());
- }
- if (!MDNS.begin("esp")) {
- Serial.println("Error setting up MDNS responder!");
- }
- MDNS.addService("http", "tcp", 80);
- //if (!SPIFFS.begin()) {
- // Serial.println("An error has occurred while mounting SPIFFS");
- //}
- //Serial.println("SPIFFS mounted successfully");
- //if (!mpu.begin()) {
- // Serial.println("MPU6050 is not properly connected. Check circuit!");
- // while (1) {
- // delay(10);
- // }
- //}
- //Serial.println("MPU6050 Found");
- /*
- server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
- request->send(SPIFFS, "/index.html", "text/html");
- });
- server.serveStatic("/", SPIFFS, "/");*/
- server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
- AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", index_html_gz, index_html_gz_len);
- response->addHeader(F("Content-Encoding"), F("gzip"));
- request->send(response);
- });
- server.on("/script.js", HTTP_GET, [](AsyncWebServerRequest *request){
- AsyncWebServerResponse *response = request->beginResponse_P(200, "text/javascript", script_js_gz, script_js_gz_len);
- response->addHeader(F("Content-Encoding"), F("gzip"));
- request->send(response);
- });
- server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
- AsyncWebServerResponse *response = request->beginResponse_P(200, "text/css", style_css_gz, style_css_gz_len);
- response->addHeader(F("Content-Encoding"), F("gzip"));
- request->send(response);
- });
- server.on("/three.min.js", HTTP_GET, [](AsyncWebServerRequest *request){
- AsyncWebServerResponse *response = request->beginResponse_P(200, "text/javascript", three_min_js_gz, three_min_js_gz_len);
- response->addHeader(F("Content-Encoding"), F("gzip"));
- request->send(response);
- });
- server.on("/reset", HTTP_GET, [](AsyncWebServerRequest *request){
- rotationX=0;
- rotationY=0;
- rotationZ=0;
- request->send(200, "text/plain", "OK");
- });
- server.on("/resetX", HTTP_GET, [](AsyncWebServerRequest *request){
- rotationX=0;
- request->send(200, "text/plain", "OK");
- });
- server.on("/resetY", HTTP_GET, [](AsyncWebServerRequest *request){
- rotationY=0;
- request->send(200, "text/plain", "OK");
- });
- server.on("/resetZ", HTTP_GET, [](AsyncWebServerRequest *request){
- rotationZ=0;
- request->send(200, "text/plain", "OK");
- });
- events.onConnect([](AsyncEventSourceClient *client){
- if(client->lastId()){
- Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
- }
- client->send("hello!", NULL, millis(), 10000);
- });
- server.addHandler(&events);
- server.begin();
- mpu.initialize();//I2Cデバイスの初期化
- //delay(300);
- //MadgwickFilter.begin(200);//フィルタのサンプリングを100Hzで
- pinMode(39,INPUT_PULLUP);
- //mpu.CalibrateAccel(1);
- //mpu.CalibrateGyro(1);
- devStatus = mpu.dmpInitialize();
- //OFFSETS -2429, -1480, 1505, 94, -17, 41
- mpu.setXAccelOffset(-2429);
- mpu.setYAccelOffset(-1480);
- mpu.setZAccelOffset(1505);// 1688 factory default for my test chip
- mpu.setXGyroOffset(94);
- mpu.setYGyroOffset(-17);
- mpu.setZGyroOffset(41);
- // make sure it worked (returns 0 if so)
- if (devStatus == 0) {
- // Calibration Time: generate offsets and calibrate our MPU6050
- mpu.CalibrateAccel(6);
- mpu.CalibrateGyro(6);
- mpu.PrintActiveOffsets();
- // turn on the DMP, now that it's ready
- Serial.println(F("Enabling DMP..."));
- mpu.setDMPEnabled(true);
- // enable Arduino interrupt detection
- Serial.print(F("Enabling interrupt detection (Arduino external interrupt "));
- //Serial.print(digitalPinToInterrupt(INTERRUPT_PIN));
- Serial.println(F(")..."));
- //attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING);
- mpuIntStatus = mpu.getIntStatus();
- // set our DMP Ready flag so the main loop() function knows it's okay to use it
- Serial.println(F("DMP ready! Waiting for first interrupt..."));
- dmpReady = true;
- // get expected DMP packet size for later comparison
- packetSize = mpu.dmpGetFIFOPacketSize();
- } else {
- // ERROR!
- // 1 = initial memory load failed
- // 2 = DMP configuration updates failed
- // (if it's going to break, usually the code will be 1)
- Serial.print(F("DMP Initialization failed (code "));
- Serial.print(devStatus);
- Serial.println(F(")"));
- }
- xTaskCreatePinnedToCore(Task1, "Task1", 8144, NULL, 5, &th, 0); //マルチタスク起動
- leds[0] = CRGB::Green;
- FastLED.show();
- }
- void loop() {
- if ((millis() - previous_time) > gyro_delay ) {
- events.send(getGyroscopeReadings().c_str(),"gyro_readings",millis());
- previous_time = millis();
- }
- if ((millis() - previous_time_acceleration) > accelerometer_delay ) {
- events.send(getAccelerationReadings().c_str(),"accelerometer_readings",millis());
- previous_time_acceleration = millis();
- }
- if ((millis() - previous_time_temp) > temperature_delay ) {
- events.send(getTemperatureReadings().c_str(),"temperature_reading",millis());
- previous_time_temp = millis();
- }
- //dnsServer.processNextRequest();
- }
- void Task1(void *pvParameters){
- //別タスクで実行
- while(1){
- //mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
- //MadgwickFilter.updateIMU(gx / 131.0, gy / 131.0, gz / 131.0, ax / 16384.0, ay / 16384.0, az / 16384.0);
- //ROLL = MadgwickFilter.getRoll();
- //PITCH = MadgwickFilter.getPitch();
- //YAW = MadgwickFilter.getYaw();
- if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) {
- mpu.dmpGetQuaternion(&qa, fifoBuffer);
- mpu.dmpGetEuler(euler, &qa);
- }
- //ROLL = euler[0]
- //PITCH = euler[1]
- //YAW = euler[2]
- //Serial.print(ROLL); Serial.print(",");
- //Serial.print(PITCH); Serial.print(",");
- //Serial.print(YAW);
- //Serial.print("\n");
- vTaskDelay(10);
- if(digitalRead(39) == LOW){
- leds[0] = CRGB::Yellow;
- FastLED.show();
- mpu.CalibrateAccel(6);
- mpu.CalibrateGyro(6);
- Serial.println("\nat 600 Readings");
- mpu.PrintActiveOffsets();
- Serial.println();
- mpu.CalibrateAccel(1);
- mpu.CalibrateGyro(1);
- Serial.println("700 Total Readings");
- mpu.PrintActiveOffsets();
- Serial.println();
- mpu.CalibrateAccel(1);
- mpu.CalibrateGyro(1);
- Serial.println("800 Total Readings");
- mpu.PrintActiveOffsets();
- Serial.println();
- mpu.CalibrateAccel(1);
- mpu.CalibrateGyro(1);
- Serial.println("900 Total Readings");
- mpu.PrintActiveOffsets();
- Serial.println();
- mpu.CalibrateAccel(1);
- mpu.CalibrateGyro(1);
- Serial.println("1000 Total Readings");
- mpu.PrintActiveOffsets();
- Serial.println("\n\n Any of the above offsets will work nice \n\n Lets proof the PID tuning using another method:");
- leds[0] = CRGB::Green;
- FastLED.show();
- }
- }
- vTaskDelete(NULL);
- }
Add Comment
Please, Sign In to add comment