sábado, 28 de dezembro de 2013

Arduino e a Internet (ou seria Ethernet?)

Pessoal,

Está uma bagunça esse assunto de "ligar o Arduino na Internet", né?

Vamos começar com um glossário para ajudar:


  • Internet - Rede mundial de computadores
  • Ethernet - Rede local de computadores
  • Roteador - Gerenciador de rotas entre as redes locais e a internet
  • Arduino - Ah... bom... deixa prá lá. *
  • Cabo Cross (Over) - conhecido também por "par-trançado" - Cabo usado para ligar um computador n'outro sem o uso de um gerenciador de rotas (roteador)
  • Cabo de Rede (Normal) - também é trançado, mas não tem o "par-trançado" ou "par-invertido" (este último, sendo o termo mais correto). Usado para ligar o computador direto no roteador. Também liga do roteador no modem.
  • Modem - Dispositivo (normalmente fornecido pela operadora de sinal, NET, Telefônica etc.) que transforma o sinal (de uma forma que não importa) e traduz para o roteador. Por isso ligamos o modem em uma porta especial do roteador.
  • Operadora - Ou "Provedora", ou ainda "Fornecedora" de sinal "de Internet", conforme costumamos dizer, é a prestadora de serviços que nos cobra todo mês uma conta enorme por uma internet de má qualidade, e quando cai, ficamos horas no "atendimento" escutando musiquinhas e atendentes dizendo coisas do tipo: "Vou estar fazendo, senhor", "Vou estar verificando, senhor"...
  • Access Point - Um nome chique para um roteador com funções especiais de repetição de sinal.
(*) Precisa de um post só sobre esse item do glossário.

Agora a parte complicada

Bom, qualquer placa ou módulo Ethernet que adicionarmos ao Arduino vai fornecer exatamente isso, ou seja, conexão com a rede local de computadores. Normalmente aquela rede que tem IP's 192.168.0.1, sendo esse o IP do roteador. (As vezes é 192.168.1.1).

Atualmente temos os seguintes placas/módulos para Arduino


Wiznet Ethernet Shield W5100



Microchip ENC28J60

W5100 vs. ENC28J60


Atualmente existe um problema de ruptura no mercado. Os próprios vendedores e importadores não estão sabendo direito que pedir aos seus fornecedores. Os clientes estão confusos. Não sabem ao certo se devem partir para uma plataforma Wiznet W5100, mas se "original", ou se é compatível com Arduino MEGA... Ao mesmo tempo que confiança podemos ter em um módulo ENC28J60, que custa 30 ou 40 reais?

A resposta não é fácil. Um longo caminho precisa ser trilhado. Para quem está começando é fácil, basta ligar um Ethernet Shield W5100 em um Arduino UNO e ser feliz! 

Mas e quem amadureceu uma ideia e quer colocar em prática? Se o projeto final for um Ethernet Shield e um Arduino UNO, dentro de uma caixinha, tudo bem, não perca tempo lendo este tópico. 

Eu acho que não é por aí, um projeto profissional precisa de uma placa centralizadora (conhecido por centralina) e módulos de integração. 

O Ethernet Shield W5100 não abre espaço para integrações. Seu circuito externo é muito complicado! Fica difícil tirar o chip W5100 do Ethernet Shield e utilizar em nossos projetos.

Ele tem uma interface SPI de 4Mhz que é um parto de fazer funcionar em processadores que rodam a 16Mhz e 20Mhz, como é o caso do Arduino UNO e MEGA, respectivamente.

Por isso algumas pessoas tem problemas na instalação desse modelo de Ethernet Shield no Arduino MEGA. O clock precisa ser dividido por 5 e não por 4 como é no Arduino UNO. Não sei direito como isso pode acontecer, mas parece que acontece. Versão antiga de IDE? Incompatibilidade entre REV2 e REV3, sei lá! Pode ser um monte de coisas. Ainda estou investigando. Vou chegar no fundo dessa história! 

