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