firtel

ESP_MP6050_WebServer.ino

Feb 5th, 2022 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 24.79 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <WiFi.h>
  3. #include <AsyncTCP.h>
  4. #include <ESPAsyncWebServer.h>
  5. //#include <Adafruit_MPU6050.h>
  6. //#include <Adafruit_Sensor.h>
  7. #include <Arduino_JSON.h>
  8. //#include "SPIFFS.h"
  9. #include <FastLED.h>
  10. #include "MPU6050_6Axis_MotionApps20.h"
  11. #include "I2Cdev.h"
  12. #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
  13.     #include "Wire.h"
  14. #endif
  15. #include <ESPmDNS.h>
  16. //#include <DNSServer.h>
  17.  
  18. CRGB leds[1];
  19.  
  20. //#include "MPU6050.h"
  21. MPU6050 mpu;
  22.  
  23. //DNSServer dnsServer;
  24.  
  25.  
  26. //#include <MadgwickAHRS.h>
  27. //Madgwick MadgwickFilter;
  28.  
  29. int16_t ax, ay, az;//加速度 int16_tは2バイトの符号付き整数
  30. int16_t gx, gy, gz;//角速度 同上
  31. float ROLL, PITCH, YAW;
  32.  
  33. #define I2C_SDA 26
  34. #define I2C_SCL 32
  35.  
  36. const char* ssid = "Buffalo-G-D6FA";
  37. const char* password = "iudcnfhdud3xk";
  38.  
  39. AsyncWebServer server(80);
  40. AsyncEventSource events("/events");
  41.  
  42. JSONVar readings;
  43. unsigned long previous_time = 0;  
  44. unsigned long previous_time_temp = 0;
  45. unsigned long previous_time_acceleration = 0;
  46. unsigned long gyro_delay  = 10;
  47. unsigned long temperature_delay  = 1000;
  48. unsigned long accelerometer_delay  = 200;
  49.  
  50. //Adafruit_MPU6050 mpu;
  51. //sensors_event_t a, g, temp;
  52.  
  53. float rotationX, rotationY, rotationZ;
  54. float accelerationX, accelerationY, accelerationZ;
  55. float temperature;
  56.  
  57. float rotationX_error = 0.05;
  58. float rotationY_error = 0.02;
  59. float rotationZ_error = 0.01;
  60.  
  61. TaskHandle_t th; //マルチタスクハンドル定義
  62.  
  63. // MPU control/status vars
  64. bool dmpReady = false;  // set true if DMP init was successful
  65. uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
  66. uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
  67. uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
  68. uint16_t fifoCount;     // count of all bytes currently in FIFO
  69. uint8_t fifoBuffer[64]; // FIFO storage buffer
  70.  
  71. // orientation/motion vars
  72. Quaternion qa;           // [w, x, y, z]         quaternion container
  73. VectorInt16 aa;         // [x, y, z]            accel sensor measurements
  74. VectorInt16 aaReal;     // [x, y, z]            gravity-free accel sensor measurements
  75. VectorInt16 aaWorld;    // [x, y, z]            world-frame accel sensor measurements
  76. VectorFloat gravity;    // [x, y, z]            gravity vector
  77. float euler[3];         // [psi, theta, phi]    Euler angle container
  78. float ypr[3];           // [yaw, pitch, roll]   yaw/pitch/roll container and gravity vector
  79.  
  80. //gzip compressed arry
  81. //https://www.mischianti.org/online-converter-file-to-cpp-gzip-byte-array-3/
  82. //File: index.html.gz, Size: 549
  83. #define index_html_gz_len 549
  84. const uint8_t index_html_gz[] PROGMEM = {  
  85. 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAD, 0x55, 0x5D, 0x6F, 0xD3, 0x30,
  86. 0x14, 0x7D, 0x47, 0xE2, 0x3F, 0x18, 0x3F, 0x20, 0x90, 0xD6, 0x66, 0x63, 0x82, 0x87, 0xE2, 0x44,
  87. 0x9A, 0xD6, 0x0A, 0x1E, 0x98, 0xA8, 0xD6, 0x22, 0x9A, 0xBC, 0xB9, 0xCE, 0x65, 0xF1, 0x96, 0xD8,
  88. 0x91, 0x7D, 0x9B, 0xD1, 0x7F, 0x8F, 0x13, 0xA7, 0x6B, 0xD6, 0x0F, 0xDA, 0x51, 0x9E, 0x62, 0xDF,
  89. 0x73, 0xCF, 0xB9, 0x37, 0xC7, 0xCE, 0x0D, 0x7B, 0x33, 0xFC, 0x7E, 0x3D, 0x8D, 0xC7, 0x23, 0xF2,
  90. 0x75, 0x7A, 0xF3, 0x2D, 0x62, 0x19, 0x16, 0x79, 0xF4, 0xFA, 0x15, 0xCB, 0x80, 0xA7, 0xEE, 0x49,
  91. 0x08, 0x43, 0x89, 0x39, 0x44, 0xA3, 0xC9, 0x98, 0xDC, 0x8C, 0x7F, 0x7C, 0x3A, 0xFF, 0x78, 0x4E,
  92. 0x7E, 0xC2, 0x9C, 0x4C, 0xC0, 0x54, 0x60, 0x58, 0xE0, 0xD1, 0x26, 0xB1, 0x00, 0xE4, 0x44, 0xF1,
  93. 0x02, 0x42, 0x5A, 0x49, 0x78, 0x2C, 0xB5, 0x41, 0x4A, 0x84, 0x56, 0x08, 0x0A, 0x43, 0xFA, 0x28,
  94. 0x53, 0xCC, 0xC2, 0x14, 0x2A, 0x29, 0xA0, 0xD7, 0x6C, 0xCE, 0x88, 0x54, 0x12, 0x25, 0xCF, 0x7B,
  95. 0x56, 0xF0, 0x1C, 0xC2, 0x0B, 0xEA, 0x75, 0x72, 0xA9, 0x1E, 0x88, 0x81, 0x3C, 0xA4, 0xD2, 0xB1,
  96. 0x29, 0xC9, 0x0C, 0xFC, 0x0A, 0x69, 0xCA, 0x91, 0x0F, 0xCE, 0xB6, 0x52, 0x2C, 0x2E, 0x73, 0xB0,
  97. 0x19, 0x80, 0xAB, 0x85, 0xCB, 0xD2, 0xD5, 0x46, 0xF8, 0x8D, 0x81, 0xB0, 0x76, 0x45, 0x6C, 0x32,
  98. 0xFA, 0x75, 0xC0, 0x73, 0xAD, 0x30, 0xB2, 0xC4, 0x6E, 0xF2, 0x3D, 0xAF, 0xB8, 0x8F, 0x52, 0x62,
  99. 0x8D, 0x70, 0x51, 0xC7, 0x84, 0x7E, 0x21, 0x55, 0xFF, 0xDE, 0xB1, 0x58, 0xE0, 0xC1, 0xDA, 0x96,
  100. 0xA0, 0xF5, 0x85, 0xCD, 0x75, 0xBA, 0xF4, 0x7A, 0xA9, 0xAC, 0x88, 0xC8, 0xB9, 0xB5, 0x8E, 0xA7,
  101. 0x4B, 0xC5, 0x2B, 0x5F, 0xC7, 0x21, 0xD9, 0x45, 0xF4, 0xE4, 0xD9, 0x04, 0x94, 0xD5, 0x86, 0xDC,
  102. 0x3A, 0xBA, 0x54, 0x77, 0xD6, 0x09, 0x5D, 0x78, 0x7A, 0xE0, 0xF8, 0x5B, 0x42, 0xAD, 0x6B, 0x4F,
  103. 0x4A, 0x5D, 0x88, 0x9B, 0xD4, 0xAE, 0x80, 0x6D, 0x68, 0x8D, 0x38, 0xAC, 0xEC, 0x22, 0xBD, 0xE6,
  104. 0xA8, 0x68, 0xF4, 0x65, 0x69, 0xB4, 0x15, 0xBA, 0x04, 0x16, 0x94, 0xCF, 0x92, 0x23, 0x66, 0x4B,
  105. 0xAE, 0x56, 0x14, 0xE3, 0x3B, 0xA5, 0xD1, 0x6C, 0x40, 0x3C, 0x20, 0x53, 0x17, 0xD5, 0xC8, 0x51,
  106. 0x6A, 0x35, 0x6B, 0x6C, 0x71, 0xD1, 0x88, 0x18, 0x9E, 0xB6, 0xCB, 0x23, 0x05, 0xE3, 0x5D, 0x82,
  107. 0xF1, 0x09, 0x82, 0xC9, 0x2E, 0xC1, 0xE4, 0x90, 0xE0, 0xDA, 0xF9, 0x7F, 0xF3, 0xF1, 0x4A, 0x08,
  108. 0xC8, 0xC1, 0x68, 0x77, 0xED, 0xEB, 0x0F, 0xE1, 0xE5, 0x5E, 0x72, 0x2F, 0xB0, 0xE9, 0x67, 0x11,
  109. 0x58, 0x66, 0x17, 0x65, 0xF4, 0xC1, 0x05, 0xDC, 0xE3, 0x04, 0x6F, 0xBB, 0x05, 0xE2, 0xFF, 0x54,
  110. 0x20, 0xD9, 0x57, 0x20, 0x79, 0x49, 0x81, 0x53, 0xBD, 0x9F, 0x42, 0x51, 0xD6, 0x75, 0x17, 0xE6,
  111. 0xD8, 0x5B, 0xBC, 0x6E, 0x1A, 0xD7, 0xDC, 0x75, 0xCB, 0x6F, 0x53, 0xB8, 0xFB, 0x7C, 0xBD, 0xC7,
  112. 0x8A, 0x5D, 0x1D, 0x5C, 0x0E, 0xC9, 0x95, 0x92, 0x45, 0xF3, 0xEA, 0x83, 0x0D, 0xC2, 0x7C, 0x81,
  113. 0xA8, 0xDB, 0xDB, 0x08, 0xB6, 0x9E, 0x4C, 0x5A, 0x89, 0x5C, 0x8A, 0x87, 0x76, 0x3F, 0xD6, 0x56,
  114. 0xD6, 0xBC, 0x77, 0x98, 0x49, 0xFB, 0x9E, 0x46, 0xB7, 0xA3, 0xC9, 0x68, 0xCA, 0x02, 0x4F, 0xFB,
  115. 0x9B, 0xD0, 0xEC, 0x90, 0xD2, 0xEC, 0x18, 0x95, 0xF8, 0x90, 0x4A, 0x7C, 0x8C, 0x4A, 0x72, 0x48,
  116. 0x25, 0xD9, 0x52, 0xE9, 0x9E, 0xFA, 0xB3, 0x75, 0xF7, 0xFC, 0x17, 0x73, 0xE8, 0x6D, 0x8C, 0xBF,
  117. 0x36, 0xA3, 0x2E, 0x7D, 0x39, 0xAC, 0x13, 0xEA, 0x73, 0xDB, 0x21, 0xB5, 0x5A, 0x1C, 0x33, 0xE2,
  118. 0xFD, 0x66, 0xFF, 0x7C, 0x0F, 0xDA, 0x01, 0xEF, 0x22, 0xF5, 0x1F, 0xF1, 0x0F, 0x9C, 0x9A, 0x8D,
  119. 0x6D, 0x27, 0x07, 0x00, 0x00
  120. };
  121. //File: script.js.gz, Size: 937
  122. #define script_js_gz_len 937
  123. const uint8_t script_js_gz[] PROGMEM = {  
  124. 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC5, 0x57, 0x51, 0x4F, 0x1B, 0x39,
  125. 0x10, 0x7E, 0x47, 0xE2, 0x3F, 0x98, 0x7D, 0x89, 0x57, 0x5D, 0x6D, 0x82, 0x20, 0xD7, 0x53, 0x51,
  126. 0x5F, 0x80, 0x1C, 0xDC, 0x09, 0x5A, 0x44, 0x90, 0x68, 0x7B, 0xAA, 0x2A, 0x67, 0x77, 0x48, 0xDC,
  127. 0x4B, 0xD6, 0x39, 0xDB, 0x0B, 0x09, 0x28, 0xFF, 0xFD, 0xC6, 0x5E, 0xEF, 0x12, 0x27, 0x1B, 0xC8,
  128. 0xAA, 0x6A, 0x8F, 0x17, 0x12, 0x7B, 0xE6, 0x9B, 0x6F, 0xBE, 0x19, 0x8F, 0x9D, 0x31, 0x68, 0xA2,
  129. 0x12, 0xC8, 0x20, 0x22, 0x09, 0x9B, 0x80, 0x64, 0x11, 0x91, 0x90, 0xA5, 0x20, 0x21, 0xC5, 0x95,
  130. 0x7C, 0x00, 0x47, 0xBB, 0x3B, 0xBB, 0x3B, 0x77, 0x79, 0x96, 0x68, 0x2E, 0x32, 0x32, 0x65, 0xB8,
  131. 0xAB, 0x6F, 0x79, 0xAA, 0x47, 0x14, 0xC6, 0x30, 0x09, 0xC9, 0xD3, 0xEE, 0x0E, 0x41, 0x17, 0x9D,
  132. 0xCB, 0x8C, 0x98, 0x95, 0xB8, 0x30, 0xE9, 0xE1, 0x47, 0xFC, 0x17, 0x27, 0x63, 0x5E, 0x3A, 0x20,
  133. 0xD2, 0xA2, 0x06, 0xEC, 0x1C, 0xF8, 0x70, 0xA4, 0x9B, 0xA0, 0x15, 0x1E, 0x6B, 0x70, 0x3C, 0xE3,
  134. 0x9A, 0xB3, 0x31, 0x7F, 0x84, 0x6F, 0x07, 0xA7, 0x34, 0xB4, 0x50, 0x36, 0x35, 0xF2, 0x9E, 0x64,
  135. 0xF0, 0x40, 0x6E, 0xCE, 0xAF, 0x7B, 0xBD, 0xB8, 0x6F, 0x56, 0x68, 0x78, 0x54, 0xED, 0xC6, 0x03,
  136. 0x96, 0xFC, 0x33, 0x94, 0x22, 0xCF, 0x52, 0xCF, 0xF0, 0x44, 0x8C, 0x85, 0xA4, 0x9D, 0xD9, 0x9D,
  137. 0xFD, 0x0B, 0xAD, 0x0E, 0xC4, 0x89, 0xE4, 0x19, 0x5E, 0x81, 0x54, 0x53, 0x40, 0x0E, 0xF7, 0x70,
  138. 0x62, 0x77, 0xE9, 0xDB, 0x6E, 0xE4, 0x29, 0x95, 0x8A, 0x24, 0xB7, 0xFC, 0x87, 0x50, 0xA6, 0x72,
  139. 0x3C, 0xFF, 0x33, 0xA5, 0xC1, 0xC1, 0xA9, 0x91, 0x38, 0x08, 0x43, 0xD2, 0xF6, 0xD5, 0x78, 0xDD,
  140. 0x23, 0x22, 0x9D, 0x78, 0x3F, 0x22, 0xFB, 0x9D, 0x4E, 0xA7, 0xE4, 0xE6, 0x0A, 0x27, 0x3D, 0x76,
  141. 0xB7, 0x30, 0x38, 0xBB, 0xB8, 0x76, 0x3B, 0xF4, 0x89, 0xB0, 0xCC, 0x8A, 0xC4, 0xD4, 0x3B, 0xA2,
  142. 0x65, 0x0E, 0x64, 0x51, 0x48, 0x51, 0xFA, 0xC6, 0x0A, 0x74, 0x1F, 0x25, 0xA4, 0xCD, 0xF8, 0x47,
  143. 0x4D, 0xE9, 0x97, 0x9C, 0x37, 0x59, 0xB6, 0x0A, 0xCB, 0x56, 0x18, 0xB3, 0xE9, 0x14, 0xB9, 0x9D,
  144. 0x8C, 0xF8, 0x38, 0xA5, 0x15, 0xCB, 0x54, 0x4C, 0x9C, 0x75, 0x55, 0x18, 0x91, 0x29, 0x4D, 0x86,
  145. 0x20, 0x26, 0xA0, 0xE5, 0xDC, 0x93, 0xE0, 0x58, 0xCC, 0xCE, 0xDC, 0x3A, 0xC5, 0xCA, 0xA0, 0x6A,
  146. 0x87, 0x85, 0xD7, 0x3D, 0x93, 0xB6, 0xC7, 0x2F, 0x99, 0x06, 0x89, 0xAA, 0x28, 0x74, 0xFB, 0x9B,
  147. 0x18, 0xB4, 0x67, 0xE7, 0x4B, 0x50, 0xA3, 0x63, 0xA6, 0x78, 0x52, 0x1A, 0xD1, 0xA7, 0xC4, 0x74,
  148. 0xC6, 0xBB, 0xCE, 0xAC, 0x73, 0xD0, 0x39, 0xEC, 0xC2, 0x22, 0x8C, 0xB6, 0xF6, 0xE8, 0xA6, 0xBF,
  149. 0x1F, 0x0E, 0x0E, 0xD1, 0x63, 0xFB, 0x20, 0x07, 0xDD, 0xDF, 0xBA, 0x6C, 0xBF, 0x49, 0x90, 0x5F,
  150. 0x4D, 0xEB, 0xEB, 0x11, 0x59, 0x2E, 0xC1, 0xC4, 0xD9, 0x7A, 0x25, 0x30, 0x48, 0x7F, 0xB0, 0xA4,
  151. 0x52, 0x9A, 0x7A, 0xB2, 0x57, 0x35, 0xC4, 0xC5, 0x35, 0x37, 0x5A, 0xD6, 0x34, 0xAA, 0xA0, 0x97,
  152. 0x4F, 0x2F, 0x4B, 0x53, 0x0B, 0x56, 0xAC, 0x15, 0xC7, 0x33, 0x9E, 0x0A, 0xC5, 0xCD, 0x4C, 0x88,
  153. 0x1F, 0x11, 0xAE, 0xEB, 0x37, 0x78, 0xF1, 0x81, 0x7A, 0x43, 0x2F, 0x5C, 0x1B, 0x26, 0x22, 0xBB,
  154. 0xE5, 0x59, 0x2A, 0x1E, 0xAE, 0x41, 0x99, 0xD3, 0x50, 0x4C, 0x13, 0x87, 0xCE, 0xEC, 0x71, 0x47,
  155. 0xE4, 0x9F, 0x7D, 0xC6, 0x2D, 0xF1, 0x76, 0x7B, 0x35, 0xEC, 0x83, 0x65, 0x16, 0xF3, 0x2C, 0x03,
  156. 0x69, 0x83, 0x23, 0xB2, 0xB7, 0x58, 0x0D, 0xC8, 0x8A, 0x72, 0x3E, 0x4D, 0x51, 0xBB, 0x2B, 0x29,
  157. 0xBE, 0x83, 0xCD, 0x0F, 0xA5, 0x97, 0x7C, 0x46, 0xCB, 0x08, 0x6B, 0xA7, 0x7F, 0x2D, 0x44, 0x54,
  158. 0x13, 0xE0, 0xFF, 0x9C, 0x1C, 0xB6, 0x5A, 0x8E, 0x12, 0xB6, 0x40, 0xEF, 0x1E, 0x0D, 0x2F, 0xB8,
  159. 0xD2, 0x58, 0x54, 0x49, 0x5B, 0xD2, 0x56, 0xAD, 0x15, 0xAD, 0x94, 0x31, 0x22, 0x77, 0xD8, 0x6D,
  160. 0x50, 0x20, 0xAC, 0x5C, 0x17, 0xC5, 0xDA, 0x1D, 0xA1, 0x7B, 0x7B, 0x0E, 0xD6, 0x62, 0xF6, 0x45,
  161. 0x2E, 0x13, 0x70, 0x17, 0x93, 0x99, 0x17, 0xCA, 0x2E, 0xB8, 0x2E, 0x5D, 0x32, 0xA1, 0xAD, 0x36,
  162. 0x98, 0x6F, 0xAA, 0x55, 0x76, 0x73, 0x61, 0x59, 0xC3, 0x4E, 0xE0, 0x40, 0x43, 0x6E, 0x65, 0xAF,
  163. 0xD1, 0x12, 0xBE, 0x38, 0x41, 0x62, 0x0C, 0xF1, 0x58, 0x0C, 0x69, 0x60, 0xBD, 0x14, 0x39, 0x11,
  164. 0xA8, 0x78, 0xA2, 0x21, 0x0D, 0x0A, 0xBD, 0x17, 0x5E, 0x16, 0x2F, 0x84, 0x01, 0x29, 0x85, 0xAC,
  165. 0x8F, 0x63, 0xF2, 0x84, 0x58, 0x33, 0x89, 0x2A, 0xE3, 0x81, 0x60, 0xE9, 0xBC, 0xAF, 0xB1, 0x3F,
  166. 0xC8, 0xDE, 0xFB, 0xE5, 0x94, 0xE2, 0x8F, 0x57, 0xBD, 0x0F, 0x95, 0x4F, 0x3D, 0xBB, 0x53, 0xAE,
  167. 0x92, 0x15, 0x82, 0x48, 0xB1, 0x11, 0xCF, 0xE1, 0x5C, 0x8A, 0x6F, 0x86, 0x04, 0xCF, 0x86, 0xAA,
  168. 0x9E, 0xAF, 0x11, 0x5E, 0x0C, 0xBE, 0xA3, 0xEA, 0x7F, 0xF5, 0x3F, 0x7E, 0x30, 0x8F, 0x02, 0x05,
  169. 0x98, 0x00, 0xF6, 0x34, 0x2B, 0x63, 0x6E, 0x6C, 0x1C, 0x29, 0x30, 0x35, 0x84, 0xFB, 0x14, 0x84,
  170. 0xAE, 0x79, 0x6F, 0x2E, 0x2F, 0x10, 0x09, 0xF1, 0xE2, 0x6A, 0x6F, 0x5B, 0x90, 0xCF, 0x2F, 0x80,
  171. 0x7C, 0xDE, 0x16, 0xE4, 0xCB, 0x0B, 0x20, 0x5F, 0x9C, 0x5A, 0xC5, 0x30, 0xAC, 0x96, 0xE3, 0xD9,
  172. 0x86, 0x60, 0xBE, 0xD5, 0xE3, 0x86, 0xBC, 0x7C, 0xAB, 0x79, 0x4D, 0x4C, 0x63, 0xF5, 0xEA, 0x88,
  173. 0x6C, 0x50, 0x54, 0x0D, 0x93, 0x29, 0x7A, 0xE1, 0x43, 0x0E, 0xCA, 0xDA, 0x6E, 0xD1, 0xF2, 0x35,
  174. 0x5E, 0x41, 0x44, 0xB6, 0x2C, 0xF4, 0x92, 0xF3, 0x8A, 0xC0, 0x05, 0x40, 0xB3, 0x04, 0x58, 0x92,
  175. 0xE0, 0x03, 0x54, 0x9A, 0xAB, 0x07, 0xE4, 0x2B, 0xED, 0xE9, 0xE5, 0x50, 0xEF, 0xB8, 0x96, 0xC6,
  176. 0x8F, 0xB4, 0xB4, 0x0B, 0xB1, 0xB1, 0xAD, 0xBD, 0xFD, 0x26, 0x60, 0x75, 0xED, 0xED, 0xED, 0x37,
  177. 0x01, 0xAB, 0x6B, 0x73, 0x6F, 0x7F, 0xAD, 0x20, 0xFE, 0x15, 0x8C, 0x43, 0x1C, 0xF4, 0x95, 0xBB,
  178. 0xC9, 0xED, 0xEF, 0x03, 0xF3, 0xDC, 0xAB, 0x06, 0xF1, 0x6C, 0x54, 0x3E, 0x74, 0x3F, 0x5D, 0x5E,
  179. 0x9C, 0x6B, 0x3D, 0xBD, 0x86, 0x7F, 0x73, 0x50, 0xDA, 0x5D, 0x6A, 0xB8, 0x1D, 0x9B, 0x41, 0x4B,
  180. 0x83, 0xB3, 0xDE, 0x0D, 0xAA, 0x1F, 0xB4, 0x83, 0x37, 0x0E, 0x23, 0xE6, 0xF8, 0xDB, 0xC6, 0x3C,
  181. 0x7E, 0xDD, 0x9B, 0x61, 0xA9, 0x7A, 0xCF, 0x16, 0xCF, 0x28, 0x0A, 0x4F, 0x83, 0x05, 0x5D, 0xFC,
  182. 0x07, 0xCC, 0xC6, 0xF3, 0x34, 0x2D, 0x0D, 0x00, 0x00
  183. };
  184. //File: style.css.gz, Size: 462
  185. #define style_css_gz_len 462
  186. const uint8_t style_css_gz[] PROGMEM = {  
  187. 0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAD, 0x53, 0x4D, 0x6B, 0xDC, 0x30,
  188. 0x10, 0xBD, 0x07, 0xF2, 0x1F, 0x06, 0x42, 0x20, 0x81, 0xD5, 0xA2, 0x75, 0x37, 0x10, 0xB4, 0xF7,
  189. 0x1C, 0x73, 0x28, 0x3D, 0xA4, 0xBD, 0xC9, 0xD6, 0xD8, 0x16, 0xD1, 0x87, 0x91, 0xC7, 0xF1, 0x26,
  190. 0xA5, 0xFF, 0xBD, 0xB2, 0xB5, 0xDE, 0x28, 0x5F, 0x7B, 0x69, 0x75, 0x30, 0x62, 0x66, 0xF4, 0xE6,
  191. 0xBD, 0x37, 0xE3, 0x96, 0xAC, 0x81, 0xDF, 0xE7, 0x67, 0x00, 0xB5, 0x77, 0xC4, 0x6A, 0x69, 0xB5,
  192. 0x79, 0x16, 0x70, 0x8F, 0x23, 0xFC, 0xD0, 0x16, 0x7B, 0xF8, 0xEE, 0xAD, 0x74, 0xBB, 0xA9, 0x40,
  193. 0xE9, 0xBE, 0x33, 0x32, 0x26, 0xB5, 0x33, 0xDA, 0x21, 0x2B, 0x8D, 0xAF, 0x1E, 0xE7, 0x0C, 0xE1,
  194. 0x9E, 0x98, 0x34, 0xBA, 0x71, 0x02, 0x2A, 0x74, 0x84, 0x21, 0x86, 0xFF, 0x9C, 0x9F, 0x75, 0x19,
  195. 0x72, 0xAF, 0x5F, 0x50, 0xC0, 0x66, 0x5D, 0x04, 0xB4, 0x29, 0x5B, 0x7A, 0xF5, 0x9C, 0x0A, 0xAC,
  196. 0x0C, 0x8D, 0x8E, 0x6F, 0x79, 0x4A, 0xAC, 0xC9, 0x77, 0x4E, 0x3E, 0xA5, 0x9C, 0x7F, 0xC2, 0x50,
  197. 0x1B, 0x3F, 0x0A, 0x68, 0xB5, 0x52, 0x98, 0xA8, 0x94, 0xB2, 0x7A, 0x6C, 0x82, 0x1F, 0x9C, 0x62,
  198. 0x95, 0x37, 0x3E, 0x08, 0xB8, 0x28, 0x39, 0xDF, 0xF2, 0xED, 0x9C, 0x5D, 0x42, 0xF5, 0x7C, 0x76,
  199. 0xEF, 0x29, 0x1C, 0x09, 0xAC, 0xAB, 0x18, 0x8D, 0x74, 0x53, 0xA3, 0x4E, 0x2A, 0xA5, 0x5D, 0x23,
  200. 0xA0, 0xE0, 0xDD, 0x7E, 0x29, 0x90, 0x41, 0xA5, 0xEC, 0xC7, 0x8E, 0x63, 0xAB, 0x09, 0x67, 0x70,
  201. 0x3F, 0xD0, 0x64, 0x48, 0x84, 0xEE, 0xF6, 0xD0, 0x7B, 0xA3, 0x55, 0xF6, 0x9C, 0x91, 0x26, 0x83,
  202. 0x09, 0x24, 0xBD, 0xCC, 0xA9, 0xCE, 0xBC, 0x46, 0xD4, 0x4D, 0x4B, 0x02, 0x4A, 0x6F, 0xF2, 0x97,
  203. 0xFD, 0x62, 0xCE, 0x9E, 0x8D, 0x5A, 0x51, 0x2B, 0xE0, 0x96, 0x27, 0x6A, 0x99, 0x63, 0x20, 0x07,
  204. 0xF2, 0x6F, 0xC7, 0xD3, 0x84, 0x48, 0x60, 0xFE, 0xB2, 0x46, 0x76, 0x51, 0x4F, 0x12, 0x0C, 0x29,
  205. 0x44, 0x68, 0x63, 0x19, 0xE1, 0x24, 0x63, 0xB0, 0xAE, 0x17, 0x10, 0xB0, 0x43, 0x49, 0x57, 0x13,
  206. 0x10, 0xAB, 0x35, 0xAD, 0xC0, 0x6A, 0x17, 0x9B, 0x5E, 0x15, 0x53, 0xB7, 0x15, 0x6C, 0xEA, 0x70,
  207. 0x7D, 0x7D, 0xA0, 0x15, 0x50, 0x4E, 0x1E, 0x9D, 0x1C, 0xEB, 0xBA, 0x1A, 0xCA, 0x09, 0x7D, 0xB6,
  208. 0x76, 0x2E, 0x3C, 0xB0, 0xDF, 0x70, 0x7E, 0xF9, 0xC5, 0xF4, 0x5E, 0xBD, 0x6C, 0x0F, 0x5E, 0x7C,
  209. 0x9B, 0xA5, 0x1E, 0x75, 0x1E, 0x55, 0x1E, 0xA6, 0xC4, 0xE2, 0x8A, 0x88, 0xE2, 0x32, 0x75, 0xBC,
  210. 0x08, 0xD8, 0x63, 0x6A, 0x55, 0xFA, 0xA0, 0x30, 0x02, 0x3A, 0xEF, 0xF0, 0xAB, 0x5D, 0xF8, 0x64,
  211. 0x79, 0x78, 0x3C, 0x77, 0x77, 0xBB, 0x37, 0x6B, 0xB0, 0x59, 0xBC, 0xFE, 0x74, 0xBB, 0x4F, 0xFD,
  212. 0x0E, 0xB9, 0x31, 0xDB, 0x49, 0xC5, 0x62, 0xC0, 0xCD, 0x02, 0x99, 0x68, 0xB2, 0x10, 0xDD, 0x1C,
  213. 0xE2, 0x04, 0xB6, 0xCB, 0xC2, 0x25, 0x25, 0x0F, 0x2B, 0x48, 0x97, 0x9F, 0xCB, 0xE5, 0xD7, 0xBF,
  214. 0x88, 0xCB, 0xD6, 0x2D, 0x77, 0xEF, 0x55, 0xE0, 0x12, 0x2D, 0x3D, 0x91, 0xB7, 0xFF, 0x53, 0x79,
  215. 0x36, 0xFD, 0xE2, 0xB4, 0xF6, 0xBF, 0x7D, 0x1E, 0xFF, 0x94, 0x88, 0x04, 0x00, 0x00
  216. };
  217. //File: three.min.js.gz, Size: 144223
  218. #define three_min_js_gz_len 144223
  219. const uint8_t three_min_js_gz[] PROGMEM = {  
  220.  
  221. };
  222.  
  223.  
  224.  
  225. String getGyroscopeReadings(){
  226.   /*mpu.getEvent(&a, &g, &temp);
  227.  
  228.   float rotationX_temporary = g.gyro.x;
  229.   if(abs(rotationX_temporary) > rotationX_error)  {
  230.     rotationX += rotationX_temporary*0.01;
  231.   }
  232.  
  233.   float rotationY_temporary = g.gyro.y;
  234.   if(abs(rotationY_temporary) > rotationY_error) {
  235.     rotationY += rotationY_temporary*0.01;
  236.   }
  237.  
  238.   float rotationZ_temporary = g.gyro.z;
  239.   if(abs(rotationZ_temporary) > rotationZ_error) {
  240.     rotationZ += rotationZ_temporary*0.01;
  241.   }*/
  242.   //rotationX = ROLL*(3.14/180);
  243.   //rotationY = PITCH*(3.14/180);
  244.   //rotationZ = YAW*(3.14/180);
  245.  
  246.   rotationX = euler[2];
  247.   rotationY = -1 * euler[1];
  248.   rotationZ = -1 * euler[0];
  249.  
  250.   readings["rotationX"] = String(rotationX);
  251.   readings["rotationY"] = String(rotationY);
  252.   readings["rotationZ"] = String(rotationZ);
  253.  
  254.   String jsonString = JSON.stringify(readings);
  255.   return jsonString;
  256. }
  257.  
  258. String getAccelerationReadings() {
  259.   //mpu.getEvent(&a, &g, &temp);
  260.   //accelerationX = a.acceleration.x;
  261.   //accelerationY = a.acceleration.y;
  262.   //accelerationZ = a.acceleration.z;
  263.   readings["accelerationX"] = String(accelerationX);
  264.   readings["accelerationY"] = String(accelerationY);
  265.   readings["accelerationZ"] = String(accelerationZ);
  266.   String accString = JSON.stringify (readings);
  267.   return accString;
  268. }
  269.  
  270. String getTemperatureReadings(){
  271.   //mpu.getEvent(&a, &g, &temp);
  272.   //temperature = temp.temperature;
  273.   return String(temperature);
  274. }
  275.  
  276. void SoftAPmode(){
  277.   uint8_t macWifi[6];
  278.   #ifdef ESP32
  279.   esp_read_mac(macWifi, ESP_MAC_WIFI_STA);
  280.   char wifiname[11];
  281.   sprintf(wifiname,"ESP32-%02X%02X",macWifi[4],macWifi[5]);
  282.   #elif defined(ESP8266)
  283.   WiFi.begin();
  284.   WiFi.macAddress(macWifi);
  285.   char wifiname[9];
  286.   sprintf(wifiname,"ESP-%02X%02X",macWifi[4],macWifi[5]);
  287.   #endif
  288.   WiFi.mode(WIFI_AP);
  289.   WiFi.softAP(wifiname);
  290.   WiFi.begin();
  291. }
  292.  
  293. void setup() {
  294.   FastLED.addLeds<NEOPIXEL, 27>(leds, 1);
  295.   FastLED.setBrightness(5);
  296.   leds[0] = CRGB::Red;
  297.   FastLED.show();
  298.   Wire.begin(26,32);
  299.   Wire.setClock(400000);
  300.   Serial.begin(115200);
  301.   boolean SoftAP = false;
  302.  
  303.   if(WiFi.SSID() != NULL){
  304.     WiFi.mode(WIFI_STA);
  305.     WiFi.begin();
  306.   }else{
  307.     SoftAP = true;
  308.   }
  309.   unsigned int cnt = 0;
  310.   while (WiFi.status() != WL_CONNECTED) {
  311.     cnt++;
  312.     delay(100);
  313.     //led_toggle();//LED点滅
  314.     //Wifiアクセスポイントに接続できない場合Soft APモードに変更する
  315.     if(cnt >= 100 || digitalRead(39) == LOW || SoftAP == true){//接続トライ100カウント以上もしくは書き込みボタンを押すとSoft APモードに変更
  316.       SoftAP = true;
  317.       leds[0] = CRGB::Pink;
  318.       FastLED.show();
  319.       SoftAPmode();
  320.       //dnsServer.start(53, "*", WiFi.softAPIP());
  321.       break;//Soft APにしてもbreakしないと抜けられない
  322.     }
  323.  
  324.    
  325.     Serial.print(".");
  326.    
  327.   }
  328.   Serial.println("");
  329.   Serial.println("WiFi connected");  
  330.   Serial.println("IP address: ");
  331.   if(SoftAP == false){
  332.     Serial.println(WiFi.localIP());
  333.   }else{
  334.     Serial.println(WiFi.softAPIP());
  335.   }
  336.  
  337.   if (!MDNS.begin("esp")) {
  338.    
  339.     Serial.println("Error setting up MDNS responder!");
  340.    
  341.   }
  342.   MDNS.addService("http", "tcp", 80);
  343.  
  344.   //if (!SPIFFS.begin()) {
  345.   //  Serial.println("An error has occurred while mounting SPIFFS");
  346.   //}
  347.   //Serial.println("SPIFFS mounted successfully");
  348.  
  349.   //if (!mpu.begin()) {
  350.   //  Serial.println("MPU6050 is not properly connected. Check circuit!");
  351.   //  while (1) {
  352.   //    delay(10);
  353.   //  }
  354.   //}
  355.   //Serial.println("MPU6050 Found");
  356.   /*
  357.   server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
  358.     request->send(SPIFFS, "/index.html", "text/html");
  359.   });
  360.  
  361.   server.serveStatic("/", SPIFFS, "/");*/
  362.  
  363.   server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
  364.     AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", index_html_gz, index_html_gz_len);
  365.     response->addHeader(F("Content-Encoding"), F("gzip"));
  366.     request->send(response);
  367.   });
  368.   server.on("/script.js", HTTP_GET, [](AsyncWebServerRequest *request){
  369.     AsyncWebServerResponse *response = request->beginResponse_P(200, "text/javascript", script_js_gz, script_js_gz_len);
  370.     response->addHeader(F("Content-Encoding"), F("gzip"));
  371.     request->send(response);
  372.   });
  373.   server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
  374.     AsyncWebServerResponse *response = request->beginResponse_P(200, "text/css", style_css_gz, style_css_gz_len);
  375.     response->addHeader(F("Content-Encoding"), F("gzip"));
  376.     request->send(response);
  377.   });
  378.   server.on("/three.min.js", HTTP_GET, [](AsyncWebServerRequest *request){
  379.     AsyncWebServerResponse *response = request->beginResponse_P(200, "text/javascript", three_min_js_gz, three_min_js_gz_len);
  380.     response->addHeader(F("Content-Encoding"), F("gzip"));
  381.     request->send(response);
  382.   });
  383.   server.on("/reset", HTTP_GET, [](AsyncWebServerRequest *request){
  384.     rotationX=0;
  385.     rotationY=0;
  386.     rotationZ=0;
  387.     request->send(200, "text/plain", "OK");
  388.   });
  389.  
  390.   server.on("/resetX", HTTP_GET, [](AsyncWebServerRequest *request){
  391.     rotationX=0;
  392.     request->send(200, "text/plain", "OK");
  393.   });
  394.  
  395.   server.on("/resetY", HTTP_GET, [](AsyncWebServerRequest *request){
  396.     rotationY=0;
  397.     request->send(200, "text/plain", "OK");
  398.   });
  399.  
  400.   server.on("/resetZ", HTTP_GET, [](AsyncWebServerRequest *request){
  401.     rotationZ=0;
  402.     request->send(200, "text/plain", "OK");
  403.   });
  404.  
  405.   events.onConnect([](AsyncEventSourceClient *client){
  406.     if(client->lastId()){
  407.       Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
  408.     }
  409.     client->send("hello!", NULL, millis(), 10000);
  410.   });
  411.  
  412.  
  413.   server.addHandler(&events);
  414.  
  415.   server.begin();
  416.  
  417.   mpu.initialize();//I2Cデバイスの初期化
  418.   //delay(300);
  419.   //MadgwickFilter.begin(200);//フィルタのサンプリングを100Hzで
  420.   pinMode(39,INPUT_PULLUP);
  421.   //mpu.CalibrateAccel(1);
  422.   //mpu.CalibrateGyro(1);
  423.   devStatus = mpu.dmpInitialize();
  424.   //OFFSETS -2429, -1480, 1505, 94, -17, 41
  425.   mpu.setXAccelOffset(-2429);
  426.   mpu.setYAccelOffset(-1480);
  427.   mpu.setZAccelOffset(1505);// 1688 factory default for my test chip
  428.   mpu.setXGyroOffset(94);
  429.   mpu.setYGyroOffset(-17);
  430.   mpu.setZGyroOffset(41);
  431.         // make sure it worked (returns 0 if so)
  432.     if (devStatus == 0) {
  433.         // Calibration Time: generate offsets and calibrate our MPU6050
  434.         mpu.CalibrateAccel(6);
  435.         mpu.CalibrateGyro(6);
  436.         mpu.PrintActiveOffsets();
  437.         // turn on the DMP, now that it's ready
  438.         Serial.println(F("Enabling DMP..."));
  439.         mpu.setDMPEnabled(true);
  440.         // enable Arduino interrupt detection
  441.         Serial.print(F("Enabling interrupt detection (Arduino external interrupt "));
  442.         //Serial.print(digitalPinToInterrupt(INTERRUPT_PIN));
  443.         Serial.println(F(")..."));
  444.         //attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING);
  445.         mpuIntStatus = mpu.getIntStatus();
  446.  
  447.         // set our DMP Ready flag so the main loop() function knows it's okay to use it
  448.         Serial.println(F("DMP ready! Waiting for first interrupt..."));
  449.         dmpReady = true;
  450.  
  451.         // get expected DMP packet size for later comparison
  452.         packetSize = mpu.dmpGetFIFOPacketSize();
  453.     } else {
  454.         // ERROR!
  455.         // 1 = initial memory load failed
  456.         // 2 = DMP configuration updates failed
  457.         // (if it's going to break, usually the code will be 1)
  458.         Serial.print(F("DMP Initialization failed (code "));
  459.         Serial.print(devStatus);
  460.         Serial.println(F(")"));
  461.     }
  462.  
  463.   xTaskCreatePinnedToCore(Task1, "Task1", 8144, NULL, 5, &th, 0); //マルチタスク起動
  464.  
  465.   leds[0] = CRGB::Green;
  466.   FastLED.show();
  467. }
  468.  
  469. void loop() {
  470.   if ((millis() - previous_time) > gyro_delay ) {
  471.     events.send(getGyroscopeReadings().c_str(),"gyro_readings",millis());
  472.     previous_time = millis();
  473.   }
  474.   if ((millis() - previous_time_acceleration) > accelerometer_delay ) {
  475.     events.send(getAccelerationReadings().c_str(),"accelerometer_readings",millis());
  476.     previous_time_acceleration = millis();
  477.   }
  478.   if ((millis() - previous_time_temp) > temperature_delay ) {
  479.     events.send(getTemperatureReadings().c_str(),"temperature_reading",millis());
  480.     previous_time_temp = millis();
  481.   }
  482.   //dnsServer.processNextRequest();
  483. }
  484. void Task1(void *pvParameters){
  485.   //別タスクで実行
  486.   while(1){
  487.   //mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  488.   //MadgwickFilter.updateIMU(gx / 131.0, gy / 131.0, gz / 131.0, ax / 16384.0, ay / 16384.0, az / 16384.0);
  489.   //ROLL = MadgwickFilter.getRoll();
  490.   //PITCH = MadgwickFilter.getPitch();
  491.   //YAW  = MadgwickFilter.getYaw();
  492.   if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) {
  493.     mpu.dmpGetQuaternion(&qa, fifoBuffer);
  494.     mpu.dmpGetEuler(euler, &qa);
  495.   }
  496.   //ROLL = euler[0]
  497.   //PITCH = euler[1]
  498.   //YAW  = euler[2]
  499.   //Serial.print(ROLL); Serial.print(",");
  500.   //Serial.print(PITCH); Serial.print(",");
  501.   //Serial.print(YAW);
  502.   //Serial.print("\n");
  503.   vTaskDelay(10);
  504.   if(digitalRead(39) == LOW){
  505.         leds[0] = CRGB::Yellow;
  506.         FastLED.show();
  507.         mpu.CalibrateAccel(6);
  508.         mpu.CalibrateGyro(6);
  509.         Serial.println("\nat 600 Readings");
  510.         mpu.PrintActiveOffsets();
  511.         Serial.println();
  512.         mpu.CalibrateAccel(1);
  513.         mpu.CalibrateGyro(1);
  514.         Serial.println("700 Total Readings");
  515.         mpu.PrintActiveOffsets();
  516.         Serial.println();
  517.         mpu.CalibrateAccel(1);
  518.         mpu.CalibrateGyro(1);
  519.         Serial.println("800 Total Readings");
  520.         mpu.PrintActiveOffsets();
  521.         Serial.println();
  522.         mpu.CalibrateAccel(1);
  523.         mpu.CalibrateGyro(1);
  524.         Serial.println("900 Total Readings");
  525.         mpu.PrintActiveOffsets();
  526.         Serial.println();    
  527.         mpu.CalibrateAccel(1);
  528.         mpu.CalibrateGyro(1);
  529.         Serial.println("1000 Total Readings");
  530.         mpu.PrintActiveOffsets();
  531.         Serial.println("\n\n Any of the above offsets will work nice \n\n Lets proof the PID tuning using another method:");
  532.         leds[0] = CRGB::Green;
  533.         FastLED.show();
  534.   }
  535.   }
  536.   vTaskDelete(NULL);
  537. }
Add Comment
Please, Sign In to add comment