30 outubro 2014

Qual a diferença entre o Raspberry Pi modelo B e B+ ?

Antes de falar sobre a instalação do sistema operacional Raspbian no Raspberry, gostaria de analisar as diferenças entre o Raspberry Pi modelo B e o B+, que são os modelos mais comuns atualmente.

Esse é o Raspberry Pi modelo B, lançado em 2012 :

Raspberry Pi B

E esse o Raspberry Pi modelo B+ , lançado em 2014 :

Raspberry Pi B+
 
Olhando as imagens já notamos as diferenças no layout das placas. No Raspberry modelo B, temos o conector GPIO de 26 pinos no lado superior esquerdo, ao lado da saída de vídeo composto e da saída de áudio. Essa placa também tem 2 portas USB no lado direito, junto com o conector ethernet (rede). Na parte inferior da placa, temos o conector HDMI e no lado esquerdo o conector micro-usb para alimentação do Raspberry. Na parte posterior da placa, temos o slot para cartão SD :

Raspberry B - Conectores
Já no Raspberry modelo B+, o conector GPIO continua na parte superior mas tem agora 40 pinos. No lado direito, o número de portas USB subiu para 4, o que permite que você use o  teclado, o mouse e algum outro periférico ligado ao Raspberry sem ter que recorrer à um hub USB. A porta ethernet também mudou, mas não muito. Ela agora tem as luzes indicadoras, que no modelo B ficavam na própria placa. A velocidade da porta ethernet não foi alterada e continua em 100 Mb.

Raspberry B+ Conectores

Na parte inferior da placa, os antigos conectores de vídeo composto e áudio viraram um só (conector de 4 pólos - imagem abaixo), e estão ao lado da porta HDMI e do conector micro-usb. O slot na parte posterior da placa agora é para um cartão microSD, muito mais prático do que na versão anterior.

Raspberry B+ Conector Audio e Video


Existe diferença de performance entre as duas placas ?


Não. Até para manter o baixo custo, não se mexeu na arquitetura da placa. O processador das duas placas é o mesmo, o BCM2835,  assim como a GPU (processador de vídeo) e a memória de 512 Mb. Isso tudo garante uma importante compatibilidade entre as placas modelos A, B e B+.

Não existe diferença de performance e também não existe diferença na operação e instalação dos programas.  Você pode utilizar os mesmos programas e os mesmos procedimentos de instalação do sistema operacional no Raspberry Pi modelo B ou B+.

Uma outra questão importante é sobre a alimentação das placas. Enquanto o modelo B precisa de uma fonte de 5v e 1A para funcionar, o modelo B+ precisa de uma fonte de 5v e 2A pelo menos, principalmente se houver a necessidade de utilizar as 4 portas USB ao mesmo tempo.

Vantagens do Raspberry modelo B+ e comparação com Arduino


A principal vantagem do modelo B+ é sem dúvida uma GPIO com mais portas. As 4 portas USB também fazem diferença, mas no restante, continua tudo praticamente igual. As principais mudanças estão no layout da placa.

Mesmo assim, o modelo B continua tendo grande aceitação, já que muitos projetos exploram a capacidade de processamento da placa e o baixo custo, utilizando-a como um servidor web ou uma central multimídia. Na imagem abaixo, temos 4 placas modelo B funcionando em Cluster como um servidor Web :

Raspberry B - Cluster Web
Imagem : http://raspberrywebserver.com


O Raspberry Pi veio para acabar com o Arduino ? No meu ponto de vista não, pois são placas com propostas bem diferentes.

Arduino + Raspberry

O Arduino é uma plataforma de prototipação com um microcontrolador Atmel , várias portas de entrada e saída, além de um esquema de programação muito simplificado, no qual você consegue começar a programar a placa em poucos minutos. O que você precisa para começar a criar algo no Arduino é um computador com a IDE (ambiente de programação) e um cabo USB.

Já o Raspberry se propõe a ser um computador completo, de baixo custo. Você precisa apenas conectar à ele um monitor, um teclado e um mouse (recomendável). Começar a criar algo no Raspberry é um pouco mais demorado, já que você precisa baixar a imagem do sistema operacional, copiar essa imagem para o cartão SD, instalar o Raspbian, configurar o sistema operacional (que é baseado em Linux), e aí sim começar a usar a GPIO para os seus projetos. Dá um certo trabalho, mas o resultado final compensa. 

