2014-11-25 2 views
0

Я использую Arduino мега 2650, сим 900 GSM/GPRS модуль и 2 XBee (версия 2) модулей. Датчик температуры отправляет данные между двумя беспроводными устройствами xbees, затем загружает эти данные на веб-страницу с помощью sim900, но по какой-то причине я не могу правильно работать с кодом.датчик загрузки данных в Интернет по Arduino и SIM900

#include <SoftwareSerial.h> 

SoftwareSerial gprsSerial(7, 8); 

int temp; 

void setup(){ 
    gprsSerial.begin(19200); 
    Serial.begin(9600); 
    Serial1.begin(19200); 

    Serial1.println("Config SIM900..."); 
    delay(2000); 
    Serial1.println("Done!..."); 
    gprsSerial.flush(); 
    Serial1.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\",\"Umniah Internet\""); 
    delay(2000); 
    toSerial(); 

    // bearer settings 
    gprsSerial.println("AT+SAPBR=1,1"); 
    delay(2000); 
    toSerial(); 
}; 

void loop(){ 
    if (Serial.available() >= 21) { 
    if (Serial.read() == 0x7E) { 
     for (int i = 1; i < 19; i++) { 
     byte discardByte = Serial.read(); 
     } 
     int analogMSB = Serial.read(); 
     int analogLSB = Serial.read(); 
     int analogReading = analogLSB + (analogMSB * 256); 
     temp = analogReading/1023.0 * 1.23; 
     temp = temp - 0.5; 
     temp = temp/0.01; 
     Serial.print(temp); 
     Serial.println(" degrees c"); 
     // initialize http service 
    gprsSerial.println("AT+HTTPINIT"); 
    delay(2000); 
    toSerial(); 

    // set http param value 
    gprsSerial.println("AT+HTTPPARA= \"URL\" ,\"http://ar.ahu.edu.jo/sensor.aspx?Sens1=10&Sens2=0&Sens3=0\""); 
    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) 
    { 
    Serial1.write(gprsSerial.read()); 
    } 
} 
+0

Не можете понять, где вы столкнулись с подобной проблемой? поделитесь, какие ответы от sim900 на каждую отправленную команду – dmSherazi

+0

У меня нет ответов на все просто мусор для 19200 и 0 градусов C для 9600. , если возможно, мне может помочь, я совершенно новый на этом большом поле, и это часть мой выпускной проект у меня заканчивается. –

+0

Yousef Первое, что вам нужно сделать, это убедиться, что вы общаетесь с модемом по мере необходимости. Можете ли вы включить модем и позвонить из него? – dmSherazi

ответ

0

Ваш кодовый блок ниже должен читать все полученные от GPRS-модема.

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

Вы можете показать нам, что вы видите на своем серийном мониторе?

+0

да конечно. о том, что я сказал вам, что серийный монитор показывает мусор для скорости в 19200 бод и всегда 0 градусов C для скорости 9600 бод. мусор - это что-то вроде этого ($ #% ^% $^@). –

+0

Попробуйте установить все последовательные порты для работы на 9600 – dmSherazi

Смежные вопросы