注目キーワード

【Arduino】UNO R4 WiFi でのJSON形式データの取り扱い

すけろく
Arduino UNO R4 WiFでWi-Fi接続することができた。
インターネット上のサービスと連携させたいな。
げんろく
それなら、インターネット上のサービスから
データを取得する際によく使う形式があるので
そこを押さえてからだな。
すけろく
いつもの、JSON形式だな!
げんろく
そのとおり。
今回は、Arduino UNO R4 WiFiでJSON形式データを
取り扱う方法をおさえていこう。
今回は記事では、「Arduino UNO R4 WiFi」をArduinoでプログラミングして、インターネットサービスとのデータのやり取りで使う「「JSON形式データ」の取り扱いについて紹介します。
JSON形式データ」は、インターネット上にあるいろんなサービスからデータを取得する際に、よく使われるデータ形式です。
Arduino UNO R4 WiFi」での扱い方をおさえることで、インターネットサービスとの連携がしやすくなります。
この記事の前提となる「Arduino UNO R4 WiFi」のはじめかたは、次の記事で紹介しています。
関連記事

すけろく ついに、Arduino UNO R4 を手に入れたぞ! げんろく Arduinoをこれから使ってみる人には良いモデルだな。 しかもWi-Fiモジュールがついているので、 これ一台でできるこ[…]

 

記事内でご紹介する「Arduino UNO R4 WiFi」はこちら!

created by Rinker
Arduino (アルドゥイーノ)
スポンサー広告

JSON形式データとは?

JSONとは?

JSONとは「JavaScriptのオブジェクト記法を用いたデータ交換フォーマット」です。

Python、PHP、JavaScript、C++、Javaなど様々な言語でサポートされています。

JSONを間にはさむことで、各プログラミング言語間のデータの受け渡しがとても簡単にできます。

インターネット上のWebサービスからデータを取得する際の形式もJSON形式のものが多いので、例えば、天気情報をWebサービスから取得する際に使用できます。

スポンサー広告

JSONの表記方法

JSONは以下の形式で表記されます。

[
{“id” : “1”, “name” : “tanaka”},
{“id” : “2”, “name” : “morita”}
]

Arduino でJSONを使用する場合、マイコンのメモリに一時ロードされるため、メモリを事前に予約する必要があります。

どのくらいメモリ確保を行えばよいかを計算できるツールがありますのでそちらを使いましょう!

JSONを扱う際のメモリサイズを計算する

Arduino UNO R4 WiFi」は、Arm Cortex-M4プロセッサを使っているので、系統が同じなSTM32で計算しています。

以下のページでArduino IDEでJSONを扱う際のメモリサイズを計算できます。

ArduinoJson

The ArduinoJson Assistant is an online tool that computes th…

メモリ量の計算手順

所要時間:5分程度

「Step1:Configuration」画面で以下の通り選択します。
 Processor  :「STM32」
 Mode     :「Deserialize」
 Input Type    :「String」

【Next:JSON】を選択して次の画面に移ります。


「Step2:JSON」画面にて今回使いたいJSONデータを入力します。
【Next:Size】を選択して次の画面に移ります。

前の画面で入力したJSONデータをもとに必要なメモリサイズが計算され、画面に表示されます。
※この例ではトータルで「96」必要なことがわかります。
【Next:Program】を選択して次の画面に移ります。

Arduino IDE用のプログラム例が表示されます。
※先ほどの画面で必要となるサイズとして表示されていた内容をプログラムで指定する方法が記載されています。

StaticJsonDocument<96> doc;

以上でJSON形式データを使用する際のメモリ計算は完了です。

Arduino UNO R4 WiFiでJSONデータを取り扱ってみよう

それでは、実際にプログラミングしてみましょう。

今回は、基本的な使い方を確認するため、プログラムの中でJSONデータを定義して、それを「Arduino UNO R4 WiFi」で処理し、シリアルモニタに表示させてみます。

使用するJSON形式データ

プログラム内で定義するJSON形式データは、次の通りです。

[
{“Name” : “genroku”, “Site”:”Karakuri-musha.com”}
]

実際にArduino IDEで記述すると次のようになります。

各要素を記載する際の、二重引用符「”」は、プログラム中では、「\」をつける必要があります。

String JsonData = "{ \"name\": \"genroku\", \"site\": \"Karakuri-musha.com\" }";

 

ライブラリを追加する

今回は、JSON形式データを取り扱うため、次のライブラリをインストールします。

使用する情報 設定値(バージョン)
ライブラリ名 ArduinoJSON (7.0.3)

ライブラリのインストール手順については、次の記事を参考にしてください!

関連記事

「Arduino IDE」では、使用する機能やセンサー、ボードを使用するプログラムで使用できる有効なライブラリが公開されています。 ライブラリを使用すると、効率的かつ品質を確保したプログラミングが可能です。 この記事では、Ar[…]

JSON形式データの取り扱いプログラム

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

 Arduino IDE スケッチ例

ちょこっと解説
(1)シリアル接続の開始後の待機時間
   Arduino UNO R4 WiFiでシリアル接続を開始[Serial.begin()]後の待機時間は、1500ms(1.5秒)くらいが良いようです。
(2)JSON形式の取り扱い
   プログラム中では、JSON形式データの処理を以下の流れで行っています。

①JSON形式データの定義 [String JsonData =…]
②JSON用メモリの確保 [ StaticJsonDocument<96> n_jsondata;]
③JSON形式データの読み込みとエラー情報の取得 [DeserializationError error = deserializeJson(n_jsondata, JsonData);]
④JSON形式データの取り出し [i_name = n_jsondata[“name”];]

 Arduino UNO R4 WiFi への書き込み

書き込み

  1. Arduino UNO R4 WiFiをパソコンにUSB接続します。
  2.  Arduino IDEで前述のプログラムを記載して、 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  3. 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
    「Arduino UNO R4 Boards」-「Arduino UNO R4 WiFi」
  4. 「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
    COMポートが正常に認識されている場合、COMポート名の右側に「Arduino UNO R4 WiFi」と表示されます。
  5. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。(転送速度は「115200」です)
  6. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

プログラム実行結果

シリアルモニタ上に以下の通り表示されれば成功です。

JSON Data Test Start 

Name : genroku 
Site : Karakuri-musha.com 

JSON Data Test End

編集後記

今回は、JSON形式データの取り扱いについて、ご紹介しました。

これで、インターネット上のサービスから取得したJSON形式データを、「Arduino UNO R4 WiFi」内で処理できます。

今回の記事は以上になります。

最後までご覧いただき、ありがとうございました。

記事内でご紹介した「Arduino UNO R4 WiFi」はこちら!

created by Rinker
Arduino (アルドゥイーノ)


「Arduino Uno R4 WiFi」のその他の記事はこちら!

すけろく Arduino UNO R4 WiFでWi-Fi接続することができた。 インターネット上のサービスと連携させたいな。 げんろく それなら、インターネット上のサービスから データを取得する際によく使う形式があるので そこを押さえてからだな。 すけろく いつもの、JSON形式だな! げんろく そのとおり。 今回は、Arduino UNO R4 WiFiでJSON形式データを 取り扱う方法をお […]

すけろく 前回の記事で、Arduino UNO R4 WiFiを使って Wi-Fi接続することができた。 げんろく ああ。インターネットへのアクセスが できるようになったな。 すけろく これで、Arduino UNO R4 WiFiの時刻を 正確に合わせることもできるな! げんろく よし。インターネット上の NTP(時刻提供)サーバと時刻同期してみるか! 今回は記事では、「Arduino UNO […]

すけろく Arduino UNO R4 WiFi はWiFi接続が できるのだよね。 げんろく ああ。ボードに実装されているな。 すけろく 次は、Arduino UNO R4 WiFi の特徴である Wi-Fi接続してみたいな。 げんろく よし、今度はWi-Fi接続してみるか。 今回は記事では、「Arduino UNO R4 WiFi」をArduinoでプログラミングして、Wi-Fi接続してみます […]

すけろく ついに、Arduino UNO R4 WiFiの、LED マトリックスで もっと強いメッセージを出したいぞ! げんろく わかった。 文字列をスクロールして表示させてみるか! この記事では、「Arduino UNO R4 WiFi」に搭載されているLEDマトリックスを使って、文字列をスクロールさせてみます。 「Arduino UNO R4 WiFi」は、「Wi-Fi」機能が開発ボード上に実 […]

すけろく ついに、Arduino UNO R4 WiFiには、LED マトリックスが 搭載されているぞ! げんろく しかもArduinoで表示するイメージやアニメーションの フレーム構成を作ることができるツールもある! すけろく LEDマトリックス。挑戦したいぞ! げんろく よし、まずは第一弾として簡単なアニメーションを LEDマトリックスで表示させてみよう! この記事では、「Arduino UN […]

すけろく ついに、Arduino UNO R4 を手に入れたぞ! げんろく Arduinoをこれから使ってみる人には良いモデルだな。 しかもWi-Fiモジュールがついているので、 これ一台でできることが一気に増えた。 すけろく これから、いろいろと調べてみたいぞ! げんろく よし、まずはArduino UNO R4 の仕様を確認して Hello Worldをやってみよう! ようやく、国内の技適認証 […]