Raspberry e Arduino podem inclusive funcionar em conjunto. Veremos isso mais adiante.

No próximo artigo sobre o Raspberry vou tratar da instalação do Raspbian no Raspberry Pi B+ e também do uso do Python para utilizar a GPIO. Até lá !

Atualizado :  Tutorial sobre instalação do Raspbian no artigo Raspberry Pi : Instale o Raspbian e crie seu primeiro programa em Python

28 outubro 2014

Visita à Mostra Nacional de Robótica - São Carlos - SP

Semana passada estive em São Carlos (SP), e tive a oportunidade de visitar a  Mostra Nacional de Robótica, que foi realizada em conjunto com a Competição Brasileira de Robótica (CBR), e as finais da Olimpíada Brasileira de Robótica (OBR) na USP de São Carlos.


Mostra Nacional de Robótica - Competições

Além de muita conversa sobre Arduino, PIC, Raspberry, Lego Mindstorms e outras tecnologias para construção de robôs, fui ver o que o pessoal dos colégios participantes estava (literalmente) inventando na parte de Robótica.

Equipe Colégio Maria Montessori
Arthur Falabretti, Prof. Alfredo Ferreira, Rodrigo Teixeira
O pessoal do Colégio Maria Montessori (Maceió - AL), criou um Tricóptero feito com Arduino e material de sucata. A idéia inicial era utilizar motores de HD (disco rigido) para movimentar as hélices, mas para a mostra acabaram optando por motores brushless, controlados por um Arduino Uno e um acelerômetro MMA7361. Terminada a mostra, voltarão ao laboratório para continuar testando o uso dos motores de HD no projeto.



Equipe Colégio João XXIII
Fabrício Toledo, João Pedro e a Prof. Simone Gonçalves.
Os alunos do Colégio João XXIII (Volta Redonda -RJ) criaram um pequeno robô que desenha formas geométricas à partir de comandos no Arduino. Fabrício Toledo e João Pedro utilizaram um Arduino Uno, um kit de chassi 2 rodas e um shield para controle dos motores. Adaptaram no chassi um "braço" que segura uma caneta para quadro branco  e escreve conforme o robô se movimenta. Os meninos prometeram desenvolver ainda mais o robô, adicionando novos recursos.




Equipe EEEFM Clovis Borges Miguel
ROB, Gabriel Nascimento e Gabriel Tótola
Por último, um projeto pra lá de especial, já que envolve ajudar o próximo. Mais especificamente, crianças com câncer. O Gabriel Nascimento e o Gabriel Tótola , da EEEFM Clóvis Borges Miguel (Serra - ES) criaram o ROB, um robô que tem a intenção de auxiliar no tratamento por meio da interação com as crianças, seja conversando, contando histórias, incentivando ou propondo desafios e vibrando a cada conquista. Segundo os alunos, "...o robô seria mais do que um robô, mais que um brinquedo, ele desempenharia o papel de um terapeuta, porém sem a barreira da idade e da formalidade muitas vezes presentes nas relações médico-paciente". O projeto a princípio usa um RoboSapien com kit MP3 e microfone, mas em breve receberá um kit com Arduino e funções de comando de voz.

Esses foram apenas alguns exemplos. Tem muita coisa boa sendo inventada por aí e cabe a nós incentivar cada projeto, do mais simples ao mais elaborado. Valeu !

24 outubro 2014

Tutorial comunicação Arduino usando Xbee 802.15.4 Serie 1

Quem já montou uma rede wireless utilizando módulos Xbee sabe que o processo às vezes não é muito simples. Existem dezenas de parâmetros para serem configurados, além das particularidades de cada tipo de módulo, já que os da Serie 1 e Serie 2 não conversam entre si.

Nesse post eu vou mostrar como configurar dois Módulos Xbee Serie 1 1mW, ligar um deles no computador e outro ao Arduino, e enviar um texto para que seja mostrado em um display LCD 16x2. No final do post, há um vídeo mostrando o circuito em funcionamento.

Modulo Xbee Serie 1 802.15.4

