Montando o ambiente de desenvolvimento para o Intel Galileo Gen2

Olá a todos,

nesse post mostraremos como montar o ambiente de desenvolvimento para utilizarmos a nossa placa Intel Galileo Gen2. Esse post foi baseado nas instruções do site da Intel.

Para iniciar o usa da placa você precisará também dos seguintes itens:

  • Cabo USB para micro USB;
  • IDE de desenvolvimento para o Arduino

Quando ligamos a placa devemos sempre realizar as etapas na seguinte seqüência:

  1. Conecte a fonte de alimentação na tomada;
  2. Conecte a fonte de alimentação na Intel Galileo Gen2;
  3. Conecte o cabo USB no computador e na placa.

Essa sequência é importante pois a porta USB não possuí potência suficiente para alimentar a placa, podendo queimar a porta USB do computador ou da placa.

O próximo passo será instalar o IDE (software para escrever os programas Arduino), que pode ser baixado no site da Intel. Devemos do prestar atenção para baixarmos a versão correta para o sistema operacional (Windows, Linux ou Mac OS), se ele é 32bits ou 64bits pois esse detalhe fará diferença durante a instação dos drivers.

Após a instalação do IDE devemos configurar a placa e a porta em que ela está conectada para que seja possível a correta compilação e transferência do programa. Essa configuração é semelhante quando utilizados versões de Arduino e já foi mostrado em outro post.

Assim que a configuração da placa e da porta estiverem corretas podemos compilar e transferir os programas para a placa, conforme mencionado no post já mencionado.

A partir desse ponto podemos escrever programas na linguagem utilizado pelos Arduinos e utilizá-los em nossa placa Intel Galileo Gen 2. Nos próximos post demonstraremos como preparar o ambiente para escrevermos nossos programas em C++ e Node .JS

Onde encontrar:

Obrigado a todos e até o próximo post!

A Placa Intel Galileo Gen2

Olá a todos,

nesse post falaremos sobre a placa Intel Galileo Gen2 que é compatível com o padrão Arduino. Isso significa que podemos utilizar a linguagem de programação padrão disponível no site arduino.cc para escrevermos nossos programas, que são chamados de sketch, e transferi-los para a placa como já demonstrado nos post anteriores.

Conteúdo da caixa da Intel Galileo
Conteúdo da caixa da Intel Galileo

Porém também é possível desenvolvermos nossos programas em outras linguagens como C++, Node.JS e Phyton, além de combinar diversos programas mesmo em linguagens diferentes para compor nossos projetos e executá-los ao mesmo tempo. Esse assunto será coberto e um post futuro.

Outro item do padrão Arduino é a pinagem da placa que deve seguir a especificação em relação aos pinos disponíveis e a distribuição física dos mesmos. Essa padronização permite que possamos utilizar as placas complementares para Arduino conhecidas como Shields que se encaixam nos pinos da Galileo Gen2. Dessa forma podemos estender as funcionalidades da nossa placa adicionando Shields drivers, relés, sensores, etc.

Vamos entender agora quais são os pinos e conexões disponíveis do Galileo Gen2:

Placa Intel Galileo Gen2
Placa Intel Galileo Gen2

Podemos ver na placa uma caixa retangular metálica que possui um conector de rede. Esse conector é uma ethernet que pode ser utilizada para conectarmos nossa placa na rede local. Ao lado desse conector temos uma porta micro USB e uma porta USB. A porta micro USB será utilizada para transferir os programas para a placa enquanto a porta USB padrão pode ser utilizada para conectar diversos dispositivos, como uma webcam, que podem ser controlados por nossos programas.

Na sequencia temos os pinos digitais padrão Arduino, que são nomeados de 0 a 13. Note que os pinos 0 e 1 estão marcados com RX e TX, pois podemos utilizar esses pinos para realizar comunicação serial entre a placa e outros dispositivos ou mesmo entre placas padrão  Arduino. Outra marca presente em alguns dos pinos é um til (“~”). Essa marca no pino indica que ele suporta o uso de PWM. Veremos mais adiante o que significa PWM e como trabalhar com ele.

