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