見出し画像

ESP32をTWSNMPシリーズのセンサーにするために温度センサーの読み取りとWifi接続の練習

今朝は3時に起きました。
昨日から始めたESP32+Arudino IDEの開発が楽しくなってきたからです。
昨日の夜寝る前にWifiの使い方などをチュートリアルのドキュメントを読んで予習しました。それが夢にまででてきて早くおきました。
まずは、温度センサーをつけてみました。Raspberry Pi Pico Wのようにボードに搭載された温度センサーは廃止になって使えないようなのでチュートリアルにあるThermistorを使うようにしてみました。LEDの点滅のソースコードも残して

#define PIN_ANALOG_IN   4
#define PIN_LED 2

void setup() {
 Serial.begin(115200);
 pinMode(PIN_LED, OUTPUT);
}
void loop() {
  int adcValue = analogRead(PIN_ANALOG_IN);                       //read ADC pin
  double voltage = (float)adcValue / 4095.0 * 3.3;                // calculate voltage
  double Rt = 10 * voltage / (3.3 - voltage);                     //calculate resistance value of thermistor
  double tempK = 1 / (1 / (273.15 + 25) + log(Rt / 10) / 3950.0); //calculate temperature (Kelvin)
  double tempC = tempK - 273.15;                                  //calculate temperature (Celsius)
  Serial.printf("ADC value : %d,\tVoltage : %.2fV, \tTemperature : %.2fC\n", adcValue, voltage, tempC); 
  digitalWrite(PIN_LED, HIGH);
  delay(1000);
  digitalWrite(PIN_LED, LOW);
  delay(1000);
}

のような感じにすると、

のようにシリアルモニターに表示されました。

次は、Wifiへの接続です。これもチュートリアルの通りに書いて簡単に動作しました。

#include <WiFi.h>
  
const char *ssid_AP     = "SSID";
const char *password_AP = "パスワード";


#define PIN_ANALOG_IN   4
#define PIN_LED 2

void setup() {
  Serial.begin(115200);
  pinMode(PIN_LED, OUTPUT);
  delay(2000);
  Serial.println("Setup start");
  WiFi.begin(ssid_AP, password_AP);
  Serial.println(String("Connecting to ")+ssid_AP);
  while (WiFi.status() != WL_CONNECTED){
    digitalWrite(PIN_LED, HIGH);
    delay(250);
    digitalWrite(PIN_LED, LOW);
    delay(250);
    Serial.print(".");
  }
  Serial.println("\nConnected, IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("Setup End");
}

この後、UDPでsyslogを送信する処理と、NTPで時計をあわせる処理を書けば完成しそうです。

micropythonよりC言語のほうが好きです。{}でとじているほうが安心できるのだと思います。この前作ったRaspberry Pi Pico WのソフトもArudino IDEに移植しようかと思います。

早く始めすぎたので疲れてきました。続きは今晩予習して明日のお楽しみにします。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。