segunda-feira, abril 09, 2012

Interruptor Touch - Diagrama e código fonte

Depois de muitas perguntas no post anterior (leia o post anterior primeiro), fiz um diagrama do circuito do interruptor touch, estou postando também o código fonte.
Para montar este projeto, você precisa de conhecimentos básicos de Arduino e conhecimento médio em eletrônica, além de muito cuidado com a corrente AC, por isso aqui vai uma aviso inicial:

Atenção: Esse projeto é perigoso, usa corrente AC, qualquer falta de cuidado pode matar. Se você nunca mexeu com corrente AC antes, solicite o acompanhamento de um profissional.

Agora podemos ir a lista de componentes:

- Arduino, pode ser qualquer um, mas se for colocado dentro da tomada, use um Arduino Pro Mini ou outro Arduino pequeno.
- Resistor de 330 ohms
- Resistor de 1k
- Led Branco de alto brilho (ou outra cor que desejar)
- Transistor BC548 ou 2N2222
- Diodo 1N4004
- Relé 5v
- 10 resistores de 1M



Para a montagem não é necessário placa, você pode soldar um componente ao outro e usar termoretrátil para isolar (veja no post anterior).

O relé tem que ser escolhido de acordo com a potência da lâmpada e da voltagem da região onde você mora, na dúvida pergunte a um técnico. Onde diz "fios da lâmpada" são os dois fios anteriormente ligados ao interruptor normal, essa parte foi baseada neste post: Using relays with Arduino - leia antes de continuar.

O pedaço de metal que funciona como sensor pode ser até aquele lacre de lata de nescau/neston. Papel alumínio não funciona muito bem.

O resitor do touch, varia de 1M a 10M por isso coloquei na lista para que se compre 10 de 1M, você vai precisar testar esse valor no seu circuito, ele varia de acordo com o tamanho do metal do sensor, espessura do vidro e outros. Conforme testei, valores acima de 10M tornam o sensor "lento" ele demora a detectar o toque, mas isso pode variar de projeto pra projeto. Mais explicações na página do CapSense


Código fonte:

O código é Arduino 0022, não sei se funciona na IDE nova. A lib está no link CapSense acima.

#include

const int lampada = 8; //circuito do rele
const int led = 10; //led indicador do interruptor
const int cap1 = 4;
const int cap2 = 2;
const int ledL = 1; // valor PWM minimo para o led quando a lampada estiver desligada
const int sensibil = 5000;  //varia de acordo com o resistor e tamanho da superficie capacitiva, mude para testar.

CapSense   cs = CapSense(cap1,cap2);    

bool ligado = 0;

void setup()                   
{
  cs.set_CS_AutocaL_Millis( 0xFFFFFFFF);  

  pinMode(lampada, OUTPUT); 
  pinMode(led, OUTPUT);
  analogWrite(led, ledL);
}

void loop()                   
{
  long cap =  cs.capSense(30); //chama a funcao que le a capacitancia...

  if (cap > sensibil ) //...se for maior que o estipulado, acende ou apaga a luz,
  {
    if (ligado)
    {
      ligado = !ligado;
      digitalWrite(lampada, ligado);
      for (int i = 255; i > ledL; i--)  //laco for para diminuir a luminosidade do led gradativamente. Durante este período (2seg) a cap sense nao eh chamada, o que garante que a lampada nao piscara e apagara novamente. O mesmo vale para o outro for.
      {
        analogWrite(led, i);
        delay(5);
      }
    }
    else
    {
      ligado = !ligado;
      digitalWrite(lampada, ligado);
      for (int i = ledL; i < 255; i++)
      {
        analogWrite(led, i);
        delay(5);
      }
    }
  }       
}

É isso, qualquer pergunta usem os comentários.

quarta-feira, outubro 12, 2011

Interruptor "touch" com Arduino Pro Mini

 O interruptor da lâmpada do quarto estava indo... já não funcionava mais como deveria. Decidi que poderia tentar fazer um interruptor touch, usando um Arduino Pro Mini  e a lib CapSense.
