GPRS передатчик промблемма
- Войдите на сайт для отправки комментариев
Пт, 25/09/2015 - 14:23
привет всем.
я накидал скетч но что то он не работает
помогите решить промблемму
#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");