Seminário Ethernet

Propaganda
Eletrônica Embarcada para Internet
Seminário Embedded
System
PMWE-10A
Agenda
Overview
 Informações do Produto
 Ferramentas
 Pilha TCP/IP
 Aplicações

Overview
Por quê usar Sistemas Embarcados?

Resolver problemas de comunicação
Remota
◦
◦
◦
◦

Monitoração remota
Controle remoto
Diagnóstico remoto
Aquisição de dados
Ter a capacidade de acessar sistemas
embarcados remotamente implica em
economia de tempo e dinheiro
Por quê Ethernet?
Ethernet é a maior rede presente nos
ramos de comércio e indústria
 A infra-estrutura Ethernet,
interoperabilidade e escalabilidade
asseguram um fácil desenvolvimento
 Uma vez que o equipamento esteja
conectado a rede Ethernet, ele pode ser
monitorado e controlado pela Internet

Características da Ethernet
Embarcada
Barramento compartilhado
 Acesso ao meio físico: Acesso Múltiplo
com Verificação de Portadora e Detecção
de Colisão (CSMA/CD)
 Velocidade do barramento: 10Mbps
 Tamanho do pacote: até 1500 bytes

Origem da Ethernet Embarcada

Mercado de PCs, modelo OSI da ISO
Por quê Ethernet 10Mbps
Uso em aplicações que necessitam enviar
ou receber poucos bytes
 Não justificável usar Ethernet 100Mbps
com microcontroladores de 8 bits
 Custo

Mercado Ethernet
Mercado Ethernet
Por quê ZigBee
Baixo custo em dispositivos
operados a bateria
 Suporte para várias topologias de
rede: ponto a ponto, star e mesh
 Até 65.000 nós em uma rede
 Segurança: criptografia 128 bits

Por quê Modem GPRS
Mobilidade.
 Stack TCP/IP.
 Comandos AT.
 Custo baseado na quantidade de
dados transmitidos e não no tempo de
conexão.

Por quê FTDI
Controlador USB Host.
 Classes USB encapsuladas.
 Interfaces SPI, serial ou paralela.
 FAT File.
 Interface para um USB Flash Disk.

Informações do Produto
PMWE-10A
PMWE-10A
PMWE-10A
1.
2.
3.
4.
5.
6.
7.
8.
9.
Microcontrolador
PIC18F87J60
RJ45
Modem GPRS (compart.
XBEE)
USB Host
ZigBee/XBEE (sw em
implementação)
DB-9 (Serial , Relés e AO)
EEPROM SPI
Reguladores 5VDC e 2 X
3V3
Temperatura
PMWE-10A
10.
11.
12.
13.
14.
RTC (sw em implem.)
2 Relés
2 Ac. Ópticos
Teclado (sw em implem.)
LCD
Dimensões
2865 mil X 5045 mil
Ou
 7,3 cm X 12,8 cm

Ferramentas
PMWE-10A
Interface de Programação e
Depuração ¶Kit2
Baixo Custo
 Software: MPLAB Ide ou PicKit2
 Muitos outros microcontroladores PIC além do
PIC18F87J60

MPLAB IDE (Integrated Development
Environment)
Ambiente de desenvolvimento para
microcontroladores PIC e dsPIC
 Free
 Windows

MPLAB C 18
Compilador ANSI-C para família de
microcontroladores PIC18
 Windows
 Trabalha com o MPLAB IDE
 Versão estudante completa por 60 dias

Ferramentas Auxiliares
Depurador TCP/IP Wireshark®.
 XCTU da MaxStream®.
 Visual Studio C# da Microsoft®.

Aplicações

1. Exemplo (Pasta SWG)







Internet com Servidor HTTP2
Correio eletrônico
Temperatura
LCD
Modem GPRS (Demonstração)
USB Host – Pen Drive (Demonstração)
2. Exemplo (Pasta SWG1)




