Páginas

sábado, 28 de agosto de 2010

Tutorial - Baixando Arquivos no 4Share.

Bom Dia Queridos!
Estou de volta para mais um pouco de informação.
Escrevo este post devido a facilidade de disponibilizar os exemplos deste blog, eu mesmo já passei por maus bocados, devido a cópia de informação, e a mesma possuir algum erro de sintaxe. um horror! as vezes por causa de uma "{" perde se um tempo precioso, graças ao compilador cego do do nosso amado arduino. Enfim chega de "Bla, bla, bla e vamos ao que interessa!"

  • Quando clicar em um link desta página uma pagina do 4share vai aparecer como da imagem: Basta clicar em "DOWNLOAD NOW". 

  • Na próxima tela aguarde a contagem chegar em 20!
          não click em nada ainda. Só depois deste tempo que o link do download aparecerá: 


  •  Agora sim! Click no link que aparece logo depois: Download File now




  • Agora basta clickar em "Salvar" e escolher o local em sua máquina:


Viu Fácil como Beijar na boca! rsrsrsrs

Abraços e bons Download!

Att.: Marcelo Bacana...

sexta-feira, 27 de agosto de 2010

Programando o Arduino com PHP. (Parte1 de 2)

Olá!
Em uma de muitas viagens pelo mundo da net, encontrei uma reportagem interessante sobre como editar os códigos no arduino com a linguagem "PHP". como programador sempre fui "Louco" em aprender uma linguagem nova, por isso estou postando buscando aprender e tirar as dúvidas que apareçam.
então vamos ao assunto!
O PHP é uma linguagem muito versátil, utilizada sobretudo em aplicações Web. É uma das linguagens que estou aprendendo e está sendo sem dúvida a minha preferida. Quando se tem uma base, é relativamente fácil aprender qualquer linguagem. Para mais informações, vejam os "Links" no final deste artigo.
Neste artigo não irei ensinar PHP, eu recomendado um conhecimento prévio e básico desta linguagem. De qualquer forma, pode ser um ponto de parida para aprender uma nova linguagem de programação. Vou tentar ser o mais explicativo possível, mas se tiverem dúvidas, não hesitem em colocá-las nos comentários deste artigo.
Além disto, apesar deste tutorial ser uma implementação do PHP no Arduino, funcionará
(com as devidas alterações) com qualquer outra linguagem que faça comunicação pela porta Serial.

Chega de conversa, vamos pôr mãos à obra. Este artigo está dividido em duas partes:
  • Aprender a comunicar com o Arduino usando o PHP
  • Pôr Arduino a comunicar com o PHP e vice-versa

Início:
Normalmente não podemos comunicar directamente com dispositivos USB como fazemos para enviar dados para uma impressora ou porta COM. Para a maioria dos dispositivos é necessário um driver especial. Felizmente, os designes do Arduino fizeram a ligação por USB um pouco diferente. O Arduino se conecta através de um controlador Serial por USB, isso significa que podemos abrir uma porta USB e enviar dados directamente para o Arduino, da mesma forma como fazemos com a porta LPT ou COM. É exactamente isso que vamos fazer: enviar dados do PHP para o Arduino e processá-los sem a necessidade de qualquer driver. Bom demais; então vamos a obra!


 Vou então explicar como se envia dados para uma porta USB através do PHP. O nosso Arduino corresponde a uma porta COM. Para saber o número dessa porta, basta abrir o Gestor de Tarefas, no Painel de Controle.

Procurar por um "USB Serial Port" (O meu XP está em Inglês) - é o teu Arduino - tem uma COMX, onde X é o número da porta COM.

Agora vamos ao código PHP utilizado para enviar dados pela porta COM. Reparem no código a seguir:

$fp = fopen("com5", "w");

fwrite($fp, chr(1));

flose($fp); Primeiro usaremos a função fopen para abrir ligação com a porta onde declaramos a função fp, usando o comando W, o que indica no PHP que vamos escrever (Write, em inglês).

De seguida, usaremos a função fwrite. Como já devem ter percebido é usada para enviar os dados. Dentro da função indicaremos a ligação (definida na variável fp) e enviamos o caracter "1". Reparem na função chr() - não podemos apenas enviar o valor inteiro, temos de o encriptar em ASCII, que é o que faz a função chr().

 No final fechamos a ligação. É muito importante que fechemos a ligação no final de enviarmos os dados que queremos.

 Resumindo:
  1. Abrimos ligação para a porta COM do Arduino
  2. Enviamos os dados
  3. Fechamos a ligação
