Por um Tibet livre!

Sempre digo a todos que uma das piores situações que podem ocorrer com as pessoas é simplesmente não ter opção. Imagine que, durante o seu almoço, só existisse um único restaurante e sempre você teria que comer a mesma comida. Ou ter que ouvir somente um tipo de música, independente do seu gosto…

Quando uma política opressora é imposta sobre o povo e ele não tem escolha, o que resta da sua liberdade?

Escape from Tibet from 2470media on Vimeo.

In 1995, photographer Manuel Bauer accompanies six-year-old Yangdol and her father on their spectacular escape from Tibet across the Himalayas – first to Nepal, then to India, where the Dalai Lama lives in his exile.

www.manuelbauer.ch
www.2470media.com

Seja solidário com o Tibet

O que motiva você?

Esse é um trabalho bem antigo, mas nem todos tiveram a oportunidade de vê-lo. Em tempos de capacitação e cursinhos motivadores de mentes fracas é especialmente importante pensar não no óbvio, mas na disruptura do processo. O óbvio pode funcionar para uma classe de funcionários, mas se você deseja mais, pense na diferença… o óbvio, gritar três vezes gritos de guerra e toda essa ladainha que inventaram para ganhar dinheiro, funciona com mentes sugestionadas pela PNL barata… Desculpe-me se você acredita nisso.

Eu acredito em pessoas e bom senso!

Daniel Pink é um cara que tem idéias interessantes e o trabalho desenvolvido pela RSAnimate foi muito bacana!

Veja mais em:

RSAnimate – TheRSA.org

Dan Pink

Sistema Nacional de Identificação Automática de Veículos (Siniav) – O Grande Irmão?

Recentemente foram divulgados vários casos de empresas fabricantes de telefones que colhiam dados de usuários, teoricamente, para alimentar seus “serviços” e melhor atuar junto aos seus clientes.

O último caso divulgado e notoriamente público é o de Malte Spitz, um alemão que resolveu questionar à sua operadora de telefonia móvel que dados ela possuia a respeito dele. Veja:

Mas esse problema inclui uma norma da União Européia, chamada Norma de Retenção de Dados. E aqui entram os governos!

Seu governo pode não estar “cuidando” de você, mas o observando!

Agora, no Brasil, o Conselho Nacional de Trânsito publicou uma resolução que cria o Sistema Nacional de Identificação Automática de Veículos (Siniav), um sistema composto por um identificador (chip) instalado em cada veículo, antenas, e sistemas informatizados que poderão ler os dados do seu identificador e saber, porvavelmente em tempo real, se seu IPVA está vencido ou não…

Ou quem sabe… Há um ditado popular que “Deus vê tudo!”. Na linguagem técnica, traduzimos por d=v.t, ou seja, distância é igual à velocidade multiplicada pelo tempo. Física de segundo grau.

Passe entre duas antenas, quanto é sabida a distância e a velocidade máxima do trecho, e você terá MULTAS!!! Sim… e sem radares ou policiais para fiscalizar. Se uma determinada distância, à velocidade máxima, deve ser cumprida em um tempo de 6 minutos, por exemplo, no momento em que você passar abaixo do tempo estabelecido, significa que apertou demais o pedal do acelerador e trafegou acima da velocidade permitida.

Isso me lembra as histórias que meus pais contavam sobre o início das viagens ao litoral norte gaúcho, quando o controle era feito por postos de vigilância, onde deveriam ser carimbados os tempos de passagem. Assim, as pessoas passavam no primeiro posto, pegavam o carimbo, corriam feito doidas (para a época, claro…) pela estrada, paravam para comer sonho e rapadura em Santo Antônio da Patrulha e “ajustar” o tempo a fim de não passarem abaixo do tempo estabelecido no próximo ponto de controle.

Agora, o sistema será capaz de mostrar com relativa precisão onde você está, a qual velocidade média provavelmente está trafegando, se pagou IPVA, se tem multas, verificar qual o posto de polícia mais próximo para te parar… e sabe lá o que mais, tudo sem GPS!

A criatividade é o limite.

Malte Spitz conseguiu saber seus dados com tanta precisão que é assustador. Veja o site em que seus dados estão publicados: Retenção de dados – Malte Spitz.

O Grande Irmão já está te espiando…

Arduino – vela eletrônica

No final do ano passado, meu filho apareceu em casa com uma “vela eletrônica” utilizada pela escola para fazer uma caminhada de Natal sem perigo de queimar os dedos das crianças.

