sexta-feira, 8 de fevereiro de 2013

Sensor de Movimento SMS

    08/feb/2013
    Estou com essa ideia já faz algum tempo porém o que falta é tempo para fazer, mas dessa vez espero conseguir chegar até o final do desenvolvimento do projeto.
    A ideia principal seria desenvolver um circuito capaz de enviar e receber mensagens SMS através da rede GSM, onde eu receberia avisos em meu celular caso algum movimento fosse detectado no interior da minha residência. Para tal, seria necessário um modem que trabalhasse com comandos AT, para tornar mais fácil o trabalho. Já adquiri esse modem pela internet. Segue abaixo a foto:

Modem GSM - AT commands
     Com o modem GSM da imagem acima é possível enviar e receber Mensagens de Text (SMS) através de comandos AT utilizando uma porta de comunicação Serial, como o Microcontrolador PIC16F628A tem disponível portas de comunicação Serial, irei utiliza-las para estabelecer a comunicação entre o PIC e o Módulo GSM. O módulo funciona com uma tensão de 12V e consome 1A de corrente quando esta transmitindo ou recebendo informação. Como os sensores de movimento que pretendo usar trabalham com 12V, poderei utilizar somente uma fonte de 12V e abaixar essa tensão para o restante do circuito que trabalha com TTL.
PIC16F628A
     Eu gosto muito de trabalhar com o PIC16F628A, acho que dentre os CIs da família PIC é o melhor custo-benefício, possui uma boa memória para programas curtos, uma boa quantidade de RAM e EEPROM e também um processamento relativamente bom. Agora, uma característica que gosto muito nesse PIC é o fato de poder optar pelo oscilador interno, o PIC 16F628A possui um oscilador interno bem preciso, eliminando assim alguns componentes que seriam usados externamente no PIC, esse oscilador é ótimo, já utilizei o PIC para transmitir dados Seriais utilizando somente o oscilador interno e nunca tive problemas com isso. Outra característica valiosa nos Microcontroladores é um conversor AD, que infelizmente o 16F628A não possui. Mas se você necessita de um conversor AD em um PIC opções é que não faltarão.
    Nesse projeto irei utilizar o PIC trabalhando a 4MHz, portanto ele levará 1uS para executar uma instrução completa. Tempo que acho mais que suficiente para realizar todas as tarefas de manipulação dos dados. Se por ventura a velocidade de 4MHz não seja suficiente o PIC16F628A tem a possibilidade de trabalhar em velocidade de 20MHz com oscilador externo.
   
Segue abaixo o Chatflow da ideia inicial do projeto. Por enquanto é somente uma ideia inicial, provavelmente irei modifica-la posteriormente.


     

    11/mar/2013
    Infelizmente após uma ligação incorreta do Módulo GSM, o mesmo foi danificado. Estou providenciando um novo módulo para dar continuidade ao projeto.

   19/mar/2013
    Enquanto o novo módulo GSM não chega, vou adiantando outras partes do projeto. Como obter as informações necessárias. Analisando a documentação do módulo TC35 obtive muita informação útil. Dos quais estou separando os comandos necessário para acessar os dados no módulo.

    O comando abaixo é usado para configurar o modo que o módulo reporta o status da rede. Por exemplo, se o mesmo esta registrado na rede ou não, ou se não há rede disponível no momento.

4.37 AT+CREG Network registration

AT+CREG=[<n>]


<n >
0 disable URCs
1 enable URC +CREG:<stat> to report status of network registration
2 enable URC +CREG:<stat>[,<lac>,<ci>] to report status of network registration including location information. Please note that optional parameters will not be displayed during call.
<stat>
0 not registered, ME is currently not searching for new operator
1 registered, home network
2 not registered, but ME is currently searching for a new operator
3 registration denied
4 unknown
5 registered, roaming

    O comando abaixo é usado para Deletar uma mensagem em uma posição específica da memória.

5.2 AT+CMGD Delete SMS message

AT+CMGD=<index>

<index> integer type; value in the range of location numbers supported by the associated memory
Exemplo:
AT+CMGD=1

    O comando abaixo é usado para selecionar o formato das mensagens. Essa configuração deve ser feita antes de tentar receber dados do módulo. No caso do meu projeto, usarei as mensagens no formato texto, por se tratar de um formato mais comum e de fácil tratamento.

5.3 AT+CMGF Select SMS message format


AT+CMGF = [<mode>]