Bom, resumindo, descobri que projetos concorrentes ao Protuino Breakout (projeto antigo e engavetado, que foi copiado pelo concorrente). Segue foto do Protuino Breakout para vocês entenderem do que estou falando:

Protuino Breakout (2010)

Estes projetos clone do Protuino estão utilizando o W5200 e não mais o W5100! Fui atrás para descobrir porque!??

Descobri então que o W5200 precisa de menos componentes externos, por essa razão, pôde ser reduzido a um módulo pequeno:

Módulo W5200

Além disso o chip do W5200 é fisicamente menor que o chip do W5100, e a SPI vai até 80Mhz!

Bom, para fechar esse assunto, investigando mais a fundo descobri que existe também um W5300 da Wiznet:

Wiznet W5300

Mas fiquei com uma pulga atrás da orelha! Alguma coisa não está certa! O preço desses módulos da Wiznet! Cadê a filosofia do código aberto? Da plataforma aberta!? Eles estão fechando cada vez mais a caixa-preta e cobrando mais caro por produtos incompletos, é isso mesmo? Esses módulos custam de R$150,00 a R$200,00! Por esse preço eu posso comprar um Raspberry Pi e usar a interface de Ethernet dele! Um absurdo de caro!

Pelo menos a Microchip está sendo mais decente e está vendendo seus chips a um preço bem acessível e em formatos que são vantajosos para o desenvolvedor de plataformas open source, como a versão DIP:

ENC28J60 versão DIP
(ótimo para protótipos e montagens na protoboard!)

W5100 A Venda No Mercado


Não importa se for "original" ou "chinês"! Os chineses atualmente estão especialistas em copiar circuitos externos!

Todos eles estão defasados! Desatualizados! Os vendedores não estão bem informados dessas mudanças; e os clientes que precisam exigir o modelo novo, seja ele o W5200 ou W5300, seja ele qual for, pois pelo preço que custam, tem que ser o mais atualizado possível!

Mas e o ENC28J60, qual o problema dele? Bom, o problema é que não existe biblioteca oficial do Arduino para ele. Só bibliotecas suportadas pela comunidade.

Já o W5100 da Wiznet é uma caixa fechada, só com a biblioteca aberta, integrada na IDE do Arduino. Ou seja, quando você baixa o programa do Arduino, a biblioteca já vem junto e é instalada junto com o Arduino.

No ENC28J60, precisamos primeiro achar uma biblioteca, e decidir por ela, pois existem algumas. Eu mesmo já fiz umas 3 versões diferentes.

W5100 vs. ENC28J60 - Conclusão


Na minha opinião, nenhum dos dois está bom, pois o W5100 não funciona no Arduino Supervisório e nem no Protuino. Vamos esperar pelo W5200.

Quanto ao ENC28J60, ele também tem uma série de revisões e atualmente está na versão 6. As bibliotecas disponíveis que continuam sendo atualizadas são:

Minhas:
https://github.com/renatoaloi/Enc28CoreLib (atualizada recentemente)

Terceiros:

É isso pessoal, estamos na vanguarda, mas ainda na espera desse amanhecer que se desenha no horizonte! Muitas variáveis estão rodando no caldeirão!

Uma boa passagem de ano para todos e que 2014 seja o ano de integração e lembrem-se: estou aqui para incomodar! Não vou deixar barato em 2014!

Abraços,
Renato

quarta-feira, 18 de dezembro de 2013

Futuro da automação apareceu no horizonte?

Pessoal,

Muita gente me escreve, ansiosa para trabalhar no ramo de Automação Residencial (conhecido por Domótica). Recebo muitos emails e solicitações nas redes sociais de pessoas me perguntando sobre rumos e tecnologias para essa área.

Uma coisa posso dizer com certeza: estou tão perdido quanto vocês! Estamos vivendo um momento parecido com o da criação do computador pessoal, o famoso PC. Na época ninguém sabia o que fazer com aquela peça de mobília (na época, não se passava de um equipamento decorativo, uma máquina de escrever melhorada).

