quarta-feira, 20 de novembro de 2013

Arduino e MatLab - Leitura/Escrita Digital

    Como foi visto no último post daremos o início do estudo de MatLab e Arduino. Nesse primeiro post sobre tal assunto iremos fazer um simples botão de ligar e outro para desligar um LED, usando a interface gráfica do MatLab. Bom, vamos começar!

    Primeiramente, abra seu software MatLab e no COMMAND WINDOW digite tal frase: GUIDE. Na aba Create new GUI escolha a 1ª opção: Blank GUI(default), a figura abaixo ilustra esse passo.

 
     Já com a GUIDE criada colocaremos os respectivos botões de "ON" e "OFF". Para isso selecione a ferramenta pushbutton na paleta:


sábado, 16 de novembro de 2013

Matlab e Arduino



    Fala pessoal, desculpa a demora em postar algo novo, mas estou sem tempo em atualizar. Faculdade tomando todo tempo. Mas sem chororo, hoje vamos falar sobre  uma ferramenta muito útil na engenharia que o software MATLAB, com esse programa podemos fazer muitas simulações tanto físicas, matemáticas ou de engenharia.
     Bom, em meados de 2010 a Mathworks, desenvolvedora do MatLab, disponibilizou uma forma de interagir em conjunto com o Arduino, toda a programação é feita em ambiente MatLab, abandonando o IDE do Arduino.

    Para começar a programação fiz um passo-a-passo:



quarta-feira, 18 de setembro de 2013

Tutorial Shield Ethernet Arduino - Parte 4: Link de páginas e carregamento de imagens

    O 4º passo do nosso tutorial é como fazer links entre páginas e hospedar imagens, tudo usando o arduino mais o shield ethernet e o cartão de memória micro SD.

Material:

    - Arduino
    - Shield Ethernet
    - Cartão micro SD



segunda-feira, 2 de setembro de 2013

Tutorial Shield Ethernet Arduino - Parte 3: Controle de led's com página HTML

    Nesse 3º passo do tutorial Shield Ethernet Arduino, iremos estudar uma das várias formas de controle de componentes externo por uma página em HTML. Nesse caso iremos usar 2 LED's para fácil compreensão do código.

Material:

    - Arduino
    - Shield Ethernet
    - 2 Led's
    - Fios Jumpers, cabo USB e cabo com conexão RJ-45

Imagens:

    Na imagem abaixo podemos ver como conectei o arduino mais o shield com os led's. 
    Pino 5 -  led1
    Pino 7 -  led 2


quinta-feira, 29 de agosto de 2013

Tutorial Shield Ethernet Arduino - Parte 2: HTML pelo cartão micro SD

    Continuando nosso estudo sobre shield ethernet iremos hoje explorar uma vantagem dessa ferramenta, o uso do cartão micro SD pra armazenar sites em formato HTML, você pode programar qualquer tipo de linguagem e armazenar no cartão.

Imagens:



quarta-feira, 28 de agosto de 2013

Tutorial Shield Ethernet Arduino - Parte 1: Construção e entendimento de uma simples página HTML

   Há algum tempo adquiri uma placa shield ethernet para usar no Arduino. Já postei algo sobre essa placa alguns posts atrás. (11 projeto arduino e shield ethernet). Decidi então estudar melhor esse shield e também criar um pequeno tutorial sobre meus estudos, que achei em livros e sites.
    Nesse 1º tutorial aborda o uso do shield para construção simples em HTML de um site hospedado pelo próprio shield.
    Um web server hospeda sites que você pode acessar pelo browser de qualquer computador em rede com o arduino e seu shield ethernet. Com o esse shield você poderá controlar e monitorar alguns hardware. como lâmpadas, motores e etc.
    Abaixo segue os materiais que iremos usar nesse e nos próximos tutoriais.

Material:


  •  Arduino
  •  Shield Ethernet
  •  Cabos (RJ-45)
  •  Cartão MicroSD (quando requesitado)
  •  Mateiras adicionais: led; protboard; resistores; fios jumpers;

segunda-feira, 19 de agosto de 2013

12º projeto: Controle de motor de passo pelo shield motor

    Há mais ou menos um mês fiz minha última postagem sobre shield ethernet, tal assunto que ainda quero muito estudar e irei. Demorei esse tempo para fazer uma nova postagem porque estava sem tempo - novamente: maldita engenharia -, hoje gostaria de aborda um shield que comprei algum tempo. que o motor shield da ladyAda.