Com esse módulo é muito simples montar uma rede ponto-a-ponto  ou mesmo uma rede com vários módulos se comunicando ao mesmo tempo. A comunicação é feita na frequência de 2.4 Ghz e o alcance do módulo pode chegar a 100 metros em campo aberto. Um modo "sleep" permite uma grande economia de energia quando o módulo não está sendo utilizado, e é ideal para configurações que usem algum tipo de bateria para alimentação do circuito.

Material Utilizado

Nesse tutorial vamos utilizar :
  • 2 módulos Xbee Serie 1 1mW
  • Xbee Explorer USB : Esta placa é ligada ao computador via cabo mini USB e serve tanto para programar os módulos Xbee S1 como também para testar a comunicação entre eles
  • Xbee Shield - Shield que será conectado ao Arduino e receberá os comandos enviados pelo Xbee conectado ao computador
  • Display LCD 16x2 - Ligado ao Arduino, mostra os caracteres recebidos pelo módulo Xbee
  • Fonte de alimentação para o Arduino

Instalação do Xbee Explorer USB

Xbee Explorer USB é a placa conectada ao computador via cabo mini USB, que vamos utilizar para configurar os módulos Xbee. Simplesmente encaixamos o módulo na placa, e ligamos o cabo no computador :
 
Xbee USB Explorer Adapter

No Windows 7 (64 bits) o adaptador foi reconhecido automaticamente, e foram adicionados dois dispositivos. O USB Serial Converter, e o USB Serial Port, que no nosso caso, foi alocado na porta serial COM20:

Xbee Explorer USB - Drivers


Instalação do XCTU

XCTU é o software da Digi utilizado para fazer a programação dos módulos Xbee conectados ao computador. Além da programação, é possível atualizar o firmware dos módulos, enviar comandos de um módulo Xbee para o outro e até mesmo recuperar módulos com problema. Faça o download do XCTU acessando esse link, e depois acessando Diagnostics, Utilities anda MIBS :

XCTU - Download


Na tela seguinte, clique em XCTU Next Gen Installer, Windows x32/x64, se você estiver utilizando Windows.

XCTU - Download Windows
Após o download, execute o instalador. Na tela inicial, clique em NEXT :

XCTU Instalacao - Tela Inicial

Na tela seguinte, leia TODO o contrato de licença e caso concorde com o contrato, clique em I AGREE :

XCTU Instalacao - Licença

Na tela seguinte, há uma advertência de que o usuário deve ter direitos de administrador no Windows 7 e Windows Vista, para evitar problemas na hora de copiar os arquivos. Clique em NEXT :

XCTU Instalacao - Path

Escolha uma pasta para instalação do programa e clique em NEXT :

XCTU Instalacao - Pasta destino

Na tela de confirmação de instalação, revise os itens que serão instalados e também a pasta de instalação do programa, e clique em Install para iniciar a cópia de arquivos :

XCTU Instalacao - Revisao

Aguarde o final do processo e o XCTU estará instalado no seu computador :

XCTU Instalacao

Configurando o módulo Xbee Serie 1 utilizando XCTU

Com o módulo Xbee encaixado no Xbee Explorer USB, entre no XCTU e clique em Discover Devices, conforme destacado na imagem. Esse comando vai fazer com que o XCTU efetue uma varredura no computador procurando por módulos Xbee :

XCTU - Tela inicial


Na próxima tela, selecionamos a porta serial que foi detectada na instalação do Xbee Explorer USB. No caso, a COM20 :

XCTU - Selecionando porta serial

Na próxima tela, mantenha os valores padrão para a serial e clique em Finish para iniciar a varredura :

XCTU - Parametros da porta serial

 Aguarde o módulo Xbee aparecer na lista de dispositivos detectados e clique em Add Selected Devices :

XCTU - Modulo Xbee identificado

Após o dispositivo ser adicionado ao XCTU, ele irá aparecer no lado esquerdo da tela do programa. Clique sobre o dispositivo para que os parâmetros de configuração sejam lidos e apareçam no lado direito da tela :

XCTU - Modulo Xbee Parâmetros


No lado direito você encontra as informações de firmware do módulo Xbee e na seção Networking & Security os parâmetros que vamos utilizar para configurar a rede Xbee.

