Pessoal,
Bom, cá estou novamente as voltas com uma nova versão da biblioteca para o ENC28J60 que funcione satisfatoriamente no Arduino...
É fato que a primeira versão da EthernetSupENC28J60.h não resolveu o problema e ainda gerou novas dúvidas. Lancei então uma segunda versão do núcleo da biblioteca, chamado EtherEncLib.h, que também apresentou os mesmos problemas da primeira versão.
Resolvi então suspender a segunda versão do núcleo e comparar os datasheets do ENC28J60 com o do W5100. Foi aí que entendi o que se passava...
O W5100 tem internamente no chip, toda uma camada de aplicação já pronta. Além disso ele tem o dobro da memória do ENC28J60 e já lida automaticamente com a montagem, envio, recepção e desmontagem dos pacotes TCP. Tudo já está pronto no W5100! Isso não só para TCP, mas também para UDP e outros protocolos.
Não pára por aí. O W5100 tem 4 sockets independentes, controlados por registradores também independentes. Resumindo, tudo está resolvido no W5100, enquanto no ENC28J60 tudo tem que ser feito na unha!
Toda essa parte de sockets, buffers independentes, tratamento automático de pacotes e timers internos para controlar a resposta, simplesmente não existe no ENC28J60.
Foi então que tive outra idéia. Fui procurar o material existente sobre o ENC28J60, diretamente na fabricante, a Microchip. E achei! Um material muito completo e um SDK monstruoso para diversas versões de plataformas PIC. Segue o link:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022889
Nesse link existem documentos técnicos, programas e ferramentas para desenvolvedores sobre o ENC28J60. Lógico que totalmente voltado para a plataforma PIC, também fabricado pela Microchip.
Após algum estudo, resolvi que o caminho era por aí. Bastava traduzir a programação para PIC em Arduino e a camada que eu precisava de aplicação já estava resolvida.
Comecei a estudar essa implementação e percebi que o trabalho seria imenso e que no final eu não saberia como colocar para funcionar. Empaquei de novo.
Foi aí que a idéia da Reta Final apareceu! Decidi utilizar a própria biblioteca do W5100 como base para essa minha nova biblioteca! Pois essa biblioteca eu tenho certeza que funciona e só preciso agora importar a programação que foi feita para o PIC e adicionar na biblioteca do W5100 para Arduino.
Mas o mais interessante dessa implementação é que estou criando um "conector" do ENC28J60 para a biblioteca oficial do Arduino para o W5100. Dessa forma, quem tem um programa já funcionando no Ethernet Shield W5100, bastará substituir alguns arquivos da biblioteca para compilar o mesmo código para o ENC28J60, totalmente transparente!!!
Já avancei bastante com essa Reta Final e agora falta finalizar a implementação que já está bem avançada. Até agora não encontrei nenhum problema impossível, nada que o W5100 que o ENC28J60 não possa fazer com uma camada a mais de aplicação.
Inclusive estou otimizando o uso dos 8K bytes do buffer do ENC28J60 para acomodar os 4 sockets que o W5100 implementa internamente. Separei a memória em 10 pequenos buffers, sendo 2 maiores de 2K bytes e 8 menores de 512 bytes.
O ENC28J60 tem uma funcionalidade muito legal que é a cópia DMA entre partes do buffer. Com isso pretendo copiar os dados de entrada/saida para os buffers independentes dos socketes, implementando exatamente a mesma funcionalidade que o W5100 possui internamente.
Outro detalhe que estou implementando e que não foi implementado em nenhuma outra versão de biblioteca para o ENC28J60 é a utilização da interrupção gerada na chegada de pacotes, para otimizar o desempenho.
Bom, é isso pessoal! Conto com a paciência de vocês para o amadurecimento desse projeto que é o Curso Arduino Automation. Não existe sentido em lançar uma solução parcial, que não atenda totalmente e que seja melhor continuar usando o W5100.
Mas porque não continuar utilizando o W5100? Por dois motivos bem simples: 1. porque ele é caro; 2. porque ele tem problemas de escalabilidade (vide: http://pt.wikipedia.org/wiki/Escalabilidade -- principalmente Carga de escalabilidade).
Para finalizar, essa nova Reta Final vai atender aqueles que esperam que eu faça modificações também na biblioteca EthernetSupW5100, pois agora com a integração da biblioteca oficial Ethernet.h, tudo isso ficará integrado e existirá apenas uma versão de EthernetSup no futuro, dependendo apenas de algumas configurações para funcionar em um modelo de Ethernet Shield ou noutro.
Abraços,
Renato
quarta-feira, 18 de setembro de 2013
quarta-feira, 4 de setembro de 2013
Dilema do ENC28J60 - Parte 2
Pessoal,
Boa noite! Estou de volta após alguns contratempos! Infelizmente não dá para fazer projetos de clientes e criar aulas do Curso Arduino. Tive que escolher um e optei pelo último!
Mas para a segunda aula do Curso Arduino Automation, um amadurecimento da biblioteca EthernetSupENC28J60.h, lançada na primeira aula, era necessário.
O problema nem era a biblioteca em si, mas o núcleo dela que tinha alguns BUGs sérios e que comprometiam o funcionamento e a velocidade.
O principal BUG que me fez rescrever totalmente o núcleo, ao invés de apenas arrumá-lo, é um que reinicia o Arduino a cada request, forçando a biblioteca utilizar EEPROM para manter o estado entre os reinícios. Além de comprometer a EEPROM do Arduino, ainda existe o problema do reinício que é ruim por si só.
Essa biblioteca é independente e não necessita da EthernetSupENC28J60.h (ainda a ser lançada) para funcionar. Acompanha exemplos de funcionamento. Um deles inclusive apresenta todas as portas digitais disponíveis no Arduino UNO para acionamento, em links numa página HTML.
Para finalizar, devo acrescentar que o desafio dessa vez foi organizar todo o código. São mais de 1500 linhas de funções que não seguem um funcionamento linear. A função available() por exemplo não apenas avisa a chegada de um request, mas também efetua a conversação inicial (handshaking) e alimenta o buffer de parâmetros do GET. Obs: POST ainda não foi implementado
Outra modificação importante foi a separação de parte do código no arquivo enc28j60.c para o arquivo socket.c, isolando de vez as funções de hardware.
Para os mais avançados, vale a pena dar uma olhada nas funções de macros do arquivo net.h, utilizadas no arquivo EtherEncLib.c; e foram isoladas dessa forma para caracterizar funções de leitura e escrita dos buffers.
É isso aí pessoal! A segunda aula já está saindo!
Ah! Pessoal, sobre dúvidas, sugestões sobre este tópico, principalmente as técnicas, participem do:
Fórum do Curso Arduino
http://www.seriallink.com.br/forum
Abraços,
Renato
Boa noite! Estou de volta após alguns contratempos! Infelizmente não dá para fazer projetos de clientes e criar aulas do Curso Arduino. Tive que escolher um e optei pelo último!
Mas para a segunda aula do Curso Arduino Automation, um amadurecimento da biblioteca EthernetSupENC28J60.h, lançada na primeira aula, era necessário.
O problema nem era a biblioteca em si, mas o núcleo dela que tinha alguns BUGs sérios e que comprometiam o funcionamento e a velocidade.
O principal BUG que me fez rescrever totalmente o núcleo, ao invés de apenas arrumá-lo, é um que reinicia o Arduino a cada request, forçando a biblioteca utilizar EEPROM para manter o estado entre os reinícios. Além de comprometer a EEPROM do Arduino, ainda existe o problema do reinício que é ruim por si só.
Por esse e outros problemas, causados principalmente pela pressa que fiz a primeira versão, mudei um pouco a abordagem nesse novo núcleo e o compilei separadamente em uma biblioteca chamada EtherEncLib.h, que acabei de publicar no GitHub, conforme segue o link:
https://github.com/renatoaloi/EtherEncLib
Essa biblioteca é independente e não necessita da EthernetSupENC28J60.h (ainda a ser lançada) para funcionar. Acompanha exemplos de funcionamento. Um deles inclusive apresenta todas as portas digitais disponíveis no Arduino UNO para acionamento, em links numa página HTML.
Para finalizar, devo acrescentar que o desafio dessa vez foi organizar todo o código. São mais de 1500 linhas de funções que não seguem um funcionamento linear. A função available() por exemplo não apenas avisa a chegada de um request, mas também efetua a conversação inicial (handshaking) e alimenta o buffer de parâmetros do GET. Obs: POST ainda não foi implementado
Outra modificação importante foi a separação de parte do código no arquivo enc28j60.c para o arquivo socket.c, isolando de vez as funções de hardware.
Para os mais avançados, vale a pena dar uma olhada nas funções de macros do arquivo net.h, utilizadas no arquivo EtherEncLib.c; e foram isoladas dessa forma para caracterizar funções de leitura e escrita dos buffers.
É isso aí pessoal! A segunda aula já está saindo!
Ah! Pessoal, sobre dúvidas, sugestões sobre este tópico, principalmente as técnicas, participem do:
Fórum do Curso Arduino
http://www.seriallink.com.br/forum
Abraços,
Renato
terça-feira, 13 de agosto de 2013
quinta-feira, 25 de julho de 2013
Wireless 433Mhz vs Controle Remoto PPA TOK (Code Learning)
Pessoal,
Estou de volta com mais um post, resultado dos meus estudos sobre comunicação sem fio (wireless). Quem acompanha meu trabalho conhece esse dilema através do Raduino, que é um projeto de Rádio Frequência para o Arduino.
A princípio minha proposta era fazer um clone do XBee, mas muitas coisas aconteceram e resolvi simplificar.
Gosto muito destes módulos RF de 433Mhz, conforme link:
http://seriallink.com.br/loja/product_info.php?cPath=32&products_id=62
São módulos baratos e funcionais. O único problema desses módulos é que não existe nenhuma implementação bacana de encoder/decoder para facilitar o trabalho do hobbista em Arduino.
Na verdade existe a VirtualWire, conforme link:
http://www.airspayce.com/mikem/arduino/index.html
Mas essa biblioteca é complicada de utilizar e de ajustar o buffer inicial que é de 2 bytes. Então não existe nada para o iniciante, que de forma simples, possa utilizar esses Kits Wireless 433Mhz sem precisar conhecer muito sobre portabilidade de tipos, redimensionamento de arrays etc.
Enfim, ainda tem muito trabalho pela frente, mas hoje venho através desse blog, lançar o biblioteca RFremote, que criei para uma utilização bem simples: detectar acionamento de controles remotos de portões de garagem ou de alarme de carros.
A maioria desses controles de alarme e portão, utilizam um padrão de frequência de 2Khz (já vi alguns de 4Khz), que é facilmente detectado em amostragens de 500us (micro-segundos).
Criei então essa biblioteca para detectar comandos desses controles remoto. Na verdade, funciona exatamente como a IRremote, que faz a mesma coisa para controles remoto infra-vermelhos. Ou seja, basta carregar o exemplo RFrecvDemo e pressionar o botão do controle remoto. Uma linha de comando aparecerá no terminal Serial. Essa linha precisa ser copiada para o outro exemplo RFTest.
Pronto, isso é suficiente para mapear um botão via rádio-frequência; e começar a utilizar seu controle do portão da garagem no Arduino!
O circuito deve ser montado conforme segue:
E a biblioteca RFremote pode ser baixada pelo link:
https://github.com/renatoaloi/RFremote
Abraços,
Renato
Estou de volta com mais um post, resultado dos meus estudos sobre comunicação sem fio (wireless). Quem acompanha meu trabalho conhece esse dilema através do Raduino, que é um projeto de Rádio Frequência para o Arduino.
A princípio minha proposta era fazer um clone do XBee, mas muitas coisas aconteceram e resolvi simplificar.
Gosto muito destes módulos RF de 433Mhz, conforme link:
http://seriallink.com.br/loja/product_info.php?cPath=32&products_id=62
São módulos baratos e funcionais. O único problema desses módulos é que não existe nenhuma implementação bacana de encoder/decoder para facilitar o trabalho do hobbista em Arduino.
Na verdade existe a VirtualWire, conforme link:
http://www.airspayce.com/mikem/arduino/index.html
Mas essa biblioteca é complicada de utilizar e de ajustar o buffer inicial que é de 2 bytes. Então não existe nada para o iniciante, que de forma simples, possa utilizar esses Kits Wireless 433Mhz sem precisar conhecer muito sobre portabilidade de tipos, redimensionamento de arrays etc.
Enfim, ainda tem muito trabalho pela frente, mas hoje venho através desse blog, lançar o biblioteca RFremote, que criei para uma utilização bem simples: detectar acionamento de controles remotos de portões de garagem ou de alarme de carros.
A maioria desses controles de alarme e portão, utilizam um padrão de frequência de 2Khz (já vi alguns de 4Khz), que é facilmente detectado em amostragens de 500us (micro-segundos).
Criei então essa biblioteca para detectar comandos desses controles remoto. Na verdade, funciona exatamente como a IRremote, que faz a mesma coisa para controles remoto infra-vermelhos. Ou seja, basta carregar o exemplo RFrecvDemo e pressionar o botão do controle remoto. Uma linha de comando aparecerá no terminal Serial. Essa linha precisa ser copiada para o outro exemplo RFTest.
Pronto, isso é suficiente para mapear um botão via rádio-frequência; e começar a utilizar seu controle do portão da garagem no Arduino!
O circuito deve ser montado conforme segue:
E a biblioteca RFremote pode ser baixada pelo link:
https://github.com/renatoaloi/RFremote
Abraços,
Renato
terça-feira, 16 de abril de 2013
Atraso do Curso Arduino Automation - Dilema do ENC28J60
Pessoal,
Estou aqui, ainda atrasado com o lançamento da aula inaugural do Curso Arduino Automation, e resolvi escrever esse post, com um diário dos meus últimos 15 dias.
Finalmente estou finalizando o trabalho que venho desenvolvendo com essa versão de Ethernet Shield conhecida por ENC28J60, que nada mais é senão um chip da Microchip que ajuda a resolver a camada de rede (Ethernet).
Datasheet do ENC28J60: http://ww1.microchip.com/downloads/en/devicedoc/39662b.pdf
Como podemos verificar no datasheet ele é entitulado de Stand-Alone Ethernet Controller with SPI Interface. Isso significa que ele se denomina um controlador Ethernet independente, e que disponibiliza uma interface SPI para comunicação, com o Arduino ou outro microcontrolador.
O grande problema desse modelo de Ethernet Shield é a biblioteca! O modelo W5100 de Ethernet Shield tem sua a biblioteca oficial sendo distribuida junto com o programa do Arduino. Já o ENC28J60, não existe uma biblioteca oficial, e as versões que existem sempre empacam no mesmo problema:
* Buffer de 500 bytes para o Arduino UNO e 1500 bytes para o Arduino MEGA.
Comparando o datasheet do ENC28J60 com o que está implementado em sua biblioteca para Arduino, nota-se que faltam muitas funções; e algumas estão comentadas, sob argumento de que não funcionam, e um material adicional é sugerido para leitura.
Exemplo:
Estou tentando entender como funciona esse Ethernet Shield ENC28J60 pelos últimos 15 dias. Já venho brigando com ele há tempos, mas agora é definitivo.
Já consegui as seguintes melhorias na minha biblioteca para o ENC28J60:
Estou aqui, ainda atrasado com o lançamento da aula inaugural do Curso Arduino Automation, e resolvi escrever esse post, com um diário dos meus últimos 15 dias.
Finalmente estou finalizando o trabalho que venho desenvolvendo com essa versão de Ethernet Shield conhecida por ENC28J60, que nada mais é senão um chip da Microchip que ajuda a resolver a camada de rede (Ethernet).
Datasheet do ENC28J60: http://ww1.microchip.com/downloads/en/devicedoc/39662b.pdf
Como podemos verificar no datasheet ele é entitulado de Stand-Alone Ethernet Controller with SPI Interface. Isso significa que ele se denomina um controlador Ethernet independente, e que disponibiliza uma interface SPI para comunicação, com o Arduino ou outro microcontrolador.
O grande problema desse modelo de Ethernet Shield é a biblioteca! O modelo W5100 de Ethernet Shield tem sua a biblioteca oficial sendo distribuida junto com o programa do Arduino. Já o ENC28J60, não existe uma biblioteca oficial, e as versões que existem sempre empacam no mesmo problema:
- Buffer pequeno e limite envio na comunicação impedem o envio de HTML com mais de 500 caracteres*.
* Buffer de 500 bytes para o Arduino UNO e 1500 bytes para o Arduino MEGA.
Comparando o datasheet do ENC28J60 com o que está implementado em sua biblioteca para Arduino, nota-se que faltam muitas funções; e algumas estão comentadas, sob argumento de que não funcionam, e um material adicional é sugerido para leitura.
Exemplo:
// check if a packet has been received and buffered
//if( !(enc28j60Read(EIR) & EIR_PKTIF) ){
// The above does not work. See Rev. B4 Silicon Errata point 6.
if( enc28j60Read(EPKTCNT) == 0 ) {
return(0);
}
Estou tentando entender como funciona esse Ethernet Shield ENC28J60 pelos últimos 15 dias. Já venho brigando com ele há tempos, mas agora é definitivo.
Já consegui as seguintes melhorias na minha biblioteca para o ENC28J60:
- Eliminada a limitação do buffer de 500 bytes para o Arduino UNO e de 1500 bytes para o Arduino MEGA;
- Retirada a limitação de envio de apenas um pacote TCP;
- Mantida a limitação de apenas um socket TCP, mas com agora controle de outros sockets;
Dessa forma, agora a biblioteca pode enviar páginas grandes de HTML, em pequenos pacotes TCP de 72 (dados) + 54 (header) = 128 bytes.
Só que agora que são muitos pacotes de 128 bytes sendo enviados, então a conexão ficou um pouco demorada, mas isso é facilmente resolvido através de ajustes no timer.
Alterei a biblioteca para funcionar em um formato de Serviço, com um timer que roda a cada 5 ms e verifica se dados chegaram ou precisam ser enviados pelo socket TCP.
Esse Serviço também lida com pacotes ARP, ICMP, e novos sockets, que o cliente vai abrindo durante a conexão. Como o Arduino não tem memória suficiente para lidar com vários sockets, o Serviço vai respondendo e fechando as conexões de socket, fora da conexão principal.
Essa biblioteca que estou fazendo ainda vai precisar de muitas contribuições da comunidade e muitas versões para ainda resolver todos os bugs e implementar todas as funcionalidades, mas já é uma luz no fim do túnel para quem sempre quis utilizar esse modelo de Ethernet Shield ENC28J60.
Eu mesmo sempre fiquei revoltado de não conseguir fazer esse modelo ENC28J60 a funcionar, mas só depois que descobri que ele não é "pior" que o W5100, mas sim, ele é mais versátil, permitindo implementações mais próximas às camadas mais baixas da rede. Por outro lado, é mais difícil de implementar código e organizar em bibliotecas.
A grande motivação que me faz continuar a criar essa biblioteca para o ENC28J60 é que ele é mais portável que o W5100. Enquanto o ENC28J60 tem problemas com a biblioteca, o W5100 tem dificuldades de funcionar em algumas versões de Arduino, principalmente se for uma versão stand-alone, tipo Nano, Mini, Lilypad, etc.
Já o ENC28J60 tem até versão em Módulo, além do Shield:
Shield Ethernet ENC28J60 v1.1
Módulo Ethernet ENC28J60 v1.1
quarta-feira, 13 de fevereiro de 2013
Grade de Aulas Curso Arduino Automation
Semestre 1 – 2013
- Aula 1 – Ethernet Shield
- Dilema do Ethernet Shield e a dificuldade de aprendizado
- Diferenças entre os modelos de Ethernet Shield (W5100, ENC28J60, Shield e Módulo)
- Discussão sobre as bibliotecas existentes e a dificuldade de utilização delas
- Apresentação da biblioteca EthernetSup.h
- Especialmente desenvolvida para simplificar o uso do Ethernet Shield com Arduino
- Conexão com o Arduino, através do conector ICSP
- Opções de conexão do Ethernet Shield com a rede local
- Configurações de roteadores e disponibilidade da automação através da Internet
- Aula 2 – Acionamento de Cargas por Relês
- Apresentação do Módulo de Relês de 4 Canais
- Esquemas de ligação de cargas
- Lâmpada
- Ventilador
- Acionamento de cargas
- Abertura de Fechadura Elétrica
- Detalhes da instalação da Fechadura
- Aula 3 – Controle de Cargas por TRIAC's
- Controle de velocidade do ventilador
- Apresentação do Módulo Dimmer
- Programação do Ethernet Shield para contemplar controle Dimmer
- Aula 4 – Plataforma Supervisório
- Apresentação do Arduino Supervisório
- Modos de operação e gravação do programa no Arduino
- Kit de acessórios do Supervisório
- Shield Supervisório
- Módulo Conversor Supervisório (converte pinos em bornes)
- Módulo Distribuidor de Alimentação Supervisório
- Módulo Conversor de Alimentação Supervisório
- Módulo LCD Supervisório
- Módulo Nobreak Supervisório
- Detalhes da instalação e fixação em painéis e caixas
- Aula 5 – Integração com Infra-Vermelho
- Acionamento de Ar-condicionado via Infra-Vermelho
- Mapeamento das teclas do controle remoto do Ar-condicionado
- Instalação do Emissor Infra-Vermelho com Plataforma Supervisório
- Programação do Ethernet Shield para contemplar integração Infra-Vermelho
- Aula 6 – Integração Wireless
- Utilização de módulos Wireless 433Mhz
- Integrando com motores EMTECO de persiana
- Mapeamento e clonagem de controles Wireless com função pulseIn() do Arduino
- Acionamento de portões de garagem utilizando o HT12 com módulo Wireless
- Shield Ethernet Wifi
Semestre 2 – 2013
- Aula 7 – Android (ADK)
- Integrando Arduino com Android via Kit de Desenvolvimento do Android (ADK)
- Utilização do USB Host Shield
- Programando aplicativo Android com Java para integração com Arduino
- Aula 8 – Controle de Consumo & Queda de Energia
- Sensor de corrente
- Controle do consumo da energia elétrica
- Chaveamento de energia elétrica por baterias para sistema continuar funcionando mesmo em caso de queda de energia
- Aula 9 – Módulo GSM
- Utilização de sensor de movimento PIR
- Envio de SMS's com eventos de sensores de movimento
- Aula 10 – Motores
- Acionamento de motores de vidro-elétrico para abertura de janelas
- Apresentação do Módulo de Ponte H de 5 amperes
- Motores de precisão (Motor de passo) para posicionamento de aletas de persiana
- Apresentação da placa Chopper
- Aula 11 – Sensores de Luminosidade e Temperatura
- Sensor LM35 para determinar temperatura ambiente e regular o Ar-condicionado automaticamente
- Ligação de LDR (sensor de luminosidade) para determinar a abertura de persiana
- Aula 12 – Comando de Voz
- Módulo EasyVr para reconhecimento de voz
- Abertura da fechadura através de comandos de voz
- Acionamento de cargas através de comandos de voz
Material Necessário
- Aula 1 – Ethernet Shield
- Essencial
- Ethernet Shield W5100
- Arduino UNO
- Roteador
- Cabo de Internet
- Computador
- Opcional
- Nano Roteador TL-WR702N
- Ethernet Shield ENC28J60
- Aula 2 – Acionamento de Cargas por Relês
- Essencial
- Material da Aula 1
- Módulo de Relê de 4 Canais
- Fechadura Elétrica 12V
- Lâmpada
- Ventilador
- Opcional
- Fio de cobre para ligação elétrica
- Terminais de tomada
- Conectores Sindal
- Soquete para lâmpada
- Capacitor de Poliester de 3300uF (se ventilador for de teto)
- Aula 3 – Controle de Cargas por TRIAC's
- Essencial
- Material da Aula 1
- Módulo Dimmer
- Aula 4 – Plataforma Supervisório
- Essencial
- Material da Aula 1
- Arduino Supervisório
- Opcional
- Módulo USB/Serial FTDi
- Acessórios da plataforma Supervisório
- Painel ou caixa para fixação
- Suportes plásticos para fixação
- Aula 5 – Integração com Infra-Vermelho
- Essencial
- Material da Aula 1
- Aparelho controlado por Infra-Vermelho (Ar-condicionado, TV etc)
- Kit Infra-Vermelho (Emissor/Receptor)
- Opcional
- Material da Aula 4
- Aula 6 – Integração Wireless
- Essencial
- Material Aula 1
- Kit Wireless 433Mhz
- Motor EMTECO para persianas
- Opcional
- Kit Motor para Portão Eletrônico Deslizante PPA ¼ HP
- Fechadura Elétrica Wireless 433Mhz
- Shield WiFi 802.11b
- Aula 7 – Android (ADK)
- Essencial
- Arduino UNO
- USB Host Shield
- Celular/Tablet Android
- Cabo USB
- Computador PC
- Opcional
- Arduino MEGA ADK
- Aula 8 – Controle de Consumo & Queda de Energia
- Essenciais
- Material da Aula 1
- Módulo Sensor de Corrente
- Módulo Nobreak Supervisório
- Aula 9 – Módulo GSM
- Essencial
- Material da Aula 1
- Sensor de Movimento PIR
- Módulo GSM/GPRS SIM900
- Aula 10 – Motores
- Essencial
- Material da Aula 1
- Motor Mabuschi 8 Dentes (Máquina de vidro-elétrico)
- Módulo Ponte H 5A
- Motor de Passo NEMA 23
- Módulo Driver Chopper 5A
- Opcionais
- Correias e Polias Sincronizadoras
- Aula 11 – Sensores de Luminosidade e Temperatura
- Essenciais
- Material da Aula 1
- Sensor LM35
- Sensor LDR
- Opcionais
- Sensor de Temperatura e Umidade DHT11
- Aula 12 – Comando de Voz
- Essencial
- Material da Aula 1
- Módulo EasyVr
- Opcional
- Auto-falantes
Previsão de lançamento: Março 2013
Grade de Aulas do Curso Arduino Pró
- Aula 1 – Bootloader
- Entendendo como funciona o bootloader
- Diferenças entre as versões das boards do Arduino
- Conhecendo melhor o microcontrolador (ATMega), o cérebro do Arduino
- Vamos aprender o que faz o Arduino ser um Arduino
- Aula 2 – Arrays e Ponteiros
- Entendendo como funcionam ponteiros de memória
- Conhecendo as diferenças entre arrays e ponteiros
- Limitações e usos dos arrays e de ponteiros
- Aula 3 – Classes
- Aprendendo a criar classes e consumir objetos
- Utilizando Programação Voltada ao Objeto (OOP) no Arduino
- Passando parâmetros e ponteiros para funções dentro de classes
- Aula 4 – Memórias
- Entendendo as diferentes memórias que fazem parte do microcontrolador
- Conhecendo a biblioteca FreeMem.h – ajuda a controlar o uso da memória RAM
- PROGMEM – Variáveis armazenadas na memória de programação ao invés da RAM
- Aula 5 – Operadores Binários
- Conhecendo os operadores binários Bitwise
- Diferenças entre os operadores Boolean e Bitwise
- Aplicando transformações com operadores Bitshift
- Conversão de tipos, desmembrando e reagrupando bytes
- Aula 6 – AVRDude
- Conhecendo a ferramenta de upload de código para o Arduino
- Aprendendo como os programas são compilados e publicados no ATMega328
- Diferenças entre upload através de bootloader e via programador
- Aula 7 – Fuse Bits
- Aprendendo como configurar os Fuse bits e para que servem
- Bloqueando o código no ATMega328 para evitar cópia por outras pessoas
- Configurando o ATMega328 para funcionar sem cristal externo
- Aula 8 – Acesso Direto a Portas
- Acessando diretamente as portas do Arduino sem utilização de funções
- Configurando as portas diretamente pelos registradores internos
- Conhecendo os registradores de configuração DDR
- Escrevendo nas portas através dos registradores PORT
- Lendo das portas através dos registradores PIN
- Aula 9 – Timers & Contadores
- Explorando os timers internos do microcontrolador do Arduino
- Detectando estouro de contagem através de interrupções dos contadores
- Fazendo cálculos de tempos independentes da execução principal do código
- Aprendendo mais sobre interrupções e seus vetores
- Aula 10 – DAC
- Conversão analógica digital com Arduino
- Entendendo o pino ARef e o valor de referência para conversão
- Utilizando buffers de saída PWM
Previsão de lançamento: Segunda quinzena de Fevereiro de 2013
Assinar:
Comentários (Atom)
