Browse Source

first changes for normall work (current configuration 0-20V)

master
parent
commit
9493d2a0c1
  1. 2
      src/CpuLoad.h
  2. 17
      src/html.h
  3. 27
      src/main.cpp

2
src/CpuLoad.h

@ -1,4 +1,4 @@
#include <arduino.h> #include <Arduino.h>
// updateCpuTime отвечает за обновление статистики загрузки Cpu // updateCpuTime отвечает за обновление статистики загрузки Cpu
// updateCpuTime(false) - размещается в начале loop() // updateCpuTime(false) - размещается в начале loop()

17
src/html.h

@ -48,11 +48,7 @@ const char html_begin[] PROGMEM = R"(
<body> <body>
<div id="main_block" align="center"> <div id="main_block" align="center">
<h1>Лабораторная работа</h1> <h1>Диагностика</h1>
<h2>Акселерометр ADW22035Z - Cемейство ADXL103</h2>
<p id="hbs_text">Акселерометр подает на выход данные по одной оси.</p>
<p id="hbs_text">Частота обновления графика - 1 раз в секунду. Данные с сенсора снимаются
с частотой в 50Hz. </p>
<canvas id="myCanvas" width="440" height="240" style="border:0px solid #000000;"> <canvas id="myCanvas" width="440" height="240" style="border:0px solid #000000;">
Браузер устарел! Браузер устарел!
</canvas> </canvas>
@ -63,7 +59,8 @@ const char html_begin[] PROGMEM = R"(
var context = c.getContext("2d"); var context = c.getContext("2d");
var maxX = 400, maxY = 200; var maxX = 400, maxY = 200;
var biasX = 20, biasY = 20; var biasX = 20, biasY = 20;
var curVoltage = 20;
var freq = 16;
function iY(y) { function iY(y) {
return maxY + biasY - y; return maxY + biasY - y;
} }
@ -74,7 +71,7 @@ const char html_begin[] PROGMEM = R"(
context.lineTo(20, iY(i)); context.lineTo(20, iY(i));
context.lineTo(15, iY(i)); context.lineTo(15, iY(i));
context.moveTo(20, iY(i)); context.moveTo(20, iY(i));
textY = i/200*3.3; textY = i/200*curVoltage;
context.fillText(textY.toFixed(1), 0, iY(i-2.5)); context.fillText(textY.toFixed(1), 0, iY(i-2.5));
} }
context.moveTo(20, iY(0)); context.moveTo(20, iY(0));
@ -82,7 +79,7 @@ const char html_begin[] PROGMEM = R"(
context.lineTo(i, iY(0)); context.lineTo(i, iY(0));
context.lineTo(i, iY(-5)); context.lineTo(i, iY(-5));
context.moveTo(i, iY(0)); context.moveTo(i, iY(0));
textX = (i-20)/400*4 ; textX = (i-20)/400*freq ;
context.fillText(textX.toFixed(1), i-10, iY(-20)); context.fillText(textX.toFixed(1), i-10, iY(-20));
} }
context.stroke(); context.stroke();
@ -103,6 +100,8 @@ const char html_begin[] PROGMEM = R"(
for (i = 1; i < 200; i++) { for (i = 1; i < 200; i++) {
context.lineTo(i*2 + biasX, data.data[i] + biasY); context.lineTo(i*2 + biasX, data.data[i] + biasY);
} }
voltage = data.data[199]*(-0.1)+20;
context.fillText(voltage + " V", 200,20);
context.stroke(); context.stroke();
}; };
function calibrateDevice() { function calibrateDevice() {
@ -114,7 +113,7 @@ const char html_begin[] PROGMEM = R"(
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<footer> <footer>
<hr \>Тамбовский Государственный Технический Университет 2017-2018 г. <hr \>DEFEND STUDIO | DEFEND.PW | 2018
</footer> </footer>
</body> </body>
</html> </html>

27
src/main.cpp

@ -8,19 +8,12 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include "CpuLoad.h" #include "CpuLoad.h"
#include "arduinoFFT.h"
bool fftMode = true;
arduinoFFT FFT = arduinoFFT();
const char *ssid = "LabWork_1"; const char *ssid = "LabWork_1";
ESP8266WebServer server(80); ESP8266WebServer server(80);
Sensor accelerometer = Sensor(); Sensor accelerometer = Sensor();
Graph graphAcc = Graph(256, 50); Graph graphAcc = Graph(200, 200);
double vReal[256];
double vImag[256];
long int lastDataSend = 0; long int lastDataSend = 0;
@ -93,18 +86,6 @@ void updateAccelerometer()
} }
graphAcc.array[graphAcc.counter] = filteredSignal; graphAcc.array[graphAcc.counter] = filteredSignal;
graphAcc.source[graphAcc.counter] = sourceSignal; graphAcc.source[graphAcc.counter] = sourceSignal;
//start fft
for (int i = 0; i < graphAcc.size; i++) {
vReal[i] = (double) graphAcc.source[i];
vImag[i] = 0;
}
FFT.Windowing(vReal, graphAcc.size, FFT_WIN_TYP_RECTANGLE, FFT_FORWARD);
FFT.Compute(vReal, vImag, graphAcc.size, FFT_FORWARD);
FFT.ComplexToMagnitude(vReal, vImag, graphAcc.size);
for (int i = 0; i < graphAcc.size/2; i++) {
graphAcc.fft[i] = map((int) vReal[i], 0, 15000, 200, 0);
}
} }
accelerometer.lastUpdate = millis(); accelerometer.lastUpdate = millis();
@ -131,14 +112,12 @@ void handleNotFound()
void sendAccelerometerData() { void sendAccelerometerData() {
int updateRate = 0; int updateRate = 0;
if (fftMode) updateRate = 200; updateRate = 50;
else updateRate = graphAcc.updateRate;
if (millis() - lastDataSend > updateRate) { if (millis() - lastDataSend > updateRate) {
String word; String word;
cookAccelerometer(word, graphAcc.fft, graphAcc.size/2); cookAccelerometer(word, graphAcc.array, graphAcc.size);
webSocket.broadcastTXT(word); webSocket.broadcastTXT(word);
Serial.println(word);
lastDataSend = millis(); lastDataSend = millis();
} }
} }

Loading…
Cancel
Save