Parâmetros de configuração Xbee

Rolando a tela, podemos ver que existem muitas possibilidades de configuração dos módulos Xbee. Mas em uma configuração básica, para comunicação ponto-a-ponto, vamos modificar apenas quatro deles :

ID PAN ID - É o número de identificação da rede Xbee ao qual o módulo irá se conectar. PAN significa Personal Area Network. Para juntar dois ou mais módulos Xbee à mesma rede, basta que estejam com o mesmo PAN ID.
MY 16-bit Source Address - É um número único que identifica o módulo Xbee na rede.
DH Destination Address High - Determina a parte "alta" (32 bits), do endereço de 64 bits que podemos atribuir aos módulos Xbee. Como estamos utilizando apenas dois módulos, vamos setar esse valor para 0 e utilizar apenas a parte baixa do endereço, especificada no próximo comando.
DL Destination Address Low - Aqui vamos colocar o endereço do módulo de destino. Como setamos 0 para o parâmetro DH, vamos utilizar o endereço de 16 bits especificado em MY 16-bit Source Address.

Essa questão dos endereços parece um pouco complicada, mas na prática fica mais fácil de entender. Vamos configurar o primeiro módulo com os parâmetros abaixo :

Parâmetros do primeiro módulo Xbee
Figura 1 : Parâmetros do primeiro módulo Xbee

E o segundo módulo vamos configurar assim :

Parâmetros do segundo módulo Xbee
Figura 2 : Parâmetros do segundo módulo Xbee

Dessa maneira, estamos determinando que os dois módulos pertencem à mesma rede (PAN ID 1234), que o primeiro módulo tem endereço 1 e vai se comunicar com o módulo que tem endereço  2 e o segundo módulo tem endereço 2 e vai se comunicar com o módulo que tem endereço 1. Compliquei ? :-)

Para gravar esses parâmetros nos módulos, primeiro coloque o Xbee que vai ser o número 1 no Xbee Explorer USB, faça a varredura conforme eu expliquei anteriormente e em seguida configure os valores conforme a Figura 1 acima. Não se esqueça de clicar no botão Write Radio Settings (abaixo), para que os valores que você alterou sejam gravados no módulo:

Xbee Write Radio Settings

Faça a mesma coisa com o segundo módulo, utilizando os parâmetros mostrados na Figura 2.

Programando o Arduino e conectando o Xbee

Agora que já temos os módulos configurados, vamos carregar o seguinte programa no Arduino, ANTES de colocarmos o Xbee Shield. Assim evitamos conflitos de serial, já que tanto a IDE como o Xbee utilizam a serial para se comunicar com o Arduino :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Programa : Envio de texto utilizando Xbee S1
// Autor : Arduino e Cia

// Carrega a biblioteca LiquidCrystal
#include <LiquidCrystal.h>   
   
// Define os pinos que serão utilizados para ligação ao display  
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);

int incomingByte = 0;
char buf[20];     //Tamanho da mensagem - 20 caracteres
int num = 0;
String dados;

void setup()
{
  // Inicializacao do display e mensagem inicial
  lcd.begin(16, 2); 
  lcd.print("Aguardando...");
  // Inicializacao da serial e mensagem inicial
  Serial.begin(9600);
  Serial.println("Aguardando envio de texto...");
  Serial.println();
}

void loop()
{
  while(Serial.available() > 0)
  {
    // Armazena os caracteres no buffer
    buf[num] = Serial.read();
    // Verifica se foi recebido o caracter de nova linha
    if (buf[num] == '\n') 
    {
      lcd.clear();
      String dados = buf;
      dados.trim();
      int tamanho_string = dados.length();
      
      // Imprime o texto recebido na serial
      Serial.print("Dados recebidos : ");
      Serial.println(dados);
      
      // Mostra no display o texto recebido
      lcd.print(dados);

      // Apaga o buffer para receber novo texto
      for (int ca =0; ca<20; ca++)
      {
        buf[ca]=0;
      }
      num=0;
      break;
    }
    num++;
  }
}

Agora encaixe o segundo módulo Xbee no Xbee Shield, encaixe o shield no Arduino,  e ligue o display LCD 16x2 ao conjunto conforme a imagem abaixo. Vamos utilizar as portas analógicas de A0 a A5 para controle do display, e um potenciômetro de 10 K (podem ser usados outros valores) para ajuste do contraste :