Espero que estejam gostando!
Eis então o código!!!


Agora vamos à programação do Arduino. O que vou mostrar aqui é uma forma de testar se a ligação está correcta. Vamos fazer um programa simples: se o valor inteiro for 1, irá piscar 1 vez, se for 2, irá piscar 2 vezes. Fácil como a água. rsrsrsrs

int ledPin = 13;

int usbnumber = 0;

void setup() {

pinMode(ledPin, OUTPUT);

Serial.begin(9600);

}

void loop() {

if (Serial.available() > 0) {

usbnumber = Serial.read();

}

if (usbnumber > 0) {

if (usbnumber == 1){

digitalWrite(ledPin, HIGH);

delay(300);

digitalWrite(ledPin, LOW);

delay(300);

}

if (usbnumber == 2){

digitalWrite(ledPin, HIGH);

delay(300);

digitalWrite(ledPin, LOW);

delay(300);

digitalWrite(ledPin, HIGH);

delay(300);

digitalWrite(ledPin, LOW);

delay(300); }

}

usbnumber = 0;

}

}

Vamos por parte. Não se deixem intimidar pela extensão do código.

Antes do setup definimos que vamos usar o pino 13 do Arduino para ligar o LED.
E depois iniciaremos a variável que vai "carregar" o número lido pela USB.

No setup definimos que o pino do LED vai ser um output e iniciamos a ligação Serial.

No loop, o Arduino verifica se há algum dado novo recebido. Se houver, vamos passar esse dado para a nossa variável usbnumber. Depois vemos se a variável é maior que zero; se for, sabemos que recebeu algum dado. Segue-se uma simples condição.

Até agora temos o código do Arduino. Agora Vamos contruír o código PHP!


$fp =fopen("com5", "w");

while (true){

$i = 1;

echo "Enviado o valor 1 - o LED deve piscar 1 vez \r\n";

fwrite($fp, chr($i));

sleep(3);

$i = 2;

echo "Enviado o valor 2 - o LED deve piscar 2 vezes \r\n";

fwrite($fp, chr($i));

sleep(3);

}

fclose($fp);

Nada de novo. Tal e qual como no exemplo anterior. A nova parte é o loop, que contém o número que enviamos pela Serial.

O código é simples: vai alternando o valor da variável entre 1 e 2. Depois escreve alguma informação no console, espera 3 segundos e volta a repetir o Loop.

Os últimos bits

1.Fazer upload do código do Arduino para o Arduino

2.Correr o código PHP

Penso que quanto ao primeiro passo não há dúvidas.

Apenas no segundo pode ocorrer algumas dúvidas, mas vou tentar explicar como fazê-lo. Vamos supor que eu fiz o download do PHP para o Windows e fiz unzip para C:/php. Entro na linha de comandos do Windows, mudo a directorio para c:/php e escrevo o comando

php c:/path/to/usb/php/script.php

Feito! basta olhar o LED do Arduino e repara na informação da Janela do Console.

Meus caros Boa sorte e Bom aprendizado!

 Gosto de saber a vossa opinião sobre o que escrevo, então deixem comentários.

Até Marcelo Bacana.:

terça-feira, 24 de agosto de 2010

Mais sobre Arduino.

Olá pessoal, esta é mais uma postagem sobre Arduino que irei escrevendo conforme vou aprendendo sobre o mesmo, minha placa Arduino deve chegar daqui ha 2 dias, até lá vou ler muita coisa para já ter uma base. Meus projetos estão em stand by em minha mente por enquanto, falta um pouco de tempo, e  falta peças ainda... pretendo até o fim do mês terminar (se eu encontrar as malditas peças). Bom, vamos logo ao assunto:




O que é Arduino?

Arduino é uma plataforma de hardware open source baseado em um microcontrolador com suporte a conexão via serial ou USB com o computador para receber programas, uma placa Arduino é tudo o que você precisa para iniciar no mundo da eletrônica e programação de microcontroladores.