Soquete TCP/IP
RTC
Relés
Acopladores Òpticos
* Antes algumas observações:
Endereço MAC 2EI
OUI - Organizationally Unique
Identifier
00.16.a9.xx.xx.xx
Stack Microchip
Sem custo
 Uso modular. Utilize somente o que necessitar
 Família PIC18
 Documentação:AN833 e AN870 da Microchip

Objetivos

Objetivo
◦ Overview sobre a pilha TCP/IP da Microchip

Requisitos
◦ Conhecimento da linguagem C
◦ Idéia sobre Ethernet/Internet
◦ Conhecimentos da linguagem HTML
Módulos
Arquivos












MAC – Media Access Layer
SLIP – Media Access Layer for SLIP
ARP – Address Resolution Protocol
IP – Internet Protocol
ICMP – Internet Control Message Protocol
TCP – Tranmission Control Protocol
UDP – User Datagram Protocol
StackTask – Coordenador Stack Manager
HTTP Server – HyperText Transfer Protocol Server
DHCP Client – Dynamic Host Configuration Protocol
IP Gleaning – Para configurar endereço IP
FTP Server – File Transfer Protocol Server
Projeto Básico I
TCPIP Demo App-C18.mcp
Aquisição de temperatura.
 Valores de temperatura no navegador WEB.
Correio eletrônico.
USB Host FTDI (Demonstração)
Modem GPRS (Demonstração)

Aquisição de
Temperatura
◦ MCP 9700
◦ ± 4°C ou ± 2°C (9700A)
◦ Arquivo: MCP9700.C
◦ Função: void Temperatura_Conversao(void)
Servidor HTTP2
e
MPFS2
Overview HTTP2/MPFS2
Web Pages
Arquivos HTML
 Arquivos de imagens
 CSS Stylesheets
 Arquivos JavaScript
 Localizados na pasta WebPages2

Arquivo Status.xml
<response>
<tem1>~stftem1~</tem1>
<tem2>~stftem2~</tem2>
<tem3>~stftem3~</tem3>
<tem4>~stftem4~</tem4>
<tem5>~stftem5~</tem5>
<tem6>~stftem6~</tem6>
<tem7>~stftem7~</tem7>
<tem8>~stftem8~</tem8>
<tem9>~stftem9~</tem9>
<tem10>~stftem10~</tem10>
<tem11>~stftem11~</tem11>
<tem12>~stftem12~</tem12>
<txt1>~txtftdi~</txt1>
</response>
Index.htm
<tr>
<th style="font-size:10pt;color:black">Temperatura 1</th>
<th>Temperatura 2</th>
<th>Temperatura 3 </th>
</tr>
<tr>
<td style="color:red"><span id="tem1">?</span></td>
<td style="color:red"><span id="tem2">?</span></td>
<td style="color:red"><span id="tem3">?</span></td>
</tr>
....
....
...
...
Utilitário MPFS2
Características MPFS2
Em nosso caso encapsula as web pages
em um arquivo MPFSImg2.c
 Indexa variáveis dinâmicas encontradas
nas páginas web e atualiza o arquivo
HTTPPrint.h
 O projeto deve ser recompilado na
adição ou remoção de variáveis
dinâmicas.

CustomHTTPApp.c

Saída das variáveis dinâmicas via chamadas
HTTPPrint_* .
void HTTPPrint_stftem1(void) {
TCPPutArray(sktHTTP, rec_tem_ana_nav[0],
strlen((char*)rec_tem_ana_nav[0]));
return;
}
Correio Eletrônico

Definição padrão dos parâmetros
Arquivo: Nobreak.C
Função: void SMTP_Deafult(void)

Envio do correio eletrônico
◦ Arquivo: MainDemo.C
if((TickGet() - tick_email ) >= 120ul*TICK_SECOND) {
tick_email = TickGet();
SMTP_Set();
}

Modificação dos parâmetros via navegador WEB
Execute Exemplo I
Continuando Exemplo 1
LCD
 USB FTDI Vinculum.
 Modem GPRS
 XBEE (em implementação)