Na lateral esquerda temos o conector de energia onde conectaremos a fonte externa, mas podemos conectar também uma bateria 12V. Abaixo desse conector temos a entrada para cartões micro SD que utilizamos para persistir nossos programas na placa e também para utilizar recursos mais avançados como desenvolvimento em C++ ou Node.JS ou uso do WiFi e bibliotecas avançadas, como reconhecimento de imagens.

Na parte inferior da figura temos os pinos analógicos, nomeados de A0 a A5. Esses pinos são utilizados para medirmos valores analógicos de sensores ou outras partes do circuito para utilizamos nos nossos programas. Também temos nessa linha de pinos os pinos de alimentação. Os principais pinos nessa linha são os marcados com GND também conhecidos como terra e os pinos 5V e 3,3V que podem ser utilizados para alimentar nossos circuitos com essas tensões.

Verso da placa Intel Galileo G
Verso da placa Intel Galileo Ge2

No verso da placa temos um conector mini PCI que pode ser utilizado para adicionarmos módulos desse padrão na nossa placa, como placa de comunicação WiFi e Bluetooth.

Nos proximos post demonstraremos como utilizar a placa Intel Galileo Gen2, como gravar a imagem do sistema operacional no cartão SD, programar a placa nas diversas linguagens, utilizar a conexão de rede por cabo e wifi além de controlar uma webcam.

Onde encontrar:

Obrigado a todos e até o próximo post!

 

 

Utilizando display de LCD com o Arduino

Olá a todos,

Até o momento utilizamos a porta serial do Arduino em conjunto com o monitor serial do IDE para recebermos mensagens dos nossos programas como a temperatura ou a intensidade de luz do ambiente. Nesse post aprenderemos como utilizar um display de cristal liquido para dispensar o uso do cabo USB e do computador.

Nesse exemplo utilizaremos um display LCD de 2 linhas e 16 posições por linhas, mas existem outros modelos disponíveis no mercado. Para esses outros modelos é importante você consultar o datasheet, que normalmente está disponível na internet, para verificar as conexões necessárias.

Para montarmos o circuito coloque o display na protoboard e também um potenciômetro. O potenciômetro será utilizado para controlarmos o brilho do LCD. Em seguida ligue o terminal da esquerda do potenciômetro no terra (GND) do Arduino e no terminal 1 do display (o terminal mais próximo da borda do LCD). Conecte também no terra os terminais 5 e 16 do LCD.

Agora conecte o pino de 5V do Arduino no terminal da direita do potenciômetro e também nos pinos 2, 11 e 15 do LCD. Conecte o terminal 3 do LCD no terminal central do potenciômetro.

O próximo passo é conectar o terminal 4 do LCD no pino 12 do Arduino e o terminal 6 do LCD no pino 11 do Arduino. Conecte também os terminais 11, 12, 13 e 14 do LCD nos pinos 5, 4, 3 e 2 do Arduino respectivamente. Revise todas as conexões utilizando a imagem e os diagramas do circuito que estão abaixo:

Circuito utilizado no post
Circuito utilizado no post

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama elétrico do circuito utilizado
Diagrama elétrico do circuito utilizado
Modelo do circuito
Modelo do circuito

Passaremos agora para o desenvolvimento do programa que receberá textos pela porta serial e exibirá esses textos no LCD.

O primeiro passo é incluir no nosso programa o arquivo com as funcionalidades do LCD através do comando #include < LiquidCrystal.h >. Esse comando importa todas as funcionalidades existentes do arquivo informado para o nosso programa.

Importado o arquivo o próximo passo será a declaração de um objeto do tipo LiquidCrystal para operarmos o LCD e de uma variável inteira para controlar em qual linha do LCD escreveremos a mensagem. Note que no construtor do objeto do tipo LiquidCrystal devem ser informados os pinos do Arduino que estão conectados ao LCD.

O objeto do tipo LiquidCrystal possui métodos que facilitam o uso do LCD dispensando a necessidade de controlar diretamente os pinos do Arduino.

Em seguida escreva na função setup a configuração do LCD com uso do método begin. Nesse método devem ser informadas a quantidade de colunas e quantidade linhas do display. Escreva também na função setup a configuração da porta serial.

