Pages: [1]   Go Down
Author Topic: Arduino Uno + Icomsat 1.1 SIM900  (Read 2098 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boa tarde,
    
Componentes:
    1 - Motor de Passo
    2 - Leds;
    3 - Push Button
    4 - Arduino Uno
    5 - Icomsat 1.1 SIM900
   As funções do programas:
      1 - Envio um sms e o motor de passo e acionado com o led amarelo, recebo o sms de confirmação;
      2 - Envio um sms e o motor de passo e acionado  com o led verde, recebo um sms de confirmação;
      3 - Aperto o push button e recebo um SMS informando o seu acionamento.
   Comecei a escreve o código somente para acender e apagar um led, procurei ajuda na net incrementei meu código mais ainda nada.
   Coloquei os jumpers do shield em rx 4 e tx 5
   Alguém pode me ajudar a descobrir meu erro? Será que estou seguindo o caminho certo?
    Código:
    Tentei colocar o código mais sempre utrapassa o limite, por isso vai em anexo.
    Desde de já agradeço muito a ajuda

* Liga_e_Desliga_LEDS.ino (8.49 KB - downloaded 41 times.)
« Last Edit: October 23, 2012, 12:11:23 pm by brunolrs » Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1581
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bom olhando ao teu codigo encontrei algo que penso estar errado:
Code:
void checksms(){
  if(gsm.available() > 0){
    Serial.println("--------Nova SMS----------");
 gsm.flush();
    delay(1000);
    lesms();
    vadidacodigo();
  }
};

//--------------------------------------------------------------------------------------------------------------------------------------------------------------

void lesms(){
  Serial.println("-----------------------Lendo SMS---------------------");
  delay(2000);
  gsm.println("AT+CMGR=1\r");
 gsm.flush();
  for( x=0; x<255; x++){
    data[x]='\0';
  }
  x=0;

Se invocas o comando para ler a sms com o AT+CMGR=1 logo apos ele, o modem devolve te para a porta Serie o corpo da SMS que ira ser carregada no Buffer a espera de ser descarregado.O teu problema penso que seja logo a seguir quando corres o gsm.flush !! Sabes o que o flush faz?
Limpa o buffer smiley-razz
Logo nada depois sera lido

Quote
Flush

The new library supports the flush() method, which works the same way that HardwareSerial’s flush() does.

      void flush(); // discard the contents of the RX buffer.

Posso estar errado mas ...
Depois podes explicar o que pretendes fazer neste ciclo if?
Code:
for( x=0; x<255; x++){
    data[x]='\0';
  }





« Last Edit: October 24, 2012, 02:55:23 pm by HugoPT » Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hugo PT

No trecho de if abaixo armazeno a SMS recebida em uma String e despois trato ela abaixo.

Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E o que é que o teu programa não faz?

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ele recebe uma SMS, armazena essa SMS em uma String, retira o código da string e ativa um led basicamente e isso. Agora eu queria fazer o caminho inverso. Exemplo: Ativar um sensor através de uma SMS e se esse sensor fosse ativado eu receberia uma SMS.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Acho que temos de primeiro definir os termos.

Um sensor não pode ser activado. Pode ser lido. Um actuador, pode ser activado mas não pode (normalmente) ser lido.

Dito isto, queres mandar um SMS e activar um LED. Isto já funciona?

Para receberes uma mensagem quando o sensor ser activado, como é o sensor? É digital ou analógico? Já fizeste um programa só para enviar SMSs?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A parte de mandar a SMS e ligar ou desligar um led ja funciona com o código acima.
Compreendo a parte do sensor,  mas eu posso colocar um pino em HIGH ou em LOW para fornecer ou não voltagem para um sensor?
O problema em si seria esse, como inserir um interrupção para depois que um determinado pino fosse ativado(assim ligando o sensor( Um sensor pir ou mesmo um PUSH BUTTON) em recebesse um SMS avisando que isso aconceu?


Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Depende de quanto o sensor consome. Diria que para a maior parte dos sensores que se usam com breadboard isso pode ser feito na boa, senão é adicionar um transistor. Mas porque quererias fazer isso? O projecto funciona a pilhas? Estás ciente que os sensores podem ter tempos de arranque até darem dados fiáveis?

Assim de repente...

Code:

const int pino_SMS = XXXX; //mete tu o pino...

....


loop() {


if (HIGH == digitalWrite(pino_SMS)) { //escolhe a polaridade do botão aqui...
   //se botão ou sensor activado...
   gsm.println("AT+CMGS=939393933\nACTIVADO");
   gsm.print(0x1a); // isto é equivalente ao Ctrl + Z
}


}


Não me parece que colocar uma interrupção seja bom neste caso. Apenas tens de garantir que o programa passa pela parte de testar o pino de x em x milisegundos e isso por si só garante que não vais ter o sistema a mandar SMSs a torto e a direito. A propósito, seria benéfico colocares um tipo de lógica desses aqui para evitar que mandes SMSs devido a bouncing dos contactos. smiley

Era isto que tinhas dúvidas?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Entendi,
     A noite vou testar e aviso progresso
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na verdade eu queria simular um alarme que ligasse e desligasse através da SMS, por isso teria que "desativar ou ativar" o sensor. Pois caso a alarme estivesse ligado  eu faria a leitura do sensor caso o alarme estivesse desligado eu não faria a leitura do sensor. Não consegui fazer utilizando o código acima. Pensei que na verdade podeira utilizar um led e caso o pino do led estive HIGH ai faria a leitura se estivesse low não faria a leitura, mas também não funcionou.
« Last Edit: October 27, 2012, 01:19:14 pm by brunolrs » Logged

Pages: [1]   Go Up
Jump to: