前提・実現したいこと
arduinoを使うという制約のもと、リアルタイムで雨が降っている場所を地図で確認できるプログラムを書いています。
arduino unoとESP-WROOM-02,arduino unoとGPSモジュールをシリアル通信、雨滴モジュールで雨を判定し、降っている場所の緯度と経度、標高を
AmbientというIoT用のクラウドサービスの地図上にプロットしたいです。
発生している問題・エラーメッセージ
Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Uno" C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.cpp: In member function 'bool Ambient::send(uint32_t)': C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.cpp:102:66: error: no matching function for call to 'WiFiClient::connect(char [18], int&, uint32_t&)' ret = this->client->connect(this->host, this->port, tmout); ^ In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFi.h:31:0, from C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.h:12, from C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.cpp:5: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:34:15: note: candidate: virtual int WiFiClient::connect(IPAddress, uint16_t) virtual int connect(IPAddress ip, uint16_t port); ^~~~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:34:15: note: candidate expects 2 arguments, 3 provided C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:35:15: note: candidate: virtual int WiFiClient::connect(const char*, uint16_t) virtual int connect(const char *host, uint16_t port); ^~~~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:35:15: note: candidate expects 2 arguments, 3 provided C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.cpp: In member function 'int Ambient::bulk_send(char*, uint32_t)': C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.cpp:186:66: error: no matching function for call to 'WiFiClient::connect(char [18], int&, uint32_t&)' ret = this->client->connect(this->host, this->port, tmout); ^ In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFi.h:31:0, from C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.h:12, from C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src\Ambient.cpp:5: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:34:15: note: candidate: virtual int WiFiClient::connect(IPAddress, uint16_t) virtual int connect(IPAddress ip, uint16_t port); ^~~~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:34:15: note: candidate expects 2 arguments, 3 provided C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:35:15: note: candidate: virtual int WiFiClient::connect(const char*, uint16_t) virtual int connect(const char *host, uint16_t port); ^~~~~~~ C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi\src/WiFiClient.h:35:15: note: candidate expects 2 arguments, 3 provided exit status 1 ボードArduino Unoに対するコンパイル時にエラーが発生しました。 「ファイル」メニューの「環境設定」から 「より詳細な情報を表示する:コンパイル」を有効にすると より詳しい情報が表示されます。
ソースコード
#include <ESP8266.h> #include <SoftwareSerial.h> #include <TinyGPS++.h> #include "Ambient.h" #define SSID "---ID---" #define PASSWORD "---PW---" unsigned int channelId = ---ch---; const char* writeKey = "---key---"; int nRainDigitalIn = 13; boolean bIsRaining = false; SoftwareSerial ss1( 3, 2 ); //ESP8266 ( RX, TX ) ESP8266 wifi( ss1 ); SoftwareSerial ss2( 10, 11 ); //GPS( RX, TX ) TinyGPSPlus gps; Ambient ambient; WiFiClient client; //ambientへ送信する関数 void sendInfo2Ambient(); void setup(void) { Serial.begin( 9600 ); pinMode(nRainDigitalIn,INPUT); //ESP-WROOM-2のシリアル通信速度を9600bpsに変更 ss1.begin(115200); ss1.println("AT+UART_CUR=9600,8,1,0,0"); delay(10); ss1.begin(9600); delay(10); if ( wifi.setOprToStation() ) { Serial.println( "OK" ); } else { Serial.println( "Error" ); } //アクセスポイントへ接続 if ( wifi.joinAP( SSID, PASSWORD ) ) { Serial.println( wifi.getLocalIP().c_str() ); } else { Serial.println( "Failed" ); } // Ambientの初期化 ambient.begin(channelId, writeKey, &client); } void loop(void) { bIsRaining = !(digitalRead(nRainDigitalIn)); if(bIsRaining){ sendInfo2Ambient(); } delay(300000); } void sendInfo2Ambient() { char buf[16]; if (gps.location.isValid()) { dtostrf(gps.altitude.meters(), 4, 2, buf); Serial.println(buf); ambient.set(1, buf); dtostrf(gps.location.lat(), 12, 8, buf); Serial.println(buf); ambient.set(9, buf); dtostrf(gps.location.lng(), 12, 8, buf); Serial.println(buf); ambient.set(10, buf); ambient.send(); } }
補足情報
arduinoとESP-WROOM-02の回路図
arduinoとESP=WROOM-02の実体配線図
#使用したモジュール
LM393 雨滴センサ
秋月電子GPS受信機キット (AE-GYSFDMAXB)