ESP32 とは
ESP32 は、Raspberry Pi や Arduino に続く、新たな IoT マイコンとして注目されています。Wi-Fi, Bluetooth を内蔵しているため、追加の部品なしで、ネットワークに接続することができます。ESP32 の開発ボードである、ESP-DevKitC は、USB-シリアル変換回路を搭載しているので、パソコンから USB 経由でプログラムを書き込むことができます。入手性もよく、秋葉原や電子部品のネット通販を利用して、千数百円程度で入手できます。
本記事では、ESP-DevKitC を使って、FIWARE Orion のバージョンを取得して、ESP32 のシリアルモニタに出力するプログラムを紹介します。ESP32 は、Arduino ではありませんが、Arduino core for ESP32 を利用すると、Arduino IDE を使用して、プログラムを作成して、ESP32に書き込むことができます。プログラムの実行の前に、Arduino IDE の ボードマネージャで、Arduino core for ESP32 をインストールしてください。
FIWARE Orion のバージョンを取得
FIWARE Orion のバージョンを取得するためには、Orion に対して以下のリクエストを実行します。
GET /version
crul で実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
curl -sS orion:1026/version | jq . { "orion": { "version": "2.0.0", "uptime": "0 d, 5 h, 2 m, 5 s", "git_hash": "485128e135f4225040841f5ab3b85d42cfe68f55", "compile_time": "Fri Sep 28 09:56:56 UTC 2018", "compiled_by": "root", "compiled_in": "4852e5bea506", "release_date": "Fri Sep 28 09:56:56 UTC 2018", "doc": "https://fiware-orion.readthedocs.org/en/2.0.0/" } } |
ESP32 で Orion のバージョンを取得
ESP32 で Orion のバージョンを取得するためには、最初に、Orion にアクセスできるネットワークに接続して、その後、Orion にリクエストを実行します。実際のプログラムは以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#include <WiFi.h> #include <HTTPClient.h> char essid[] = "your essid"; char passphrase[] = "your passphrase"; char orion[] = "http://192.168.1.2:1026/version"; void setup() { Serial.begin(115200); Serial.print("start"); connectWifi(); getOrionVersion(orion); disconnectWifi(); } void loop() { } void connectWifi() { WiFi.mode(WIFI_STA); WiFi.begin(essid, passphrase); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(100); } Serial.println(""); Serial.println("Connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Subnet Mask: "); Serial.println(WiFi.subnetMask()); Serial.print("Gateway IP: "); Serial.println(WiFi.gatewayIP()); Serial.print("DNS: "); Serial.println(WiFi.dnsIP()); Serial.print("Mac Address: "); Serial.println(WiFi.macAddress()); } void disconnectWifi() { WiFi.disconnect(); Serial.println("disconnected"); } void getOrionVersion(char url[]) { HTTPClient http; http.begin(url); int httpCode = http.GET(); if(httpCode > 0) { Serial.printf("httpCode: %d\n", httpCode); if(httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } } else { Serial.printf("POST failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } |
このプログラムのポイントは以下の2点です。
- connectWiFi() – WiFi ネットワークに接続
- getOrionVersion() – Orion のバージョンを取得
connectWiFi() では、ESP32 の WiFi ライブラリを使用して、ESP32 を WiFi ネットワークに接続しています。getOrionVersion() では、HTTPClient ライブラリを使用して、Orion に対して GET リクエストを実行しています。
プログラムの実行
プログラムの実行の前に、環境に依存するパラメータを変更する必要があります。WiFi ルータに接続するための、ssid とpassword、および、Orion の IP アドレスを設定してください。
char ssid[] = “your ssid”;
char password[] = “your password”;
char orion[] = “http://ip address:1026/version”;
実行結果は、シリアルモニタに表示されます。以下のようなものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Start.................... Connected IP address: 192.168.1.16 Subnet Mask: 255.255.255.0 Gateway: 192.168.1.1 DNS: 192.168.1.1 Mac Address: 24:0A:C4:00:00:00 httpCode: 200 { "orion" : { "version" : "2.0.0", "uptime" : "0 d, 4 h, 7 m, 12 s", "git_hash" : "485128e135f4225040841f5ab3b85d42cfe68f55", "compile_time" : "Fri Sep 28 09:56:56 UTC 2018", "compiled_by" : "root", "compiled_in" : "4852e5bea506", "release_date" : "Fri Sep 28 09:56:56 UTC 2018", "doc" : "https://fiware-orion.readthedocs.org/en/2.0.0/" } } disconnected |
トラブルシューティング
プログラムがうまく動作しない時は、次の点を確認させてください。
Start が表示されない
プログラムの書き込みに失敗しているか、シリアルが未接続の可能性あります。プログラムが正しく書き込めているか確認してください。シリアル接続は Upload speed などを確認してください。
Connected が表示されない
WiFi 接続が失敗している可能性があります。ssid や その password および、WiFi ルーター等の設定を確認してください。
Orion のバージョンが表示されない
Orion へのリクエストが失敗している可能性があります。Orion の IP アドレスやポートを確認してください。また、WiFi で接続したネットワークから Orion にアクセスできるか確認してください。