WebServerのサンプルを少しいじって温度の表示(M5NanoC6)



x 過去ログを見よ!!
x 3.0.7
x パケロスするが気にするな!!
x なぜか、なんかいかモニターを開くと成功する(とうぜん抜き差ししてリセットを掛ける)

目的
最小限の小改造で温度をWeb表示
温度センサーは、スイッチサイエンスで売っている
seeedのGroveのV1.2のやつ

SSIDとパスワードは、修正する事


```c++

const char *ssid = "ご自宅のSSID";
const char *password = "ご自宅のパスワード";

```

この後、温度センサー系を合成する

合成とは、新しい攻撃系の魔法を作る時に使う。

元のプログラム


```c++



// Demo code for Grove - Temperature Sensor V1.1/1.2
// Loovee @ 2015-8-26

#include <math.h>

const int B = 4275;               // B value of the thermistor
const int R0 = 100000;            // R0 = 100k

//const int pinTempSensor = A0;     // Grove - Temperature Sensor connect to A0
const int pinTempSensor = 1;     // Grove - Temperature Sensor connect to G1


#if defined(ARDUINO_ARCH_AVR)
#define debug  Serial
#elif defined(ARDUINO_ARCH_SAMD) ||  defined(ARDUINO_ARCH_SAM)
#define debug  SerialUSB
#else
#define debug  Serial
#endif

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    int a = analogRead(pinTempSensor);

    //float R = 1023.0/a-1.0;
    //R = R0*R;
    float R,v1,a1,o1; 
    v1 = ((float)a) * 0.001; //電圧を求める
    a1 = v1 / 100000.0;           //電流を求める
    o1 = 5.0 / a1;                //全体の抵抗を求める
    R = o1 - 100000.0;    //全体の抵抗から検出抵抗を引く

    float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; // convert to temperature via datasheet

    Serial.print("temperature = ");
    Serial.println(temperature);

    delay(100);
}





```


![o_coq578.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/8ea1c4d5-1e82-ed43-799c-3652ac4dc46e.jpeg)


![o_coq579.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/d47f01d6-eae5-3c55-875d-7d864db02092.jpeg)


![o_coq580.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/79c9350d-e683-0916-bbe4-6c39e514a715.jpeg)




プログラム

```c++



//WebServer_temperature1_M5NanoC6_1


#include <WiFi.h>
#include <NetworkClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>

#include <math.h> //logの計算等で使う

const char *ssid = "ご自宅のSSID";
const char *password = "ご自宅のパスワード";

WebServer server(80);

const int led = 7;

void handleRoot() {
  digitalWrite(led, 1);


  //↓温度センサーの処理を開始

  static uint32_t msg_count = 0;

  static char data[256+1];

  int B = 4275;               // B value of the thermistor
  int R0 = 100000;            // R0 = 100k

  int pinTempSensor = 1;     // Grove - Temperature Sensor connect to G1

  int a = analogRead(pinTempSensor);

  //float R = 1023.0/a-1.0;
  //R = R0*R;
  float R,v1,a1,o1; 
  v1 = ((float)a) * 0.001; //電圧を求める
  a1 = v1 / 100000.0;           //電流を求める
  o1 = 5.0 / a1;                //全体の抵抗を求める
  R = o1 - 100000.0;    //全体の抵抗から検出抵抗を引く

  float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; // convert to temperature via datasheet

  snprintf(data, sizeof(data), "temperature = %d #%lu",(int)temperature, msg_count++);


  //↑温度センサーの処理が終了


  //server.send(200, "text/plain", "hello from esp32!");
  server.send(200, "text/plain", data);
  digitalWrite(led, 0);
}

void handleNotFound() {
  digitalWrite(led, 1);
  String message = "File Not Found\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
  digitalWrite(led, 0);
}

void setup(void) {
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");

  for(int i=0;i<10;i++){
    delay(500);
    Serial.print(".");
  }

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp32")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.onNotFound(handleNotFound);

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();
  delay(2);  //allow the cpu to switch to other tasks
}


```