quarta-feira, 28 de dezembro de 2011

Shield Ethernet DFRobot - Problemas com SD Card

Depois de perder algumas horas, tentando fazer uma gravação no cartão SD, utilizando os exemplos da IDE do Arduino sem alteração nenhuma e uma placa Shield Ethernet DFRobot descobri que a mesma não possui suporte ao cartão SD. A placa vem com o soquete para conectar o SD Card, porém o CI Wiznet 5100 vem com um curto circuito de fábrica.

Mesmo no desenho do fabricante é possível ver o curto circuito de longe. Abaixo a foto do meu protótipo.



Esquema do CI Wiznet 5100:



Os pinos curto circuitados são os pinos 55 e 54.  O pino 54 é o ADDR0 que se refere ao endereço zero do barramento de comunicação, enquanto que o pino 55 se refere ao CS (Chip Select)  utilizado no SD Card. O CS deve sair do estado 0 e ir para o estado 1 (5V) para habilitar o SD Card enquanto que o pino de endereço de dados ADDR0 deve oscilar na frequencia de Clock conforme a transmissão dos dados. Outro detalhe é que a maioria dos pinos que não são utilizados, por default, se mantém em nível lógico 0. Portanto ambos não poderiam estar conectados diretamente.

Abaixo mais um link para referência:

http://www.dfrobot.com/index.php?route=product/product&path=35_39&product_id=52


segunda-feira, 26 de dezembro de 2011

Convertendo MySql em SqlServer 2008

Um problema que pode ocorrer devido ao crescimento do banco de dados, uma simples necessidade de mudança de sistema operacional ou até mesmo uma simples mudança de máquina pode gerar a necessidade de mudança do tipo de banco de dados. Existem scripts prontos e softwares que fazem a conversão de um banco para outro onde os tipos de dados podem ser diferentes e precisam ser adequados. Seguem os sites para conversão.

http://gathadams.com/2008/02/07/convert-mysql-to-ms-sql-server/

http://www.spectralcore.com/fullconvert/tutorials/convert-mysql-to-mssql-sql-server.php

http://www.baixaja.com.br/downloads/Windows/Network-Internet/Other/MySQL-MS-SQL-Server-Import-Export_46970.html

http://www.aspfree.com/c/a/MS-SQL-Server/Convert-MySQL-to-an-MS-SQL-Server-2008-Database/


Descriptografando Senha MD5

Até algum tempo atrás uma das formas mais fortes de criptografia era o MD5. O MD5 hoje é extremamente fácil de ser quebrado e vários sites online fazem este trabalho. Quando uma senha de um usuário é salva em um banco de dados ela deve ser criptografada para dificultar o acesso de pessoas que possam acessar a base de dados. Segue a dica de site para descriptografar senhas recuperadas de bancos de dados ou que são inseridos dentro de códigos de programas sistemas.

http://www.md5decrypter.com/

No caso, uma senha pode ser algo como: 21232f297a57a5a743894a0e4a801fc3

Jogando a senha na caixa de texto de descriptografia do site, a senha será exibida após o clique do botão.


Na internet é possível encontrar uma vasta documentação sobre o assunto.

Descompactando Arquivos TAR.GZ no Linux

Para descompactar arquivos por linha de comando no Linux:

Comando mais usado (em 1 passo):

    tar zxvf <filename.tar.gz>

Ou  (em 2 passos):

    gunzip <filename.tar.gz>
    tar xvf <filename.tar>



Verificando SO no PHP

A função abaixo serve para verificar o tipo de sistema operacional e retornará true ou false verificando se o sistema é o Windows. A função poderá ser complementada com um if para verificar se o SO é *nix (Linux) ou MAC.



function isMSWindowsServer()
{
    //Captura 3 primeiras letras do tipo de sistema operacional
    $osID = strtoupper(substr(PHP_OS, 0, 3));



    //Verifica se o sistema é Windows
    $isWindows = (strcmp('WIN',$osID) == 0) ? true: false;
    return $isWindows;


}





segunda-feira, 12 de dezembro de 2011

Tratando Hora no Java