Depois de montar um protótipo com um vidro de porta-retrato e ver realmente que seria funcional, resolvi fazer.

Usei um vidro fumê de 15x10 com as bordas arredondadas como "espelho", colei um vinil preto (tipo contact) e com um compasso de corte, fiz um círculo no vinil para ficar com uma faixa vazada por onde passa a luz de um led.
O sensor propriamente dito é um círculo de alumínio colado atrás do vinil, e a parte que "faz funcionar" são algumas linhas de código...
É um interruptor com firmware e que pode ter funcionalidades ampliadas com um upload de software, legal né? Futuramente posso programar uma função para desligar após certo tempo... e outras idéias mirabolantes que possam surgir.

=)


Vidro fumê 10x15 4mm, com as bordas arredondadas

Vinil/contact preto colado no vidro. Foi usado um secador de cabelo para esquentar o vinil e não deixar bolhas.

Dois cortes em forma de círculo para fazer um buraco...


... para passar a luz do led.

Aparência final do vidro com o vinil/contact por baixo.

 Esse é o sensor, um pedaço de alumínio de lata de nescau.

Essa é a parte de tras do "interruptor". O círculo de alumínio está colado atras do círculo de vinil/contact para ficar escondido. Esse fio branco está soldado na plaquinha de alumínio e a outra ponta vai para o Arduino.
É este círculo de alumínio que faz o Arduino "sentir" que tem um dedo do outro lado do vidro, por isso que basta encostar no vidro para a lâmpada acender.

Testando se tudo funciona em uma protoboard



...

 O cone é para a luz do led sair somente pelo vidro e não iluminar o interior da tomada.

Tudo pronto e...

... empacotado para ir para o lugar.

Montando...

... e colando com fita dupla face 3M.
Essa luminosidade do led é quando a luz está acesa.
Quando a lâmpada está apagada, o led emite uma luz bem fraca, mas suficiente para ver onde está o interruptor à noite.


Segue 2 vídeos...





 
 
Quanto à parte técnica, usei isso para o relé, só troquei o transistor 2N2222 por um BC548 (tem funcionado bem). E o código, usei o exemplo da lib CapSense como base e fiz as modificações necessárias para usar o led e determinar o funcionamento como se fosse um interruptor. 
 
Edição 11/08/2012:

domingo, agosto 14, 2011

CNC

Bom, depois de mais de 2 anos projetando, comprando peças, montando e discutindo, hoje o CNC fez a primeira peça.
Foi feito em alumínio, pode usinar uma peça de 1200mm x 650mm x 130mm, o software de controle é o EMC2 que roda sobre um Ubuntu 10.04 LTS.
Por enquanto segue um vídeo:
O som na realidade é menos irritante que no vídeo ^^




domingo, julho 26, 2009

Arduino Board

A plaquinha Italiana

(Este post estava esquecido em rascunho fazia muito tempo, arrumei ele um pouco e está aqui)

Certa vez, "boiando" pela internet, cai num site de uma plaquinha italiana chamada Arduino...

Bom, pra que não sabe, "O Arduino é uma plataforma de prototipagem eletrônica open-source que se baseia em hardware e software flexíveis e fáceis de usar" (retirado do site oficial).

Com ele dá pra fazer um monte de coisa, o que "der na telha"... Tem entradas/saídas digitais; entradas analógicas com 1024 níveis; saídas PWM com 256 níveis; 8k, 16k ou mais de memória (7k e 14k com o bootloader). Só usar a criatividade.

Na verdade é um microcontrolador que pode ser programado facilmente por um ambiente em java, usando uma linguagem que parece com o C e que o programa é gravado no microprocessador por uma conexão USB ou serial (pluga a placa no pc e grava o programa).

Me interessei mais ainda... já que desisti depois de várias tentativas frustradas de tentar gravar um PIC (com certeza o problema era eu e não o PIC).

Pronto. Decidi que tinha que testar uma dessas.