Circuito Arduino Xbee Shield LCD


Utilize uma fonte externa (7 à 12 volts) para alimentação do Arduino.

Testando a comunicação Xbee

Mantenha o primeiro módulo Xbee conectado ao computador usando o Xbee Explorer USB. O que vamos fazer agora é usar o próprio serial monitor da IDE do Arduino para enviar textos ao segundo módulo Xbee. Na IDE do Arduino, selecione Ferramentas -> Porta Serial e escolha a porta relacionada ao Xbee Explorer (relembrando que no nosso caso é a porta COM20).

Certifique-se que o caracter de NOVA LINHA esteja selecionado conforme destacado na imagem abaixo, pois o programa aguarda esse caracter ( \n ) para determinar o tamanho da string e também para saber quando ela acabou de ser enviada.

Comunicação Xbee

Digite o texto na parte superior do serial monitor, conforme mostrado acima, e pressione ENVIAR ou aperte a tecla ENTER para que o texto seja enviado do computador para o Arduino e reproduzido no display LCD. Todo esse processo você pode conferir nesse vídeo :



16 outubro 2014

O que é o Raspberry Pi e onde comprar a placa no Brasil

Creio que muita gente vai estranhar o assunto deste post aqui no Arduino e Cia, já que, desde o começo, o foco do site foi falar em Arduino, mostrando ligação de motores, sensores, peças, componentes,  módulos, comunicação com o Android, etc.

Pretendo seguir a mesma linha e apresentar, à partir de hoje, alguns artigos falando sobre o Raspberry Pi, sempre com a idéia de mostrar projetos simples, que envolvam poucos componentes e que seja um ponto de partida para projetos maiores.

Raspberry Pi B+

No post de hoje eu vou falar um pouco sobre o que é o Raspberry Pi, mostrar algumas características básicas e onde adquirir o seu Raspberry no Brasil.

O que é o Raspberry Pi

Pegue a sua carteira e retire um cartão de crédito ou um cartão comum de qualquer Banco. O Raspberry Pi tem o tamanho desse cartão. Pequeno não ?

Ainda mais se considerarmos que essa placa é um computador (quase) completo, com processador ARM, 512 Mb de memória, 4 portas USB e porta Ethernet, originalmente desenvolvido para incentivar o aprendizado de computação em escolas e centros de ensino, sendo uma alternativa de baixo custo.

Quando eu digo que ele é um computador quase completo é porque, na maioria das vezes, vamos precisar de alguns acessórios para que ele seja configurado e comece a funcionar de forma satisfatória.

Na foto abaixo, temos um Raspberry Pi B+ , a versão mais recente do Raspberry, com 4 portas USB e saídas de áudio, vídeo e rede. É por meio das portas USB que vamos controlar a placa, ligando um teclado e um mouse. Nessas portas também podemos ligar outros periféricos, como um HD externo.


Um teclado e um mouse ? É só isso que eu preciso para usar o Raspberry ? Não. Você vai precisar também de um monitor, que pode ser ligado nas saídas de vídeo HDMI ou Vídeo composto, destacadas acima.

A alimentação do Raspberry utiliza uma fonte externa, de 5v e pelo menos 2A, com conector micro-USB. Evite ligar o Raspberry na porta USB do seu computador, pois essa porta fornece no máximo 500 mA, bem abaixo da amperagem exigida pela placa.

Podemos ver também na imagem acima uma série de pinos chamada de GPIO (General Purpose Input Output ou ainda, em português, Entrada e Saída de Uso Geral). É por meio da GPIO que podemos usar displays, sensores, motores e outros componentes, da mesma forma que utilizamos as portas analógicas e digitais do Arduino.

Na parte de trás da placa, um slot microSD é usado para armazenar arquivos do usuário e principalmente o sistema operacional do Raspberry, baseado em Linux.

Isso é um resumo do que é o Raspberry. Veja que a proposta dele é um pouco diferente do Arduino, onde com apenas um cabo USB, o computador e a IDE, você já consegue, pelo menos, fazer o led embutido (porta 13) piscar. Já o Raspberry se propõe a ser um computador completo, com o adicional de possuir portas GPIO, e exige um pouco mais de trabalho para começar a funcionar.