<mode>
0 PDU mode
1 text mode

    O comando abaixo é usado para Ler uma mensagem em uma posição específica da memória.

5.5 AT+CMGR Read SMS message

AT+CMGR=<index>


<index> integer type; value in the range of location numbers supported by the associated memory
Exemplo:
AT+CMGR=1

    O comando abaixo é usado para enviar mensagem de texto utilizando a rede GSM na qual o módulo encontra-se conectado.
    
5.6 AT+CMGS Send SMS message

If text mode (+CMGF=1): +CMGS=<da> [,<toda>]<CR> text is entered <ctrl-Z/ESC>

<da> GSM 03.40 TP-Destination-Address Address-Value field in string format; BCD numbers (or GSM  efault alphabet characters) are converted into characters; type of address given by <toda>

    20/mar/2013
    Antes de trabalhar com os dados após a leitura do módulo TC35 vou armazena-los em uma memória de de velocidade superior a da memória EEPROM. Como o PIC não porta uma quantidade satisfatória de memoria RAM irei utilizar uma memória RAM externa. Após requisitar os dados do módulo TC35 primeiramente irei armazena-los nesse memória externa. Pois não seria possível tratar os dados ao mesmo tempo que recebo-os. Na verdade nem seria possível, pois primeiramente devo receber para depois trata-los.
    Irei utilizar a memória RAM V53C16258HK50, que tem 256K x 16bits e é mais que suficiente para essa aplicação específica, comparando com a memória RAM do PIC, pouco mais de 240 bytes. Essa memória pode ser encontrada no mercado facilmente, e seu valor não ultrapassa R$2,00.
    Para saber como trabalhar com os dados adquiridos do módulo, irei realizar algumas leituras de dados e analisar sua estrutura. Isso será necessário para saber como meu programa irá trabalhar com os dados recebidos. Posteriormente postarei exemplos dos dados lidos do TC35.

05/abr/2013
Abaixo a imagem do novo módulo GSM. Ele é similar ao antigo, com mudanças somente na alimentação que passa agora a ser de 5V ao invés de 12V e algumas modificações nos jumpers de configuração. Mas como o base do módulo continua sendo o TC35 não mudará em nada os comandos de leitura e escrita no módulo. O módulo trabalhando nativamente com 5V é melhor para aplicação aqui proposta, não sendo necessário elaboração de circuitos extras.
Módulo GSM (TC35)
Abaixo vemos o diagrama elétrico do bloco responsável pela comunicação serial do módulo com o PC.
Bloco Serial
Irei utilizar somente as entradas RXD_PC e TXD_PC. Que são reservadas para utilização do módulo com microcontrolador.
Abaixo o bloco que mostra as ligações do TC35.
TC35 diagrama de ligação
Eu gostaria muito de trabalhar somente com o PIC16F628A, porém após uma analise melhor da quantidade de portas necessárias para o projeto, optei por substituir um dos PICs pelo PIC16F877A. Que basicamente é igual ao PIC16F628A, porém com mais portas IO e com alguns recursos extras.
Como o PIC18F877A é portado de mais memória interna e também é capaz de trabalhar em velocidades superiores ao 628A, não será mais necessário implementar bancos de memória RAM externas. Deixando assim o projeto mais claro e simples.

Abaixo o primeiro teste como o PIC16F877A no protoboard realizando uma transmissão serial para o computador.




O protótipo da placa já esta pronto no computador. Agora falta transferir a imagem para uma placa.
O Layout acima é da parte do circuito responsável por receber os comando via Módulo GSM e executa-los seja sim ou não através de transmissão wireless.



A imagem acima é do teste no Protoboard da comunicação entre o PIC e o Display de LCD 16x2.
Os passou abaixo mostra a confecção da placa PCB, os passos para transferência da imagem Layout acima para uma placa.

Primeiro passo. você deve imprimir os Fotolitos, no meu caso como foram impressos em impressora a jato de tinta. Imprimi duas imagem, para realizar a sobre posição, reforçando assim o tom de preto. Para quem for imprimir em impressora a Laser, não é necessário fazer duas imagens iguais como eu fiz.

Segundo passo. Aplicação da tinta fotossensível sobre a placa. Para uma aplicação uniforme o método mais recomendado é realizar a centrifugação da placa após a aplicação. Abaixo podemos ver a placa já com a tinta fotossensível aplicada e a corrosão já realizada.






















Continua.....

Nenhum comentário:

Postar um comentário