Antes que você resolva ler o parágrafo anterior novamente, não, você não leu errado, eu realmente escrevi "hardware open source", você deve estar acostumado a ver software open source onde o código fonte está disponivel para quem deseja alterar, neste caso o hardware (a placa Arduino) funciona da mesma forma, você pode encontrar dezenas de esquemas de placas Arduino, escolher a que mais lhe agrada e montá-la peça por peça, ou compre um dos muitos modelos já existentes.
O poder do Arduino:


Por ser um hardware open source, você encontrará inúmeras aplicações com arduino na internet, e a maioria completamente documentada em seus menores detalhes para que você também possa reproduzir o feito em sua casa. Com uma placa Arduino você pode fazer desde o simples "Hello World" que no caso do Arduino é fazer um LED piscar, até controlar aeronaves não tripuladas.
(Verdade! vejam o que encontrei no Santo google).



Mais um pouco de informação:
Duemilanove (que significa dois mil e nove, em italiano) é o mais recente modelo do Arduino, e também o que nós estamos usando em nosso projeto. Veja algumas especificações:
Arduino Duemilanove
Arduino Duemilanove
Microcontrolador ATmega328
Tensão de operação 5 V
Tensão de entrada (recomendada) 7-12 V
Tensão de entrada (limites) 6-20 V
Pinos E/S digitais 14 (dos quais 6 provêm saídas PWM)
Pinos de entrada analógicos 6
Corrente CC por pino E/S 40 mA
Corrente CC por pino 3.3 V 50 mA
Memória Flash 32 KB, sendo 2 KB utilizados pelo bootloader
SRAM 2 KB
EEPROM 1 KB
Velocidade de Clock 16 MHz

Alimentação

O Arduino Duemilanove pode ser alimentado pela conexão USB ou por qualquer fonte de alimentação externa. A fonte de alimentação é selecionada automaticamente.
Alimentação externa (não-USB) pode ser tanto de uma fonte ou de uma bateria. A fonte pode ser conectada com um plug de 2,1mm (centro positivo) no conector de alimentação. Cabos vindos de uma bateria podem ser inseridos nos pinos Gnd (terra) e Vin (entrada de voltagem) do conector de alimentação.
A placa pode operar com uma alimentação externa de 6 a 20 volts. Entretanto, se a alimentação for inferior a 7 volts o pino 5V pode fornecer menos de 5 volts e a placa pode ficar instável. Se a alimentação for superior a 12 volts o regulador de voltagem pode super-aquecer e avariar a placa. A alimentação recomendada é de 7 a 12 volts.
Os pinos de alimentação são:
  • VIN. Entrada de alimentação para a placa Arduino quando uma fonte externa for utilizada. Você pode fornecer alimentação por este pino ou, se usar o conector de alimentação, acessar a alimentação por este pino.
  • 5V. A fonte de alimentação utilizada para o microcontrolador e para outros componentes da placa. Pode ser proveniente do pino Vin através de um regulador on-board ou ser fornecida pelo USB ou outra fonte de 5 volts.
  • 3V3. Alimentação de 3,3 volts fornecida pelo chip FTDI. A corrente máxima é de 50 mA.
  • GND. Pino terra.

Memória

O ATmega328 tem 32 KB de memória flash para armazenar código (dos quais 2 KB são utilizados pelo bootloader), além de 2 KB de SRAM e 1 KB of EEPROM (que pode ser lida e escrita através da biblioteca EEPROM ).

Entrada e Saída

Cada um dos 14 pinos digitais do Duemilanove pode ser usado como entrada ou saída usando as funções de pinMode(), digitalWrite(), e digitalRead(). Eles operam com 5 volts. Cada pino pode fornecer ou receber um máximo de 40 mA e tem um resistor pull-up interno (desconectado por padrão) de 20-50 kOhms. Além disso, alguns pinos têm funções especializadas:
  • Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL. Estes pinos são conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL.
  • External Interrupts: 2 and 3. Estes pinos podem ser configurados para disparar uma interrupção por um baixo valor, uma elevação ou falling edge ou uma mudança de valor. Veja a função attachInterrupt() para mais detalhes.
  • PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma saída analógica PWM de 8-bit com a função  analogWrite().
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunicação SPI, que embora compatível com o hardware, não está incluída na linguagem do Arduino.
  • LED: 13. Há um LED já montado e conectado ao pino digital 13. Quando o pino está no valor HIGH, o LED acende; quando o valor está em LOW, ele apaga.
O Duemilanove tem 6 entradas analógicas e cada uma delas tem uma resolução de 10 bits (i.e. 1024 valores diferentes). Por padrão, elas medem de 0 a 5 volts, embora seja possível mudar o limite superior usando o pino AREF e um pouco de código de baixo nível. Adicionalmente alguns pinos têm funcionalidades especializadas:
  • I2C: 4 (SDA) and 5 (SCL). Suportam comunicação I2C (TWI) usando a biblioteca Wire (documentação no site do WIRE).
Há ainda alguns outros pinos na placa:
  • AREF. Referência de voltagem para entradas analógicas. Usados com analogReference().
  • Reset. Envie o valor LOW para resetar o microcontrolador. Tipicamente utilizados para adicionar um botão de reset aos shields que bloqueiam o que há na placa.

Comunicação

Com o Arduino Duemilanove a comunicação com um computador, com outro Arduino ou com outros microcontroladores é muito simplificada. O ATmega328 permite comunicação serial no padrão UART TTL (5V), que está disponível nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta comunicação serial através do USB e os  drives FTDI (incluído no software do Arduino) fornece uma porta COM virtual para o software no computador. O software Arduino inclui um monitor serial que permite que dados simples de texto sejam enviados à placa Arduino. Os LEDs RX e TX da placa piscam quando os dados estão sendo transferidos ao computador pelo chip FTDI e a conexão USB (mas não quando há comunicação serial pelos pinos 0 e 1).
A biblioteca SoftwareSerial permite comunicação serial por quaisquer dos pinos digitais do Duemilanove.
O ATmega328 também oferece suporte aos padrões de comunicação I2C (TWI) e SPI. O software do Arduino inclui uma  biblioteca Wire para simplificar o uso do bus I2C; veja a documentação no site do Wiring para mais detalhes. Para usar a comunicação SPI veja a folha de informações do ATmega328.

Programação

O Arduino Duemilanove pode ser programado com o software Arduino (download). Para mais detalhes veja referência e tutoriais.
O ATmega328 no Arduino Duemilanove vem pré-gravado com um bootloader que permite enviar novos programas sem o uso de um programador de hardware externo. Ele se comunica utilizando o protocolo original STK500 (referência, C header files).
Você também pode programar o ATmega328 através do ICSP (In-Circuit Serial Programming) header; veja estas instruções para mais detalhes.

Reset automático (Software)

Algumas versões anteriores do Arduino requerem um reset físico (pressionando o botão de reset na placa) antes de carregar um sketch. O Arduino Duemilanove é projetado de modo a permitir que isto seja feito através do software que esteja rodando no computador conectado. Uma das linhas de controle de hardware (DTR) do FT232RL está conectada ao reset do ATmega328 via um capacitor de 100 nanofarads . Quando esta linha é resetada (ativo baixo) o sinal cai por tempo suficiente para resetar o chip. O software Arduino usa esta característica para permitir carregar o programa simplesmente pressionando o botão “upload” no ambiente Arduino. Isto significa que o “bootloader” pode ter um “timeout” mais curto, já que a ativação do DTR (sinal baixo) pode ser bem coordenada com o início do “upload”.
Esta configuração tem outras implicações. Quando o Duemilanove está conectado a um computador rodando Mac OS X ou Linux, ele reseta toda vez que a conexão é feita por software (via USB). No próximo meio segundo aproximadamente, o bootloader estará rodando no Duemilanove. Considerando que é programado para ignorar dados espúreos (i.e. qualquer coisa a não ser um “upload” de um novo código), ele interceptará os primeiros bytes de dados sendo enviados para a placa depois que a conexão é aberta. Se um “sketch” rodando na placa recebe configuração de uma vez ou outros dados ao inicializar, assegure-se que o software que esteja comunicando espere um segundo depois de aberta a conexão antes de enviar estes dados.
O Duemilanove tem uma trilha que pode ser cortada para desabilitar o auto-reset e pode ser ressoldada para reativá-lo. É chamada de “RESET-EN”. Você pode também desabilitar o auto-reset conectando um resistor de 110 ohms dos +5V até o sinal de reset; veja este fórum para detalhes.

Proteção contra sobrecorrente USB

O Arduino Duemilanove tem um polifusível resetável que protege a porta USB do seu computador contra curto-circuito e sobrecorrente. Apesar da maioria dos computadores possuírem proteção interna própria, o fusível proporciona uma proteção extra. Se mais de 500mA foram aplicados na porta USB, o fusível irá automaticamente interromper a conexão até que o curto ou a sobrecarga seja removida.

Características físicas

O comprimento e largura máximos do Duemilanove são 2,7″ (68,50 mm) e 2,1″ (53,34 mm) respectivamente, com o conector USB e o jack de alimentação indo um pouco além destas dimensões. Três furos de fixação permitem a  montagem da placa numa superfície ou caixa. Note que a distância entre os pinos de entrada e saída digitais nº 7 e nº 8 é de 160 mil (milésimos de polegada), não é sequer múltiplo do espaçamento de 100 mil dos outros pinos.

Um Pouco Sobre Porta Paralela.

•O que é a interface paralela?

•Quantas entradas e saídas ela possui?
•Construindo a interface.
•Manipulando no Pascal.

O QUE É A INTERFACE PARALELA?

Quando iniciamos o estudo da informática aprendemos que o computador possui saídas e entradas. A Porta Paralela nada mais é do que um dispositivo de entrada e saída paralelo. Oras, mas o que é paralelo?
Há duas formas de se transmitir dados. Uma delas é a forma serial.
Serial, como o cognato indica, é transmitir em série, ou seja, um bit após o outro. Transmitir de forma paralela é transmitir vários bits ao mesmo tempo.
Em uma primeira impressão, a transmissão paralela pode parecer a mais apropriada. Porém, devemos lembrar do conceito de multiplexação. Tal conceito, que no momento não precisa ser estudado a fundo, se baseia no fato de comutar vários bits de forma tão rápida que eles são transmitidos por um único fio, ou seja, de forma serial. Para quem tem raciocínio rápido, fica fácil compreender: pela forma serial a limitação de bits é dada pela velocidade com que transmissor e receptor se chaveiam, enquanto que na paralela, a limitação é física e dada pelo número de fios.
Endereços de entrada e saída

D7 ~ D0 Pinos de Dados (registo no endereço 0x378 para LPT1)
S7 ~ S3 Pinos de Estado (registo no endereço 0x379 para LPT1)
C3 ~ C0 Pinos de Controle (registo no endereço 0x37a para LPT1)

Aplicações da porta paralela

A porta paralela, por não possuir uma alta velocidade de transmissão, tem, atualmente, sua aplicação limitada a impressoras e scanners.
Atualmente, em caso de transmissões rápidas, se utiliza a interface USB (Universal Serial Bus), que atinge taxas de transmissão bem maiores.
Na Eletrônica, a porta paralela pode servir para controlar qualquer tipo de processo. Pode, por exemplo, fazer a interface entre o PC e um sensor. O sensor, ao ser acionado, mandaria tal informação para a porta paralela e o PC procederia ao disparo de sirenes, conectadas as saídas da porta paralela.
Devemos lembrar que a corrente de saída da porta paralela não é alta, sendo suficiente para, no máximo, acender LEDs. Para circuitos que necessitem de maior potência, devemos utilizar buffers ou amplificadores de correntes transistorizados.

Endereço de memória

A maioria dos PCs atuais possui uma porta paralela. Cada registrador desta porta paralela possui um endereço de memória. Por padrão, temos que:

Entrada: 379H
Saída: 378H

No caso de termos duas portas paralelas, teremos dois endereços de saída e dois endereços de entrada.

QUANTAS ENTRADAS E SAÍDAS ELA POSSUI?

Observe o esquema:

ENTRADA = Bits: D7 D6 D5 D4 D3 D2 D1 D0
SAÍDA = Bits: S7 S6 S5 S4 S3

Pois bem, tendo identificado os bits de saída/entrada, procederemos à idealização da Interface Didática.

A Interface Didática possui 5 bits de entrada e 8 bits de saída. Os bits de entrada são controlados por meio de chaves seletoras que estão conectadas ao terra (nível lógico 0) e ao VCC (nível lógico 1). Já os bits de saída terão como indicador um LED, que acenderá ao haver nível lógico 1 e ficará apagado ao haver nível lógico 0.

CONSTRUINDO A INTERFACE

Circuito de saída

O circuito de saída é composto por 8 leds, com corrente limitada por 8 resistores, que estarão dispostos da seguinte forma:

Um resistor na faixa de 180 a 560 é o suficiente para verificar o acendimento do LED. São necessários 8 resistores e 8 leds. O terminal mais comprido de cada LED deverá estar conectado ao pino 18, estando o menor conectado a um resistor e o resistor conectado à saída. Para saber quais são os pinos de saída, verifique o esquema na página anterior.

Circuito de entrada

O circuito de entrada é composto de cinco chaves. O terminal comum da chave (normalmente, o do meio) deve ser conectado a uma das entradas (verificar esquema) e qualquer um dos outros dois deve ser conectado ao terra. Quando a entrada estiver conectada ao terra teremos nível 0. Quando estiver em aberto, teremos nível 1.

MANIPULANDO NO PASCAL

Relembrando o que foi aprendido no início deste artigo:

Endereço Função

$378 Saída

$379 Entrada

Escrevendo para a saída

Não é possível simplesmente mudar o status de um dos bits de saída. É necessário enviar todo um byte (conjunto de 8 bits) para a saída. Suponhamos que, por exemplo, você queira que o bit D4 assuma nível 1, permanecendo os demais em nível 0.

Você deverá enviar o byte 00010000 (D7-D0), ou, em hexadecimal, $10. E se quiséssemos que D2 e D5 fiquem em nível alto? Devemos enviar 00100100, ou, em hexadecimal, $24.

No Pascal:

O Pascal possui uma array chamada port que lhe dá acesso direto as portas do computador. Assim sendo, podemos, por exemplo, usar:

Port[$378]:=$FF;

O dado (byte) a ser enviado deve ser, necessariamente, informado em hexadecimal. Caso você queira enviar direto uma variável para a porta paralela, lembre-se que ela deve ser do tipo byte.

No Delphi:

O Delphi, infelizmente, não possui a array port. Porém, existem diversos componentes que fazem tal interface e ainda, é possível, fazê-la por meio de instruções em ASM, supondo que a variável b (de tipo byte) contenha o dado a ser enviado:

asm

mov dx,$378

mov al,b

out dx,al

end;

Lendo da porta paralela

O procedimento de leitura inclui um passo a mais. O mascaramento. Pois bem, suponhamos que queremos criar um sistema que lê a porta paralela e emite um beep caso o bit S3 esteja acionado.

Simplesmente comparar se a entrada vale $08 não é o suficiente pelo simples fato de que a entrada só assumirá tal valor caso APENAS S3 esteja acionado. Como proceder, então?

Basta utilizarmos o mascaramento com a função lógica AND (A AND B será 1 caso A e B sejam 1). Observe:

Bit de exemplo 01001010

$08 00001000

Resultado: 00001000


Assim sendo, temos, em Pascal:

B:=Port[$379];

If (B AND $04 = $04) then ...

E, na variável B (do tipo byte), teremos o valor lido.

E em Delphi, utilizando ASM:

asm

mov dx, PortaLpt

in al,dx

mov dado,al

end;

if (dado AND $04 = $04) then ...

E teremos, na variável dado (do tipo byte), o valor lido.


Enfim Esta postagem Foi retirada do Site do amigo "Rogério" mais Um Gênio que faz do seu tempo livre, um complemento para ensinar.

Att. Marcelo Bacana.

Agradecimentos!

Este Espaço é cada vez mais apreciado pois tenho como expressar um sonho de Multiplicador:

E Hoje vou Relembrar de Pessoas que Fazem parte deste Grupo tão seleto.

Ressalto que os nomes não sitados estão também guardados dentro do meu coração.
 Conforme as pessoas forem postando irei colocar um OK.
Antonio Carvalheira.
Thiago Weniskley. ok
Magoo.
Charles Anderson.
L.F.Lobo.
L.Bicudo.
Ricardinho.
Fábio Miserável.
Rafael Escada.
Paulo Boi.
Ricardo Infante.
Amigos CC Bom Jesus.
Chiquinho.
Richard Pelegão.
Gean.
L. Madeira.
Márcio.
F. Lima.
C. Bruno.
Dowglas.
Falcão.
Prof.res. e amigos UNOPAR.
Dijair Ogaya.
Marcelo Rossa.
Davi.
Sandro Cubo.
Gerard.
Miltom.
Adalberto.
Elefante.
Odilio.
Pascoal.
W. Jaques.
Robson Inácio.
Alex Lima Silva. ok
Márcio cabeça.
Pé de Frango.
Helias.
Welington Cortes.
Luiz aroldo.
Mioto.
Carlos Alberto Ventura.
valter viana.
Wilian Marinho.
Zanett.
P. Torraque.
Amigos da Cervejaria Itaipava Teresópolis.
E todos que passaram por minha Vida; Que de uma maneira ou de outra Ajudaram em meu Conhecimento, e Formaram à minha Personalidade.

