Continuando sobre o assunto referente ao módulo ethernet ez web lynx, hoje iremos mostrar como receber dados provenientes de um microcontrolador, por exemplo, para o módulo ez web lynx. Futuramente falaremos sobre como transmitir dados via serial por este módulo.
O ez web lynx inclui um recurso que permite ao dispositivo capturar automaticamente um caractere de inicialização e um caractere de parada. Este recurso é útil quando você necessita que uma informação possa ter uma tag para indicar o início de uma transmissão serial e outra para indicar o término desta transmissão. Este recurso também é útil em um dispositivo serial onde a informação precisa ser processada com frequência ou que envia um código de erro de série específico que deve ser capturado.
Este caractere para inicialização é o “$” (sem aspas) e o caractere para finalização é o “*” (sem aspas). Este recurso já pertence tanto a IDE quanto ao próprio EZ WEB LYNX.
Porém o caractere $ apenas indica que a string a seguir será a responsável pela inicialização da recepção dos dados, assim como o caractere * apenas indica que a string a seguir será a finalizadora destes dados recebidos.
Vamos ver um exemplo!
Imagine que eu queira enviar as seguintes informações:
- Valor de tensão;
- Valor de corrente;
- Valor da potência;
- Valor de temperatura.
Essas informações serão provenientes de um microcontrolador PIC16F877A e serão enviadas pela serial ao módulo EZ WEB LYNX, utilizando os pinos RX e TX do mesmo.
Agora imagine que minha “cadeia” de informação será então composta assim:
Sequência de start + DADOS + sequência de stop
$ABC1222425.6*XYZ
Quebrando esta cadeia de dados temos:
- $ = caractere que indica que a string a seguir será a inicializadora da recepção da string;
- ABC = String de start;
- 12 = Valor da tensão;
- 2 = Valor da corrente;
- 24 = Valor da potência;
- 25.6 = Valor da temperatura;
- * = caractere que indica que a próxima string é a finalizadora da recepção
- XYZ = String de STOP.
Agora temos que converter ABC, XYZ para caracteres ASCII, ou seja, 0x41, 0x42, 0x43 (ABC) e 0x58, 0x59, 0x5A (XYZ).
A pagina dentro do ez web lynx ficaria assim:
</style></head><body>
<p>
<!--(EXEC SERIAL_START=0x41,0x42,0x43)-->
<!--(EXEC SERIAL_END=0x58,0x59,0x5A)-->
</p>
<p>
<span style="font-size:18pt;"><b>Tensao Eletrica:</b></span> <!--(IF SERIAL_KBHIT > 0)-->
<!--(SERIAL DATA 3 4)-->
<!--(ELSE)--><b>NO SERIAL DATA!</b><!--(ENDIF)-->
</p>
<p>
<span style="font-size:18pt;"><b>Corrente Eletrica:</b></span>
<!--(IF SERIAL_KBHIT > 0)-->
<!--(SERIAL DATA 5 5)-->
<!--(ELSE)--><b>NO SERIAL DATA!</b><!--(ENDIF)-->
</p>
<p>
<span style="font-size:18pt;"><b>Potencia Eletrica:</b></span> <!--(IF SERIAL_KBHIT > 0)-->
<!--(SERIAL DATA 6 7)-->
<!--(ELSE)--><b>NO SERIAL DATA!</b><!--(ENDIF)-->
</p>
<p>
<span style="font-size:18pt;"><b>Temperatura:</b></span> <!--(IF SERIAL_KBHIT > 0)-->
<!--(SERIAL DATA 8 11)-->
<!--(ELSE)--><b>NO SERIAL DATA!</b><!--(ENDIF)-->
</p>
</body></html>
OBS: O comando SERIAL DATA irá enviar o dado cuja posição foi passada para o comando, exemplo: (SERIAL DATA 8 11) retornará pela página web a informação contida na oitava e decima primeira posição do frame de dados, ou seja, irá retornar o valor da temperatura que neste caso foi determinada em 25.6.
Crie esta página web pela IDE do módulo EZ WEB LYNX utilizando a guia “HTML” da IDE.
Depois clique em Target e em seguida em Create Image para você gerar o arquivo data.cds, que será enviado para o módulo ez web lynx clicando no botão Upload Project. Irá então aparecer a tela de comando, indicando que o projeto está sendo compilado.
Abaixo temos uma imagem de uma placa de desenvolvimento em PIC16F877A que desenvolvi rapidamente apenas para conectar ao módulo ez web lynx e logo a seguir temos a imagem da página web mostrando estes dados recebidos pelo módulo.
A seguir temos a pinagem do módulo ez web lynx:
Código Fonte para o microcontrolador
Deixo a seguir o fonte do CCS C Compiler para o PIC16F877A:
#include <16f877a.h>
#fuses XT,NOWDT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
void main()
{
while(true)
{
printf("$ABC1222425.6*XYZ");
delay_ms(1000);
}
}
Código fonte para uso do Arduino:
String msg = "$ABC1222425.6,*XYZ";
void setup()
{
Serial.begin(9600);
}
void loop() // run over and over
{
Serial.println(msg);
delay(1000);
}
Receber dados pela serial do módulo EZ WEB LYNX também se torna muito fácil, visto que o objetivo deste módulo é justamente este. Ou seja, trazer praticidade no desenvolvimento sem perder em qualidade no projeto, minimizando, com isto, o custo no tempo de desenvolvimento para uma solução embarcada conectada à Web.