Início do código
Início do código

Passaremos para o desenvolvimento da função loop. O primeiro passo é verificarmos a quantidade de caracteres disponíveis na porta serial com o método available. Note que no programa foi limitada a quantidade de caracteres em 16 para evitar estouros na linha do LCD.

Em seguida declare uma variável do tipo String. Esse tipo de variável representa uma cadeia de caracteres, ou seja, um texto. O próximo passo é ler os caracteres disponíveis na porta serial com o método read e adicionarmos esses caracteres na variável String. Como o método read do objeto Serial lê apenas um caractere por vez colocamos esse trecho de código em uma laço do tipo FOR para lermos todos os caracteres.

Com o texto na memória do programa vamos primeiro escrever no LCD uma linha em branco para limpar a mensagem anterior para em seguida escrever a nossa mensagem. Ambas as instruções são executadas com o método print. Note que sempre na sequência da chamada do método print utilizamos o método setCursor para ajustarmos o cursos na posição no início da linha.

O método setCursor recebe dois parâmetros: o primeiro é o índice da coluna onde desejamos escrever o próximo caractere e o segundo parâmetro é o índice da linha do display onde o texto será escrito.

O último passo é alterarmos a variável que controla linha do display para na próxima execução da função loop o programa escrever na outra linha. Caso deseje limpar a próxima linha basta pressionar o botão Send do monitor serial para enviar um texto em branco.

Código da função loop
Código da função loop

Compile e transfira o programa para o Arduino. Após o programa iniciado acesse o monitor serial, digite algum texto e pressione o botão Send. O texto deverá aparecer no LCD, mas caso nada apareça mexa na haste do potenciômetro para alterar o brilho do texto.

Projeto em funcionamento
Projeto em funcionamento

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Medindo a temperatura com o Arduino

Olá a todos,

nesse post veremos como podemos usar sensores de temperatura para medir a temperatura do ambiente ou do local ou objeto que o sensor esteja. Utilizaremos o sensor de temperatura LM35 que é um termistor, ou seja, um resistor que possuí resistência variável com a temperatura. Um ponto interessante desse componente é que a sua resistência varia de modo linear com a variação da temperatura em graus Celsius (°C).

Passaremos para a montagem do circuito: Coloque o LM35 na protoboard e em seguida conecte seu terminal da esquerda (deixe a parte plana para frente) ao pino 5V e o terminal da direita ao pino terra do Arduino. Para encerrar a montagem do circuito conecte o pino central do LM35 a um pino analógico.

Circuito utilizado no post
Circuito utilizado no post

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama elétrico do circuito
Diagrama elétrico do circuito
Modelo do circuito utilizado no post
Modelo do circuito utilizado no post

Com o circuito montado desenvolveremos o programa. Primeiro precisamos declarar uma constante que indicará em qual pino analógico do Arduino o LM35 está conectado. Em seguida faremos a configuração da porta serial na função setup e utilizaremos a função analogReference para alterar o valor de referencia dos pinos analógicos de 5V para 1,1V. Essa alteração do valor de referência permite maior sensibilidade na porta analógica de modo que poderemos medir temperatura de 0°C à 110°C. Porém poderemos danificar o Arduino se tivemos níveis de tensão superiores a 1,1V em algum dos pinos analógicos quando utilizamos essa função.

Início do código
Início do código

O próximo passo é escrevermos a função loop para ler o valor do LM35 e escrever esse valor na portal serial. Primeiro faça a leitura da porta analógica onde está conectado o LM35. Esse valor deverá ser convertido para graus Celsius pela constante 0,1075268817204301. Em seguida envie o valor convertido pela porta serial com o método println e faça o Arduino aguardar 500 milisegundos com a função delay.

Código da função loop
Código da função loop

Compile o código e transfira o programa para o Arduino. Acesse o monitor serial e veja a temperatura ser enviada para o computador. Faça variar a temperatura do LM35, como colocando seus dedos nele, para ver a temperatura variar.

Testando o projeto do post
Testando o projeto do post

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Executando diferentes códigos no Arduino em cada execução da função loop