Bom, você pode comprar uma placa pronta (original U$30,00 + frete) ou fazer como eu, comprar os componentes e ficar louco montando montar uma Single-Sided Serial Board ou Severino.


Fazendo uma

Primeiro baixei o Manual do Arduino Severino

Depois fui procurar por componentes... (isso foi quase à 2 anos... em outubro/2009)
O microprocessador que eu comprei foi o Atmega168 (mas pode ser o Atmega8 também) desse site http://shop.moderndevice.com/products/atmega168
Comprei 3 pra garantir certo grau de "desastrabilidade" de minha parte, eles já vem com o bootloader do Arduino (bootloader Diecimila) gravado (19,40 dólares com o frete e chegou em 12 dias). Dá pra comprar sem o bootloader mas dai tem que gravar ele com um gravador de AVR ou com uma gambia que vai conectada na porta paralela (não sei onde vi, mas nao encontrei mais pra colocar aqui)
O resto das peças encontrei em uma eletrônica aqui da minha cidade e em placas velhas.

Na página 10 do manual do Severino tem o circuito pronto pra ser impresso, com as dimensões corretas. Pensei em serigrafar e depois corroer, mas lembrei de uma técnica que me falaram uma vez... "Googlei" um pouco e fiz. Consiste em imprimir o circuito com uma impressora a laser, virar o lado impresso para a placa e passar o ferro-de-passar encima do papel até que o toner grude na parte cobreada. Depois de algumas tentativas consegui que a ficasse poucas trilhas pra arrumar com uma caneta de escrever em CD.
Cortei "porcamente" a placa com a micro-retífica (Dremel) e coloquei pra corroer no percloreto que estava guardado fazia uns 5 anos... o que era pra demorar uns 20 minutos no máximo, levou umas 3 horas, mas deu certo.
Depois de corroído cortei a placa bem retinha e usei a técnica do ferro na parte de cima, com o segundo desenho da página 10 do manual...
Furei com uma broca da micro-retífica e pronto.

Soldei tudo no lugar e liguei. Com o bootloader Diecimila gravado, o Led13 da placa pisca uma vez a cada 2 segundos... belezaaaaaa piscava assim =D

Placa pronta


O Software pra gravar

Coloquei um jumper no JP4 (Auto Reset) e outro no JP0 na posição 2-3 (Serial Enable) e pluguei na porta serial...

Uso Kubuntu (usava, agora uso Ubuntu mesmo) no meu computador, então baixei o Arduino 0017 Linux(32bit) daqui http://arduino.cc/en/Main/Software(agora tem o 0022)

Li no Tutorial de Instalação do Arduino no Linux que era pra instalar o gcc-avr e o avr-libc
(Lá pede o Java, mas eu já tinha)

executei:
sudo apt-get install gcc-avr avr-libc

Descompactei o Arduino 0017 e executei pelo terminal ./arduino

Interface do ambiente de desenvolvimento

Abri um exemplo de sketch (chamam assim os programas) em File > Sketchbook > Examples > Digital > Blink, que faz o Led13 da ficar em loop ligado 1 segundo e desligado 1 segundo.
Selecionei em Tools > Serial Port, a porta certa e em Tools > Board > Arduino Diecimila...

Cliquei em (já empolgado) Upload to I/O Board e...

E apareceram esses erros:

avrdude: stk500_getsync(): not in sync: resp=0x30
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Depois de muito procurar o que era (na internet não tem nada de concreto) peguei o multímetro e comecei a testar o cabo serial, as trilhas e tudo. Baseado na ideia que o TX não estava funcionando achei um maldido pedacinho da trilha do RX que corroeu e deixou uma fresta que nem dava pra ver direito, coloquei um pouco de solda encima e liguei denovo. Funcionou, "upou" o sketch e o Led13 comecou a piscar de acordo com o programa.


O Arduino de verdade mesmo
...

Finalmente resolvi comprar um Arduino original, comprei do mesmo site onde comprei os microprocessadores http://www.moderndevice.com

Placa Arduino Duemilanove, tem até o mapa da Itália no verso.


Ultimamente comprei muita coisa relacionada ao Arduino e afins no sparkfun.com

domingo, janeiro 13, 2008

Joystick - Esquema elétrico

À pedidos, tá ae o esquema elétrico do joystick de volante.
Muito atrasado mas tá feito...



Explicações: Os resistores variáveis talvez precisam que seja trocada a combinação dos fios, mas isso pode ser testado na hora. O resistor variável do acelerador precisa do interruptor para inverter o curso dele, alguns jogos "entendem" ao contrário, não se sabe a causa disso, mas o interruptor resolve.


Explicações: As 8 bolinhas do desenho acima representam as trilhas que vão conectadas naquela "membrana" do teclado, são dois plásticos com trilhas, um encima outro embaixo, observe bem e conecte trilhas de uma das membranas nas primeiras 4 bolinhas e de outra membrana nas outras 4 bolinhas. Tenha cuidado pra que as teclas usadas nas trilhas sejam "válidas", de preferência que sejam letras, números ou acentos. Teclas como Num Lock, Print Screen, F1 até F12 e outras não funcionam direito em alguns jogos.
"btnX" no desenho acima podem ser usado pra outras funções, alias, qualquer tecla no desenho acima pode ser usada pra qualquer função, use a criatividade...

Não é complicado né? os esquemas são bem simples, e estão exatamente como foram feitos. Alias, primeiro se faz... depois se projeta o que foi feito... sauhuhsauhshusuhshua

=D

domingo, agosto 26, 2007

GoE - Gambia over Ethernet

Antes de começar leia isso:

O Power over Ethernet (PoE) transmite até 15W pelo cabo de rede, tem até um padrão que regulamenta isso, o IEEE 802.3af, os aparelhos que suportam esse padrão injetam/recebem energia nos dois pares 1-2 e 3-6, que são utilizados também pra transmitir dados. O uso dos pares de dados 1-2 e 3-6 permite o uso do PoE em redes giga.

http://www.linuxmall.com.br/index.php?product_id=3141

Agora a coisa(!) feita:
(não... eu não fiz um PoE de verdade)

Durante uma aula (não vou falar que disciplina foi...) desenhei isso ai embaixo (não tente entender a letra). Ele (a coisa) transmite energia pelo cabo de rede que nem o PoE explicado no começo do post, só que usa os pares 4-5 e 7-8, que normalmente em redes 10/100 não são usados.

O princípio é simples, 2 conectores emenda de cabo de rede, com os fios dos pares 4-5 e 7-8. Um deles ligado no transformador do aparelho, e outro com os mesmos fios só que ligados no conector do aparelho a ser alimentado, os pares dos dados seguem seu caminho normalmente...

Isso serviu para colocar um ponto de acesso sem ter uma tomada perto dele e também sem passar um cabo de energia junto com o cabo de rede, aproveitando assim a mesma tomada de onde o hub estava, passando a energia pelo mesmo cabo dos dados.




Os conectores emenda utilizados:



Abrindo eles pra mexer:



Destacando os pares 4-5 (positivo) e 7-8 (negativo) para a energia, os pares 1-2 e 3-6 continuam no lugar para os dados. Quem for fazer, cuidado para não inverter os pares ou fazer o cabo de rede com alguns fios no lugar errado. Se o cabo for crossover ( em uma das pontas troca-se o 1 com o 3 e o 2 com o 6) não tem problema, pode ser usado também.



O transformador do ponto de acesso. A parte do conector fica junto com o aparelho e a parte do transformador fica na mesma tomada que o hub.



Todo o conjunto ainda não soldado.



Juntando os fios.




Pronto, só conectar os cabos de rede e tá feito. Desenhei de que lado vem a energia e que lado sai/entra só os dados, e ainda coloquei o nome GoE (Gambia over Ethernet).



Funcionando. Olha as luzinhas ligadas...



