Mar 10 2011

Utilizando o conversor USB TTL com Arduino

Este post serve para mostrar aos navegantes como utilizar o conversor USB TTL junto com o seu Arduino standalone. O conversor serve para mudar o tipo de sinal que o PC envia e o que o microcontrolador deve receber para operar, não há muita dificuldade na conexão, apenas deve-se tomar cuidado para conectar corretamente os pinos.

Os pinos do conversor são mostrados a seguir:

São 6 pinos para conexão, mas para programar o Atmega em modo Standalone você precisa utilizar apenas 4, sendo eles:

+5V – Este pino você liga nos terminais do seu Atmega que são alimentados pelo “positivo”.
GND – Este pino você conecta aos terminais do seu Atmega que são alimentados pelo “negativo”.
RXD – Este pino deve ser conectado ao pino TX do Atmega (pino 3 – veja imagem a baixo);
TXD – Este pino você conecta ao pino RX do Atmega (pino 2 – veja imagem a baixo);

Após fazer a conexão dos pinos você deve instalar o drive, baixe deste link, e instale-o em seu computador, depois disso pode conectar o conversor USB TTL em uma porta USB (eu faço isso através de um cabo USB para ter mais liberdade para poder mover a protoboard com tudo junto pela mesa – fica a dica!).
Depois que tudo estiver instalado você precisa enviar o código para seu Atmega, para isso abra o ambiente de programação do arduino e selecione o exemplo “blink” para testar.
Pressione o botão reset da sua placa standalone e segure, depois clique no botão “enviar” da interface de programação do arduino e aguarde até que apareça na parte inferior uma tela como a mostrada a baixo:

Assim que aparecer na parte preta o texto em branco que diz o tamanho do arquivo significa que seu código ja foi compilado e o programa começará o upload propriamente dito, nesse momento você deve soltar o botão  reset e aguardar a mensagem de upload concluído. Pronto! seu Atmega rodando em modo standalone pode ser agora programado através da porta USB como se você estivesse utilizando uma placa arduino diretamente na USB.

- Kit Standalone;

- Conversor USB TTL;

Se você gostou desse POST, poderá gostar também do blog: http://blogdonatanael.blogspot.com/

Feb 28 2011

Como ler e escrever em SD Card com Arduino

Considerando que a memória de armazenamento de dados do Arduino é bastante limitada, temos a opção de usar cartões de memória como alternativa para armazenar dados em geral. Além de grande capacidade de armazenamento, custo atraente, também é muito simples de implementar.

Usarei o Módulo de cartão SD (http://www.webtronico.com/produtos/view/84) conectado com o Arduino Duemilanove (http://www.webtronico.com/produtos/view/5).

Na IDE de programação do Arduino, versão 0022 possui um exemplo para ler e escrever em cartões de memória SD, conhecido também como SD Card.

A ligação entre o Arduino e o Módulo SD é conforme a imagem abaixo:

O SD card que vou utilizar está formatado e não contém nenhum arquivo:

Após colocar o SD Card no módulo do SD, podemos abrir o Serial Monitor do Arduino e ver o SD Card sendo inicializado, escrito e lido.

E o resultado final no SD Card após algumas utilizações é o seguinte:

Feb 16 2011

Arduino Standalone

Algumas pessoas se perguntam se há alguma forma mais barata de rodar o arduino, pois cerca de R$ 100 por placa é muito. Outras desenvolvem o protótipo no Arduino mas não querem empregar toda a placa no projeto final. A resposta é: Standalone. A montagem do Atmega328 do arduino em modo standalone utiliza poucos componentes e você pode montar tudo na forma e tamanho que quiser. Abaixo apresento a lista de componentes e algumas fotos de exemplos de montagem standalone.

Você pode comprar o Kit Arduino Standalone na WebTronico que já vem com os seguintes componentes:

Componentes adicionais:
- 1 soquete de 28 pinos;
- Protoboard;
- fios para protoboard (wire jumpers).
Os componentes:
Na imagem a seguir temos os componentes principais para a montagem.

Para a montagem Standalone você deve fazer as seguintes ligações entre os componentes:

pinagem Atmega328 Arduino

pinagem Atmega328 Arduino

Seguindo os pinos do Atmega:
- Terminais 20 e 21 são ligados no positivo (fios vermelho na imagem a baixo);
- Terminal 22 ligado no negativo (fios preto na imagem a baixo);
- Terminais 9 e 10 são interligados com o cristal de 16Mhz;
- Terminais 9 e 10 são ligados após o cristal com o negativo, através dos capacitores cerâmicos;
- Terminal 8 ligado no negativo;
- Terminal 7 ligado no positivo;
- O 1º terminal é ligado ao positivo atravéz do resistor, e depois da saída do resistor é ligado a saída do botão de pressão. O outro terminal do botão de pressão é ligado ao negativo, quando pressionado ele faz a conexão do terminal 1 com o negativo, resetando o microcontrolador;

Na imagem a baixo temos a ligação dos componentes em uma protoboard:

Se você seguir estes passos consegue montar com facilidade seu Atmega rodando em moto Standalone, a seguir algumas imagens de como você pode montar ele:

A versão a seguir foi montada seguindo o mesmo formato e tamanho de uma placa Arduino Duemilanove, assim ela pode receber shields caso necessário.

E a seguir temos outra versão, esta é para ser usada em protoboard para testes

Nesta versão há os pinos fêmea onde pode-se conectar um conversor USB TTL para utilizar uma porta USB do computador, mas isso fica para ser explicado no próximo post.

Se você gostou desse POST, poderá gostar também do meu blog: http://blogdonatanael.blogspot.com/

Feb 15 2011

Escreva seu post nesse blog e ganhe FRETE GRÁTIS na próxima compra da WebTronico

Se você tem um exemplo didático, um projetinho de teste ou um tutorial sobre alguma coisa relacionada com Arduino, escreva aqui no blog da WebTronico.  Seu post pode servir de referencia para outros estudantes, hobbistas, inventores, entusiastas e até profissionais que usam o Arduino como plataforma de desenvolvimento.

Além de compartilhar o conhecimento e ajudar, você ganhará o frete grátis na próxima compra feita no site www.webtronico.com

Regrinhas:

  1. O POST deve ser de sua autoria. Entre em contato por e-mail resumindo o assunto do seu POST;
  2. Se for aprovado, crie seu usuário para ter acesso a página de escrever o POST: http://blog.webtronico.com/wp-login.php?action=register
  3. Escreva seu POST, preferencialmente incluindo imagens e videos; Também pode incluir o link do seu blog.
  4. Teremos a liberdade de editar seu POST, incluindo ou removendo conteúdo;
  5. Se a versão final do POST for aprovada por você e por nós, então publicaremos, e você terá direito a um frete grátis na próxima compra efetuada no www.webtronico.com (ATENÇÃO: essa compra não poderá ser paga com PagamentoDigital ou PayPal)
  6. Para receber o frete grátis, basta fazer o pedido normalmente no site da WebTronico, e depois entrar em contato por e-mail solicitando o cupom do frete grátis.
  7. Válido para POSTs publicados até dia 31/06/2011

Se você está louco para escrever e não quer nem saber de regras e frete grátis, é só criar seu usuário e escrever. Se aprovarmos o POST, você ganha o frete grátis igual :o )

