サイトアイコン KOKENSHAの技術ブログ

ESP32でビットコインの価格(日本円)を取得して表示する!

最近ビットコインが上がっていますね!2017年のように爆上げするといいですね。笑。

その中、もしかしたら、ちょっとビットコインとか仮想通貨の値段が気になる人が増えるのかな?

目次

Arduino IDE

今回は、Arduino IDEを使います。

最近Platform.ioもいい感じになってきて、そのうち、全部Platformioに移行したいと考えます。

platformioでESP32がwifiに接続まで試してみた!

プログラム

必要なプログラムは一つだけです。

 

必要なライブラリは三つ

その中、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);
  }
}

 

コピペして使う場合は

下記を使ってください

See the gist on github.

ビットコインの価格(日本円)を取ってくる

実行の結果は下記のようになります。

ソースコードを少しクレンジングしましたので

表示はしたのと若干異なります。

ビットコインの日本円の値段を表示は一緒です。

まとめ

時間の関係で、プログラムをここまで作っていましたが、発展系としては、値段の変動に連動して、サーボを動かすのも面白いですし、ある特定間隔の値段を記録して、暴落や急上昇など、アラートをだす機構を作るのも面白いですね。

もちろん、受け取ったデータをさらに解析したり、どこかのサーバへ送信することも可能ですし、面白いものを作れそうですね!

みなさん、ぜひ改造改良して、機能を増やしてみてください。

では、また!

ESP32でウェブからサーボを制御する!

 

[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)”]

 

モバイルバージョンを終了