domingo, 14 de julho de 2013

11º Projeto: Arduino e shield Ethernet

    Há  cerca de uma semana chegou minha tao estimada compra no dealextreme.com/ e dessa vez chegou para mim um arduino Mega e o tão famoso shield Ethernet.
    Já de cara quis aprender a mexer com esse shield tão poderoso, verifiquei que há muitos projetos na net mas poucos projetos didáticos, então decidir criar algo fácil de entender.
    No caso eu decidir criar um sketch cujo tal o usuário apertava um botão e um led acendesse, coisa simples porém queria já criar um ambiente em html. Então...decidir estudar e foi esse o resultado

   Mas antes vamos entender um pouco sobre o shield Ethernet:


terça-feira, 25 de junho de 2013

10º Projeto: Como acender uma lâmpada por controle remoto?!

    Depois de um mês sem postar nada - maldita engenharia! -, hoje eu volto com algo que sempre fui curioso em aprender. Como acender uma lâmpada por controle remoto?

    Desde que comecei a estudar o Arduino aprendi muito sobre eletrônica, que admito e meu ponto mais fraco, e para fazer esse projeto tive q corre atrás e estudar um pouco mais, agradeço agora ao incrível professor Luis Paulo da faculdade CES/jf campus Academia cujo tal foi um excelente orientador e paciente comigo. Muito Obrigado!

    Mas como falava, tive que aprender um pouco mais e no caso desse projeto o incrível valor do relé. Link para entendimento de relé


 

Material:

   - Arduino
     - relé 5v/dc
     - Protoboard
     - Fios Jumpers
     - transistor bc-546 ou equivalente NPN
     - Resistor 10k ohms
     - diodo 1N4001
     - Sensor IRremote
     - Controle remoto
     - Lâmpada e fios de bitola de 1mm



domingo, 26 de maio de 2013

9º Projeto: Medidor de temperatura com LM35

    O 9º projeto é um clássico do arduino. Seria como fazer uma leitura com o sensor LM35, que tem seu custo muito barato, e imprimir o valor em um display de LCD 16X2.
    Vamos ao projeto:

Material:

   - Arduino
     - Sensor LM35
     - Protoboard
     - Fios Jumpers
     - Display LCD 16X2

Esquema:




segunda-feira, 6 de maio de 2013

8º Projeto: Matriz de Led 8X8 controlado por chip MAX7219

    No 8º projeto damos um salto grande em relação a complexidade e recursos para realizar esse projeto. Recentemente realizei um compra no site dealextreme.com e chegou vários "brinquedos" para mim, e um deles foi:

FIGURA 1 - MATRIZ DE LED 8X8 CHIP MAX 7219

domingo, 28 de abril de 2013

7º Projeto: Ligando/Desligando um LED com um botão

    O sétimo projeto do blog é algo muito simples, mas foi algo que me foi perguntado por um amigo e não soube responder na hora. 
    Como acender e desligar um LED com apenas um botão?
    Ao tentar estruturar um raciocínio lógico para desenvolver o sketch percebi  que estamos trabalhando com portas digitais - então portas lógicas. 
    Ao entender isso meus problemas se revolveram, apenas precisei negar o estado lógico do LED. 
    

Material:

    - Arduino
    - Protoboard
    - Fios jumpers
    - 1 LED
    - 1 pushbotton
    - 1 resistor 220ohms

Esquema:


quinta-feira, 18 de abril de 2013

6º Projeto: Bomba de airsoft

    Nesse sexto projeto venho apresentar um caro amigo de faculdade e estudos de Arduino, Alberto Pena. Ele desenvolveu uma bomba para o uso de airsoft e pediu minha humilde ajuda para encontrar e retirar alguns "bugs" de seu sketch. Ao encontro-la para estudar seu projeto achei  muito interessante e propus á ele q cedesse seu código mais seu esquema para eu postar no meu blog. Bom, como podemos ver, ele aceitou!!
    Então vamos logo ao projeto:


Material:

    - Arduino
    - Protoboard
    - Fios Jumpers
    - Display cristal liquido
    - 2 Resistores 220ohms (pushbuttons)
    - 2 Resistor 1Kohm (Buzzer e LCD)
    - Led Resistor 220Ohms (Led)
    - 1 potenciômetro
    - 2 pushbottons
    - 1 buzzer
    - Fonte externa de alimentação do arduino(pilhas, baterias,...)

Esquema:




quarta-feira, 10 de abril de 2013

5º Projeto: LDR integrado ao servomecanismo buscando maior luminosidade

     No 5º projeto de nosso blog continuaremos a estudar um pouco mais na prática uma das formas de uso do servomecanismo, nesse exemplo coloquei na ponta do servo um resistor LDR cuja função e comparar o valor da luminosidade local com um valor do programa se esse valor for maior o servo deverá travar sua posição até que a luminosidade mude.

Material:

    - Arduino
    - Protoboard
    - Fios Jumpers
    - Resistor LDR
    - 1 Resistor 10kohms
    - 1 servomecanismo

Esquema:


segunda-feira, 1 de abril de 2013

4º Projeto: Controlador de velocidade de motor CC com display de 7 segmentos

Nesse 4º projeto iremos fazer um controlador de motor cc com um transistor NPN (bd139) e um velocímetro simples com um display de 7 segmentos.

Material:

    - Arduino
    - Protoboard
    - Fios Jumpers
    - Transistor NPN BD139
    - Motor CC
    - display de 7 segmentos (Ânodo comum)
    - 2 pusshbottons
    - 3 Resistores 220ohms
    - 2 pilhas pequenas

Esquema:


segunda-feira, 25 de março de 2013

Principais comandos da porta Serial.

    Bom, esse post é um pouco diferente dos outros, pois não há nenhum projeto a ser discutido, mas continuarei dando ênfase no estudo do servomotor.
    Para  maior conhecimento organizei uma tabela com os principais comandos do uso da porta serial e destaquei algumas explicações de tais comandos.



    Com estudo dessa tabela o uso da porta serial ficará bem mais facil.
    Depois irei postar um novo projeto bem simples usando apenas o arduino e um servomecanismo.


quinta-feira, 21 de março de 2013

3º Projeto: Controlar um servo pelo teclado

    Nesse novo projeto iremos controlar um servo utilizando o teclado do PC. É um program simples onde entenderemos mais a fundo sobre os comandos Serial.
 

    Material:

                    - Arduino 
                    - Servo

    Esquema:

    Código:


#include <Servo.h>  //incluir a biblioteca de servo

Servo myservo;  //Inclusao do servo

int n = 0;  //Entradas seriais
int pos = 0;  //Posição zero para o servop

void setup(){
  Serial.begin(9600);  //Ativando a porta serial
  myservo.attach(8);  //Pino do servo+arduino
  myservo.write(0);  //Servo setado com valor zero
  Serial.flush();  //Limpando a memoria do serial
  Serial.println("Digite: \n 2-90 \n 3-180 \n 4-02");  //criação de um cabeçalho no serial
}

void loop(){
  if(Serial.available()>0){  //Teste se porta serial esta recebendo dados
    n = Serial.read();  //leitura de dados
    Serial.print("Valor lido: ");  
    Serial.println(n);  //Printa o valor teclado

    if(n==50){  //girar 90
    myservo.write(90);
    delay(500);
    }

    if(n==51){  //girar 180
    myservo.write(180);
    delay(500);
    }

    if(n==52){  //volta pra 0
    myservo.write(-180);
    delay(500);
    }
  }
  
  Serial.flush();
}

    Vídeo:

    Comentário sobre o código:

    Podemos notar que ao fazer o upload do código e abrirmos o serial(Crtl+Shift+M) aparecerá um tipo de cabeçalho:
                    Digite:
                             - 2-90
                             - 3-180
                             - 4-0

    Isso ocorre porque o Serial.print está no void setup, se estivesse no void loop seria constantemente mostrado na tela. 
    Temos a leitura do valor "n" que é gerado pelo teclado. Como o objetivo é comparar valores lidos pelo teclado precisamos utilizar o valor real do "n" e compara-lo em uma condição: (n==50) "n é igual a 50?", como 50 representa do digito "2", caso você tenha pressionado o número "2" a condição torna-se verdade e uma tarefa é executada.  
É possível usar outros valores e também acionar outros dispositivos como motores/leds usando essa mesma lógica, basta adicionar mais condições.

Agradeço a atenção


terça-feira, 19 de março de 2013

2º Projeto: Servomecanismo com resistor LDR

    Bom, esse segundo projeto é uma maneira simples de interagir um servo usando um LDR. Tente fazer a parte de hardware mais simples possível e ao mesmo tempo mais explicativa possível.

    Material:

                       - Servomecanismo
                       - Resistor 10kohms
                       - LDR
                       - Arduino
                       - Protoboard
                       - Fios Jumpers 

    Esquema:



    Código:



#include <Servo.h>  //inclusão da biblioteca servo

Servo myservo;  //nomeando o servo

int pos = 0;  //determinando posição 0 para o servo
int pinLDR = A0;  //Pino analógico A0 para o LDR
int valor;  //variável valor
#define LDR 0  //definindo o valor de LDR como zero

void setup(){
 
 Serial.begin(9600); //Abrindo comunicação serial
  myservo.attach(9);  //Pino de conexão servo+arduino
  myservo.write(0);  //Servo com valor setado zero
}

void loop(){
  valor = analogRead(LDR);  //Variável valor recebendo o valor do LDR
  Serial.print("O valor do LDR e: ");  //Printar a frase O valor do LDR e:
  Serial.println(valor);  //Printar o valor serial do LDR

//Se variável valor for menor que 550 o servo deverá andar 180 graus com resposta de 500ms
  if(valor<550){
    myservo.write(180);
    delay(500);
    }

//Se não, o servo deverá voltar ao estado original
  else{
    myservo.write(-180);
    delay(500);  
  }
}

    Vídeo:


    Ao fazer o upload do programa o servo se comportará toda vez que um sombra atuá sobre o LDR, movimentando-o 180 graus.

Agradeço a atenção.




sexta-feira, 15 de março de 2013

1º projeto: Semáforo interativo com display de 7 segmentos.


     O primeiro projeto que apresento é o velho mas também importante semáforo interativo, onde temos as luzes para o tráfego dos automóveis e as luzes para a travessia dos pedestres. Mas, nesse projeto adicionei algo á mais: um display de 7 segmentos, cujo faz a contagem regressiva de 5 até 0, cronometrando o tempo de travessia do pedestre.

     DICA: Para realizar esse projeto baseie no exemplo nº 4 do livro Arduino Básico, ed. NOVATEC (recomendo).

    Materiais:

                  - Arduino
                  - Protoboard
                  - Fios Jumpers
                  - 2 LED's vermelhos, 2 LED's verdes e 1 LED amarelo
                  - 5 resistores 220 ohms
                  - Push Button
                  - Display de 7 segmentos (Anôdo comum)

    Esquema:




    Código:

int redCar = 12;  //pino luz vermelho
int yellowCar = 11;  //pino luz amarelo
int greenCar = 10;
int redPed = 7;  //pino luz vermelho pedestre
int greenPed = 8;  //pino luz verde pedestre

int button = 2;  //push button

int displayA = 3;  //seguencia de leds do display e seus respecitvos pinos
int displayB = 4;
int displayC = 5;
int displayD = 1;
int displayE = 6;
int displayF = 9;
int displayG = 13;

void setup(){ 
pinMode(redCar, OUTPUT);  //pino saída
pinMode(yellowCar, OUTPUT);  //pino saída
pinMode(greenCar, OUTPUT);  //pino saída
pinMode(redPed, OUTPUT);  //pino saída
pinMode(greenPed, OUTPUT);  //pino saída

pinMode(button, INPUT);  //botão do pino 2  entrada

digitalWrite(greenCar, HIGH); //acende verde  para carros
digitalWrite(redPed, HIGH);
   
pinMode(3, OUTPUT);  //pinos dos display como saída
pinMode(4, OUTPUT); 
pinMode(5, OUTPUT); 
pinMode(1, OUTPUT); 
pinMode(6, OUTPUT); 
pinMode(9, OUTPUT); 
pinMode(13, OUTPUT);
}

void loop(){ 
int state = digitalRead(button);  /* verifica se o botão foi pressionado e se transcorreram 5 segundos desde a última vez que isso ocorreu*/
 
if(state == HIGH){    //Chama a funçao para alterar as luzes
trocaLed(); 
    }
}

