domingo, 29 de janeiro de 2012

Problemas com Tipo de Cartão SD

Ao efetuar testes do post anterior me deparei com uma falha no programa. O cartão era reconhecido mas não possuia a partição reconhecida.

Mensagem do SDHC:


Initializing SD card...Wiring is correct and a card is present.


Card type: SDHC
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card



O erro fez com que eu tivesse que pesquisar vários tipos de cartões.

A maioria dos dados podem ser retirados dos sites na internet.

http://pt.wikipedia.org/wiki/Secure_Digital_Card

http://tecnologia.terra.com.br/noticias/0,,OI3300281-EI15607,00-Conheca+os+diferentes+tipos+de+cartoes+de+memoria.html

http://cartaodememoria.com/

https://www.sdcard.org/home/

Depois que o cartão correto foi colocado o programa funcionou normalmente.

Mensagem no SD2 já com arquivo criado:


Initializing SD card...Wiring is correct and a card is present.


Card type: SD2


Volume type is FAT16


Volume size (bytes): 1966800896
Volume size (Kbytes): 1920704
Volume size (Mbytes): 1875


Files found on the card (name, date and size in bytes):
TEST.TXT      2012-01-25 16:04:04 98

Testes com SD Card no Arduino

Durante a última semana executei alguns testes com um Shield SD Card da Itead Studio versão 1.0.





Fornecedor: Itead Studio
http://iteadstudio.com/store/index.php?main_page=product_info&cPath=18&products_id=232

Os pinos utilizados foram:

13- CLK
12- MISO
11- MOSI
10- CS

Nesta versão de shield o Chip Select se encontra no pino 10 portanto o Sketch teve seu programa alterado. No entanto, tudo funcionou perfeitamente. Foram feitos testes com Sketch SDCardInfo e ReadWrite.

Programa:
http://arduino.cc/en/Tutorial/CardInfo

O cartão utilizado foi um SD2, não fiz nenhum tipo de formatação e a leitura foi feita em FAT16.

O shield funciona perfeitamente com cartão SD2 convencional porém não funciona com o SDHC que possui adaptador com um micro cartão. Vou descrever o problema  no próximo post.

Técnicas de Download e Invasão

No post anterior eu dispus um link interessante com uma série de pastas, subpastas e arquivos para download. Porém existe um problema para o usuário comum. O problema é acessar cada pasta e salvar os arquivos com um clique do mouse levando em consideração que o número de pastas é muito grande. A solução computacional para isso está na plataforma Linux através do comando wget no terminal:

wget -r <url>

A recursividade nesse comando é indicada através do r minúsculo. Ou seja, todas as pastas e subpastas daquele endereço serão baixadas. Através desse comando é fácil baixar arquivos contendo links de pastas que podem incluir acesso a banco de dados. Depois do arquivo estar baixado basta dar uma vasculhada. Em sites como Wordpress e blogs convencionais os arquivos ficam sempre nos mesmos lugares, isso torna o acesso ainda mais fácil.

Eu não faço uso para invasão e isso constitui crime. Porém, tenho em mente que o conceito da palavra Hacker é desconstruir o funcionamento para construir novamente de forma diferente. Hacker não é quem invade e sim quem sabe como funciona e faz bom uso disso.

Antes de encerrar o post gostaria de lembrar que ainda existe um comando que determina o tamanho da pasta remota. E, além disso, o terminal do linux não deixar logs com dados de navegadores no site, até porque não é usado nenhum tipo de navegador nesse caso. O comando wget também é utilizado em robôs como mecanismos de busca dessa forma os robôs da Google que fazem a indexação dos sites.

sábado, 14 de janeiro de 2012

IR - Infrared no Arduino


Uma biblioteca sensacional do Arduino  é a <IRremote.h> para sinais Infra Red. Vou passar a dica geral para a transmissão e para recepção. Na transmissão, o código para envio é bem simples:


#include <IRremote.h>
IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12); // Sony TV power code
      delay(100);
    }
  }
}


Lógico, é necessário conectar o LED de transmissão.


Agora a parte da recepção do sinal. Para conectar o sensor de recebimento use o seguinte esquema:


Para o recebimento do sinal o código:


#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}


Agora a dica principal. Ao invés de construir um sistema de transmissão é possível usar qualquer tipo de controle remoto. Para isso é necessário saber que código o controle transmite. Agora o mais sensacional, pesquisando na internet encontrei um site onde é possível saber o código de transmissão de qualquer controle remoto e com isso montar um sistema de automação.

Os arquivos estão no site abaixo, sugiro o donwload antes que esses documentos saiam do ar! As pastas estão separadas por fabricante!
http://lirc.sourceforge.net/remotes/


Mais detalhes sobre a biblioteca IR
http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html


Mais sobre IR

http://rudrigolima.wordpress.com/2011/03/01/usando-controle-remoto-ir-para-acionamentos/

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.