Boas, preciso de ajuda para fazer com que um Arduino Nano leia os dados de um sensor e os envie para um ESP32 através da comunicação serial. Não estou a conseguir estabelecer esta comunicação.
Obrigado.
Boas, preciso de ajuda para fazer com que um Arduino Nano leia os dados de um sensor e os envie para um ESP32 através da comunicação serial. Não estou a conseguir estabelecer esta comunicação.
Obrigado.
Olá! Bem vindo ao Fórum.
Como você ligou os dois microcontroladores? Qual a programação de ambos?
Quando for possível, dê uma lida em Como obter o melhor desse Fórum. Lá tem boas dicas de como nos ajudar a ajudar você! ![]()
Arduino Nano
void setup() {
Serial.begin(9600); // Inicia a comunicação serial com a velocidade de 9600 bps
}
void loop() {
Serial.println("Bom dia");
delay(1000);
}
Esp32
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
String dadosRecebidos = Serial.readStringUntil('\n');
Serial.print("ESP32 recebeu: ");
Serial.println(dadosRecebidos);
}
}
Você não contou como os dois microcontroladores estão ligados...
Duas dicas:
O Arduino Nano opera em 5V. O Esp32 opera em 3.3V, então idealmente é preciso usar conversores de nível lógico entre os dois, ou você pode queimar o pino do ESP.
O Arduino Nano só tem uma porta hardware serial (pinos 0 e 1), que também é usada na sua comunicação com o Monitor Serial. Então, para você ver o que está acontecendo ao mesmo tempo em que estabelece uma comunicação entre os dois microcontroladores, é preciso escolher outros dois pinos no Nano e usar a biblioteca Softwareserial.
Uma outra pergunta: por que você precisa dos dois microcontroladores? Não daria para ligar o sensor direto no ESP?
Estou a usar um gps (AIR530) e não tenho codigo para o esp so para o arduino
#include <SoftwareSerial.h>
SoftwareSerial SoftSerial(2, 4);
unsigned char buffer[64]; // buffer array for data receive over serial port
int count=0; // counter for buffer array
void setup()
{
SoftSerial.begin(9600); // the SoftSerial baud rate
Serial.begin(9600); // the Serial port of Arduino baud rate.
}
void loop()
{
if (SoftSerial.available()) // if date is coming from software serial port ==> data is coming from SoftSerial shield
{
while(SoftSerial.available()) // reading data into char array
{
buffer[count++]=SoftSerial.read(); // writing data into array
if(count == 64)break;
}
Serial.write(buffer,count); // if no data transmission ends, write buffer to hardware serial port
clearBufferArray(); // call clearBufferArray function to clear the stored data from the array
count = 0; // set counter of while loop to zero
}
if (Serial.available()) // if data is available on hardware serial port ==> data is coming from PC or notebook
SoftSerial.write(Serial.read()); // write it to the SoftSerial shield
}
void clearBufferArray() // function to clear buffer array
{
for (int i=0; i<count;i++)
{
buffer[i]=NULL;
} // clear all index of array with command NULL
}
Se essa é a razão, acredite, será muito mais fácil você aprender a escrever o código para o ESP32 do que fazer o ESP32 "conversar" com o Nano.
O ESP32 tem mais de uma porta UART (não precisa de Softwareserial) e você praticamente pode configurar ela em diferentes pinos. Eu também já vi aqui que seu GPS opera tanto com 5V quanto com 3.3V, então também não tem problema relacionado à voltagem.
Tente aprender como funciona comunicação Serial no ESP e adapte seu programa.
Aqui está um começo, que mostra como configurar uma porta serial no ESP32:
https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.