GPRS передатчик промблемма

Нет ответов
sauges
Offline
Зарегистрирован: 16.05.2015

привет всем.

я накидал скетч но что то он не работает

помогите решить промблемму

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"

InetGSM inet;
//CallGSM call;
//SMSGSM sms;

char helloy[370];
//##############
char inSerial[50];
int i=0;
boolean started=false;
//##############

#define CLIENT "#"IMEI"#амперка#42.882008#47.641594#2.0\r\n"

#define IMEI "013950004054228"

#define INTERVAL 300000

#define Hall_PIN A0
// размер массива, содержащий TCP-запрос
#define LEN 370
// буфер для отправки данных на народный мониторинг
// согласно установленной сервисом форме
char tcpBuffer[LEN];
 
// переменная для хранения времени работы программы
// с последнего запуска отправки данных на сервер
unsigned long previousMillis = 0;
 
// переменная тока
int amper = 0;

void setup() {
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
  //Start configuration of shield with baudrate.
  //For http uses is raccomanded to use 4800 or slower.
  if (gsm.begin(4800)){ // попробуй поставить 9600
    Serial.println("\nstatus=READY");
    started=true;  
  }
  else Serial.println("\nstatus=IDLE");
  if(started){
    //GPRS attach, put in order APN, username and password.
    //If no needed auth let them blank.
    if (inet.attachGPRS("internet.mts.ru", "mts", "mts"))
      Serial.println("status=ATTACHED");
    else Serial.println("status=ERROR");
    delay(1000);
    
    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);  
 }
}

void loop() {
// пытаемся подключиться к серверу
  // указывая тип соединения, адрес сервера и номер порта
  while (!inet.connectTCP("narodmon.ru", 8283)) {
    // если сервер не отвечает или отвечает ошибкой
    // выводим сообщение об ошибке и ждём 1 секунду
    // процесс повторяется в цикле
    // пока не появится положительный ответ от сервера
      Serial.println("Connect error");
      delay(1000);
  }
  // выводим сообщение об удачном подключении к серверу
  Serial.println("Connect success");
 
  // вызываем функцию считывания всех показателей с датчиков
  readSensors();
  // выводим показания датчиков в последовательный порт
  serialPrint();
  // вызываем функцию, которая формирует и отправляет tcp-запрос
  // в специальном формате для «народного мониторинга»
  tcpRequest();
  // разрываем все GPRS-соединения
  inet.dettachGPRS();
  // выводим сообщение об удачном завершении операции
  Serial.println("OK");
 /* // выключаем GPRS-шилд
  gprs.powerOff();
 */
  // проверяем не прошел ли нужный интервал времени
  while (millis() - previousMillis < INTERVAL) {
  // ждём 5 минут
  }
  //если прошел, то сохраняем текущее время
  previousMillis = millis();
}
 
// функция записи данных с датчиков в массив
// в специальном формате для «народного мониторинга»
void tcpRequest()
{
   /* помните, что при выполнении операций 
   с массивами символов, например strcat(str1, str2);
   контроль нарушения их границ не выполняется, 
   поэтому программист должен сам позаботиться
   о достаточном размере массива str1,
   позволяющем вместить как его исходное содержимое,
   так и содержимое массива str2
  */
 
  // добавляем к строке tcpBuffer строку CLIENT
  strcat(tcpBuffer, CLIENT);
  // функция добавления в TCP-запрос значения температуры воздуха
  tcpAmper();
 
  // добавляем к строке tcpBuffer два символа «##»,
  // которые свидетельствуют об окончании запроса
  strcat(tcpBuffer, "##");
 
  // отправляем массив TCP-запроса на сервис «народного мониторинга»
  //inet.sendTCP(tcpBuffer); //поменять команду##################
  //inet.httpPOST("narodmon.ru", 8283,"##",tcpBuffer,helloy,370); //########
  //gsm.tweet("##",tcpBuffer);
  //gsm.SimpleWriteln(tcpBuffer);
 gsm.SimpleWriteln("AT+CIPSEND=tcpBuffer");



  
  
  
  // очищаем буфер
  clearTcpBuffer();
}
 // Функция добавление в TCP-запрос данные о температуре воздуха
void tcpAmper()
{
  // переменная для символьного представления
  // значения температуры воздуха
  char s_temp[8];
  // преобразуем целое число 10 системы исчисления
  // из переменной temp в строковое представление в массив s_temp[]
  itoa(amper, s_temp, 10);
  // добавляем к буферу символы «.00», для дробной части
  strcat(s_temp, ".00");
  // добавляем к буферу разделительный символ «#»
  strcat(tcpBuffer, "#");
  // добавляем к буферу уникальный серийный номера датчика
  // получаем его путём добавления к IMEI GPRS-шилда названия датчика
  strcat(tcpBuffer, IMEI);
  strcat(tcpBuffer, "T1");
  // добавляем к буферу разделительный символ «#»
  strcat(tcpBuffer, "#");
   // добавляем к буферу строку s_temp
  strcat(tcpBuffer, s_temp);
  // добавляем к буферу разделительный символ «#»
  strcat(tcpBuffer, "#");
  // добавляем к буферу время актуальности показаний
  // если показания датчиков передаются немедленно,
  // то данный параметр передавать не надо
  strcat(tcpBuffer, " ");
  // добавляем к буферу разделительный символ «#»
  strcat(tcpBuffer, "#");
  // добавляем к буферу названия датчика
  strcat(tcpBuffer, "Датчик Тока");
  strcat(tcpBuffer, "\r\n");
}
// функция считывания показателей с датчиков
void readSensors()
{
  // считывание значения с датчика уровня освещённости
  amper = analogRead(Hall_PIN);

// amper = map(amper, 0, 1023, -100, 100);
}
void clearTcpBuffer()
{
  for (int t = 0; t < LEN; t++) {
    // очищаем буфер,
    // присваивая всем индексам массива значение 0
    tcpBuffer[t] = 0;
  }
}
 
// функция вывода значения датчиков в последовательный порт
void  serialPrint()
{
  Serial.print("Amper = ");
  Serial.println(amper);
}

 

брал отсюда http://wiki.amperka.ru/projects:gprslogger

просто изменил команды

но почему он не отправляет даные на http://narodmon.ru/

мне кажется ошибка где то тут  // отправляем массив TCP-запроса на сервис «народного мониторинга»

  //inet.sendTCP(tcpBuffer); //##################
  //inet.httpPOST("narodmon.ru", 8283,"##",tcpBuffer,helloy,370); //########
  //gsm.tweet("##",tcpBuffer);
  //gsm.SimpleWriteln(tcpBuffer);
 gsm.SimpleWriteln("AT+CIPSEND=tcpBuffer");