Hola, buen día a todos,
estos días he estado haciendo pruebas con arduino r3 para obtener datos del módulo BME280 y enviarlos a través del módulo ESP-01 a mi página web.
Resulta que antes hacia las pruebas con DHT11 y me enviaba los datos sin problemas, pero al intentar usar BME280+ESP-01 los datos no se pueden enviar por que los comandos no responden.
Se que las conexiones están mal hechas debido a que están conectados los cables VCC y GND directo a la placa Arduino.
En la imagen no pude encontrar el BME280 de cuatro pines
El código que utilizo es el siguiente:
#include <Seeed_BME280.h>
//#include <Wire.h>
#include <SoftwareSerial.h>
#define RX 10
#define TX 11
//#define DHPIN 8
String AP = "WIFI"; // CHANGE ME
String PASS = "PASS123"; // CHANGE ME
String HOST = "meteo.tal.cl";
String PORT = "80";
String URI = "/update/meteobridge.php";
String pass = "********";
String data;
//NUEVOS
int LG = 2;
int LR = 3;
int LY = 4;
float temperatura;
int humedad;
float presion;
//MODULOS
// PIN, TIPO
// DHT dht(DHPIN,11);
//RX, TX
SoftwareSerial esp(RX,TX);
//INICIA BME280: Temperatura, Humedad y Presion
BME280 bme280;
void setup() {
// put your setup code here, to run once:
esp.begin(115200);
Serial.begin(9600);
pinMode(LG, OUTPUT);
pinMode(LR, OUTPUT);
pinMode(LY, OUTPUT);
//reset();
//connectWifi();
if(!bme280.init()){
Serial.println("Device error!");
activaLED("R");
delay(1000);
activaLED("none");
delay(1000);
activaLED("R");
delay(1000);
activaLED("none");
delay(1000);
activaLED("R");
delay(1000);
activaLED("none");
delay(1000);
}
sendAT();
}
void reset() {
esp.println("AT+RST");
delay(1000);
if(esp.find("OK")){
Serial.println("Module Reset");
}else{
Serial.println("Modulo No-Reset");
}
}
void sendAT() {
esp.println("AT");
delay(500);
if(esp.find("OK")){
Serial.println("AT OK");
digitalWrite(LG, HIGH);
digitalWrite(LR, LOW);
digitalWrite(LY, LOW);
}else{
Serial.println("AT FAIL");
digitalWrite(LG, LOW);
digitalWrite(LR, HIGH);
digitalWrite(LY, LOW);
}
}
//connect to your wifi network
void connectWifi() {
String cmd = "AT+CWJAP=\"" +AP+"\",\"" + PASS + "\"";
esp.println(cmd);
delay(4000);
}
void activaLED(String nled){
if(nled == "G"){
digitalWrite(LY, LOW);
digitalWrite(LR, LOW);
digitalWrite(LG, HIGH);
}
if(nled == "R"){
digitalWrite(LY, LOW);
digitalWrite(LR, HIGH);
digitalWrite(LG, LOW);
}
if(nled == "Y"){
digitalWrite(LY, HIGH);
digitalWrite(LR, LOW);
digitalWrite(LG, LOW);
}
if(nled == "none"){
digitalWrite(LY, LOW);
digitalWrite(LR, LOW);
digitalWrite(LG, LOW);
}
if(nled == "all"){
digitalWrite(LY, LOW);
digitalWrite(LR, LOW);
digitalWrite(LG, LOW);
}
}
void loop() {
Serial.println("Enviando datos");
data = "pass="+pass+"&t="+String(bme280.getTemperature()-2.55)+"&tmax="+String(bme280.getTemperature()-2.55)+"&tmin="+String(bme280.getTemperature()-2.55)+"&h="+String(bme280.getHumidity()+29)+"&d=0&w=0&g=0&b=0&p="+String((bme280.getPressure()/100)+2.17)+"&r=0&rr=0"; // data sent must be under this form //name1=value1&name2=value2.
Serial.println(data);
//data = "api_key="+ API +"field1="+String(temperatura)+"&field2="+String(humedad);
httppost();
delay(90000);
}
void httppost () {
activaLED("Y");
esp.println("AT+CIPSTART=\"TCP\",\"" + HOST + "\",80");//start a TCP connection.
if( esp.find("OK")) {
Serial.println("TCP connection ready");
activaLED("G");
}
delay(100);
String postRequest =
"POST " + URI + " HTTP/1.0\r\n" +
"Host: " + HOST + "\r\n" +
"Accept: *" + "/" + "*\r\n" +
"Content-Length: " + data.length() + "\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n" +
"\r\n" + data;
String sendCmd = "AT+CIPSEND=";//determine the number of caracters to be sent.
esp.print(sendCmd);
esp.println(postRequest.length());
delay(500);
if(esp.find(">")) {
Serial.println("Sending..");
activaLED("Y");
esp.print(postRequest);
if( esp.find("SEND OK")) {
Serial.println("Packet sent");
activaLED("Y");
//while (esp.available()) {
//String tmpResp = esp.readString();
//Serial.println(tmpResp);
//}
// close the connection
esp.println("AT+CIPCLOSE");
}else{
Serial.println("NO");
activaLED("R");
}
}
}