LCD
2 linhas X 12 colunas
 #define USE_LCD
 Via de dados de 4 bits
 Backlight 4,3VDC


Chamada inicialização do LCD em MainDemo.C
LCDInit();
for(i = 0; i < 100; i++) DelayMs(1);
strcpypgm2ram((char*)LCDText, " 2ei.com.br " "
LCDUpdate();
");
USB Vinculum FTDI
Biblioteca para Pen Drive
 Conector para gravação da bibilioteca via
interface serial RS-232.
 Utiliza fonte de +5VDC.
 Arquivo FTDI.C
 Referência ao arquivo T.TXT no Pen Drive
 Gravação de temperatura no pen-drive

USB Vinculum FTDI

Funções mais importantes
◦ unsigned char FTDI_Read_Byte(unsigned char *a)
 ler byte do pen drive
◦ void FTDI_Read_Line(void)  ler mensagens vindas
do pen drive
◦ unsigned char FTDI_Write_Byte (unsigned char a)
==> escreve byte no pen drive
◦ void FTDI_SPI_Configura(void)  configura SPI
para acesso ao pen drive
◦ Unsigned char FTDI_Write_T_TXT(void) 
escreve temperatura no arquivo T.TXT
Modem GPRS
Módulo Motorola G24
 Acesso via USART2 (XBEE ou modem GPRS)
 Testado na operadora TIM
 Arquivo: MODEM.C , independente da pilha
TCP/IP
 Funciona somente como Cliente
 Comandos AT
 Programa em C# para receber dados do
Modem

Modem GPRS - Funções

Arquivo MainDemo.C
◦ Chama MODEM_Init() e MODEM_State ==>
inicializa Modem GPRS e transmite valor de
temperatura para um servidor.

Arquivo MODEM.C
◦ void USART2_Prepara(void) ==> prepara USART2
para efeito de comunicação com o modem
◦ void MODEM_State(void) ==> vários comandos AT
para modem enviar temperatura para um servidor
Modem GPRS (continuação)

void MODEM_Init(void) ==> Inicializa Modem
Modem GPRS

Operadora TIM
◦ Contexto
 putrsUSART2( (const rom
char*)"AT+CGDCONT=1,\"IP\",\"tim.br\"\r");
◦ IP
 putrsUSART2( (const rom
char*)"AT+MIPCALL=1,\"tim.br\",\"tim\",\"tim\"\r");
◦ IP remoto e porta
 putrsUSART2( (const rom
char*)"AT+MIPOPEN=1,5000,\"201.43.239.58\",5000,0\r");
Modem GPRS

Quantidade de dados
◦ putrsUSART2( (const rom char*)"AT+MIPSETS=1,34\r");

Dados transmitidos
◦ putrsUSART2( (const rom
char*)"AT+MIPSEND=1,\"54656d70657261747572613d");
◦ USART2PutChar(uchar_tem_atu[12]);// envia caracter no formato
hexadecimal
◦ USART2PutChar(uchar_tem_atu[13]);
◦ USART2PutChar(uchar_tem_atu[14]);
◦ USART2PutChar(uchar_tem_atu[15]);
◦ USART2PutChar(uchar_tem_atu[16]);
◦ putUSART2('"');
◦ putUSART2('\r');
Modem GPRS – PC Recebendo
Dados
Soquete Microchip (Cliente)
É um dos pontos de comunicação de uma
rede
 Cada soquete tem um endereço IP e uma
porta
 Permite conexões concorrentes:

◦ N conexões HTTP simultâneas
◦ M aplicações TCP,UDP simultâneas

Todos os soquetes dividem o mesmo buffer
◦ Pró: menos memória por soquete
◦ Contra: Uso do buffer em uma só passada pela
tarefa
TCP – Transmission Control Protocol
(em implementação o soquete no exemplo)
Orientado a conexão. Só ocorre troca de
dados após o estabelecimento da
conexão
 Transferência de dados confiável. Sistema
de seqüência e número de
reconhecimento que habilitam o destino a
reconhecer dados específico
 De 2 a 253 soquetes limitados somente
pela memória disponível e compilador
usado

TCP – Transmission Control Protocol
Cada soquete consome aproximadamente 36
bytes
 Compartilhamento dos buffers de transmissão
e recepção
 Checksum
 Configuração do
TCP_NO_WAIT_FOR_ACK, isto torna os
dados mais lentos ou não durante uma
transmissão

Projeto Básico
II Básico II
Projeto





Soquete TCP/IP
Teclado
RTC
Acopladores Ópticos
Relés
Soquete TCP/IP Cliente




Arquivo: GenericTCPClient.c
Define IP: BYTE ServerName[] = "10.0.0.102";
Define Porta: WORD ServerPort = 5000;
Transmite Data/Hora do RTC:
◦ TCPPutROMString(MySocket, (ROM BYTE*)"Data/Hora=");
◦ TCPPutString(MySocket,uchar_hor_ini_tcp);// transmite
data/hora
◦ TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
PC recebendo dados
Teclado



Portas D0, D1, D2, J4,B5,B6 e B7.
Interrupção Porta B (Aplicacao.C).
Menus.
RTC
C.I DS1390
Função para acertar hora: void
RTC_Write(void)
 Função para ler data/hora: void
RTC_Read(unsigned char* uchar_RTC)


Acopladores Ópticos




C.I H11L1.
Portas: B0 e B1.
Leitura em MainDemo.C:
◦ if (PORTBbits.RB0) uchar_b0 = 1;
◦ else uchar_b0 =0;
◦ if (PORTBbits.RB0) uchar_b1=1;
◦ else uchar_b1 =0;
Navegador
Relés



Relé HRAH-S-DC5V.
Portas: RE3 e RE4
Inicialização:
◦ TRISEbits.TRISE3 = 0; // Saída Relé RL2
◦ //LATEbits.LATE3 = 1; // Ativado
◦ LATEbits.LATE3 = 0;
// Des-ativado
◦ TRISEbits.TRISE4 = 0; // Saída Relé RL3
◦ LATEbits.LATE4 = 1; // Ativado
◦ //LATEbits.LATE4 = 0; // Des-ativado
UDP – User Datagram Protocol
(em implementação)
Protocolo sem conexão
 Não há recuperação devido a erros
 Não há checksum
 Permite até 254 soquetes
 Múltiplas aplicações podem acessar o
UDP simultaneamente

IP – Internet Protocol
Ajuda os dados a encontrarem o destino
mesmo que o dado tenha que viajar por
muitas redes
 O endereço IP deve ser único para cada nó da
rede (32 bits, ex.: 192.168.111.1
 Cada endereço IP tem duas partes:

◦ Endereço de rede que é o mesmo para todos os
nós da rede
◦ Endereço do nó
IP – Internet Protocol
Subnet é a divisão da rede em grupos.
 Máscara de rede: bits que correspondem
ao endereço de rede e subnet são 1. Bits
dos nós são zero. Em uma rede classe B
dois bytes são de endereço de rede e
dois bytes são de endereço de nós. A
máscara de uma subnet com 8 bits de ID
é 255.255.255.0

IP – Internet Protocol

IP estático:
◦ Deve ser definido no código

IP Dinâmico:
◦ Necessita de um PC que tenha Servidor
DHCP
◦ Pode ser atrelado ao endereço MAC
DHCP – Dynamic Host Configuration
Protocol

Método Automático de configuração do IP
◦ Endereço IP, endereço do gateway e máscara são
configurados no power-up
◦ Substituição automática de IP se necessário (15 minutos)
Necessita de um servidor DHCP na rede
 Problemas de sistemas embarcado, como descobrir o
endereço IP:

◦ Através de LCD>
◦ Atrelar ao endereço MAC

Não disponível com SLIP
Obrigado
Download