Mas hoje, tudo está diferente! Temos a necessidade, mas não temos a plataforma! Está tudo ao contrário. Trinta anos atrás a gente não sabia o que fazer com um computador. Hoje, a gente não sabe o que fazer sem um! Seja na forma de PC, de notebook, de celular, tablet, etc. Todos são computadores!

E o Arduino? É um computador? No termo mais simples da palavra, sim! O Arduino também é um computador, com características bem limitadas, mas ele se vira sozinho.

Mas quando falo em computador, estou falando em um equipamento onde possamos instalar um Apache, um PHP, um MySQL etc. Isso não dá pra ser feito no Arduino.

E o cenário que vem nascendo no horizonte, não está satisfeito apenas com o Arduino controlando tudo em uma casa, escritório, comércio, enfim... Falta poder de processamento!

É fato, o Arduino já ganhou seu lugar ao Sol! Sem ele, acionar relês, efetuar leitura de sensores é um pesadelo. Programar portas de uso geral em um Linux não é uma tarefa fácil nem mesmo para o programador avançado. Mas comunicar via Serial, isso sim é fácil no Linux e no Arduino. Aí nasce a luz no fim do túnel...

Só agora o hardware que parece ser o definitivo para essa plataforma que suporta Linux, está chegando. Ainda meio tímido, mas promete. Ele é o Raspberry PI, um projeto britânico, que trouxe o ARM para o mundo real. Assim como o Arduino fez com a linha megaAVR.

Já desenvolvi totens com o Friendly ARM e o Arduino, mas ele não conseguiu o alcance que o Raspberry PI está conseguindo. Nem mesmo Beaglebone, entre outras plataformas ARM.

Resumindo a ópera, a Era dos PC's está chegando ao fim. Chega de partes móveis! Um computador de verdade não pode ter nada girando! Os computadores baseados em ARM vão substituir os x86 para esses tipos de aplicações que não precisam de alto desempenho de hardware.

Afinal de contas não precisamos de um Quad Core, com 4GB de RAM e 500GB de HD, para rodar um servidor Apache PHP, que vai comandar o Arduino que, por sua vez, vai controlar a iluminação de nossa casa... Penso que um ARM9 400Mhz com 64MB de RAM e 2GB de SDCARD é suficiente.

Abraços,
Renato

sexta-feira, 13 de dezembro de 2013

Guia para o Arduino Leonardo

Para conectar o Arduino Leonardo no computador, você vai precisar de um cabo USB tipo Micro-B.
Este cabo fornecerá energia e conectividade para a placa. Ao programar o Leonardo, você deve escolher “Arduino Leonardo” no menu Tools > Boards a partir do Arduino IDE.

Diferenças do Arduino Uno

Em geral, você programa e usa o Leonardo como qualquer outra versão do Arduino. Existem, entretanto, algumas diferenças muito importantes.

Microcontrolador único para sketches e comunicação USB

O Leonardo difere de versões do Arduino na maneira em que usa o microcontrolador para ambas as tarefas: rodar os sketches e se comunicar com o computador, através de USB. O UNO e outras versões do Arduino usam microcontroladores separados para essas duas funções, ou seja, a conexão USB com o computador permanece aberta, independente do estado do microcontrolador principal. Combinando essas duas funcionalidades em um único microcontrolador, o Leonardo nos permite maior flexibilidade, na forma em que ele se comunica com o computador. Isto também ajuda a reduzir o custo da placa, removendo a necessidade de um microcontrolador adicional.

Re-enumeração da Serial no Reset

Considerando que o Leonardo não possui um chip dedicado para lidar com a comunicação serial, significa que a porta serial é virtual – uma rotina do programa. Assim como o computador cria uma instância da porta serial quando você conecta um Arduino qualquer na porta USB, o Leonardo cria uma instância de porta serial toda vez que roda seu bootloader. A placa, quando conectada na porta USB do computador, é instanciada como um Connected Device Class (CDC).