Pois o projetinho da vez é a vela eletrônica! Analisando a bixinha, vemos um LED amarelo, encoberto por uma capinha plástica em formato de “chama”, que pisca de forma aleatória.

Então a lista de materiais é simples:

  • LED amarelo
  • resistor 330 ohms x 1/4w

Você pode utiliza os diagramas do Fritzing das montagens anteriores que utilizam LED´s.

Mostre-me o código:

const int ledAmarelo = 3; // define o pino do led (PWM)

void setup(){
  pinMode(ledAmarelo, OUTPUT); // seta o pino como saída
}

void loop(){
  randomSeed(millis());
  analogWrite(ledAmarelo, random(0,255));
  delay(random(0,100));
}

O que há de novo?
O funcionamento é ligar o LED com uma intensidade aleatória e fazê-lo permanecer nesse estado por um tempo aleatório.

Temos duas funções: randomseed(), responsável por gerar uma raiz randômica e random(), responsável por gerar um valor aleatório, dentro da classe de valores mínimo e máximo fornecida.

Então,

Veja o exemplo:

Arduino candle from Rafael Donelli on Vimeo.

Arduino – pinos 0 e 1 – serial data RX / TX

No exemplo anterior haviam duas linhas comentadas que poderiam ser utilizadas para monitorar a taxa de leitura da porta analógica, enviando a leitura por comunicação serial.

Antes de iniciar seus projetos é importante conhecer a arquitetura e funcionamento do Arduino. Uma análise básica do funcionamento pode ser feita na descrição do hardware do Arduino Uno.

É importante mencionar que alguns pinos são utilizados por mais de uma função. É o caso dos pinos 0 e 1 do Arduino, que além de entrada/saída digital, são destinados para a comunicação serial de dados. Assim, quando você estiver utilizando comunicação serial esses pinos não poderão ser utilizados para outras funções.

No exemplo abaixo há um LED ligado no pino 1 (TX), que está associada ao led TX. O exemplo envia comuniação serial em um tempo determinado pela saída serial. Perceba o comportamento do LED ligado no pino 1 quando há comunicação: o led “TX” da placa pisca e no mesmo momento o LED do pino 1 sofre uma diminuição no brilho. Por isso não devemos utilizar os pinos destinados a comunicação, sob pena de que não tenhamos o resultado desejado.

Perceberam que meu exemplo na protoboard está mais limpo e organizado? Graças ao pessoal da loja do Lab de Garagem, que me enviou meu kit de jumpers de forma rápida e segura! Obrigado gurizada!

Arduino and serial data from Rafael Donelli on Vimeo.

IMPORTANTE: o Arduino faz um remapeamento dos pinos do microcontrolador ATMEGA, então todas as referências a pinos que você lê aqui são do Arduino! Se você quiser saber a correspondência de pinos relacionada ao controlador, consulte o Pin Mapping.

Links:
1. Lab de Garagem
2. Direto pra Loja do Lab de Garagem

Arduino – Mais exemplos…

DSC00541Small

Led´s são bacanas, mas apenas fazê-los piscar é chato!

Então, vamos utilizar um sensor para ler dados do ambiente, nesse caso um Light Dependent Resistor (LDR), ou resistor dependente de luz.

Um LDR é um sensor que aumenta ou diminui a resistência da corrente, de acordo com a luminosidade que inside sobre a superfície do compomente.

A idéia é que possamos controlar a intensidade de um LED de acordo com a leitura de luz que inside dobre o LDR, a exemplo do sensor de luminosidade dos teclados retroiluminados dos Mac´s ou de algumas telas de smartphones que vemos por aí.

Não se deixe enganar pela minha bagunça de fios nas imagens, pois a montagem é mais simples do que parece. Eu não tinha os fios adequados e fiz alguns jumpers (fios de ligação) com restos dos pares de fios de um cabo de rede e as experiências foram se sucedendo sem muito controle! :D

Você pode reproduzir esse experimento utilizando os seguintes componentes:

  • LED – 5mm
  • resistor 330Ω x 1/4 watt
  • resistor 10kΩx 1/4 watt
  • LDR 5mm

Monte o experimento de acordo com o seguinte esquema:

E utilize o código a seguir para controlar o LED de acordo com a intensidade de luz que inside sobre o LDR:

int lightSensor = 0; // sensor de luz LDR
int luz = 11; // saída digital
int rate = 0; // taxa de leitura analógica

void setup(){
  pinMode(luz, OUTPUT);
//  Serial.begin(9600);
}

void loop(){
  rate = analogRead(lightSensor);
  analogWrite(luz, map(rate,25,400,255,0));
//  Serial.println(rate);
}