Instalação do Sistema Operacional Raspbian

O Raspberry funciona com o sistema operacional instalado no cartão microSD. No site oficial do Raspberry, você pode baixar o sistema operacional de sua preferência, mas o indicado, principalmente para os iniciantes, é o Raspbian (abaixo), baseado no Debian Linux.

Imagem : http://linux.activityworkshop.net


O Raspbian já vem com o básico para utilizarmos o Raspberry, como um browser e o IDLE, que é a IDE para programação em Python, linguagem que utilizaremos pra manipular a GPIO.

Além do básico, você tem à disposição uma série de pacotes de software para instalar no Raspbian, como Web Servers, ferramentas de backup, ferramentas para administração de rede, banco de dados, desenvolvimento, jogos e pacotes educativos.

A instalação do sistema operacional pode ser feita de forma manual, baixando a imagem diretamente no site oficial do Raspberry Pi, onde você encontra também um pacote chamado NOOBS, que é uma imagem com vários sistemas operacionais disponíveis e uma interface  para instalação de forma automática. Para os iniciantes, é a forma mais simples e prática de instalar o sistema operacional no cartão microSD.

Atualizado :  Tutorial sobre instalação do Raspbian no artigo Raspberry Pi : Instale o Raspbian e crie seu primeiro programa em Python

Onde comprar o seu Raspberry Pi no Brasil

A procura pelo Raspberry no Brasil está aumentando de forma considerável, por isso podemos encontrar no mercado vários fornecedores, sendo que a distribuidora oficial para o Brasil é a Farnell Newark.

O meu eu adquiri na FILIPEFLOP, parceira aqui do site e que também comercializa as placas oficiais, além de acessórios como fonte, case, câmera, display e outros componentes para Raspberry.

Próximos passos

No próximo post sobre o Raspberry Pi vou falar um pouco mais sobre as características do Raspberry, e também comparar o Raspberry Pi B com o Raspberry Pi B+.  Até lá !



14 outubro 2014

Módulo display 7 segmentos 8 dígitos com MAX7219

Uma sugestão de módulo para quem precisa utilizar display 7 segmentos sem ter que ligar um monte de fios, é esse módulo display 7 segmentos de 8 dígitos, com CI MAX7219.

display 7 segmentos 8 digitos max7219

Como você pode ver pela imagem, podemos imprimir alguns caracteres nesse display além, é claro, de mostrar os números. Uma outra maneira de acionar o display, que veremos adiante, é utilizar uma sequência de bits para acionar os segmentos correspondentes no display e criarmos nossos próprios símbolos.

Aqui no Arduino e Cia já usamos o MAX7219 para controlar tanto módulos matriz de leds 8x8 como displays 7 segmentos :


O funcionamento do módulo de 8 dígitos é muito semelhante ao que vimos nesses posts, pois ele também usa apenas três pinos (lado esquerdo) para conexão ao Arduino ou outro microcontrolador

No lado direito, encontramos os pinos que permitem a ligação de vários módulos em cascata :

Módulo display 7 segmentos - pinagem



O circuito para ligação ao Arduino fica então dessa maneira, com os pinos 5, 6 e 7 conectados respectivamente aos pinos LOAD, CLK e DIN :

Circuito Arduino Uno - Display 7 segmentos Max7219



Programa utilizando a biblioteca LedControl

A biblioteca LedControl, que pode ser baixada nesse link é quem vai controlar o acionamento do display. Comandos principais do LedControl utilizados no programa :

LedControl lc=LedControl(7, 6, 5 , 1) = Define os pinos que serão ligados ao módulo. Pino 7 do Arduino ao DIN, pino 6 ao CLK e pino 5 ao LOAD. O último valor se refere à quantidade de módulos que estão conectados ao Arduino.

lc.shutdown(0, false) = Esse comando, além de servir para inicializar o display, também serve para apagar o display sem perder os dados em memória. Esse comando é especialmente útil quando o módulo estiver sendo alimentado por baterias, já que podemos mostrar os dados no display apenas quando for acionado um botão, por exemplo. Nesse caso, basta alterar o último parâmetro para TRUE quando não quisermos que o display permaneça ligado.