Isso significa que toda vez que você reinicia a placa, a conexão serial USB também é reiniciada. A placa vai desaparecer da lista de portas seriais, e a lista será re-enumerada. Qualquer programa que tentar abrir uma conexão serial com o Leonardo perderá sua conexão. Em contraste com o Arduino UNO, que você pode reiniciar o microcontrolador principal (o ATMega328P), sem terminar a conexão USB (que é mantida por um ATMega8U2 ou um ATMega16U2). Essa diferença tem implicações na instalação do driver, no upload, e na comunicação; que serão discutidos abaixo.

Não reinicia quando a abre a Serial

Ao contrário do Arduino UNO, o Leonardo não reinicia o sketch quando você abre uma porta serial no computador. Isso significa que você não verá os dados que já foram enviados pela serial para o computador, incluindo, por exemplo, a maioria dos dados enviados na função setup().

Esta mudança significa que, se você está usando qualquer instrução Serial print(), println() ou write() no seu setup(), elas não serão exibidas quando você abrir o monitor da serial. Para contornar isso, você pode verificar se a porta serial está aberta antes de chamar a função Serial.begin(), da seguinte forma:

Serial.begin(9600);
    // enquanto serial nao esta aberta, nao faca nada!
   
while (!Serial) ;

Emulação de Teclado e Mouse

Uma vantagem de usar um único chip para seus sketches, e para a USB, é de aumentar a flexibilidade na comunicação com o computador. Enquanto a placa aparece como uma porta virtual (também chamado CDC) serial, aos olhos do seu sistema operacional para programação e comunicação (com a feita pelo Arduino UNO), este também pode se comportar com um teclado ou mouse (HID). Veja a sessão de “Boas Práticas de Codificação” abaixo para dicas sobre como usar essa funcionalidade.

Separação da USB e da Comunicação Serial

No Leonardo, a classe principal Serial refere-se ao driver serial da conexão USB da sua placa. E não está conectada diretamente (fisicamente) aos pinos 0 e 1. Para usar o hardware da porta serial (pinos 0 e 1, RX e TX), utilize Serial1. (Veja Serial Reference Pages para maiores informações)

Diferenças entre Mapeamento de Pinos

O Leonardo possui algumas pequenas diferenças na sua capacidade de atribuição de vários pinos (especialmente para SPI e TWI). Estes são detalhados na Hardware Page.


Instalando os Drivers para o Leonardo

OSX

·         A primeira vez que você conecta um Leonardo em um Mac, o "Keyboard Setup Assistant" será lançado. Não existe nada para ser configurado com o Leonardo, então você pode fechar a caixa de diálogo clicando no botão vermelho, no canto superior esquerdo da janela.



Instruções para Windows

As instruções a seguir são para o Windows 7. Elas são válidas também para o Windows XP, considerando algumas pequenas diferenças entre as janelas de diálogo.

·         Conecte a sua placa e espere pelo Windows começar o processo de instalação dos drivers. Caso o instalador não inicie automaticamente, navegue até o “Windows Device Manager” (Start > Control Panel > Hardware) e encontre o Arduino Leonardo na listagem de dispositivos. Clique com o botão direito e escolha Update driver.



·         Na próxima tela, escolha "Browse my computer for driver software", e clique em Next.



·         Clique no botão Browse... . Outra caixa de diálogo aparece: navegue até a pasta do Arduino que você acabou de fazer o download. Selecione a pasta drivers e clique OK, então clique em Next.



·         Você receberá uma notificação de que a placa não passou no teste Windows Logo. Clique no botão Continue Anyway.



·         Depois de alguns momentos, uma janela irá te informar que o wizard terminou a instalação do Arduino Esplora. Pressione o botão Close.


Instruções para Linux

Não existe a necessidade de instalar drivers para Ubuntu 12.04.


Carregando Código no Leonardo

No geral, você carrega o código no Leonardo como faria em qualquer outra versão do Arduino. Clique no botão upload, no Arduino IDE, e seu sketch será automaticamente carregado na placa; e então iniciado. Isso funciona mais ou menos da mesma forma que no UNO: o software do Arduino comanda um reset na placa, lançando um bootloader – que é responsável por receber, armazenar, e iniciar o novo sketch.