O exemplo pode ser visto abaixo:

Arduino LDR Fade from Rafael Donelli on Vimeo.

Você deverá fazer alguns ajustes no seu programa dependendo da intensidade de luz existente no ambiente. Para isso explore a função map, realizando os ajustes necessários, ou substitua o valor do resistor ligado ao LDR.

Nesse exemplo há duas linhas comentadas que você pode descomentar e utilizar juntamente com o monitoramento serial. A linha Serial.begin(9600); dentro da função setup() é responsável por estabelecer a comuniação serial do Arduino e a função Serial.println(rate); da função loop() envia o valor da variável “rate” para a saída serial. Faça o upload do programa com as linhas descomentadas e habilite na IDE de programação o monitor serial utilizando CTRL+SHIFT+M ou através do menu Tools -> Serial monitor.

Assim você pode verificar a faixa de valores lida pelo LDR a fim de calibrar a função “map”.

Comentários das linhas de código:

1. “rate = analogRead(lightSensor);”
Essa linha é responsável por ler o valor do LDR, definido aqui pela variável “lightSensor”, que aponta a porta utilizada. A leitura analógica acontece em incrementos discretos, de 0 (0 volts) a 1023 (5 volts), ou seja, quando o valor retornado for 511 teremos aproximadamente 2,5 volts.
Mais sobre analogRead.

2. “analogWrite(luz, map(rate,25,400,255,0));”
Aqui temos um par de funções. A primeira é “analogWrite”, responsável por escrever um valor “analógico”, utilizando PWM em uma saída digital específica e a função “map”, responsável por remapear um valor de entrada para uma nova classe de valores.
Assim, o que a função map faz é pegar o valor de leitura do LDR, registrado na variável “rate”, que pode ser entre 0 e 1023 e remapear essa classe de valores para um valor adequado para ser utilizado na função analogWrite, cuja classe de valores deve ser entre 0 e 255, sendo 0 (0 volt) e 255 (5 volts).

Mais sobre analogWrite e map

Um abraço!

Arduino e mais LED´s

Tem mais coisas que podemos fazer… dessa vez, me mostre o código!

Em primeiro lugar, vamos utilizar alguns componentes eletrônicos simples para fazer um LED externo piscar pela saída digital 3.

Saídas: o Arduino Uno possui 14 portas digitais, numeradas de 0 a 13 e 6 portas analógicas, das quais somente as portas digitais podem ser configuradas para saída. A saída digital pode ser entendida como a presença de energia (1, true, HIGH, ligado) ou a ausência de energia (0, false, LOW, desligado).
Das portas digitais, seis delas podem ser utilizadas com Pulse-Width Modulation, ou modulação por largura de pulso, simulando uma saída analógica discreta.

Assim, para um LED piscar precisamos dizer que a saída número 3 deve alternar entre um estado HIGH e LOW.

Vamos precisar de um LED e um resistor de uns 330 ohms, responsável por limitar a corrente que passa pelo LED. Caso contrário seu LED pode queimar.

Se você tiver um ferro de soldar e for minimamente capaz, solde a perninha maior do LED ao resistor. A “perninha” maior é o “+” do LED e encaixe o resistor na saída 3 do Arduino. A “perninha” menor do LED pode ser encaixada em qualquer das saídas GND (terra) do Arduino.

No exemplo abaixo você pode ver os LED´s RX/TX piscando enquanto o upload do programa para piscar o LED é realizado. Tão logo o upload termine, o programa entra em execução, sobrepondo o programa anterior.

blink_pin3 from Rafael Donelli on Vimeo.

Mostre-me o código:

int ledVerde = 3;

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

void loop(){
    digitalWrite(ledVerde, HIGH);
    delay(1000);
    digitalWrite(ledVerde, LOW);
    delay(1000);
}

Você pode aproveitar a mesma montagem e criar um programa que faça um efeito de aumentar e diminuir o brilho do LED, chamado de fade.

int ledVerde = 3;

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

void loop(){
  for (int i=0; i <= 255; i++){
    analogWrite(ledVerde, i);
    delay(10);
  }
  for (int i=255; i >=0 ; i--){
    analogWrite(ledVerde, i);
    delay(10);
  }  
}

Carregue o programa e veja o resultado, utilizando a capacidade de Pulse-Width Modulation (PWM) da saída digital 3.

fadein_fadeout from Rafael Donelli on Vimeo.

Para os próximos exemplos vou utilizar uma protoboard (também conhecida como breadboard – mais informações aqui) e o fabuloso software Fritzing para desenhar os projetos.

