Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal!

 

Eu fiz um projeto que preciso enviar uma mensagem SMS se certa condição (if) for feita. 

Estou utilizando o PIC 16F877A e vou comunicar através das portas TX e RX.

Fiz o projeto do circuito no Proteus e estou compilando através do programa MikroC PRO for PIC, então, eu quero que também no Proteus pelo virtual terminal eu consiga ver a mensagem que foi enviada e qual foi recebida também.

 

Att,

  • Membro VIP
Postado

Conecte o tx do pic no rx do terminal e vice versa e configure-os pra mesmo baudrate, protocolo e etc

😜

  • Obrigado 1
  • Membro VIP
Postado

Mas você quer no Proteus ou no real? Em ambos??! Fala sério! E é possível! No proteus adicione o tal de COMPIN e faça as conexões. A princípio ele une o mundo real ao virtual. Não sei porquê mas me identifico um pouco com ele...😁

  • Haha 2
Postado
Em 04/03/2020 às 15:48, aphawk disse:

@aphawk Ele faz com um arduino e eu não estou usando o arduino, mas o PIC 16F877A, porque o arduino usa o microprocessador atmega 328P que é diferente eu acho.

Você conhece uma forma mais fácil de fazer?

adicionado 2 minutos depois
Em 04/03/2020 às 16:26, Isadora Ferraz disse:

Mas você quer no Proteus ou no real? Em ambos??! Fala sério! E é possível! No proteus adicione o tal de COMPIN e faça as conexões. A princípio ele une o mundo real ao virtual. Não sei porquê mas me identifico um pouco com ele...😁

@Isadora Ferraz Não sei se é possível fazer esta simulação no Proteus, se o que diz for verdade vou tentar, mas voce sabe programar em C para enviar SMS? so me da um exemplo.

Eu sei programar em C, mas não sei tudo, porque este modulo sms é novo para mim.

  • Membro VIP
Postado

Bem... a ideia do compin é conectar o que está na tela com algo de verdade via serial. Tenta e me fale.

Sim sei um pouco de c. Mas o que deve te ajudar bem é conhecer o hw do mc. No caso do pic é bem fácil enviar um dado via serial (não apenas pra sms... isso é da sua conta. E nunca vi este treco mais gordo)

Pro caso do pic algo como

void tx(dado)
{
TXREG=dado;while(!TRMT);
}

Uma lidinha no d.s. e você vai entender rapidão o que são TXREG e TMRT.

É mole ou quer mais? Já sei... quer mais.  O mikroc tem lib com função pra enviar via serial. Mais tarde confirmo...

  • Curtir 1
Postado
10 horas atrás, Henrique Souza disse:

Ele faz com um arduino e eu não estou usando o arduino, mas o PIC 16F877A, porque o arduino usa o microprocessador atmega 328P que é diferente eu acho.

 

Ué, a sua dúvida é sobre o sim800l, não é ?

O código mostrado te dá uma excelente base para saber o que que você tem de enviar e o que você recebe desse módulo, independente de ser Atmega ou PIC ou Arduino .

Mas se a sua dúvida é sobre programar em C, aí ferrou kkkk

Nisso eu não posso te ajudar....

 

Paulo

  • Curtir 1
  • Membro VIP
Postado

O que tentei mostrar é como enviar. Depois disso o que o garoto precisa saber o que enviar pro módulo. Ou seja são dúvidas e conhecimentos distintos mas complementares pro sucesso. Vá por partes: defina qual a dúvida inicial. A minha parte é a do como e a do Paulão foi a do que e acho que ambas foram bem respondidas

  • Curtir 1
Postado
18 horas atrás, Isadora Ferraz disse:

Pra quem prefere "não sujar as mãos" tem mesmo...!

https://download.mikroe.com/documents/compilers/mikroc/pic/help/uart_library.htm

 

abç

 

 

@Isadora Ferraz Olhando este site e comparei com alguns videos e me ajudou muito como enviar dados na comunicação serial TX.

Eu fiz o teste no Proteus no Virtual Terminal e mostrou a mensagem que eu quis enviar.

 

Agora estou com outro problema kkkk...e que está mensagem esta em looping na minha função if e a cada 1 segundo fica enviando de novo a mensagem, então, queria saber se você sabe como posso contar se a mensagem ja foi enviada uma vez e  so pode ser enviada outra de novo depois de uma hora por exemplo se a função if ainda estiver no caso.

  • Membro VIP
Postado

Amigo uma hora de espera é uma baita e semi eterna perda de tempo pro mc mas claro, ele espera.  P.ex. 3600 delays de um segundo

for(;;)
{
envia_mensagem();
for (i=0;i<3600;i++) delay(1000); //mS
}

Mas se eu fosse você deixaria alguma interrupção liberada...

 

Se a mensagem foi enviada, se você enviou é claro que ela foi. O que você precisa saber é se ela foi envidada e RECEBIDA. p.ex. aguardando algum retorno do seu módulo. Neste caso Paulão se quiser pode te ajudar...

  • Membro VIP
Postado

você diz algo como...

unsigned int contador=0;
for(;;)
{
envia_mensagem();
if (ok_enviada()) // 'uma programação que confirma se foi enviada'
{contador++;delay(uma_hora);}
//faça o que quiser com contador
}

??

Bem... não sabemos do que se trata este projeto secreto. Mas se for trabalhar com pilha/bateria (algo como uma mini estação meteorológica lá nos cafundó do juda) , consulte os princípios de funcionamento do modo sleep e watch dog. Algo como ele dorme mas de hora em hora o cão de guarda o acorda pra enviar o dado. (não lhe faço esta programação)

Postado

@aphawk Qto tempo féra!!! Já saiu aquele analisador de espectro tipo o da quasar?

 

10 horas atrás, Henrique Souza disse:

@Isadora Ferraz Tem uma programação que confirma se foi enviada, mas você sabe como eu faço um contador para saber se foi enviado uma vez, e se foi só pode ser enviada outra de novo depois de uma hora?

Henrique.. Primeira coisa.. SIM8xx é uma b****! Mas funciona até hoje e se popularizou bastante! A questão se bem entendi é puramente lógica de programação! Se a dúvida for em relação ao SIM8xx sugiro primeiramente estudar os seus respectivos comandos AT.

@Isadora Ferraz o sim8xx no modo default tem por padrão Autobaud. Porém na bancada percebi que ele se comporta melhor a 57600. Claro o melhor mesmo é usar a comunicação i2c dele hehe!

@Henrique Souza Até onde sei assim que você envia o comando AT respectivo de enviar SMS o sim te retorna um /n Ok /n.

Não há de fato uma confirmação se sua operadora enviou ou não.. Se algo der muito errado retorna /n ERRO /n. Mas isso não garante de fato o envio... 

Pesquise no Google por "SIM800 AT+CMGS".

https://www.elecrow.com/wiki/images/2/20/SIM800_Series_AT_Command_Manual_V1.09.pdf

Já em relação ao C++ meu amigo.. Sugiro ir montando etapas em seu projeto.. Crie blocos com suas funções.. Depois integre tudo ao código principal! (Já vou avisando.. Não manjo qse nada de PIC..)

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!