Colabore, ajude, compartilhe…

Abraço

Jan 25 2011

Sensor de nível d’água com Arduino


Esse vídeo é apenas para demonstrar o funcionamento do sensor de nível de água vendido na WebTronico: http://www.webtronico.com/produtos/view/163
Nesse projeto, o sensor está ligado ao Arduino que monitora quando a chave é fechada. Quando isso ocorre, o Arduino ativa um buzzer contínuo emitindo um alerta sonoro.

Projeto exemplo de sensor de nível de água com Arduino

Projeto exemplo de sensor de nível de água com Arduino

O código fonte do programa que está rodando no Arduino é o seguinte:

int pinAgua = 11;
int pinBuzzer = 12;

void setup(){
  pinMode(pinAgua,INPUT);
  pinMode(pinBuzzer,OUTPUT);
}
void loop(){
  if(digitalRead(pinAgua)==HIGH){
    digitalWrite(pinBuzzer,LOW);
  }else{
    digitalWrite(pinBuzzer,HIGH);
  }
}
Dec 25 2010

Tri Motor Shield para Arduino


Esse shield foi especialmente desenvolvido para acionar motores de corrente contínua e motores de passo com o Arduino.
Dotado de um ULN2803 e uma ponte H completa L298 ele pode controlar motores basicamente das seguintes maneira:
Com o ULN2803

  • controle total de motores de passo;
  • controlar a velocidade de motores de corrente contínua (DC);
  • apenas “ligar” ou “desligar” o motor de corrente contínua (DC).

Com a Ponte H L298

  • controlar a velocidade de motores DC;
  • controlar o sentido de cotação do motor DC;
  • apenas “ligar” ou “desligar” o motor DC.

Exemplo de controle de velocidade  de um motor DC com potenciômetro:

Atenção: No vídeo não é comentado, mas no esquemático abaixo pode-se notar que existe um fio (jumper) ligando o pino 6 do Arduino ao IN 37 do Shield

Código de exemplo:

/*
  Controle de velocidade de motor DC com potenciometro
  www.webtronico.com 
  23/12/2010
  Utilizando o "Tri Motor Shield": http://www.webtronico.com/produtos/view/134
*/
int dcMotorPin = 6; //pino de controle do motor no pino 6
int potPin = 0; //Pino do meio do potenciometro ligado a entrada analógica 0
int valorPotenciometro = 0; //valor lido e convertido para digital
int valorVelocidade = 0; //mapeia o valorPotenciometro para velocidade em PWM

void setup(){
}
void loop(){
  valorPotenciometro = analogRead(potPin);
  valorVelocidade = map(valorPotenciometro,0,1023,0,255);
  analogWrite(dcMotorPin,valorVelocidade);
  delay(300);
}

DOWNLOAD DO CÓDIGO FONTE: WebTronicoDCMotorV.pde

Dec 16 2010

Como fazer furo metalizado em placas de circuito impresso dupla face


