M5StickCはWi-Fi通信機能を内蔵しており、センサで採取したデータなどを、Wi-Fi経由でWebサーバに送信することができます。
今回は、このWi-Fi通信機能を使って、どのぐらいの時間間隔で、M5StickCからWebサーバにデータを送信できるか確認してみました。
リンク
Arduino IDEの「ファイル」>「スケッチ例」>「WiFi」>「WiFiClient」を元にして少しだけ編集し、以下のようなスケッチをつくりました。
Wi-Fiでデータ送信するたびにカウントアップし、1分間に何回データを送信したかをシリアルモニタに表示するものです(受信する側のWebサーバには、受信データをデータベースに保存するPHPプログラムを置いています)。
#include <M5StickC.h> #include <WiFi.h> const char* ssid = "XXXXXXXX"; const char* password = "XXXXXXXX"; const char* host = "XXXXXXXX"; const char* event = "XXXXXXXX"; unsigned long currentTime; unsigned long prevTime=0; void setup() { M5.begin(); Serial.begin(115200); delay(10); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } int value = 0; void loop() { Serial.print("connecting to "); Serial.println(host); WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } String url = String(event) + "?chipid=M5StickC&val0=" + String(value); Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } while(client.available()) { String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("closing connection"); ++value; currentTime=millis(); if(currentTime-prevTime>=60000) { Serial.print("### "); Serial.println(value); value=0; prevTime=currentTime; } }
2種類のWi-Fiルータを使って調査を行った結果は以下のとおりです。
HuaweiのモバイルWi-Fi(通信速度が最大200Kbpsのプラン) | 46〜49回/分 |
Buffaloの据置型Wi-Fiルータ | 51〜57回/分 |
M5StickCの性能というよりも、その他諸々の影響の方が大きいと思いますが、データを1回送信するのに1秒強かかっています。
1秒に1回ぐらいはデータ送信できるかと思っていたのですが、難しそうです。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
リンク
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。
このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。
他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。
リンク