Entretanto, em razão da porta serial ser virtual, ela desaparece quando a placa efetua um reset, então o software do Arduino usa uma estratégia diferente para coordenar o upload, tanto com o UNO, quanto com outras versões. Assim, após iniciar o auto-reset do Leonardo (usando a porta serial selecionada no menu Tools > Serial Port), o software do Arduino espera por uma nova porta virtual (CDC) serial / COM aparecer – a qual ele assume representar o bootloader. Então ele efetua o upload para esta nova porta COM que apareceu.

Essas diferenças afetam a forma que você utiliza o botão de reset para efetuar um upload, se o auto-reset não estiver funcionando. Pressione e segure o botão do Leonardo, então clique no botão de upload no software do Arduino. Apenas solte o botão de reset após você ver a mensagem “Uploading...” aparecer na barra de status do software. Quando você fizer isso, o bootloader iniciará, criando uma nova porta virtual (CDC) serial no computador. O software verá a porta aparecer e efetuará o upload através dela. Novamente, isso é apenas necessário se a forma normal de upload (i.e. apenas clicando no botão de upload) não funcionar. (note que o auto-reset é iniciado quando o computador abre a porta serial na velocidade de 1200 bauds; e então a fecha; isso não funciona se algo interfere com a comunicação USB da placa – por exemplo, desabilitando as interrupções).

Boas Práticas de Codificação com o Leonardo

Atenção ao utilizar bibliotecas de teclado e mouse USB: se as bibliotecas de Mouse ou Keyboard estão constantemente habilitadas, será difícil programar sua placa. Funções como Mouse.move() e Keyboard.print(), que movem o cursor do mouse ou enviam teclas digitadas para um computador conectado, devem apenas ser chamadas quando você estiver pronto para atendê-las. É recomendável usar um sistema de controle que possa ligar essa funcionalidade, assim como um interruptor, ou apenas respondendo a dispositivos que você possa controlar. Quando usando bibliotecas Mouse e Keyboard, é melhor testar antes o resultado, através de Serial.print(). Dessa forma, você pode garantir que os resultados são razoáveis. Mais informações de como lidar com isso, veja exemplos nas bibliotecas Mouse e Keyboard.

Usando o monitor de serial de forma efetiva: como a serial está compartilhando o microcontrolador com o processamento principal, a capacidade do seu computador de preencher o buffer da serial será tão rápido como em versões do UNO ou anteriores. Você vai reparar que se você continuar enviando dados pela serial repetidamente, por exemplo, assim:


void loop() {
    
int sensorReading = analogRead(A0);
    
Serial.println(sensorReading);
}


O monitor da serial vai ficar extremamente lento, enquanto ele tenta acompanhar a velocidade. Se você se deparar com essa situação, adicione um pequeno atraso ao seu loop de forma que o buffer da serial do computador não seja preenchido tão rápido até um atraso de um milissegundo ajudará:


void loop() {
    
int sensorReading = analogRead(A0);
    
Serial.println(sensorReading);
    
delay(1);
}


Aplicações seriais que utilizam as bibliotecas nativas, que não seja a biblioteca RXTX, lêem o buffer da serial mais rapidamente, assim você não deve encontrar este erro, fora do monitor da serial, processing, ou outra aplicação baseada na biblioteca RXTX.


Traduzido por Renato Aloi do original “Guide to the Arduino Leonardo and Micro” (link).

Adquira já o seu Arduino Leonardo na Loja do Curso Arduino!




domingo, 8 de dezembro de 2013

Arduino Esplora, Por Onde Começar?

O Arduino Esplora é um dispositivo que possui um pequeno computador de bordo, chamado microcontrolador, que por sua vez, possui uma série de portas de entrada e saída. Como entrada, temos dispositivos tipo joystick, quatro “buttons”, um sensor de luminosidade (LDR), um “slider”, um microfone, um sensor de temperatura, e um acelerômetro. Como saídas, temos um buzzer e um LED de três cores (RGB). A primeira vista, parece um controle de video-game.

Com o Esplora, você pode escrever programas que tiram proveito das informações que chegam às portas de entrada (input) e as usam para controlar as saídas (ouput), da placa. Ou ainda, controlar seu computador como um mouse ou um teclado.

O Esplora é diferente de todas as placas anteriores do Arduino. Isso quer dizer que ele tem entradas e saídas já conectadas na placa, sendo que você não precisa saber como ligar os sensores eletrônicos ou atuadores, para usá-los. Como resultado, a programação para ele é um pouco diferente do que outras versões do Arduino. Ele tem sua própria biblioteca, que facilita leitura de sensores e acionamento de atuadores. Você verá como utilizar a biblioteca do Esplora neste guia e também pode acessar as páginas de referência (link).

Este guia o ajudará durante o processo de conexão do Esplora no seu computador, e do carregamento de um programa do Arduino, que é chamado de sketch.

·      1 | Adquirindo um  Arduino Esplora e cabo USB

·      2 | Faça Download do Arduino IDE

·      3 | Conecte a placa

·      4 | Instalando os drivers

      • Instruções para Mac OS X
      • Instruções para Windows
      • Instruções para Linux

·      5 | Programando a placa

      • Abrindo o exemplo Esplora blink
      • Configure o Arduino para Esplora
      • Selecione a porta USB
      • Carregando o programa

·      6 | Mudando o RGB LED

·      7 | Entradas atuando sobre Saídas

·      8 | Próximos passos

1 | Adquirindo um  Arduino Esplora e cabo USB

Este tutorial é para o Arduino Esplora. Se você possui outra placa leia o guia certo para a sua versão (link).

Você também vai precisar de um cabo Micro-USB (tipo "A" para "Micro-B"). Alguns telefones celulares ou MP3 usam este tipo de cabo para transferir dados de/para o computador, talvez você já tenha um cabo desses. Este conector é diferente do USB Mini, pois ele é mais fino. Você pode ver as diferenças clicando neste link (o conector que você vai precisar é o da esquerda na foto).

2 | Faça Download do Arduino IDE

Faça o download da versão mais atual do IDE do Arduino através da página de download. Você vai precisar da versão 1.0.3 ou posterior.

Quando o download acabar, descompacte o arquivo baixado em qualquer diretório. Não altere a estrutura de pastas do arquivo compactado, apenas clique duas vezes na pasta para abri-la. Devem existir alguns arquivos e sub-pastas dentro. Se você estiver no Mac, a pasta zip conterá apenas a aplicação.

3 | Conecte a placa

Conecte a placa do Arduino no seu computador, usando o cabo USB. O LED indicativo de energia, verde (escrito ON), deve ligar e o LED amarelo, marcado “L”, deve começar a brilhar. Depois de 8 segundos este LED amarelo começará a piscar.

4 | Instalando os drivers

Instruções para Mac OS X

·      A primeira vez que você conecta um Esplora em um Mac, o "Keyboard Setup Assistant" será lançado. Não existe nada para ser configurado com o Esplora, então você pode fechar a caixa de diálogo clicando no botão vermelho, no canto superior esquerdo da janela.

http://arduino.cc/en/uploads/Guide/OSXKeyboardNotification.png

Instruções para Windows

As instruções a seguir são para o Windows 7. Elas são válidas também para o Windows XP, considerando algumas pequenas diferenças entre as janelas de diálogo.

·      Conecte a sua placa e espere pelo Windows começar o processo de instalação dos drivers. Caso o instalador não inicie automaticamente, navegue até o Windows Device Manager (Start>Control Panel>Hardware) e encontre o Arduino Esplora na listagem de dispositivos. Clique com o botão direito e escolha Update driver.

http://arduino.cc/en/uploads/Guide/EsploraWindowsDrivers0.png

·      Na próxima tela, escolha "Browse my computer for driver software", e clique em Next.

http://arduino.cc/en/uploads/Guide/EsploraWindowsDrivers1.png

·      Clique no botão Browse... . Outra caixa de diálogo aparece: navegue até a pasta do Arduino que você acabou de fazer o download. Selecione a pasta drivers e clique OK, então clique em Next.

http://arduino.cc/en/uploads/Guide/EsploraWindowsDrivers2.png

·      Você receberá uma notificação de que a placa não passou no teste Windows Logo. Clique no botão Continue Anyway.

http://arduino.cc/en/uploads/Guide/EsploraWindowsDrivers3.png

·      Depois de alguns momentos, uma janela irá te informar que o wizard terminou a instalação do Arduino Esplora. Pressione o botão Close.

Instruções para Linux

Não existe a necessidade de instalar drivers para Ubuntu 12.04.

5 | Programando a placa

Duplo clique no ícone do Arduino. (Nota: se o Arduino carregar na linguagem errada, você pode mudar isso no menu File > Preferences).

Abrindo o exemplo Esplora blink

Abra o exemplo LED Blink sketch: File > Examples > Esplora > Beginners > EsploraBlink.

Nota: Se Você não ver o exemplo Esplora Blink, você precisará atualizar a biblioteca Esplora. Para fazer isso, saia do Arduino IDE e faça o download deste arquivo zip. Quando você descompactá-lo, você terá uma pasta chamada Esplora. Procure na sua pasta Documents (no OSX ou Ubuntu) ou My Documents (no Windows), pela pasta de sketchs do Arduino. Ela é chamada “Arduino” e deverá ser uma pasta dentro de outra chamada “Libraries”. Caso contrário, crie a pasta Libraries dento da sua pasta de sketch. Mova a pasta Esplora para dentro da pasta Libraries. Então inicie novamente o Arduino IDE. Agora você deve ser capaz de abrir o exemplo EsploraBlink, conforme descrito acima.

Configure o Arduino para Esplora

Precisamos configurar ao Arduino IDE para trabalhar com o Esplora. Abra o menu Tools > Board e escolha o menu Arduino Esplora.

Selecione a porta USB

O Arduino IDE precisa saber qual porta USB o Esplora foi conectado. O menu Tools > Serial lista as portas disponíveis:

·      se apenas um item é apresentado, clique nele;

·      se dois ou mais itens são apresentados, você pode desconectar o Esplora e reabrir o menu; o item que desaparecer do menu deve ser a porta USB do Esplora. Reconecte a placa e selecione aquela porta serial.

Carregando o programa

Agora, simplesmente clique no botão "Upload". Espere alguns segundos - você deve ver os LEDS RX e TX piscando. Se o upload der certo a mensagem do "Done uploading." aparecerá na barra de status da IDE.

Poucos segundos depois do upload terminar, você deverá ver o LED RGB amarelo da placa começar a piscar, mudando a cor de vermelho para verde passando por azul, amarelo, ciano, magenta, até branco. Se ele o assim fizer, parabéns! O seu Esplora está funcionando.

6 | Mudando o RGB LED

Agora que você verificou que o Esplora está conectado ao computador e o processo de upload funciona, é tempo de experimentar algumas de suas funcionalidades. O Esplora possui sensores de entrada, dos quais você pode obter informações deles utilizando o comando de leitura (read). E você também pode acionar atuadores, que são controlados usando comando de escrita (write). O LED RGB e o buzzer são dois dos principais atuadores. O joystick, potenciômetro linear (slider), microfone, acelerômetro, sensor de temperatura e pushbuttons são os sensores de entrada. Você pode também adicionar os seus próprios dispositivos de entrada/saída, usando os conectores TinkerKit.

Neste exemplo, veremos como piscar o LED RGB cada uma de suas cores separadamente, então veremos como acender as três cores ao mesmo tempo. A biblioteca Esplora, incluída no início do sketch, possui um número de métodos que facilitará o código a ser escrito.

O sketch abaixo é similar ao exemplo EsploraBlink, mas controla o LED de uma maneira um pouco diferente. Você pode também usar o comando Esplora.writeRGB() e configurá-lo vermelho, verde, e azul da seguinte forma:

Esplora.writeRGB(255, 255, 255);  // configura vermelho, verde, e azul com total intensidade

Ou então você pode acender as cores individualmente através dos comandos Esplora.writeRed(), Esplora.writeGreen(), e Esplora.writeBlue(), como veremos abaixo.