Existem várias formas de se tratar hora no Java. É possível fazer conversões para String e usar substring ou usar o metodo getHours() da classe Date.

   //classe SimpleDateFormat
   SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
   Date datanula = df.parse("00:00:00");
   String firstbox = textbox.getValue().toString().substring(11, 16);
       if(textbox.equals(datanula){
              //exibe a mensagem de erro
              throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
       }

------------------

        //classe Date
        Date myDate = new Date();
        myDate.setHours(00);

        if(textbox.equals(myDate.getHours()){
              //exibe a mensagem de erro
              throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
       }

Como o getHours() está em depreciação, a mais correta forma é usando a classe Calendar. Abaixo seguem linhas de código para emitir um aviso quando a hora e o minuto forem iguais a zero. Cria-se uma instancia de Calendar na variável cal que vai receber a variavel no formato Date do objeto.

// cria a instancia de Calendar na variavel cal
Calendar cal = Calendar.getInstance();

//captura do formulário o valor da hora no formato Date e joga no objeto
cal.setTime(this.objetoDt.getValue());

// validação para hora igual 00h00
if (cal.get(Calendar.HOUR) == 0) {
    if (cal.get(Calendar.MINUTE) == 0) {

        //exibe a mensagem de erro
        throw new WrongValueException(this.objetoDt,"Mensagem de erro!");
    }
}

domingo, 27 de novembro de 2011

DHT-22 Sensor de Umidade e Temperatura no Arduino

Hoje resolvi iniciar a implementação prática da minha estação Climaduino e Monitora Cerrado através do sensor DHT-22. Segue o esquema de pinagem e esquema de ligação do sensor.

1-Vcc
2-Dados
3-N/C
4-GND



Existem várias maneiras de se capturar os dados, inclusive usando a biblioteca do DHT-22.

http://arduino.cc/playground/Main/DHTLib


  1. // Example testing sketch for various DHT humidity/temperature sensors
  2. // Written by ladyada, public domain
  3. #include "DHT.h"
  4. #define DHTPIN 2     // what pin we're connected to
  5. // Uncomment whatever type you're using!
  6. //#define DHTTYPE DHT11   // DHT 11
  7. #define DHTTYPE DHT22   // DHT 22  (AM2302)
  8. //#define DHTTYPE DHT21   // DHT 21 (AM2301)
  9. // Connect pin 1 (on the left) of the sensor to +5V
  10. // Connect pin 2 of the sensor to whatever your DHTPIN is
  11. // Connect pin 4 (on the right) of the sensor to GROUND
  12. // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
  13. DHT dht(DHTPIN, DHT22);
  14. void setup() {
  15.   Serial.begin(9600);
  16.   Serial.println("DHTxx test!");
  17.   dht.begin();
  18. }
  19. void loop() {
  20.   // Reading temperature or humidity takes about 250 milliseconds!
  21.   // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  22.   float h = dht.readHumidity();
  23.   float t = dht.readTemperature();
  24.   // check if returns are valid, if they are NaN (not a number) then something went wrong!
  25.   if (isnan(t) || isnan(h)) {
  26.     Serial.println("Failed to read from DHT");
  27.   } else {
  28.     Serial.print("Humidity: ");
  29.     Serial.print(h);
  30.     Serial.print(" %\t");
  31.     Serial.print("Temperature: ");
  32.     Serial.print(t);
  33.     Serial.println(" *C");
  34.   }
  35. }





É importante fazer o download da biblioteca e colocar na pasta librarie do Arduino.
https://github.com/adafruit/DHT-sensor-library

Segunda opção:
https://github.com/ringerc/Arduino-DHT22


http://arduino.cc/playground/Interfacing/Java

http://www.ladyada.net/learn/sensors/dht.html

http://paulo.blog.br/blog/climaduino-projeto-monitoracerrado/




sábado, 26 de novembro de 2011

Impressora 3D com Arduino



A impressora 3D, assim como o Arduino é um objeto que vem revolucionar toda a dinâmica da contrução de objetos e do processo de industrialização. O que antes era feito apenas nas indústrias agora pode ser feito dentro de casa. A grande vantagem da impressora 3D é poder criar diversos tipos de objetos plásticos que podem inclusive serem modificados e compartilhados além de simplesmente serem projetados.

A impressora 3D promete revolucionar o mundo da robótica pois, com ela, é possível criar diversos tipos de engrenagens e dispositivos com formatos específicos. A maioria dos objetos em 3D podem ser desenhados em softwares com o SolidWorks. As bibliotecas de objetos deverão evoluir indo desde simples objetos como puxadores, maçanetas, cabides, porta velas, jogos tipo lego até grandes objetos que poderão ser feitos de modo a interconectar diversas peças pequenas. Atualmente, duas grandes empresas estão vendendo kits para montagem da impressora 3D com Arduino. A Repraps e a Marketbot com a sua Thing-o-matic. Na internet existem outros modelos que são vendidos mas não em formato de kit para serem montados em casa.

http://wiki.makerbot.com/thingomatic

http://reprap.org/wiki/Main_Page

Opiniões de outros especialistas:
http://www.latinoware.org/pt-br/node/162

sexta-feira, 25 de novembro de 2011

Bootloader no Arduino

O bootloader nada mais é que o programa de inicialização do Arduino. O microcontrolador ATMega328 possui  uma memória interna que é utilizada para o carregamento do programa. Porém, o CI quando é novo vem sem programa nenhum, pois é o desenvolver/projetista que vai definir o que o microcontrolador deve fazer.

A questão é, como jogar o programa de inicialização (bootloader) dentro do CI? Existem várias formas de se fazer isso. No Arduino Uno/Duemilanove/Mega o responsável por essa tarefa é a própria IDE que, em conjunto com o CI FTDI, executa essa tarefa.

No formato Standalone, como não se tem o CI na placa, é preciso fazer a transmissão do programa utilizando uma das portas/interface de saída do computador. As 3 formas possíveis são: via USB, porta serial ou porta paralela. Para cada porta existe um método diferente que pode ser utilizado. Cada uma dessas formas utiliza um cabo específico e alguns componentes eletrônicos para a transferência do sinal.

Utilizando o Ubuntu (ou uma distribuição Linux) fica fácil o controle sobre as portas/interfaces.

Abaixo mais informações sobre o bootloader e como fazer a gravação do CI.

http://marceloboah.blogspot.com/2011/02/ftdi-novas-tecnologias.html

http://artesanato.devolts.org/?page_id=267


http://www.arduino.cc/en/Hacking/ParallelProgrammer

http://artesanato.devolts.org/?page_id=267

http://www.labdegaragem.com.br/wiki/index.php?title=Gravando_o_Bootloader

http://www.dl1dow.de/inhalt/arduino/bootloader/e_arduino_bootloader.htm

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253127933



Arduino Standalone

O Arduino Standalone é o formato mais simplificado de montagem do Arduino. Consiste apenas no seu microcontrolador  ATMega328 ou ATMega8 com alimentação, cristal para a oscilação e no máximo um reset.

Esquema no protoboard:





Informações mais completas em outros blogs do pessoal da comunidade do Arduino.




O detalhe desse formato é que para a inicialização do programa é preciso de um bootloader que será abordado no próximo tópico.

Arduino Severino


O Arduino Severino é um modelo simplificado do Arduino que foi desenvolvido pelo Adilson Akashi de São Paulo. Após a primeira versão,o Arduino Severino sofreu pequenos ajustes até chegar na terceira versão. Segue abaixo o modelo mais recente com pequenas modificações do pessoal de Brasília:



Toda a documentação está disponível no site oficial do Arduino.

http://www.arduino.cc/en/Main/ArduinoBoardSerialSingleSided3

E também em blogs da comunidade.

http://arduinotutorial.blogspot.com/2008/03/arduino-s3v3rino-site-oficial.html

http://blogdoje.com.br/2008/03/20/arduino-single-sided-serial-board-versao-3-severino/

http://arduinotutorial.blogspot.com/

Segue a lista de componentes atual:

C1 22pF (22 pico Farad) - capacitor cerâmico tipo disco
C2 22pF (22 pico Farad) - capacitor cerâmico tipo disco
C3 100nF (100 nano Farad) - capacitor cerâmico tipo disco
C4 100nF (100 nano Farad) - capacitor cerâmico tipo disco
C5 100μF (100 micro Farad) - capacitor eletrolítico 16volts (radial)
C6 100nF (100 nano Farad) - capacitor cerâmico tipo disco
C7 100nF (100 nano Farad) - capacitor cerâmico tipo disco
C8 100μF (100 micro Farad) capacitor eletrolítico 16volts (radial)
C9 10μF (10 micro Farad) capacitor eletrolítico 25volts (radial)
D1 1N4004 - diodo
D2 1N4148 - diodo
D3 1N4148 - diodo
DC1 2.1mm. - DC power jack
IC1 ATMEGA8 + Soquete 28pinos
IC2 7805C - Regulador Tensão
ICSP 2x3 - Conector barra de pinos macho (180graus),  com espaço de
2,54mm
J1 1x4 + 1x4 - Conector barra de pinos fêmea (180graus),  com espaço
de 2,54mm
J2 1x2 + 1x4 - Conector barra de pinos fêmea (180graus),  com espaço
de 2,54mm
J3 1x4 + 1x4 - Conector barra de pinos fêmea (180graus),  com espaço
de 2,54mm
JP0 1x3 - Conector barra de pinos macho (180graus),  com espaço de
2,54mm
JP4 1x2 - Conector barra de pinos macho (180graus),  com espaço de
2,54mm
L1 100μH - indutor axial
LED0 3mm - LED vermelho (Rx)
LED1 3mm - LED verde (Tx)
LED13 3mm - LED amarelo (Pin13)
LED14 3mm LED vermelho (Power Led)
POWER 1x2 + 1x4 - Conector barra de pinos fêmea (180graus),  com
espaço de 2,54mm
Q1 16 MHz - cristal de quartzo
R1 1kohm (1.0 kilo ohm) Resistor 1/4 Watt, ±5%
R2 1kohm (1.0 kilo ohm) Resistor 1/4 Watt, ±5%
R3 1kohm (1.0 kilo ohm) Resistor 1/4 Watt, ±5%
R4 1kohm (1.0 kilo ohm) Resistor 1/4 Watt, ±5%
R5 10kohms (10.0 kilo ohms) Resistor 1/4 Watt, ±5%
R6 1kohm (1.0 kilo ohm) Resistor 1/4 Watt, ±5%
R7 10kohms (10.0 kilo ohms) Resistor 1/4 Watt, ±5%
R8 10kohms (10.0 kilo ohms) Resistor 1/4 Watt, ±5%
R9 4k7ohms (4.7 kilo ohms) Resistor 1/4 Watt, ±5%
R10 10kohms (10.0 kilo ohms) Resistor 1/4 Watt, ±5%
R11 10kohms (10.0 kilo ohms) Resistor 1/4 Watt, ±5%
S1 6x6 mm - Mini push button de 4 terminais preto
T1 BC547 - Transistor NPN (TO92)
T2 BC557 - Transistor PNP (TO92)
X1 9 PIN - Conector DB9 fêmea 90graus

segunda-feira, 21 de novembro de 2011

Paperduino

O Paperduino é um site que ensina a fazer PCI's (placas de circuito impresso) através de desenhos impressos em papel comum. A iniciativa é extremamente didática principalmente para quem nunca fez uma placa. Além de mais de 30 desenhos propostos ainda existe o aprendizado em cima do funcionamento de cada tipo diferente de circuito com sua função específica.

http://txapuzas.blogspot.com/









sexta-feira, 18 de novembro de 2011

Hexbug

Existe um consenso, com relação ao tipo de movimentação utilizada nos robôs, que imitam patas de animais, em se acreditar que esse deve ser um formato mais utilizado em contraponto com sistemas que utilizam rodas. O Hexbug é um desses robôs, bonito, colorido, com controle remoto e que imitam animais. E o preço dele é extremamente baixo.

www.hexbug.com

http://www.amazon.com/Innovation-First-Labs-Inc-451-1241/dp/B001Q4FGXK/ref=cm_wl_ce





quinta-feira, 17 de novembro de 2011

Tuitando do Arduino

Acabei de fazer o teste com a biblioteca usada para disparar twiters. A dica é seguir a instrução do site Arduino.cc:

http://www.arduino.cc/playground/Code/TwitterLibrary

Este aplicativo funciona de forma simples. O Arduino se conecta a um site que efetua a conexão com o Twitter e faz o disparo. Ou seja, a conexão não é direta. Porém, para que não seja necessário passar login e senha pelo programa, é preciso um Token (chave codificada) que vai fazer a substituição. Antes, é necessário cadastrar o login e a senha no site que faz o serviço para obter o Token.

http://arduino-tweet.appspot.com/

Depois é só fazer o download das bibliotecas que serão usadas, na pasta library, e rodar o programa que ficará carregado junto com os exemplos. O IP deve ser configurado conforme a sua rede e o Token inserido no código.


#if defined(ARDUINO) && ARDUINO > 18   // Arduino 0019 or later
#include <SPI.h>
#endif
#include <Ethernet.h>
#include <EthernetDNS.h>
#include <Twitter.h>

// Ethernet Shield Settings
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// substitute an address on your own network here
byte ip[] = { 192, 168, 1, 102 };

// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)
Twitter twitter("TOKEN");

// Message to post
char msg[] = "Hello, World! I'm twitting by Arduino!";

void setup()
{
  delay(1000);
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  Serial.println("connecting ...");
  if (twitter.post(msg)) {
    // Specify &Serial to output received response to Serial.
    // If no output is required, you can just omit the argument, e.g.
    // int status = twitter.wait();
    int status = twitter.wait(&Serial);
    if (status == 200) {
      Serial.println("OK.");
    } else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  } else {
    Serial.println("connection failed.");
  }
}

void loop()
{
}

E o resultado final:


Fica mais interessante ainda colocar algum sensor, como um sensor de porta, alarme, ou algo do tipo, que possa ser enviado para alguém alertando alguma situação.

Vale lembrar que um garoto de 14 anos, no Chile, no inicio deste ano, conseguiu conectar um sensor de terremotos no Arduino e disparar twiter antes dos sistemas do governo dispararem seus alertas.


http://www.gizmodo.com.br/conteudo/um-adolescente-chileno-tuita-sobre-terremotos-com-muito-mais-velocidade-do-que-todo-o-governo/


Iteadmaple - ARM Cortex M3 Leaf Maple

Mais um sinistrinho na área pela bagatela de 33 Obamas (US$).  72MHz ARM Cortex M3 core; 20KB SRAM e 128KB Flash. Compatível 100% com os Shields Arduino. A IDE é baseada no Arduino.

http://leaflabs.com/docs/ide.html

Bilbiotecas disponíveis

https://sourcery.mentor.com/sgpp/lite/arm/portal/release1802

Programavel em C/GCC e eLua

http://wiki.eluaproject.net/Boards




domingo, 13 de novembro de 2011

Controle de Servo no Arduino

Acabei de descobrir através da comunidade que existe uma biblioteca pronta para controle de servos no Arduino. A biblioteca faz a leitura de um controle (potenciômetro), em uma das entradas, e converte o valor de entrada, fazendo variar o angulo do servomotor.

Endereço da biblioteca:

Segue o exemplo do código:

#include <SoftwareServo.h> 

SoftwareServo myservo;  // create servo object to control a servo 

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin 

void setup() 
  myservo.attach(2);  // attaches the servo on pin 2 to the servo object 

void loop() 
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
  myservo.write(val);                  // sets the servo position according to the scaled value 
  delay(15);                           // waits for the servo to get there 

  SoftwareServo::refresh();

sexta-feira, 11 de novembro de 2011

Esquema de Pinagem do ATMega

O pessoal fez um esquema, para solucionar o problema de sempre termos de consultar um manual com a pinagem para fazer uma medição. A solução é um decalque sobre o ATMega.




Ref.:
http://www.adafruit.com/products/554

O que é um Hackerspace?

Uma nova forma de se desenvolver tecnologia está alta e se tornando cada vez mais conhecida é o Hackerspace. A principio o termo Hacker assusta os leigos, pois o termo erroneamente se popularizou com uma ação que não determina seu real sentido.

O termo Hacker está ligado ao conhecimento sobre tecnologias e o entendimento a fundo. Mas na verdade o termo Hacker está ligado ao processo de desconstruir o funcionamento de algo para reconstruir com um novo funcionamento. E o Hackerspace é o lugar onde se reúnem amantes de tecnologia para o desenvolvimento cooperativo.

No video do link abaixo, é possível compreender melhor esse formato de desenvolvimento em um Hackerspace brasileiro.


http://video.globo.com/Videos/Player/Noticias/0,,GIM1666053-7823-CASA+DE+CULTURA+DIGITAL+PROPOE+A+CONVIVENCIA+ENTRE+A+CIDADANIA+E+A+TECNOLOGIA,00.html

Na comunidade do Arduino de Brasilia muito tem se conversado para a criação de um Hackerspace. O local ainda está sendo discutido, porém o nome já foi escolhido e vai ser Calango Hacker Clube.

http://garoa.net.br/wiki/Hackerspaces_em_planejamento_no_Brasil

Atualmente o Hackerspace Garoa parece ser um dos mais influentes entre os atuais 6 Hackerspaces cadastrados do Brasil.


http://garoa.net.br/wiki/Como_criar_um_hackerspace


 E, em Shangai o governo está propondo a criação de 100 comunidades de Hackerspaces.

http://hardware.slashdot.org/story/11/11/10/1353240/shanghai-government-proposes-100-community-hackerspaces


Abaixo seguem mais links para informações.

http://groups.google.com/group/hackerspacesp/topics

http://anchisesbr.blogspot.com/2011/05/cyber-cultura-o-que-e-um-hackerspace.html

http://tecnologia.terra.com.br/noticias/0,,OI5153107-EI15607,00-Saiba+o+que+sao+Hackerspaces+oficinas+comunitarias+para+geeks.html



segunda-feira, 7 de novembro de 2011

Arduino Paraná

Há dois meses e meio atrás eu iniciei pesquisas sobre o Arduino. Acabei entrando em contato com um pessoal da UnB de Brasília que possuía uma lista de discussão com quase 200 membros e resolvi participar. A lista de Brasilia está nesse momento chegando a 300 membros e o Arduino é uma febre crescente. Com o apoio da comunidade de Brasilia: Jeronimo Avelar, Webert Oliveira, Isaias Coelho, Filipe Oliveira, Helton Lidio, Izaias Cabral... Estou dando inicio ao grupo de estudos de Arduino no Paraná:

arduino-parana@googlegroups.com

https://groups.google.com/group/arduino-parana?hl=pt-BR

domingo, 6 de novembro de 2011

Uso do Datasheet

A maioria dos componentes eletrônicos que são fabricados possuem, cada um, o seu manual com as características principais do produto e suas limitações. Também possui a descrição, formato, mapa dos pinos, valores de entrada e saídas de corrente, tensão, potência com valores mínimos e máximos, curvas características de resposta e uma série de parâmetros. Os fabricantes disponibilizam esses manuais, conhecidos como datasheet, em seus sites. Porém existe um site que centraliza os produtos de todos os fabricantes ocidentais e até mesmo alguns orientais. Ultimamente tenho encontrado alguns manuais chineses dentro do site que antigamente não era comum. Antes era necessário acessar os sites um por um... Texas Instruments, National Semiconductor, Sony, SM, Fairchild e pra piorar o Google nem sempre encontrava o componente pelo código. Na verdade, isso ainda acontece. A dica é acessar o site Datasheet Catalog e ir procurar direto na fonte.

HTACCESS - Gerenciando Páginas

Um arquivo importante que existe dentro do sistema que utiliza servidor Apache é o .htaccess. O ponto no inicio do arquivo já indica que o arquivo é oculto, ou seja não aparece nas listagens. O htaccess pode ser colocado em diversas pastas sendo que o arquivo na raiz possui prioridade sobre os subarquivos no momento da leitura. O htaccess é usado para redirecionar arquivos de erros, controlar autenticação e modificar a URL. O PHP não possui o recurso conhecido no Java como Servlets, porém com o htaccess é possível utilizar expressões regulares e url's amigáveis de forma que uma string na URL possa ser interpretada e redirecionada a arquivos específicos. Desse modo o site fica protegido ocultando o tipo de programação que está sendo utilizada dentro do servidor.

Dicas de leitura:
http://codigofonte.uol.com.br/artigo/seguranca/protegendo-suas-paginas-com-htaccess-do-apache

http://cgoncalves.com/htaccess-retirar-www/

quarta-feira, 2 de novembro de 2011

Na Onda do Quadricóptero

Vários garagistas estão começando a desenvolver seus protótipos de Quadricóptero e AR Drones. A construção no que se refere ao material parece ser simples. A complexidade maior está na comunicação, uso do acelerômetro, escolha da bateria e estabilidade da aeronave. O mais interessante é o uso de câmeras embarcadas para o controle dos Drones. Em vários casos o iPhone está sendo usado como controle.

É necessário fazer todo um cálculo com relação ao peso do objeto, potencia do motor, capacidade da bateria e tamanho e quantidade de hélices para saber se o quadcopter vai sair do chão.

http://www.ecalc.ch/xcoptercalc_e.htm

Vários videos podem ser encontrados na internet e algumas equipes brasileiras estão se especializando no assunto.





Alguns links sobre o assunto e equipes de desenvolvimento:

http://www.aeroquad.com/

http://www.mikrokopter.de/

http://diydrones.com/

https://www.webmodelismo.com.br/

http://www.parrot.com/usa/

http://hexacoptero.blogspot.com/

 E nesse mês o vídeo que está causando furor entre os desenvolvedores é o surgimento do primeiro multicóptero com o engenheiro piloto a bordo da nave. O que mais chama a atenção é que uma boa parte deses desenvolvedores fabrica esses equipamentos dentro de casa.

http://www.youtube.com/watch?feature=player_embedded&v=L75ESD9PBOw

Acelerando Shellscript - Parte 2

Este post vai servir para entender um pouco sobre o funcionamento do sistema no Linux. Algumas pastas são criadas em tempo de execução e muito se pode saber sobre o funcionamento do Kernel, até mesmo para gerar relatórios de sistema. Através dos comandos ls e cat, é possível desbravar o conteúdo de arquivos e diretórios de sistema mesmo com usuário comum. Para isso é necessário conhecer algumas pastas de sistema como:

/proc
/proc/cpuinfo
/proc/meminfo
/proc/modules
/proc/uptime
/proc/sys/net/ipv4
/proc/sys/net/ipforward

Abaixo segue apenas um exemplo de como capturar alguns dados que podem ser inclusive mais bem trabalhados com outros comandos e usando a criatividade.


#!/bin/bash

vhost=`hostname`
echo "1.Nome da máquina........................................:$vhost"
vdom=`hostname -d`
echo "2.Domínio da máquina.....................................:$vdom"
vtimeon=`uptime`
echo "3.Há quanto tempo esta máquina está ligada?..............:$vtimeon"
vdata=`date`
echo "4.Qual a data do sistema?................................:$vdata"
vdist=`cat /etc/issue`
echo "5.Qual a distribuição linux está instalada?..............:$vdist"
vversion=`uname -v`
echo "6.Qual a versão de kernel?...............................:$vversion"
# lshw
# cat /proc/cpuinfo
vhards=`dmesg | greep -i hda`
echo "7.Qual o hardware foi reconhecido pelo sistema?..........:$vhards"
vip=`/sbin/ifconfig | grep Bcast | cut -c22-34`
echo "8.Qual a configuração de IP?.............................:$vip"
vmasc=`/sbin/ifconfig | grep Bcast | cut -c62-84`
echo "9.Qual a máscara de rede?................................:$vmasc"
vmac=` /sbin/ifconfig | grep HW | cut -d' ' -f13`
echo "10. Qual o endereço físico ?Mac Address?.................:$vmac"
vgate=`/sbin/route | grep default | cut -c17-70`
echo "11. Qual o gateway?......................................:$vgate"
vdns=`cat /etc/resolv.conf | grep nameserver | cut -c12-70`
echo "12. Qual o DNS?..........................................:$vdns"
vprocess=`ps aux`
echo "13. Quantos programas estão carregados na memória?.......:$vprocess"
# lsof pode ser mais bem trabalhado com o uso do comando grep
vopenfile=`lsof`
echo "14. Quais arquivos estão abertos?........................:$vopenfile"
vdaemons=`ps aux | cut -d' ' -f1 | sort -u | grep -v USER`
echo "15. Quais usuários ou daemons estão executando programas ou"
echo "serviços?..............................................:$vdaemons"
vmemo=`cat /proc/meminfo`
echo "16. Quanto de memória existe no sistema?.................:$vmemo"
#/etc/apt/sources.list
echo "17. Quais pacotes estão instalados na máquina?...........:"
vmaqproc=`uname -`
echo "18. Qual o Processador da máquina?.......................:$vmaqproc"
vusb=`lsusb`
echo "19. Existem equipamentos USB nesta máquina?..............:$vusb"
vpci=`lspci`
echo "20. Existem placas PCI nesta máquina?....................:$vpci"
vusrs=`cat /etc/passwd | grep bash | cut -d: -f1`
echo "21. Quantos usuários estão cadastrados?..................:$vusrs"
vuser=`whoami`
echo "22. Quem está logado agora?..............................:$vuser"
vpwd=`pwd`
echo "23. Em qual pasta você está trabalhando?.................:$vpwd"
vspaceuser=`du -kh --max-depth=1 /home 2>/dev/null`
echo "24. Quanto cada usuário está utilizando de espaço no HD?.:$vspaceuser"
#crontab -l (agendados)
echo "25. Agendar para executar estes comandos automaticamente, toda sexta-feira às 10hs."
#crontab -e (editar)




Ainda é possivel criar um SHELLSCRIPT que poderá gerar um arquivo cujo nome será a data do sistema + nome da máquina + ?-resumo.txt? , utilizando as questões acima.

ex: 2011-10-21_lab21_resumo.txt

Acelerando Shellscript - Parte 1

Este material que vou postar é um exercício que tem por objetivo trabalhar com arquivos texto. O Shell entende tudo como arquivo texto, porém para conseguir recortar um cabeçalho ou um rodapé, efetuar cortes horizontais e verticais em listas, trabalhando com ordenação exige um entendimento de como se usar comandos como: head, tail, sort, grep, cut... então aí vão alguns exemplos.

Primeiro é necessário um arquivo de texto para se trabalhar. Utilizando o comando wget vamos fazer um download de um arquivo que é uma lista de preços identada de um site qualquer:

wget http://www.navenet.com/home/lista/ListaNave.txt

Agora com o terminal testar os comandos que fazem parte de um Shellcript abaixo.


#!/bin/bash

echo "1. [0,5] Mostre o cabeçalho do arquivo (somente as linhas antes do inicio dos produtos);"
cat ListaNave.txt | head -4
echo "2. [0,5] Mostre o rodapé do arquivo (somente as linhas após a listagem dos produtos);"
cat ListaNave.txt | tail -8
echo "3. [0,5] Mostre os últimos 25 produtos;"
cat ListaNave.txt | tail -4080 | head -4072 | tail -25
echo "4. [1,0] Mostre os 19 primeiros produtos, em uma lista com as linhas numeradas;"
cat ListaNave.txt | tail -4080 | head -4072 | head -19 | nl
echo "5. [1,0] Mostre somente os produtos (sem as linhas do inicio e do final do arquivo)"
cat ListaNave.txt | tail -4080 | head -4072
echo "6. [0,5] Quantos produtos existem nessa listagem?"
cat ListaNave.txt | tail -4080 | head -4072 | wc | cut -d" " -f4
echo "7. [0,5] Mostre somente os produtos para impressora;"
cat ListaNave.txt | tail -4080 | head -4072 | grep -i IMPRESSORA
echo "8. [1,0] Quantos nobreaks (ou UPS) possui a listagem?"
cat ListaNave.txt | tail -4080 | head -4072 | grep -i -E '(NOBREAK|UPS)'
echo "9. [1,0] Mostre os produtos sem as linhas verticais (pipes) presentes na listagem;"
cat ListaNave.txt | tail -4080 | head -4072 | sed y/"|"/" "/
echo "10. [1,0] Ordene a lista em ordem de código;"
cat ListaNave.txt | tail -4080 | head -4072 | sort  -t"|" -k2 -n
echo "11. [1,0] Mostre a listagem dos produtos em ordem alfabetica (não pelo código);"
cat ListaNave.txt | tail -4080 | head -4072 | sort  -t"|" -k3
echo "12. [1,0] Mostre os DVD, somente os para carro;"
cat ListaNave.txt | tail -4080 | head -4072 | grep -i 'DVD P/CARRO'
echo "13. [1,0] Informe somente o código e o preço dos 5 produtos mais caros;"
cat ListaNave.txt | tail -4080 | head -4072 | sort  -t"|" -k4 -n -r | head -5
echo "14. [1,0] Qual são os Ipad 2 da lista de produtos?"
cat ListaNave.txt | tail -4080 | head -4072 | grep -i 'ipad2'
echo "15. [1,0] Crie um arquivo com as câmeras panasonic ;"
cat ListaNave.txt | tail -4080 | head -4072 | grep -i 'panasonic' | grep -i 'camera' > camerapanasonic.txt
echo "16. [1,0] Crie um arquivo com os 8 primeiros produtos e os 13 últimos em uma lista com o"
echo "cabeçalho e o rodapé;"
cat ListaNave.txt | head -4 > lista.txt
cat ListaNave.txt | tail -4080 | head -4072 | head -8 >> lista.txt
cat ListaNave.txt | tail -4080 | head -4072 | tail -13 >> lista.txt
cat ListaNave.txt | tail -8 >> lista.txt
echo "17. [1,5] Ordene a lista pelo preço: os mais produtos baratos no início da listagem;"
#cat ListaNave.txt | tail -4080 | head -4072 | sort  -t"|" -k4 -n
cat lista.txt | head -25 | tail -21 | sort  -t"|" -k4 -n
echo "18. [1,5] Quais são os 10 telefones BlackBerry mais baratos?"
cat ListaNave.txt | tail -4080 | head -4072 | grep -i 'blackberry' | grep -i 'celular' | sort -t"|" -k4 | head -10
echo "19. [1,5] Crie uma nova listagem com: o cabeçalho do arquivo (questão 1) + as 10 filmadoras"
echo "mais baratas (questão 16) e o rodapé do arquivo (questão 2) em arquivo chamado:"
echo "ListaFilmadoras.txt"
cat ListaNave.txt | head -4 > ListaFilmadoras.txt
cat ListaNave.txt | tail -4080 | head -4072 | grep -i 'filmadora' | sort -t"|" -k4 -n >> ListaFilmadoras.txt
cat ListaNave.txt | tail -8 >> ListaFilmadoras.txt
echo "20. [2,0] Crie um arquivo com a listagem de produtos para IPAD (não incluir para IPAD 2),"
echo "sem repetição. Compacte o arquivo em formato ZIP ou TAR.GZ."
cat ListaNave.txt | tail -4080 | head -4072 | grep -i IPAD | sort -u | grep -v 'IPAD2' | grep -v 'IPAD 2' > listaipad.txt
tar czvf listaipad.txt listaipad.tar.gz

segunda-feira, 31 de outubro de 2011

Beaglebone - Nasce um Monstro no Halloween

Confesso que sinto frio na barriga cada vez que vejo as novidades sendo lançadas. Hoje dia 31 de outubro, dia das bruxas, foi lançado um pequeno monstro pela Texas Instruments. O Beaglebone possui um TI AM3358 ARM Cortex-A8 de 1GHz de velocidade e comporta dentro dele o Kernel do Linux. Isso é realmente assustador. Um microcontrolador que possui muita capacidade de armazenamento, um microcomputador na palma da mão, aberto à programação Shell além da programação tradicional em C e com entradas e saídas com padrão 3,3V.



http://beagleboard.org

domingo, 30 de outubro de 2011

MSP430 - Existe Vida Além do Arduino

Sim, existe vida além do Arduino, foi o que disse um dos gurus do Arduino no Brasil, Jeronimo Avelar, ao apresentar a MPS430. Confesso que fiquei impressionado com o preço da placa vendida pela Texas Instrument: US$ 4,30. A LauchPad vem com cabo USB, uma IDE própria e dois microcontroladores: MPS430G2211 e MPS430G2231 ambos de 14 pinos. A placa é de baixa potencia e possui sua linguagem própria.



Mais informações:

Cortino - Cortex M3

O Cortino é um equivalente ao Arduino porém o microcontrolador é o Cortex M3. Cortino também pode ser conectado aos Shields do Arduino, a capacidade da Flash Program vai de 32KBytes a 512KBytes, com RAM de 6KBytes a 64Kbytes, entradas e saídas de dados por padrão 5V e velocidade de 72MHz, que é um pouco mais rápido que o Arduino.



Maiores informações:

http://www.bugblat.com/products/cor.html

Executando Shell Através do PHP

Mais um pouco sobre integração entre linguagens. Uma das formas de se executar um comando Shell utilizando a programação em PHP é através do comando shell_exec(). Segue o exemplo:

<?PHP

$saida = shell_exec('ls -la'); // executa um comando de listagem de diretório armazenando na variável
echo $saida;  // => imprime o conteúdo da variável
?>

No caso acima provavelmente os dados serão armazenados na variavel como um vetor, nesse caso é necessário imprimir dentro de FOR.
Outro exemplo que pode ser utilizado é através do comando system(). No exemplo abaixo uma forma para executar comando de ROOT.


<?PHP

$saida = system('echo "PASSWORD" | sudo -u root -S COMANDO');
echo $saida;
?>

Hijack Main Board

O Hijack é um circuito de interface que funciona quase que da mesma maneira que uma porta USB, uma porta paralela ou uma porta serial no que se refere a troca de informações. Em aparelhos de som antigos o hijack era utilizado apenas para envio de sinal de audio. Porém, nos equipamentos mais novos, o audio vem praticamente direto do processador em formato de dados. O que o hijack faz é acessar o processador diretamente como uma porta que pode receber comandos. Na interface do Hijack é possivel conectar outras interfaces e até mesmo sensores. O Hijack é compativel com o iPhone 3G/3GS/4G, iPod Touch e iPad devices.




Mais informações
http://www.seeedstudio.com/wiki/index.php?title=Hijack#Introduction


http://www.seeedstudio.com/depot/hijack-main-board-p-917.html?cPath=174

Iteaduino

Mais uma novidade no mercado é a Iteaduino. O Iteaduino é similar e compatível com o Arduino porém vem com bluetooth master e slave imbutidos, módulo HC-05 operando com 3,3V e 5V. O microcontrolador é o ATMega328P e a placa possui interface UART/IIC.



Mais detalhes e compra:
http://iteadstudio.com/store/index.php?main_page=product_info&cPath=50_51&products_id=474

sábado, 29 de outubro de 2011

Capturando Dados em Tempo Real

Alguns sites estão fazendo bastante sucesso dentro da área de automação. Alguns microcontroladores, como o  Arduino, conseguem enviar dados pela internet através de requisições http e sockets. Para trabalhar com a leitura desses dados geralmente um software é utilizado. O Processing, o SCADA e o Pachube são alguns desses softwares que fazem a captura dos dados de diversos tipos de sensores e chaves que são enviados através dos microcontroladores. A vantagem da utilização de sites prontos é a simplicidade de fazer um cadastro com login e senha e já utilizar o site para a captura dos dados enviados. Os dados podem ser visualizados de diversas maneiras que incluem até mesmo a customização de gráficos.

http://www.scadabr.com.br/

http://processing.org/

https://pachube.com/


Projeto Climaduino e Monitora Cerrado

O Climaduino e o Monitora Cerrado são projeto desenvolvido através da iniciativa da comunidade de Arduino de Brasília. Tenho acompanhado os projetos de perto e inclusive já comprei e recebi os sensores e as dicas utilizadas no projeto para poder participar também. Os projetos são feitos através de uma rede de desenvolvedores de Arduino onde é colocado um sensor de Temperatura e Humidade conectados na placa e o seu sinal medido é enviado ao site com os valores nas diversas regiões medidas. Atualmente o pessoal do Monitora Cerrado participou da feira  da Semana Nacional de Ciência e Tecnologia da UNB. O Climaduino e o Monitora Cerrado podem ser acessados nos sites:

http://climaduino.net.br/

http://arduinolabs.in/tag/monitora/

http://semanact.mct.gov.br/index.php/content/view/5193.html

Arduino Comunicação com Bluetooth


No Arduino é necessário o Shield de Bluetooth conectado na placa. O procedimento é parecido com o envio de dados através da Serial, que na verdade não deixa de ser. O que indica que o sinal está sendo enviado por bluetooth é a velocidade que é definida. Com o código abaixo é possível iniciar a transmissão de dados via Bluetooth no Arduino.

void setup()
{
  Serial.begin(115200);              // start serial communication for Bluetooth
}
 
void loop() {
  if( Serial.available() )           // if data is available to read
  {
     val = Serial.read();            // read it and store it in 'val'
     Serial.println("Data received") // Send info back
  }
}

IMEI - O IP do Celular

O IMEI é a abreviação de International Mobile Equipment Identity - Identificação Internacional de Equipamento Móvel - um número único para cada telefone celular, normalmente encontrado atrás da bateria.

Outra forma de se obter o IMEI é digitar direto no aparelho o código: *#06# .

quinta-feira, 27 de outubro de 2011

Reportagem Sobre Arduino no IEEE


A pitoresca cidade de Ivrea, que fica no rio, azul-esverdeado, Dora Baltea, no norte da Itália, é famoso por seus reis oprimidos. Em 1002, King Arduin se tornou o governante do país, só para ser destronado pelo rei Henry II, da Alemanha, dois anos depois. Hoje, o Bar di Re Arduino, um pub em uma rua de paralelepípedo na cidade, homenageia sua memória, e é aí que um novo rei improvável nasceu.

O bar é o bebedouro de Massimo Banzi, o co-fundador do projeto italiano eletrônica que deu o nome de Arduino em homenagem ao lugar. Arduino é uma placa de microcontrolador de baixo custo que permite que até mesmo um novato fazer coisas realmente incríveis. Você pode conectar um Arduino para todos os tipos de sensores, luzes, motores e outros dispositivos e software fácil de aprender para programar a sua criação do modo como deverá se comportar. Você pode construir um display interativo ou um robô móvel e compartilhar seu projeto com o mundo, colocando-o na rede.

Lançado em 2005 como uma ferramenta modesta para os estudantes do Interaction Design Institute Ivrea (IDII), Arduino gerou uma revolução do-it-yourself internacionais em eletrônica. Você pode comprar uma placa Arduino para apenas cerca de EUA $ 30 ou construir o seu próprio a partir do zero: Todos os esquemas de hardware e código-fonte estão disponíveis gratuitamente sob licença pública. Como resultado,  o Arduino tornou-se um dos mais influentes hardwares open-source de seu tempo.

A pequena placa agora se tornou a ferramenta go-to para os artistas, amadores, estudantes e qualquer pessoa com um sonho engenhocas. Mais de 250 000 placas Arduino foram vendidos em todo o mundo e que não inclui as resmas de clones. "Foi ela que tornou possível que as pessoas fazerem coisas que não teriam feito de outra forma", diz David A. Mellis, que era um estudante na IDII antes de prosseguir os trabalhos de pós-graduação no MIT Media Lab e é o desenvolvedor de software principal do Arduino.

Há Arduino baseando bafômetros, cubos de LED, sistemas de automação doméstica, displays Twitter, e até kits de análise de DNA. Há partidos e clubes Arduino Arduino. Google lançou recentemente um kit de desenvolvimento baseado em Arduino para seu smartphone Android. Como Dale Dougherty, editor e publisher da revista Make, a bíblia do DIY construtores, coloca, Arduino tornou-se "o cérebro de projetos fabricante."

Mas Arduino não é apenas um projeto open-source que visa tornar a tecnologia mais acessível. É também uma empresa start-up dirigida por Banzi e um grupo de amigos, e é diante de um desafio que até mesmo a sua prancha mágica não pode resolver: como sobreviver sucesso e crescer. "Precisamos fazer o salto que vem", Banzi me diz, "e se tornar uma empresa estabelecida."

Arduino levantou-se fora de um outro grande desafio: como ensinar os alunos a criarem eletrônica, rapidamente. Era 2002, e Banzi, um arquiteto de software barbudo e avuncular, tinha sido provocado por IDII como professor associado de promover novas formas de fazer um design interativo campo nascente, por vezes conhecido como computação física. Mas com um orçamento de encolhimento e tempo de aula limitado, suas opções de ferramentas eram poucas.

Como muitos de seus colegas, Banzi contou com a Stamp BASIC, um microcontrolador criado por empresa da Califórnia Parallax que os engenheiros estavam usando por cerca de uma década. Codificado com a linguagem de programação BASIC, o selo era como uma placa de circuito arrumado, a embalagem os fundamentos de uma fonte de alimentação, um microcontrolador, memória e entrada / saída portas para anexar hardware. Mas o BASIC Stamp tinha dois problemas: Ele não tinha poder de computação suficiente para alguns dos projetos de seus alunos tinham em mente, e também foi um pouco caro demais, além de uma placa de partes básicas poderia custar cerca de EUA $ 100. Ele também precisava de algo que poderia ser executado em computadores Macintosh, que fossem onipresentes entre os designers IDII. E se eles pudessem fazer uma placa que se adequasse às suas próprias necessidades ?

Banzi tinha um colega do MIT que tinham desenvolvido uma linguagem de programação de designer-friendly chamado Processing. Processing foi rapidamente ganhando popularidade porque permitiu mesmo programadores inexperientes a criarem complexas e maravilhosas visualizações de dados. Uma das razões para o seu sucesso foi um ambiente de desenvolvimento extremamente fácil de usar, integrado, ou IDE. Banzi se perguntou se eles poderiam criar ferramentas de software semelhante ao código de um microcontrolador em vez de gráficos em uma tela.

Um estudante no programa, Hernando Barragán, deu os primeiros passos nessa direção. Ele desenvolveu uma plataforma de prototipagem chamado de fiação, que incluía tanto user-friendly um IDE e um ready-to-use placa de circuito. Era um projeto promissor que continua até hoje, mas Banzi já estava pensando maior: Ele queria fazer uma plataforma que era ainda mais simples, mais barato e mais fácil de usar.


Banzi e seus colaboradores foram fortes crentes no software open-source. Como o propósito era criar uma plataforma rápida e facilmente acessíveis, eles sentiram que seria melhor abrir o projeto para tantas pessoas quanto fosse possível, em vez de mantê-lo fechado. Outro fator que contribuiu para essa decisão foi que depois de operar por cinco anos, IDII estava a ficar sem fundos e ia fechar suas portas. Membros do corpo docente temiam que seus projetos não sobrevivessem ou fossem desviados. "Então dissemos, 'Esqueça isso'", lembra Banzi. "'Vamos torná-lo open source'."

O modelo open-source tinha sido muito utilizado para fomentar a inovação de software, mas não hardware. Para fazer o trabalho, eles tiveram que encontrar uma solução de licenciamento apropriado que poderia se aplicar a sua placa. Depois de algumas investigações, eles perceberam que se eles simplesmente olhavam para seu projeto de forma diferente, eles poderiam usar uma licença da Creative Commons, o grupo sem fins lucrativos, cujos acordos são normalmente utilizados para obras culturais, como música e escrita. "Você poderia pensar em hardware como pedaço de cultura que você quer compartilhar com outras pessoas", diz Banzi.

Para fazer a placa, o grupo teve uma premissa, preço de estudante-amigo como sua meta: US $ 30. "Tinha que ser o equivalente a sair para jantar em uma pizzaria", diz Banzi. Eles também queriam torná-la estranha, algo que iria se destacar e ser legal olhando para geeks eruditos. Se outros conselhos foram frequentemente verde, eles fazem a deles azul, enquanto alguns fabricantes economizado na entrada e pinos de saída, eles acrescentar muito para a sua placa. Como um toque final, eles adicionaram um pequeno mapa da Itália na parte de trás da placa. "Um monte de opções de design são estranhos para um engenheiro de verdade", Banzi diz com uma risada de saber ", mas eu não sou um engenheiro real, então eu fiz isso de uma maneira boba!"

Para um dos "reais" engenheiros da equipe, Gianluca Martino, o não-convencional, a abordagem meatball cirurgia para projeto da placa de circuito foi esclarecedora. Martino descreve como um "novo modo de pensar eletrônica", diz ele, "não de uma forma de engenharia, onde você tem que contar eletrodos, mas uma abordagem do-it-yourself ."

O produto que a equipe criou consistia em peças baratas que poderiam ser facilmente encontradas se os usuários quisessem construir seus próprios modelos, como o microcontrolador ATmega328. Mas uma decisão importante era garantir que seria, essencialmente, plug-and-play: algo que alguém poderia tirar de uma caixa, ligar a um computador e usá-lo imediatamente. Placas, como o BASIC Stamp DIYer era necessário desembolsar mais meia dúzia de outros itens que eram adicionados ao custo total. Mas para eles, um usuário poderia simplesmente puxar um cabo USB da placa e conectá-lo a um computador Mac ou PC para programar o dispositivo.

"A filosofia por trás Arduino é que se você quer aprender eletrônica, você deve ser capaz de aprender como desde o primeiro dia, em vez de começar por aprender álgebra", diz outro membro da equipe, telecomunicações, engenheiro David Cuartielles.

A equipe logo colocou essa filosofia para o teste. Eles entregaram em branco 300 placas de circuito impresso para os alunos IDII com uma directiva simples: Olhe para cima as instruções de montagem online, construir o seu próprio modelo, e usá-lo para alguma coisa. Um dos primeiros projetos foi um despertador caseiro que era suspenso no teto por um cabo. Sempre que você apertar o botão snooze, o relógio subiria mais para o ar até que você só tinha de se levantar.

Logo outras pessoas ouviram falar das placas. E elas queriam uma. O primeiro cliente foi um amigo de Banzi, que ordenou uma unidade. O projeto estava começando a decolar, mas uma coisa importante estava faltando-um nome para sua invenção. Uma noite com uma bebida no pub local, que veio a eles: Arduino, assim como o bar e rei.

Palavra de Arduino rapidamente se espalhou online, sem marketing ou publicidade. Logo no início, ele atraiu a atenção de Tom Igoe, um professor de computação física no Programa de Telecomunicações Interativas pela New York University e hoje um membro da equipe principal Arduino. Igoe estava ensinando aos alunos cursos não técnicos com o BASIC Stamp, mas ficou impressionado com recursos do Arduino. "Eles tinham o pressuposto de que você não sabia eletrônica e programação, que você não quer configurar uma máquina inteira apenas para que você possa programar um chip, você pode simplesmente abrir a placa, pressionar upload, e funciona", diz ele. "Também fiquei impressionado com o objetivo de um preço de 30 dólares, o que tornou acessível. Este foi um dos fatores-chave para mim."

A este respeito, o sucesso do Arduino deve muito à existência prévia de Processing e Wiring. Esses projetos deram Arduino uma de suas forças essenciais: ambiente de programação usuário-amigável. Antes de Arduino, um microcontrolador de codificação trouxe com ele uma curva de aprendizado difícil. Com Arduino, mesmo aqueles sem experiência anterior de eletrônicos ganhou acesso a um mundo de hardware anteriormente impenetráveis. Agora, os novatos não têm que aprender muito antes que eles possam construir um protótipo que realmente funciona. É um poderoso movimento num momento em que alguns dos gadgets mais populares lá fora, funcionam como "caixas pretas" que são fechados e patenteados.

Para Banzi, este é talvez o impacto mais importante do Arduino: a democratização da engenharia. "Cinqüenta anos atrás, para escrever o software você precisava de pessoas de avental branco que sabiam tudo sobre os tubos de vácuo", diz Banzi. "Nós habilitamos um monte de gente para criar produtos eles mesmos."

Nem todos os engenheiros amam Arduino. Os mais exigentes lamentam o produto para emburrecimento e criação de produtos e inundam o mercado com produtos hobistas sem brilho. Mellis, no entanto, não vê a inovação como desvalorizar o papel do engenheiro em tudo. "Ao fornecer uma plataforma que permite que o artista ou designer tenham um pouco lá dentro, fica mais fácil para eles trabalharem com engenheiros e dizer, 'Isto é o que eu quero fazer'", diz ele. "Eu não acho que é substituir o engenheiro, é apenas facilitar a colaboração."

Para abastecer uma maior adoção do Arduino, a equipe está explorando como integrá-lo mais profundamente no sistema de ensino, de escolas primárias para as faculdades. Diversas universidades, incluindo Carnegie Mellon e Stanford, já usam Arduino. Mellis tem vindo a estudar como os estudantes e leigos tomam eletrônicos em uma série de workshops no MIT Media Lab. Mellis convida 8 a 10 pessoas para o laboratório, onde é dada uma tarefa para completar ao longo do dia. Os projetos incluíram a construção falantes iPod, rádio FM, e um mouse de computador usando alguns dos mesmos componentes que usam Arduino.

Mas espalhar o evangelho Arduino é apenas parte do desafio. A equipe também deve acompanhar a demanda para as placas. Na verdade, a plataforma Arduino não consiste mais em um tipo de placa -agora há uma família inteira de placas. Além do projeto original, chamado de Arduino Uno, os novos modelos incluem uma placa mais poderosa chamada Arduino Mega, uma placa compacta chamada Arduino Nano, uma placa à prova d'água chamado de Arduino LilyPad, e um recém-lançado, placa Net-enabled chamado de Ethernet Arduino.

Arduino também criou a sua própria indústria caseira para DIY eletrônica. Existem mais de 200 distribuidores de produtos Arduino em todo o mundo, de grandes empresas como SparkFun Electronics, em Boulder, Colorado, para operações de mom-and-pop servirem as necessidades do local. Banzi ouvi recentemente de um homem em Portugal que largou o emprego na empresa de telefonia para vender produtos Arduino de sua casa. Arduino membro da equipa Gianluca Martino, que supervisiona a produção e distribuição, diz que eles estão trabalhando para atingir os mercados emergentes, como China, Índia e América do Sul. Neste ponto, diz ele, cerca de 80 por cento da audiência Arduino é dividida entre os Estados Unidos e a Europa, com o resto espalhados pelo mundo.

Porque a equipe não pode dar ao luxo de centenas de ações de milhares de placas, eles ao invés de produzirem entre 100 a 3000 por dia em uma fábrica perto de Ivrea. A equipe criou um sistema personalizado para testar os pinos em cada placa, que para o Uno inclui 14 E / S digitais pinos, 6 pinos de entrada analógica, e outra 6 pinos para a fonte de alimentação de um desafio de garantia de qualidade grande quando você está manipulação de milhares de unidades por dia. A placa Arduino é barata o suficiente para a equipe a promessa de substituir qualquer placa que não funciona. Martino diz que a taxa de falha é inferior a 1 por cento.

A equipe de Arduino está agora ganhando o suficiente para suportar dois dos seus membros como empregados em tempo integral e está fazendo planos para trazer ainda mais energia à placa de circuito para o povo. Em setembro, na Maker Faire, uma convenção em Nova York, patrocinado pela revista Make, a equipe lançou sua primeira placa com um processador de um 32-bit ARM chip-up a partir da uma de 8 bits do passado. Isto servirá para alimentar a demanda de periféricos mais robustos. The Thing-O-Matic MakerBot, por exemplo, é um kit de impressora 3-D construídos em Arduino, mas se beneficiariam de um processador mais rápido para conseguir tarefas mais complicadas.

Arduino tem um novo impulso este ano, quando o Google lançou uma placa Arduino desenvolvedor baseado para seu sistema Android. Android do Google ADK, ou Kit de Desenvolvimento de acessórios, é uma plataforma que permite um telefone Android interagir com motores, sensores e outros dispositivos. Você pode criar um aplicativo Android que usa a câmera do telefone, sensores de movimento, tela sensível ao toque e conectividade com a Internet para controlar um display ou robô, por exemplo. Os entusiastas dizem que a capacidade que o Android acrescentou abre as possibilidades para projetos de Arduino ainda mais.

A equipe é cautelosa, no entanto, a cerca de complicar Arduino. "O desafio é encontrar uma maneira de acomodar todas as coisas diferentes que as pessoas querem fazer com a plataforma", diz Mellis ", sem torná-lo complexo demais para alguém apenas começando."
Nesse meio tempo, eles estão desfrutando de sua fama improvável. Fãs viajam de muito longe só para ter uma bebida no pub em Ivrea, onde o fenômeno tem o seu nome. "As pessoas vão ao bar e dizer: 'Estamos aqui por causa da placa Arduino,'" diz Banzi. Há apenas um problema, acrescenta com uma gargalhada: O bartenders não sei o que é a placa Arduino.

http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino

Sobre o Autor
Contribuindo editor David Kushner é o autor de Mestres da Magia Jonny Doom (2003), e os miúdos do tubarão de cartão (2005), e Levittown: duas famílias, uma Tycoon, ea luta pelos direitos civis no Subúrbio Legendary América (2009). Em julho de 2011 ele escreveu sobre a controvérsia em torno de hacker britânico Gary McKinnon em "Hacker O Autista."