Olá a todos,

nesse post mostraremos como executar diferentes códigos na função loop a partir de um controle e também como separar partes do nosso código em funções. Esse exemplo acenderá um led diferente a cada execução da função loop com tempo de duração também diferente.

Como sempre o primeiro passo é montarmos nosso circuito. Monte três circuitos como mostrado no post Utilizando pinos digitais do Arduino para enviar sinais, ligando cada circuito em um pino digital do Arduino. Note na figura abaixo que ligamos todos os terras dos circuitos em uma linha de furos da protoboard e essa linha em um pino terra do Arduino. Essa técnica facilita a montagem do circuito e evita que precisemos de mais de um ou dois pinos de terra (GND) na nossa placa.

Circuito do projeto montado.
Circuito do projeto montado.

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Esquema elétrico do circuito utilizado
Esquema elétrico do circuito utilizado
Modelo do circuito utilizado no post
Modelo do circuito utilizado no post

Passaremos agora para o desenvolvimento do programa. Primeiro declare três constantes para indicar em quais pinos os led estão ligados. Em seguida configure todos os pinos como OUTPUT e deixe-os com estado LOW.

Configuração inicial dos pinos do Arduino
Configuração inicial dos pinos do Arduino

O próximo passo é escrevermos as funções que controlarão os leds, onde cada uma controlará um led diferente. Uma função é declarada indicando o tipo de valor que ela retorna seguida de seu nome e uma lista de parâmetros que ela recebe. Nossas funções retornarão para a função loop o tempo que desejamos que o programa aguarde até a próxima execução e não receberá parâmetros. A imagem abaixo mostra a declaração das funções:

Declaração das funções
Declaração das funções

Escreva o código de cada função:

  • Primeiro o led verde deve ficar acesso por 1,5 segundo;
  • Na sequência esse led deve ser desligado e acionado o led amarelo por 0,5 segundo;
  • Finalmente o led amarelo deve ser desligado e o led vermelho ligado por 1 segundo.

O código das funções está exibido abaixo:

Código das funções
Código das funções

Agora precisamos declarar uma variável com escopo global para controlar o estado do nosso programa e para a função loop saber qual função deverá ser chamada. Podemos utilizar uma variável do tipo inteiro como mostrado abaixo:

Declaração de variável global
Declaração de variável global

Agora deveremos escrever o código da função loop. Essa função deverá verificar qual o valor da variável global para decidir qual função será chamada. A função correta então deverá ser executada e em seguida aguardar o tempo informado. Encerramos o código alterando o valor da variável global para a função loop chamar a próxima função na execução seguinte.

Note que nesse código utilizamos uma combinação dos operadores IF e ELSE para testar diversas condições em sequência. Todo código da função loop está mostrado abaixo:

Função loop
Função loop

Com o circuito montado e o código desenvolvido compile o programa e transfira-o para o Arduino e veja a execução do programa.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Alguns componentes elétricos básicos

Olá a todos,

nesse post será descrito alguns componentes elétricos básicos para montarmos os circuitos dos nossos projetos. Alguns desses componentes serão utilizados somente durante a prototipagem enquanto outros farão parte permanente das nossas soluções.

Protoboard

Protoboard e as conexões entre os furos
Protoboard e as conexões entre os furos

O primeiro componente, normalmente utilizado somente durante a prototipagem, é a protoboard.

A protoboard é uma placa de prototipagem que possui diversos furos para encaixarmos os componentes eletrônicos e conectá-los com o uso dos cabos de ligação. Os furos em linha são interligados para conectarmos diversos componentes sem o uso de cabos simplificando a montagem dos circuitos. Essas interligações estão mostradas na figura acima pelas linhas vermelhas.

Cabos jumper

Cabo jumper do tipo macho-macho
Cabo jumper do tipo macho-macho

 

Utilizamos os cabos de ligação do tipo jumper para montarmos nossos circuitos com o auxilio da protoboard. Esses cabos permitem montarmos os circuitos conectando os pinos dos componentes e das placas ao protoboard. Existem três tipos de cabos cumpres, com diferentes comprimentos:

  • macho-macho: cabo que possuí pinos de conexão nas duas pontas;
  • macho-femea: cabo que possuí pino de conexão em uma das pontas e um orifício para conexão da outra ponta;
  • femea-femea: cabo que possuí orifício de conexão nas duas pontas.