"Um Agradecimento Especial á minha Família, Mãe Pai e a Minha Lindinha (Querida Esposa) pela Paciência e Pelo Amor durante esses 16 anos Juntos."

segunda-feira, 23 de agosto de 2010

Controlar Um Servo motor de Parabólica Com Arduino.

Em uma de minhas andanças pela internet, encontrei o site de um amigo (Jeronimo Avelar Filho),
http://blogdoje.com.br/2008/11/07/controlando-motor-servo-de-parabolica-com-arduino/ que serviu de inspiração para que publicasse este post. (Afinal pra quê reinventar a roda! rsrsrsrs.)
 
Software

Um dos motores servos mais baratos encontrados no mercado é o “motorzinho azul de parabólica.”. Ele possui curso de 0 a 180 graus e é usado para movimentar o elemento receptor da uma antena parabólica .É facilmente encontrado, com preços entre R$15,00 e R$ 20,00 reais, em lojas de eletronica ou especializadas em sistemas de tv por satelite


Como é comum a todos os servos este motor possui três fios: preto para o terra , vermelho para a tensão de alimentação e branco ou azul para o sinal de controle . Este sinal de controle determina o ângulo de giro do motor através da largura do pulso enviado ao motor. O sinal de controle é facilmente gerado por um microcontrolador através de uma saida PWM e no caso do Arduino, podemos gerar este sinal através de uma aplicação simule o pwm atraves de mudanças no estado do pino de saida ou usar uma biblioteca já pronta e atualmente disponível no ambiente de desenvolvimento do Arduino versão 0012.

Para testar a biblioteca e o motor liguei o fio branco de controle do motor servo ao pino 10 do Arduino .

O programa de exemplo abaixo utiliza a porta serial emulada através da conexão USB para enviar um menu com as opções de angulo de giro do motor e aguarda o recebimento da opção através da porta serial. Ao receber uma opção válida , o programa faz o motor servo se posicionar de 0 a 180 graus de acordo com a opção que houver sido selecionada a partir do menu .

O programa é muito simples e merecem atenção as instruções servo.attach e servo.write . A função servo.attach função pode ser usada em sua forma mais simples que especifica apenas o pino no qual o servo está ligado e usados os valores defaut para o tempo mínimo e máximo do pulso ( 544 e 2400 microsegundos respectivamente) ou então pode ter também passados os este valores como parâmetros da função. O objetivo de passar estes valores é propiciar um ajuste fino para o motor servo que se está utilizando. No caso do motor servo de parabólica, eu utilizei os valores de x e y nos quais os motor se posicionou de forma mais precisa nos referenciais de 0 e 180 graus . Pra fazer o servo girar para um determinado angulo é utilizada a função nome_do_servo.write(angulo) como no exemplo abaixo.

Servo myservo ;
int led = 13 ;
int flag = 0 ;
int i ;
int char_in ;
void setup()
{
Serial.begin(9600) ;
pinMode(led , OUTPUT) ;
myservo.attach(10,880,2300) ;
colocaMenu() ;
}
//
...
...
//
case '1':
myservo.write(0) ;
Serial.println("Posicionado em 0 graus") ;
break;

Este motor servo de parabólica não possui um torque muito elevado e é preciso avaliar o que se vai movimentar com ele já que todas as suas partes são em plástico. Um detalhe importante é que a peça abaixo ligada ao eixo do motor é projetada para utilização na antena parabólica e é necessário adaptar ou construir uma peça de plástico para um formato mais adequado a utilização final no seu projeto .



Este motor internamente possui uma trava mecânica e se for enviado para ele um pulso maior que o máximo suportado, ele ficará batendo contra esta trava e poderá ser danificado .

Internamente o motorzinho possui um circuito de controle com um potenciómetro ligado ao eixo de movimentação, que identifica se o eixo está no ângulo correto .


Existem diversos outros servos que podem ser utilizados principalmente os usados em aeromodelos. Estes servos estao disponiveis em diversos modelos e tamanhos com torques maiores e acabamentos em metal , proporcionando maior controle na movimentação e resistencia ao desgaste das peças , pas para começar a brincar e fazer algum projeto que não necessite de componentes com maior precisão , este motorzinho de parabólica é uma mão na roda .

Programa para teste do Servo :
#include <Servo.h>


Servo myservo ;

int led = 13 ;

int flag = 0 ;

int i ;

int char_in ;



void setup()

{

Serial.begin(9600) ;

pinMode(led , OUTPUT) ;

myservo.attach(8,880,2300) ;

colocaMenu() ;

}



void loop()

{

//piscaled() ;

if(Serial.available() > 0 ) {

char_in = Serial.read() ;

if(char_in != -1) {

Serial.println(char_in,BYTE) ;

piscaled() ;

switch (char_in) {

case '1':

myservo.write(0) ;

Serial.println("Posicionado em 0 graus") ;

break;

case '2':

Serial.println("Posicionado em 45 graus") ;

myservo.write(45) ;

break;

case '3':

Serial.println("Posicionado em 90 graus") ;

myservo.write(90) ;

break;

case '4':

Serial.println("Posicionado em 135 graus") ;

myservo.write(135) ;

break;

case '5':

Serial.println("Posicionado em 180 graus") ;

myservo.write(180) ;

break;

//case '6':

//Serial.println("Posicionado em 225 graus") ;

//myservo.write(225) ;

//break;

//case '7':

//Serial.println("Posicionado em 270 graus") ;

//myservo.write(270) ;

//break;

default :

Serial.println("Opcao Invalida") ;

break;

}

}



}

}



void colocaMenu() {

Serial.println("Teste de motor servo") ;

Serial.println("Selecione :") ;

Serial.println("1 - Posicionar em 0 graus") ;

Serial.println("2 - Posicionar em 45 graus") ;

Serial.println("3 - Posicionar em 90 graus") ;

Serial.println("4 - Posicionar em 135 graus") ;

Serial.println("5 - Posicionar em 180 graus") ;

Serial.println("6 - Posicionar em 225 graus") ;

Serial.println("7 - Posicionar em 270 graus") ;

Serial.println("Opcao ? ") ;

}



void piscaled() {

if( flag==0) {

digitalWrite(led,HIGH) ;

flag =1 ;

} else {

digitalWrite(led,LOW) ;

flag =0 ;

}

}


 
Em fim meus caros; Espero que estejam gostando!
o código pronto para teste está no linck abaixo,
link Programa controle servo pronto P/Transferir arduino.pde

Existe uma interface feita em C# que pode ser utilizada com este programa:

É bem simples e intuitiva, basta selecionar a porta (em minha máquina = 9)
a velocidade (9600).
click em "start"
após establizar a conecção, digitar o comando e enviar para que o servo se posicione.
vejam as figuras a seguir:









Viu para teste este projeto ajuda bastante!
eis o link para baixar:

easy talk compilado ( .exe )

easy talk compilado (.zip)

Façam comentários pois o termômetro deste site são vocês!
Neste site nada é proibido! Toda sugestão será bem vinda!
agora vou dormir um pouco...

Att.: Marcelo Bacana.

Arduino 2009 Primeira Impressão...

Graças a este vídeo que encontrei no site do meu Amigo Ricardo Dias, Podemos conhecer um pouco mais do Arduino 2009.(Click na imagem e confira!)

Início de Tudo!

Hoje Estou escrevendo o meu Primeiro Post, Estou muito feliz em poder compartilhar Informações.
Tentarei Abordar todo tipo de informação, Espero os comentários para que possamos, desenvolver um trabalho consciente.

Acabei de comprar minha primeira placa Arduino 2009, em breve estarei postando meus projetos com esta placa.
Gostaria de agradecer de coração ao meu amigo criador do site arduinobrasil.blogspot.com que com suas dicas, me ajudou ha fazer este espaço.
Agradeço também a minha "Lindinha" e a todos os amigos, que de uma maneira ou de outra, fazem parte deste trabalho e de minha vida!

Até Marcelo Bacana.