Copie o código abaixo e cole-o no Arduino IDE. Tenha certeza que você configurou corretamente a porta serial, e a placa Esplora, conforme vimos anteriormente. Conecte sua placa então carregue o código. Uma vez que o código estiver carregado, você deve ver o LED RGB piscando.

// include the Esplora library
#include <Esplora.h>

void setup() {
 
 // nada no setup 
}

void loop() {

 
 // escreve nivel de luminosidade para o LED vermelho
 
 // 0 siginifica que o LED está desligado, 255 para brilho total
  Esplora.
writeRed(255);

 
 // adiciona um atraso para manter o LED aceso por um tempo
 
 // 1000 milissegundos (1 segundo)
 
 delay(1000);

 
 // desliga o LED vermelho e liga o verde
  Esplora.
writeRed(0);
  Esplora.
writeGreen(255);

 
 // atraso de 1 seg.
 
 delay(1000);

 
 // desliga o LED verde e liga o azul
  Esplora.
writeGreen(0);
  Esplora.
writeBlue(255);

 
 // atraso de 1 seg.  
 
 delay(1000);

 
 // liga todos os LEDs
  Esplora.
writeRGB(255, 255, 255);

 
 // atraso de 1 seg. 
 
 delay(1000);

 
 // desliga todos os LEDs
  Esplora.
writeRGB(0, 0, 0);

 
 // atraso de 1 seg. 
 
 delay(1000);
}

7 | Entradas atuando sobre Saídas

O Esplora tem alguns sensores na sua superfície. Neste exemplo veremos como usar o potenciômetro (o slider na parte debaixo da placa) para mudar o brilho do LED RGB.

As entradas do Esplora geraram valores entre 0 e 1023, exceto os pushbuttons, que geraram valores 0 ou 1. Saídas não possuem a mesma faixa de valores. A saída do LED varia entre 0 e 255. Para obter valores de entrada escalares aos valores de saída você divide o valor de entrada por 4. Este novo número gerado será o resultado do nível de brilho do LED.

Copie o código abaixo e faça o upload como fizemos no exemplo anterior. Uma vez feito o upload, movimente o slider para um lado e para o outro. Você verá a luz vermelha do LED RGB mudar o seu brilho.

// include the Esplora library
#include <Esplora.h>

void setup() {
// nada no setup
}

void loop() {
 
 // leitura do sensor em uma variavel
 
 int slider = Esplora.readSlider()/4;

 
 // converte a leitura do sensor em niveis de luminosidade do LED
 
 byte bright  slider/4;

 
 // escreve o nivel de brilho no LED vermelho
  Esplora.
writeRed(bright);

 
 // adicionando atraso para o LED não ficar tremeluzindo:
 
 delay(10);
}

8 | Próximos passos

Existem alguns exemplos no menu File -> Examples -> Esplora que demonstram o que mais pode ser feito com o seu Esplora. Eles são divididos entre exemplos para programadores iniciantes e avançados. Se você está apenas começando, ou deseja conhecer as funcionalidades básicas, comece com os exemplos Beginners. Se Você é um programador experiente então os exemplos Advanced lhe ajudarão com algumas ideias.

Se você nunca programou na vida, existem alguns exemplos incluídos na IDE para lhe apresentar alguns conceitos de programação básica. Note que esses exemplos precisarão ser modificados um pouco para funcionarem com o Esplora. Você precisará incluir a biblioteca Esplora escolhendo o menu Tools> Import library... , e você precisará mudar o mapeamento de portas do Arduino para o Esplora. Para saber mais veja o Guide to using Esplora with the Arduino Examples

 

Você deve pesquisar as páginas de referência da biblioteca Esplora (link), para conhecer os diversos tipos de sensores e atuadores da biblioteca Esplora. Você pode ver mais exemplos na página de exemplos (link).

Se você tiver problemas, acesse o link troubleshooting suggestions.

Traduzido por Renato Aloi do original “Getting started with Arduino Esplora” (link).