Led

Leds
Leds

Led é um componente elétrico que emite luz quando circula corrente por ele. Note que um dos terminais (também chamados perninhas) é maior que o outro, indicando o lado correto que o componente deve ser ligado. Utilizamos leds nos circuitos para sinalizarmos que o circuito está energizado ou que algo está acontecendo.

Resistores

Resistors
Resistors

Resistor é um componente que apresenta resistência para a passagem de corrente elétrica limitando essa corrente no circuito. Utilizamos os resistores para evitarmos curto-circuito que podem danificar nossa placa e outros componentes ou para controlar a corrente elétrica. Existem resistores com diversos valores de resistência.

Você pode conferir o valor de um resistor a partir das faixas coloridas que estão no corpo do componente. A tabela abaixo fornece os valores de cada faixa:

Cor Valor
Preto 0
Marrom 1
Vermelho 2
Laranja 3
Amarelo 4
Verde 5
Azul 6
Violeta 7
Cinza 8
Branco 9

O valor do resistor pode ser calculado pela segunda fórmula:

[(10 x F1) + F2] x 10F3

Onde:

  • F1 = valor da primeira faixa;
  • F2 = valor da segunda faixa;
  • F3 = valor da terceira faixa.

A quarta faixa é a margem de erro do resistor, onde a faixa dourada significa +/-5% e a faixa prateada +/-10%.

Potenciômetro

 

Potenciômetro
Potenciômetro

Um potenciômetro é um resistor que podemos variar o valor de sua resistência. Esse componente possui três terminais, porém apenas o terminal central possui resistência variável. A resistência é variada ao giramos a haste que movimenta um cursor ligado ao terminal central sobre um resistor que está conectado aos outros dois pinos.

Buzzer

Buzzer
Buzzer

Buzzer é um componente que emite som quando é atravessado por uma corrente elétrica. Assim como os leds esse componente tem um terminal positivo e outro negativo, ou seja, devemos tomar cuidado para não invertermos os pinos. Podemos utilizar buzzer para emitir indicadores sonoros como alarmes.

Micro botões (microswitch)

Micro Botão
Micro Botão

Um micro botão é um botão que ao pressionarmos um circuito interno é fechado e outro é aberto. Utilizamos esse componente para disparar um evento que pode iniciar ou interromper uma ação em nossos projetos.

Ao utilizar um micro botão deve-se conferir se estamos utilizando os terminais corretos, pois existem terminais que são fechados com o botão não pressionado mas que serão abertos quando pressionarmos o botão e outros terminais que possuem o comportamento contrário.

Sensor de luminosidade LDR

Sensor de luminosidade do tipo LDR
Sensor de luminosidade do tipo LDR

O sensor de luminosidade também é conhecido como fotoresistor. Ele apresenta resistência variável de acordo com a luminosidade que incide sobre ele, ou seja, quanto mais claro menor será a resistência do componente, consumindo menos tensão. Portanto esse componente pode ser utilizado para disparamos ações baseados na intensidade de luz do ambiente ou que está direcionado para ele.

Sensor de temperatura

Sensor de temperatura LM35
Sensor de temperatura LM35

Sensores de temperatura são utilizados para disparar algum evento em nossos projetos. Esse tipo de componentes apresenta resistência variável de acordo com a temperatura que está exposto.

Podemos utilizar shields prontos, tanto para Arduino como para Raspberry PI ou componentes elétricos, como o sensor LM35. O sensor de temperatura LM35 normalmente é mais barato que shields e possuí a vantagem que ele varia a resistência do terminal central de forma proporcional à temperatura em graus Celsius (°C).

Finalizamos aqui o conteúdo desse post. Deixem comentários caso tenham dúvidas ou quiserem que seja adicionado outros componentes no post.

Um abraço e até o próximo post.

Iniciando o uso de Arduinos

Olá a todos,

