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