I am trying to send data from an LDR to google sheets using arduino Mega and sim900 GPRS module, but apparently I am having a problem with the AT+HTTPREAD function and have not been able to fix it so far.
Any guidance?
#include <SoftwareSerial.h>
// Configuração do módulo SIM900
#define SIM900_RX_PIN 7
#define SIM900_TX_PIN 8
SoftwareSerial sim900Serial(SIM900_RX_PIN, SIM900_TX_PIN);
// Configuração do sensor
#define SENSOR_PIN A0
// Configuração do Google Sheets
#define GOOGLE_SHEETS_API_KEY "YOUR_API_KEY"
#define GOOGLE_SHEETS_ID "YOUR_SHEET_ID"
void setup() {
Serial.begin(9600);
sim900Serial.begin(9600);
delay(2000);
// Inicialização do módulo SIM900
sendATCommand("AT");
sendATCommand("AT+CMGF=1");
sendATCommand("AT+CNMI=2,2,0,0,0");
sendATCommand("AT+CGATT=1");
sendATCommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
sendATCommand("AT+SAPBR=3,1,\"APN\",\"claro.com.br\"");
sendATCommand("AT+SAPBR=1,1");
}
void loop() {
// Leitura do valor do sensor
int sensorValue = analogRead(SENSOR_PIN);
// Montagem da URL do Google Sheets
String url = "/macros/s/AKfycbxsbJl8s4WjWqHjANlVW7OLiVCmo5E2ky1CijnBAcJhMwVn7nx_Qj9vYxi3VU43/exec?value=" + String(sensorValue);
// Estabelecimento da conexão com o Google Sheets
if (!sendATCommand("AT+HTTPINIT")) {
Serial.println("Erro ao enviar comando AT+HTTPINIT.");
while (1); // Parar a execução em caso de erro
}
if (!sendATCommand("AT+HTTPPARA=\"CID\",1")) {
Serial.println("Erro ao enviar comando AT+HTTPPARA (CID).");
while (1); // Parar a execução em caso de erro
}
if (!sendATCommand("AT+HTTPPARA=\"URL\",\"https://script.google.com" + url + "\"")) {
Serial.println("Erro ao enviar comando AT+HTTPPARA (URL).");
while (1); // Parar a execução em caso de erro
}
if (!sendATCommand("AT+HTTPACTION=0")) {
Serial.println("Erro ao enviar comando AT+HTTPACTION.");
while (1); // Parar a execução em caso de erro
}
// Leitura da resposta
String response = sendATCommand("AT+HTTPREAD=?");
if (response.indexOf("+HTTPREAD: 0") != -1) {
Serial.println("Dados enviados com sucesso para o Google Sheets!");
} else {
Serial.println("Falha ao enviar dados para o Google Sheets.");
}
// Encerramento da conexão
if (!sendATCommand("AT+HTTPTERM")) {
Serial.println("Erro ao enviar comando AT+HTTPTERM.");
while (1); // Parar a execução em caso de erro
}
delay(5000); // Espera 5 segundos antes de enviar os dados novamente
}
And this is the response received on the serial monitor:
19:16:16.409 -> Comando: AT+HTTPTERM
19:16:16.409 -> Resposta:
19:16:21.557 -> Comando: AT+HTTPINIT
19:16:21.557 -> Resposta:
19:16:21.652 -> Comando: AT+HTTPPARA="CID",1
19:16:21.652 -> Resposta:
19:16:21.930 -> Comando: AT+HTTPPARA="URL","https://script.google.com/macros/s/AKfycbxsbJl8s4WjWqHjANlVW7OLiVCmo5E2ky1CijnBAcJhMwVn7nx_Qj9vYxi3VU43/exec?value=210"
19:16:22.059 -> Resposta:
19:16:22.151 -> Comando: AT+HTTPACTION=0
19:16:22.151 -> Resposta:
19:16:22.244 -> Comando: AT+HTTPREAD=?
19:16:22.244 -> Resposta:
19:16:22.291 -> Falha ao enviar dados para o Google Sheets.