I'm new to code programming, I could use some help. This is my first time posting to this forum. I Have a ESP-12E module that I'm having problems with. The Wire library seems to be the problem. I've posted my code and the error log. I would appreciate any help I could get. I have been working on this project for weeks, sometimes another set of eyes helps. Thanks in advance.
Arduino: 1.8.1 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 9600, 4M (3M SPIFFS)"
Error Log:
Arduino: 1.8.1 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 9600, 4M (1M SPIFFS)"
Build options changed, rebuilding all
In file included from C:\Users\Patrick\Desktop\Digital Hydrometer\pinkhydrometer\pinkhydrometer.ino:5:0:
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.h: In function 'void getTemp()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.h:70:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)
uint8_t requestFrom(int, int, int);
^
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.h:64:12: note: candidate 2: size_t TwoWire::requestFrom(uint8_t, size_t, bool)
size_t requestFrom(uint8_t address, size_t size, bool sendStop);
^
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.h:70:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)
uint8_t requestFrom(int, int, int);
^
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.h:64:12: note: candidate 2: size_t TwoWire::requestFrom(uint8_t, size_t, bool)
size_t requestFrom(uint8_t address, size_t size, bool sendStop);
^
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire12transmittingE+0x0): multiple definition of `TwoWire::transmitting'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o: In function `_GLOBAL__sub_I__ZN7TwoWire8rxBufferE':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:160: multiple definition of `TwoWire::write(unsigned char const*, unsigned int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:160: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire13rxBufferIndexE+0x0): multiple definition of `TwoWire::rxBufferIndex'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire14rxBufferLengthE+0x0): multiple definition of `TwoWire::rxBufferLength'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire8rxBufferE+0x0): multiple definition of `TwoWire::rxBuffer'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::read()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:185: multiple definition of `TwoWire::read()'
sketch\Wire.cpp.o:sketch/Wire.cpp:185: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::peek()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:194: multiple definition of `TwoWire::peek()'
sketch\Wire.cpp.o:sketch/Wire.cpp:194: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire13txBufferIndexE+0x0): multiple definition of `TwoWire::txBufferIndex'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire14txBufferLengthE+0x0): multiple definition of `TwoWire::txBufferLength'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::flush()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:201: multiple definition of `TwoWire::flush()'
sketch\Wire.cpp.o:sketch/Wire.cpp:201: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::available()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:171: multiple definition of `TwoWire::available()'
sketch\Wire.cpp.o:sketch/Wire.cpp:171: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire8txBufferE+0x0): multiple definition of `TwoWire::txBuffer'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::write(unsigned char)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:145: multiple definition of `TwoWire::write(unsigned char)'
sketch\Wire.cpp.o:sketch/Wire.cpp:145: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::TwoWire()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:45: multiple definition of `TwoWire::TwoWire()'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:45: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::TwoWire()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:45: multiple definition of `TwoWire::TwoWire()'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Print.h:45: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::begin(int, int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:57: multiple definition of `TwoWire::begin(int, int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:57: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::pins(int, int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:65: multiple definition of `TwoWire::pins(int, int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:65: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::begin()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:70: multiple definition of `TwoWire::begin()'
sketch\Wire.cpp.o:sketch/Wire.cpp:70: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::begin(unsigned char)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:73: multiple definition of `TwoWire::begin(unsigned char)'
sketch\Wire.cpp.o:sketch/Wire.cpp:73: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::status()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:80: multiple definition of `TwoWire::status()'
sketch\Wire.cpp.o:sketch/Wire.cpp:80: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::begin(int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:84: multiple definition of `TwoWire::begin(int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:84: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::setClock(unsigned int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:88: multiple definition of `TwoWire::setClock(unsigned int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:88: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::setClockStretchLimit(unsigned int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:92: multiple definition of `TwoWire::setClockStretchLimit(unsigned int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:92: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::requestFrom(unsigned char, unsigned int, bool)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:96: multiple definition of `TwoWire::requestFrom(unsigned char, unsigned int, bool)'
sketch\Wire.cpp.o:sketch/Wire.cpp:96: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::requestFrom(unsigned char, unsigned char, unsigned char)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:106: multiple definition of `TwoWire::requestFrom(unsigned char, unsigned char, unsigned char)'
sketch\Wire.cpp.o:sketch/Wire.cpp:106: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::requestFrom(unsigned char, unsigned char)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:110: multiple definition of `TwoWire::requestFrom(unsigned char, unsigned char)'
sketch\Wire.cpp.o:sketch/Wire.cpp:110: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::requestFrom(int, int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:114: multiple definition of `TwoWire::requestFrom(int, int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:114: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::requestFrom(int, int, int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:118: multiple definition of `TwoWire::requestFrom(int, int, int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:118: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire9txAddressE+0x0): multiple definition of `TwoWire::txAddress'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::beginTransmission(unsigned char)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:123: multiple definition of `TwoWire::beginTransmission(unsigned char)'
sketch\Wire.cpp.o:sketch/Wire.cpp:123: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::beginTransmission(int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:129: multiple definition of `TwoWire::beginTransmission(int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:129: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::endTransmission(unsigned char)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:133: multiple definition of `TwoWire::endTransmission(unsigned char)'
sketch\Wire.cpp.o:sketch/Wire.cpp:133: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::endTransmission()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:141: multiple definition of `TwoWire::endTransmission()'
sketch\Wire.cpp.o:sketch/Wire.cpp:141: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::onReceiveService(unsigned char*, int)':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:208: multiple definition of `TwoWire::onReceiveService(unsigned char*, int)'
sketch\Wire.cpp.o:sketch/Wire.cpp:208: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::onRequestService()':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:231: multiple definition of `TwoWire::onRequestService()'
sketch\Wire.cpp.o:sketch/Wire.cpp:231: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::onReceive(void (*)(int))':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:244: multiple definition of `TwoWire::onReceive(void (*)(int))'
sketch\Wire.cpp.o:sketch/Wire.cpp:244: first defined here
libraries\Wire\Wire.cpp.o: In function `TwoWire::onRequest(void (*)())':
C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\Wire/Wire.cpp:248: multiple definition of `TwoWire::onRequest(void (*)())'
sketch\Wire.cpp.o:sketch/Wire.cpp:248: first defined here
libraries\Wire\Wire.cpp.o:(.bss.Wire+0x0): multiple definition of `Wire'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire14user_onReceiveE+0x0): multiple definition of `TwoWire::user_onReceive'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
libraries\Wire\Wire.cpp.o:(.bss._ZN7TwoWire14user_onRequestE+0x0): multiple definition of `TwoWire::user_onRequest'
sketch\Wire.cpp.o:C:\Users\Patrick\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Stream.h:92: first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board NodeMCU 1.0 (ESP-12E Module).
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
[code]
//based on Basic ESP8266 MQTT example
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
byte sleepTimeS = 5; // Deep sleep time in seconds
//For MPU650
const int MPU_addr = 0x68; // I2C address of the MPU-6050
int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ, hold; // data
const char* pub1 = "Hydro/Pink/TILT" ; //send angle
const char* pub2 = "Hydro/Pink/TEMP" ; //send temperature
const char* sub1 = "Hydro/Pink/TARE" ; //recieve tare switch position
const char* sub2 = "Hydro/Pink/BATT" ; //recieve battery Saver Value
String keeper;
// Update these with values suitable for your network.
const char* ssid = "WLAN6f84C";
const char* password = "080DB6F84C";
const char* mqtt_server = "broker.mqttdashboard.com";// no :1883
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50]; //tilt
char msg2[50]; //temp
//char Tilt[10];
int Tilt = 0;
int calibrateValue = 0;
byte SwitchPos;
float KeepTime = 0;
String SetTime;
String message;
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
// Attempt to connect
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP8266Client")) {
Serial.println("connected"); // Once connected, publish an announcement...
//Duplicate these as needed
client.publish(pub1, "0"); //Set up Publising for each value
client.publish(pub2, "0");
// ... and resubscribe
client.subscribe(sub1); //Set up Subscription for each value
client.subscribe(sub2);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
//Wire.begin(2,0); //nodeMCU D2,D1 8622-01 2,0
Serial.println("Initializing I2C devices...");
//pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // PWR_MGMT_1 register
Wire.write(0); // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
if (now - lastMsg > 2000 + KeepTime) { //2 seconds as a buffer
lastMsg = now;
getTemp();
long now = millis();
if (SwitchPos == 0) { // Implament Tare value
Tilt = Tilt - calibrateValue;
//Serial.println(" Switch 0 ");
//Serial.println (Tilt);
}
snprintf (msg, 75, "%ld", Tilt);
Serial.print("Tilt message: ");
Serial.println(msg);
client.publish(pub1, msg); // Publish Tilt
Serial.print("Temp message: ");
snprintf (msg2, 75, "%ld", Tmp);
client.publish(pub2, msg2); // Publish Temp
Serial.println(msg2);
delay(300);
}
}
void callback(String topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) { // Used to concatanate the message
message += (char)payload[i];
}
keeper = message; //Store the message
message = ""; //Clear the buffer
Serial.println(keeper); //debug chcek for data captured
if (topic == sub1) { //Tare Switch data
// Switch on the LED if an 1 was received as first character
if (keeper == "1") { //Tare Position
digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level
// but actually the LED is on; this is because
// it is acive low on the ESP-01)
calibrateValue = Tilt; //Store data to find a zero point.
if (calibrateValue < 0) {
calibrateValue = 0;
}
SwitchPos = 1; //elimiate taring a tare value
Serial.print("calabrating");
}
if (keeper == "0") { //Tare Position
digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH
SwitchPos = 0;
Serial.print(" callValue ");
Serial.println(calibrateValue);
}
}
if (topic == sub2) { // Battery Saver data
KeepTime = keeper.toInt();
KeepTime = KeepTime * 3600000; // scale microseconds to hours
Serial.print(" KeepTime = ");
Serial.println(KeepTime);
}
}
void getTemp(){
//int Tmp=0;
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr, 14, true); // request a total of 14 registers
AcX = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY = Wire.read() << 8 | Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ = Wire.read() << 8 | Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
Tmp = Wire.read() << 8 | Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
GyX = Wire.read() << 8 | Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY = Wire.read() << 8 | Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ = Wire.read() << 8 | Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
//Tmp = Tmp / 340.00 + 33.6; //equation for temperature in degrees C from datasheet 340/36.53
//Tmp = Tmp * 1.8 + 32; //convert to F Comment out for C
Tilt = AcX / 100;
Serial.print("AcX = "); Serial.print(AcX / 100);
//Serial.print(" | AcY = "); Serial.print(AcY);
//Serial.print(" | AcZ = "); Serial.print(AcZ);
Serial.print(" | Tmp = "); Serial.println(Tmp);
// snprintf (msg, 75, "%ld", Tmp);
//client.publish(pub2, msg);//
delay(300);
}