lc.setIntensity(modulo, valor) = Regula o brilho do display. O primeiro parâmetro é o número do módulo, e valor pode ser um número entre 0 (mínimo) à 15 (brilho máximo).

lc.setChar(modulo, digito, caracter, false) = Imprime um caracter no display. Apesar de não termos muitos caracteres disponíveis devido à limitação do display de 7 segmentos, podemos utilizar os caracteres A, B, C, D, E, F, H, L e P.

lc.setDigit(modulo, digito, valor, ponto_decimal) = Utilizamos para enviar diretamente um número ou o valor de uma variável para determinado digito no display. O parâmetro ponto_decimal pode receber os valores TRUE (exibe o ponto decimal), ou FALSE (desativa o ponto decimal).

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// Programa : Display 7 segmentos - 8 digitos MAX7219
// Autor : Arduino e Cia

// Carrega a biblioteca LedControl
#include "LedControl.h"

// Definicoes dos pinos e quantidade de modulos no circuito
LedControl lc=LedControl(7,6,5,1);

void setup() 
{
  // Inicializa o modulo
  lc.shutdown(0,false);
  // Ajuste do brilho do display
  lc.setIntensity(0,3);
  // Apaga o display
  lc.clearDisplay(0);
}

void loop()
{
  // Envia Arduino e Cia para o display
  writeArduinoOn7Segment();
  // Contagem regressiva
  contagem_regressiva();
  // Mostra numeros no lado esquerdo e direito do display
  numeros_separados();
  // Inicia contador de 0 a 1 milhao
  for (long i=0; i < 1000000; i++)
  {
    printNumber(i);
  }
  delay(500);
}
void printNumber(long v) 
{
  // Variavel valor digitos
  int digito1;
  int digito2;
  int digito3;
  int digito4;
  int digito5;
  int digito6;
  int digito7;
  int digito8;

  // Calcula o valor de cada digito
  digito1 = v%10;
  digito2 = (v / 10) % 10;
  digito3 = (v/ 100) % 10;  
  digito4 = (v/1000) %10;
  digito5 = (v/10000) %10;
  digito6 = (v/100000) %10;
  digito7 = (v/1000000) %10;
  digito8 = (v/10000000) %10;
  
  // Mostra o valor de cada digito no display
  lc.setDigit(0,7,(byte)digito8,false);
  lc.setDigit(0,6,(byte)digito7,false);
  lc.setDigit(0,5,(byte)digito6,false);
  lc.setDigit(0,4,(byte)digito5,false);
  lc.setDigit(0,3,(byte)digito4,false);
  lc.setDigit(0,2,(byte)digito3,false);
  lc.setDigit(0,1,(byte)digito2,false);
  lc.setDigit(0,0,(byte)digito1,false);
  delay(00);
}

void writeArduinoOn7Segment() 
{
  // Escreve Arduino e Cia no display
  for (int i =0; i<21; i++)
  {
    lc.setChar(0,i,'a',false);
    lc.setRow(0,i-1,0x05);
    lc.setChar(0,i-2,'d',false);
    lc.setRow(0,i-3,0x1c);
    lc.setRow(0,i-4,B00010000);
    lc.setRow(0,i-5,0x15);
    lc.setRow(0,i-6,0x1D);
    lc.setChar(0,i-7,' ',false);
    lc.setChar(0,i-8,'e',false);
    lc.setChar(0,i-9,' ',false);
    lc.setRow(0,i-10,B1001110);    
    lc.setRow(0,i-11,B0010000);  
    lc.setChar(0,i-12,'a',false);    
    lc.setChar(0,i-13,' ',false);
    delay(300);
  }
}

void contagem_regressiva()
{
  for (int x = 8; x >-1;x--)
  {
    lc.setDigit(0,x,x+1, false);
    lc.setChar(0,x+1,' ',false);
    delay(300);
  }
  lc.clearDisplay(0);
} 

void numeros_separados()
{
  for (int i =0 ; i<10 ; i++)
  {
     lc.setDigit(0,0,i,false);
     lc.setDigit(0,1,i,false);
     lc.setDigit(0,6,i,false);
     lc.setDigit(0,7,i,false);
     delay(300);
  }
  lc.clearDisplay(0);
}

