Отправка данных датчика на сервер MySQL с Arduino и Sim900a

Я пытаюсь отправить данные датчика на мой сервер MySQL, но не могу этого добиться. Я следовал за несколькими подобными примерами здесь в других вопросах, но это не работает. Код Arduino приведен ниже. Идея состоит в том, чтобы измерить напряжение и ток на нагрузке и отправить их на сервер MySQL. ТИА.

#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(7, 8);

//variables that imitates actual voltage and current data
float a=random(300.0);
float b=random(2.00);
char  c[10]="B110";    

void setup() {
  gprsSerial.begin(19200);
  Serial.begin(19200);
  Serial.println("Config SIM900A...");
  delay(2000);`enter code here`
  Serial.println("Done!...");
  gprsSerial.flush();
  Serial.flush();
  // attach or detach from GPRS service 
  gprsSerial.println("AT+CGATT?");
  delay(100);
  toSerial();
  // bearer settings
  gprsSerial.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
  delay(2000);
  toSerial();
  // bearer settings
  gprsSerial.println("AT+SAPBR=3,1,\"APN\",\"my carrier apn here\"");
  delay(2000);
  toSerial();
  // bearer settings
  gprsSerial.println("AT+SAPBR=1,1");
  delay(2000);
  toSerial();
}

void loop() {
  // initialize http service
  gprsSerial.println("AT+HTTPINIT");
  delay(2000);
  toSerial();
  // set http param value
  gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://mocdl.net/api/data/create?voltage="" + a + ""&current="" + b + "" &load_id="" + c + ""\"");
  delay(2000);
  toSerial();
  // set http action type 0 = GET, 1 = POST, 2 = HEAD
  gprsSerial.println("AT+HTTPACTION=0");
  delay(6000);
  toSerial();
  // read server response
  gprsSerial.println("AT+HTTPREAD");
  delay(1000);
  toSerial();
  gprsSerial.println("");
  gprsSerial.println("AT+HTTPTERM");
  toSerial();
  delay(300);
  gprsSerial.println("");
  delay(10000);
}

void toSerial() {
  while(gprsSerial.available()!=0) {
    Serial.write(gprsSerial.read());
  }
}

2 ответа

Решение

Как сказал Панчиз, вам следует установить APN (я думаю, вы уже это знаете).

Вы также должны внести небольшое изменение в вашу программу.

gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://mocdl.net/api/data/create?voltage="" + a + ""&current="" + b + "" &load_id="" + c + ""\"");

Вышеуказанная строка не будет работать так, как вы ожидали.

Поэтому отредактируйте строку запроса http следующим образом:

 gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://mocdl.net/api/data/create?voltage=%f&current=%f&load_id=%f\"",a,b,c);

Вы должны установить свой APN,

Например, в моем случае мне нужно добавить

mySerial.println("AT+SAPBR=3,1,\"APN\",\"internet\"")
Другие вопросы по тегам