Помогите GSM Shield SIM900

jasur.nazarov
Offline
Зарегистрирован: 29.11.2017

Добрый день!

Стоит задача. Нужно записать полученные данные с сайта на micro sd на флешку. Скетч взял с примера. На серал монитор выводит информацию. Но конда ставлю код записи на флешку. Программа просто ломается. (Извените если что неправильно написал, новичок ))). ) Вот сам код: 

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
#include <SPI.h> 
#include <SD.h>  
 
 
//To change pins for Software Serial, use the two lines in GSM.cpp.
 
//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.
 
//Simple sketch to start a connection as client.
 
InetGSM inet;
//CallGSM call;
//SMSGSM sms;
 
const uint8_t PIN_CS = 10;
File myFile;
 
char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;
 
void setup() 
{
  //Serial connection.
  myFile = SD.open("data.log", FILE_WRITE); 
  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(2400)){
    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.beeline.uz", "", ""))
      Serial.println("status=ATTACHED");
    else Serial.println("status=ERROR");
    delay(1000);
    
    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);
    //Read until serial buffer is empty.
    gsm.WhileSimpleRead();
  
    //TCP Client GET, send a GET request to the server and
    //save the reply.
    numdata=inet.httpGET("ya.ru", 80, "/", msg, 50);
    //Print the results.
    Serial.println("\nNumber of data received:");
    Serial.println(numdata);  
    Serial.println("\nData received:"); 
    myFile.println(msg);
    Serial.println(msg); 
  }
myFile.close();
};
 
void loop() 
{
  //Read for new byte on serial hardware,
  //and write them on NewSoftSerial.
  serialhwread();
  //Read for new byte on NewSoftSerial.
  serialswread();
};
 
void serialhwread(){
  i=0;
  if (Serial.available() > 0){            
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;      
    }
    
    inSerial[i]='\0';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    }
    //Read last message saved.
    if(!strcmp(inSerial,"MSG")){
      Serial.println(msg);
    }
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }    
    inSerial[0]='\0';
  }
}
 
void serialswread(){
  gsm.SimpleRead();
}
okta
Offline
Зарегистрирован: 10.01.2015

1. Нормально вставьте код

2. Не вижу как минимум SD.begin

Дальше смотреть не стал из-за криво вставленного кода

jasur.nazarov
Offline
Зарегистрирован: 29.11.2017
Вроде исправил. Что нет так?
 
 
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
#include <SPI.h> 
#include <SD.h>  
 
 
//To change pins for Software Serial, use the two lines in GSM.cpp.
 
//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.
 
//Simple sketch to start a connection as client.
 
InetGSM inet;
//CallGSM call;
//SMSGSM sms;
 
const uint8_t PIN_CS = 10;
File myFile;
 
char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;
 
void setup() 
{
  //Serial connection.
  SD.begin(PIN_CS);
  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(2400)){
    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.wind", "", ""))
      Serial.println("status=ATTACHED");
    else Serial.println("status=ERROR");
    delay(1000);
    
    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);
    //Read until serial buffer is empty.
    gsm.WhileSimpleRead();
  
    //TCP Client GET, send a GET request to the server and
    //save the reply.
    numdata=inet.httpGET("146.120.18.72", 80, "/jasur.php?cmd=1", msg, 50);
    //Print the results.
    Serial.println("\nNumber of data received:");
    Serial.println(numdata);  
    Serial.println("\nData received:"); 
    Serial.println(msg); 
  }
 
};
 
void loop() 
{
  //Read for new byte on serial hardware,
  //and write them on NewSoftSerial.
  serialhwread();
  //Read for new byte on NewSoftSerial.
  serialswread();
  
};
 
void serialhwread(){
  i=0;
  if (Serial.available() > 0){            
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;      
    }
    
    inSerial[i]='\0';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    }
    //Read last message saved.
    if(!strcmp(inSerial,"MSG")){
      Serial.println(msg);
      myFile = SD.open("fuellog.log", FILE_WRITE); 
      myFile.println(msg);
      myFile.close();
      
    }
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }    
    inSerial[0]='\0';
  }
}
 
void serialswread(){
  gsm.SimpleRead();
}
b707
Offline
Зарегистрирован: 26.05.2017

что не так? - код когда правильно вставите?

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

jasur.nazarov пишет:

Вроде исправил. Что нет так?
 

 
не читабельно, Ни номеров строк ни подсветки синтаксиса
Вот тут почитай и вставь, может помогут http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
jasur.nazarov
Offline
Зарегистрирован: 29.11.2017
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
#include <SPI.h> 
#include <SD.h>  


//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to start a connection as client.

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

const uint8_t PIN_CS = 10;
File myFile;

char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;

void setup() 
{
  //Serial connection.
  SD.begin(PIN_CS);
  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(2400)){
    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.wind", "", ""))
      Serial.println("status=ATTACHED");
    else Serial.println("status=ERROR");
    delay(1000);
    
    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);
    //Read until serial buffer is empty.
    gsm.WhileSimpleRead();
  
    //TCP Client GET, send a GET request to the server and
    //save the reply.
    numdata=inet.httpGET("ya.ru", 80, "/", msg, 50);
    //Print the results.
    Serial.println("\nNumber of data received:");
    Serial.println(numdata);  
    Serial.println("\nData received:"); 
    Serial.println(msg); 
  }

};

void loop() 
{
  //Read for new byte on serial hardware,
  //and write them on NewSoftSerial.
  serialhwread();
  //Read for new byte on NewSoftSerial.
  serialswread();
  
};

void serialhwread(){
  i=0;
  if (Serial.available() > 0){            
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;      
    }
    
    inSerial[i]='\0';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    }
    //Read last message saved.
    if(!strcmp(inSerial,"MSG")){
      Serial.println(msg);
      myFile = SD.open("fuellog.log", FILE_WRITE); 
      myFile.println(msg);
      myFile.close();
      
    }
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }    
    inSerial[0]='\0';
  }
}

void serialswread(){
  gsm.SimpleRead();
}

 

jasur.nazarov
Offline
Зарегистрирован: 29.11.2017

Извините я тут новичок. Не судите строго за косячки )))

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

jasur.nazarov пишет:

Извините я тут новичок. Не судите строго за косячки )))

Для того чобы вам помогли необходимо опубликовать 
1 скетч
2 схему соединений
3 текст ошибок, ну или с чем программа у вас вывааливается?
4 если используются библиотеки не из поставки то ссылки на них, а то библиотеки то разные, какието работают какието нет.
А наугад помогать, перебирать библотеки, собирать схему, тут скорее всего никто не возьмется.

У меня ошибка компиляции, но оно и понятно, нет библиотеки.
ketch_nov29a.ino:1:20: fatal error: SIM900.h: No such file or directory

 #include "SIM900.h"

                    ^

compilation terminated.

exit status 1

 

jasur.nazarov
Offline
Зарегистрирован: 29.11.2017

Здесь можно прикреплять файлы?

bwn
Offline
Зарегистрирован: 25.08.2014

jasur.nazarov пишет:

Извините я тут новичок. Не судите строго за косячки )))

Клапы вроде не видать поблизости, кто запретил новичку почитать прикрепленные темы? Признавайтесь.
Файлы прикрепить нельзя, только картинки или ссылки.