void trocaLed(){ 
digitalWrite(greenCar, LOW);  //Apaga o verde 
digitalWrite(yellowCar, HIGH);  //acende o amarelo 
delay(2000);  //espera dois segundos 
 
digitalWrite(yellowCar, LOW);  //Apaga o amarelo 
digitalWrite(redCar, HIGH);  //Acende o vermelho 
delay(2000);  //Espera 2 segundos 
 
digitalWrite(redPed, LOW);  //Apaga o vermelho dos pedestres 
digitalWrite(greenPed, HIGH);  //cende o verde dos pedestres 
 
//espera por um intervalo de tempo predefinido 
 
digitalWrite(displayA, LOW);  //Seqüência do numero 5 
digitalWrite(displayB, LOW); 
digitalWrite(displayC, LOW); 
digitalWrite(displayD, HIGH); 
digitalWrite(displayE, HIGH); 
digitalWrite(displayF, LOW); 
digitalWrite(displayG, LOW); 
delay(1000); 
 
digitalWrite(displayA, LOW);  //Seqüência do numero 4 
digitalWrite(displayB, LOW); 
digitalWrite(displayC, HIGH); 
digitalWrite(displayD, LOW); 
digitalWrite(displayE, HIGH); 
digitalWrite(displayF, HIGH); 
digitalWrite(displayG, LOW); 
delay(1000);
 
digitalWrite(displayA, LOW);  //Seqüência do numero 3 
digitalWrite(displayB, HIGH); 
digitalWrite(displayC, LOW); 
digitalWrite(displayD, LOW); 
digitalWrite(displayE, HIGH); 
digitalWrite(displayF, LOW); 
digitalWrite(displayG,LOW); 
delay(1000);
   
digitalWrite(displayA, LOW);  //Seqüência do numero 2 
digitalWrite(displayB, HIGH); 
digitalWrite(displayC, LOW); 
digitalWrite(displayD, LOW); 
digitalWrite(displayE, LOW); 
digitalWrite(displayF, LOW); 
digitalWrite(displayG, HIGH); 
delay(1000);

digitalWrite(displayA, HIGH);  //Seqüência do numero 1 
digitalWrite(displayB, HIGH); 
digitalWrite(displayC, HIGH); 
digitalWrite(displayD, LOW); 
digitalWrite(displayE, HIGH); 
digitalWrite(displayF, HIGH); 
digitalWrite(displayG, LOW); 
delay(1000); 
 
digitalWrite(displayA, HIGH);  //Seqüência do numero 0 
digitalWrite(displayB, LOW); 
digitalWrite(displayC, LOW); 
digitalWrite(displayD, LOW); 
digitalWrite(displayE, LOW); 
digitalWrite(displayF, LOW); 
digitalWrite(displayG, LOW); 
delay(1000);

//pisca o verde para os pedetres 
for(int x=0; x<3; x++){   
digitalWrite(greenPed, HIGH);   
delay(250);   
digitalWrite(greenPed, LOW);   
delay(250); 


//Acende o vermelho dos pedretres 
digitalWrite(redPed, HIGH); 
delay(500); 
digitalWrite(yellowCar, HIGH); 
digitalWrite(redCar, LOW); 
delay(1000); 
digitalWrite(greenCar, HIGH); 
digitalWrite(yellowCar, LOW);
  //Registra o tempo desde a ultima alteração no semaforo
  }
 
    Vídeo:



    Ao fazer o upload do arquivo os led's verde para carros e vermelhos para pedestres deverão está aceso, ao pressionar  o botão o led vermelho para carro apaga e o amarelo se acenderá logo depois o verde de pedestre também se acenderá e o led vermelho se apagará começando a contagem do tempo no display, em seguido ao término da contagem o led verde de pedestre piscará 3 vezes e voltará ao estado inicial do programa.

    Comentário: Esse projeto é muito interessante pois já requer um certo nível de conhecimento de programação somado com eletrônica básica.

    Aperfeiçoamento: - Reduzir código;

Agradeço a atenção de todos e fico aberto a sugestões 

quinta-feira, 14 de março de 2013

Criação de um blog, pra que?!

     Bom, vejamos, por que criar um blog? Para registro? Talvez!....No meu caso o blog foi uma sugestão de um dos meus "mentores" sobre programação de Arduino. Isso mesmo, esse blog tem como objetivo expor experiências e projetos que andei fazendo ou estudando.
    Logo abaixo temos um projeto que fiz recentemente.