Por exemplo, utilizando o Fritzing, os exemplos acima poderiam ser projetados da seguinte maneira, utilizando uma protoboard:

Até a próxima!

Arduino Uno Rev 3 – A primeira vez

Pois é… o bacana é ver coisas piscando! Então meus primeiros testes são com LED’s piscando!! Básico, mas eficaz.

Com o passar do tempo é possível que eu poste coisas mais legais, mas para início de conversa vamos aos LED’s!

1. O que é um LED?
Se você não ouviu falar em LED ainda, você não vive nesse planeta. Os LED’s ou diodos emissores de luz – do inglês (L)ight (E)mmiting (D)iode – são semicondutores que emitem luz. Você pode ter um em seu celular, na TV do quarto, no 3-em-1 da sala… no painel do carro ou na sua lanterna! Tem mais sobre LED´s aqui: LED na Wikipedia.

2. Ligando o Arduino pela primeira vez
Se você comprou seu Arduino Uno é provável que ele venha com um programa básico carregado, cuja função é simplesmente fazer um LED da placa piscar. Além disso, o LED de power deve ligar também, indicando a presença de energia.

O Arduino Uno original vem com um LED ligado ao pino 13 da placa, utilizando para mostrar algum comportamento. Ele é util, pois não precisamos montar um circuito separado para isso.

Quando você pluga o Arduino na USB ele é alimentado e o bootloader inicia o programa. Seu LED deve piscar!

blink_pin13 from Rafael Donelli on Vimeo.

Certo, não é muito emocionante… mas é um início!

Aprenda a programar

Se você está sem nada para fazer, gostaria de aprender a programar e não tem tempo ou dinheiro sobrando para assistir a um curso presencial experimente o Codecademy.

Não é a oitava maravilha do mundo, mas dá pra exercitar o cérebro!

Arduino Uno Rev 3

Há muito tempo eu estava procurando por alguma coisa diferente para fazer, principalmente motivado pelo interesse do meu filho em componentes eletrônicos e afins. Decidi então que, durante minhas férias, iria fazer coisas diferentes e comecei a ler sobre o ambiente de prototipação Arduino.

Meu objetivo inicial era utilizar algum microcontrolador para fazer pequenas montagens e resgatar a minha “criança interior”. Contudo, o mais conhecido eram os PIC (Microchip), mas o fato de ter que utilizar um equipamento para gravar os programas no chip não me agradava e não me parecia prático.

Hoje, passados quase 5 anos desde o início, resolvi olhar de perto o ambiente do Arduino. Na primeira vez achei ainda muito incipiente e experimental e percebi que tanto o hardware quanto o software estavam evoluindo de forma bastante rápida e não achei um bom investimento.

No entanto, o ambiente agora me parece maduro o suficiente e resolvi investir algum tempo para aprender esse novo “hobby”.

Após pesquisar um pouco sobre as placas nacionais (há vários clones de qualidade bastante razoável) optei por comprar uma placa original, de um distribuidor oficial.

Depois de muita espera (e minhas férias se foram apenas na leitura da documentação do site) finalmente um distribuidor possuia a placa que eu queria e recentemente adquiri minha Arduino Uno Rev 3, que chegou rápido.

Contudo tive tempo apenas de fazer algumas fotos para os amigos e plugar para ver se estava ligando. Nada de aventuras por enquanto.

Comprei minha placa com o pessoal da Robocore, que não é a mais barata, mas me entregou rapidinho. Em dois dias tava na mão! Obrigado pessoal!

UPDATE (17.02.2012): Arduino Uno Rev 3 na loja do Lab de Garagem a preços módicos.

Mas o que é ARDUINO?

Arduino

Arduino é um ambiente de prototipagem composto por um hardware (placas arduino Uno, Mega, duemilanove…) e uma IDE de desenvolvimento que permite que você desenvolva seus sketches (programas) e faça o upload para o microcontrolador, de tal modo a poder ler sensores analógicos e digiais, bem como responder aos sensores com saídas visuais (LED´s, por exemplo) ou atuando sobre outros sistemas como motores ou outros dispositivos.

Além disso é uma plataforma aberta, de modo que você pode fazer seu próprio Arduino a partir da documentação no site do projeto, alterá-lo, e distribuí-lo (desde que respeitadas as características descritas na documentação) ou pode adquirir sua placa de um dos fornecedores oficiais ou a partir dos diversos “clones” no mercado.

Em breve pretendo postar mais detalhes das minhas experiências com o Arduino.

Mais informações sobre o Arduino em Arduino.