ESP32でビットコインの価格(日本円)を取得して表示する!
最近ビットコインが上がっていますね!2017年のように爆上げするといいですね。笑。
その中、もしかしたら、ちょっとビットコインとか仮想通貨の値段が気になる人が増えるのかな?
米中貿易戦で
アメリカ株が真っ赤になっている中
ビットコインが好調 pic.twitter.com/cNAv170HaV— 機械学習・深層学習・Python・Web、IoT (@kokensha_tech) 2019年5月14日
目次
Arduino IDE
今回は、Arduino IDEを使います。
最近Platform.ioもいい感じになってきて、そのうち、全部Platformioに移行したいと考えます。
プログラム
必要なプログラムは一つだけです。
必要なライブラリは三つ
- WiFi.h
- ArduinoJson
- HTTPClient
その中、ArduinoJsonは、メニュー > スケッチ > ライブラリをインクルード > ライブラリ管理を開いて
ArduinoJsonを検索してインストールしてください。
プログラムの詳細は下記に記述します。
#include <WiFi.h> #include "ArduinoJson.h" #include <HTTPClient.h> //WIFIのID const char* ssid = ""; //WIFIのパースワード、パスワードのないWIFIはこここのままでも良い const char* password = ""; //今回ビットコインの値段を取得するためのAPIのURL const char* apiServer = "https://api.coindesk.com/v1/bpi/currentprice/JPY.json"; //デフォルトのセットアップ処理、初期化をここに描こう void setup() { // Serial.begin(115200); // WiFiに接続することを試みる Serial.printf("%s に接続してみます", ssid); // WiFi.begin(ssid, password); //接続済 ではない場合 while (WiFi.status() != WL_CONNECTED) { delay(500); //点を表示する Serial.print("."); } //接続できた場合 Serial.println("接続できた!"); } //メインのループです void loop() { //WIFIの接続状態を確認する //WIFI接続している場合 if ((WiFi.status() == WL_CONNECTED)) { HTTPClient http; //APIサーバに接続開始 http.begin(apiServer); //HTTP Requestを作成する int httpCode = http.GET(); //返り値を確認する if (httpCode > 0) { //レスポンスを文字列として取得する String payload = http.getString(); //正常の場合は200 //Serial.println(httpCode); //一回レスポンスを表示する Serial.println(payload); //jsonに変換するためにメモリを確保 DynamicJsonDocument doc(1024); //payloadをjson objectに変換する deserializeJson(doc, payload); JsonObject obj = doc.as<JsonObject>(); //その中のbpi.JPYを取り出す JsonObject result=obj[String("bpi")][String("JPY")]; //ビットコインの価格を取り出す、同時に文字列に変換しておく String rate=result[String("rate")]; //表示する Serial.println(rate); } else { Serial.println("HTTP request エラー"); return; } //リソースを解放する http.end(); delay(3000); } }
コピペして使う場合は
下記を使ってください
ビットコインの価格(日本円)を取ってくる
実行の結果は下記のようになります。
ソースコードを少しクレンジングしましたので
表示はしたのと若干異なります。
ビットコインの日本円の値段を表示は一緒です。
まとめ
時間の関係で、プログラムをここまで作っていましたが、発展系としては、値段の変動に連動して、サーボを動かすのも面白いですし、ある特定間隔の値段を記録して、暴落や急上昇など、アラートをだす機構を作るのも面白いですね。
もちろん、受け取ったデータをさらに解析したり、どこかのサーバへ送信することも可能ですし、面白いものを作れそうですね!
みなさん、ぜひ改造改良して、機能を増やしてみてください。
では、また!
[amazonjs asin=”B0718T232Z” locale=”JP” title=”HiLetgo® ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード”]
[amazonjs asin=”B06XT9NS73″ locale=”JP” title=”いまさら聞けない ビットコインとブロックチェーン”]
[amazonjs asin=”487311733X” locale=”JP” title=”Arduinoをはじめよう 第3版 (Make:PROJECTS)”]