=D

domingo, julho 29, 2007

Gambiarras de férias [Parte 2 - Relógio diferente]

Continuando... a segunda "gambia" das férias do meio do ano.

A idéia veio de um francês que fez um relógio assim também, mas muito mais "bonito"... só não lembro o site onde tinha, se lembrar ou alguem souber me avise que eu coloco o link aqui.

Depois de ver o relógio na internet, pensamos em fazer um com imãs e CDs...

Primeiro precisa-se de uma "máquina" de relógio:



2 CDs:



2 rolamentos velhos de skate ou bicicleta:



2 imãs, os ponteiros do relógio e o primeiro problema... os minutos TEM que ser o ponteiro menor, se não ele iria "atropelar" o ponteiro das horas (tem uma maneira de resolver isso mas é praticamente inviável neste caso):



Colando os imãs nos ponteiros:



Fixando o relógio em um dos CDs, o ponteiro menor é os minutos e o maior as horas:



Cortando os espaçadores para fixar o segundo CD encima do primeiro, qualquer cano serve, desde que seja cortado do tamanho exato pra que os imãs não raspem na parte de trás do segundo CD:



Espaçadores prontos:



Colando:



Pronto. Perceba que os imãs seguram os rolamentos do outro lado do CD, conforme o relógio vai se movendo os rolamentos vão junto:



Ali é 14 horas e uns 2 minutos...
O rolamento externo é as horas e o rolamento interno é os minutos.


Já faz mais de um mês que o relógio tá funcionando, e de tanto os rolamentos andarem, o CD já está desgastando por onde eles passam.

=D

Gambiarras de férias [Parte 1 - OdôCalc]

As férias do meio do ano serviram pra fazer (ou só pra postar o que tava feito =P ), vamos à primeira gambiarra, o Odômetro com Calculadora pra Bicicleta, batizado de OdôCalc.

"Quanto quilometros será que eu andei de bicicleta hoje?"
"SDS (Só Deus sabe)..."

Bom, primeiro junte os materiais, precisa de:
- 1 calculadora
- 1 sensor de alarme, aqueles que funcionam com imã.
- 1 imã de HD de preferência (substituindo o original que vem com o sensor)
- 1 metro de fio (pode ser de cabo de rede, usa um par)
- fita adesiva ou abraçadeira

pra fazer, você também vai precisar de soldador (aqueles pra componentes eletrônicos) e solda.

A idéia é fazer um interruptor (sensor de alarme) paralelo ao botão de = (igual) da calculadora. Para isso procure as trilhas do botão de igual para soldar o par de fios:



Fios soldados na placa da calculadora. Ali eu coloquei um conector, mas pode ser ligado diretamente também:





Os dois conectores. Se você dar um "curto" neles, é o mesmo que apertar o botão de igual:



Soldando o conector:




Pronto (a parte da calculadora =P )



Agora soldando o sensor. O sensor é ativado quando um imã passa na frente dele, e é ele que vai "apertar" (essa foi feia) o botão de igual cada vez que a roda da bicicleta girar.




Prendendo o par de fios e o sensor no garfo da bicicleta:






Agora o imã de HD. Foi usado um imã de HD porque o que vem com o sensor é meio fraquinho, e tem que por muito perto um do outro pra não falhar quando tá rápido:



Imã preso com arame na roda. O imã tem que passar bem na frente do sensor cada vez que a roda girar:



Calculadora grudada com fita:



Pronto, agora é só você medir o diâmetro perímetro do pneu da bicicleta, no meu caso tinha 2,04m. Digite o diâmetro perímetro na calculadora pressione + e depois = (1 vez) as próximas vezes que o sensor fechar curto, a calculadora vai somar o diâmetro perímetro que você digitou... e assim sucessivamente a cada volta que a roda fizer.

E como sempre um videozinho pra provar que funciona:





=D

À pedidos, daqui uns dias vou postar o esquema elétrico com as conexões do joystick, é só terminar de desenhar.