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");