nesse post veremos como montar nosso ambiente de desenvolvimento para utilizarmos a placas controladoras que seguem o padrão Arduino. Esse padrão especifica quantos pinos a placa deve possuir, quais suas funções e o desenho físico, para que seja possível o uso de shields, que são placas com funcionalidades adicionais que poderemos utilizar em nossos projetos.

O primeiro passo é adquirir uma placa que obedeça esse padrão, existem diversos modelos, mas nesse post utilizaremos a placa do modelo R3 Uno. No final do post você encontra alguns links para adquirir uma placa.

Placa Arduino R3 Uno
Placa Arduino R3 Uno

Como pode ser notado na imagem cima existem duas linhas de pinos, uma localizada acima do símbolo do Arduino, que possuí os pinos digitais nomeados de 0 a 13, e outra linha abaixo do microcontrolador (grande chip da placa) que possui pinos de alimentação e os pinos de leitura analógicas que recebem os nomes de A0 à A5.

Note que alguns dos pinos digitais possui um símbolo ~ (ou / dependendo da placa). Esse símbolo significa que o pino oferece a capacidade de PWM. Essa capacidade permite enviar pulsos aos componentes dos nossos circuitos para controlar a intensidade de alguma resposta, como a intensidade da luz de um led ou a velocidade de um motor.

Note também que os pinos 0 e 1 são marcados com as letras RX e TX respectivamente.

Todas as funcionalidades desses pinos serão exploradas em post futuros, pois o foco desse post é somente a montagem do ambiente. Temos que fazer esse corte pois um post completo seria muito longo e exaustivo.

O segundo passo é baixar o IDE (software) de desenvolvimento. Nesse IDE é que escreveremos nossos programas, compilaremos e faremos a transferencia para a nossa placa. O download deve ser feito na sessão downloads do site https://www.arduino.cc/. Esse site é muito útil tanto para obtermos o IDE com para aprendermos sobre a linguagem de programação, pois possuí toda a documentação e é rico em exemplos.

A instalação é bem simples, tanto para Windows como para Mac OS ou Linux, basta seguir as instruções do instalador do seu ambiente. Porém podem ocorrer algum problemas de drivers no Windows e no Mac OS. Os problemas que enfrentei no Windows foram resolvidos baixando os drivers corretos da placa.

Já na última versão do Mac OS não consegui resolver pois pelo que li em outros blogs foi introduzida uma nova proteção no sistema operacional que preferi não desligar. Nesse caso montei uma máquina virtual com a versão 14.04 da distribuição Ubuntu do Linux.

Após a instalação do IDE e dos drivers, quando necessário, podemos conectar nossa placa na porta USB do nosso computador. Para a maioria das placas compatíveis com o padrão Arduino a energia da porta USB é suficiente para alimentar a placa.

Arduino conectado ao computador
Arduino conectado ao computador

Após o computador reconhecer sua placa inicie o IDE. O primeiro passo no IDE é seleciona o modelo da sua placa através do menu Tools -> Board e em seguida selecionando o nome da sua placa. Caso sua placa não apareça na lista será necessário instalar os drivers dela através do item Board Manager.

O segundo passo é selecionar a porta de comunicação que o sistema operacional designou para a placa (COMx no caso de Windows ou /dev/ttyUSBx para Linux ou Mac OS). Essa seleção é realizada no menu Tools -> Port e em seguida a porta.

Nesse ponto teremos nosso ambiente montado. Para testarmos podemos fazer o upload de um programa de exemplo. Para abrir o programa abra o menu File -> Examples -> Basics -> Blink. Será aberto um código-fonte que faz piscar um led embutido na nossa placa. A descrição desse código será assunto de um outro post.

Para compilar e transferir o programa para a placa clique no botão que possuí o desenho de uma seta para a direita. Você pode acompanhar a evolução da compilação e transferência do programa pelo espaço com fundo negro localizado na parte inferior do IDE.

Após o término da transferência o programa é iniciado e o led da placa deverá começar a piscar a cada 1 segundo.

Esse foi o conteúdo para esse post, enviem comentários caso tenham dúvidas, problemas ou sugestões. Um grande abraço a todos.

Links para adquirir sua placa padrão Arduino: