こんにちは。今回はesp32でサーバー上のテキストファイル(.txt)を読み取る方法を書いていきます。
何か値を外部から読み取る際に最適です。
解説
下記のコードでは、
- シリアル通信を115200で実行する
- wifiに接続する
- テキストファイルがあるサーバーurlを指定する
- リンク先に接続する
- 接続できたら(ステータスが200なら)“response”変数に代入する
- Serial.printlnする
- 接続を解除する
という流れで動いています。
コード
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "ssid"; // ご自身のSSIDに変更
const char* password = "pass"; // ご自身のパスワードに変更
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected.");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// テキストファイルのURL
String txtFileUrl = "https://サーバーのリンク/hoge.txt";
// HTTPリクエストを送信
HTTPClient http;
http.begin(txtFileUrl);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String response = http.getString();
Serial.println("テキストファイルの内容:");
Serial.println(response);
} else {
Serial.println("テキストファイルの読み取りに失敗しました。");
}
http.end();
}
応用例
テキストファイルの中身が”flash”なら22番ピンのLEDを光らせるというコードです。
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "ssid"; // ご自身のSSIDに変更
const char* password = "pass"; // ご自身のパスワードに変更
void setup() {
Serial.begin(115200);
pinMode(22,OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected.");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// テキストファイルのURL
String txtFileUrl = "https://ファイルurl.txt";
// HTTPリクエストを送信
HTTPClient http;
http.begin(txtFileUrl);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String response = http.getString();
Serial.println("テキストファイルの内容:");
Serial.println(response);
if(response == "flash"){
digitalWrite(22,HIGH);
}else{
digitalWrite(22,LOW);
}
} else {
Serial.println("テキストファイルの読み取りに失敗しました。");
}
http.end();
}

とある高専生。
AIとネットが好き。
将来はAIの妹と火星に住みたい。
discord : r_nightcore
このサイトの管理者。
コメント
わかりやすい&みやすい!グレードアップしすぎでびっくり