Uma forma simples de fazer a metalização do furo em placas de circuito impresso dupla face é utilizando tinta condutiva de prata pura (pode ser encontrada na WebTronico: http://www.webtronico.com/produtos/view/118 ou em casas de componentes eletrônicos).

Uma curiosidade é que a tinta não conduz enquanto não estiver totalmente seca, ou seja, após a aplicação deve-se aguardar de 2 a 3 horas para testar se a aplicação foi efetuada com sucesso e se está tendo condutividade entre as faces.

Dec 13 2010

Arduino + LM35 – Como montar um termometro

Para fazer essa montagem foram utilizados os seguintes componentes:

Para ligar o LM35 ao Arduino, é bom ter um conhecimento mínimo do conversos Analógico-Digital do Arduino (A/D).

Esse conversor tem entrada máxima de 5V. Como ele é de 10 bits, consegue diferenciar 1024 (de 0 a 1023) valores entre 0V e 5V.  Ou seja, quando ele ler 5v na entrada ele vai converter para 1023.

Agora ficou fácil, pois podemos fazer um regrinha de três (interpolação para quem é mais formal):

1023 —– 5V

512 ——- X

X = (5 * 512) / 1023 = 2.5 V

Ou seja,  se o A/D mostrar o valor digital 512 significa que está entrando 2.5V nele.

E o que o LM35 tem a ver com isso?

O LM35 é um sensor de temperatura linear que fornece 10mV para cada grau celcius que ele medir. Ou seja, se ele fornecer 100mV, significa que ele está medindo 10ºC.

Então da para ligar o LM35 no Arduino e fazer um termômetro?

Sim, basta fazer a ligação do esquemático abaixo e programar seu Arduino com o código fonte disponível no final desse post.

Código Fonte:

/*
Exemplo para ligar o LM35 ao Arduino
13/12/2010
http://www.webtronico.com

  Conversor Analógico->Digital de 10 bits (1024).

  O valor máximo que pode entrar no A/D é 5V.
  Sendo assim, quando entrar:
  -> 5V o valor lido será 1023
  -> 2.5V o valor lido será 511 ou (1023/2)
  -> 0V o valor lido será 0
  Resumindo, é uma regra de três normal onde:
  5V - 1023
  X  - Y
*/
int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0)
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 0; //valorLido convertido para temperatura

void setup() {
  Serial.begin(9600); //Inicializa comunicação Serial
}

void loop() {
  valorLido = analogRead(pinoSensor);
  temperatura = (valorLido * 0.00488);  // 5V / 1023 = 0.00488 (precisão do A/D)
  temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius
  Serial.print("Temperatura atual: ");
  Serial.println(temperatura);
  delay(5000); //espera 5 segundos para fazer nova leitura
}
Jul 16 2010

Arduino com Laser de 5mW

Read more »

Jul 06 2010

ARDUINO + GPS: como montar seu navegador GPS

Usarei 3 peças para fazer este navegador:

  1. Arduino Duemilanovehttp://www.webtronico.com/produtos/view/5
  2. LCD Shield - http://www.webtronico.com/produtos/view/34
  3. Módulo GPS (SKM53)http://www.webtronico.com/produtos/view/22

O LCD Shield possui um LCD 16×2 (16 caracteres e 2 linha) e teclado com 5 push buttons, que vou utilizar para selecionar a função que vai aparecer no display.  Este teclado é bem interessante, pois os 5 push buttons são ligados em apenas uma entrada analógica (AD). Isto significa que cada botão “envia” uma tensão diferente para o AD, e como você conhece a tensão de cada botão você consegue mapear qual botão foi pressionado. Muito fácil e muito útil pois economiza pinos I/O.

Para escrever no LCD estou utilizando a biblioteca LCD4Bit_mod, onde simplesmente você precisa utilizar a função lcd.printIn(“Escreve no LCD”);

O módulo GPS também é bastante simples. Ele possui antena embutida e é alimentado com 5V. O pino de TX é ligado no pino RX do Arduino. Quando alimentando o GPS começa a se comunicar com o Arduino automaticamente, com velocidade padrão de 9600 bauds. O GPS envia com frequência de 1Hz (1 vez por segundo) os dados de localização. Estes dados seguem um padrão chamado NMEA que é mais ou menos assim:

$GPGGA,122021.000,3023.7865,S,05120.3565,W,1,9,0.90,31.7,M,4.5,M,,*59
$GPGSA,M,3,29,30,21,10,02,12,18,05,31,,,,1.18,0.90,0.77*0A
$GPGSV,3,1,10,30,81,029,33,29,57,192,30,21,44,303,31,12,42,043,30*7B
$GPGSV,3,2,10,05,34,110,27,31,27,253,18,10,11,136,23,18,10,354,23*7B
$GPGSV,3,3,10,02,07,133,21,34,,,*48
$GPRMC,122021.000,A,3023.7865,S,05120.3565,W,0.49,268.48,060710,,,A*62
Vou descrever apenas uma linha: $GPRMC
$GPRMC,122021.000,A,3023.7865,S,05120.3565,W,0.49,268.48,060710,,,A*62