Hola que tal soy nuevo en el foro, miren tengo un problema.
Tengo un arduino que esta conectado con varias cosas, con un display 16x2 y otros objetos.
Tengo un modulo wifi ESP8266 12-E, ya hice su circuito para poderlo montar a la protoboard.
Tengo un alimentador de voltaje de 3.3v/5v es un Ywrobot.
Ahora quiero comunicar arduino con I2C con la librería Wire con el modulo ESP 12E, el problema es que el arduino es de 5v en su salida y el modulo solo quiere max. 3.6v.
Coloque los pines de SCL y SDA con dos reguladores de voltaje salida 3.3v, uno para cada pin y lo conecto a los pines GPIO4 y GPIO5 que yo vi (SDA:4, SCL:5), ambas sirven para I2C. Pero no comunican, el arduino manda un mensaje de "hola soy arduino" y el modulo debe de decir "HOLA ARDUINO SOY ESP". Por que conecte mis 2 arduinos y si se mandaron los mensajes, pero ya de esta manera no.
Los reguladores de voltaje estan conectados a los 5v del alimentador. El ESP esta a 3.3v del alimentador. Los objetos como el display estan conectados a arduino.
Me gustaría saber también como seria un codigo basico para que ambos se comuniquen ya que he visto que con la libreria Wire con el ESP8266 es "wire.begin(4,5)", por el SDA Y SCL antes mencionadas.
Tambien he leido que el ESP no puede ser esclavo, por eso requiero de algun codigo que me ayude a comunicarlos a traves de los canales.
Aveces desconecto los cables del arduino SCL y SDA y manda mensaje, pero no es el chiste y no se por que no lo envia. Me recomendaron comprar optoacoplador que es mejor que un regulador para mi caso, aun no lo implemento, pero me gustaría saber si habrá una respuesta para que el modulo de 3.3v reciba un mensaje o pulsación de arduino 5v a través de I2c por medio de reguladores de voltaje sin que se quemen??? Pues he visto a muchos que lo conectan directamente a TX y RX pero se supone que la salida de todo arduino es de 5v. No se les quema y ni tienen problemas, si es así podría quitar mi reguladores de voltaje y conectarlo directamente, pero no me quiero arriesgar.
Me serian de gran ayuda :3, gracias por su tiempo.
Otra, estoy utilizando IDE de arduino sencillo con el pluggin, no estoy utilizando nada de AT.
Codigo que tengo, para que se comuniquen, no quiero la gran cosa, de hecho solo envian 1 y 0 de un led en mi proyecto, lo que necesito.
//MAESTRO MODULO
#include <Wire.h>
char asd=0;
void setup() {
Wire.begin(4,5);
Serial.begin(115200);
}
void loop() {
if (Serial.available())
{
char valor = Serial.read();
if (valor == 'a')
{
Wire.requestFrom(?, 30); //no se que canal va aqui
Serial.println("Hola soy arduino!");
}
}
while(Wire.available()){
asd=Wire.read();
Serial.print(asd);
}
delay(2500);
}
//ARDUINO UNO ESCLAVO
#include <wire.h>
void setup(){
Wire.begin();
Wire.onRequest(peticion);
Serial.begin(115200);
}
void loop(){ }
void peticion(){
Serial.print("Hola arduino yo soy ESP8266");
Wire.write("canal ESP");
}