segunda-feira, 26 de dezembro de 2011

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.