Por último, para acionar apenas determinados segmentos do display, usamos o comando lc.setRow(), que tem a seguinte sintaxe :

lc.setRow(numero_modulo, digito,  valor) = Podemos definir valor em decimal, hexa ou binário, mas o comando fica mais fácil de entender se utilizarmos binário.

Veja por exemplo a letra "R", que escrevemos no display usando esse comando :

lc.setRow(0, digito, 0x05)

Em binário, o comando fica assim :

lc.setRow(0, digito, B00000101)

Que significa que estamos acionando apenas os segmentos E e G do display. A figura abaixo mostra exatamente como isso funciona :

Display 7 segmentos - Binario

Escolha os segmentos que você deseja ligar ou desligar, alterando o valor do bit correspondente para 1 ou 0.

Abaixo, vídeo mostrando o funcionamento do programa listado acima :



09 outubro 2014

Lilypad - O Arduino que você pode costurar na sua roupa

Costurar ? Como assim ? Pois é. O Arduino Lilypad é bem diferente das placas Arduino tradicionais que encontramos por aí. Só pra começar, o formato dele é circular, com aproximadamente 5 cm de diâmetro.

Arduino Lilypad ATmega328P


E por que ele tem esse formato tão diferente ? Segundo a inventora dessa placa, Leah Buechley, o Lilypad foi criado para ser costurado em qualquer roupa/tecido e dessa maneira ser programado para interagir com os movimentos do usuário ou com o ambiente à sua volta. Sem dúvida esse formato circular permite uma fácil conexão com sensores, luzes e outros dispositivos utilizando linha de costura condutiva.

Enquanto estava montando esse post achei uma sugestão bem legal de uso do Lilypad : uma mochila com leds, que pode ser mais um item de segurança se você está utilizando bicicleta ou andando a pé em locais com pouca iluminação :

Mochila leds Lilypad

Mochila Lilypad

Nesse site você encontra todas as informações sobre esse projeto. Vale a pena dar uma olhada.

Lilypad - Especificações e conectores

  • Processador : ATmega328P (datasheet)
  • Tensão de operação : 2.7 à 5.5V
  • Portas digitais : 14 (6 podem ser usadas como saídas PWM)
  • Entradas analógicas : 6
  • Corrente por pino : 40 mA
  • Memória : 16 K (2K utilizados pelo bootloader
  • Clock : 8 Mhz

Arduino Lilypad Conectores

Conectando o Lilypad ao computador

O modelo de Lilypad que estou usando pode ser programado utilizando um módulo FTDI, da mesma maneira que eu fiz para programar um Arduino Mini no artigo Como programar o Arduino Pro Mini usando conversor FTDI

Fique atento à ligação do módulo. Os pinos GND e DTR do módulo FTDI devem ser conectados aos pinos B e G, respectivamente. Siga o esquema de ligação abaixo :

Conexão Lilypad e módulo FTDI




Programando o Lilypad

Utilizando o FTDI, basta entrar na IDE do Arduino, escolher a placa Lilypad Arduino w/ ATmega328 e programar o Lilypad normalmente:

Lilypad IDE Arduino


E sim, o Lilypad também tem o famoso led conectado à porta 13, portanto você pode testar o funcionamento da sua placa com o programa abaixo :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// Programa : Lilypad - Led porta 13
// Autor : Arduino e Cia

void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
  // Acende o led da porta 13
  digitalWrite(13, HIGH);
  // Aguarda 2 segundos
  delay(2000);
  // Apaga o led da porta 13
  digitalWrite(13, LOW);
  // Aguarda 2 segundos
  delay(2000);
}


Alimentando o Lilypad com baterias

Para sair andando por aí com o seu Lilypad, utilize uma bateria externa (até 5v). Conecte a bateria à placa utilizando os conectores com as indicações + e -. Muito cuidado para não inverter os pólos da bateria, pois isso pode danificar definitivamente a sua placa.

Lilypad bateria


Uma última observação sobre o Lilypad : ele é lavável, mas não se esqueça de remover a(s) bateria(s) antes de jogar água na placa e certifique-se que está bem seco antes de ligá-lo novamente. ;-)