質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

IoT

IoT(Internet of Things)とは、インターネットがコンピュータなどの情報・通信機器のネットワークだけでなく、世の中のある様々なモノに接続されて自動認識・自動制御・遠隔計測などの能力を備えることです。「モノのインターネット」と一般的にいわれます。

Q&A

2回答

4748閲覧

ArduinoとESP-WROOM-02を使う

Reeeeef-jp

総合スコア0

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

IoT

IoT(Internet of Things)とは、インターネットがコンピュータなどの情報・通信機器のネットワークだけでなく、世の中のある様々なモノに接続されて自動認識・自動制御・遠隔計測などの能力を備えることです。「モノのインターネット」と一般的にいわれます。

0グッド

1クリップ

投稿2020/12/25 04:19

編集2020/12/25 06:30

前提・実現したいこと

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2020/12/25 06:06

エラーメッセージは削らないで下さい。「どのソースのどの部分で」「何が起こったか」の情報が削られています。 エラーメッセージそのものも ``` ``` の中に囲って下さい。 できれば、https://teratail.com/help/question-tips#questionTips3-5-1 「最も良いのは、現象を再現するためのミニマムなプログラムを改めて作ることです。」に則って検討箇所を絞り込んで下さい。
Reeeeef-jp

2020/12/25 06:30

申し訳ありません。修正します。
thkana

2020/12/26 08:57

> arduinoを使うという制約のもと この制約はいかなる理由によるものですか。 Ambientのページを見ればわかるように、ESP8266でArduino環境を構築しているものをArduinoと呼ぶことは認知されています。 Ambientとの接続はESP8266/Arduino環境に任せて、それ以外のセンサ類はUNOが受け持ち、例えばSerialでUNOからESP8266に通信データを流し込む、というような構成だって充分考えられます。 それならば、ありもののライブラリで実現可能でしょう。
guest

回答2

0

その"Ambient.h"が期待しているWiFiClient::connectと<ESP8266.h>が提供しているWiFiClient::connectが一致していないということのようです。

Ambientのサンプルは、写真を見るとESP8266そのものをマイコンとしてArduino環境で使うものです。
Ambientのライブラリも、ESP8266/ESP32用と書かれています。

エラーが出ているところは、コードを見ると

Arduino

1#if defined(ESP8266) 2 this->client->setTimeout(tmout); 3 ret = this->client->connect(this->host, this->port); 4#else 5 ret = this->client->connect(this->host, this->port, tmout); 6#endif

の部分らしいので、もしかしたらあなたのプログラムの冒頭に
#define ESP8266
とでもマクロを定義してやると動いてしまう可能性はなくもないです。Arduino UNOでESP8266をATコマンドのモデムとして使っている環境で動くものではないようなので、動いたらラッキー、というレベルですね。

投稿2020/12/25 07:30

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reeeeef-jp

2020/12/25 08:02

#define ESP8266と定義するととこのようにエラーが出ました。 Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Uno" Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Uno" sketch_dec23a:17:13: error: expected constructor, destructor, or type conversion before '(' token C:\Users\81905\OneDrive\ドキュメント\Arduino\sketch_dec23a\sketch_dec23a.ino: In function 'void setup()': sketch_dec23a:39:10: error: 'wifi' was not declared in this scope C:\Users\81905\OneDrive\ドキュメント\Arduino\sketch_dec23a\sketch_dec23a.ino:39:10: note: suggested alternative: 'WiFi' sketch_dec23a:45:10: error: 'wifi' was not declared in this scope C:\Users\81905\OneDrive\ドキュメント\Arduino\sketch_dec23a\sketch_dec23a.ino:45:10: note: suggested alternative: 'WiFi' exit status 1 expected constructor, destructor, or type conversion before '(' token
Reeeeef-jp

2020/12/25 08:03

これはおっしゃる通り、動かないということでしょうか
thkana

2020/12/25 08:23

そうか、"ESP8266"をそっちで使ってたか... じゃ、プリプロセス命令の場所をちょっと変えて、 #define ESP8266 #include "Ambient.h" #undef ESP8266 とやったらどうなるでしょう?
Reeeeef-jp

2020/12/25 08:50

#define ESP8266 #include "Ambient.h" #undef ESP8266 #include <ESP8266.h> #include <SoftwareSerial.h> #include <TinyGPS++.h> とすると In file included from C:\Users\81905\OneDrive\ドキュメント\Arduino\sketch_dec23a\sketch_dec23a.ino:2:0: C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src/Ambient.h:10:11: fatal error: ESP8266WiFi.h: No such file or directory #include <ESP8266WiFi.h> ^~~~~~~~~~~~~~~ compilation terminated. exit status 1 となりました。
thkana

2020/12/25 09:10

ヘッダファイルの取り込みはそれなりの順で行わなければなりません。 #includeの順は変えず、 #include <ESP8266.h> #include <SoftwareSerial.h> #include <TinyGPS++.h> #define ESP8266 #include "Ambient.h" #undef ESP8266 としたらどうなりますか。(「動くはず」とか言っているわけではないのでそのつもりで)
Reeeeef-jp

2020/12/25 09:21

変更して検証すると上記と同じエラー内容でした。
thkana

2020/12/25 09:33

上記っていままでのどれでしょう?
Reeeeef-jp

2020/12/25 09:35

Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Uno" In file included from C:\Users\81905\OneDrive\ドキュメント\Arduino\sketch_dec23a\sketch_dec23a.ino:5:0: C:\Users\81905\OneDrive\�h�L�������g\Arduino\libraries\Ambient_ESP32_ESP8266_lib\src/Ambient.h:10:11: fatal error: ESP8266WiFi.h: No such file or directory #include <ESP8266WiFi.h> ^~~~~~~~~~~~~~~ compilation terminated. exit status 1 となりました。
thkana

2020/12/25 09:47

あぁ、そうなるか。 だとすると、ライブラリの中に手を入れるとかしないとだめということになるかと。
Reeeeef-jp

2020/12/25 10:05

そうなると、実現は難しくなりそうですか?
thkana

2020/12/25 11:38

何を基準にするか次第ですね。 teratailが"IT技術者特化型"(googleでteratailを検索した時のタイトル)という売り文句通りのサイトとすると「難しい」とはいうことはないのですが。
Reeeeef-jp

2020/12/25 16:20

承知しました。対応していただき、ありがとうございました。
guest

0

先頭に下記のメッセージが出ています。

Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Uno"

ESP-WROOM-02に合わせた設定でコンパイルしてください。

投稿2020/12/29 00:41

herobo

総合スコア153

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問