Nesta página vocês terão mais informações sobre qualquer curso de informática.
Vocês poderão ter acesso a vídeos e artigos com cursos de informática.
Por: Gabriela Parente
Para o Site: Techmovie
Neste tutorial vamos mostrar os procedimentos necessários para efetuar a alteração do endereço IP de um adaptador de rede, além de outros parâmetros como os servidores DNS utilizados, endereço do gateway padrão, e também como configurar a máquina para usar endereços atribuídos dinamicamente via DHCP novamente.
Os comandos que serão mostrados são válidos para sistemas a partir da versão Windows 8.
Vamos aos procedimentos.
Abra o Windows PowerShell com privilégios de Administrador para realizar as tarefas a seguir.
1. Primeiramente, você pode consultar as configurações de rede atuais. Para isso, execute o comando a seguir:
Get-NetIPConfiguration
Com esse comando obtemos as configurações de rede detalhadas da máquina. Preste atenção no nome do adaptador, pois ele será necessário para realizar a configuração de seu IP.
2. Para alterar o endereço IP de uma interface de rede, vamos usar o comando New-NetIPAddress. Veja o exemplo a seguir:
New-NetIPAddress 192.168.1.35 -InterfaceAlias Ethernet -DefaultGateway 192.168.1.1 -AddressFamily IPV4 -PrefixLength 24
As opções empregadas no comando foram as seguintes:
Veja o resultado da execução deste comando:
3. Após configurar o endereço IP, vamos configurar os endereços dos servidores DNS que serão utilizados. Para isso vamos usar o cmdlet Set-DnsClientServerAddress. Veja o exemplo a seguir:
Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 8.8.8.8
Neste exemplo, as opções significam:
4. Após realizar as configurações, basta executar novamente o comando Get-NetIPConfiguration para verificar se elas foram realizadas com sucesso.
Get-NetIPConfiguration
Se você abrir as Propriedades do protocolo IPv4 nas Conexões de Rede do Painel de Controle, verá que os endereços aplicados com os comandos anteriores estarão configurados:
5. Caso você queira voltar a usar IP dinâmico na interface, use o comando Set-NetIPInterface:
Set-NetIPInterface -InterfaceAlias Ethernet -DHCP enabled
E em seguida resete os endereços dos servidores DNS configurados manualmente:
Set-DnsClientServerAddress -InterfaceAlias Ethernet -ResetServerAddress
Além disso, vamos resetar a configuração do gateway padrão utilizado:
Remove-NetRoute -InterfaceAlias Ethernet
Se perguntado se deseja mesmo prosseguir com a remoção, digite "A" para confirmar e pressione enter. Então, reinicie o adaptador de rede com o comando a seguir:
Restart-NetAdapter -InterfaceAlias Ethernet
Após executar os comandos acima a estação deverá voltar a usar IP e demais configurações obtidas a partir do servidor DHCP da rede.
Por: Gabriela Parente
Para o Site: Techmovie
Vamos usar um modelo (template) para o horário de logon, o que significa que teremos um usuário de teste de logon "teste01" já com o horário de logon desejado pré-configurado, e usaremos as informações desse usuário como modelo para os demais usuários que receberão a restrição de horários.
Nosso usuário atual de teste possui a seguinte configuração de horário de logon:
Neste modelo, o usuário não pode se logar aos sábados e domingos, e durante a semana o logon só é permitido entre as 08:00 e as 19:00, sendo negado nos demais horários.
Queremos aplicar essa mesma configuração a uma grupo de outros usuários sem ter de ajustar um por vez. Para isso usaremos um script do PowerShell associado a uma lista de usuários salva em um arquivo de texto. Vou chamar esse arquivo de "usuários.txt", e salvá-lo no diretório raiz (C:).
O arquivo usuários.txt deve conter os nomes de logon dos usuários que serão configurados, um por linha, como no exemplo:
Vamos ao script em si:
Digite os comandos no Windows PowerShell ISE, executando-o como Administrador:
1 - Se necessário, importe o módulo do Windows PowerShell:
Import-Module ActiveDirectory -ErrorAction SilentlyContinue
2 - Vamos criar um array para armazenar os horários de logon configurados em nosso usuário de teste (teste01) que serão atribuídos aos demais usuários:
[array]$horaLogon = (Get-ADUser teste01 -Properties logonHours).logonHours
3 - Agora vamos ler o arquivo de texto que contém os nomes dos demais usuários que receberão os horários de logon, iterar sobre cada usuário e atribuir as configurações presentes no array $horaLogon (você deve estar o mesmo diretório onde o arquivo de usuários foi salvo, ou então fornecer o caminho completo até ele no comando):
foreach ($user in Get-Content C:usuários.txt) { Get-ADUser -Identity $user | Set-ADUser -Add @{logonhours=$horaLogon} }
Veja o script completo e pronto para ser executado no PowerShell ISE:
Agora basta executar o script e verificar se o horário de logon foi alterado corretamente para os usuários listados no arquivo.
Observação: Caso o horário de logon já esteja configurado para os usuários, você deve substituir a opção -Add do comando por -Replace, ficando assim:
foreach ($user in Get-Content C:usuários.txt) { Get-ADUser -Identity $user | Set-ADUser -Replace @{logonhours=$horaLogon} }
Por: Gabriela Parente
Para o Site: Techmovie
Neste tutorial vamos mostrar como utilizar o Windows PowerShell para verificar a autenticidade de um arquivo baixado da Internet por meio do valor de hash disponibilizado no site de origem. Para isso faremos uso do cmdlet Get-FileHash.
1. Primeiro, calcule o hash com o cmdlet Get-FileHash:
Get-FileHash arquivo.iso -Algorithm Algoritmo-de-Hash | Format-List
Isso mostrará o hash no Powershell, de acordo com o algoritmo escolhido (MD5, SHA1, etc). Para salvá-lo em um arquivo de texto, faça o seguinte:
Get-FileHash arquivo.iso -Algorithm Algoritmo-de-Hash | Format-List > arquivo.txt
2. Copie o hash original do arquivo baixado (obtido no site de download) e execute o comando no formato a seguir para compará-lo com o hash presente no arquivo gerado no passo 1 (que também deve ser copiado):
"hash-original".equals("hash-calculado",1)
3. Se o valor retornado for 0, as duas strings são idênticas e, portanto, os hashes são iguais. Se o valor for diferente de zero, como -1, os hashes são diferentes e sua imagem iso está corrompida.
Baixamos uma imagem iso de instalação do sistema operacional Debian GNU/Linux. Após o download, copiamos o hash MD5 presente no próprio site da distribuição, cujo valor é b3cd3e2e6a74b93ab41059c47c2b43fd (imagem debian-8.5.0-i386-netinst.iso).
Vamos usar o PowerShell para verificar se essa imagem não foi corrompida durante o download. Para isso efetue os procedimentos a seguir:
1 - Vamos gerar o hash do arquivo que foi baixado e salvá-lo em um arquivo. Entramos no diretório de download do arquivo e emitimos o comando a seguir (o nome completo do arquivo é debian-8.5.0-i386-netinst.iso), especificando o hash adequado (MD5 no caso) e o nome de arquivo onde ele será salvo (hash-arquivo.txt):
Get-FileHash debian-8.5.0-i386-netinst.iso -Algorithm MD5 | Format-List > hash-arquivo.txt
Desta forma teremos o hash do arquivo que baixamos da Internet calculado e salvo no arquivo de texto hash-arquivo.txt. Veja o conteúdo do arquivo gerado contendo o hash calculado:
2 - Agora vamos efetuar a comparação do hash calculado com o obtido no site do distribuidor do arquivo que queremos verificar. Basta copiar e colar no prompt do PowerShell o hash original diretamente do próprio site, chamar o método equals() e passar como parâmetro para esse método o valor de hash contido no arquivo que acabamos de gerar (basta copiar e colar também):
Não se esqueça das aspas, pois se trata de uma comparação entre duas strings. O valor "1" após a vírgula no segundo parâmetro passado ao método indica que a comparação deve ser feita ignorando o caso (não diferenciando maiúsculas de minúsculas). Se quiser fazer essa diferenciação, omita o segundo parâmetro do método. Execute o comando como segue:
"b3cd3e2e6a74b93ab41059c47c2b43fd".equals("B3CD3E2E6A74B93AB41059C47C2B43FD",1)
Cuidado com espaços no início e final da linha, pois podem comprometer toda a verificação. O resultado será True se ambas as strings forem idênticas, e False se houver diferença entre elas (ou seja, se os hashes forem diferentes). Veja o resultado obtido a seguir:
Veja que em nosso caso o resultado foi True, evidenciando que o arquivo baixado está íntegro, pois seu hash é idêntico ao fornecido no site do desenvolvedor / distribuidor.
Obviamente poderíamos fazer a comparação dos hashes visualmente, lendo caractere por caractere, mas usando o método equals() podemos efetuar a comparação mais rapidamente, sem o perigo de cometer erros, e além disso o método pode ser utilizado em script para automatizar esse tipo de tarefa.
Abaixo temos a lista de algoritmos suportados pelo cmdlet Get-FileHash:
Por: Gabriela Parente
Para o Site: Techmovie
O sistema operacional Microsoft Windows, incluindo a versão mais recente (Windows 10) possui um comando interno de nome shutdown que permite ao usuário efetuar o desligamento ou a reinicialização da máquina local, ou ainda de máquinas remotas (a partir da rede).
O comando pode ser executado tanto no prompt de comandos clássico (cmd) quanto no prompt do Windows PowerShell. Executando-se o comando com o argumento /? podemos ver sua ajuda completa e muitas informações sobre o uso do comando:
Há várias opções de uso disponíveis para esse comando, sendo que destacamos as seguintes:
/l Fazer logoff /s Desligar o computador /r Reinicialização da máquina /a Anular o desligamento do sistema /m computador Especifica um computador de destino, diferente da máquina local, usando seu IP ou hostname (nome da máquina). /t xxx Definir um período de tempo limite antes do desligamento do sistema, em xxx segundos /i Exibir a interface gráfica de usuário do comando.
Vejamos alguns exemplos de aplicação dessas opções do comando shutdown:
1 - Desligar a máquina local (com tempo limite e aviso):
shutdown /s
2 - Reiniciar a máquina local (com tempo limite e aviso):
shutdown /r
3 - Desligar a máquina local, sem tempo limite e aviso:
shutdown /p
4 - Fazer logoff do sistema:
shutdown /l
5 - Definir que a máquina será desligada automaticamente em 10 minutos (600 segundos):
shutdown /s /t 600
6 - Desligar uma máquina remota de IP 192.168.1.103 (serviço de Registro Remoto e Firewalldevem estar configurados na máquina de destino, e o usuário deve ter permissão de administrador na máquina) com temporização de um minuto:
Devemos nos conectar à máquina remota com net use e então usar o shutdown para desligar ou reiniciá-la:
net use 92.168.1.103
[entrar com as credenciais do usuário da máquina remota]
shutdown /s /m 92.168.1.103 /t 60
7 - Cancelar o desligamento do sistema (durante o período de tempo limite, antes que o processo de desligamento se inicie!):
shutdown /a
Por: Gabriela Parente
Para o Site: Techmovie
Siga o procedimento a seguir para configurar Pastas de usuário home (Pasta Base) no Windows Server 2012:
1. Criar uma pasta raiz no servidor chamada bases para armazenar as pastas home, e compartilhá-la na rede. Você pode usar o nome que quiser para esta pasta na verdade. É interessante manter essa pasta raiz oculta, usando o símbolo $ após o nome do compartilhamento. Exclua o grupo Todos das permissões, e adicione o grupo Usuários do Domínio, e dê ao grupo Controle Total sobre a pasta.
2. Configure também as permissões em nível de arquivo: Na guia Segurança, clique em Avançadas; Clique então em Desabilitar Herança, e logo em seguida escolha Converter as permissões herdadas em permissões explícitas no objeto. Aplicar. Remova também as duas entradas de de Usuários. Aplicar, OK e feche as propriedades da pasta. 3. Agora vá ao Active Directory, localize um usuário, clique com o botão direito e escolha Propriedades. Clique então na aba Perfil. Lá você encontrará a configuração para Pasta Base. Há duas opções: Caminho Local: Permite configurar uma pasta base na máquina Cliente. Conectar: Permite configurar uma pasta base no servidor. Escolha uma letra de unidade (para mapeamento automático), e digite o caminho da pasta base ( ome-servidorbases$%username%); clique em Aplicar e depois em OK. Obs. Use a variável %username% para especificar a pasta do usuário.
4. Testar: no servidor, verifique se foram criadas automaticamente pastas para os usuários dentro da pasta raiz bases$. No cliente, efetue logoff e logon, e verifique se a pasta base aparece mapeada automaticamente em Iniciar -> Computador. É possível aplicar cotas, triagem de arquivos, etc a esta pasta.
Por: Gabriela Parente
Para o Site: Techmovie
O Console de Gerenciamento Microsoft, ou MMC (Microsoft Mangement Console), juntamente com as ferramentas que o utilizam, nos auxiliam a gerenciar com mais facilidade computadores, usuários e muitos outros aspectos da rede local. Além disso, o MMC permite integrar ferramentas variadas no Windows de forma centralizada. O MMC é um framework para o gerenciamento de aplicações que que nos oferece uma interface unificada para a administração dos sistemas. O MMC não possui nenhuma função de gerenciamento inerente - ele utiliza componentes plugáveis, chamados de snap-ins, para fornecer a funcionalidade administrativa desejada.
Para usarmos o MMC, adicionamos os snap-ins autônomos a um console MMC conforme nossa necessidade. Um console é um conteiner para snap-ins que utiliza o framework do MMC. Há literalmente dezenas de snap-ins pré-configurados que são disponibilizados pela Microsoft para uso em consoles personalizados. Geralmente, os consoles pré-configurados existentes no Windows Server 2012 possuem apenas um snap-in incorporado. Mas nós podemos criar nossos consoles contendo diversos snap-ins, como veremos logo adiante. Os snap-ins podem ter nós e componentes de extensão. Um nó define um nível dentro do console ou snap-in. Por exemplo, o console do meu servidor DHCP possui o nó raiz DHCP, e um nó de nível superior chamado srv100.boson.com, que define o servidor a ser gerenciado. Já elementos como Escopo e Filtros são componentes de extensão, que estendem a funcionalidade do snap-in. Cada entrada sob os nós de nível superior é uma extensão, e mesmo as extensões podem ter suas próprias extensões. Algumas dessas extensões podem, inclusive, serem implementadas como snap-ins autônomos, e além disso, várias são opcionais e podem ser desabilitadas ou acrescentadas a um snap-in existente se desejado.
Um Console MMC possui dois modos de operação: modo de autor e modo de usuário. NO modo de autor podemos criar e alterar um console adicionando ou removendo snap-ins e também ajustando configurações do console. Já no modo de usuário o design do console é travado, e não é possível alterá-lo. Este é o modo padrão dos consoles pré-configurados do sistema, portanto podemos utilizá-los mas não alterá-los. Criamos nossos consoles personalizados no modo de autor, e ao finalizá-los devemos alterar para o modo de usuário, pois é neste modo que as ferramentas de console devem rodar, por questões de segurança. Há três níveis de modos de usuário:
Podemos abrir os consoles existentes por meio de seus nomes de arquivos, cuja extensão é .msc (microsoft console). Segue abaixo uma pequena lista de ferramentas disponíveis no servidor e seus respectivos comandos. Experimente abrir algumas delas digitando o comando correspondente na caixa executar e pressionando enter:
Ferramenta | Comando |
ADDS | dsa.msc |
Gerenciamento do Computador | compmgmt.msc |
DHCP | dhcpmgmt.msc |
Visualizador de Eventos | eventvwr.msc |
Gerenciamento de Política de Grupo | gpmc.msc |
Serviços | services.msc |
Windows Firewall | wf.msc |
Backup do Windows Server | wbadmin.msc |
Gerenciador do Hyper-V | virtmgmt.msc |
DNS | dnsmgmt.msc |
Para abrir um console existente no modo de autor clique com o botão direito do mouse sobre o ícone do console e escolha a opção Autor. Isso também é válido para os consoles pré-configurados do sistema. Podemos evitar que um usuário abra um console no modo de autor por meio de uma política de grupo localizada em Configuração do Usuário -> Políticas -> Modelos Administrativos -> Componentes do Windows -> Console de Gerenciamento Microsoft -> Impedir que o usuário entre no modo de autor. Neste mesmo local também é possivel configurar snap-ins permitidos ou restritos e restringir usuários a uma lista de snap-ins específicos.
Para criarmos consoles MMC personalizados, seguiremos os passos a seguir:
Vamos criar um console personalizado de exemplo agora, contendo alguns snap-ins. Abra um novo console MMC. Para isso, abra a caixa Executar e digite o comando mmc, pressionando Enter logo após. Será aberto um console MMC vazio como o seguinte:
O console é dividido em três partes: o painel da esquerda é a árvore do console, que nos fornece uma lista hierárquica dos nós disponíveis no console, a partir do item Raiz do Console. O painel central é chamado de painel de detalhes, e seu conteúdo depende do item selecionado na árvore do console. E o painel do lado direito é o painel de ações, que contém atalhos para algumas das ações mais comuns no console, como chamar a ajuda e alterar o modo de exibição do painel. Vamos trabalhar com um console personalizado que nos permita gerenciar o Active Directory Domain Services, Gerenciamento de Diretivas de Grupo e Gerenciamento de Backup. Vamos começar renomeando a raiz do console para um nome mais significativo, como ADDS-GPO-Backup. Clique na Raiz do Console com o botão direito e escolha a opção Renomear. Digite o nome desejado e pressione Enter. Agora vamos adicionar os snap-ins desejados ao console. Clique no menu Arquivo -> Adicionar / remover snap-in. Será aberta a janela a seguir:
Na lista Snap-ins disponíveis procure pelo snap-in Pasta. Selecione-o e clique no botão Adicionar na parte central da tela. Adicione três pastas destas e então clique em OK para fechar a janela. Veja o resultado a seguir:
Renomeie as pastas para Active Directory, Backup e GPO.
Vamos adicionar os snap-ins principais agora. Clique no menu Arquivo -> Adicionar / remover snap-in. Clique no botão Avançada, do lado direito da tela, e então marque a opção "Permitir alteração do snap-in pai" na caixa de diálogo a seguir, e clique em OK:
Aparecerá agora um combobox chamado Snap-in pai na janela principal do console. Selecione neste combobox a pasta "Active Directory" e então procure na lista de snap-ins disponíveis o snap-in Usuários e Computadores do Active Directory. Selecione-o e clique em Adicionar. Repita o processo para as outras duas pastas, adicionando os snap-ins Backup do Windows Server (se perguntado, marque Computador Local) e Gerenciamento de Política de Grupo respectivamente. Veja o resultado abaixo:
Após adicionar os snap-ins é possível adicionar ou retirar extensões, clicando sobre o nome do snap-in na lista da Snap-ins selecionados e então clicando no botão "Editar extensões..." do lado direito, se desejado. Clique em OK para finalizar a criação do console MMC personalizado. Veja o console criado a seguir (clique nas setas ao lado das pastas na árvore do console para expandi-
las):
O último passo necessário é salvar o console criado. Primeiramente, vamos ajustar o modo do console. Para isso, clique no menu Arquivo -> Opções, e na caixa de diálogo que será aberta, selecione o modo desejado. Vou utilizar o modo Modo de Usuário - acesso completo. Marque também a opção "Não salvar alterações nesse console" para impedir que o usuário salve alterações realizadas no console durante o uso. Você ainda pode alterar o ícone do console se quiser, clicando no botão "Alterar ícone" na parte superior da janela e selecionando um ícone do sistema ou carregando um ícone personalizado de outro local qualquer. Clique em Aplicar e em
OK para finalizar essas configurações:
Para salvar, clique agora no Menu Arquivo -> Salvar, e forneça o nome desejado ao console. Eu salvei na área de trabalho do sistema, para facilitar na hora de procurar e abrir esse console. É isso aí! Console MMC personalizado criado com sucesso. Para usá-lo, basta abri-lo com um clique duplo simples, e se você quiser, pode criar atalhos para esse console em outras partes do sistema. Lembre-se de que ao abrir esse console, ele estará no modo de usuário, e não será possível alterar sua estrutura. Se precisar alterar algo, abra-o no modo de autor com o botão direito do mouse.
Por: Gabriela Parente
Para o Site: Techmovie
Neste tutorial vamos mostrar como realizar um backup do Active Directory no Windows Server 2012. Para isso efetuamos um backup de um item denominado Estado do Sistema. O Estado do Sistema (System State) contém diversos itens, tais como:
Com um backup do estado do sistema você será capaz de restaurar em um servidor além do Active Directory, também o Registro do Windows, sites do IIS e outros itens. É possível inclusive restaurar o estado do sistema em um servidor diferente, desde que tenha o hardware idêntico ao do servidor de onde o backup se originou.
Abra o recurso de Backup do Windows Server clicando em Ferramentas -> Backup no painel de gerenciamento do servidor. No Painel de Ações, clique no item Backup único...para abrir o assistente de backup:Na tela Opções de backup escolha a opção "Opções diferentes" para que possamos especificar os itens de backup desejados, e clique no botão Avançar:Na tela Selecionar Configuração de Backup escolha a opção Personalizar e clique no botão Avançar:Na tela Selecionar Itens para Backup clique no botão Adicionar Itens para que possamos escolher os itens que farão parte de nosso backup (no caso, o Estado do Sistema):Na janela Selecionar Itens, marque a checkbox Estado do Sistema e clique no botão OK:Após adicionar o item Estado do Sistema, clique no botão Avançar para prosseguir com o backup:Na tela seguinte vamos especificar o tipo de destino. Como vamos utilizar uma unidade conectada diretamente ao servidor, selecione a opção "Unidades locais". Clique em Avançar:Na tela Selecione o destino do backup, escolha a unidade que receberá os dados a serem salvos. No caso, será a unidade Backup (N:). Clique em Avançar para prosseguir:Na tela de Confirmação, verifique se o item Estado do Sistema está listado na janela de Itens do backup, e clique no botão Backup para iniciar a cópia de segurança dos dados do ADDS:Aguarde enquanto o backup é realizado. Esse processo pode levar vários minutos, devido ao volume de dados, e pode ser acompanhado na janela Progresso do backup:Quando o backup estiver finalizado, você verá a mensagem Concluído no status da janela de Progresso do backup. Clique no botão Fechar para encerrar o processo.Excelente! Backup do Active Directory / do Sistema realizado com sucesso! Você pode conferir os arquivos de backup que foram criados olhando o conteúdo do drive de destino utilizado. Em meu caso foram copiados cerca de 7,76 GB de dados:
Site: http://www.bosontreinamentos.com.br/redes-wireless/o-espectro-eletromagnetico/
Por: Gabriela Parente
Para o Site: Techmovie
O Espectro Eletromagnético consiste em uma classificação das ondas eletromagnéticaspelo seu comprimento de onda, em ordem crescente, mostrando a aplicação das diversas frequências mostradas na forma de uma figura ou gráfico, como se pode ver a seguir:
Site: http://www.bosontreinamentos.com.br/redes-wireless/introducao-as-redes-sem-fio-wireless/
Por: Gabriela Parente
Para o Site: Techmovie
Uma rede wireless (“sem fio”, em inglês) é uma rede de dispositivos interconectados sem o uso de cabos metálicos ou ópticos, na qual a transmissão de sinais se dá por meio de ondas eletromagnéticas transmitidas e recebidas pelos equipamentos envolvidos.
O princípio de transmissão de sinais em uma rede sem fio é similar ao da transmissão de voz e música por uma rádio FM: os dados são modulados em uma onda portadora, que é transmitida por uma antena transmissora e captada por uma antena receptora conectada ao equipamento remoto, o qual processará a informação recebida e a disponibilizará para o usuário.
Uma definição livre de ondas eletromagnéticas é descrita a seguir (retirada de fontes na Internet):
“A radiação eletromagnética é uma oscilação, em fase, dos campos elétricos e magnéticos, que, autossustentando-se, encontram-se desacoplados das cargas elétricas que lhe deram origem.
As oscilações dos campos magnéticos e elétricos são perpendiculares entre si e podem ser entendidos como a propagação de uma onda transversal, onde as oscilações são perpendiculares à direção do movimento da onda (como as ondas da superfície de uma lâmina de água), que pode se deslocar através do vácuo, ou entendidos como o deslocamento de pequenas partículas, dentro do ponto de vista quântico, chamadas fótons.
A radiação eletromagnética são ondas que se auto-propagam pelo espaço. Parte de todo o espectro consegue ser interpretada através do olho dos diversos animais e, para cada espécie, denomina-se essa fatia de luz de luz visível. A radiação eletromagnética compõe-se de um campo elétrico e um magnético, que oscilam perpendicularmente um ao outro e à direção da propagação de energia.
A radiação eletromagnética é classificada de acordo com a frequência da onda, que em ordem decrescente da duração (período T) da onda são: ondas de rádios, micro-ondas, radiação terahertz (Raios T), radiação infravermelha, luz visível, radiação ultravioleta, Raios-X e Radiação Gama.”
As ondas eletromagnéticas possuem três propriedades principais:
A amplitude é a “altura” da onda, ou seja, a medida do valor de pico da energia transmitida. Quanto maior a amplitude de uma onda, maior será sua energia intrínseca.
A frequência de uma onda se refere ao número de ciclos completos que ocorrem a cada segundo. Por exemplo, se uma onda oscila uma vez por segundo, sua frequência é de um ciclo por segundo; se ela oscila mil vezes por segundo, sua frequência é de mil ciclos por segundo.
Na prática, usamos a unidade de medida denominada Hertz (abreviado por Hz) para representar a frequência de uma onda, sendo que 1 Hz = 1 ciclo por segundo. Então:
Onda com mil oscilações por segundo = Frequência de 1000 Hz.
Podemos (e devemos!) usar prefixos multiplicadores para representar os valores de frequências, pois na maioria das vezes são valores muito altos, o que dificulta a leitura sem a abreviação correta. Os prefixos mais utilizados são os seguintes:
Como exemplo, podemos citar um sinal de um telefone sem fio que opere na frequência de 900 MHz, o que equivale a 900 milhões de ciclos por segundo.
As Frequências de duas ondas distintas podem ser vistas na figura a seguir. Note a diferença de frequência entre as duas ondas representadas, sendo a primeira de frequência mais alta do que a segunda e, portanto, de comprimento de onda (tamanho da onda) menor:
A fase de uma onda pode ser entendida como a posição relativa da onda em relação a um ponto específico de outra onda; assim, uma onda pode estar em fase com outra (ondas idênticas), ou defasada de x graus, como por exemplo ondas defasadas em 180º (ondas totalmente inversas entre si).
A fase é uma característica muito importante em diversas áreas de pesquisa e tecnologia de ondas eletromagnéticas.
Na figura a seguir vemos o deslocamento de fase que ocorre entre duas ondas eletromagnéticas de igual amplitude e frequência, chamado em inglês de “Phase Shift”. Note que a segunda onda inicia em posição diferente da primeira, 90º defasada:
Por: Gabriela Parente
Para o Site: Techmovie
Instalação do Hyper-V como uma Função do Windows Server 2008 R2No primeiro artigo sobre Virtualização com Hyper-V aprendemos a istalar o servidor Hyper-V Server 2008 R2 Core, sem interface gráfica. É possível também instalar o Hyper-V como uma função em um servidor Windows Server 2008 R2 com GUI. Para isto, siga os passos abaixo: Abra o Gerenciador de Servidores, clique em Funções e escolha Adicionar Função. Será aberta a tela abaixo. Marque a opção “Hyper-V” e clique em “Próximo”.
Na próxima tela, leia a Introdução ao Hyper-V e identifique quais interfaces de rede em seu servidor serão utilizadas para configurar as redes virtuais do Hyper-V. Se desejar informações adicionais, clique nos links abaixo da seção “Informações Adicionais”. Clique em “Próximo”.
Agora você irá selecionar os adaptadores de rede que serão utilizados para compor as redes virtuais. Selecione todos os adaptadores desejados clicando na caixa de seleção ao lado de cada um, e clique em “Próximo”:
Na próxima tela, revise as opções de instalação e, se tudo estiver de acordo com o desejado, clique em “Instalar”.
Aguarde enquanto o Gerenciador do Hyper-V é instalado.
Após a instalação, verifique os resultados e clique em “Fechar” para encerrar o assistente:
Será necessário reiniciar o servidor para concluir o processo de instalação do Hyper-V. Na caixa de diálogo “Deseja reiniciar agora?” clique em “Sim”:Após a reinicialização, o Hyper-V continuará a ser configurado. Aguarde enquanto o
processo é concluído:
Na tela “Resultados da Instalação”, verifique se aparece a mensagem “Instalação bem-sucedida” e clique em “Fechar” para encerrar o processo. Reinicie o servidor mais uma vez para finalizar o procedimento.
Site: http://www.bosontreinamentos.com.br/videos/vmware-workstation-9-criar-e-configurar-maquina-virtual/
Por: Gabriela Parente
Para o Site: Techmovie
Por: Gabriela Parente
Para o Site: Techmovie
Vamos aprender a criar uma máquina virtual no XenServer, desta vez em um Pool de servidores. O processo é, basicamente, o mesmo de criar as VMs em um servidor isolado, porém devemos selecionar o Pool e não os servidores na hora de criar a máquina virtual.
Vou usar dois servidores XenServer conectados em Pool, rodando a versão 6.2 do sistema, ambos acessando (via pool) um repositório de VHDs NFS criado em um servidor FreeNAS.
Para começar o processo, a partir do XenCenter (em uma estação de gerenciamento), clique no nome do Pool com o botão direito do mouse e selecione a opção New VM...
Para este exemplo vou criar uma máquina virtual do Windows Server 2012. Vou selecionar essa opção de sistema na tela Template. Clique em Next >:
Agora damos um nome para a VM. Vou usar o nome sugerido, Windows Server 2012 (64-bit), mas você pode dar o nome que quiser. Clique em Next >
Agora vamos localizar o instalador do sistema. Ele pode estar em uma mídia inserida no drive do servidor, ou em um repositório de imagens .iso. Vou usar a imagem iso que possuo no repositório de nome Iso teste.
Veja a imagem selecionada. Clique em Next >:
Na próxima tela devemos selecionar o Home Server para a VM. Possuo dois servidores nesse pool, de modo que posso escolher onde a máquina virtual será executada. Porém, vou escolher a primeira opção, "Don´t assign this VM a home server", de modo que a máquina virtual será sempre executada no servidor que tiver os recursos de hardware necessários no momento, automaticamente. Clique em Next >:
Agora configuramos o número de processadores virtuais (vCPUs) e a memória RAM reservadas para a máquina virtual. Usarei uma vCPU e 2 GB de RAM. Clique em Next >:
Agora vamos configurar o storage da VM. Possuo um repositório VHD configurado, usando um servidor FreeNAS, e a VM será armazenada nele. Porém, por padrão o XenServer me sugere usar um disco de 24 GB, o que é muito pouco. Clique no botão Properties para editar esse disco, aumentando seu tamanho:
Vou aumentar o tamanho do VHD (Virtual Hard Disk) para 50 GB. Você pode usar o tamanho que quiser, desde que haja espaço livre no disco físico. Clique então em OK.
O próximo passo é configurar a rede na máqiuna virtual. Selecione as interfaces de rede desejadas (vou usar duas interfaces, de um total de quatro que tenho nesse servidor) e clique em Next >:
Tudo pronto para finalizar a criação da máquina virtual. Revise as configurações escolhidas e, se tudo estiver correto, clique em Create Now. Vou deixar a opção Start the new VM automatically marcada para iniciar a máquina virtual logo na sequência, assim já farei a instalação do SO.
A máquina virtual então será inicializada. Selecione-a no painel do lado esquerdo no XenCenter, e clique na guia Console para visualizar a tela do Windows Server:
Agora é só realizar a instalação do sistema operacional normalmente:
E após alguns minutos, temos o sistema virtual do Windows Server 2012 instalado e pronto para ser utilizado:
Processo concluído com sucesso!
Por: Gabriela Parente
Para o Site: Techmovie
O Oracle VirtualBox é um software para virtualização que pode ser utilizado tanto em ambientes corporativos quanto em ambientes domésticos. É um produto que possui inúmeros recursos para criação de máquinas virtuais, suportando praticamente qualquer sistema operacional convidado que você deseje instalar - incluindo inúmeras versões do Windows, distribuições Linux, BSD, Solaris, Minix, OS/2 e até mesmo Mac OS X (com algumas modificações).
O VirtualBox é um software Open Source, sendo distribuído livremente de acordo com os termos da licença GNU GPL (General Public License), versão 2. Ele pode ser executado em ambientes Windows, Linux, Mac e Solaris.
Nesta primeira parte de nosso tutorial sobre o VirtualBox vamos mostrar como obter o software e instalar o produto em uma máquina com Windows. Os passos são muito similares caso você queira instalar o programa em outro sistema, como uma distro Linux ou o Apple OS X.
O site para download do software é www.virtualbox.org, cuja página inicial você vê na figura abaixo (acessado em 29/04/16). Veja que bem no centro da página há um botão grande para download do VirtualBox, cuja versão mais atual é a 5.0. Clique nele para ir à página de downloads e baixar o programa:
Uma vez na página de downloads, selecione a versão desejada do software. Como pretendemos instalá-lo no Windows, você deve clicar no link "x86/amd64", na linha onde se lê "VirtualBox 5.0.20 for Windows hosts". Caso deseje instalar o programa em outro sistema operacional, procure na lista a versão correspondente ao seu sistema. Há versões disponíveis para Mac OS X, Linux e Oracle Solaris:
Clique em Download para baixar o programa:
E aguarde enquanto o download é realizado. Esse processo pode demorar alguns minutos, dependendo da velocidade de sua conexão. O arquivo baixado tem 108 MB de tamanho.
Após terminar de baixar o programa, execute o arquivo obtido para abrir o Assistente de Instalação do Oracle VirtualBox (Setup Wizard). Clique no botão Next para iniciar o processo de instalação:
Na tela seguinte é possível selecionar quais recursos do programa serão instalados ou não. Para uma instalação padrão não é necessário alterar nenhum parâmetro nesta tela. Apenas clique em Next para prosseguir:
Na próxima tela há três opções que podem ser ativadas - criação de atalhos no Desktop (Área de Trabalho) e na barra de tarefas e registrar associação de arquivos. Eu desmarquei a segunda opção (Create a shortcut in the Quick Launch Bar) para não poluir minha barra de tarefas. Clique em Next para prosseguir:
Na tela seguinte aparecerá um aviso sobre as interfaces de rede. Por padrão, ao instalar o VirtualBox, as conexões de rede do computador são desativadas temporariamente enquanto o recurso de rede do programa é configurado. Caso você esteja realizando algum download no momento, espere até que o download esteja finalizado, sob pena de perder os arquivos que está baixando. Clique em Yes para prosseguir com a instalação então.
Pronto para instalar. Clique no botão Install para que o Oracle VirtualBox seja instalado de acordo com as informações especificadas nas telas anteriores:
Caso a caixa de diálogo Controle de Conta de Usuário apareça, clique em Sim para permitir que o VirtualBox seja instalado no computador. Note que o fornecedor verificado será detectado com sendo Oracle Corporation.
Agora aguarde enquanto o VirtualBox é instalado em seu computador:
No meio do processo de instalação será perguntado se deseja instalar também os controladores USB no programa. Marque a caixa 'Sempre confiar em software da "Oracle Corporation"', do lado esquerdo da caixa de diálogo, e clique em "Instalar" para instalar esses drivers. Eles são importantes para que você possa acessar dispositivos USB a partir das máquinas virtuais, como cartões de memória e pendrives.
Após aguardar mais alguns instantes, a instalação do VirtualBox será finalizada. Deixe marcada a opção "Start Oracle VM VirtualBox 5.0.20 after installation" para que o programa seja aberto após finalizar o instalador, e clique no botão "Finish" para encerrar o processo de instalação.
Pronto! Oracle VirtualBox instalado com sucesso! Veja a tela inicial do Gerenciador do programa, onde criamos, configuramos e até excluímos as máquinas virtuais:
Site: http://www.bosontreinamentos.com.br/virtualizacao/oracle-virtualbox-criando-uma-maquina-virtual/
Por: Gabriela Parente
Para o Site: Techmovie
Nesta segunda parte de nosso tutorial sobre o Oracle VM VirtualBox, vamos mostrar como proceder para criar uma nova máquina virtual a partir do Gerenciador, a qual será utilizada posteriormente para a instalação de um sistema operacional selecionado.
Para começar, abra o Gerenciador do Oracle VM VirtualBox. Abaixo podemos visualizar o Gerenciador, e você pode ver que no meu sistema já existem diversas máquinas virtuais criadas - você pode criar quantas máquinas virtuais precisar, respeitando sempre o limite de espaço em disco rígido disponível no seu computador físico.
Para criar uma nova máquina virtual, clique no botão "Novo", no canto superior esquerdo da tela:
Será aberto um assistente de criação de máquina virtual. Na primeira caixa de diálogo você deve entrar com um nome para sua máquina virtual, selecionar o tipo de sistema operacional, e a versão que será instalada. No meu caso, selecionei o tipo Microsoft Windows e a versão Windows 2012 (64-bit). Configure de acordo com o sistema que você pretende instalar, e clique em Próximo para prosseguir.
Na tela seguinte você irá ajustar a quantidade de memória RAM ser destinada à sua máquina virtual. Cuidado para não destinar memória demais, pois como a RAM é compartilhada entre seu computador físico e a VM, existe um limite de uso para que a VM não interfira no funcionamento do seu sistema hospedeiro. Eu configurei um pouco menos de 2 GB para a VM (1966 MB, como se pode ver na figura). Você pode alocar a memória RAM clicando e arrastando a barra azul ou simplesmente digitando a quantidade de memória desejada na caixa do lado direito. Ajuste de acordo com sua necessidade e disponibilidade, e então clique no botão "Próximo" para prosseguir:
Agora iremos criar um disco rígido virtual, o qual irá receber a instalação do sistema operacional posteriormente. Há três opções disponíveis nesta tela:
Vou usar a opção padrão pré-selecionada, "Criar um novo disco rígido virtual agora", pois ainda não temos um disco para esse sistema. Clique então no botão "Criar":
Na tela seguinte você pode escolher o tipo de arquivo de disco rígido virtual. É possível criar arquivos compatíveis com diversos produtos de virtualização, como VHD para o Microsoft Hyper-V ou Citrix XenServer, VMDK para sistemas VMware ou HDD para Parallels. Aqui, vamos manter o tipo padrão do VirtualBox, que é o VDI (VirtualBox Disk Image). Clique em Próximopara continuar:
Na próxima tela você deve fornecer um nome para o arquivo de disco rígido virtual, e a localização no disco físico deste arquivo. Digite o nome desejado, ou mantenha o padrão sugerido, e ajuste o tamanho do seu disco rígido virtual de acordo com a necessidade de seu sistema, e disponibilidade de espaço em disco físico. Vou alocar 35 GB para esse HD; aloque o que for necessário, e clique em "Criar" para finalizar o processo.
Processo finalizado. A máquina virtual foi criada com sucesso, e você pode vê-la na lista de VMs do Gerenciador do Oracle VM VirtualBox. Porém, note que o sistema operacional ainda não foi instalado, o que deve ser feito posteriormente - o que fizemos até aqui equivale, grosso modo, a montar um computador físico a partir de componentes selecionados.
Site: http://www.bosontreinamentos.com.br/virtualizacao/introducao-virtualizacao/
Por: Gabriela Parente
Para o Site: Techmovie
Neste artigo vamos falar sobre uma das tecnologias mais importantes e promissoras da atualidade: a Virtualização. Essa tecnologia - ou conjunto de tecnologias, para ser mais exato - encontra aplicação em inúmeras áreas da TI moderna, sendo o pilar sobre o qual, por exemplo, a Computação em Nuvem é constituída. A finalidade da Virtualização é fornecer uma versão virtual de tecnologias essenciais em computação, como Hardware, Armazenamento e Redes.
Quando usamos técnicas de virtualização, portanto, os dispositivos físicos são representados por entidades de software:
A virtualização de hardware é uma combinação da engenharia de hardware e software que visa a criação de Máquinas Virtuais. Uma máquina virtual, ou VM, é uma abstração do hardware de computadores que permite a uma única máquina física agir como se fosse várias, ou seja, executando diversos sistemas operacionais simultaneamente e de forma isolada entre si. Três são os componentes principais em um sistema de hardware virtualizado:
A figura a seguir ilustra a relação entre esses três componentes:
Porque deveríamos implantar técnicas de virtualização em uma empresa? Vários são os motivos que apontam nessa direção. Podemos citar, por exemplo:
Devido a esses motivos, e outros, a Virtualização encontra inúmeras aplicações na TI atual, tais como:
E muitas outras aplicações.
A Virtualização traz inúmeros benefícios para a TI moderna, sendo que os trÊs citados a seguir se destacam:
Além disso, o uso da virtualização também traz outros benefícios, tais como:
E, além de todos esses benefícios citados, ao empregarmos sistemas virtualizados também encontraremos aplicações para:
Claro que essa tecnologia não é nenhuma bala de prata, não resolvendo todos os problemas existentes em TI, e também possui suas limitações. Podemos citar, entre outras:
As Máquinas virtuais são criadas sobre uma camada de software denominada Hypervisor, que pode rodar sobre um sistema operacional hospedeiro na máquina, ou ainda ser executado de forma autônoma. Assim, é possível emular componentes de hardware como CPU, Discos, RAM, Redes e também instalar sistemas operacionais convidados. Uma máquina virtual é, em última instância, apenas um arquivo gravado em um disco no servidor que contém todo um sistema operacional com seu kernel, bibliotecas, interfaces e aplicações de usuário. Com o uso de máquinas virtuais é possível criar múltiplos sistemas operacionais na mesma máquina física e executá-los simultaneamente. Por exemplo, podemos ter em um mesmo servidor uma máquina virtual Linux, uma Windows Server 2012 R2 e um sistema FreeBSD rodando ao mesmo tempo.
Um Hypervisor é o software utilizado para realizar o gerenciamento das máquinas virtuais. Também são conhecidos como VMM - Virtual Machine Manager (Gerenciador de Máquina Virtual). Os hypervisors foram desenvolvidos a partir do início dos anos 70 para rodar em mainframes, e são disponibilizados para PCs por diversos fabricantes atualmente. Existem dois tipos principais de hypervisores disponíveis: Tipo 1 e Tipo 2.
Há dois tipos de Hypervisors principais:
A figura a seguir ilustra a arquitetura básica de um hypervisor tipo 1 (bare metal, "na lata"): E na figura seguinte, um hypervisor tipo 2 (hosted, "hospedado"):
Alguns hypervisors não são facilmente classificáveis, devido ao modo como são executados. Exemplos:
Ambos são módulos do kernel, que convertem o SO hospedeiro em um hypervisor Tipo 1. Porém, os sistemas Linux e FreeBSD são sistemas operacionais de propósito geral, com diversas outras aplicações rodando concomitantemente, de modo que os hypervisors acima podem ser considerados como sendo de Tipo 2 também.
A lista abaixo traz os nomes de alguns dos hypervisors mais populares e utilizados atualmente. Não se trata de uma lista completa, mas apenas uma pequena listagem ilustrativa do ecossistema de softwares para virtualização:
Nos links a seguir você poderá obter mais informações sobre os sistema de virtualização citados anteriormente: VMware: www.vmware.com XenServer: xenserver.org Qemu: wiki.qemu.org KVM: www.linux-kvm.org Oracle VirtualBox: www.virtualbox.org Citrix: www.citrix.com É isso aí pessoal! Nos próximos artigos vamos explorar mais a fundo o conceito de virtualização, aprender a utilizar os softwares citados neste artigo, e também vamos conhecer outras tecnologias correlatas e derivadas, com Computação em Nuvem (Cloud Computing), Appliances e Contêineres.
Site: http://www.bosontreinamentos.com.br/virtualizacao/o-que-e-cloud-computing-computacao-em-nuvem/
Por: Gabriela Parente
Para o Site: Techmovie
Para que uma empresa possa operar e levar adiante seus negócios, necessita investir tempo e dinheiro em infraestrutura de TI, incluindo hardware, software e diversos tipos de serviços. O processo de crescimento dessa infraestrutura pode custar muito dinheiro e ser muito lento quando executado internamente. Com as tecnologias de computação em nuvem podemos deslocar parte da infraestrutura para data centers na Internet, gerenciados por empresas provedoras de serviços, diminuindo os custos e tempo anteriormente gastos. As empresas podem simplesmente se conectar à nuvem, e usar seus recursos numa base de "pay-per-use", ou "pay-as-you-go", pagando apenas pelos recursos utilizados, como fazemos com serviços tradicionais como energia elétrica.Uma nuvem ("cloud") representa um conjunto de recursos que o usuário não enxerga diretamente, como Servidores, aplicações, serviços, equipamentos de storage e roteamento. Com a computação em nuvem, as empresas podem armazenar e processar seus dados em data centers de terceiros. que podem estar localizados em qualquer parte do planeta. A premissa básica da computação em nuvem é o compartilhamento de recursos com o intuito de alcançar uma economia de escala, de forma similar a um serviço comoditizado, como o serviço de energia elétrica. A nuvem permite que as empresas economizem com custos de infraestrutura, como servidores e switches, de modo a se focar em seu negócio em vez de gastar tempo e dinheiro com essa infra. As principais tecnologias que habilitam a computação em nuvem são a Internet e a Virtualização.
As características básicas da tecnologia de computação em nuvem são:
A computação em nuvem oferece diferentes tipos de serviços baseados no provisionamento e disponibilização de recursos. As principais categorias de serviços de nuvem são:
Trataremos a seguir de uma descrição sucinta dos modelos de serviço apresentados.
Neste modelo é fornecido ao cliente o provisionamento de processamento, armazenamento, rede e recursos básicos de computação, na forma de máquinas e dispositivos virtuais, de modo que o usuário possa instalar e rodar softwares, incluindo sistemas operacionais. Note que o usuário não tem acesso à infraestrutura da nuvem em si, somente aos sistemas disponibilizados por meio do modelo. Ex. de serviço: Amazon EC2; Dropbox; Amazon S3
Neste modelo o cliente é capaz de implementar na nuvem softwares criados ou adquiridos por ele próprio, utilizando linguagens de programação, bibliotecas e ferramentas fornecidas pelo próprio provedor. Desta forma ele pode utilizar a infra da nuvem para desenvolver e rodar aplicações. Ex. de serviço: Microsoft Azure / Google App Engine
Aqui o usuário pode utilizar aplicações fornecidas pelo provedor que rodam na nuvem. Essas aplicações podem ser executadas em um navegador web ou em uma interface de programa específica. Foco: Informação e aplicação - Web Services Ex. de serviço: Google Apps / Google Docs; Serviços de Web Mail
No geral, uma nuvem é implementada usando um dos seguintes modelos:
Uma nuvem privada é projetada e operada por uma empresa. Pode ser hospedada interna ou externamente, e gerenciada por uma equipe interna ou até mesmo terceirizada. No geral, apresenta alto nível de segurança, e faz uso das infra de rede interna da empresa. Podemos construir uma nuvem privada usando softwares como o OpenStack ou Citrix XenServer.
Neste modelo, a nuvem á aberta ao público e qualquer um pode utilizá-la (pagando uma taxa, geralmente). É de propriedade de um provedor de serviços de nuvem. Como exemplos temos a AWS (Amazon Web Services) e o GCP (Google Cloud Platform)
Aqui, os modelos de nuvem pública e privada são combinados para oferecer um serviço diferenciado, que permite:
Pontos importantes sobre segurança A preocupação com a segurança na nuvem é o motivo número 1 pelo qual algumas empresas evitam o uso de tecnologias de cloud computing. Algumas perguntas devem ser realizadas quando temos em mente a implantação de tecnologias de nuvem, sendo as mais comuns:
Esses questionamento são muito importantes para definir o modelo de nuvem a ser implantando, e como será gerenciada a segurança relativa ao sistema.
A lista a seguir traz alguns dos provedores de serviços de cloud computing mais importantes na atualidade (sem ordem específica):
Alguns fornecedores de soluções para Virtualização também oferecem serviços de cloud. É isso aí! Essa foi uma pequena introdução às tecnologias de Computação em Nuvem.
Por: Gabriela Parente
Para o Site: Techmovie
Basicamente, há três tipos de técnicas de criptografia:
Este tipo de criptografia utiliza uma única chave.
O emissor utiliza essa chave para encriptar a mensagem, e o receptor utiliza a mesma chave para decriptá-la (chave compartilhada - shared key).
Por utilizar a mesma chave na encriptação e decriptação, trata-se de uma técnica de Criptografia Simétrica.
A lista a seguir enumera alguns exemplos de algoritmos de chave privada conhecidos:
Estudaremos mais a fundo vários deles em outra lições aqui no site.
Neste tipo de criptografia usamos duas chaves distintas, de modo a obtermos comunicação segura através de canais de comunicação inseguros.
Trata-se de uma técnica de Criptografia Assimétrica pelo fato de usar um par de chaves diferentes.
Cada participante possui uma chave pública e uma chave privada.
A chave privada é secreta, e só o proprietário a conhece, ao passo que a chave pública é compartilhada com todos que se comunicarão conosco.
Por exemplo: Fábio quer se comunicar com Ana de forma segura. Então, Fábio encripta a mensagem com a chave pública de Ana, de modo que a mensagem só pode ser aberta usando-se a chave privada de Ana - que só ela possui.
Na criptografia assimétrica o transmissor e o receptor possuem chaves diferentes, com tamanhos que variam entre 512 e 2048 bits, e é usada em modo de Bloco (que estudaremos posteriormente).
Exemplos de algoritmos de chave pública:
A técnica de Hash não utiliza uma chave como as técnicas vistas anteriormente. Ela utiliza um valor de hash de tamanho fixo, o qual é um valor matemático computado sobre o texto plano, usando algoritmos específicos.
As funções de Hash são usadas para verificar a integridade dos dados para garantir que não tenham sido inadvertidamente alterados.
Por exemplo, verificações de senhas podem usar funções de Hash também.
Alguns exemplos de funções de hash utilizadas atualmente incluem:
Por: Gabriela Parente
Para o Site: Techmovie
Uma operação Lógica é uma operação matemática em Álgebra Booleana (com valores binários - bits), cujos valores podem ser iguais a 0 ou 1, o que corresponde a falso ou verdadeiro, respectivamente.
As operações lógicas mais comuns empregadas em criptografia são:
É a operação de negação (valor inverso). Ao aplicarmos a operação NOT a um valor lógico, ele muda seu estado.
Vamos analisar a sua Tabela da Verdade, que é uma tabela que mostra todas as combinações possíveis de entradas de valores e as saídas geradas com a aplicação dos diversos operadores lógicos:
Tabela da Verdade:
Esta operação retorna valor 1 (verdadeiro) somente se todos os valores de entrada também forem verdadeiros.
Tabela da Verdade:
A operação lógica OR retorna 1 caso pelo menos uma das entradas possuir valor igual a 1; caso contrário, retorna o valor 0.
Tabela da Verdade:
A operação XOR é uma das mais utilizadas em criptografia. Essa operação retorna valor 1 se as entradas tiverem valores diferentes entre si. Se as entradas forem iguais, não importando seu valor, o resultado será zero.
Tabela da Verdade:
A operação XOR possui uma propriedade importante:
A ⊕ B ⊕ A = B, para todo A, B
De modo que:
(A ⊕ A) ⊕ B = 0 ⊕ B = B; a operação XOR é, então, reversível, o que a torna muito utilizada em algoritmos criptográficos.
Sejam os valores binários 1001 e 0101:
Site: http://www.bosontreinamentos.com.br/seguranca/web-crawlers-e-arquivo-robots-txt/
Por: Gabriela Parente
Para o Site: Techmovie
Um webcrawler (rastreador web) é um bot da Internet que navega sistematicamente pelas páginas da web com o propósito de indexá-las.
Também é conhecido pelo nome de Web Spider.
Funcionamento de um Webcrawler
O webcrawler utiliza uma lista inicial de URLs para visitar, que são conhecidas como seeds (sementes).
Ele identifica todos os hyperlinks nessas URLs, e os adiciona à lista de URLs a visitar.
As páginas visitadas são então copiadas para serem processadas posteriormente com o intuito de indexá-las.
Os motores de busca utilizam webcrawlers para manterem seus bancos de dados atualizados.
Exemplo de Webcrawler
O webcrawler usado pelo Google para indexar as páginas da Web para construir a busca do google é o Googlebot
No endereço abaixo, é possível ler informações completas sobre esse webcrawler:
https://support.google.com/webmasters/answer/182072
Um arquivo robots.txt restringe acesso dos robôs webcrawlers a um site.
Os webcrawlers, antes de indexar um novo site descoberto, verificam se ele possui um arquivo robots.txt que os impeçam de acessar determinadas páginas.
No website abaixo encontramos informações sobre como criar e utilizar um arquivo robots.txt:
https://support.google.com/webmasters/answer/156449
Site: http://www.bosontreinamentos.com.br/seguranca/introducao-a-criptografia/
Por: Gabriela Parente
Para o Site: Techmovie
Criptografia é o estudo da aplicação de técnicas para comunicação e armazenamento seguro de dados em sistemas computacionais (entre outros).
A palavra Criptografia vem do grego “Kryptós”, “oculto” e “Graphein”, “escrita”, portanto “escrita oculta (ou secreta)”.
Algoritmo de Criptografia: Método matemático empregado para encriptar / desencriptar dados com o uso das chaves de criptografia.
Invasor: Alguém que tenta roubar informações, se passar por pessoas que eles não são, desativar sites da web, excluir dados sem permissão, parar serviços como uma loja online, etc.
Encriptação ou cifragem é a conversão de dados legíveis para um formato ilegível (texto cifrado) por pessoas não-autorizadas, usando uma chave e um algoritmo criptográfico.
Seu objetivo é proteger a privacidade ao armazenarmos dados ou trocarmos informações com outras pessoas.
O receptor da mensagem encriptada pode decriptá-la e ler seu conteúdo, no formato original.
Desencriptação ou decriptação é o processo inverso da encriptação, ou seja, a transformação de dados encriptados (ilegíveis) em dados legíveis, usando uma chave e um algoritmo criptográfico (cifra).
Criptoanálise é o processo de transformação de dados cifrados (encriptados) em dados legíveis (decriptados) sem que se conheça a chave de encriptação.
Portanto, trata-se de “quebrar” a encriptação dos dados para obter acesso ao conteúdo das mensagens, porém com o intuito de descobrir falhas nos algoritmos para torná-los mais seguros, validá-los ou descartá-los.
Um exemplo clássico de criptoanálise foi realizada com o algoritmo de criptografia de redes wireless WEP.
Há quatro princípios básicos que todo sistema de segurança em comunicações deve seguir. São eles:
Um dos conceitos mais importantes é o da Integridade, que diz respeito ao conteúdo das informações trocadas entre transmissor e receptor.
Deve-se garantir que o conteúdo da mensagem chegue íntegro a seu destino, ou seja, que não seja alterado de nenhuma forma no meio do caminho.
Outro princípio importante é o da Autenticação.
A autenticação assegura que a mensagem foi realmente originada pelo remetente, e não por outra pessoa. Assim podemos ter certeza de quem enviou a mensagem.
Confidencialidade significa que a informação não está disponível para pessoas e processos que não tenham autorização para acessá-la e utilizá-la. Somente pessoas autorizadas podem ter acesso à informação transmitida ou armazenada.
Deve-se também evitar que uma mensagem, após ter sido enviada, seja repudiada pelo transmissor - ele não poderá negar que a transmitiu.
Para isso podemos utilizar, por exemplo, assinaturas digitais - técnica que estudaremos ao longo do curso.
Uma chave é um valor matemático que determina como uma mensagem em texto plano será criptografada para produzir um texto cifrado, e ela também é necessária para que possamos recuperar a mensagem original.
A segurança de um sistema de criptografia deve residir em suas chaves, e os algoritmos devem ser sempre de conhecimento público.
A chave é um número secreto usado por um algoritmo de criptografia para alterar o texto plano e convertê-lo em texto cifrado, e é gerada aleatoriamente.
Se mesma chave for usada para encriptar e decriptar os dados, temos uma chave simétrica.
A chave é necessária pois manter o algoritmo em segredo não é efetivo - os invasores invariavelmente quebram o algoritmo (descobrem seu funcionamento).
Um exemplo histórico disso é o algoritmo RC4, que foi postado na Internet em 1994 por hackers anônimos.
Características de uma chave
Comprimento da chave: número de bits na chave (às vezes bytes).
Espaço de chaves: coleção de todos os valores matemáticos possíveis que tenham o mesmo comprimento de uma chave. Na prática, é o tamanho da chave, medido em bits.
Uma chave de comprimento n gera um espaço de chaves de 2n valores distintos. Uma chave de 64 bits portanto tem um intervalo de 0 a 264 combinações possíveis. Cada bit adicional dobra o tempo necessário para quebrar a chave - ou seja, chaves maiores dificultam o trabalho de um invasor.
Site: http://www.bosontreinamentos.com.br/seguranca/privacy-in-social-media-privacidade-nas-redes-sociais/
Por: Gabriela Parente
Para o Site: Techmovie
Site: http://www.bosontreinamentos.com.br/noticias/malware-mr-black-transforma-roteadores-em-zumbis/
Por: Gabriela Parente
Para o Site: Techmovie
Uma nova ferramenta foi desenvolvida com a capacidade de desligar o seu computador tão rápido, que pessoas "não autorizadas" (vide autoridades) não terão a chance de examiná-lo e descobrir suas informações confidenciais presentes na máquina no momento do acesso. "USBKill", como o script é chamado, transforma qualquer pendrive USB comum em um interruptor que força um desligamento do computador após sua remoção. Desta forma, é possível desligar a máquina rapidamente caso haja a necessidade - por exemplo, se estiver trabalhando em algo “confidencial” e alguém se aproximar. O script foi postado no GitHub por um usuário chamado "Hephaestos," que proclama que a ferramenta irá impedir que os usuários se tornem o próximo Ross Ulbricht - o ex-chefão do mercado de drogas on-line Silk Road - cujo laptop estava ligado ao ser apreendido...
Hephaestos sugere que os usuários prendam o pendrive USB com o USBKill em seus pulsos como medida de segurança adicional, para que o computador seja automaticamente desligado com um simples movimento do braço. O desenvolvedor auto-proclamado do "software para a liberdade", explica que o software é mais eficaz quando combinado com uma máquina virtual que se exclui automaticamente após a reinicialização, prevenindo as autoridades de conseguirem acessar qualquer coisa caso consigam arrancar de alguma forma as senhas de acesso ao sistema de você. Claro que, para que o processo seja totalmente efetivo, ainda é preciso que você criptografe todo o seu disco rígido - afinal, o script desliga a máquina mas ela obviamente pode ser religada novamente, a não ser que esteja usando uma VM como sugerido. O USBKill será atualizado com recursos adicionais de tempos em tempos, mas o estado atual é mais do que capaz de entregar o que prometeu. Você pode baixar o script USBKill aqui Fontes: Boson Treinamentos
Site: http://www.bosontreinamentos.com.br/noticias/malware-mr-black-transforma-roteadores-em-zumbis/
Por: Gabriela Parente
Para o Site: Techmovie
A empresa de segurança Incapsula descobriu um grande botnet utilizado para lançar ataques de negação de serviço distribuídos (DDoS). Porém, este botnet, chamado de Mr. Black, não foi feito para infectar computadores. Em vez disso, ele cria um exército de roteadores zumbis, prontos para obedecer a comandos remotos. A Incapsula observou o tráfego deste botnet ao longo de 111 dias. Durante esse tempo, foram identificados 40.269 endereços IP usados no ataque. Os equipamentos infectados apareciam espalhados ao redor do mundo, vindo de 1600 ISPs (provedores de serviço de internet). O interessante neste botnet é que ele não foi projetado usando nenhuma técnica nova de ataques. A Incapsula descobriu que os roteadores no botnet estavam todos configurados para aceitar gerenciamento remoto, significando que os usuários - os atacantes - poderiam descobri-los online e realizar alterações de configuração. Quase todos os roteadores também usavam nomes de usuário e senhas padrão, de modo que tomar o controle desses equipamentos acabou sendo uma tarefa trivial.
Por: Gabriela Parente
Para o Site: Techmovie
A Rússia quer criar seu próprio sistema operacional para smartphones em um esforço para reduzir a sua dependência da tecnologia ocidental. O Ministro russo das comunicações Nikolai Nikiforo anunciou planos para substituir o iOS da Apple e plataformas Android do Google por um novo software baseado em sailfish, um sistema operacional móvel de código aberto, desenvolvido pela fabricante de telefones da Finlândia Jolla. A equipe da Jolla se reuniu com membros da comunidade de tecnologia russa no início deste mês para abrir caminho no desenvolvimento do novo software.
Por: Gabriela Parente
Para o Site: Techmovie
A empresa de segurança japonesa Secom está lançando um drone que será ativado automaticamente quando um intruso for detectado e irá segui-lo ao mesmo tempo em que o filma e envia o vídeo a quem quer que faça o monitoramento do local O quadricóptero foi mostrado nesta semana na inauguração da exposição International Drone Expo que ocorreu no centro de convenções Makuhari, próximo a Tóquio, onde cerca de 50 empresas se reuniram para exibir drone e outras tecnologias relacionadas. O UAV (Unmanned Aerial Vehicle / Veículo Aéreo Não-Tripulado) será oferecido a empresas no Japão que operam em áreas de terreno relativamente grandes - grandes o suficiente para necessitar de uma câmera de segurança voadora - tais como shopping centers e supermercados com estacionamentos muito grandes. O drone pode se conectar a um sistema de detecção de intrusos que envia feixes de raios laser ao longo do perímetro de um lugar seguro. Quando o sensor detecta algum movimento no local, o drone automaticamente decola de uma estação de recarga nas proximidades para investigar a ocorrência. Ele pode enviar vídeo em tempo real de um invasor ou veículo e até mesmo filmar a placa do automóvel para uma central de segurança da Secom para análise. “O drone não sai das dependências do usuário porém grava imagens dos invasores no local”, disse o porta-voz da Secom Akihiko Takeuchi.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/noticias/pesquisadores-rastreiam-usuarios-de-metro-usando-dados-do-acelerometro-de-smartphones/
Por: Gabriela Parente
Para o Site: Techmovie
Pesquisadores da área de segurança rastrearam pessoas indo de casa para o trabalho com mais de 90% de precisão usando dados roubados de acelerômetros em smartphones com Android. Em um artigo descrevendo a pesquisa, entitulado "Podemos te rastrear se você pegar o Metrô: Rastreando Usuários do Metrô usando Acelerômetros em Smartphones” (Tracking Metro Riders Using Accelerometers on Smartphones), uma equipe de segurança da Universidade de Nanjing, na China disse que eles foram capazes de usar acelerômetros (detectores de movimento) como um meio para um ataque com o intuito de rastrear usuários, com até 92% de precisão. Sensores de movimento estão frequentemente presentes nos smartphones modernos. Quando se trata de dispositivos Android, a equipe disse que eles foram capazes de acessar e roubar as leituras do acelerômetro de modo a rastrear os usuários, em parte porque estes dados não precisam de permissões específicas de acesso.
Os pesquisadores usaram um classificador de intervalos construído com técnicas de aprendizado de máquina (machine learning) que misturam dados de diferentes fontes para rastrear suas vítimas, mesclando dados do acelerômetro e da localização das estações de trens para determinar onde um usuário estava localizado durante sua viagem. Um malware instalado nos smartphones de oito voluntáiros automaticamente lia e enviava as leituras dos acelerômetros dos aparelhos. Testando sua teoria no metrô de uma grande cidade chinesa, os pesquisadores foram capazes de rastrear os usuários de Android em quatro e seis estações com uma precisão de 89 e 92%, respectivamente. As leituras e a precisão poderiam ser aumentadas se uma rede maior de estudos fosse conduzida, coletando mais dados em outras estações. Assim explica a equipe: "Descobrimos que se uma pessoa com um smartphone pega o metrô, uma aplicação maliciosa no smartphone dela pode usar as leituras do acelerômetro para rastreá-la, ou seja, inferir onde (em quais estações) ela entra e sai do trem. A razão para isso é que os trens do metrô correm sobre trilhos, fazendo com que seus padrões de movimento sejam distinguiveis de carros ou ônibus rodando nas ruas. É possível que o deslocamento de um trem entre duas estações vizinhas produza uma impressão distinta nas leituras de um acelerômetro de 3 eixos do dispositivo móvel, permitindo que atacantes em potencial possam deduzir a rota de viagem de um passageiro."
O estudo diz também que esse ataque é mais eficaz e poderoso do que ataques usando GPS ou dados da rede de celular, pois os trens do metrô geralmente percorrem rotas subterrâneas que prejudicam sinais de celular, e apps baseados em GPS geralmente necessitam de permissões específicas dos usuários para serem habilitados. A equipe disse que este ataque pode ser potencialmente ameaçador por várias razões. Plataformas móveis, incluindo o Android, permitem que os apps acessem os dados do acelerômetro sem a necessidade de permissões especiais ou consentimento específico do usuário., e portanto é “extremamente simples” criar malware que pode acessar o acelerômetro. Desta forma, a programação diária de uma vítima pode ser inferida a partir este rastreamento. Um atacante poderia descobrir o deslocamento diário de uma vítima. e após alguns dias de trabalho conhecer detalhes como por exemplo quando a vítima está em casa ou no trabalho, quando ela sai para realizar outras atividades, para onde ela vai, qual caminho usa, e até prever onde a vítima estará em dias e horários específicos. Um prato cheio para assaltantes e sequestradores, por exemplo. Fonte:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/criptografia-cifra-de-feistel/
Por: Gabriela Parente
Para o Site: Techmovie
A maioria dos algoritmos de criptografia simétrica de bloco possuem uma estrutura descrita por Horst Feistel, da IBM, em 1973. As entradas do algoritmo são blocos de texto plano de comprimento 2x bits e um chave K. O bloco de texto plano é dividido em duas metades, L0 e R0. Essas duas metades passam por n rodadas de processamento e então se combinam para produzir o bloco de texto cifrado. Cada rodada r recebe como entrada Lr-1 e Rr-1, derivadas da rodada anterior, assim como uma subchave Kr, derivada da chave geral K. Essas subchaves são diferentes de K entre si pois são geradas a partir de K com um algoritmo de geração de chaves. As iterações possuem todas a mesma estrutura. Uma substituição é realizada na metade esquerda dos dados, por meio da aplicação de uma função F na metade direita dos dados com a chave e então obtendo-se o XOR da saída desta função e da metade esquerda dos dados. Adicionalmente, uma permutação é realizada invertendo-se as duas metades dos dados. A função F é chamada de round function.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/criptografia-paradigmas-e-tecnicas-de-autenticacao/
Por: Gabriela Parente
Para o Site: Techmovie
O processo de Autenticação fornece garantia sobre a identidade de um usuário, verificando se você é quem diz ser. Podemos chamar de Reclamante a pessoa (ou sistema) cuja identidade será verificada. Credenciais são a evidência que um reclamante apresenta para estabelecer sua identidade. Assim o sistema de autenticação nos fornece proteção contra ataques como man-in-the-middle, mascaramento e spoofing, por exemplo.
- Autenticação de entidade: um usuário afirma ter uma identidade legítima em um sistema. - Autenticação de origem de dados: Fornece evidência de que dados, como uma mensagem de email, foram originados de um usuário legítimo. A autenticação de entidade pode ainda se subdividir em: - Unilateral: Apenas uma das partes envolvidas na comunicação se autentica - Mútua: Ambas as partes devem se autenticar.
Senhas são o mecanismo de autenticação mais usado para autenticar um usuário. Neste modelo, o reclamante prova sua identidade apresentando o conhecimento de uma string de caracteres. As senhas são uma das maiores vulnerabilidades de um sistema de autenticação, pois as pessoas tendem a escolher senhas fáceis de memorizar - e, por isso, fáceis de adivinhar. Tipos de ataques a senhas - Pode ser descoberta se for transmitida sem criptografia em uma rede; - Um intruso entra em um sistema e lê o arquivo de senhas; - Alguém pode adivinhar facilmente uma senha mal escolhida; - Pode ser possível quebrar uma senha usando um ataque de dicionário; - É possível inclusive enganar um usuário fazendo-o revelar sua senha.
Um reclamante pode fornecer evidência de sua identidade ao demonstrar a posse de um token. Um token é um objeto físico, como uma chave, um documento de identidade, um dispositivo eletrônico ou um smart card, por exemplo. Geralmente os tokens são usado em conjunto com uma senha para fornecer um grau mais elevado de certeza com relação à identidade de um reclamante.
Smart Cards Um Smart Card é um token do tamanho de um cartão de crédito que contém um microprocessador, memória para armazenar programas e dados, e contatos elétricos usados como interface com um leitor de cartões, o qual também fornece energia elétrica ao dispositivo. Geralmente o smart card possui um valor secreto armazenado, como uma chave privada de assinatura digital ou um número secreto, usado para realizar a autenticação do portador do cartão. Tokens Desconectados Token de senha de uso único síncrono” É um tipo de token que não possui conexão física nem lógica com o computador cliente. Possuem um display que mostra um código de autenticação que muda, por exemplo, a cada minuto. O código pode ser usado então para realizar autenticação em um sistema, geralmente on-line, como um bankline.
A Biometria fornece garantia da identidade de um reclamante baseado em características humanas físicas, comportamentais e morfológicas mensuráveis. A biometria é usada geralmente em combinação com outros paradigmas de autenticação para obtermos um nível mais alto de segurança. Exemplos de Biometria Padrões de Retina - testam os padrões únicos de vasos sanguíneos no tecido da retina de uma pessoa. Impressões Digitais - Padrões únicos de impressão digital do usuário. Formato da mão - Exame das medidas geométricas da mão de uma pessoa. Padrões de Voz - O sistema explora os padrões vocais, acústicos, fonéticos ou até mesmo linguísticos. Assinatura - Padrões únicos de uma assinatura manual convencional.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/o-que-e-uma-vulnerabilidade-zero-day/
Por: Gabriela Parente
Para o Site: Techmovie
Uma Vulnerabilidade Zero-Day é uma vulnerabilidade em um software ou sistema de computador que ainda não foi revelada ou ainda não foi corrigida, geralmente desconhecida do fabricante do software afetado por ela. Desta forma, pode ser usada para causar danos a programas do computador, redes, informações dos usuários e serem usadas para propagar vírus, worms ou outros tipos de malwares, em um processo que chamamos de Exploit Zero-Day. Consideram-se vulnerabilidades zero-day como sendo de alta periculosidade, e exploits são geralmente realizados (ataques zero-day/zero day exploits) antes da falha se tornar pública (ou até no mesmo dia), antes de uma solução ter sido criada pelo desenvolvedor do softwre afetado.
As vulnerabilidades zero-day podem ser exploradas de várias formas. É muito comum, por exemplo, um usuário visitar um website falso, que contém código malicioso para explorar vulnerabilidades nos próprios navegadores do sistema do usuário ao serem abertos. Basicamente o que um atacante deseja é explorar a vulnerabilidade para infiltrar no sistema da vítima malware ou spyware, ou ainda obter acesso não autorizado às informações do usuário ou seus arquivos. Essa exploração da vulnerabilidade é chamada de ataque Zero-Day.
Podemos considerar que uma vulnerabilidade zero day tem uma espécie de ciclo de vida como segue:
O intervalo de tempo entre a exploração da falha por um atacante e a sua correção pode variar entre algumas horas até alguns meses - sim, algumas vulnerabilidades passam meses em aberto sem que ninguém saiba sobre ela - a não ser, possivelmente, criminosos digitais.
Para que o fabricante / desenvolvedor do software vulnerável possa corrigir a falha, após identificá-la, é necessário liberar um patch de correção para download público. Desta forma, patches de segurança são lançados regularmente para que seja possível corrigir erros e vulnerabilidades que afetem os softwares, incluindo as vulnerabilidades zero-day. Por isso é importante sempre manter seu sistema atualizado, assim como os softwares instalados em sua máquina. Isso inclui os navegadores web, aplicativos em geral e o próprio sistema operacional. Não é simples a proteção preventiva contra ataques zero-day. Já que a premissa básica desse tipo de vulnerabilidade é justamente o fato de elas não serem conhecidas, é difícil se proteger contra elas. Mesmo redes e sistemas considerados seguros estão na verdade sob risco com relação a esse tipo de vulnerabilidade, já que a segurança se aplica geralmente aos fatores de risco que são conhecidos.
Podemos citar alguns exemplos de ataques zero-day que ocorreram muito recentemente (em 2014 e 2015), como:
Não existe um procedimento oficial para proteção contra exploits zero-day, pois é completamente imprevisível a descoberta de tais vulnerabilidades. Mas algumas precauções podem ser tomadas, como por exemplo:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/o-que-e-esteganografia/
Por: Gabriela Parente
Para o Site: Techmovie
Esteganografia é a prática de esconder mensagens, arquivos ou imagens/vídeos dentro de outras mensagens, arquivos ou imagens/vídeos. O termo Esteganografia deriva da combinação das palavras em grego steganos (protegido, oculto) e graphein (escrever). É, portanto uma espécie de "escrita oculta".Usando técnicas de esteganografia podemos esconder mensagens dentro de uma imagem, por exemplo, de modo que as pessoas que olharem para essa imagem não terão nenhuma ideia de que ali há informações ocultas. A esteganografia é uma arte antiga. Essa técnica já era citada no século 15 em tratados de criptografia como o Steganographia de Johannes Trithemius. Naquela época já se ocultavam mensagens com o uso de tintas invisíveis em cartas, por exemplo. Hoje podemos esconder informações em arquivos de computador. Por exemplo, podemos incluir em uma fotografia digital uma mensagem oculta, fazendo alterações em alguns bits específicos da imagem, sem que isso altere de forma perceptível a imagem em si. Uma das formas mais comuns de esteganografia consiste em esconder uma mensagem dentro de uma imagem. Os tipos de imagens mais usadas para esse fim são:
Os arquivos de imagem possuem característica que podem ser exploradas, como sua resolução, altura e largura. Para que seja possível esconder uma mensagem em um arquivo de imagem são necessários dois arquivos:
De posse desses arquivos, podemos escolher o método que será utilizado para inserir a mensagem na imagem. Os métodos mais comuns incluem:
O processo funciona conforme ilustra a imagem a seguir:O destinatário, ao receber a imagem, executará o processo inverso para extrair dela a mensagem oculta, conforme podemos ver na figura abaixo:
Vamos ver alguns exemplos de como esconder mensagens em arquivos digitais, com o uso de ferramentas específicas. Vamos trabalhar com a ferramenta freeware OpenPuff, que é uma ferramenta profissional de esteganografia e marcas d´água que suporta vários formatos de arquivos portadores (arquivos que carregam as mensagens ocultas), como por exemplo:
Baixe o OpenPuff clicando neste link, e logo após descompacte o arquivo zipado em uma pasta do seu computador (versão para Windows). Após descompactar o arquivo, entre na pasta do OpenPuff e abra o programa executando o arquivo OpenPuff.exe: Aguarde enquanto o Gerador de Números Pseudo-Aleatório Criptograficamente Seguro (CSPRNG) é alimentado:Em alguns segundos aparecerá a interface do OpenPuff, que é dividida em três seções: Steganography (Esteganografia), Volatile marking & Carrier Clean Up (Marca d´água e limpeza do arquivo portador), e Help & Options (Ajuda e Opções): Vamos esconder uma mensagem em um arquivo de imagem agora. Primeiramente, vamos criar a mensagem de teste. Abra um editor de textos, como o Bloco de Notas, e digite qualquer texto desejado nele. Salve e saia do programa (batizarei meu arquivo de texto de "mensagem.txt" para maior clareza): Excelente. Escolha também uma imagem (ou várias) para ser a portadora da mensagem. Agora, volte ao OpenPuff e clique no botão "Hide" na seção "Steganography" para que possamos inserir o texto do arquivo mensagem.txt na imagem escolhida. Será aberta a janela a seguir: Vamos configurar alguns parâmetros agora para que possamos ocultar nossa mensagem na imagem escolhida. Você precisa, primeiramente, inserir no mínimo uma senha, clicando na caixa de texto "Cryptogtaphy (A)" e digitando-a. Essa senha será usada para proteger os dados ocultos no arquivo, e também para alimentar (seed) a criptografia e codificação da mensagem. Escolha a senha de sua preferência. Opcionalmente, você pode escolher mais duas senhas, que devem ser digitadas em "(B)" e "Scrambling (C)". Vou usar apenas o padrão da senha (A) - desmarque os checkboxes "Enable (B) e (C)" neste caso. Vamos adicionar a mensagem ao OpenPuff agora. Clique no botão "Browse", na caixa "Target", seção (2) Data (no canto superior direito da tela), para escolher a mensagem-alvo, que será incorporada à imagem escolhida (no caso, meu arquivo mensagem.txt), e clique em "Abrir". Note que os dados a serem ocultados podem ter no máximo 256MB de tamanho no OpenPuff. Você pode compactar e comprimir os arquivos de dados se desejar, ANTES de ocultá-los com o OpenPuff: Após entrar com a mensagem, clique no botão "Add", no canto inferior esquerdo, e escolha a imagem que será a portadora dessa mensagem. Clique em Abrir para adicionar a imagem: Escolhi a imagem "Mestre-Yoda.png" que estava em meu computador. Você pode adicionar quantas imagens quiser - adicione-as até a barra inferior ficar verde:Excelente!. Já temos tudo o que precisamos para esconder a mensagem dentro da imagem do Mestre Yoda. Na caixa "(4) Bit selection options" podemos fazer ajustes como a razão entre dados e ruído, sendo esses ajustes úteis por exemplo quando queremos espalhar os dados secretos entre vários arquivos portadores, bastando para isso expandir a seleção do formato de arquivo portador selecionado e escolher o valor desejado. Não vou mudar nada neste exemplo. Agora clique no botão Hide Data! no canto inferior direito para realizar a operação esteganográfica, e escolha um local para salvar a imagem contendo sua mensagem oculta. Em alguns instantes, você deve receber a mensagem "1/1 carrier processed", indicando que os dados foram processados com êxito: Clique em "OK", verifique o relatório e então feche a caixa de diálogo clicando no botão "Done":
Pronto! A imagem contendo sua mensagem secreta foi salva no computador. Abra-a e verifique-a minuciosamente - você perceberá que não há rastros visíveis da mensagem ocultada na imagem - mas a mensagem está lá:
Vamos agora realizar o processo de extração da mensagem oculta por esteganografia em outro arquivo - no caso, no arquivo de imagem do Mestre Yoda que usamos anteriormente. Usaremos novamente o software OpenPuff, pois foi com ele que ocultamos nossa mensagem na foto. Para isso, siga os passos a seguir: 1. Abra o OpenPuff e, na tela inicial do programa, clique no botão "Unhide", na seção Steganography: 2. Entre com as senhas nos campos correspondentes da seção (1). Em nosso exemplo, usei apenas a senha "Cryptography (A)", e por isso desmarquei os checkboxes "Enable (B)" e "(C)". Em seguida, clique no botão Add Carriers na seção (2) Carrier Selection para selecionar a imagem que contém a mensagem oculta: 3. Após selecionar a imagem, clique no botão "Unhide!" na seção (3), na parte inferior do lado direito da janela, e selecione o diretório de destino da mensagem. Clique em OK logo após.4. Clique em OK novamente para finalizar a tarefa: 5. E então clique em Done para fechar o relatório da tarefa. Abra o diretório escolhido e encontre a mensagem, que deve estar lá. Abra-a para verificar seu conteúdo:Veja a mensagem recuperada a seguir:Procedimento finalizado com sucesso! Ocultamos uma mensagem por esteganografia em um arquivo de imagem usando o software OpenPuff, e logo após conseguimos recuperar a mensagem oculta.
Neste artigo usamos o software OpenPuff para exemplificar o uso da esteganografia, mas existem muitos softwares disponíveis para esse fim. Podemos citar, entre outros:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/conheca-o-lynis-ferramenta-de-auditoria-de-seguranca-open-source/
Por: Gabriela Parente
Para o Site: Techmovie
O Lynis é uma ferramenta de auditoria de segurança open source desenvolvida pela Cisofy, utilizada para avaliar o nível de segurança de sistemas baseados em Unix / Linux. Essa ferramenta é executada diretamente no host, e não necessita instalação (opcional), podendo desta forma realizar testes de segurança mais extensos do que com softwares scanners de vulnerabilidades comuns. Lynis é escrito em Shell Script e distribuído sobre a licença GPL. Para obter o Lynis basta visitar site da Cisofy, ou se preferir clique no link a seguir para baixar o arquivo compactado do software: Download do Lynis. O Lynis roda em uma grande variedade de sistemas derivados do Unix, como por exemplo:
E em muitos outros sistemas, incluindo até mesmo o Raspberry Pi.
O Lynis é um software bastante flexível, sendo utilizado em várias tarefas relacionadas à segurança, como:
E muitas outras tarefas.
Vou demonstrar o uso básico do Lynis em uma máquina que executa o Linux Debian. Ele pode ser obtido e instalado de várias formas diferentes, descritas a seguir:
Siga os passos a seguir para obter e executar o pacote (tem de ser root para usar o software): 1. Entre no diretório /usr/local/ para baixar o software: cd /usr/local/ 2. Baixe o pacote usando o comando a seguir: wget https://cisofy.com/files/lynis-2.1.1.tar.gz3. Descompacte o arquivo baixado: tar -xvzf lynis-2.1.1.tar.gz 4. Entre no diretório da aplicação criado: cd lynis 5. Agora vamos executar a aplicação pela primeira vez. Para isso, basta rodar o comando ./lynis seguido das opções desejadas. Vou usar a opção de modo rápido (quick mode), que não necessita de interação do usuário. Para isso emita o comando a seguir: ./lynis --quick E agora é só aguardar enquanto os testes são realizados. Você pode acompanhar no terminal o andamento de cada teste:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/steghide-esteganografia-no-linux-esconder-dados-em-imagens-e-outros-arquivos/
Por: Gabriela Parente
Para o Site: Techmovie
O steghide é um software para esteganografia, que roda em Linux, e que pode ser utilizado para ocultar dados secretos em diversos tipos de arquivos de áudio e imagens. Com o steghide é possível comprimir os dados incorporados, além de criptografá-los e realizar verificação de integridade por meio de checksums. Os formatos de arquivo portador suportados pelo steghide são os seguintes: JPEG, BMP, WAV e AU. Sintaxe do steghide: steghide comando [argumentos]
extract, --extract Extrair os dados secretos de um arquivo esteganografado info, --infoMostrar informações sobre um arquivo (portador ou esteganografado) encinfo, --encinfoMostrar uma lista de algoritmos de criptografia e os modos que podem ser usados. Não precisa de argumentos. version, --version Mostrar informações resumidas da versão do softrware.Também Não precisa de argumentos. license, --license Mostrar a licença do steghide. Não precisa de argumentos. help, --help Mostrar a ajuda. Não precisa de argumentos. Para ocultar uma mensagem em um arquivo de imagem ou som, usamos o comando embed seguido dos argumentos apropriados. Os principais argumentos são os seguintes: -ef, --embedfile arquivo Especificar o arquivo que será incorporado ou seja, o arquivo que contém a mensagem secreta. Se este argumento for omitido ou o nome do arquivo for o caractere -, os dados secretos serão lidos diretamente da entrada padrão (teclado). -cf, --coverfile arquivo Especificar o arquivo portador que será usado para incorporar os dados secretos. Esse arquivo deve estar em um dos formatos a seguir: AU, BMP, JPEG ou WAV. Se este argumento for omitido ou o nome do arquivo for o caractere -, o steghide lerá o arquivo portador a partir da entrada padrão. -sf, --stegofile nome_arquivoEspecificar o nome para o arquivo esteganografado que será criado. Se não for especificado um nome, então os dados secretos serão incorporados diretamente no arquivo portador sem salvá-lo com outro nome. -e, --encryption algoritmo [ modo ] | modo [ algoritmo ]Especificar os parâmetros de criptografia. Esta opção deve ser seguida por uma ou duas strings que identifiquem um algoritmo de criptografia e/ou modo. Use o comando encinfo para obter os nomes de todos os algoritmos de criptografia disponíveis e modos suportados. A criptografia padrão é a Rijndael-128 (AES), no modo CBC. Caso você não queira usar criptografia, use o argumento -e none -z, --compress nível Especificar o nível de compressão. O nível de compressão pode ser qualquer número entre 1 e 9, onde 1 significa mais velocidade e 9 significa melhor compressão. -Z, --dontcompress Não comprimir os dados secretos antes de incorporá-los.it. -K, --nochecksum Não embutir um checksum CRC32 checksum. -N, --dontembedname Não embutir o nome do arquivo que contém a mensagem secreta. Ao usarmos essa opção, o extrator precisará especificar um nome de arquivo para que o steghide saiba onde escrever os dados. Para extrairmos uma mensagem oculta de um arquivo esteganografado usamos o comando extract, que possui os argumentos a seguir: sf, --stegofile arquivo Especificar o arquivo esteganografado (que contém os dados secretos embutidos). Se este argumento for omitido ou o nome do arquivo for o caractere -, o steghide lerá o arquivo esteganografado a partir da entrada padrão. -xf, --extractfile arquivo Permite criar um arquivo com o nome fornecido e então escrever os dados secretos que estão embutidos no arquivo esteganografado nesse arquivo. Se este argumento for omitido, os dados incorporados serão salvos no diretório atual com seu nome original. Opções comunsHá algumas opções comuns que podem ser usadas em conjunto com todos os comandos (obviamente quando a operação for aplicável). São elas: -p, --passphrase string Usar a string como passphrase. Se a passphrase contiver espaços, use aspas para envolvê-la toda, como no exemplo -p "esta é minha passphrase". -v, --verbose Mostrar informações detalhadas sobre o status do processo de incorporação ou extração dos dados. -q, --quiet Não mostrar mensagens informativas. -f, --force Sempre sobrescrever arquivos existentes.
Para instalar o programa use o comando a seguir (sistemas Debian e derivados; estou usando o Kali Linux):
apt-get install steghide |
Vamos a alguns exemplos do uso do steghide. Para isso vou usar uma fotografia do Jardim Botânico de São Paulo, em um arquivo de nome jardim-botanico.JPG, que pode ser vista a seguir, como imagem portadora da mensagem oculta:Podemos ver do lado direito da tela as propriedades da imagem, que compararemos posteriormente com a imagem esteganografada. A mensagem que irei incorporar será salva em um arquivo de nome "mensagem.txt", no mesmo diretório da imagem, e tem o conteúdo a seguir (citação de Carl Sagan):
Saber muito não lhe torna inteligente. A inteligência se traduz na forma que você recolhe, julga, maneja e, sobretudo, onde e como aplica esta informação.
Vamos aos comandos. 1. Ocultar a mensagem na imagem:
steghide embed -cf jardim-botanico.JPG -ef mensagem.txt |
Mensagem ocultada na imagem. Caso queira criar uma nova imagem com mensagem oculta sem alterar a imagem original, basta acrescentar a opção -sf seguida do nome desejado para o novo arquivo:
steghide embed -cf jardim-botanico.JPG -ef mensagem.txt -sf novo-arquivo.JPG |
Vamos ver as propriedades da imagem agora:Note que a imagem aparentemente continua a mesma, sendo impossível detectar qualquer alteração somente olhando para ela. A única diferença em relação à imagem original é que o tamanho do arquivo mudou - era 51,7 KB e agora é de 51,8 KB. 2. Obter informações sobre o arquivo esteganografado (pressione "y" quando solicitado e informa a passphrase para obter informações sobre a mensagem embutida):
steghide info jardim-botanico.JPG |
3. Extrair a mensagem da imagem:
steghide extract -sf jardim-botanico.JPG |
4. Mostrar informações sobre os algoritmos de criptografia e modos suportados:
steghide encinfo |
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/gpg4win-criando-um-par-de-chaves-openpgp-com-o-kleopatra/
Por: Gabriela Parente
Para o Site: Techmovie
Nesta lição vamos mostrar como gerar um par de chaves - pública e privada - usando o gerenciador de certificados Kleopatra. Em um sistema de criptografia assimétrica usamos a chave público do destinatário para criptografar a mensagem a ser enviada, e a chave privada para decriptar a informação criptografada. Um certificado OpenPGP contém as chaves pública e privada do usuário. Para criar esse certificado, primeiramente vamos abrir o Kleopatra. Clique no "Menu Iniciar", localize a pasta Gpg4Win, abra-a e clique sobre o item Kleopatra:
Será aberta a janela do aplicativo. Aqui podemos efetuar inúmeras tarefas de gerenciamento de certificados e chaves, como importar, como exportar, gerar um novo certificado e muito mais.
Vamos começar criando um novo par de chaves OpenPGP. Para isso clique no menu File e escolha a opção New Certificate...
Será aberto o assistente para criação de certificados. Nesta tela podemos escolher se criaremos um par de chaves pessoais OpenPGP ou um par de chaves X.509 e uma requisição de certificado. Vamos clicar sobre a primeira opção, "Criação a personal OpenPGP key pair":
Na tela seguinte vamos entrar com os detalhes pessoais para a criação das chaves. Digite seu nome completo e seu e-mail. Opcionalmente, você pode também digitar um comentário. No meu exemplo, escrevi "Bóson Treinamentos" no campo de comentário (Comment). É possível ajustar detalhes mais específicos sobre as chaves clicando no botão Advanced Settings...
Ao clicar em Advanced Settings... será mostrada a janela a seguir, que nos permite escolher o tipo de chave (RSA ou DSA), seu comprimento em bits, e especificar o uso do certificado - Assinatura, Criptografia, Certificação ou Autenticação. Também podemos determinar a validade das chaves marcando a caixa Valid until e escolhendo a data de expiração. Se desejado, faça alterações nesta tela. Eu não vou alterar nada, portanto apenas clicarei no botão Cancel. Após voltar à tela anterior e preencher as caixas de texto, clique no botão Next:Revise agora os parâmetros do certificado. Se tudo estiver de acordo, clique no botão Create Key para criar as chaves. Se algo estiver errado, cancele e retome o processo do início:
Digite uma frase secreta (passphrase) para proteger sua chave privada. Clique em OK
após digitá-la.
E confirme a frase secreta, clicando em seguida em OK novamente.
Muito bem! Seu par de chaves foi criado com sucesso! Você pode efetuar um backup das chaves, enviar o certificado por e-mail ou ainda fazer o upload do certificado para um serviço de diretório. No momento, vou apenas clicar em Finish para fechar o de certificados. assistente de criação
Seu certificado criado, contendo ambas as chaves pública e privada, pode ser visto na janela do Kleopatra. Agora você já pode usá-lo para criptografar mensagens e também para receber e-mails seguros - desde que forneça sua chave pública a seus contatos ou publique-a em um servidor de chaves online.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/criptografia-hashes-md5-e-rainbow-tables/
Por: Gabriela Parente
Para o Site: Techmovie
Um Hashes MD5, ou "Message Digest 5", é uma função de hash criptográfico já não muito usado atualmente. Ela produz um valor de hash de 32 caracteres hexadecimais (equivalente a 128 bits) independentemente do tamanho dos dados de entrada. Por isso trata-se de um Resumo (Digest) de 128 bits. Desenvolvida em 1991 por Ron Rivest, no MIT, seu código fonte pode ser encontrado na RFC 1321. A seguir temos um exemplo de hash MD5:
ce71c959b85d3b76daa12a09c531a774
Em 1996 uma falha foi encontrada no design do MD5. Apesar de não ser uma fraqueza fatal (na época), criptográficos começaram a recomendar o uso de outros algoritmos a partir de então.
Um hash pode ser usado em aplicações como:
No mundo real não se recomenda usar o MD5 para essas aplicações, pois sua segurança está severamente comprometida. Existe um ataque de colisão que pode encontrar colisões em segundos mesmo em um computador simples, por exemplo com uma CPU Pentium 4 ou mais recente.
Damos o nome de "Efeito avalanche" ao que ocorre com o hash quando uma minúscula mudança no texto original provoca uma mudança brutal no resultado computado no hash. Veja o seguinte exemplo: MD5 (Gabriela) = ce71c959b85d3b76daa12a09c531a774 MD5 (Gabriela) = "a" (sem acento), e o resultado final do hash mudou completamente. Desta forma, não há relação entre o conteúdo gerado na saída e os dados de entrada que originaram o hash.
A Segurança MD5 está fortemente comprometida. Ele é vulnerável a ataques de colisão, mesmo usando máquinas comuns com poder de processamento médio. Um ataque de colisão em um hash criptográfico é um tipo de ataque onde se tenta encontrar duas entradas que produzam o mesmo de hash na saída. Se esses valores são encontrados, dizemos que houve uma "colisão". Desde o ano de 2004 sabemos que os hashes MD5 não são resistentes à colisão, e por isso eles jamais devem ser utilizados em aplicações como certificados SSL ou assinaturas digitais, por exemplo. Outro problema grave, relativo ao uso de hashes MD5 para armazenar senhas, é o uso de Rainbow Tables para reverter um hash e descobrir a string que o originou. Vamos abordar o uso de Rainbow Tables em nosso próximo artigo sobre hashes.
Podemos gerar um hash MD5 no Linux usando o utilitário md5sum. Veja os exemplos a seguir: 1 - Gerar hash de uma palavra ou frase digitada diretamente no terminal:
echo -n Texto | md5sum
2 - Gerar hash MD5 de um texto ou arquivo salvo no computador:
md5sum arquivo_teste
Podemos gerar um hash no Windows usando vários programas, como por exemplo o WinMD5Free (para arquivos), que pode ser encontrado no site http://www.winmd5.com/ Existe também o File Checksum Integrity Verifier (FCIV), que é um utilitário de prompt de comandos para computar e verificar hashes criptográficos (MD5 e SHA-1) em arquivos. Você pode se informar sobre esse utilitário na página oficial de suporte da Microsoft: http://support.microsoft.com/kb/841290
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/criptografia-cifra-de-cesar/
Por: Gabriela Parente
Para o Site: Techmovie
Julio César
Cifra de César é uma técnica de criptografia bastante simples e provavelmente a mais conhecida de todas. Trata-se de um tipo de cifra de substituição, na qual cada letra de um texto a ser criptografado é substituída por outra letra, presente no alfabeto porém deslocada um certo número de posições à esquerda ou à direita. Por exemplo, se usarmos uma troca de quatro posições à esquerda, cada letra é substituída pela letra que está quatro posições adiante no alfabeto, e nesse caso a letra A seria substituída pela letra E, B por F, G, e assim sucessivamente. A cifra de César recebe esse nome pois, segundo o escritor Suetônio, foi utilizada por Júlio César para se comunicar com seus generais, protegendo mensagens militares. Essa cifra é uma cifra de substituição monoalfabética, o que significa que cada letra do texto plano é substituída por uma outra letra do alfabeto no texto criptografado (cifrado), de forma constante (sempre as mesmas letras são utilizadas). Por conta disso, ela acaba sendo extremamente simples de ser decifrada e nunca é utilizada na prática, pois não possui absolutamente nenhuma segurança. Seu valor está em aplicações educacionais e recreativas apenas. Como o texto cifrado acaba tendo exatamente o mesmo número de caracteres do texto plano, também classificamos a cifra de César como monogrâmica, sendo então classificada classificada mais corretamente como Cifra de Substituição Monoalfabética Monogrâmica.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/criptografia-cifra-de-vigenere/
Por: Gabriela Parente
Para o Site: Techmovie
A Cifra de Vigenère é uma técnica de criptografia por substituição polialfabética que utiliza uma série de Cifras de César diferentes, baseadas nas letras de uma palavra-chave. Esse método de criptografia foi descrito originalmente pelo criptologista italiano Giovan Battista Bellaso em um livro de 1553 de nome "La Cifra del. Sig. Giovan Battista Bellaso". Curiosamente, o método foi distribuído posteriormente - e de forma errônea - a Blaise de Vigenère no século XIX, e por isso é conhecida até os dias de hoje por "Cifra de Vigenère". Trata-se de uma cifra muito simples de entender, implementar e até mesmo quebrar, mas mesmo assim três séculos se passaram até que alguém conseguisse quebrá-la (decifrar mensagens). Chegou a receber a alcunha de "le chiffre indechiffrable" ("A Cifra Indrecifrável", em francês). Um método geral de decifrá-la foi publicado pelo criptógrafo e arqueólogo alemão Friedrich Kasisk em 1963 apenas.
Essa cifra consiste em várias cifras de César utilizadas em sequência, com valores de deslocamento diferentes e obtidos a partir de uma palavra-chave (uma espécie de "Senha"). A cifragem é realizada com uso de uma tabela de alfabetos, denominada tabula reta, ou "quadrado de Vigenère", que consiste no alfabeto escrito 26 vezes em linhas diferentes, cada um deslocado ciclicamente para a esquerda comparado com o alfabeto anterior, de forma a corresponder às 26 cifras de César possíveis. Durante o processo de criptografia, a cifra usa um alfabeto diferente de uma das linhas, e o alfabeto a ser utilizado em cada ponto depende da palavra-chave, que é repetida caso a mensagem a ser decifrada seja maior do que ela.
A figura a seguir mostra um quadrado de Vigenère, com as combinações de alfabetos
Exemplo: Vamos encriptar a frase "Adoro programar", usando como palavra-chave a palavra "python". A palavra-chave deve ser repetida até completar o comprimento da mensagem a ser enviada, da seguinte forma:
A primeira letra do texto, que é a letra "a", é cifrada com o alfabeto da linha "p", que é a primeira letra da palavra-chave. Procuramos a letra na linha p que esteja na coluna a, que no caso é a letra "p". Esta será a primeira letra do texto cifrado. Passando para a segunda letra do texto normal, que é "d", procuramos a linha correspondente à letra "y", segunda letra da chave, e localizamos a letra que esteja na intersecção dessa linha com a coluna da letra procurada, d. No caso, a letra é "b", segunda letra do texto cifrado. E assim sucessivamente, até o final da cifragem. Para decriptar o texto, vamos à tabela na linha correspondente à chave, encontramos a letra do texto cifrado na linha, e então usamos o rótulo da coluna como texto plano (decriptado). No exemplo acima, na linha p (de python), a letra P do texto cifrado (primeira letra), aparece na coluna A, que é então a primeira letra do texto decifrado. Na linha da segunda letra da chave, y, encontramos a segunda letra do texto cifrado, b, que corresponde à coluna D - esta é a segunda letra do texto original - e assim sucessivamente até o final. Podemos testar a cifra de Vigenère usando uma ferramenta online para cifragem e decifragem no site: http://www.vigenere.net/ Outro site muito interessante, que permite decifrar textos cifrados em Vigenère escolhendo idiomas-alvo (inglês, alemão ou espanhol) é o www.guballa.de/vigenere-solver Anterior: Cifra de César
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/seguranca/exportando-chaves-publicas-no-gpg4win/
Por: Gabriela Parente
Para o Site: Techmovie
Neste tutorial vamos mostrar o procedimento para exportar chaves públicas no Gpg4Win, utilizando o gerenciador de chaves Kleopatra. Você poderá dessa maneira exportar suas chaves públicas e distribuí-las para que outras pessoas possam enviar mensagens criptografadas (ou arquivos) para você, e você também será capaz de criptografar e assinar arquivos a serem enviados para outras pessoas. Abra o Kleopatra a partir do menu Iniciar no Windows. No Kleopatra, clique com o botão direito do mouse sobre o certificado cuja chave pública você deseja exportar, e selecione a opção "Export Certificates" (atalho: Ctrl + E).
Você tem outra opção de clicar no botão "Export Certificates" na barra de ferramentas do Kleopatra:
Selecione a pasta onde a chave pública será salva. Opcionalmente, você pode renomear o arquivo. Clique em "Salvar";
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/o-que-e-um-rfc-request-for-comments/
Por: Gabriela Parente
Para o Site: Techmovie
Os RFCs ("Request for Comments") são publicações que documentam os padrões, serviços e protocolos oficiais da Internet, sendo mantidos pelo IETF - Internet Engineering Task Force ("Força-tarefa de engenharia da Internet"), comunidade internacional aberta que desenvolve as especificações que se tornam padrões da Internet. Muitos RFCs na verdade não são padrões oficiais, mas são publicados com propósitos informativos. Os RFCs podem conter uma página de informações ou várias centenas de páginas, dependendo da especificação, e são identificados por um número, como por exemplo RFC 3935 (esse, por exemplo, é a Declaração da Missão do IETF). Esse número é atribuído sequencialmente a cada novo RFC publicado, e nunca é modificado; se um padrão necessitar de atualização de informações, então um novo RFC será gerado com as revisões necessárias. O próprio processo de padronização de um RFC é documentado por um RFC, de número 2026. A cada RFC é atribuído um status que diz respeito ao estado da padronização do protocolo. Os status podem ser:
Todos os RFCs podem ser consultados gratuitamente na Internet. Podemos acessar o repositório de RFCs no site rfc-editor.org, onde é possível buscar as RFCs por nome, palavra-chave, autor ou número clicando no link "Search RFCs". Veja um exemplo de busca de RFC na figura abaixo:
Basta clicar em "PDF" na coluna "Files" para abrir e ler o RFC desejado. Segue abaixo uma tabela com alguns dos principais protocolos e padrões e os números de seus respectivos RFCs:
Protocolo | RFC |
ARP | 826 |
DHCP | 2131 |
DNS | 1034 e 1035 |
FTP | 959 |
HTTP | 1945 |
ICMP | 792 |
IP | 791 |
IPv6 | 2460 |
MD5 | 1321 |
NAT | 3022 |
POP3 | 1939 |
SMTP | 5321 |
SSH | 4251 |
TCP | 793 |
UDP | 768 |
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/o-que-e-uma-interface-de-loopback/
Por: Gabriela Parente
Para o Site: Techmovie
Uma interface de loopback é uma interface de rede virtual que permite que um cliente e um servidor no mesmo host se comuniquem entre si usando a pilha de protocolos TCP/IP. Para a interface de loopback é reservado todo o bloco de endereços IP classe A com identificação de rede 127.0.0.0/8, e por convenção, a maioria dos sistemas atribuem o endereço IP 127.0.0.1 a esta interface (::1 em redes IPv6), além de usar o nome localhost para identificá-la. Um datagrama IP enviado à interface de loopback não deve aparecer em nenhuma rede, nem ser roteado para nenhum dispositivo de roteamento, devendo ser processado inteiramente dentro do próprio host que o originou. Se um pacote com destino a uma interface de loopback for recebido em uma interface, sem que tenha sido originado no mesmo host, deve ser descartado, pois pode se tratar de um pacote malicioso. Além disso, qualquer pacote enviado para um endereço IP do próprio host é enviado automaticamente para a interface de loopback. Veja na figura a seguir que pacotes enviados com o programa ping para o próprio IP da interface são processados pela interface de loopback (captura com Wireshark):
Porém, ao tentarmos capturar os mesmos pacotes usando a interface ethernet da máquina, nada é exibido, provando o processamento de pacotes no próprio host:
O mecanismo da interface de loopback pode ser usado para propósitos de testes de software ou de conectividade, permitindo verificar a funcionalidade de parte da pilha TCP/IP em uma máquina. Os pacotes enviados a uma interface de loopback nunca chegam à interface de rede física da máquina, o que permite inclusive testar software mesmo na ausência de tal interface de hardware. Abaixo temos a captura de tela de um pacote ICMP sendo enviado à interface de loopback de um computador usando o programa ping no prompt de comandos do Windows. Note o TTL de 128 e os tempos máximo, mínimo e médio de 0ms da transmissão:
A interface de loopback aparece como se fosse uma camada de enlace para a camada de internet da pilha TCP/IP, de modo que a camada de internet (rede no modelo OSI) envia um datagrama IP para a interface de loopback como se estivesse enviando à camada de enlace normal, e a interface de loopback retorna o datagrama à fila de entrada da camada de internet. Veja na figura a seguir a saída do comando ifconfig lo no Linux, que mostra a configuração da interface de loopback do sistema:
Note na figura o endereço 127.0.0.1 com a máscara de sub-rede 255.0.0.0 e o escopo da interface: Máquina, o que significa que os datagramas enviados a essa interface permanecem no host. Note também o MTU de 65536, bem diferente do usual para quadros Ethernet (1500). Algumas observações interessantes:
Por exemplo, podemos testar o funcionamento de um servidor SSH mesmo sem termos acesso a um cliente ssh de outra máquina no momento. Basta se conectar ao ssh usando o endereço de loopback, como ilustra a figura a seguir:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/o-que-e-mtu-maximum-transmission-unit/
Por: Gabriela Parente
Para o Site: Techmovie
Existe um limite no tamanho dos dados transmitidos em uma rede que limita a quantidade de bytes que podem ser transmitidos em um único quadro. Para quadros padrão Ethernet esse limite é de 1500 bytes e para quadros 802.3 é de 1492 bytes. Esse limite, que é uma característica da camada de enlace, é conhecido como MTU, "Maximum Transmission Unit", ou "Unidade de Transmissão Máxima", e existe em diversos tipos de redes, não apenas redes locais Ethernet. Quando um datagrama a ser enviado em uma rede for maior do que o MTU da camada de enlace, o protocolo IP realizará a fragmentação dos dados, quebrando o datagrama em pedaços menores, chamados de fragmentos, cada um um com tamanho menor do que o MTU. Veja na tabela a seguir os valores típicos de MTU (Consultados no RFC 1191), Path MTU Discovery e outras fontes) usados em vários tipos de redes comuns:
Rede | MTU (em bytes) |
Hyperchannel | 65535 |
WLAN 802.11 | 7981 |
Quadros Jumbo Ethernet | 1501 - 9198 |
Tonken Ring 802.5 | 4464 |
FDDI | 4352 |
Ethernet | 1500 |
IEEE 802.3 / 802.2 | 1492 |
PPPoE | 1492 |
X.25 | 576 |
Podemos descobrir o MTU usado nas interfaces de rede de um computador que rode o Windows executando o comando netsh no prompt, como segue: netsh interface ipv4 show subinterfaces.
Já no Linux basta usar o comando ifconfig: ifconfig
Quando dois hosts estão se comunicando entre si através de múltiplas redes, cada trecho de rede pode ter um MTU diferente devido às diversas tecnologias envolvidas em uma transmissão de dados de longa distância. Desta forma, o MTU das redes onde os hosts estão conectados não é tão importante quanto o menor MTU de qualquer trecho por onde os pacotes trafeguem entre esses dois hosts.Damos a esse MTU o nome de Path MTU (Caminho MTU). O caminho MTU é, portanto, o menor valor de MTU do caminho desde o endereço de origem até o endereço de destino. Assim, o caminho MTU é o maior valor que pode trafegar nessa rede sem que os pacotes sofram fragmentação. O valor do caminho MTU entre dois hosts não é necessariamente constante. Ele depende da rota que está sendo usada no momento. Além disso, o roteamento não precisa ser simétrico, de modo que o Path MTU não precisa ser o mesmo em ambas as direções - do host A para o host B e vice-versa.
A descoberta de caminho MTU é uma técnica que permite determinar o caminho MTU ideal entre dois hosts IP para evitar a fragmentação adicional dos datagramas IP. Essa técnica consiste em ligar o bit DF (Don´t Fragment) do cabeçalho IP dos datagramas transmitidos. Quando um dispositivo no caminho desse datagrama tiver um MTU menor do que o datagrama, esse pacote será descartado e será enviada a mensagem ICMP "Destino Inalcançável (Pacote muito grande)" de volta ao transmissor, contendo o MTU desse dispositivo. Essa informação permite que o host transmissor reduza o MTU da transmissão de forma apropriada. O processo se repete até que seja descoberto o menor MTU que permite a transmissão de dados pelo caminho todo sem que haja fragmentação.
Podemos testar o MTU do caminho entre dois hosts usando o comando ping. Para isso trabalharemos co duas opções do ping (válidas para sistemas Windows): -l tamanho-pacote Permite ajustar o tamanho (payload) do pacote enviado pelo ping para o valor tamanho-pacote -f Habilita o bit DF no pacote transmitido (impedindo a fragmentação do pacote). Vamos a um exemplo. Primeiramente, vamos usar o ping para testar a conectividade com o site www.bosontreinamentos.com.br, porém enviando um pacote com 1500 bytes de tamanho: ping -l 1500 bosontreinamentos.com.brOs pacotes foram enviados e recebemos a resposta como esperado. Porém, vamos agora desativar a fragmentação do pacote com a opção -f e tentar novamente enviar o payload de 1500 bytes: ping -l 1500 -f bosontreinamentos.com.brNote que agora recebemos uma mensagem de erro dizendo que o pacote precisa ser fragmentado, mas a desfragmentação está ativa. Portanto, os 1500 bytes do payload do pacote fizeram com que o MTU do quadro fosse ultrapassado. Caso queira realizar o teste em uma máquina Linux, use as opções como segue: -M do Não fragmentar o pacote -s tamanho-pacote justar o tamanho (payload) do pacote enviado pelo ping para o valor tamanho-pacoteVeja o resultado em um computador com Kali Linux:O tamanho máximo de payload que consegui transmitir na rede com a fragmentação desativada foi de 1472 bytes - lembrando que o MTU da rede é de 1500 bytes:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-arp-address-resolution-protocol/
Por: Gabriela Parente
Para o Site: Techmovie
Quando um quadro Ethernet é enviado de um host para outro em uma rede, é o endereço físico de 48 bits (MAC Address) que determina para qual interface o quadro é destinado. O software do driver de dispositivo não verifica o endereço IP dentro do datagrama. Como, então, podemos realizar a conexão entre dois hosts se no pacote temos endereços IP de origem e destino, mas precisamos dos endereços físicos das interfaces de rede envolvidas? O protocolo ARP fornece resolução dinâmica de endereços, que é um mapeamento entre as duas firmas de endereçamento distintas: endereços IP, e qualquer outro tipo de endereço usado na camada de enlace. No caso dos quadros Ethernet, a camada de enlace usa o MAC Address (Media Access Control), endereço físico da interface. O ARP, portanto, é um protocolo que permite obter o MAC Address de uma interface a partir de seu endereço IP. Existe também um outro protocolo que permite realizar o mapeamento inverso, ou seja, obter o endereço IP a partir de um MAC Address. Esse protocolo é conhecido por RARP (Reverse Address Resolution Protocol). A idéia principal do protocolo ARP é que a interface de rede possui um endereço de hardware (endereço físico de 48 bits). Quando quadros são trocados entre duas interfaces de rede, eles devem ser endereçados às interfaces físicas corretas. Porém, a pilha TCP/IP possui seu próprio esquema de endereçamento, que consiste em endereços IP de 32 bits (IPv6 utiliza endereços de 128 bits). Portanto, saber apenas o endereço IP de um host não é suficiente para que seja possível enviar um quadro ao host. O driver Ethernet precisa conhecer o endereço físico de destino para que seja possível enviar os dados. É aí que entra o protocolo ARP - fornecer um mapeamento dinâmico entre os endereços IP e os endereços físicos (MAC) utilizados na transmissão de dados.
Há dois tipos diferentes de mensagens enviadas pelo protocolo ARP, uma da origem ao destino, e outra do destino à origem. Para cada mensagem ARP, definimos como remetente quem transmite a mensagem e alvo quem deve recebê-la. As mensagens são:
A figura a seguir mostra o formato de um pacote ARP, quando usado usado em uma rede Ethernet para realizar resolução de endereço IP:A descrição de cada campo é dada seguir: HTYPE - Hardware Type (Tipo de hardware): Especifica o tipo de protocolo da rede, como Ethernet, cujo valor é 1. Outros tipos comuns incluem Frame Relay (15), ATM (16) e HDLC (17). PTYPE - Protocol Type (Tipo de Protocolo): Especifica o protocolo da camada de internet para o qual a requisição do ARP é direcionada.O valor para o protocolo IPv4 é 0x0800. HLEN - Hardware Length (Comprimento do Hardware): Tamanho do endereço de hardware, em grupos de oito bits (octetos). Um MAC Address Ethernet tem o tamanho de 6. PLEN - Protocol Length (Comprimento do Protocolo): Tamanho, em octetos, do endereço especificado no campo PTYPE. Para o protocolo IPv4, o tamanho é 4OPER - Operation (Operação): Tipo de operação que o transmissor está realizando, sendo o valor 1 para ARP Request (Requisição ARP), e 2 para ARP Reply (Resposta ARP). SHA - Sender Address Hardware (Endereço Físico do Remetente): Endereço MAC do transmissor. Quando se trata de um pacote ARP Request, contém o endereço físico do remetente. Já em uma mensagem ARP Reply, contém o endereço físico procurado (resolvido). SPA - Sender Protocol Address (Endereço do Remetente): Endereço da camada de internet do remetente (IP) THA - Target Hardware Address (Endereço de Hardware do Alvo): Endereço físico do destinatário pretendido. Esse campo é ignorado em um pacote ARP Request (por razões óbvias), e em um pacote ARP Reply contém o endereço físico do host que originou a requisição ARP. TPA - Target Protocol Address (Endereço de Protocolo do Alvo): Endereço da camada de internet (IP) do destinatário pretendido.
Para que o protocolo ARP possa operar de forma eficiente é necessária a manutenção de um cache ARP em cada host. Esse cache mantém os mapeamentos de endereços mais recentes de IPs para endereços MAC na memória do host, possuindo um tempo de expiração para cada entrada no cache de 20 minutos a partir do momento em que a entrada foi adicionada. Podemos examinar o cache ARP usando o comando arp -a em um prompt. A opção -a é utilizada para mostrar todas as entradas presentes no cache: arp -aNote que a saída gerada pelo comando nos mostra três colunas de informações, contendo os endereços IPs de vários hosts, seus endereços físicos em notação hexadecimal, e o tipo da entrada, que pode ser dinâmica ou estática:
Para demonstrar o funcionamento do protocolo ARP, realizei a captura de pacotes trocados entre dois hosts por meio do comando ping, usando o software analisador de pacotes Wireshark. Usei duas máquinas Windows cujos IPs são 10.24.67.21 (remetente) e 10.24.67.20 (destinatário). Após a troca de pacotes ICMP com o ping, paramos a captura dos pacotes e aplicamos um filtro para exibição apenas dos pacotes ARP. Veja o resultado:Note que o primeiro pacote ARP transmitido (ARP Request) foi enviado em broadcast, e na coluna Info do Wireshark pode-se ler a informação "Who has 10.24.67.20? Tell 10.24.67.21", que significa que o host 10.24.67.21 está tentando descobrir quem é a máquina 10.24.67.20. O segundo pacote mostra a resposta do host 10.24.67.20 contendo a informação desejada - no caso, o endereço MAC da interface, que é 70:71:bc:58:de:7c. Os dois pacotes seguintes mostram o processo inverso, onde a máquina 10.24.67.20 usa o ARP para descobrir o MAC Address do primeiro host. Podemos também abrir um desses pacotes para analisar o conteúdo da mensagem ARP trocada. Vamos analisar o conteúdo do primeiro pacote, que foi um ARP Request entre os hosts:Vamos analisar as informações contidas nesse pacote:
Note o endereço MAC do host alvo: 00:00:00:00:00:00. O valor é todo em zeros pois esta é justamente a informação que o pacote ARP deve descobrir, realizando a resolução do IP-alvo para o MAC Address solicitado.
O protocolo ARP não fornece nenhum tipo de método de autenticação dos pacotes ARP Reply recebidos em uma rede, e por conta disso as respostas do ARP podem vir de outra rede distinta da rede onde a solicitação ARP é originada. Desta forma, um roteador pode responder às requisições ARP em uma das redes conectadas a ele feitas por um host em outra rede. Desta forma, o remetente das mensagens ARP pode "pensar" que o roteador é o host de destino, quando na verdade o host de destino está em outra rede conectada a outra interface do roteador. Desta forma, o roteador funciona como um agente de proxy para o host de destino, retransmitindo pacotes dele para outros hosts. Alguns dos usos mais comuns para a técnica de Proxy ARP são a conexão a redes dialup ou VPN, usar múltiplos IPs em um mesmo host, e em gateways de subrede transparentes.
ARP Probe ("Sonda ARP") são pacotes especiais ARP Request transmitidos em broadcast com o campo SPA (Endereço IP do remetente) contendo o valor 0.0.0.0. Esse pacote é utilizado por um host que solicitou um endereço IPv4 de um servidor DHCP, ou após a configuração manual de IP no host, para verificar se o IP atribuído já está em uso na rede. Vamos ver esse pacote em serviço. Primeiramente, vou liberar a configuração de IP de minha máquina Windows com o comando ipconfig /release: ipconfig /release Agora minha máquina está sem IP:Mando renovar o IP da máquina (requisitar nova configuração do servidor DHCP) e capturo os pacotes com o Wireshark: ipconfig /renew E eis a captura dos pacotes ARP Probe realizada com o Wireshark:Vamos analisar alguns dos pacotes:
Os pacotes foram filtrados por protocolo ARP, por isso aparecem apenas alguns na captura mostrada.
Existem algumas situações nas quais o protocolo ARP pode ser explorado de forma maliciosa, sendo a mais comum o uso da técnica de ARP Spoofing.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-icmp-internet-control-message-protocol/
Por: Gabriela Parente
Para o Site: Techmovie
O Protocolo ICMP, cuja sigla significa "Protocolo de Controle de Mensagens da Internet", é um protocolo que comunica mensagens de erro e outras condições que requeiram atenção em uma rede. O protocolo IP, que fornece o mecanismo para entrega de datagramas entre dispositivos, carece dessa funcionalidade, e por isso o ICMP foi criado, sendo um protocolo extremamente importante por conta dessas capacidades. Geralmente as mensagens ICMP são tratadas na camada de Internet (IP) ou então na camada de Transporte (TCP ou UDP). Neste artigo vou tratar do protocolo ICMP "original", que chamamos hoje de ICMPv4. Com o advento do IPv6, uma nova versão do ICMP foi criada, sendo batizada como ICMPv6. Tratarei das características específicas do ICMPv6 em outro artigo. O protocolo ICMPv4 é tratado na RFC 792.
As mensagens ICMP são transmitidas em datagramas IP, conforme podemos ver a seguir:A mensagem ICMP em si é mostrada na figura a seguir. Ela contém os campos Tipo, Código, Checksum e Conteúdo:
Podem ser usados até 256 valores diferentes (8 bits) para o campo Tipo, que identifica a mensagem ICMP em particular. No protocolo ICMPv6 as classes de mensagens são separadas, de modo que os tipos de 0 a 127 são mensagens de erro, e os tipos de 128 a 255 são mensagens informativas. Já no protocolo ICMPv4 não é possível discernir a classe de mensagens dessa forma. Alguns tipos de mensagens possuem valores diferentes no campo Código para especificar com mais detalhes o tipo. É como uma espécie de "subtipo", e cada tipo de mensagem pode ter até 256 subtipos associados. Já o campo checksum (verificação de erros) trata da mensagem ICMP completa, incluindo o campo de conteúdo.
As mensagens ICMP podem ser divididas em duas grandes classes:
Existem algumas regras específicas que governam a forma como as mensagens de erro são geradas. Mensagens ICMP de erro NÃO são geradas nos seguintes casos:
Cada mensagem de erro ICMPv4 inclui o cabeçalho IP completo do datagrama e os primeiros 8 bytes do payload (dados). Isso significa que a mensagem de erro inclui o cabeçalho UDP completo, ou os primeiros 8 bytes do cabeçalho TCP - dependendo do protocolo usado. Em ambos os casos, os números de portas de origem e destino são incluídos na mensagem. Vejamos os tipos e códigos de mensagens ICMP existentes. A tabela a seguir é baseada nos dados contidos na página "Parâmetros ICMP" da IANA:
Tipo | Código | Descrição |
0 | 0 | Echo Reply (Resposta de Eco, usado pelo comando ping) |
3 | Destino Inalcançável | |
0 | Rede de destino inalcançável | |
1 | Host de destino inalcançável | |
2 | Protocolo de destino inalcançável | |
3 | Porta de destino inalcançável | |
4 | Fragmentação requerida, e bit DF configurado | |
5 | Falha na rota de origem | |
6 | Rede de destino desconhecida | |
7 | Host de destino desconhecido | |
8 | Host de origem isolado | |
9 | Rede proibida administrativamente | |
10 | Host proibida administrativamente | |
11 | Rede inalcançável para TOS | |
12 | Host inalcançável para TOS | |
13 | Comunicação proibida administrativamente | |
14 | Violação de precedência de Host | |
15 | Corte de precedência em efeito | |
4 | 0 | Fonte saciável (source quench) - Controle de fluxo elementar |
5 | Redirecionamento | |
0 | Redirecionamento para rede | |
1 | Redirecionamento para host | |
2 | Redirecionamento para tipo de serviço e rede | |
3 | Redirecionamento para tipo de serviço e host | |
7 | Reservado (Não atribuído) | |
8 | 0 | Echo Request (Requisição de Eco, usado pelo comando ping) |
9 | 0 | Anúncio de roteador |
10 | 0 | Solicitação de roteador |
11 | Tempo Excedido | |
0 | TTL igual a 0 durante o trânsito | |
1 | TTL igual a 0 durante reconstrução | |
12 | Problema com parâmetros: Cabeçalho IP mal formado | |
0 | Ponteiro indica o erro | |
1 | Faltando opção requerida | |
2 | Comprimento errado | |
13 | 0 | Timestamp |
14 | 0 | Resposta do Timestamp |
15 | 0 | Pedido de informação |
16 | 0 | Resposta de informação |
17 | 0 | Requisição de máscara de endereço |
18 | 0 | Resposta de máscara de endereço |
19 | Reservado para segurança | |
20-29 | Reservado para experimentos de robustez | |
30 | Traceroute (deprecado) | |
31 | Erro de Conversão de Datagrama (deprecado) | |
32 | Redirecionamento de Host Móvel (deprecado) | |
33 | IPv6 Where-are-you (deprecado) | |
34 | IPv6 I-am-here (deprecado) | |
35 | Requisição de Registro Móvel (deprecado) | |
36 | Resposta de Registro Móvel (deprecado) | |
37 | Requisição de Nome de Domínio (deprecado) | |
38 | Resposta de Nome de Domínio (deprecado) | |
39 | SKIP (deprecado) | |
40 | Photuris (deprecado) (RFC 2521) | |
41 | Mensagens ICMP para protocolos de mobilidade experimentais (RFC 4065) | |
42-252 | Não atribuídos | |
253 | Experimento 1 RFC 3692 | |
254 | Experimento 2 RFC 3692 | |
255 | Reservado |
O Protocolo ICMP, cuja sigla significa "Protocolo de Controle de Mensagens da Internet", é um protocolo que comunica mensagens de erro e outras condições que requeiram atenção em uma rede. O protocolo IP, que fornece o mecanismo para entrega de datagramas entre dispositivos, carece dessa funcionalidade, e por isso o ICMP foi criado, sendo um protocolo extremamente importante por conta dessas capacidades. Geralmente as mensagens ICMP são tratadas na camada de Internet (IP) ou então na camada de Transporte (TCP ou UDP). Neste artigo vou tratar do protocolo ICMP "original", que chamamos hoje de ICMPv4. Com o advento do IPv6, uma nova versão do ICMP foi criada, sendo batizada como ICMPv6. Tratarei das características específicas do ICMPv6 em outro artigo. O protocolo ICMPv4 é tratado na RFC 792.
As mensagens ICMP são transmitidas em datagramas IP, conforme podemos ver a seguir:A mensagem ICMP em si é mostrada na figura a seguir. Ela contém os campos Tipo, Código, Checksum e Conteúdo:
Podem ser usados até 256 valores diferentes (8 bits) para o campo Tipo, que identifica a mensagem ICMP em particular. No protocolo ICMPv6 as classes de mensagens são separadas, de modo que os tipos de 0 a 127 são mensagens de erro, e os tipos de 128 a 255 são mensagens informativas. Já no protocolo ICMPv4 não é possível discernir a classe de mensagens dessa forma. Alguns tipos de mensagens possuem valores diferentes no campo Código para especificar com mais detalhes o tipo. É como uma espécie de "subtipo", e cada tipo de mensagem pode ter até 256 subtipos associados. Já o campo checksum (verificação de erros) trata da mensagem ICMP completa, incluindo o campo de conteúdo.
As mensagens ICMP podem ser divididas em duas grandes classes:
Existem algumas regras específicas que governam a forma como as mensagens de erro são geradas. Mensagens ICMP de erro NÃO são geradas nos seguintes casos:
Cada mensagem de erro ICMPv4 inclui o cabeçalho IP completo do datagrama e os primeiros 8 bytes do payload (dados). Isso significa que a mensagem de erro inclui o cabeçalho UDP completo, ou os primeiros 8 bytes do cabeçalho TCP - dependendo do protocolo usado. Em ambos os casos, os números de portas de origem e destino são incluídos na mensagem. Vejamos os tipos e códigos de mensagens ICMP existentes. A tabela a seguir é baseada nos dados contidos na página "Parâmetros ICMP" da IANA:
Tipo | Código | Descrição |
0 | 0 | Echo Reply (Resposta de Eco, usado pelo comando ping) |
3 | Destino Inalcançável | |
0 | Rede de destino inalcançável | |
1 | Host de destino inalcançável | |
2 | Protocolo de destino inalcançável | |
3 | Porta de destino inalcançável | |
4 | Fragmentação requerida, e bit DF configurado | |
5 | Falha na rota de origem | |
6 | Rede de destino desconhecida | |
7 | Host de destino desconhecido | |
8 | Host de origem isolado | |
9 | Rede proibida administrativamente | |
10 | Host proibida administrativamente | |
11 | Rede inalcançável para TOS | |
12 | Host inalcançável para TOS | |
13 | Comunicação proibida administrativamente | |
14 | Violação de precedência de Host | |
15 | Corte de precedência em efeito | |
4 | 0 | Fonte saciável (source quench) - Controle de fluxo elementar |
5 | Redirecionamento | |
0 | Redirecionamento para rede | |
1 | Redirecionamento para host | |
2 | Redirecionamento para tipo de serviço e rede | |
3 | Redirecionamento para tipo de serviço e host | |
7 | Reservado (Não atribuído) | |
8 | 0 | Echo Request (Requisição de Eco, usado pelo comando ping) |
9 | 0 | Anúncio de roteador |
10 | 0 | Solicitação de roteador |
11 | Tempo Excedido | |
0 | TTL igual a 0 durante o trânsito | |
1 | TTL igual a 0 durante reconstrução | |
12 | Problema com parâmetros: Cabeçalho IP mal formado | |
0 | Ponteiro indica o erro | |
1 | Faltando opção requerida | |
2 | Comprimento errado | |
13 | 0 | Timestamp |
14 | 0 | Resposta do Timestamp |
15 | 0 | Pedido de informação |
16 | 0 | Resposta de informação |
17 | 0 | Requisição de máscara de endereço |
18 | 0 | Resposta de máscara de endereço |
19 | Reservado para segurança | |
20-29 | Reservado para experimentos de robustez | |
30 | Traceroute (deprecado) | |
31 | Erro de Conversão de Datagrama (deprecado) | |
32 | Redirecionamento de Host Móvel (deprecado) | |
33 | IPv6 Where-are-you (deprecado) | |
34 | IPv6 I-am-here (deprecado) | |
35 | Requisição de Registro Móvel (deprecado) | |
36 | Resposta de Registro Móvel (deprecado) | |
37 | Requisição de Nome de Domínio (deprecado) | |
38 | Resposta de Nome de Domínio (deprecado) | |
39 | SKIP (deprecado) | |
40 | Photuris (deprecado) (RFC 2521) | |
41 | Mensagens ICMP para protocolos de mobilidade experimentais (RFC 4065) | |
42-252 | Não atribuídos | |
253 | Experimento 1 RFC 3692 | |
254 | Experimento 2 RFC 3692 | |
255 | Reservado |
As mensagens mostradas na tabela anterior podem ser categorizadas em dois grandes grupos: Perguntas e Erros. Os tipos de mensagens que são perguntas são as de números de tipo 0, 8, 9, 10, 13, 14, 15, 16, 17 e 18. As demais mensagens são mensagens de erro. Como existem literalmente dezenas de mensagens diferentes que podem ser geradas, iremos estudar apenas algumas delas mais a fundo.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-mensagens-icmp-do-tipo-destino-inalcancavel/
Por: Gabriela Parente
Para o Site: Techmovie
O protocolo IP é um protocolo dito "não confiável", o que significa que não há nenhum tipo de garantia de que um pacote enviado a partir de um dispositivo chegará a seu destino. Por uma série de motivos, o pacote pode não ser entregue ao dispositivo de destino. Protocolos como o TCP (camada de transporte) e outros levam isso em consideração e fornecem confiabilidade e confirmação da recepção de dados em aplicações que precisem desses recursos. No geral esse procedimento é suficiente para que a transmissão dos pacotes ocorra tranquilamente. Porém, em alguns casos o problema pode se tornar mais grave - por exemplo, quando temos um problema permanente, como o envio de datagramas a um IP inexistente ou uma rota configurada incorretamente. Neste caso, será necessário mais do que simplesmente verificar se o pacote chegou e retransmiti-lo em caso negativo. É aí que entra o protocolo ICMP. Com o uso de mensagens do tipo Destino Inalcançável (Destination Unreachable), temos um mecanismo de retorno que informa a um dispositivo de origem que algo de errado está ocorrendo - e também o porquê desse erro. Assim, quando um dispositivo de origem (transmissor) recebe uma mensagem desse tipo, ele poderá decidir que ação tomar. As mensagens do tipo destino inalcançável sempre incluem uma parte do datagrama que não foi entregue, de modo que essa informação irá auxiliar o dispositivo de origem a descobrir o problema.
A figura abaixo mostra o formato de uma mensagem do tipo "Destination Unreachable"
Essa mensagem diz a um dispositivo que o datagrama enviado por ele não foi entregue por algum motivo, e a razão para essa não entrega é indicada pelo campo de código no cabeçalho ICMP da mensagem. Na tabela a seguir descrevemos todos os subtipos (códigos) existentes para a mensagem de tipo 3, destino inalcançável:
Código | Mensagem | Descrição |
0 | Rede de destino inalcançável | O datagrama não pôde ser entregue à rede especificada no endereço IP. Pode ser um problema de roteamento ou endereço incorreto. |
1 | Host de destino inalcançável | O datagrama foi entregue à rede especificada no endereço IP, porém não foi entregue ao host especificado no endereço. Geralmente, trata-se de um problema de roteamento. |
2 | Protocolo de destino inalcançável | O protocolo especificado no campo de Protocolo é inválido para o host ao qual o datagrama foi entregue |
3 | Porta de destino inalcançável | A porta de destino especificada no cabeçalho TCP ou UDP é inválida |
4 | Fragmentação requerida, e bit DF configurado | Se a flag DF (Não Fragmentar) estiver ativa no cabeçalho IP do datagrama, o datagrama não deverá ser fragmentado. O roteador então deverá descartar o pacote caso seu tamanho exceda o MTU do próximo trecho de rede física. Usado geralmente no processo de Descoberta do Caminho MTU. |
5 | Falha na rota de origem | Essa mensagem é gerada quando uma rota de origem é especificada para o datagrama mas um roteador não conseguiu encaminhar o datagrama ao próximo salto da rota. |
6 | Rede de destino desconhecida | Não usado (0) |
7 | Host de destino desconhecido | O host especificado é desconhecido. Gerado normalmente por um roteador no mesmo local do host de destino e significa um endereço incorreto. |
8 | Host de origem isolado | Obsoleto |
9 | Rede proibida administrativamente | O dispositivo de origem não possui permissão para enviar pacotes à rede onde o dispositivo de destino está localizado. |
10 | Host proibida administrativamente | O dispositivo de origem possui permissão para enviar pacotes à rede onde o dispositivo de destino está localizado, porém não para o dispositivo em particular. |
11 | Rede inalcançável para TOS | A rede especificada no endereço IP não pode ser alcançada devido à incapacidade de fornecer o serviço especificado no campo TOS (Tipo de Serviço) no cabeçalho do datagrama. |
12 | Host inalcançável para TOS | O host de destino especificado no endereço IP não pode ser alcançado devido à incapacidade de fornecer o serviço especificado no campo TOS (Tipo de Serviço) no cabeçalho do datagrama. |
13 | Comunicação proibida administrativamente | O pacote não pode ser encaminhado devido a um filtro que bloqueia a mensagem baseada em seu conteúdo. |
14 | Violação de precedência de Host | Essa mensagem é enviada por um roteador no primeiro salto (o primeiro a manipular um pacote enviado) quando o valor de Precedência no campo TOS não é permitido. |
15 | Corte de precedência em efeito | Enviado por um roteador ao receber um pacote cujo valor de Precedência é menor do que o mínimo permitido para a rede naquele momento. |
Como sabemos, o protocolo IP é considerado um protocolo do tipo "melhor esforço", no sentido de que não há garantias de que os datagramas serão realmente entregues em seu destino. E as p´roprias mensagens ICMP são carregadas em datagramas IP, portanto, não há garantias de que as mensagens de erro ou informativas cheguem a seu destino também. Além disso, a própria mensagem de destino inalcançável pode não ser gerada no roteador ou dispositivo de destino, por uma série de razões, e nesse caso é óbvio que o dispositivo transmissor nunca receberá mensagem alguma de erro. Por isso, devemos considerar que o envio das mensagens do tipo destino inalcançável é suplementar, e isso mostra a importância dos mecanismos de detecção e correção de erros presentes nas camadas de nível superior da pilha de protocolos.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-mensagens-icmp-do-tipo-source-quench-controle-de-fluxo-elementar/
Por: Gabriela Parente
Para o Site: Techmovie
Quando um dispositivo (de origem) envia um datagrama em uma rede, espera-se que esse datagrama atravesse a rede e chegue a seu destino, onde será processado convenientemente. Quando o dispositivo de destino recebe datagramas em uma taxa de transmissão lenta, ele provavelmente consegue processá-los conforme os recebe, sem nenhum tipo de problema. Porém, é possível que a taxa de transmissão dos pacotes varie imensamente em uma rede, sendo que em muitos casos os datagramas são enviados em grandes quantidades de uma só vez, alternando picos de alto e baixo tráfego. Desta forma, em alguns momentos os pacotes chegam ao destino muito mais rapidamente do que em outros, e para lidar com essa situação cada dispositivo possui um buffer (memória temporária) onde os datagramas são mantidos por um período de tempo até que o dispositivo consiga processá-los. Esse buffer, contudo, possui um tamanho limitado. Em determinadas situações o tráfego recebido pelo dispositivo pode ser tão alto que o buffer é totalmente preenchido, o que levará fatalmente ao descarte dos próximos datagramas recebidos, tornando o dispositivo congestionado. Isso pode ocorrer em uma série de situações, tais como quando o dispositivo recebe datagramas oriundos de múltiplas fontes simultaneamente, ou quando um dos dispositivos que estão se comunicando é muito mais rápido do que o outro. Algumas falhas de hardware também podem ocasionar esse problema. Quando datagramas são descartados dessa forma, o dispositivo de origem não tem como saber o que está ocorrendo, pois o protocolo IP é não-confiável e sem confirmação. Desta forma, fica a cargo dos protocolos de camadas mais altas lidar com a situação - realizar o chamado "controle de fluxo" - ou então o próprio dispositivo congestionado deve fornecer um feedback para o dispositivo de origem, informando a respeito do problema de alto tráfego. Isso pode ser realizado por meio do envio de mensagens ICMPv4 chamadas de "Source Quench". Desta forma, o dispositivo congestionado indica ao dispositivo transmissor que ele está transmitindo rápido demais, e que é necessário diminuir a velocidade da transmissão de datagramas. O formato de uma mensagem ICMPv4 do tipo Source Quench, identificadas pelo tipo 4, com o código 0, pode ser visto na figura a seguir:As mensagens Source Quench informam ao dispositivo de origem que o destino está congestionado, porém sem fornecer nenhuma informação específica sobre o problema, além de não especificar o que se espera que o dispositivod e origem faça, além de simplesmente diminuir a taxa de transmissão de seus datagramas. Além disso, não há uma mensagem específica que informa ao dispositivo de origem que o congestionamento de datagramas terminou e que ele pode voltar a transmitir em sua velocidade original. Assim, o tratamento de uma mensagem do tipo Source Quench fica totalmente a cargo do dispositivo de origem dos datagramas, o qual ao receber essas mensagens irá diminuir sua velocidade de transmissão, e então tentará retomar lentamente sua taxa de transmissão original aos poucos, caso pare de recebê-las. Devido a essa forma de funcionamento das mensagens Source Quench, o fluxo de controle fica geralmente a cargo da camada de transporte. O protocolo TCP possui um mecanismo de controle de fluxo muito mais efetivo do que as mensagens ICMP Source Quench. E, para finalizar, um aspecto negativo das mensagens Source Quench: elas podem ser usadas com intuito malicioso, podendo ser empregadas para diminuir a velocidade de transmissão de um host deliberadamente. Por isso, é sempre preferível se basear no controle de fluxo TCP, em vez de usar as mensagens ICMP do tipo estudado. Anterior: Mensagens ICMP do tipo Destino Inalcançável
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-mensagens-icmp-do-tipo-time-exceeded-tempo-excedido/
Por: Gabriela Parente
Para o Site: Techmovie
Em grandes redes podem existir inúmeros roteadores interconectados que encaminham datagramas entre os dispositivos em redes distintas. O número desses roteadores pode chegar a centenas, senão milhares de dispositivos. Por conta disso, a topologia dessas redes pode ser altamente complexa, tornando as tarefas de roteamento complicadas. Para realizar o roteamento de pacotes entre as redes os roteadores utilizam protocolos de roteamento, como o OSPF, os quais permitem encontrar as melhores rotas (caminhos) entre as redes. Porém, isso nem sempre ocorre, e em alguns casos uma rota não muito eficiente pode ser selecionada para um datagrama trafegar. Isso não costuma ser um problema, contudo, desde que os datagramas sejam entregues em suas redes de destino. Porém, em um caso extremos, pode ocorrer o chamado Loop de Roteamento, no qual um pacote fica circulando entre roteadores eternamente, sem que seja entregue em sua rede de destino. Por exemplo, o roteador 1 encaminha para o roteador 2 datagramas destinados à rede Z; o roteador 2 encaminha esses datagramas para o roteador 3, e o roteador 3 os encaminha de volta ao roteador 1. Perceba que nesse caso o datagrama ficou "preso" dentro da rede de roteadores, sem chance de ser entregue em algum momento à sua rede de destino. Esse é um grande problema, pois os datagramas que entram em um loop de roteamento consomem largura de banda e podem se acumular com o tempo, eventualmente tornando a rede inoperante por excesso de tráfego. Para evitar esse tipo de problema, cada datagrama IP possui um campo em seu cabeçalho denominado TTL - "Time to Live", ou "Tempo de Vida", cujo valor é ajustado pelo dspositivo de origem para um número que indica a quantidade de saltos que o datagrama poderá atravessar. O número de saltos é, basicamente, o número de roteadores pelos quais o datagrama poderá atravessar. Cada vez que o datagrama chega a um roteador, esse roteador decrementa o valor do TTL em seu cabeçalho IP. Caso o valor do TTL atinja zero, o datagrama terá expirado e será sumariamente descartado. Originalmente o campo TTL deveria limitar o tempo máximo, em segundos, que o datagrama poderia estar presente em uma rede, mas a forma de uso do campo neste caso acabou sendo modificada com o tempo. É aí que entra em ação o protocolo ICMP. Quando um datagrama é descartado por conta do TTL ter expirado, o roteador que o descartou informa ao dispositivo de origem a respeito enviando uma mensagem ICMPv4 do tipo Tempo Excedido (Time Exceeded). Quando o dispositivo de origem recebe essa mensagem, ele sabe que houve um problema de roteamento durante a transmissão do pacote, ou ainda que o valor do campo TTL foi ajustado para um valor muito baixo a princípio. Então, o dispositivo de origem poderá tomar uma ação, que pode ser reenviar o pacote (com um TTL mais alto), ou desistir.
A figura a seguir ilustra o formato da mensagem ICMPv4 Time Exceeded:O campo Tipo possui o valor 11, e o campo Código pode ter os valores 0 ou 1, sendo que:
O caso do valor igual a 1 ocorre quando um datagrama IP é dividido em fragmentos (fragmentado). Neste caso, o dispositivo de destino tem a tarefa de remontar esses fragmentos para obter de volta a mensagem original. Porém, pode acontecer de um ou mais fragmentos não chegarem a seu destino, e para evitar que o dispositivo fique esperando esses fragmentos para sempre, um timer é ativado quando o primeiro fragmento chega. Se por acaso esse timer expirar antes que os outros fragmentos sejam recebidos, o dispositivo não mais esperará e a mensagem será descartada. E então, uma mensagem ICMPv4 do tipo Tempo Excedido será gerada. Note que nesse caso a mensagem é gerada pelo host de destino, e não por um roteador, como no caso do TTL decrementado até zero. Um outro uso muito importante e útil das mensagens "Tempo Excedido" é no comando traceroute (ou tracert), que é utilizada para mostrar a sequência de dispositivos por onde um datagrama passa em uma rota particular entre dois hosts, e o tempo que o datagrama leva para alcançar cada um desses saltos.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/como-funciona-o-programa-ping/
Por: Gabriela Parente
Para o Site: Techmovie
O programa ping, escrito por Mike Muus em 1983, é um utilitário que permite testar a conectividade entre dois hosts em uma rede. Ele funciona enviando uma mensagem ICMP do tipo Echo Request a um host, e espera o recebimento de uma mensagem ICMP do tipo Echo Reply em retorno. No geral, se você não conseguir "pingar" um host, significa que não há conectividade entre as máquinas envolvidas no processo. É um dos primeiros passos que tomamos para determinar qual o problema que afeta uma rede onde um ou mais hosts não conseguem se comunicar entre si, ou com a rede externa. Na figura a seguir podemos ver o formato das mensagens ICMP Echo Request e Echo Reply. O que as diferencia é o tipo - a mensagem Echo Request possui o tipo 8 e a Echo Reply, o tipo 0, ambas com código 0:O Número de Sequência se inicia em 1 e é incrementado cada vez que uma nova mensagem Echo Request é enviada. o ping então mostra o número de sequência de cada datagrama retornado, de modo que podemos verificar se os pacotes se perderam, estão fora de ordem, ou ainda foram duplicados. Como sabemos, o protocolo IP é um serviço de entrega de datagramas do tipo "melhor esforço", de modo que qualquer uma dessas condições citadas pode vir a ocorrer. Além de mostrar o número de sequência, quando a mensagem de retorno Echo Reply é recebida, também são mostrados o TTL e o RTT (Round Trip Time) calculado. O ping calcula o RTT armazenando a hora na qual o pacote Echo Request é enviado na área de dados da mensagem ICMP. Então, quando a resposta Echo Reply é recebida, ele simplesmente subtrai esse valor de hora da hora atual (momento em que o datagrama é recebido). Erros e perda de pacotes também são relatados pelo comando ping. Veja na figura a seguir um exemplo do comando ping emitido para testar a conectividade com o host www.planetaunix.com.br (usando uma estação com Kali Linux) :Veja o mesmo comando sendo emitido a partir do prompt de comandos em uma estação com Windows 7:Em ambos os casos emitimos o ping para uma URL (www.planetaunix.com.br), podemos perceber que o endereço IP é resolvido e então utilizado para o envio das mensagens. Quando emitimos um comando ping, alguns segundos podem se passar antes da primeira linha de informações com o IP do host aparecer, sendo esse o tempo necessário para que o DNS determine o IP que corresponda ao hostname usado. Obviamente podemos pingar um endereço IP diretamente, se ele for conhecido. Note também que a saída padrão no Linux mostra o número de sequência de cada datagrama (campo icmp_seq=), ao passo que no prompt do Windows essa informação não é mostrada por padrão. As colunas time= e tempo= mostram o RTT do datagrama enviado (em milissegundos), ao passo que o TTL (43 no exemplo) é mostrado na coluna TTL (mesmo nome em ambos os sistemas). Já o campo bytes=32 mostra o tamanho da mensagem enviada - no caso, 32 bytes. Esse tamanho pode ser alterado por meio de opções do comando ping, que veremos mais adiante. Alterar a quantidade de bytes enviados pode ser muito útil para realização de testes específicos de conectividade. São mostradas também as estatísticas de envio dos pacotes, com dados sobre número de pacotes transmitidos, número de pacotes recebidos, pacotes perdidos e porcentagem de perda. Os RTTs mínimo, máximo e médio também são calculados e exibidos.
ping [opções] hostname ou endereço ip Opções comuns do programa ping no Windows:
Exemplo: 1. Pingar o host www.bosontreinamentos.com.br enviando seis requisições de eco:ping -n 6 www.bosontreinamentos.com.br2. Capturar os pacotes de ping no Wireshark. Vamos pingar o endereço www.bosontreinamentos.com.br e capturar os pacotes ICMP trocados usando o analisador de pacotes Wireshark: ping www.bosontreinamentos.com.br Veja os oito pacotes capturados na figura a seguir (4 mensagens Echo Request e 4 mensagens Echo Reply):Vamos abrir uma das mensagens Echo Request para ver seu conteúdo:Note os valores dos campos Tipo (8), Código (0), Checksum (ox4d56 [correct]), Identificador e Número de Sequência (ambos nas representações Big Endian e Little Endian), e o conteúdo da mensagem, que consiste em uma sequência de caracteres (no caso, letras do alfabeto).Opções comuns do programa ping no Linux:
Exemplos 1. Enviar 8 pacotes de ping para o endereço 192.168.1.1 e sair: # ping -c 8 192.168.1.1 2. Enviar 20 pacotes de ping para o endereço 192.168.1.1, com saída silenciosa: # ping -c 20 -q 192.168.1.1 3. Enviar dois pacotes com tamanho de 100 bytes cada: # ping -c 2 -s 100 192.168.1.1 4. Enviar pacotes por 4 segundos antes de encerrar. Como o tempo padrão entre cada pacote é de 1 segundo, espera-se que 4 pacotes sejam enviados e recebidos: # ping -w 4 192.168.1.1 5. Enviar 16 pacotes, com intervalo de 0,5 segundo entre cada um: # ping -c 16 -i 0.5 192.168.1.1 6. Enviar pacotes de flood ping por 5 segundos: # ping -f -w 5 192.168.1.1Note que com a opção de flood (-f), 2896 pacotes foram enviados em apenas 5 segundos. Vimos neste artigo o funcionamento do programa ping, com vários exemplos de sua utilização. Trataremos no próximo artigo de um outro comando que faz uso de pacotes ICMP, o traceroute (ou tracert).
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-como-funciona-o-utilitario-traceroute/
Por: Gabriela Parente
Para o Site: Techmovie
O utilitário traceroute, que foi escrito por Van Jacobson em 1987, é uma ferramenta de diagnóstico que nos permite ver a rota que datagramas IP seguem quando são enviados de um host a outro. O traceroute faz uso do protocolo ICMP e do campo TTL no cabeçalho IP do datagrama. O campo TTL (Time to Live) é um campo de 8 bits que o dispositivo de origem inicializa com um valor específico. O valor a ser usado neste campo varia entre os sistemas operacionais, sendo comuns os valores 128 para sistemas Windows e 64 para sistemas baseados em Unix, como o Linux (em pacotes normais; o traceroute utiliza valores totalmente diferentes). Toda vez que um datagrama chega a um roteador, seu TTL é decrementado em um antes de ser encaminhado adiante. O propósito do TTL é evitar que datagramas entrem em um loop de roteamento, o que pode ocorrer devido a algum tipo de falha durante o roteamento dos pacotes. Quando um roteador recebe um datagrama cujo TTL é igual a 0 (zero), ele não o encaminhará mais. Em vez disso, o roteador irá descartar o pacote e enviar de volta ao host que o originou uma mensagem ICMP do tipo Tempo Excedido. Essa mensagem contém o endereço IP do roteador como endereço de origem - e esse é o segredo do traceroute.
O traceroute envia um datagrama com um TTL igual a 1 ao host de destino. Ao chegar ao primeiro rotador no caminho, o TTL é decrementado, ficando com o valor zero, de modo que o datagrama é descartado e a mensagem ICMP "Tempo Excedido" é enviada de volta à origem. Desta forma, o primeiro roteador no caminho é identificado. Então, o traceroute endia um novo datagrama, desta vez com o TTL igual a 2, que passará pelo primeiro roteador, que decrementa o TTL para 1, e então será descartado no segundo roteador - e assim, descobrimos o endereço IP deste roteador também. Esse processo continua até que um datagrama chegue ao host de destino. Porém, ao chegar no host de destino, mesmo que o TTL do datagrama seja igual a 1, ele não será descartado e, portanto, a mensagem ICMP Tempo Excedido não será gerada. Neste caso, como sabemos que o pacote chegou a seu destino? Isso vai depender do sistema operacional utilizado (mais precisamente, do utilitário presente); No Unix e derivados, o traceroute envia pacotes UDP, escolhendo portas de um valor elevado, que muito provavelmente não são utilizadas por nenhuma aplicação no host de destino. Desta forma, o host de destino irá gerar um erro ICMP do tipo "Porta Inalcançável" - e, então, tudo o que o traceroute tem a fazer é diferenciar o recebimento de mensagens Tempo Excedido da mensagem Porta Inalcançável para saber quando parar. Já no Windows, são enviados datagramas ICMP do tipo Echo Request - o famoso ping - e quando o dispositivo de origem recebe uma resposta Echo Reply, ele sabe que o pacote chegou a seu destino. Vejamos alguns exemplos 1. Comando tracert no prompt do Windows tracert No Windows usamos a palavra "tracert" em vez de "traceroute" para executar o utilitário. São mostrados os endereços dos roteadores por onde os pacotes passaram até chegar ao destino especificado. A primeira coluna da saída mostrada contém o número do salto, e as três colunas seguintes mostram os RTTs (Round Trip Times) das mensagens enviadas - o traceroute envia três mensagens por padrão para cada salto. A última coluna mostra os endereços IP dos roteadores descobertos na rota. Veja a captura desses pacotes no Wireshark:Note que o primeiro pacote é enviado com TTL igual a 1, sendo uma mensagem ICMP do tipo Echo Request (ping), e seu conteúdo é uma sequência de zeros perfazendo 64 bytes de dados.2. Comando traceroute no Linux Como vou usar o Linux Ubuntu para fazer o teste, primeiramente preciso instalar o pacote do traceroute. Para isso, use o comando a seguir: $ sudo apt-get install traceroute Sintaxe do traceroute no Linux: traceroute [opções] destino Opções mais comuns:
Rodarei o utilitário para descobrir a rota até o destino www.bosontreinamentos.com.br: $ traceroute www.bosontreinamentos.com.brNote que foram enviados pacotes com 60 bytes de tamanho, para no máximo 30 saltos (hops). Se usarmos endereçamento IPv6 os pacotes terão tamanho de 80 bytes. Perceba que os saltos de números 12 em diante mostram apenas o caractere * (asterisco), o que indica que não houve resposta naquele ponto em um período de 5 segundos (padrão). Isso pode ser ocasionado por problemas na rede, uso de firewalls que filtram portas UDP improváveis ou ainda respostas de eco ICMP. 3. Traceroute mostrando os endereços IP dos saltos em vez dos nomes (hostnames): $ traceroute -n www.bosontreinamentos.com.br 4. Traceroute usando segmentos TCP SYN para efetuar a sondagem. Para este exemplo, precisarei usar o sudo, pois somente usuário root ou com privilégios administrativos pode executá-lo. $ traceroute --tcp www.bosontreinamentos.com.brO processo foi bem mais rápido neste exemplo. Veja na figura a seguir a captura do processo no Wireshark, com um filtro de TCP aplicado. Note a flag SYN destacada:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/tcpdump-capturar-e-analisar-trafego-de-rede-no-linux/
Por: Gabriela Parente
Para o Site: Techmovie
O tcpdump é uma excelente ferramenta para realizar captura e análise de pacotes de rede, recomendada para profissionais que precisem realizar monitoramento e manutenção em uma rede de computadores, além de estudantes que queiram entender a fundo o funcionamento da pilha de protocolos TCP/IP. O site oficial do tcpdump, e também da biblioteca libpcap (sobre o qual ele é baseado), é o www.tcpdump.org.
O tcpdump, que é software livre, roda na linha de comandos, estando disponível em diversos sistemas operacionais, como Linux, BSD, OS X, AIX e outros. Ele faz uso da biblioteca libpcap para realizar a captura de pacotes, e existe uma versão da ferramenta para Windows, chamada de WinDump, que usa a biblioteca WinPcap. Neste artigo vamos nos focar no tcpdump em si, usando para isso um sistema Linux (Ubuntu; qualquer outro sistema Linux irá servir para testar os exemplos mostrados).
Para executar o tcpdump precisaremos de privilégios de administrador no sistema.
Instalação
Para instalar o tcpdump no Ubuntu Linux, ou em sistemas baseados em Debian, use o comando a seguir no terminal:
sudo apt-get install tcpdump
Sintaxe:
tcpdump [opções]
Opções principais:
Exemplos de uso:
1. Capturar somente o tráfego a partir da interface eth0:
sudo tcpdump -i eth0
2. Gravar os pacotes capturados em um arquivo de nome captura.cap:
sudo tcpdump -w captura.cap
3. Ler os pacotes capturados a partir do arquivo captura.cap:
sudo tcpdump -r captura.cap
4. Capturar somente o tráfego associado ao protocolo ICMP, na interface eth0:
sudo tcpdump -i eth0 icmp
5. Capturar somente o tráfego associado ao protocolo ARP, na interface eth0:
sudo tcpdump -i eth0 arp
6. Capturar somente 50 pacotes a partir da interface eth0:
sudo tcpdump -c 50 -i eth0
7. Mostrar os pacotes capturados tanto em ASCII quanto em HEX, incluindo cabeçalho Ethernet:
sudo tcpdump -XX -i eth0
8. Capturar pacotes mostrando IPs em vez de nomes:
sudo tcpdump -n -i eth0
9. Capturar somente pacotes maiores que 100 bytes:
sudo tcpdump -i eth0 greater 100
Neste exemplo, se emitirmos um comando ping a partir de outra janela de terminal, os pacotes não serão capturados, pois são menores que 100 bytes.
10. Capturar somente pacotes destinados à porta 53:
sudo tcpdump -i eth0 port 53
Para testar, abrimos um navegador e acessamos uma página qualquer da Web, como www.bosontreinamentos.com.br
11. Usando filtros de condições: Capturar pacotes que usam o protocolo e cujo endereço de destino seja 64.233.186.121
sudo tcpdump -i eth0 dst 64.233.186.121 and icmp
Para testar, abrimos outra janela de terminal e emitimos o comando ping para vários endereços; somente serão capturados pacotes ao ser usado o endereço discriminado no comando. Se abrirmos um navegador e tentarmos acessar esse mesmo endereço (ou o site, www.planetaunix.com.br), os pacotes não serão capturados, por conta do protocolo utilizado (http em vez de icmp), mostrando que ambas as condições (AND) precisam ser satisfeitas para que essa captura tenha efeito.
12. Capturar somente os pacotes ICMP Echo Request enviados pelo programa ping da máquina local, cujo IP é 192.169.1.105, para um endereço remoto, como 8.8.8.8
sudo tcpdump -i eth0 icmp and src 192.168.1.105 and dst 8.8.8.8
Existem diversas outras opções e funcionalidades disponíveis no utilitário, e recomendamos uma leitura minuciosa das páginas de manual do tcpdump para aprofundar seus conhecimentos a respeito.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-tcp-transmission-control-protocol/
Por: Gabriela Parente
Para o Site: Techmovie
A camada de Transporte se localiza entre as camadas de Aplicação e de Internet na pilha TCP/IP, e corresponde à camada de Transporte no modelo OSI. Ela é responsável por fornecer serviços à camada de aplicação, e recebe serviços da camada de Internet. A figura abaixo mostra a relação entre as camadas citadas:
No geral, a camada de transporte tem o papel de fornecer funções que permitam a comunicação entre processos de aplicações (softwares) entre computadores diferentes. Assim, a camada de transporte fornece um mecanismo pelo qual diversas aplicações distintas podem enviar e receber dados usando a mesma implementação de protocolos das camadas mais baixas.
Para que isso seja possível, a camada de transporte deve realizar diversas tarefas distintas (porém relacionadas entre si). Por exemplo, os protocolos da camada de transporte devem conseguir discernir quais dados provém de quais aplicações, combinar esses dados em um fluxo de dados que será enviado às camadas mais baixas da pilha de protocolos, e efetuar as tarefas inversas no host de destino, separando os dados e os entregando às aplicações que os devem processar (processos). Além disso, a camada de transporte pode dividir grandes quantidades de dados que devem ser transmitidos em pedaços – ou segmentos – menores para que sua transmissão seja possível.
E, ainda, a camada de transporte pode fornecer serviços de conexão para as aplicações (e outros protocolos) de camadas de nível superior. Esses serviços podem ser orientados á conexão, ou sem conexão, dependendo do protocolo utilizado.
Os protocolos da camada de transporte também podem assegurar uma comunicação confiável entre os hosts, realizando controle de fluxo (taxa de transmissão de dados) e detecção de erros, além de permitir o reenvio de dados quando são perdidos ou descartados.
As principais funções da camada de transporte são:
Vamos estudar essas funções neste artigo e nos próximos artigos, onde trataremos dos protocolos específicos que agem na camada de transporte..
Um processo é um software em execução, considerado uma entidade da camada de aplicação, a qual irá utilizar os serviços da camada de transporte. Em uma comunicação via rede, a camada de rede é a camada responsável por realizar a comunicação em nível de host, permitindo entregar uma mensagem a um computador de destino. Mas isso não é suficiente para que a comunicação seja efetivamente realizada, pois ao chegar na máquina de destino, uma mensagem precisa ser encaminhada adequadamente para a aplicação que irá tratá-la, ou seja, para o processo correto. É aí que a camada de transporte deve agir, sendo responsável pela entrega da mensagem ao processo apropriado. A figura a seguir compara as camadas de Internet e de Transporte no tocante à transmissão de uma mensagem:
Para que seja possível entregar a mensagem ao processo correto, a camada de transporte se utiliza de identificadores denominados Números de Portas (Port Numbers), que estudaremos na seção a seguir.
A comunicação entre processos via rede faz uso do paradigma Cliente-Servidor, no qual um processo em um dos hosts, chamado de cliente, requer serviços de um processo em outro host, remoto, chamado de servidor. Em ambos os casos, os processos possuem o mesmo nome. Por exemplo, podemos realizar a conexão remota a um host utilizando uma aplicação (processo) cliente chamado ssh no host local, que irá se comunicar a um processo servidor de nome ssh, executado no host remoto. Desta forma, para que seja possível realizar a comunicação entre dois hosts, precisamos definir alguns parâmetros, listados a seguir:
Para definirmos os hosts que irão se comunicar, usamos o endereçamento IP, realizado na camada de Internet do TCP/IP (camada de Rede do modelo OSI). Já para que seja possível definir os processos em questão, usamos o conceito de números de portas, que são números inteiros no intervalo de 0 a 65535 (16 bits).
Assim, o processo cliente escolhe um número de porta a utilizar, o qual pode ser um número de porta registrado ou um número de porta efêmero. Esse número, que é utilizado apenas durante a comunicação em curso, é geralmente escolhido como um número de valor maior que 1023, de forma aleatória – isso é, na verdade, uma necessidade para que alguns programas funcionem de forma adequada. O processo servidor também utilizará um número de porta. Porém, nesse caso, a escolha do número a utilizar não será aleatória, mas sim um número escolhido especificamente para o processo em questão, chamado de número de porta bem-conhecido (well-known port number). Por exemplo, para que um cliente possa se comunicar com um servidor via ssh, o cliente irá escolher um número de porta temporário, como por exemplo 41265, e o servidor irá utilizar um número de porta fixo e “oficial” para o serviço de ssh, que é o número 22.
Desta forma, o IP permite definir o host que está se comunicando e o número de porta define o processo (aplicação) dentro daquele host.
Os números de portas são divididos em três faixas pelo IANA (Internet Assigned Numbers Authority), que é um departamento do ICANN, empresa sem fins lucrativos que coordena a alocação de endereços IPs globalmente, além de outras informações, como os números de portas, cujas faixas são descritas como:
Um socket (soquete) é a combinação de um endereço IP com um número de porta, o que permite definir um processo de forma única tanto no cliente quanto no servidor. Para que seja possível usar serviços de rede da camada de transporte são necessários, portanto, um par de endereço de socket: um para o cliente e outro para o servidor. Um socket possui dados tanto da camada de Internet (endereço IP), quanto da camada de transporte (número de porta). A seguir temos uma representação de um endereço de socket:
Para que uma mensagem possa ser enviada de um processo a outro, o protocolo da camada de transporte a ser utilizado deverá encapsular (e desencapsular) as mensagens. O encapsulamento ocorre, naturalmente, na máquina que origina a mensagem, de modo que quando uma aplicação possui uma mensagem a enviar, essa mensagem é passada à camada de Transporte, na qual a mensagem recebe um cabeçalho adequado, contendo entre ouras informações, os números de portas envolvidos na comunicação. Chamamos de segmentos os conjuntos de mensagens e cabeçalhos da camada de transporte, os quais são repassados à camada de Internet onde, ao receberem o cabeçalho apropriado, passam a ser chamados de pacotes. Veja como funciona o encapsulamento e desencapsulamento na figura a seguir:
Ao chegar na máquina de destino, o segmento é desencapsulado, seu cabeçalho é descartado e a mensagem é repassada à aplicação determinada na camada de aplicação, para processamento da mensagem.
A Camada de Transporte da suíte TCP/IP define dois protocolos de transporte padrão: o TCP (Transmission Control Protocol) e o UDP (User Datagram Protocol). O TCP implementa um protocolo de fluxo de dados confiável, podendo assegurar que os dados sejam entregues de forma confiável em seu destino, pois fornece um serviço orientado à conexão. Já o UDP implementa um protocolo de fluxo de dados não-confiável, sem conexão, e que portanto não pode garantir a entrega dos dados ao host de destino. Ambos os protocolos são muito úteis em situações distintas, e serão estudados nos próximos artigos.
No geral, a camada de transporte tem o papel de fornecer funções que permitam a comunicação entre processos de aplicações (softwares) entre computadores diferentes. Assim, a camada de transporte fornece um mecanismo pelo qual diversas aplicações distintas podem enviar e receber dados usando a mesma implementação de protocolos das camadas mais baixas.
Para que isso seja possível, a camada de transporte deve realizar diversas tarefas distintas (porém relacionadas entre si). Por exemplo, os protocolos da camada de transporte devem conseguir discernir quais dados provém de quais aplicações, combinar esses dados em um fluxo de dados que será enviado às camadas mais baixas da pilha de protocolos, e efetuar as tarefas inversas no host de destino, separando os dados e os entregando às aplicações que os devem processar (processos). Além disso, a camada de transporte pode dividir grandes quantidades de dados que devem ser transmitidos em pedaços – ou segmentos – menores para que sua transmissão seja possível.
E, ainda, a camada de transporte pode fornecer serviços de conexão para as aplicações (e outros protocolos) de camadas de nível superior. Esses serviços podem ser orientados á conexão, ou sem conexão, dependendo do protocolo utilizado.
Os protocolos da camada de transporte também podem assegurar uma comunicação confiável entre os hosts, realizando controle de fluxo (taxa de transmissão de dados) e detecção de erros, além de permitir o reenvio de dados quando são perdidos ou descartados.
As principais funções da camada de transporte são:
Vamos estudar essas funções neste artigo e nos próximos artigos, onde trataremos dos protocolos específicos que agem na camada de transporte..
Um processo é um software em execução, considerado uma entidade da camada de aplicação, a qual irá utilizar os serviços da camada de transporte. Em uma comunicação via rede, a camada de rede é a camada responsável por realizar a comunicação em nível de host, permitindo entregar uma mensagem a um computador de destino. Mas isso não é suficiente para que a comunicação seja efetivamente realizada, pois ao chegar na máquina de destino, uma mensagem precisa ser encaminhada adequadamente para a aplicação que irá tratá-la, ou seja, para o processo correto. É aí que a camada de transporte deve agir, sendo responsável pela entrega da mensagem ao processo apropriado. A figura a seguir compara as camadas de Internet e de Transporte no tocante à transmissão de uma mensagem:
Para que seja possível entregar a mensagem ao processo correto, a camada de transporte se utiliza de identificadores denominados Números de Portas (Port Numbers), que estudaremos na seção a seguir.
A comunicação entre processos via rede faz uso do paradigma Cliente-Servidor, no qual um processo em um dos hosts, chamado de cliente, requer serviços de um processo em outro host, remoto, chamado de servidor. Em ambos os casos, os processos possuem o mesmo nome. Por exemplo, podemos realizar a conexão remota a um host utilizando uma aplicação (processo) cliente chamado ssh no host local, que irá se comunicar a um processo servidor de nome ssh, executado no host remoto. Desta forma, para que seja possível realizar a comunicação entre dois hosts, precisamos definir alguns parâmetros, listados a seguir:
Para definirmos os hosts que irão se comunicar, usamos o endereçamento IP, realizado na camada de Internet do TCP/IP (camada de Rede do modelo OSI). Já para que seja possível definir os processos em questão, usamos o conceito de números de portas, que são números inteiros no intervalo de 0 a 65535 (16 bits).
Assim, o processo cliente escolhe um número de porta a utilizar, o qual pode ser um número de porta registrado ou um número de porta efêmero. Esse número, que é utilizado apenas durante a comunicação em curso, é geralmente escolhido como um número de valor maior que 1023, de forma aleatória – isso é, na verdade, uma necessidade para que alguns programas funcionem de forma adequada. O processo servidor também utilizará um número de porta. Porém, nesse caso, a escolha do número a utilizar não será aleatória, mas sim um número escolhido especificamente para o processo em questão, chamado de número de porta bem-conhecido (well-known port number). Por exemplo, para que um cliente possa se comunicar com um servidor via ssh, o cliente irá escolher um número de porta temporário, como por exemplo 41265, e o servidor irá utilizar um número de porta fixo e “oficial” para o serviço de ssh, que é o número 22.
Desta forma, o IP permite definir o host que está se comunicando e o número de porta define o processo (aplicação) dentro daquele host.
Os números de portas são divididos em três faixas pelo IANA (Internet Assigned Numbers Authority), que é um departamento do ICANN, empresa sem fins lucrativos que coordena a alocação de endereços IPs globalmente, além de outras informações, como os números de portas, cujas faixas são descritas como:
Um socket (soquete) é a combinação de um endereço IP com um número de porta, o que permite definir um processo de forma única tanto no cliente quanto no servidor. Para que seja possível usar serviços de rede da camada de transporte são necessários, portanto, um par de endereço de socket: um para o cliente e outro para o servidor. Um socket possui dados tanto da camada de Internet (endereço IP), quanto da camada de transporte (número de porta). A seguir temos uma representação de um endereço de socket:
Para que uma mensagem possa ser enviada de um processo a outro, o protocolo da camada de transporte a ser utilizado deverá encapsular (e desencapsular) as mensagens. O encapsulamento ocorre, naturalmente, na máquina que origina a mensagem, de modo que quando uma aplicação possui uma mensagem a enviar, essa mensagem é passada à camada de Transporte, na qual a mensagem recebe um cabeçalho adequado, contendo entre ouras informações, os números de portas envolvidos na comunicação. Chamamos de segmentos os conjuntos de mensagens e cabeçalhos da camada de transporte, os quais são repassados à camada de Internet onde, ao receberem o cabeçalho apropriado, passam a ser chamados de pacotes. Veja como funciona o encapsulamento e desencapsulamento na figura a seguir:
Ao chegar na máquina de destino, o segmento é desencapsulado, seu cabeçalho é descartado e a mensagem é repassada à aplicação determinada na camada de aplicação, para processamento da mensagem.
A Camada de Transporte da suíte TCP/IP define dois protocolos de transporte padrão: o TCP (Transmission Control Protocol) e o UDP (User Datagram Protocol). O TCP implementa um protocolo de fluxo de dados confiável, podendo assegurar que os dados sejam entregues de forma confiável em seu destino, pois fornece um serviço orientado à conexão. Já o UDP implementa um protocolo de fluxo de dados não-confiável, sem conexão, e que portanto não pode garantir a entrega dos dados ao host de destino. Ambos os protocolos são muito úteis em situações distintas, e serão estudados nos próximos artigos.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-tcp-transmission-control-protocol/
Por: Gabriela Parente
Para o Site: Techmovie
O Protocolo TCP, que pertence à camada de Transporte juntamente com o UDP, fornece um serviço de entrega de pacotes confiável e orientado a conexão.
Dizemos que um serviço é orientado à conexão quando duas aplicações que estejam usando o protocolo (por exemplo, TCP) para se comunicarem entre si – normalmente um cliente e um servidor – necessitem estabelecer uma conexão uma com a outra antes que possam trocar dados.
O protocolo TCP é um tanto complexo, e seu estudo será realizado ao longo de diversas lições. Para simplificar um pouco o processo, listamos a seguir as principais funções realizadas pelo TCP:
Claramente podemos ver que o protocolo TCP é extremamente importante – não é à toa que a pilha TCP/IP o tem em seu nome. Vamos começar seu estudo conhecendo os campos que formam o cabeçalho de um segmento TCP e suas respectivas funções.
Um segmento TCP é encapsulado em um datagrama IP, conforme podemos ver na figura a seguir:
E na figura a seguir podemos ver o formato completo de um cabeçalho TCP, cujo tamanho normal é de 20 bytes, conforme mostrado na ilustração anterior (mas pode ser maior, se houverem opções presentes):
Segue uma descrição sucinta de cada um dos campos no cabeçalho TCP:
O protocolo TCP fornece confiabilidade (“reliability”) a uma conexão por meio dos seguintes processos:
Em resumo, o protocolo TCP fornece um serviço orientado a conexão, confiável, na camada de transporte da pilha TCP/IP. Os dados são empacotados em unidades denominadas segmentos, e as mensagens enviadas recebem uma confirmação de recebimento, além de serem reordenadas no host de destino, que também verifica a ocorrência de erros de transmissão. Caso haja algum erro, os dados são retransmitidos e, caso hajam segmentos duplicados, são descartados. Além disso, o protocolo TCP permite enviar dados de múltiplas aplicações multiplexadas, e usa o mecanismo de portas de comunicação para determinar a qual aplicação enviar e entregar os dados transmitidos.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/packeth-ferramenta-para-gerar-pacotes-de-rede/
Por: Gabriela Parente
Para o Site: Techmovie
O packETH é um software gerador de pacotes de rede que permite criar e enviar quaisquer tipos de pacotes, totalmente personalizados campo a campo, em uma rede Ethernet.
Com ele podemos ajustar inúmeros parâmetros e então enviar o pacote (ou sequência de pacotes) pela rede, sendo uma ferramenta muito útil para realização de testes em redes e estudo de protocolos.
O packETH pode ser obtido no site http://packeth.sourceforge.net/packeth/Home.html, e possui versões para Windows, Mac e Linux. A versão mais recente é a 1.8.1 (para Linux), sendo as versões para Windows e Mac ligeiramente mais antigas (até o momento).
Características básicas do packETH:
Protocolos suportados:
É possível também ajustar diversos parâmetros nos pacotes, tais como:
E ainda é possível salvar configurações em um arquivo e carregar essas configurações posteriormente, além de suportar o formato pcap.
O software possui versões para interface gráfica (GUI) e linha de comandos (CLI). Neste tutorial vou usar a versão para interface gráfica.
Para instalar o packETH, clique no link a seguir, que o levará à página de downloads, onde você poderá escolher a versão mais adequada a seu sistema:
Se você estiver utilizando alguma distribuição Linux, é possível que o packETH esteja presente nos repositórios de sua distro. Como vou utilizar o Linux Debian nos exemplos, irei instalá-lo via apt-get. Para isso, usarei o comando a seguir (funciona também no Ubuntu e derivados):
$ sudo apt-get install packeth |
Caso você queira usar a versão para Windows, sua instalação é bem simples e básica: basta baixar o pacote zipado, extrair seu conteúdo em uma pasta qualquer do sistema, e então executar o arquivo packETH.exe. Porém, você deve estar ciente do seguinte: as versões para Windows e OS X foram portadas por terceiros, e possuem alguns bugs. Por isso, recomendamos utilizar a versão para Linux, para que o software possa ser utilizado sem nenhum tipo de problemas e com todos os seus recursos funcionais.
Observação: Caso apareça o erro “O programa não pode ser iniciado porque está faltando wpcap.dll no seu computador”, você precisará instalar a biblioteca WinPcap para que seja possível utilizar o packETH. Clique aqui para baixar o WinPcap (para Windows). Se preferir, visite o site oficial do projeto WinPcap.
Após instalar a biblioteca WinPcap (instalador corriqueiro – execute-o e siga as instruções para instalá-lo), tente abrir novamente o packETH.
Como citado, neste artigo vou usar a versão para Linux. Veja a tela inicial do programa aberto abaixo (é necessário privilégios de administrador para poder enviar os pacotes):
A barra de ferramentas nos permite acessar os vários modos de funcionamento do programa. Veja abaixo a barra de ferramentas e a seguir uma descrição sucinta de cada um de seus botões:
Vamos criar um pacote de exemplo simples e enviá-lo pela rede. As configurações do equipamento que utilizarei são as seguintes:
Vou criar um pacote ICMP Echo request (“ping”) e enviarei do meu host ao meu roteador. Para isso, vamos configurar os campos nas camadas de Enlace e Internet do pacote, de acordo com os dados a seguir:
Camada de Enlace
Próxima camada (Next layer): IPv4
Camada de Internet
Próxima camada (Next layer): ICMP
Dados do pacote ICMP:
Após configurar o pacote, basta clicar no botão Send para enviá-lo. Não se esqueça de antes clicar no botão Interface e selecionar a interface de rede que será utilizada no envio do pacote. Veja na figura a seguir o pacote capturado no Wireshark, e note que houve a resposta Echo Reply do meu host de destino. Note também o payload do pacote (“FÁBIO”):
Vamos a um segundo exemplo. Desta vez vou enviar um pacote TCP com o flag SYN ativado, o que irá iniciar o procedimento do handshake de três vias entre os hosts. Espera-se que o host de destino responda com um pacote contendo as flags SYN e ACK ativadas, indicando que a conexão foi aceita, mas não será compeltada pois meu host irá usar uma porta fictícia (não ativa), e deverá responder de volta com um flag RST (reset).
Configurações do equipamento::
Camada de Enlace
Próxima camada (Next layer): IPv4
Camada de Internet
Próxima camada (Next layer): TCP
Camada de Transporte (Dados TCP)
Após configurar o pacote, basta clicar no botão Send para enviá-lo. Veja na figura a seguir o pacote capturado no Wireshark, e note que houve a resposta do meu gateway com as flags SYN e ACK ativadas, e veja que a máquina de origem respondeu de volta com a flag RST ativada, resetando a conexão:
Você pode criar uma infinidade de tipos de pacotes, combinando as opções de campos disponíveis, e realizar testes variados em sua rede, com testes de conectividade e segurança. Nos próximos artigos vou tratar sobre funcionalidades mais avançadas do packETH, que podem ser configuradas clicando nos botões Gen-b, Gen-s e Pcap.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-tcp-handshake-de-tres-vias/
Por: Gabriela Parente
Para o Site: Techmovie
O Protocolo TCP, como vimos nas lições anteriores, é um protocolo orientado a conexão. Isso significa que, antes que qualquer dado possa ser enviado entre dois dois hosts, uma conexão deve ser estabelecida entre eles primeiramente. Vamos estudar nessa lição o processo pela qual uma conexão TCP é estabelecida entre dois hosts em uma rede.
O processo de estabelecimento de conexões TCP se dá da seguinte forma:
Após essa troca de três segmentos entre cliente e servidor, o processo de estabelecimento de conexão está completo. Chamamos esse processo de Handshake de três Vias ( Three-Way Handshake). Neste caso, o host que envia o primeiro segmento SYN realiza o que chamamos de uma abertura de conexão ativa. Já o outro host, em nosso exemplo o servidor que recebe o segmento SYN, realiza uma abertura de conexão passiva.
Cada vez que um dos hosts envia um segmento com a flag SYN para estabelecer a conexão, ele escolhe um número de sequência inicial para a conexão. Esse ISN muda ao longo do tempo, de modo que cada conexão terá um ISN diferente. De acordo com a RFC 793, o ISN deve ser visualizado como um contador de 32 bits que é incrementado em um a cada 4 μs (microsegundos). Desta forma, pacotes que sofrem um atraso muito grande na rede não serão entregues e, assim, evita-se que sejam interpretados erroneamente como pertencentes a outra conexão.
Veja na figura a seguir a captura dos pacotes trocados durante um handshake de três vias ao acessar um website a partir de um navegador:
Meu host é o 192.168.1.119, e estou acessando o host 186.202.153.82. Note nas figuras as flags trocadas, e os números de sequência dos segmentos TCP. Meu host envia um segmento com a flag SYN ativada, e número de sequência 0 (Seq=0); o servidor web remoto envia como resposta um segmento com as flags SYN e ACK ativas, número de sequência 0 (Seq=0) e confirmação do ISN igual a 0 + 1 =1 (Ack=1). O cliente, então, finaliza o processo enviando outro segmento ao servidor, com a flag ACK ativa, número de sequência igual ISN a 1 (Seq=1) e confirmando o ISN do servidor (Ack=1).
A figura a seguir detalha o esquema de troca de segmentos entre os dois hosts considerados na captura anterior:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-tcp-finalizando-uma-conexao-entre-dois-hosts/
Por: Gabriela Parente
Para o Site: Techmovie
Na lição anterior mostramos como é estabelecida uma conexão TCP entre dois hosts em uma rede, pelo processo denominado de Handshake de Três Vias. Após o estabelecimento dessa conexão, os hosts podem trocar dados entre si livremente.
Quando a troca de dados chega ao fim - por exemplo, quando um download é finalizado ou quando você sai de um web-site - conexão entre os hosts deve ser finalizada. Para isso, é realizado um processo de finalização da conexão, parecendo o processo de estabelecimento de conexão. Porém, há algumas diferenças. Por exemplo, como as conexões realizadas via protocolo TCP são full-duplex (dados podem trafegar em ambas as direções independentemente de outra direção), cada host deve finalizar a conexão independentemente. Ou seja, cada host deve enviar um segmento com a flag FIN ativada quando terminar de enviar seus dados.
Assim quando o protocolo TCP em um host recebe um segmento com a flag FIN, ele informará à aplicação envolvida na comunicação de que o outro host encerrou a transmissão de dados.
Chamamos o processo de finalização da conexão TCP de “Handshake de Quatro Vias”, pois são trocados ao todo quatro segmentos entre os hosts, ao contrário do processo de estabelecimento de conexão, onde são trocados três segmentos.
O host que emite primeiramente o segmento FIN realiza o que chamamos de finalização ativa, e o host que recebe esse segmento realiza uma finalização passiva. A seguir listamos as etapas da finalização de uma conexão TCP:
As conexões entre hosts são geralmente iniciadas por um host cliente, e podem ser finalizadas tanto pelo cliente quanto pelo servidor (ou outro host). Porém, é mais comum que o próprio cliente que iniciou a conexão a finalize, pois os processos na máquina cliente são normalmente controlados por um usuário, que em algum momento encerra a aplicação que estava transmitindo e recebendo dados pela rede – por exemplo, o cliente fecha o navegador e encerra as conexões que estavam ativas com os websites abertos.
A figura a seguir detalha o esquema de troca de segmentos entre os dois hosts ao finalizar a conexão TCP.
A figura anterior mostra também os estados dos dispositivos durante o processo de finalização da conexão. Inicialmente, ambos os hosts (cliente e servidor) esão no estado “ESTABLISHED“, que significa que a conexão está estabelecida e que podem trocar dados. Os demais estados são explicados a seguir:
MSL: Maximum Segment Lifetime (Tempo de Vida Máximo do Segmento), é o tempo durante o qual um segmento TCP pode existir em uma rede antes de ser descartado. É utilizado para calcular o valor do estado TIME_WAIT, que é de 2 vezes o valor do MSL.Podemos determinar o valor do MSL em um sistema Linux (usei a distribuição Debian como exemplo) executando o comando a seguir no terminal:
# sysctl net.ipv4.tcp_fin_timeout Veja a saída abaixo: O MSL desse sistema é, portanto, de 60 segundos. O RFC 793 determina que o MSL deve ser de 2 minutos, mas as implementações comuns do protocolo TCP utilizam também temporizações de 30 ou 60 segundos, por exemplo. |
Também é possível executar o processo de finalização de uma conexão TCP usando um handshake de três vias. Neste caso, o host A envia o segmento FIN, e o host B responde com um único segmento combinando os passos 2 e 3 descritos anteriormente, ou seja, com as flags FIN e ACK juntas, e então o host A responde de volta com o ACK. Este é um método muito comum de finalização da conexão, e a figura a seguir mostra uma captura de pacotes do Wireshark onde podemos visualizar esse processo:
Na figura podemos ver que meu host, de IP 192,168,1,100, está finalizando a conexão ao servidor remoto de IP 64.233.186.121. Meu host envia o segmento FIN, recebendo de volta um segmento FIN + ACK, e então finaliza o processo confirmando a recepção desse segmento com outro ACK.
Uma observação importante é a de que uma conexão pode estar em um estado chamado “half-open” (semi-aberta), na qual um dos hosts executou o processo de finalização da conexão, mas o outro não. Assim, o host que finalizou não pode mais enviar dados por esta conexão, mas o outro host ainda pode, de modo que o host que iniciou a finalização da conexão continua a receber dados até que o outro host também finalize a conexão.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-udp-user-datagram-protocol/
Por: Gabriela Parente
Para o Site: Techmovie
O Protocolo UDP, que permanece à camada de transporte juntamente com o protocolo TCP, é um protocolo simples, orientado a datagrama. Ele não fornece confiabilidade na transmissão, pois envia os datagramas requisitados pela aplicação sem nenhuma garantia que eles chegarão ao seu destino.
O UDP não estabelece conexões antes de enviar dados. Apenas os empacota em datagramas e os envia. Além disso, não fornece confirmação da entrega desses dados. Portanto, o UDP não fornece nenhuma garantia de que as mensagens serão entregues, e não consegue detectar mensagens perdidas, tampouco transmiti-las.
Além disso, não garante que as mensagens serão recebidas na mesma ordem em que foram enviadas, e não possui mecanismo para gerenciamento do fluxo de dados entre os dispositivos.
Basicamente, o UDP é apenas um sistema de endereçamento de portas o protocolo IP.
É muito comum pensar que, por conta dessas características específicas, nós deveríamos sempre usar o protocolo TCP para enviar dados em rede; porém, diversas aplicações se beneficiam desse modelo de envio, sem confiabilidade, por conta de sua performance. O UDP é um protocolo simples, porém rápido.
O UDP encontra aplicações, por exemplo, em sistemas onde a performance da transmissão de dados é mais importante do que a plenitude da entrega de todos os datagramas. Como por exemplo podemos citar aplicações multimídia. Se você estiver assistindo a um vídeo streaming pela internet (como vídeos no Youtube), o mais importante é que o fluxo de transmissão seja rápido e uniforme, se "travamentos" ou "saltos" durante a exibição do vídeo. Se alguns datagramas forem perdidos ou descartados durante a transmissão, muito provavelmente nada será notado pelo usuário.
O Protocolo UDP encontra inúmeras aplicações em comunicação de redes, sendo que algumas das mais comuns estão compiladas na tabela a seguir:
Porta | Protocolo | Aplicação |
53 | DNS | Sistema de resolução de nomes de domínio |
67 e 68 | DHCP | Protocolo de configuração de hosts dinâmico |
161 e 162 | SNMP | Protocolo para gerenciamento de redes, que utiliza mensagens curtas |
520 e 521 | RIP | Protocolo de roteamento que não requer conexões |
Alguns protocolos usam, na verdade, tanto o protocolo TCP quanto o UDP para transmissão de suas mensagens. O exemplo típico é o protocolo DNS, que também usa TCP para funções que requerem confiabilidade, como transferências de zonas.
O UDP encontra uso em streaming de áudio e vídeo, VoIP, gaming, mecanismos de broadcast e conexões VPN (OpenVPN, por exemplo), entre outras.
Um segmento UDP é encapsulado em um datagrama IP, conforme podemos ver na figura a seguir:
E na figura a seguir podemos ver o formato completo de um cabeçalho UDP, cujo tamanho é de 8 bytes, conforme mostrado na ilustração anterior:
O uso dos campos “Checksum” e “Número de Porta de Origem” é opcional em IPv4; já em IPv6 apenas o campo “Número de Porta de Origem” é opcional.
Segue uma descrição sucinta de cada um dos campos no cabeçalho UDP
Note que ambos os protocolos, TCP e UDP, utilizam números de portas para identificar os processos que estão se comunicando, mas esses números são independentes- as portas TCP não tem relação com as portas UDP, e vice-versa.
Se compararmos o protocolo UDP com o protocolo TCP, vamos notar as seguintes diferenças:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-o-que-e-um-switch/
Por: Gabriela Parente
Para o Site: Techmovie
Um Switch é um equipamento de rede que permite interconectar dispositivos em uma rede de computadores, usando comutação de pacotes para receber, processar e encaminhar dados ao dispositivo de destino.
O Switch permite a conexão de dispositivos por meio de suas portas. É possível encontrar switches com a partir de 4 quatro portas até 48 (ou mais em alguns modelos especiais), operando em velocidades que podem variar entre Fast Ethernet (100 Mbps) e 10 Gbps (ou mesmo maior, em modelos muito especializados). É possível também associar alguns modelos de switches para permitir a conexão de mais dispositivos a um mesmo segmento de rede, com maior número de portas.
Os switches utilizam os endereços de hardware (MAC Address) para processar e encaminhar dados na camada de enlace (nível 2 no modelo OSI), e alguns modelos de switch também conseguem processar dados do nível 3 (camada de rede), incorporando assim algumas funcionalidades de roteamento. Um switch que pode operar em mais de uma camada é chamado de Switch Multiplayer.
Há até mesmo switches de camada 4 e camada 7 disponíveis no mercado.
Os switches gerenciam o fluxo de dados através de uma rede transmitindo uma mensagem recebida apenas para um ou mais dispositivos para os quais a mensagem foi enviada. Cada dispositivo de rede conectado a um switch pode ser identificado usando um número de endereço MAC (endereço físico), permitindo assim que o switch controle o fluxo de tráfego. Assim, é possível obter o máximo de eficiência e segurança na de rede.
Um switch ainda pode transmitir pacotes para toda a rede, quando uma mensagem é enviada em brodcast, por exemplo. Por conta disso, o segmento de rede formado pelos dispositivos conectados a um switch é considerado ainda um Domínio de Broadcasts. Porém, um Domínio de Colisão é criado em cada porta do switch, o que elimina os problemas de colisão de dados que ocorriam ao se usar hubs.
Muitos switches permitem a conexão de diferentes tipos de redes, geralmente por meio do uso de interfaces modulares, como por exemplo Ethernet, Fibre Channel, ATM e outras.
O switch encaminha os pacotes para o dispositivo ou grupo de dispositivos de destino, em vez de simplesmente encaminhar os pacotes para todos os nós da rede, como ocorria com os hubs, que eram dipositivos com basicamente a mesma função dos switches, porém sem muitas de suas capacidades. Para isso, ele tem a capacidade de aprender os endereços físicos dos dispositivos a ele conectados, e armazenar essa informação para uso posterior, associando os endereços físicos às portas onde esses dispositivos estão conectados.
Uma vez que o switch tenha aprendido os endereços físicos dos dispositivos a ele conectados, ele irá encaminhar os quadros da camada de enlace de dados usando um método de encaminhamento específico. Existem quatro métodos de encaminhamento que um switch pode usar:
Os switches podem ser classificados em Gerenciáveis e Não-Gerenciáveis:
Abaixo temos uma lista com alguns dos principais fabricantes de switches que atuam no mercado hoje. A lista não está completa, mas traz os fabricantes com maior representatividade e volume de vendas da atualidade:
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/o-que-e-o-apipa/
Por: Gabriela Parente
Para o Site: Techmovie
Quando usamos endereçamento Quando usamos endereçamento IPv4 em uma rede, é necessário configurar manualmente os IPs nas estações de trabalho ou então utilizar um servidor DHCP para atribuir esses endereços automaticamente - que é o procedimento mais comum.
Porém, se o servidor DHCP falhar ou não estiver disponível em uma rede Windows, neste caso, as máquinas na rede local não receberão suas configurações de rede, incluindo o endereço IP. Para tentar garantir que, num caso desses, as máquinas ao menos consigam se comunicar entre si dentro da própria rede local (LAN), podemos usar o serviço do APIPA - também conhecido como endereço IP de Link Local.
Usando o APIPA é possível garantir que as máquinas consigam se comunicar em uma rede local, mesmo que não haja servidores DHCP disponíveis para atribuir endereços aos hosts, ou que as máquinas não possuam configuração de IP fixo. Neste caso, o cliente DHCP atribui a si próprio um endereço IP de uma faixa pré-determinada, assim como uma máscara de sub-rede.
Quando um servidor DHCP se tornar disponível na rede novamente, o cliente efetuará uma requisição de IPs normalmente, substituindo o endereço APIPA pelo endereço que será fornecido pelo servidor. De acordo com a Microsoft, o serviço do APIPA verifica a cada 5 minutos se um servidor DHCP está disponível na rede.
A sigla APIPA significa Automatic Private IP Addressing, ou seja, Endereçamento IP Privado Automático.
Existe uma faixa de endereços reservados pelo IETF que são atribuíveis por meio do APIPA:
169.254.0.1 até 169.254.255.254
sendo que o primeiro e último blocos dessa faixa são reservados, de modo que as estações, na verdade, irão receber endereços localizados na seguinte faixa:
169.254.1.0 até 169.254.254.255
Também será usada a máscara de sub-rede classe B 255.255.0.0
A figura a seguir mostra uma máquina com Windows 10 fazendo uso do serviço do APIPA, pois o servidor DHCP da rede foi desligado e ela não conseguiu obter configurações de rede. Note o endereço IP (169.254.61.237) e a máscara de sub-rede utilizada (255.255.0.0):
O serviço pode ser desativado a partir das Configurações de Rede do Windows, nas propriedades do Protocolo TCP/IP, guia “Configuração Alternativa” (Alternate Configuration), como podemos ver na figura a seguir:
Se as máquinas em uma rede local estão recebendo endereços APIPA, isso significa que há algo de errado na comunicação com o servidor DHCP da rede.
Neste caso, as máquinas recebem endereços aleatórios para uso, determinados pelos seus sistemas operacionais, que emitem pacotes ARP na rede local para determinar quais endereços podem ser usados, pois não podemos ter endereços IP duplicados em uma rede local.
Os problemas mais comuns que podem levar uma estação a utilizar endereçamento APIPA incluem:
Ou seja, problemas que, em última instância, levem à quebra de comunicação entre as estações e o servidor DHCP da rede.
Um endereço APIPA não permite que seja feito roteamento para fora da rede local, de modo que o acesso à Internet não existirá nesse caso.
Pesquisa feita no Site:http://www.bosontreinamentos.com.br/redes-computadores/cisco-packet-tracer-adicionar-linhas-de-grade/
Por: Gabriela Parente
Para o Site: Techmovie
Quando criamos diagramas de rede usando o software Cisco Packet Tracer, é muito comum desejarmos manter os elementos de rede (switches, roteadores, hosts) alinhados entre si na tela. Porém, o programa não possui uma função específica para alinhá-los automaticamente. Mesmo assim, podemos fazer, o alinhamento manual, arrastando os elementos até as posições desejadas. Para facilitar essa tarefa, você pode inserir linhas de grade no fundo do diagrama - mais precisamente, uma figura de fundo (background) contendo linhas de grade, de tamanhos variáveis.
Para ativar o background no Packet Tracer pressione a combinação de teclas Shift +i, o que abrirá a caixa de diálogo "Set Background Image", mostrada a seguir:
Alternativamente, você pode clicar no botão "Set Tiled Background" para abrir a caixa de diálogo na tela principal do Packet Tracer, como mostra a figura a seguir:
Selecione o fundo desejado, marque a opção "Display Titled Background Image" e clique no botão "Apply" para aplicar a imagem de fundo ao seu diagrama de rede, como mostrado a seguir (selecione um background de 25 x 25 pixels):
Veja na figura a seguir o diagrama de rede simples com o background quadriculado (em grid), que facilitará bastante manual dos elementos na tela:
Para retirar o background após o alinhamento dos componentes do diagrama, acesse novamente a caixa de diálogo "Set Background Image" com as teclas Shift +i, marque a opção "Use Original Image" e clique no botão "Apply". O fundo de tela em grid será removido, deixando os elementos na tela alinhados:
Se necessário, você pode dar zoom no diagrama para efetuar o alinhamento dos elementos com mais facilidade, usando os atalhos de teclado Ctrl + i (aumentar o zoom) e Ctrl + u (diminuir o Zoom).
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/escopos-de-redes-curso-de-redes-de-computadores/
Por: Gabriela Parente
Para o Site: Techmovie
O Escopo de uma Rede refere-se ao seu tamanho ou alcance geográfico. O tamanho de uma rede pode variar de apenas alguns poucos metros, ligando periféricos a um computador, a milhares de computadores conectados através de longas distâncias. Existem diversos escopos de redes distintos, e os principais tipos de redes quanto ao escopo podem ser:
Área de rede local, ou simplesmente Rede Local, geralmente está localizada em um edifício, escritório, câmpus ou até mesmo em sua residência, possui conectividade em alta velocidade e sua característica principal é ser uma rede privativa, ou seja, alguém (pessoa ou organização) controla essa rede e o acesso a ela, em uma área geográfica limitada.
As principais tecnologias para redes LAN são a Ethernet IEEE 801.11 (WLAN - Rede Wireless local), e este é um dos escopos de redes mais populares e comuns, justamente por conta de sua aplicação, fazendo uso de switches de rede, access points ou mesmo hubs para conexão entre os pontos de redes.
Rede de Área Metropolitana, é um escopo de rede intermediário entre uma LAN e uma WAN, tratando-se uma rede localizada em uma área geográfica confinada e bem definida, de tamanho médio, como por exemplo em um município ou região metropolitana. Uma das tecnologias mais utilizadas em redes MAN é conhecida como Metro Ethernet, mas historicamente houveram diversas topologias específicas utilizadas na construção de redes metropolitanas.
Rede Área Ampla. Em uma WAN a comunicação se dá em uma distância relativamente longa. Geralmente podemos usar uma WAN para conectar uma LAN em um local a outra LAN em um local remoto, que pode estar localizada em um prédio vizinho ou do outro lado do planeta.
Usamos serviços de terceiros para realizar a comunicação via WAN, como por exemplo os provedores de Internet, a qual nada mais é que um grande conjunto de WANs interconectadas formando uma grande WAN mundial.
Uma WAN pode utilizar diversas tecnologias de acesso e transmissão de dados, como por exemplo MPLS, conexões via cabos submarinos, via satélite, entre outras, e faz uso extensivo de roteadores.
As redes WAN são muitas vezes representadas por uma nuvem em diagramas de rede, simbolizando a complexidade das conexões entre seus elementos internos.
Rede de Área Pessoal, é um escopo de rede que remete a equipamentos conectados a um computador, sendo considerada a uma espécie de rede privada, consistindo em elementos que se conectam a um máquina usando tecnologias variadas, como cabos USB, Bluetooth, IR (Infra-vermelho), NFC (Near Field Communication) conectando mouses, teclados, HDs Externos, fones de ouvido wireless, celulares, etc., e sua principal característica é o espaço geográfico extremamente limitado a rede - geralmente alguns poucos metros, de acordo com o alcance dos cabos ou potência dos sinais RF utilizados.
Além dos escopos citados no artigo, existem outras classificações de redes, menos utilizadas como os escopos CAN, GAN, HAN e SAN
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/topologias-de-redes-curso-de-redes-de-computadores/
Por: Gabriela Parente
Para o Site: Techmovie
As topologias de redes descrevem o arranjo dos elementos de uma rede (computadores, cabos e outros componentes). São uma espécie de "mapa" da rede, que pode ser físico ou lógico. A topologia física se refere especificamente à disposição física dos componentes da rede, ao passo que a topologia lógica mostra a forma como os dados trafegam dentro dessa rede, independentemente da topologia física empregada. Assim, podemos ter uma rede que utiliza uma topologia física específica, e uma topologia lógica diferente.
O tipo de topologia usado afeta o tipo e recursos do hardware da rede, seu gerenciamento e as possibilidades da expansão futura.
As principais topologias de redes são as seguintes:
Vamos descrever cada uma delas a seguir:
Trata-se de uma topologia antiga, na qual havia um único caminho para o tráfego de dados, na forma de um cabo coaxial, e todas as estações (pontos da rede) são conectadas a esse mesmo cabo para trocar dados pela rede.
Neste tipo de topologia as transmissões dos dispositivos de rede se propagam por toda a extensão do meio (cabo) e são recebidas por todos os nós da rede, que devem então determinar se a transmissão é direcionada a eles para aceitá-la ou não.
As redes em Barramento apresentam como vantagem a facilidade de implementação e expansão, porém trazem diversas desvantagens críticas, como por exemplo:
Outra topologia antiga, não mais em uso em redes locais, mas que ocasionalmente pode ser encontrada em algumas redes legadas. O exemplo mais típico de uma rede em anel é a tecnologia Token Ring, da IBM.
A topologia em anel ainda é empregada em redes metropolitanas (MAN) e algumas redes WAN também, como redes SONET, e nesse caso possui tolerância a falhas (geralmente com o uso de múltiplos anéis redundantes).
As redes em anel, no geral, possuem um custo de implantação mais elevado, pois necessitam de equipamentos de controle especiais (não mostrados na figura) para controlar o tráfego de dados pelo cabo.
Nesta topologia de rede todos os dispositivos (nós) são conectados a um dispositivo distribuidor de comunicações central, como um Hub ou (preferencialmente) um Switch.
Usada na maioria das redes de pequeno ou de grande porte, é a principal topologia de redes utilizada atualmente, principalmente em redes locais (LAN).
A topologia Estrela traz uma série de vantagens, com por exemplo a facilidade para implementação e expansão da rede, custo relativamente baixo, além da (praticamente) eliminação dos problemas de colisão de dados, quando usamos Switches como dispositivos concentradores.
Uma desvantagem no uso de redes em estrela é que se o dispositivo central for danificado, toda a rede será afetada. Além disso, o número de estações é limitado pelo número de portas disponíveis para conexão ao concentrador.
Esta topologia possui uma ou múltiplas conexões ao mesmo ponto, podendo ser classificada em Malha Totalmente Conectada ou Malha Parcialmente Conectada, dependendo do nível de conectividade existente entre os pontos da rede.
Permite aplicar os conceitos de redundância, tolerância a falhas e balanceamento de carga à rede. Desta forma, se um link entre dois pontos se torna inoperante, por uma razão qualquer, haverá um outro link (caminho) que permitirá o tráfego de dados entre esses pontos, mantendo a funcionalidade da rede mesmo em caso de falhas no meio de transmissão. Além disso, é possível escolher caminhos alternativos para os dados caso haja congestionamento de tráfego, e até mesmo dividir a carga de transmissão dos dados entre dois ou mais caminhos distintos.
Ela tem um alto custo e é difícil de gerenciar pois o nº de conexões cresce exponencialmente, de acordo com a fórmula:
N x (N – 1) / 2
Onde N é o número de dispositivos na rede. Então, por exemplo, em uma topologia em malha totalmente conectada com, digamos, 10 nós, o número de conexões necessárias seria:
10 x (10 -1) / 2 = 45 conexões.
A topologia em malha é usada extensivamente em redes WAN, interconectando roteadores e outros equipamentos de rede, mas no geral não em redes locais, devido ao problema citado anteriormente.
Trata-se de uma combinação de duas ou mais topologias de rede distintas, com por exemplo uma rede em topologia estrela conectada a uma rede em topologia barramento. É uma topologia comum, se levarmos em consideração que, por exemplo, nossas redes locais são do tipo estrela, porém conectadas a redes do tipo malha ou anel quando temos conectividade com a Internet.
Como o próprio nome diz, trata-se de uma topologia onde um ponto da rede é conectado diretamente a outro ponto da rede. Alguns links WAN antigos são do tipo ponto-a-ponto, como as redes T1. Podemos também conectar, por exemplo, um PC diretamente a outro por meio de um cabo ligado diretamente entre suas placas de rede, ou até mesmo conectando as portas seriais das máquinas.
Esta topologia lembra, fisicamente, uma topologia estrela, porém sem que necessariamente todos os nós da rede possam se comunicar completamente uns com os outros.
Um exemplo típico dessa topologia são as redes 802.11 (sem fio), na qual podemos ter diversos pontos de rede se conectando a um Access Point (AP / Ponto de Acesso), o qual gerencia a conectividade entre os pontos de rede e pode impedir que as estações e comuniquem entre si, somente trocando dados com o próprio AP.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/o-modelo-osi-curso-de-redes-de-computadores/
Por: Gabriela Parente
Para o Site: Techmovie
O Modelo OSI (Open System Interconnection) é um modelo de referência para o projeto de protocolos de rede. É uma forma de descrever o processo a que os dados são submetidos quando transmitidos através de uma rede, e recebidos por um dispositivo receptor. Como o próprio nome diz, se trata de um modelo, abstrato, e não de um protocolo de redes real. O Modelo OSI é dividido em sete camadas, e cada camada cuida de um aspecto da comunicação em rede. Em cada camada devem estar localizados protocolos específicos que realizam trabalhos distintos, dependendo da necessidade.
As camadas OSI são as seguintes:
Vamos analisar cada uma dessas camadas de acordo com suas funções, começando pela camada de nível mais baixo (mais próxima do hardware de rede), que é a camada física, em direção à camada de Aplicação.
Camada 1: É a Camada Física. Esta camada trata da sinalização de rede, e da conversão de bits (advindos das camadas superiores) em sinais elétricos, ópticos ou ainda ondas eletromagnéticas para envio pelos diversos meios de transmissão utilizados, carregando os dados de um ponto a outro da rede. Define os aspectos mecânicos e elétricos da rede. É o nível onde atuam as interfaces (placas) de rede.
Camada 2: Camada de Link de Dados (Data Link). Nesta camada temos a organização dos dados a serem enviados em conjuntos de bits denominados Quadros (Frames), e é aqui que especificamos os endereços físicos das Interfaces de redes envolvidas na comunicação (endereços MAC). Um endereço MAC é responsável pela identificação única dos dispositivos em uma rede, consistindo em um endereço gravado em uma memória ROM presente na própria interface física de rede.
Também é responsável pela sinalização de início e fim de transmissão de um quadro, além de gerar um código para reconhecimento de erros de transmissão de dados, conhecido como checksum.
Camada 3: Camada de Rede. Esta camada introduz a capacidade de rotear o tráfego de um ponto de rede a outro, por meio de subredes, e por isso podemos chamar essa camada de camada de roteamento. Aqui, podemos aplicar um esquema de endereçamento lógico aos pontos de rede, como por exemplo o endereço IP.
Nesta camada também pode ocorrer fragmentação dos dados a serem transmitidos, caso o tamanho desses dados exceda um limite pré-determinado, de modo que segmentos de rede que não suportem quadros de tamanho muito grande possam também enviar dados sem problemas.
O PDU da camada de rede é chamado de Pacote (como por exemplo, em pacote IP). Um PDU (Protocol Data Unit) é um nome dado a um conjunto de dados presentes em uma determinada camada de uma pilha de protocolos.
Camada 4: Camada de Transporte. No geral, a camada de transporte tem o papel de fornecer funções que permitam a comunicação entre processos de aplicações (softwares) entre computadores diferentes. Assim, a camada de transporte fornece um mecanismo pelo qual diversas aplicações distintas podem enviar e receber dados usando a mesma implementação de protocolos das camadas mais baixas.
Na camada de transporte damos o nome de Segmento a um PDU que contenha dados TCP e Datagrama a um DPU que contenha dados UDP.
Camada 5: Camada de Sessão. Nesta camada é efetuada a configuração das sessões de comunicações entre os dispositivos na rede. Aqui, uma sessão de comunicação pode ser iniciada, mantida e finalizada quando não houverem mais dados a transmitir, ou quando uma das partes quiser encerrar a comunicação. Além disso, permite o sincronismo e restabelecimento de uma sessão de comunicações a partir do ponto onde houve um problema de interrupção na transmissão. O PDU aqui é chamado simplesmente de Dados (Data), assim como nas camadas 6 e 7.
Além disso, nesta camada é possível determinar se a comunicação se dará em modo half-duplex ou full-duplex, além de gerenciar o uso de protocolos de tunelamento (para acesso remoto, por exemplo).
Camada 6: Camada de Apresentação. Esta camada lida com as técnicas de apresentação dos dados, o que significa basicamente que ela é responsável pela forma ocmo os dados são reconhecidos e visualizados em seu destino. Como exemplos de suas atribuições, temos a codificação de caracteres, compressão e criptografia de dados.
Camada 7: Camada de Aplicação. Esta é a camada de mais alto nível (conceitualmente), e é a responsável por fornecer os serviços de rede às aplicações que rodam no computador. Assim, seu navegador ou seu programa de e-mails acessa a rede pois é capaz de se comunicar com a camada de aplicação da pilha de protocolos.
Podemos ver na figura a seguir um resumo das funções de cada camada no modelo de referência OSI:
A figura a seguir mostra a transmissão da dados no Modelo OSI, entre um dispositivo transmissor e um dispositivo receptor (ambos computadores neste caso):
Na prática, usamos conjuntos de protocolos de redes que são baseados no Modelo OSI (com algumas modificações), como a famosa pilha TCP/IP, a qual será nosso objeto de estudo em inúmeras lições aqui no Curso de Redes de Computadores da Bóson Treinamentos em Tecnologia, começando pelo próximo tutorial.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/estrutura-de-um-pacote-ip-redes-de-computadores/
Por: Gabriela Parente
Para o Site: Techmovie
Na camada de Internet da pilha TCP/IP, os dados provenientes da camada de transporte são empacotados em PDUs denominadas pacotes.
Na camada física, esses pacotes serão encapulados em quadros (frames) para envio pelo meio de transmissão.
Um pacote IPv4 é composto por um cabeçalho e um campo de dados, que contém os dados provenientes da camada superior (transporte). A estrutura de um pacote IPv4, incluindo cabeçalho e campos de dados, é mostrada na figura a seguir:
A seguir, vamos descrever cada um dos campos encontrados no pacote IPv4.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/fragmentacao-de-datagramas-ip-redes-de-computadores/
Por: Gabriela Parente
Para o Site: Techmovie
Quando um roteador recebe um pacote, ele examina o endereço de destino e determina para qual interface deve caminhar esse pacote, para que possa seguir seu caminho até o destino.
Além disso, o roteador também determina o MTU da interface a ser usada. Caso o tamanho do pacote seja maior do que o MTU, e o bit DF do campo Flags do cabeçalho esteja ajustado em 0, o roteador irá fragmentar o pacote.
O propósito da fragmentação de pacotes IP, realizada pelo protocolo IP, é portanto permitir que os datagramas possam ser transmitidos em links cujo MTU seja menor do que o tamanho original desses datagramas. Esse procedimento é descrito pela RFC 791.
Fragmentar o pacote significa dividir o pacote em unidades de menor tamanho, denominadas Fragmentos. O tamanho máximo de um fragmento é o tamanho da MTU menos o tamanho do cabeçalho IPV4, que pode variar de 20 até 60 bytes. Cada fragmento será enviado pela rede em um pacote separado, e cada um desses pacotes seguirá as seguintes regras:
Assim, se tivermos um MTU de 1500 bytes e pacotes padrão com cabeçalho de 20 bytes, os offsets (deslocamentos) dos fragmentos serão múltiplos de (1500-20)/8 = 185, como por exemplo 0, 185, 370, etc.
Vamos supor que um segmento da camada de transporte tenha um tamanho total de 4000 bytes, sem o uso de opções, e que esse segmento será enviado em pacotes IP de cabeçalho padrão de 20 bytes.
O tamanho total do pacote IP gerado teria então 4020 bytes (4000 + 20). Vamos assumir também um caso típico que é o do envio desse pacote por um link cujo MTU é de 1500 bytes – portanto, o pacote deverá ser fragmentado por exceder esse tamanho.
O pacote será fragmentado da seguinte forma:
Fragmento | Bytes totais | Bytes do cabeçalho | Bytes de Dados | Flag MF | Offset do fragmento |
1 | 1500 | 20 | 1480 | 1 | 0 |
2 | 1500 | 20 | 1480 | 1 | 185 |
3 | 1060 | 20 | 1040 | 0 | 370 |
O primeiro offset será igual a zero. O segundo offset será igual a 0 + (Bytes de Dados / 8) = 0 + 1480/8 = 185.
O terceiro offset será igual ao segundo offset (185) + (Bytes de dados / 8) = 185 + 1480 / 8 = 185 + 185 = 370.
A figura a seguir ilustra o exemplo de fragmentação apresentado:
Podemos recalcular o tamanho total do pacote a partir do offset do último fragmento e do tamanho em bytes de seus dados, da seguinte forma:
Tamanho total = offset x 8 + bytes de dados
Em nosso exemplo:
Tamanho total = 370 x 8 + 1040 = 2960 + 1040 = 4000 bytes.
Quando os pacotes chegam a seu destino, eles devem ser remontados para que possam ser processados.
Um receptor sabe que um pacote é um fragmento caso o flag MF esteja ativo (exceto no último fragmento), e caso o campo Offset do Fragmento possua um valor diferente de zero (exceto para o primeiro fragmento).
O receptor então irá utilizar as informações presentes nos campos de endereços IP de origem e destino, identificação do protocolo e identificação do cabeçalho IP para reconstruir o pacote original a partir dos fragmentos recebidos.
Fragmentos que possuam a mesma identificação pertencem ao mesmo pacote, e o campo offset do fragmento permite ordenar esses fragmentos. Ao receber o último fragmento, que possui o flag MF igual a zero, o receptor pode então calcular o tamanho do campo de dados multiplicando o offset do último fragmento por 8, e adicionando o tamanho do último fragmento, como mostramos na seção anterior.
Neste ponto, o pacote remontado é enviado para a camada de nível superior na pilha de protocolos (camada de transporte) para processamento.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/utilitario-de-diagnostico-de-rede-ipconfig/
Por: Gabriela Parente
Para o Site: Techmovie
O ipconfig é um utilitário do prompt do Windows que fornece ao usuário informações relativas às configurações de rede TCP/IP do computador. Além disso, o ipconfig também permite realizar algumas operações de manutenção de rede, como a liberação de endereços IP obtidos via DHCP.
ipconfig /[opções]
As principais disponíveis para o comando são descritas a seguir:
Opção | Significado |
/? | Mostra a ajuda do comando |
/all | Mostra informações de configuração de rede completas |
/release | Libera os endereços IP associados a um adaptador especificado. |
/renew | Renova os endereços IP de um adaptador especificado |
/release6 | Libera os endereços IPv6 associados a um adaptador especificado |
/renew6 | Renova os endereços IPv6 de um adaptador especificado |
/flushdns | Limpa o cache do resolvedor DNS |
/registerdns | Atualiza todas as concessões DHCP e registra novamente os nomes DNS |
/displaydns | Mostra o conteúdo do cacha do Resolvedor DNS |
/showclassid | Mostra todas as identificações de classe DHCP permitidas para o adaptador especificado |
/setclassid | Permite modificar as identificações de classe DHCP (ClassId) |
Se o comando ipconfig for executado sem nenhuma opção especificada, ele retornará apenas um resumo de informações, como endereço IP, máscara de sub-rede e gateway padrão de cada adaptador de rede da máquina.
A opção /all permite visualizar todas as informações de configuração de rede disponíveis, incluindo os servidores DNS e DHCP utilizados pelo adaptador, o endereço físico (MAC Adress) das placas de rede, e se a máquina está usando endereço de configuração automática (APIPA).
Caso não seja especificado um nome de adaptador ao utilizar as opções /release e /renew, as modificações irão afetar a todos os adaptadores de rede presentes na máquina.
2. Mostrar informações detalhadas sobre as configurações de rede da máquina
ipconfig /all
3. Renovar as concessões de todos os adaptadores de rede
ipconfig /renew
4. Liberar apenas a concessão do adaptador de rede de nome Conexão local:
ipconfig /release “Conexão local”
5. Mostrar o conteúdo do cache do resolvedor DNS
ipconfig /displaydns
6. Mostrar as identificações de classe disponíveis para o adaptador de nome Conexão Local
ipconfig /showclassid “Conexão local”
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/redes-computadores/como-funciona-o-utilitario-pathping-curso-de-redes/
Por: Gabriela Parente
Para o Site: Techmovie
O Pathping é uma ferramenta destinada a traçar rotas de rede no Windows, que combina funcionalidades dos utilitários ping e tracert, além de exibir algumas informações adicionais que não são retornadas por nenhum desses programas.
O Pathping opera enviando pacotes para cada roteador presente no caminho até seu destino durante um período de tempo, e então computa resultados baseando-se nos pacotes retornados de cada salto.
O utilitário mostra o grau de perda de pacotes em cada roteador (ou link), de modo que é possível determinar qual roteador ou link pode estar causando problemas na rede.
Por padrão, o pathping utiliza 30 saltos, e o tempo de espera padrão antes de ocorrer um timeout é de três segundos, ou 3000 milissegundos. O período padrão é de 250ms, e o número de consultas padrão a cada roteador ao longo do caminho é de 100.
pathping [opções] host-ou-IPA
Abaixo temos uma descrição para as opções mais comuns utilizadas como utilitário pathping:
Opção | Significado |
-h n_máx_saltos | Determinar o número máximo de saltos na busca pelo host de destino. O padrão são 30. |
-n | Não efetuar a resolução de endereços para nomes de host |
-g lista_hosts | Rota ampliada de origens com lista de hosts |
-i endereço | Usa o endereço de origem especificado |
-p milissegundos | Número de milissegundos a esperar entre cada disparo de ping |
-q num_consultas | Número de consultas por salto (hop) |
-R | Teste de RSVP. Verifica se cada roteador no caminho suporta o Protocolo de Reserva de Recursos (RSVP), o qual permite que o computador reserve uma certa quantidade de largura de banda para um fluxo de dados. Usado para testes de Qualidade de Serviço (QoS) |
-w milissegundos | Tempo de timeout. Espera o tempo especificado, em ms, para cada mensagem de resposta |
-4 | Força o uso de IPv4 |
-6 |
Força o uso de IPv6
|
1 – Traçando rotas para o host www.bosontreinamentos.com.br sem efetuar resolução de endereços:
2. Traçando rotas para o host www.bosontreinamentos.com.br usando no máximo 10 rotas, e realizando resolução de nomes:
Veja que neste caso não foi possível chegar até o host de destino, pois os 10 saltos são suficientes, como vimos no exemplo 01. Mesmo assim o rastreamento é exibido e as estatísticas são calculadas.
3 -Traçando a rota para www.ibm.com usando exatamente 3 consultas por salto:
pathping -q 3 www.ibm.com
É isso aí! O pathping é mais uma ferramenta importante para se conhecer, pois pode auxiliar a diagnosticar e resolver problemas de conectividade em redes, no caso Windows. Aprenda também como funcionam as ferramentas ping e traceroute, que estão disponíveis tanto para Windows quanto para Linux e Mac OS X.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/raspberry-pi/lancamento-do-raspberry-pi-2-2/
Por: Gabriela Parente
Para o Site: Techmovie
Há alguns dias foi anunciado o lançamento da nova versão do Raspberry Pi, batizada de “Raspberry Pi 2”.
Essa nova versão traz um hardware atualizado, possuindo processador Quad Core de 900 MHZ de clock, e 1GB de memória RAM. Em testes de benchmark, esse computador ultrapassa em muito o desempenho do modelo anterior, possuindo uma performance aproximadamente 6 vezes superior ao modelo anterior (o Raspberry Pi B+).
Uma novidade muito interessante será a habilidade de rodar os sistemas operacionais Ubuntu e Windows 10.
Além disso, a nova placa irá custar o mesmo que os modelos de primeira geração (cujo processador possui apenas um núcleo!), US$ 35,00, e de acordo com um dos criadores do Raspberry Pi, Eben Upton, será o primeiro modelo capaz de rodar como um PC de propósito geral.
Desde o lançamento do primeiro modelo do Raspberry Pi, em 2012, foram vendidas mais de 4.5 milhões de unidades, e é esperado que sejam vendidas mais de 2 milhões de unidades ainda este ano (2015), incluindo-se nessa conta os modelos B+ e Raspberry Pi 2.
Essa nova placa, como citado anteriormente, será capaz de rodar o Linux Ubuntu e Windows 10, por conta do novo processador utilizado, o RAM Cortex A7, o qual possui núcleo com a arquitetura ARM v7, fabricado pela Broadcom.
Você pode baixar uma imagem especial do Ubuntu para o Pi 2, a Snappy Ubuntu Core, no link a seguir:
https://insights.ubuntu.com/2015/02/02/snappy-ubuntu-core-on-raspberry-pi-2/
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/noticias/um-script-simples-transforma-seu-pendrive-em-uma-chave-para-desligar-o-pc/
Por: Gabriela Parente
Para o Site: Techmovie
Uma ferramenta foi desenvolvida com a capacidade de desligar o seu computador tão rápido, que pessoas "não autorizadas " (vide autoridades) não terão a chance de examiná-lo e descobrir suas informações confidenciais presentes na máquina no momento do acesso.
"USBKILL", como o script é chamado, transforma qualquer pendrive USB em um interruptor que força um desligamento do computador após sua remoção. Desta forma, é possível desligar a máquina rapidamente caso haja necessidade - por exemplo, se estiver trabalhando em algo "confidencial" e alguém se aproximar. O script foi postado no GitHub por um usuário chamado "Hephaestos", que proclama que a ferramenta irá impedir que os usuários se tornem o próximo Ross Ulbricht - o ex chefão do mercado de drogas on-line Slik Road - cujo laptop estava ligado ao ser apreendido...
Hephaesto sugere que os usuários prendam o pendrive USB com o USBSKILL em seus pulsos como medida de segurança adicional, para que o computador seja automaticamente desligado com um simples movimento do braço. O desenvolvedor auto-proclamado do "software para a liberdade", explica que o software é mais eficaz quando combinado com uma máquina virtual que se exclui automaticamente após a reinicialização, prevenindo as autoridades de conseguirem acessar qualquer coisa caso consigam arrancar de alguma forma as senhas de acesso ao sistema de você.
Claro que, para que o processo seja totalmente efetivo, ainda é preciso que você criptografe todo o seu disco rígido - afinal, script desliga a máquina mas ela obviamente pode ser religada novamente, a não ser que esteja usando VM como sugerido.
O USBKILL será atualizado com recursos adicionais de tempos em tempos, mas o estado atual é mais do que capaz de entregar o que prometeu.
Você pode baixar o script USBKILL aqui
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/noticias/novo-processo-de-refrigeracao-de-cpus-pode-eliminar-o-uso-de-coolers/
Por: Gabriela Parente
Para o Site: Techmovie
Uma equipe de pesquisa da Universidade de Alabama em Huntsville acredita que seu sistema de refrigeração patenteado poderia economizar bilhões de dólares em custos de energia elétrica ao eliminar os coolers em computadores.
Dr. James E. Smith Jr., Cuong Nguyen e Xiaolin Wang são membros de uma equipe de pesquisa da Universidade do Alabama em Huntsville que desenvolveu uma nova forma de resfriar os microprocessadores de computadores usando um líquido.
De acordo com o Press Release, "Um sistema de refrigeração passiva patenteado para microprocessadores de computadores que está em processo de otimização na Universidade do Alabama em Hauntsville poderia fazer com que os consumidores nos Estados Unidos economizassem mais de US$6,3 bilhões por ano em custos de energia associados aos sistemas de refrigeração de seus computadores - os coolers".
Para isso, os pesquisadores escolheram um produto da 3M chamado de Fluorinert Eletronic Liquid FC-72, que é "um líquido quimicamente e termicamente estável e não-condutivo, ideal para muitas aplicações de transferência de calor em baixa temperatura de uma e duas fases em contato direto".
Todo o sistema é passivo, o que significa que não é usada energia elétrica para refrigerar o processador no computador de testes. Isso é possível graças às características de transferência de calor excelentes do FC-72. O sistema funciona, de forma sucinta, como segue:
Nos experimentos, o sistema conseguiu refrigerar processadores Intel Pentium 4 e Core i3 com sucesso. Os processadores de hoje possuem uma faixa de temperatura de operação tolerável entre 50 e 90ºC. Os experimentos com FC-72 conseguiram manter a temperatura nos processadores em cerca de 56ºC.
O pesquisador Cuong Nguyen explica que "um sistema de refrigeração passiva é um grande negócio, pois ao removermos um cooler convencional com ventoinha, economizamos no material de fabricação, e também eliminamos barulho, vibração e contaminação da ventoinha por poeira.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/noticias/malware-mr-black-transforma-roteadores-em-zumbis/
Por: Gabriela Parente
Para o Site: Techmovie
A empresa de segurança Incapsula descobriu um grande botnet utilizado para lançar ataques de negação de serviço distribuídos (DDoS). Porém, este botnet chamado de Mr Black, não foi feito para infectar computadores. Em vez disso, ele cria um exército de roteadores zumbis, prontos para obedecer a comandos remotos.
A Incapsula observou o tráfego deste botnet ao longo de 111 dias. Durante esse tempo, foram identificados 40.269 endereços IP usados no ataque. Os equipamentos infectados apareciam espalhados ao redor do mundo, vindo de 1600 ISPs (Provedores de serviço de internet).
O interessante neste botnet é que ele não foi projetado usando nenhuma técnica nova de ataques. A Incapsula descobriu que os roteadores no botnet estavam todos configurados para aceitar gerenciamento remoto, significando que os usuários - os atacantes - poderiam descobri-los online e realizar alterações de configuração. Quase todos os roteadores também usavam nomes de usuário e senhas padrão, de modo que tomar o controle desses equipamentos acabou sendo uma tarefa trivial.
Seu roteador pode fazer parte dessa horda zumbi - principalmente se você vive nos países mais afetados pelo malware. E infelizmente, o Brasil é o segundo país mais infectado, atrás apenas da Tailândia, sendo que ambos os países em conjunto respondem por 85% dos roteadores comprometidos. É interessante notar que a infraestrutura de comando e controle usada pelos desenvolvedores do botnet para direcionar os ataques está baseada primariamente na China, com um pequeno foco nos Estados Unidos.
Há alguns passos básicos que você deve tomar para se proteger dessa ameaça e tornar sua rede caseira mais segura. A Incapsula recomenda desabilitar as configurações de gerenciamento remoto no seu roteador de banda larga e, o mais importante, que você altere o nome de usuário e senha padrão do roteador - tarefa que muitas pessoas não executam. Se essa troca de senha, seu roteador está completamente desprotegido contra esse malware, e contra outros tipos de ataques e invasões.
Você pode verificar se seu roteador não está aberto a acesso remoto usando a ferramenta Open Port Finder da You Get Signal, e escanear as portas SSH (22), Telnet (23) e HTTP/HTTPS (80/443).
Se você acreditar que seu roteador já foi contaminado, faça uma atualização do firmware para a versão mais recente fornecida pelo fabricante.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/noticias/google-lanca-tablet-project-tango-para-desenvolvedores/
Por: Gabriela Parente
Para o Site: Techmovie
O Google lançou um novo modelo de tablet, chamado Project Tango, cujo foco é o mercado de desenvolvedores profissionais que trabalhem com aplicações em 3D.
Trata-se de um tablet de 7, disponível nas cores branco ou preto, e com preço inicial sugerido de U$$ 512, 00 - porém somente comercializado nos Estados Unidos por enquanto.
A disponibilidade para o resto do mundo ainda será anunciada.
Esse tablet possui características muito especiais, como funcionalidades de rastreamento, visão em profundidade e tecnologias de movimento 3D, incluindo os tradicionais sensores acelerômetro, giroscópio, GPS, sensor de luza ambiente e bússola, além de um barômetro e sensor de profundidade em 3D.
Outras características do tablet são:
Parece uma ótima configuração para um tablet, comparável aos melhores da atualidade, e com foco nas aplicações em 3D. Vamos aguardar o lançamento do tablet por aqui. Por enquanto só está disponível na Google Store
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/hardware/o-que-e-o-intel-quark/
Por: Gabriela Parente
Para o Site: Techmovie
O Intel Quark é uma família de SoCs (“System-on-chips”) de arquitetura de 32 bits da Intel, que são projetados para terem um baixíssimo consumo energético e também um tamanho físico reduzido, sendo chips que visam a mercados como IoT (Internet das Coisas), sistemas embarcados (embedded systems) e dispositivos vestíveis (wearables), onde o consumo de energia e form factor tem muita importância. São baseados no chip Pentium original.
Um SoC é um circuito integrado que integra todos os componentes de um computador (ou outro sistema eletrônico) em um único chip. São chips muito parecidos com microcontroladores, porém, possuem processadores mais poderosos, que podem inclusive executar softwares complexos como sistemas operacionais (Windows, Linux, etc).
Os chips dessa linha, de codenome “Clanton”, possuem algumas características peculiares, sendo as mais marcantes:
Um Datasheet com as especificações completas do Intel Quark pode ser obtido aqui (PDF, 934 páginas). O diagrama de blocos do chip pode ser visto na figura abaixo:
Os núcleos dos chips Quark são menores do que os de um Intel Atom típico, com cerca de 1/5 do tamanho desses cores, consumindo até um décimo da potência consumida por eles. O primeiro chip da família, o X1000, foi apresentado durante o Intel Developer Forum de 2013, em San Francisco, Califórnia.
As principais aplicações dos SoCs Quark estão nas áreas automotiva, industrial e de energia. Os chips são componentes chave das sistemas de desenvolvimento Intel Galileo, Intel Edison e Intel Curie, e da futura placa Arduino 101 (Genuino 101 fora dos EUA).
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/hardware/teardown-do-roteador-domestico-d-link-di-524/
Por: Gabriela Parente
Para o Site: Techmovie
Esse roteador possui 4 portas LAN, uma porta WAN e Rede WiFi integrada. O manual de configuração do produto pode ser acessado na página do DI-524 no site da D-Link.
Abaixo temos a vista traseira do roteador, mostrando, da esquerda para a direita, os conectores da antena, quatro portas ethernet para LAN, uma porta WAN e o conector de energia da fonte de alimentação:
Na figura a seguir vamos a parte inferior do roteador. As etiquetas trazem informações sobre o modelo, Part Number, Número de Série, versão de hardware, FCC ID e outras. Para abri-lo devemos desparafusar os dois parafusos presentes nas laterais:
Basta puxar a tampa superior do aparelho após retirar os dois parafusos e teremos acesso ao seu interior:
Aí está a placa lógica do DI-524, ainda parafusada no chassis. Ela é presa pelos dois parafusos mostrados na parte superior da imagem abaixo:
Detalhe dos principais chips encontrados na placa lógica. Vamos descrever sucintamente as funções desses quatro circuitos integrados:
Na figura a seguir, detalhe do conector da antena e do fio que o conecta á placa lógica. Note que ele é preso por cola quente na placa.
Visão geral dos leds indicadores do painel frontal:
Vista interna da parte traseira do roteador, com as portas Ethernet LAN, porta WAN (esquerda), conector de energia (cor de laranja), conector da antena (extrema direita) e um chip M-TEK H50601DRG:
Para desconectar a placa do chassis, basta desparafusar os dois parafusos mostrados na figura a seguir:
E desrosquear o conector da antena para soltá-lo:
E então, levantar a placa lógica suavemente para retirá-la do chassis:
Eis a placa lógica, como o conector da antena solto á direita, e o módulo Wi-Fi na extrema esquerda (blindado):
Vista traseira da placa lógica. Apenas trilhas e pontos de solda:
D-Link DI-524 desmontado com sucesso!
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/hardware/monitoramento-de-hardware-de-pcs-com-open-hardware-monitor/
Por: Gabriela Parente
Para o Site: Techmovie
Monitoramento de Hardware de PCs com OpenHardware MonitorO
O Open Hardware é um programa gratuito e de código aberto que pode ser usado para monitorar sensores de temperatura, ventoinhas, níveis de tensão elétrica, carga de trabalho e velocidades de clock em um computador.
O Open Hardware Monitor suporta a maioria dos chips de monitoramento de hardware encontrados nas placas-mãe atuais. A temperatura do processador pode ser monitorada por meio da leitura dos sensores de temperatura presentes no núcleo dos processadores da Intel e da AMD. Podem ser exibidas também os valores medidos pelos sensores de placas de vídeo da ATI e da Nvidia, assim como a temperatura do SMART dos discos rígidos. Os valores monitorados podem ser exibidos na janela principal do programa em um gadget de desktop personalizável, ou ainda na área de notificação do sistema.
O software pode ser baixado no site www.openhardwaremonitor.org, na página de downloads, stand na versão 0.7.1 Beta quando este artigo foi escrito. Ele roda em Windows 32 e 64 bits (necessario .NET Framework 2.0 ou acima), e também pode ser executado em máquinas como Linux 32 bits, desde que seja instalado o Mono com WinForms no sistema.
Rodar o Open Hardware Monitor é bem simples: no Windows, basta descompactar o arquivo zip baixado e rodar o arquivo OpenHardwareMonitor.exe com privilégios de Administrador. Não é necessário instalá-lo.
O código-fonte da aplicação está disponível em https://github.com/openhardwaremonitor
Veja a seguir um screenshot do programa em execução em meu PC:
Note as várias informações exibidas, como:
E na figura a seguir você pode observar informações referentes à CPU do computador:
Podemos observar os seguintes dados:
E, clicando no menu Options, você pode configurar algumas opções de funcionamento distintas para o programa:
Entre as opções disponíveis podemos destacar:
O programa possui alguns outros recursos que vale m a pena serem explorados, e uma de suas grandes vantagens é o fato de não precisar ser instalado no computador para rodar.
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/hardware/tabela-ascii/
Por: Gabriela Parente
Para o Site: Techmovie
Os computadores operam executando cálculos no sistema de numeração binário. Porém, como sabemos, os computadores permitem a entrada de dados na forma de texto, com letras, números decimais e símbolos, além de permitir o armazenamento desses dados.
Neste artigo vamos falar a respeito da forma como os computadores representam esses caracteres utilizando números no sistema binário de numeração.
Em outubro de 1960, o Instituto Americano de Padrões Nacionais (ANSI – American National Standards Institute), que na época se chamava American Standards Association (ASA), começou a trabalhar em um padrão para representação de caracteres, batizado de ASCII.
Esse padrão utilizava um esquema de codificação de caracteres (representação numérica) que tinha suas raízes em códigos telegráficos de 5 bits inventados por Émile Baudot. Foi definido um código numérico de 7 bits para o ASCII na época.
Com 7 bits podemos representar 27 = 128 caracteres, mais do que suficiente para representar letras e símbolos em inglês americano. Alguns dos códigos foram utilizados para representar caracteres de controle reservados, como por exemplo caracteres que permitiam avançar uma linha, excluir uma letra, ou até mesmo tocar um bip em alguns equipamentos Teletype da época.
A primeira versão do ASCII foi publicada em 1963, e então revisada em 1967. Em março de 1968, o presidente estadunidense Lyndon B. Johnson ordenou que todos os computadores do governo federal dos Estados Unidos deveriam suportar o padrão ASCII. Assim, o padrão se tornou parte da história dos computadores, e desde então é utilizado para representação de caracteres.
ASCII significa “American Standard Code for Information Interchange” (Código Padrão Americano para Intercâmbio de Informações), e consiste em uma tabela de códigos (criada na década de 60) utilizada pelos computadores para representar caracteres no formato numérico (binário), que é o formato padrão utilizado para armazenamento e processamento dos dados.
Desta forma, cada caractere presente em um teclado, e mais um conjunto de outros caracteres, como letras “a”, “r”, números “6′, “9”, ou ainda símbolos, como “%”, “&”, “Ö”, entre outros, podem ser representados por um conjunto de oito bits (um byte) na memória do computador.
Alguns caracteres não-imprimíveis também são representados na tabela ASCII, como por exemplo as teclas TAB, ESC e Backspace.
Abaixo temos a tabela de caracteres em ASCII original, incluindo os valores numéricos de cada caractere em decimal, binário, octal e hexadecimal.
Note que letras maiúsculas e minúsculas são consideradas caracteres diferentes entre si, cada uma com seu próprio código ASCII. Além disso, podemos perceber que a tabela original ASCII utiliza sete bits para representar os caracteres, sendo que o oitavo bit (à esquerda, MSB) é sempre zero.
Decimal | Octal | Hexadecimal | Binário | Caractere |
0 | 000 | 00 | 00000000 | NUL |
1 | 001 | 01 | 00000001 | SOH |
2 | 002 | 02 | 00000010 | STX |
3 | 003 | 03 | 00000011 | ETX |
4 | 004 | 04 | 00000100 | EOT |
5 | 005 | 05 | 00000101 | ENQ |
6 | 006 | 06 | 00000110 | ACK |
7 | 007 | 07 | 00000111 | BEL |
8 | 010 | 08 | 00001000 | BS |
9 | 011 | 09 | 00001001 | TAB |
10 | 012 | 0A | 00001010 | LF |
11 | 013 | 0B | 00001011 | VT |
12 | 014 | 0C | 00001100 | FF |
13 | 015 | 0D | 00001101 | CR |
14 | 016 | 0E | 00001110 | SO |
15 | 017 | 0F | 00001111 | SI |
16 | 020 | 10 | 00010000 | DLE |
17 | 021 | 11 | 00010001 | DC1 |
18 | 022 | 12 | 00010010 | DC2 |
19 | 023 | 13 | 00010011 | DC3 |
20 | 024 | 14 | 00010100 | DC4 |
21 | 025 | 15 | 00010101 | NAK |
22 | 026 | 16 | 00010110 | SYN |
23 | 027 | 17 | 00010111 | ETB |
24 | 030 | 18 | 00011000 | CAN |
25 | 031 | 19 | 00011001 | EM |
26 | 032 | 1A | 00011010 | SUB |
27 | 033 | 1B | 00011011 | ESC |
28 | 034 | 1C | 00011100 | FS |
29 | 035 | 1D | 00011101 | GS |
30 | 036 | 1E | 00011110 | RS |
31 | 037 | 1F | 00011111 | US |
32 | 040 | 20 | 00100000 | Espaço |
33 | 041 | 21 | 00100001 | ! |
34 | 042 | 22 | 00100010 | “ |
35 | 043 | 23 | 00100011 | # |
36 | 044 | 24 | 00100100 | $ |
37 | 045 | 25 | 00100101 | % |
38 | 046 | 26 | 00100110 | & |
39 | 047 | 27 | 00100111 | ‘ |
40 | 050 | 28 | 00101000 | ( |
41 | 051 | 29 | 00101001 | ) |
42 | 052 | 2A | 00101010 | * |
43 | 053 | 2B | 00101011 | + |
44 | 054 | 2C | 00101100 | , |
45 | 055 | 2D | 00101101 | – |
46 | 056 | 2E | 00101110 | . |
47 | 057 | 2F | 00101111 | / |
48 | 060 | 30 | 00110000 | 0 |
49 | 061 | 31 | 00110001 | 1 |
50 | 062 | 32 | 00110010 | 2 |
51 | 063 | 33 | 00110011 | 3 |
52 | 064 | 34 | 00110100 | 4 |
53 | 065 | 35 | 00110101 | 5 |
54 | 066 | 36 | 00110110 | 6 |
55 | 067 | 37 | 00110111 | 7 |
56 | 070 | 38 | 00111000 | 8 |
57 | 071 | 39 | 00111001 | 9 |
58 | 072 | 3A | 00111010 | : |
59 | 073 | 3B | 00111011 | ; |
60 | 074 | 3C | 00111100 | < |
61 | 075 | 3D | 00111101 | = |
62 | 076 | 3E | 00111110 | > |
63 | 077 | 3F | 00111111 | ? |
64 | 100 | 40 | 01000000 | @ |
65 | 101 | 41 | 01000001 | A |
66 | 102 | 42 | 01000010 | B |
67 | 103 | 43 | 01000011 | C |
68 | 104 | 44 | 01000100 | D |
69 | 105 | 45 | 01000101 | E |
70 | 106 | 46 | 01000110 | F |
71 | 107 | 47 | 01000111 | G |
72 | 110 | 48 | 01001000 | H |
73 | 111 | 49 | 01001001 | I |
74 | 112 | 4A | 01001010 | J |
75 | 113 | 4B | 01001011 | K |
76 | 114 | 4C | 01001100 | L |
77 | 115 | 4D | 01001101 | M |
78 | 116 | 4E | 01001110 | N |
79 | 117 | 4F | 01001111 | O |
80 | 120 | 50 | 01010000 | P |
81 | 121 | 51 | 01010001 | Q |
82 | 122 | 52 | 01010010 | R |
83 | 123 | 53 | 01010011 | S |
84 | 124 | 54 | 01010100 | T |
85 | 125 | 55 | 01010101 | U |
86 | 126 | 56 | 01010110 | V |
87 | 127 | 57 | 01010111 | W |
88 | 130 | 58 | 01011000 | X |
89 | 131 | 59 | 01011001 | Y |
90 | 132 | 5A | 010110010 | Z |
91 | 133 | 5B | 01011011 | [ |
92 | 134 | 5C | 01011100 | |
93 | 135 | 5D | 01011101 | ] |
94 | 136 | 5E | 01011110 | ^ |
95 | 137 | 5F | 01011111 | _ |
96 | 140 | 60 | 01100000 | ` |
97 | 141 | 61 | 01100001 | a |
98 | 142 | 62 | 01100010 | b |
99 | 143 | 63 | 01100011 | c |
100 | 144 | 64 | 01100100 | d |
101 | 145 | 65 | 01100101 | e |
102 | 146 | 66 | 01100110 | f |
103 | 147 | 67 | 01100111 | g |
104 | 150 | 68 | 01101000 | h |
105 | 151 | 69 | 01101001 | i |
106 | 152 | 6A | 01101010 | j |
107 | 153 | 6B | 01101011 | k |
108 | 154 | 6C | 01101100 | l |
109 | 155 | 6D | 01101101 | m |
110 | 156 | 6E | 01101110 | n |
111 | 157 | 6F | 01101111 | o |
112 | 160 | 70 | 01110000 | p |
113 | 161 | 71 | 01110001 | q |
114 | 162 | 72 | 01110010 | r |
115 | 163 | 73 | 01110011 | s |
116 | 164 | 74 | 01110100 | t |
117 | 165 | 75 | 01110101 | u |
118 | 166 | 76 | 01110110 | v |
119 | 167 | 77 | 01110111 | w |
120 | 170 | 78 | 01111000 | x |
121 | 171 | 79 | 01111001 | y |
122 | 172 | 7A | 01111010 | z |
123 | 173 | 7B | 01111011 | { |
124 | 174 | 7C | 01111100 | | |
125 | 175 | 7D | 01111101 | } |
126 | 176 | 7E | 01111110 | ~ |
127 | 177 | 7F | 01111111 | DEL |
A seguir temos a tabela de códigos ASCII estendidos, que utiliza oito bits para representar os caracteres e contém mais 127 caracteres que incluem caracteres especiais, símbolos e letras acentuadas em vários alfabetos distintos.
Note que os códigos ASCII estendidos de seu computador podem diferir da tabela a seguir, pois eles dependem do conjunto de caracteres empregado pelo sistema operacional. O conjunto mais popular é um conjunto de caracteres denominado ISO 8859-1, também conhecido como ISO Latin 1, que contém caracteres presentes na maioria dos idiomas europeus ocidentais (incluindo o português).
Decimal | Octal | Hexadecimal | Binário | Caractere |
128 | 200 | 80 | 10000000 | Ç |
129 | 201 | 81 | 10000001 | ü |
130 | 202 | 82 | 10000010 | é |
131 | 203 | 83 | 10000011 | â |
132 | 204 | 84 | 10000100 | ä |
133 | 205 | 85 | 10000101 | à |
134 | 206 | 86 | 10000110 | å |
135 | 207 | 87 | 10000111 | ç |
136 | 210 | 88 | 10001000 | ê |
137 | 211 | 89 | 10001001 | ë |
138 | 212 | 8A | 10001010 | è |
139 | 213 | 8B | 10001011 | ï |
140 | 214 | 8C | 10001100 | î |
141 | 215 | 8D | 10001101 | ì |
142 | 216 | 8E | 10001110 | Ä |
143 | 217 | 8F | 10001111 | Å |
144 | 220 | 90 | 10010000 | É |
145 | 221 | 91 | 10010001 | æ |
146 | 222 | 92 | 10010010 | Æ |
147 | 223 | 93 | 10010011 | ô |
148 | 224 | 94 | 10010100 | ö |
149 | 225 | 95 | 10010101 | ò |
150 | 226 | 96 | 10010110 | û |
151 | 227 | 97 | 10010111 | ù |
152 | 230 | 98 | 10011000 | ÿ |
153 | 231 | 99 | 10011001 | Ö |
154 | 232 | 9A | 10011010 | Ü |
155 | 233 | 9B | 10011011 | ø |
156 | 234 | 9C | 10011100 | £ |
157 | 235 | 9D | 10011101 | Ø |
158 | 236 | 9E | 10011110 | × |
159 | 237 | 9F | 10011111 | ƒ |
160 | 240 | A0 | 10100000 | á |
161 | 241 | A1 | 10100001 | í |
162 | 242 | A2 | 10100010 | ó |
163 | 243 | A3 | 10100011 | ú |
164 | 244 | A4 | 10100100 | ñ |
165 | 245 | A5 | 10100101 | Ñ |
166 | 246 | A6 | 10100110 | ª |
167 | 247 | A7 | 10100111 | º |
168 | 250 | A8 | 10101000 | ¿ |
169 | 251 | A9 | 10101001 | ® |
170 | 252 | AA | 10101010 | ¬ |
171 | 253 | AB | 10101011 | ½ |
172 | 254 | AC | 10101100 | ¼ |
173 | 255 | AD | 10101101 | ¡ |
174 | 256 | AE | 10101110 | « |
175 | 257 | AF | 10101111 | » |
176 | 260 | B0 | 10110000 | ░ |
177 | 261 | B1 | 10110001 | ▒ |
178 | 262 | B2 | 10110010 | ▓ |
179 | 263 | B3 | 10110011 | │ |
180 | 264 | B4 | 10110100 | ┤ |
181 | 265 | B5 | 10110101 | Á |
182 | 266 | B6 | 10110110 | Â |
183 | 267 | B7 | 10110111 | À |
184 | 270 | B8 | 10111000 | © |
185 | 271 | B9 | 10111001 | ╣ |
186 | 272 | BA | 10111010 | ║ |
187 | 273 | BB | 10111011 | ╗ |
188 | 274 | BC | 10111100 | ╝ |
189 | 275 | BD | 10111101 | ¢ |
190 | 276 | BE | 10111110 | ¥ |
191 | 277 | BF | 10111111 | ┐ |
192 | 300 | C0 | 11000000 | └ |
193 | 301 | C1 | 11000001 | ┴ |
194 | 302 | C2 | 11000010 | ┬ |
195 | 303 | C3 | 11000011 | ├ |
196 | 304 | C4 | 11000100 | ─ |
197 | 305 | C5 | 11000101 | ┼ |
198 | 306 | C6 | 11000110 | ã |
199 | 307 | C7 | 11000111 | Ã |
200 | 310 | C8 | 11001000 | ╚ |
201 | 311 | C9 | 11001001 | ╔ |
202 | 312 | CA | 11001010 | ╩ |
203 | 313 | CB | 11001011 | ╦ |
204 | 314 | CC | 11001100 | ╠ |
205 | 315 | CD | 11001101 | ═ |
206 | 316 | CE | 11001110 | ╬ |
207 | 317 | CF | 11001111 | ¤ |
208 | 320 | D0 | 11010000 | ð |
209 | 321 | D1 | 11010001 | Ð |
210 | 322 | D2 | 11010010 | Ê |
211 | 323 | D3 | 11010011 | Ë |
212 | 324 | D4 | 11010100 | È |
213 | 325 | D5 | 11010101 | ı |
214 | 326 | D6 | 11010110 | Í |
215 | 327 | D7 | 11010111 | Î |
216 | 330 | D8 | 11011000 | Ï |
217 | 331 | D9 | 11011001 | ┘ |
218 | 332 | DA | 11011010 | ┌ |
219 | 333 | DB | 11011011 | █ |
220 | 334 | DC | 11011100 | ▄ |
221 | 335 | DD | 11011101 | ¦ |
222 | 336 | DE | 11011110 | Ì |
223 | 337 | DF | 11011111 | ▀ |
224 | 340 | E0 | 11100000 | Ó |
225 | 341 | E1 | 11100001 | ß |
226 | 342 | E2 | 11100010 | Ô |
227 | 343 | E3 | 11100011 | Ò |
228 | 344 | E4 | 11100100 | õ |
229 | 345 | E5 | 11100101 | Õ |
230 | 346 | E6 | 11100110 | µ |
231 | 347 | E7 | 11100111 | þ |
232 | 350 | E8 | 11101000 | Þ |
233 | 351 | E9 | 11101001 | Ú |
234 | 352 | EA | 11101010 | Û |
235 | 353 | EB | 11101011 | Ù |
236 | 354 | EC | 11101100 | ý |
237 | 355 | ED | 11101101 | Ý |
238 | 356 | EE | 11101110 | ¯ |
239 | 357 | EF | 11101111 | ´ |
240 | 360 | F0 | 11110000 | |
241 | 361 | F1 | 11110001 | ± |
242 | 362 | F2 | 11110010 | ‗ |
243 | 363 | F3 | 11110011 | ¾ |
244 | 364 | F4 | 11110100 | ¶ |
245 | 365 | F5 | 11110101 | § |
246 | 366 | F6 | 11110110 | ÷ |
247 | 367 | F7 | 11110111 | ¸ |
248 | 370 | F8 | 11111000 | ° |
249 | 371 | F9 | 11111001 | ¨ |
250 | 372 | FA | 11111010 | · |
251 | 373 | FB | 11111011 | ¹ |
252 | 374 | FC | 11111100 | ³ |
253 | 375 | FD | 11111101 | ² |
254 | 376 | FE | 11111110 | ▀ |
255 | 377 | FF | 11111111 |
Para inserir um desses caracteres especiais em um texto, basta segurar a tecla Alt em seu teclado, e digitar a sequência numérica correspondente ao caractere desejado, em decimal. Assim, se digitarmos Alt + 225 em um editor de textos veremos o caractere alemão ß.
0100001010100010011100110110111101101110010101000111001001100101011010 010110111001100001011011010110010101101110011101000110111101110011 |
Pesquisa feita no Site: http://www.bosontreinamentos.com.br/hardware/metodos-de-transmissao-de-dados-hardware/
Por: Gabriela Parente
Para o Site: Techmovie
Métodos de Transmissão de Dados
Existem dois métodos para transmissão de dados através de um canal de comunicação: transmissão em série e transmissão paralela.
Transmissão Paralela
Neste tipo de transmissão são transmitidos um conjunto de bits simultaneamente. A quantidade de bits transmitidos varia conforme o sistema, sendo comuns sistemas com múltiplos de 8 bits (8,16, 32, 64).
A figura a seguir ilustra um sistema de transmissão paralela de 8 bits, transmitindo o byte "10100110":
A vantagem da transmissão paralela é que, por serem enviados vários bits de uma vez só, ela tende a ser rápida. Porém, existem alguns problemas inerentes a esse sistema de transmissão.
Cada fio, como sabemos, ao ser percorrido por uma corrente elétrica, gera um campo eletromagnético ao seu redor, que pode causar interferência nos condutores adjacentes. Na transmissão paralela esse efeito pode se multiplicar pelo número de fios usados no canal, ocasionando problemas como corrupção dos dados transmitidos.
2 Além disso, os condutores empregados na confecção do canal paralelo podem não ser exatamente do mesmo comprimento - imperfeições de fabricação podem resultar em alguns fios ou trilhas ligeiramente maiores ou menores, mesmo por milésimos de milímetro (micrômetros).
Isso pode acarretar um problema conhecido como Atraso de Programação (Skew Delay), que consiste em bits que são transmitidos juntos, mas não chegam simultaneamente no receptor. Isso pode ocasionar perda de performance na transmissão, perda de dados, e é necessário criar circuitos mais complexos (e de maior custo) no receptor para lidar com o problema.
O Skew Delay se agrava quando o caminho a ser percorrido pelos dados é maior, como ocorre em cabos de ligação conectados a um PC. Exemplos clássicos incluem o antigo cabo flat IDE e cabos de impressora paralela.
Neste tipo de transmissão os bits são enviados sequencialmente (“em série”), um bit por vez. A figura a seguir ilustra esse processo:
Porém, se elevarmos suficientemente o clock do sistema em série, é possível obter velocidades de transmissão mais elevadas do que em um sistema de transmissão paralela.
Vantagens da transmissão em série
A transmissão em série utiliza muito menos fios para realizar a transmissão de dados do que um sistema paralelo. São no mínimo dois ou três fios (transmissões half-duplex ou full-duplex). Podem ser necessários mais alguns poucos fios, dependendo do método de comunicação usado (com ou sem clock, por exemplo).
Por conta disso, a transmissão em série apresenta menos problemas com interferência eletromagnética, o que acaba permitindo um aumento em sua taxa de transferência ("velocidade"), pois menos erros são gerados durante a transmissão. Além disso, é eliminado o problema do atraso de propagação, pois os bits não são enviados juntos, mas sim sequencialmente.
Atualmente tem se dado preferência ao desenvolvimento e uso de sistemas de transmissão em série. Por exemplo, as interfaces USB, Firewire, SATA, PCI Express, 12C e SPI são todas interfaces de transmissão em série.
Existem três formas principais de transmissão de dados em série:
1. Transmissão Assíncrona: neste tipo de transmissão, são enviados juntamente com os dados alguns bits especiais de sinalização e controle, como por exemplo bits denominados de START BIT e STOP BIT, que são empregados para indicar o início e o fim da transmissão de um conjunto de bits (por exemplo, de um byte específico).
Existem outras formas de transmissão assíncrona, que utilizam outros bits de controle.
2. Transmissão Síncrona: nesta transmissão, um sinal de sincronismo separado é utilizado para que os envolvidos na comunicação consigam ajustar sua temporização, e o receptor possa, assim, saber onde começa e onde termina cada transmissão de dados.
Geralmente temos um fio extra transmitindo um sinal de clock para realizar esse sincronismo entre os dispositivos.
3. Transmissão Diferencial: neste tipo de transmissão, o mesmo (série de bits) é enviado em dois fios diferentes, porém com a polaridade invertida em um deles.
Quando um fio é percorrido por corrente elétrica, é gerado um campo eletromagnético ao seu redor, que pode induzir uma corrente em fios adjacentes, ocasionando a ocorrência de ruídos (interferência) na transmissão. Porém, se esse fio adjacente carregar o mesmo sinal, mas com polaridade invertida, irá gerar um sinal eletromagnético de polaridade oposta, o qual irá anular o efeito da interferência causada pelo outro fio, pois os campos opostos irão se anular.
Damos o nome de “D+” a um dos fios e de “D-” ao fio que carrega o sinal invertido. Em um próximo tutorial vamos analisar mais a fundo o funcionamento da transmissão diferencial, trazendo alguns exemplos de sua aplicação prática.
Pesquisa feita no Site: http://proddigital.com.br/tecnologia/file-system-o-que-e-o-sistema-de-arquivos/
Por: Gabriela Parente
Para o Site: Techmovie
File System- O que é?
O sistema de arquivos ou file system (também conhecido por sistema de gestão de arquivos) é a forma como os dados são organizados em algum meio de armazenamento de dados em massa, e que são frequentemente feitos em discos magnéticos. Sabendo interpretar o sistema de arquivos de um determinado disco, o sistema operacional pode descodificar os dados armazenados e lê-los ou gravá-los (conforme o que a pessoa pretender).
Fazendo analogias, tal organização assemelha-se a uma biblioteca escolar. O bibliotecário organiza os livros conforme um padrão, cuja busca, convenientemente, procura deixar mais fácil. O bibliotecário certamente, organiza os livros segundo suas características (assunto, censura, tecnologias, temas proibidos…). Depois de organizados, ou durante a organização, o bibliotecário cria uma lista com todos os livros da biblioteca, com seus assuntos, localizações e códigos respetivos, tornando assim a procura pelos livros mais fácil para os estudantes.
Aplicando esta analogia à computação, o sistema operacional seria o bibliotecário da “biblioteca de dados” do computador, ou seja, o disco de armazenamento. Exatamente igual à organização de uma biblioteca, o sistema operacional guarda os dados nos espaços vazios do disco, rotulando-os com um FCB (File Control Block, Bloco de Controle de Arquivo) e ainda criando uma lista com a posição deste dado, chamada de MFT (Master File Table, Tabela de Arquivos Mestre).
Assim, sabendo a posição do arquivo a ser aberto/gravado, o sistema operacional solicita a leitura deste, decodifica/codifica e realiza a abertura/gravação do dado.
Um file system ou sistema de arquivos é assim uma forma de criar uma estrutura lógica de acesso a dados numa partição. É também bastante importante referir que nunca poderá ter dois ou mais tipos de sistemas de ficheiros (formatos) numa mesma partição.
Existem diversos tipos de file systems, uns mais atuais do que outros, sendo os mais conhecidos neste âmbito os seguintes:
Pesquisa feita no Site: Boson Treinamentos.com.br
Por: Gabriela Parente
Para o Site: Techmovie
Os computadores e equipamentos eletrônicos (e as pessoas também!) usam sistemas para representar números, chamados de Sistemas de Numeração. Todo sistema de numeração possui duas características básicas:
Vejamos um exemplo de um número no sistema decimal de numeração: o número 6754. Vamos representá-lo como 675410 – o número 10 subscrito indica a base na qual o número está sendo representado (no caso, base 10). Esse número pode ser decomposto da seguinte forma:
6×103 + 7×102 + 5×101 + 4×100
6000 + 700 + 50 + 4 = 6754
Note que cada dígito possui um valor que depende de sua posição dentro do número. O dígito 7, por exemplo, vale na verdade 700, pois está na posição 03 (contando da direita para a esquerda, sempre), o que significa que seu valor é, na verdade, 7 vezes a base 10 elevada ao quadrado (terceira posição, começando a contagem da posição zero).
E desta forma podemos representar e decompor todos os números conhecidos no sistema decimal. Porém, os computadores e outros equipamentos e dispositivos eletrônicos não trabalham geralmente com o sistema decimal de numeração, que é reservado para nós, humanos; outros sistemas são empregados por esses equipamentos, como os que estudaremos a seguir.
Ou base 2. O sistema binário é a linguagem natural dos computadores e dispositivos digitais, e consiste em apenas dois valores distintos (dígitos): o e 1. Chamamos a esses valores de “bits”, onde “bit” é a contração das palavras “Binary Digit”, ou dígito binário.
O sistema binário também é posicional, com seus valores sendo potências de 2, e o conjunto de valores válidos no sistema compreende os dígitos 0 e 1.
Vejamos um exemplo de um número binário:
10102.
Para que não haja confusão entre números representados no sistema decimal e números binários, usamos o índice 2 subscrito para indicar o sistema base 2. De outra forma, não saberíamos se o número em questão é um valor binário ou se é a representação do valor mil e dez no sistema decimal.
Vamos decompor esse número binário e descobrir seu valor equivalente no sistema decimal:
1 | 0 | 1 | 0 |
1×23 | 0x22 | 1×21 | 0x20 |
8 | 0 | 2 | 0 |
8 + 0+ 2 + 0 = (10)10
Portanto, o número binário 10102 (lê-se “um zero um zero”) equivale ao número decimal 10 (dez). Veremos mais sobre conversões de base adiante no curso.
Cada posição em um número binário é um bit. Assim, um número binário como 1101102 é um número de seis bits, pois possui seis posições (dígitos) binários. Se tivermos um número com, por exemplo, quatro bits, poderemos representar os valores de zero até 11112 que equivale a 15 no sistema decimal. Ou seja, com 4 bits podemos representar 16 números distintos (de 0 a 15), pois 24 = 16.
Assim, com n bits podemos efetuar a contagem de 2n números distintos. E o valor máximo da contagem será semrpr 2n-1, pois a contagem se inicia em zero.
No geral, em eletrônica, usamos dígitos binários para representar dois níveis de tensão elétrica: nível alto e nível baixo, representados respectivamente pelos bits 1 e 0.
A memória nos computadores armazena os números binários em valores múltiplos de 8 bits (23). Desta forma, chamamos um número de 8 bits de Byte, um número de 16 bits de Half Word e um número de 32 bits, Word. Podemos também atribuir um nome a um agrupamento de 4 bits: Nibble.
O sistema binário é altamente eficiente para uso em dispositivos digitais, mas pode ser complexo para nós, humanos, no quesito inteligibilidade. Para simplificar o trabalho com valores binários, podemos usar um sistema numérico relacionado chamado de Sistema Hexadecimal, o qual usa a base 16 (24), ou seja, 16 dígitos para representar os números.
Os coeficientes válidos no sistema hexadecimal de numeração são:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Usamos os algarismos de 0 a 9 e as letras do alfabeto latino da A a F para representar os valores numéricos de 0 a 15.
Podemos representar os números hexadecimais de duas formas principais:
(hhhh)16 ou 0xhhhh
Exemplo: 0xA23E ⇔(A23E)16
Decompondo esse valor teremos:
A | 2 | 3 | E |
10×163 | 2×162 | 3×161 | 14×160 |
40960 | 512 | 16 | 14 |
Portanto: A23E16 = 40960 + 512 + 48 + 14 = 4153410
Veja que para o dígito A usamos o valor 10 no cálculo, e para o dígito E usamos o valor 14. Mais à frente temos uma tabela de equivalência de todos os valores decimais, hexadecimais e binários (até 4 bits).
Usamos a notação hexadecimal para representar, entre outros:
O uso do sistema hexadecimal simplifica muito a representação de valores do sistema binário. Por exemplo, o número hexadecimal mostrado anteriormente, se representado em binário, ficaria assim:
A23E16 ⇔ 10100010001111102
Um dígito hexadecimal equivale a um nibble (4 bits) do sistema binário. A tabela a seguir mostra um mapeamento entre valores decimais, binários e hexadecimais:
Decimal | Hexadecimal | Binário |
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
Pesquisa feita no Site: Boson Treinamentos.com.br
Por: Gabriela Parente
Para o Site: Techmovie
Nesta lição vamos mostrar como efetuar conversão entre bases numéricas, tendo como foco as bases Binária e Decimal.
Como vimos na lição anterior, os números são compostos por algarismos cujos valores dependem de sua posição relativa dentro do número. Usaremos esse fato para efetuar uma conversão de um número no sistema binário para um número equivalente no sistema decimal.
Tomemos como exemplo o número binário 110100112; vamos convertê-lo para decimal. Para isso, devemos multiplicar cada dígito binário individual por dois elevado ao valor de cada posição onde ele se encontra, e então somar os valores para obter o resultado final. Assim temos:
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
1 x 27 | 1 x 26 | 0 x 25 | 1 x 24 | 0 x 23 | 0 x 22 | 1 x 21 | 1 x 20 |
128 | 64 | 0 | 16 | 0 | 0 | 2 | 1 |
Somando os valores individuais:
128 + 64 + 0 + 16 + 0 + 0 + 2 + 1 = 21110
Vejamos um segundo exemplo. Vamos converter o número binário 11101112 para decimal:
1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 x 26 | 1 x 25 | 1 x 24 | 0 x 23 | 1 x 22 | 1 x 21 | 1 x 20 |
64 | 32 | 16 | 0 | 4 | 2 | 1 |
Somando os valores:
64 + 32 + 16 + 0 + 4 + 2 + 1 = 11910
Para efetuar a conversão de um número decimal para um número equivalente binário podemos usar o método das divisões sucessivas. Neste método, dividimos o número decimal que será convertido sucessivamente por 2 (sempre divisão inteira), até que o quociente seja igual a zero. Usaremos os restos de cada divisão para descobrir o valor da conversão.
Exemplo: Converter 21110 em binário:
Valor | Dividido por | Igual a | Resto | Obs. |
211 | 2 | = 105 | 1 | LSB |
105 | 2 | = 52 | 1 | |
52 | 2 | = 26 | 0 | |
26 | 2 | = 13 | 0 | |
13 | 2 | = 6 | 1 | |
6 | 2 | = 3 | 0 | |
3 | 2 | = 1 | 1 | |
1 | 2 | = 0 | 1 | MSB |
Agora, após efetuar as divisões sucessivas, vamos ler os valores dos restos indo do dígito mais significativo (MSB, Most Significant Bit) para o menos significativo (LSB, Least Significant Bit):
21110 ⇔ 110100112
Exemplo 2: Converta 102410 para binário:
Valor | Dividido por | Igual a | Resto | Obs. |
1024 | 2 | 512 | 0 | LSB |
512 | 2 | 256 | 0 | |
256 | 2 | 128 | 0 | |
128 | 2 | 64 | 0 | |
64 | 2 | 32 | 0 | |
32 | 2 | 16 | 0 | |
16 | 2 | 8 | 0 | |
8 | 2 | 4 | 0 | |
4 | 2 | 2 | 0 | |
2 | 2 | 1 | 0 | |
1 | 2 | 0 | 1 | MSB |
Lendo os valores dos restos do MSB para o LSB:
102410 ⇔ 100000000002
Obs.: Em um número binário, a posição mais à direita (dígito) é chamada de LSB (Least Significant Bit / Bit menos Significativo), pois é o bit com menor valor no número, e a posição mais à esquerda é chamada de MSB (Most Significant Bit / Bit mais significativo), pois é o bit com maior valor dentro do número. |
Pesquisa feita no Site: Boson Treinamentos.com.br
Por: Gabriela Parente
Para o Site: Techmovie
Nesta lição vamos mostrar como efetuar a conversão de números entre os sistemas Binário e Hexadecimal de numeração.
Para converter um número binário para hexadecimal nós devemos:
Hexadecimal | Binário |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
Exemplo: Converter o número binário 110010101001000111112 em hexadecimal:
Número binário: | 110010101001000111112 | ||||
Nibbles: | 1100 | 1010 | 1001 | 0001 | 1111 |
Dígitos hexadecimais: | C | A | 9 | 1 | F |
Então, temos que:
110010101001000111112 ⇔ CA91F16 (ou 0xCA91F)
Se, ao realizar a divisão do número binário em grupos de quatro bits, o último nibble ficar com três bits ou menos, complete o número com zeros à esquerda até completar os quatro bits necessários. (esses bits não fazem diferença para o valor numérico, mas é importante colocá-los para evitar confusões durante a conversão).
Para converter um número do sistema hexadecimal de numeração para o sistema binário, siga os passos abaixo:
Exemplo: Vamos converter o número hexadecimal 0xF13B em seu correspondente binário:
Número Hexadecimal | F13B16 | |||
Dígitos individuais | F | 1 | 3 | B |
Nibbles | 1111 | 0001 | 0011 | 1011 |
Número em Binário | 11110001001110112 |
Pesquisa feita no Site: Boson Treinamentos.com.br
Por: Gabriela Parente
Para o Site: Techmovie
Existem alguns equipamentos que representam os números decimais usando códigos específicos em vez de usar o sistema binário comum. O código mais conhecido nesta categoria é o Código BCD, no qual cada dígito decimal é representado por um grupo de quatro bits (nibble).
Para isso são usados os valores binários que representam os números decimais de 0 a 9, com quatro dígitos (bits) para representação dos valores; os valores de 10 a 15 (também gerados com quatro bits) são ignorados.
Na tabela abaixo listamos os números em decimal de 0 a 9 e seus equivalentes em código BCD:
Decimal | BCD |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
Acrescentaremos zeros sempre que necessário para que os números em BCD tenham sempre 4 dígitos (chamamos esse processo de “padding”).
Vejamos agora alguns exemplos de conversão de valores decimais em código BCD:
Exemplo 1 – Converter o número 523 em código BCD:
Tomamos cada dígito desse número separadamente e o substituímos pelo seu equivalente em BCD, de acordo com a tabela anterior:
Número Decimal | 52310 | ||
Dígitos | 5 | 2 | 3 |
Equivalentes BCD | 0101 | 0010 | 0011 |
Código BCD | 010100100011BCD |
Exemplo 2 – Converter o número BCD 1001011000100000BCD em seu equivalente decimal:
Dividiremos o número em grupos de 4 dígitos e converteremos cada grupo isoladamente para seu equivalente em decimal:
Número em BCD | 1001011000100000BCD | |||
Nibbles | 1001 | 0110 | 0010 | 0000 |
Equivalentes Decimais | 9 | 6 | 2 | 0 |
Número decimal | 962010 |
Lembre-se: os seis números que podem ser representados em binário e que vem após o 9 (de 10 a 15) NÃO podem ser usados em código BCD – não possuem um equivalente decimal! Assim, por exemplo, o número 1011 – que equivale a 11 em decimal – não é um número válido em BCD; para representar o número 11 devemos usar o valor BCD 00010001BCD.
Sistema Hexadecimal de Numeração
Pesquisa feita no Site: Boson Treinamentos.com.br
Por: Gabriela Parente
Para o Site: Techmovie
Adição Binária
Pesquisa feita no Site: Boson Treinamentos.com.br
Por: Gabriela Parente
Para o Site: Techmovie
Podemos efetuar operações aritméticas com valores em binário, sendo a operação mais comum a Adição Binária (soma de bits). A tabela a seguir mostra os resultados possíveis em uma soma de dois bits (bit e bit B), incluindo além da soma em si o bit de Carry ("vai-um"). O carry indica se devemos somar 1 à próxima coluna à esquerda durante o cálculo:
Note que sempre que um dos valores a serem somados for igual a zero, o resultado é trivial, como em uma soma algébrica comum. Porém, quando os dois bits são iguais a 1, o resultado será igual a zero e teremos um bit de carry gerado. Ou seja, a soma 1 + 1 é igual a 0 e “vai um”, que é a soma do valor 1 à segunda casa binária, à esquerda da casa que contém os bits somados:
+ 1 |
1 |
10 |
A próxima tabela mostra os resultados possíveis quando o carry de uma coluna anterior (chamado de carry-in) é adicionado às entradas A e B. Teremos como resultados a soma S e um valor chamado carry-out (vai-um-saída):
Entradas | Saídas | |||
Carry-in | A | B | S | Carry-out |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
A próxima tabela mostra os resultados possíveis quando carry de uma coluna anterior (chamado de carry-in) é adicionado às entradas A e B. Teremos como resultados a soma S e um valor chamado carry-out (vai-um-saída):
Entradas | Saídas | |||
Carry-in | A | B | S | Carry-out |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
Por exemplo, ao somarmos os bits 1 + 1 com um carry de 1, teremos como resultado o valor 1 e um carry-out gerado (outro bit 1 – “vai-um”), que será transportado para a próxima casa binária à esquerda, transformando-se em um carry-in (a ser somado).
Com o auxílio dessa tabela, vamos resolver alguns exemplos de adição binária:
1 – Efetuar: 111102 + 11002
Resolução:
Resposta: 1010102
2 – Somar: 11100102 + 10011102
Resolução:
Resposta: 110000002
3 – Efetuar: 10112 + 1012 + 10012
Resolução:
Resposta: 110012
Na lição anterior mostramos como realizar a soma de números binários. Agora, é a vez de trabalharmos com a subtração de valores binários, uma operação muito importante em aritmética binária também.
A tabela a seguir mostra os resultados possíveis ao efetuar uma subtração entre dois bits. Damos os nomes de Diferença e Borrow (“emprestar”) às saídas obtidas nessa operação. O borrow indica se devemos tomar emprestado um bit da coluna imediatamente à esquerda (um “vai-um” ao contrário):
Entradas | Saídas | ||
A | B | Diferença | Borrow |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
Note que quando temos os bits A e B iguais, ou quando o primeiro bit é igual a 1 e o segundo é igual a 0, o resultado da subtração é trivial, como se espera de uma operação comum. Porém, quando o primeiro bit é 0 e o segundo bit equivale a 1, a subtração tem como resultado o valor 1 e um bit de borrow deve ser utilizado (emprestado da próxima casa binária).
Vejamos alguns exemplos de subtração binária:
Exemplo 01: Efetuar 100112 – 10012
Resolução:
Resposta: 100112 – 10012 = 10102
Exemplo 02: Efetuar 100012 – 10102
Resolução:
Resposta: 100012 – 10102 = 1112
Pesquisa feita no site:
http://www.bosontreinamentos.com.br/eletronica/eletronica-digital/efetuando-subtracao-binaria/
Na lição anterior aprendemos a calcular o resultado de uma subtração binária usando bits de borrow. Agora, vamos mostrar uma outra técnica para realização de subtração entre números binários, denominada Subtração com Complemento de 1, que é uma técnica utilizada pelos computadores para realizar esse tipo de cálculo. Para humanos, a subtração usando o método do borrow é mais simples, mas certamente é de valia conhecer outros métodos também, especialmente para quem trabalha com projetos de lógica digital ou programação de computadores.
O complemento de 1 de um bit é o seu inverso (o de 1 é 0 e o de 0 é 1). Podemos usar esse complemento de 1 para efetuar uma subtração binária, de acordo com o procedimento a seguir:
Vejamos um exemplo de subtração binária usando esta técnica:
Exemplo 01: Efetue o cálculo de 110012 – 100012, usando o complemento de um.
Resolução:
Resultado: 110012 – 100012 = 10002
Exemplo 02: Calcule 10112 – 1012:
Resolução:
Igualamos o número de casas binárias dos números acrescentando um zero ao 1012:
Resultado: 10112 – 1012 = 1102
Exemplo 03: Efetuar 1012 – 110002 usando o complemento de um.
Resolução: Note que neste exemplo o segundo número (subtraendo) é menor do que o primeiro (minuendo) na subtração, de forma que o resultado deve ser um valor negativo.
Neste caso obtivemos um número negativo. O valor real do número será dado pelo complemento de 1 do resultado anterior, incluindo o bit de estouro:
Resultado: 1012 – 110002 = -100112 (-1910)
Tabela-verdade é uma tabela que descreve a saída de um circuito lógico em relação aos níveis lógicos presentes nas entradas do circuito. Uma tabela-verdade é composta por uma coluna para cada valor de entrada, e uma coluna final para os valores de saída computados, dependendo da operação lógica utilizada.
Veja a seguir uma tabela-verdade que representa um circuito lógico de duas entradas:
Circuito Lógico Representado:
Na figura acima temos um circuito lógico, representado por u retângulo, que pode implementar qualquer função lógica. Esse circuito possui duas entradas, A e B, e uma saída S. Os níveis lógicos na saída S dependem dos níveis nas entradas A e B, e podem ser listados com o uso de uma tabela-verdade.
Tabela-Verdade:
A tabela traz todas as combinações possíveis dos níveis lógicos nas entradas A e B, e mostra os níveis correspondentes na saída S. Por exemplo, quando A e B estão no nível lógico 0, a saída correspondente estará em nível 1.
Podemos criar tabelas-verdade para qualquer número de entradas, e o valor da saída S depende do circuito lógico analisado na tabela.
Na tabela mostrada anteriormente, temos duas entradas e quatro linhas; para uma tabela de três entradas, teremos oito linhas. O número de combinações das entradas será igual a 2n para uma tabela-verdade de n entradas. Desta forma, uma tabela com, digamos, 5 entradas terá no total 25 linhas = 32 linhas. Da mesma forma, uma tabela com 4 entradas terá no total 24 linhas = 16 linhas, ou combinações possíveis de valores.
Também devemos escrever a os valores das entradas em uma seqüência binária, o que simplifica a criação da tabela e permite evitar problemas, como o de encontrar uma combinação em particular em uma tabela grande.
Veja a seguir exemplos de tabelas-verdade de três e de quatro entradas:
Tabela para circuito de três entradas:
Tabela para circuito de quatro entradas:
1.) Qual o valor da saída na tabela mostrada anteriormente (de 4 entradas) quando as entradas A e C possuírem nível lógico igual a 1, e as entradas B e D estiverem em nível lógico igual a 0?
2.) Quantas linhas terá uma tabela-verdade utilizada para representar um circuito digital de sete entradas?
1.) Nível lógico 1
2.) 27 = 128 linhas
Uma Porta Lógica Digital é um dispositivo eletrônico que implementa funções lógicas (booleanas) e toma decisões baseado em diferentes combinações de níveis lógicos digitais (0 e 1) aplicados às suas entradas.
Uma porta lógica pode ter uma ou mais entradas, dependendo do circuito lógico que é implementado, e no geral somente possui uma saída digital. Podemos conectar e combinar diversas portas lógicas para obter circuitos ou funções lógicas adicionais, como circuitos combinacionais ou sequenciais.
As portas lógicas podem ser obtidas comercialmente na forma de circuitos integrados, que estão disponíveis em duas tecnologias ou famílias básicas, a tecnologia TTL (Transistor-Transistor Logic / Lógica Transístor-Transístor), que no geral utiliza transístores bipolares (BJT) NPN e PNP, e a tecnologia CMOS (Complementary Metal-Oxide Semiconductor / Metal-óxido Semicondutor Complementar), que usa Transístores de Efeito de Campo (FET) dos tipos MOSFET ou JFET. Também podemos criar portas lógicas com a combinação de componentes eletrônicos discretos, como diodos, transístores e resistores, e até mesmo com relés, válvulas eletrônicas e dispositivos mecânicos.
As portas lógicas digitais são como blocos de construção básicos, com os quais são construídos circuitos eletrônicos digitais complexos, como microprocessadores, memórias de computador, circuitos de controle digitais, multiplexadores e muitos outros.
Em lógica digital existem apenas dois estados permitidos (dois níveis de tensão elétrica), sendo denominados como nível alto (ligado) e nível baixo (desligado), 1 e 0, ou ainda, Verdadeiro e Falso. Representamos esses estados lógicos em álgebra booleana por meio dos valores binários 1 e 0.
Há duas formas de representar esses níveis lógicos por meio de um circuito digital:
É interessante notar que, quando usamos circuitos que implementem a tecnologia TTL, os estados lógicos são dados por intervalos de valores de tensão elétrica, e não valores específicos em si. A figura a seguir mostra os níveis lógicos de entrada e saída comuns (e aceitáveis) em um circuito TTL típico:
A porta lógica NOT é a mais básica de todas as portas lógicas, possuindo uma única entrada, e sua saída é o complemento dessa entrada. É uma porta inversora (ou buffer inversor), ou seja, o valor lógico da entrada é invertido na saída. Assim se uma entrada A possui nível lógico igual a 0, então a saída S terá o nível lógico 1, e se a entrada estiver em nível lógico 1, a saída terá o nível 0.
A figura abaixo mostra o símbolo da porta lógica NOT:
O círculo na saída da figura (lado direito) representa o complemento lógico (inverso). E, abaixo, o símbolo da porta NOT usando o formato retangular, do padrão IEC:
Podemos escrever uma expressão como:
que indica que a saída S é o complemento da entrada A, e essa expressão pode ser lida como “A negado” ou “A barrado”.
A seguir, temos a tabela-verdade da porta NOT:
A porta lógica NOT implementa uma função de uma única entrada, por isso é classificada como uma porta unária.
No mundo real temos as portas NOT disponíveis em circuitos integrados, tanto com tecnologia TTL quanto CMOS. Como exemplo, podemos citar o CI 7404, que é um TTL (lógica transístor-transístor) contendo seis portas inversoras independentes. A figura abaixo mostra a pinagem desse circuito integrado:
Um outro exemplo de CI contendo portas lógicas NOT, desta vez usando tecnologia CMOS, é o circuito integrado 4069, que também possui seis portas inversoras integradas.
Podemos implementar uma porta NOT usando um transístor e dois resistores, de maneira bem simples, como ilustra a figura a seguir:
Quando a tensão na base do transistor – entrada “A” – está em nível alto, a sua saída S estará em nível baixo, pois haverá condução de corrente entre coletor e emissor. Quando a base estiver em nível baixo, o transístor não estará conduzindo, de modo que o nível de tensão na saída S será alto (próximo à tensão de alimentação, +VCC).
Podemos implementar uma porta lógica AND usando componentes discretos como transistores e resistores, conforme mostra o diagrama esquemático a seguir:
A porta lógica AND (E) é um circuito lógico que possui ao menos duas entradas, e que fornece na saída o valor lógico 1 apenas quando todas as entradas também tiverem o nível lógico igual a 1 (alto).
A expressão booleana para a operação lógica AND é indicada por um ponto . como em A.B, que se lê “A AND B” ou ainda “A e B”, e também podemos simplesmente representar essa mesma expressão lógica como AB (sem utilizar o ponto).
As figuras abaixo mostram os símbolos de uma porta lógica AND com duas entradas:
E logo a seguir, temos a tabela-verdade para uma porta AND de duas entradas:
Assim como acontece com a porta OR, podemos construir portas AND com duas, três, quatro ou mais entradas, e a saída do circuito lógico será sempre igual a zero se qualquer uma das entradas tiver o valor lógico baixo (zero).
O circuito integrado TTL 7408 implementa quatro portas lógicas AND de duas entradas, independentes entre si. Veja abaixo o diagrama de pinagem desse CI:
Outros exemplos de circuitos integrados contendo portas AND são o 7411, que implementa três portas AND com tecnologia TTL de três entradas, e o 4082, que traz duas portas AND com tecnologia CMOS de quatro entradas.
A porta lógica OR (disjunção lógica) recebe ao menos duas entradas e produz um valor na saída igual a 1 se ao menos uma dessas entradas tiver valor lógico igual a 1.
Nas figuras a seguir podemos ver os símbolos de uma porta OR com duas entradas:
A expressão lógica OR é dada por S = A + B, sendo que o sinal + indica a operação booleanaOR, (e não a adição matemática!), e lemos A + B como “A OR B“.
Veja a seguir a tabela-verdade da porta lógica OR de duas entradas, A e B:
Podemos construir portas OR com duas, três, quatro ou mais entradas, e seu funcionamento é sempre o mesmo – saída igual a 1 se ao menos uma das entradas possuir nível lógico igual a 1.
Circuitos OR: Um exemplo de circuito integrado que implementa portas OR é o TTL 7432, que possui quatro portas OR independentes de duas entradas. A figura abaixo mostra o diagrama de pinagem desse circuito integrado:
Há diversas outras implementações de portas OR em circuitos integrados, como por exemplo o 4071 (CMOS, com 4 portas OR de duas entradas) e o 4072 (CMOS, com duas portas OR de 4 entradas).
Veja a seguir o símbolo de uma porta OR de três entradas (A, B e C):
E a tabela-verdade da porta OR de três entradas pode ser vista abaixo:
Note que o único caso em que teremos valor lógico igual a 0 (zero) na saída é quando todas as entradas possuem valor 0 também; em todos os outros casos, a saída é igual a 1.
Podemos implementar uma porta lógica OR usando transistores e resistores, conforme mostra o diagrama esquemático a seguir:
A porta lógica NOR é uma porta que conta com ao menos duas entradas, e cujo nível lógico de saída será igual a 0 quando houver ao menos uma entrada em nível lógico alto (1). A palavra NOR significa “NOT OR”, indicando que, basicamente, se trata de uma porta OR com a saída invertida (em complemento).
As figuras a seguir mostram os símbolos utilizados para representar uma porta NOR:
A Porta Lógica NAND (Não E) é uma porta lógica que possui no mínimo duas entradas, e cujo valor lógico em sua saída será igual a 0 (zero) somente quando todas as suas entradas tiverem nível lógico igual a 1.
NAND significa “NOT AND”, o que denota sua principal característica – ser uma função de complemento em relação à função AND, e podemos ver seus símbolos nas figuras a seguir:
Note que se trata de uma porta AND com a saída invertida, o que é mostrado pelo círculo e pela barra inclinada nos diagramas.
A expressão booleana de uma porta NAND é dada por:
Ou seja, trata-se da expressão lógica de uma porta AND, porém com o resultado invertido (em complemento), o que é denotado pela barra sobre a expressão AB.
A seguir, temos a tabela-verdade para uma porta NAND de duas entradas:
Note que a saída somente apresenta nível lógico igual a 0 quando ambas as entradas estão em nível lógico igual a 1; em todos os outros casos, a saída será igual a 1 (nível alto).
Veja abaixo o diagrama e a tabela-verdade para uma porta lógica NAND de três entradas:
Um exemplo de circuito integrado clássico que implementa portas NAND é o TTL 7400, que possui quatro portas NAND independentes de duas entradas. A figura abaixo mostra o diagrama de pinagem desse circuito integrado:
Existem muitas outras implementações de portas NAND na forma de chips, como por exemplo o 7410 (TTL, com três portas NAND de três entradas) e o 74C30 (CMOS, com uma porta NAND de 8 entradas!).
Podemos implementar uma porta lógica NAND usando transistores e resistores, conforme mostra o diagrama esquemático a seguir:
Quando o nível lógico (tensão) na base dos dois transístores é alto, simultaneamente, ambos conduzem e o nível lógico na saída (coletor de T1) será 0; em qualquer outro caso, sempre haverá ao menos um transístor em corte (não conduzindo), e o nível na saída será igual à 1 (nível alto = +Vcc).
Podemos também implementar uma porta NAND utilizando outras portas lógicas, caso não estejam disponíveis circuitos integrados apropriados ou transístores. Abaixo, vemos um diagrama que ilustra a composição de uma porta NAND a partir de portas NOR (estudadas na lição anterior):
Na próxima lição apresentaremos a Porta Lógica XOR (Ou-Exclusivo).
A porta XOR (Exclusive OR / OU Exclusivo) é uma porta de duas entradas que produz em sua saída o nível lógico 1 quando suas entradas tiverem valores diferentes entre si, e o nível lógico 0 zero) quando as entradas forem iguais.
Podemos ver nas figuras abaixo os símbolos de uma porta lógica XOR:
Podemos ver nas figuras abaixo os símbolos de uma porta lógica XNOR:
A expressão booleana de uma porta XNOR é dada por:
a qual lemos como “A ou-não-exclusivo B” ou simplesmente, “A XNOR B”. Perceba que se trata da mesma expressão lógica de uma porta XOR, porém com a saída invertida (barrada).
A seguir, temos a tabela-verdade para uma porta XNOR:
A porta XNOR não é uma porta básica, como as estudadas anteriormente, mas assim como a porta XOR, pode ser construída a partir de portas básicas. Por exemplo, o circuito abaixo, composto apenas de portas básicas (OR e NAND), implementa uma porta XNOR:
Um exemplo de circuito integrado clássico que implementa portas XNOR é o TTL 74266, que possui quatro portas XNOR independentes. A figura a seguir ilustra o diagrama de pinagem desse circuito integrado:
Outro exemplo de circuito integrado que implementa portas XNOR é o CMOS 4077, também trazendo quatro portas XNOR independentes.
A porta lógica XNOR, também conhecida como OU-Não-Exclusivo (Exclusive NOR), é uma porta lógica de duas entradas que apresenta nível lógico alto (1) em sua saída quando as entradas possuírem níveis lógicos iguais entre si, e nível lógico baixo na saída quando suas entradas forem diferentes. Basicamente, ela implementa a função inversa da porta XOR.
A álgebra booleana foi desenvolvida pelo matemático inglês George Boole (1815 – 1864) para ser usada em estudos de lógica. Foi apresentada pela primeira vez de forma completa em um trabalho de nome “An Investigation of the Laws of Thought”, publicado em 1854.
Nos artigos anteriores apresentamos diversas portas lógicas e suas características principais. A partir dos próximos artigos nós vamos começar a explorar circuitos digitais mais complexos formados por portas lógicas e outros componentes, como somadores, comparadores, flip-flops e muitos outros. Como as portas lógicas são tão importantes no mundo da eletrônica digital, você deve ter um conhecimento sólido a respeito delas e sua operação.
Abaixo, temos um sumário com informações sobre as portas lógicas que estudamos anteriormente. É muito importante memorizar seus símbolos, equações booleanas e tabelas-verdade.
Porta Lógica | Equação | Tabela-Verdade | Símbolos |
NOT |
|||
OR |
|||
AND |
|||
NOR |
|||
NAND |
|||
XOR |
|||
XNOR |
Na tabela a seguir temos também uma listagem dos principais circuitos integrados que implementam as portas lógicas estudadas, de forma a facilitar a pesquisa caso seja necessário escolher um deles para uso em seus projetos:
Porta Lógica | Nº de entradas por porta | Nº de portas por chip | TTL Básico 74xx | CMOS família 4000 |
NOT | 1 | 6 | 7404 | 4069 |
AND | 2 | 4 | 7408 | 4081 |
3 | 3 | 7411 | 4073 | |
4 | 2 | 7421 | 4082 | |
OR | 2 | 4 | 7432 | 4071 |
3 | 3 | – | 4075 | |
4 | 2 | – | 4072 | |
NAND | 2 | 4 | 7400 | 4011 |
3 | 3 | 7410 | 4013 | |
4 | 2 | 7420 | 4012 | |
8 | 1 | 7430 | 4068 | |
12 | 1 | 74134 | – | |
13 | 1 | 74133 | – | |
NOR | 2 | 4 | 7402 | 4001 |
3 | 3 | 7427 | 4025 | |
4 | 2 | 7425 | 4002 | |
5 | 2 | 74260 | – | |
8 | 1 | – | 4078 | |
XOR | 2 | 4 | 7486 | 4070 |
XNOR | 2 | 4 | 74266 | 4077 |
Os sistemas digitais operam usando valores discretos para representar números, letras e símbolos. Esses valores discretos simbolizam os estados ON (ligado) e OFF (desligado), os quais podem ser representados por zeros e uns (0 e 1).
Já os sistemas analógicos permitem medir sinais físicos de magnitudes variáveis, incluindo sinais elétricos. Um sistema analógico pode ser empregado em eletrônica para, por exemplo, monitorar e controlar sinais correspondentes à temperatura, pressão, posição, velocidade, etc., que são sinais cujo valor varia continuamente e podem apresentar uma grande gama de valores mensuráveis.
Podemos representar quantidades analógicas usando um sistema digital, por meio do emprego de técnicas de conversão específicas.
O valor de uma medida qualquer pode assumir qualquer valor possível dentro de um intervalo considerado. Por exemplo, a temperatura de um ambiente pode assumir inúmeros (possivelmente infinitos) valores, como por exemplo 29º C, ou ainda 29,5º C, ou até mesmo 29,534º C, dependendo da precisão considerada.
Dizemos que valores analógicos podem variar em um determinado intervalo de valores contínuo.
Outro exemplo: A tensão em uma pilha comum AA pode se encontrar em qualquer ponto entre 0V e 1,5V, como por exemplo 50 mV (0,o5V), ou ainda 1,2577V.
Assim, em um sistema analógico, os dispositivos trabalham com valores representados de forma analógica, ou seja, valores que podem variar em um intervalo contínuo de valores (possivelmente infinito).
Como exemplo de sistema analógico podemos citar um amplificador de guitarra, cuja potência de saída pode variar de 0 até o máximo suportado, digamos, 30W.
Neste caso, as quantidades são representadas por valores discretos. e não contínuos, que chamamos de dígitos. Por exemplo, podemos estabelecer que a representação de uma quantidade qualquer será feita somente por meio de valores 0 e 1, ou seja, usando o sistema binário de numeração. Ou ainda, que a quantidade a ser representada somente usará números inteiros para sua representação.
Podemos diferenciar a representação de valores analógicos e digitais da seguinte forma:
Trata-se do sistema que consiste na combinação de dispositivos eletrônicos, mecânicos, magnéticos ou outros, que são projetados para operar com valores digitais, ou seja, quantidades que somente assumem valores discretos.
Como exemplos de sistemas digitais podemos citar os computadores, calculadoras e sistemas de áudio digital, como o CD (compact disc).
A maior parte dos valores mensuráveis no mundo físico é analógica. Um sinal analógico, como foi notado, é uma quantidade cujo valor varia continuamente, como por exemplo a temperatura medida com um termômetro comum, de mercúrio. Conforme a temperatura aumenta o diminui, a expansão e contração do mercúrio ocorre de forma contínua, sem saltos de valor, relativa à uma escala de temperatura medida em graus. Em dado momento a temperatura pode ser de 32ºC, e em outro momento pode ser de 32,70ºC, por exemplo, ou então qualquer valor mensurável entre esses dois valores – dependendo apenas da precisão do termômetro empregado.
Para que um equipamento eletrônico, como um computador por exemplo, analise, interprete e processe esse tipo de informação, nós a representamos de forma digital, pois é muito mais fácil para esse equipamento operar dessa forma, com as quantidades em formato digital.
Assim, podemos representar a temperatura medida pelo termômetro de forma digital, usando apenas os e 1s, usando um circuito eletrônico simples que permita a manipulação desse valor e seu armazenamento se for desejado. Em vez de lidarmos com um intervalo infinito de valores analógicos, podemos representar os valores usando apenas valores “ligado” e “desligado” (geralmente, +5 V e 0V, respectivamente).
Um dos exemplos mais comuns de representação digital de quantidades analógicas é a gravação de música em CDs. Os Compact Discs permitem o armazenamento digital de áudio de forma relativamente simples e com alta qualidade de som. A música produzida por instrumentos musicais e pela voz humana é analógica, e para que possa ser armazenada em um CD ou DVD deve primeiramente ser convertida em formato digital, o qual é reconvertido em analógico quando reproduzimos a música – pois nossa audição também responde a sinais analógicos.
Um dos exemplos mais comuns de representação digital de quantidades analógicas é a gravação de música em CDs. Os Compact Discs permitem o armazenamento digital de áudio de forma relativamente simples e com alta qualidade de som. A música produzida por instrumentos musicais e pela voz humana é analógica, e para que possa ser armazenada em um CD ou DVD deve primeiramente ser convertida em formato digital, o qual é reconvertido em analógico quando reproduzimos a música – pois nossa audição também responde a sinais analógicos.
Existem diversas vantagens no uso de um sistema digital em vez de u sistema analógico para o projeto e construção de dispositivos, como por exemplo:
A principal desvantagem é que o mundo real é praticamente todo analógico, sendo necessário efetuar conversões entre os sistemas com frequência. Por conta dessa desvantagem, para que possamos aplicar técnicas digitais ao lidar com valores de entrada e saída analógicos, nós devemos:
Exemplo clássico desse processo: Gravação e Reprodução de Áudio de CDs. Basicamente, o processo é o seguinte:
Como o sinal analógico gerado pelos instrumentos digitais é representado de forma digital? Para representar os sons musicais, nesse caso, são tomadas várias amostras do sinal analógico para serem convertidas em sequências de 0s e 1s – bits – como mostrado na figura a seguir:
A figura mostra que, ao longo do tempo, são tomadas amostras dos valores analógicos em pontos específicos e essas amostras são representadas por valores binários específicos, dependendo da posição na onda analógica de onde foram retiradas. Para isso, o sinal analógico é enviado a um circuito denominado Conversor Analógico-Digital (Analog-Digital Conversor – ADC) que interpreta os vários níveis do sinal analógico e atribui a cada um deles uma string (sequência) determinada de bits.
Para cada valor distinto de tensão, uma sequência específica de bits é gerada, e essa atribuição de valores, denominada amostragem, ocorre inúmeras vezes por segundo. Quanto maior a quantidade de amostras retiradas por unidade de tempo, maior será a resolução do sinal digital obtida, e mais próximo do som analógico original será o sinal digital resultante.
Como mostrado na figura anterior, os valores digitais gerados são representados por strings de bits, que são dígitos binários – números representados no sistema binário de
Arduino IDE
Este artigo explica os procedimentos para a Instalação do Software Arduino IDE em ambiente Windows.
Para baixar o software Arduino IDE acesse a página http://arduino.cc/en/Main/Software, role a página até a seção Arduino 1.0.6 e escolha a versão de seu sistema operacional. A princípio vou instalar a versão para Windows, clicando no linkWindows Installer.
Após baixar o software, conecte o Arduino (vamos tratar da versão Uno aqui, e os passos servem também para as versões Mega, DUemilanove e Nano) ao computador usando o cabo USB A – B. Verifique se o LED
Power (PWR) acende no Arduino.
Após conectar a placa do Arduino ao computador, vamos esperar o Windows reconhecê-la e iniciar o processo de instalação dos drivers.Esse processo falhará, mas não se preocupe – é o processo correto.
Agora execute o instalador baixado e siga os passos do assistente de instalação até o final.
Após o término da instalação,vamos testar o Arduíno.
Abra o IDE a partir do menu Iniciar:
Primeiramente vamos selecionar nossa placa. Clique no menu Tools, submenu Board, e então selecione sua placa na lista suspensa. Em nosso caso, será o Arduino Uno:
Clique em File -> Examples -> 01.Basics -> Blink. Será aberta uma nova janela com o código do programa. Dê uma olhada no código e vamos alterá-lo, pois na verdade esse programa já está carregado, por padrão, na placa do Arduíno – por isso há um LED amarelo piscando nela!
Altere o código da seção loop() para ficar assim:
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(2000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
Alteramos o tempo no qual o LED fica aceso e apagado, respectivamente para 2 segundos e meio segundo.
Após alterar o código, vamos selecionar a porta de comunicação correta para que possamos enviar o programa para o Arduino. Clique no menu Tools, submenu Serial Port, e então selecione a porta COM (emulada) onde o arduino está conectado. Provavelmente aparecerá uma única porta. No meu caso, é a COM3:
Após selecionar a porta correta, clique no botão Upload para compilar o programa e enviá-lo para a placa:
Feito! Agora olhe na placa e verifique que o LED amarelo pisca a intervalos de 2 segundos aceso e 0.5 segundo apagado.
Um projeto do Arduíno é chamado desketch, e consiste tipicamente em duas partes (rotinas): a rotina de setup, que inicializa o sketch, e a rotina de loop, que normalmente contém o código principal do programa (é como a função main() da linguagem C).
Vamos ver como funcionam essas duas rotinas.
Antes que possamos trabalhar com o Arduíno, precisamos configurar alguns itens. Essa configuração é realizada dentro de uma rotina chamada setup(), a qual é chamada sempre que o sketch é inicializado. Geralmente inicializamos os pinos de entrada e saída digitais, e podemos também definir a taxa de transmissão serial, entre outras coisas. É comum declaramos as variáveis usadas no programa antes da definição da função setup().
Veja um exemplo da função setup:
void setup() { pinMode(13, OUTPUT); Serial.begin(9600); }
Neste código o pino 13 é configurado como uma saída (irá escrever um nível lógico neste pino) e a comunicação serial do dispositivo é configurada com a taxa de transmissão de 9600 bauds (bits por segundo). A rotina de setup sempre é requerida nos sketches, mesmo que não haja nada a inicializar – neste caso, apenas coloque a função sem código nenhum dentro, como é mostrado abaixo:
void setup() { // Rotina sem nada a declarar }
O texto que é inserido após os caracteres // é um comentário. Devemos sempre comentar nosso código, pois ele permite documentá-lo e ajuda a quem vai trabalhar com esse código posteriormente a entendê-lo com mais facilidade – inclusive nós mesmos. Não é necessário escrever uma tese como comentário – uma pequena descrição já é bastante útil.
Podemos comentar o código de duas formas:
// Comentário de uma linha
/* Comentário que
ocupa múltiplas linhas*/
Rotina de loop
A rotina de loop é onde o programa é efetivamente executado. Trata-se exatamente do que o nome sugere – um loop infinito. Os códigos contidos nessa rotina são executados eternamente – ou até que o Arduíno seja interrompido.
É na rotina de loop que escreveremos nosso programa efetivamente. Veja um exemplo de uma rotina de loop:
void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
Nesta rotina, o código é executado ininterruptamente, e um LED conectado ao pino configurado (13) acende e apaga a intervalos de um segundo (1000 milissegundos), até que o Arduíno seja desligado.
Para que possamos criar nossos sketches tirando o máximo proveito do Arduíno Uno é necessário que conheçamos as funções de seus pinos. A figura a seguir mostra a função de cada um dos pinos do Arduíno, e na sequência temos uma breve descrição de cada um:
Pino |
Função |
AREF – Analog Reference | Tensão de referência para entradas analógicas. |
Digital Ground | Terra digital |
Digital I/O Pins (2-13) | Pinos de entrada e saída digitais, que operam em 5V e podem receber ou fornecer um máximo de 40mA de corrente. Os pinos 2 e 3 também podem ser usados para gerar interrupções. |
Serial OUT (TX) e Serial IN (RX) | Usados para transmitir e receber dados seriais TTL. |
Analog In (0-5) | Entradas analógicas, que fornecem uma resolução de 10 bits (1024 valores distintos); medem por padrão valores de 0 a 5V. |
PWM | Os pinos 3,5,6,9,10 e 11 podem ser usados como saída PWM de 8 bits. |
SPI | Os pinos 10.11.12 e 13 suportam comunicação SPI com o uso da biblioteca apropriada. |
Reset | Reseta o microcontrolador quando em nível baixo. |
Voltage In | Podemos fornecer tensão elétrica através desse pino ou acessá-la caso usemos uma fonte de alimentação externa. |
5 Volt Power Pin | Saída regulada de 5V |
3.3 Volt Power Pin | Fornece tensão de 3.3V a partir de um regulador on-board, com 50mA máx. |
Neste artigo vamos continuar a explorar o Arduíno criando um novo projeto e utilizando componentes eletrônicos que não usamos ainda.
Nosso sketch de hoje é um projeto bem simples, no qual teremos quatro LEDs que acenderão e apagarão de forma sequencial. Neste projeto vamos precisar de alguns componentes eletrônicos, conforme mostra a listagem a seguir:
O diagrama do circuito que iremos montar pode ser visto na figura a seguir, criada com o software livre Fritzing:
Este artigo explica como obter, instalar e testar o software Arduíno IDE no Ubuntu Linux (e outras distribuições baseadas em Debian).
Para baixar o software Arduino IDE acesse a página http://arduino.cc/en/Main/Software, role a página até a seção Arduino 1.0.6 e escolha a versão de seu sistema operacional. Para Linux temos opções para sistemas de 32 e 64 bits, em arquivos compactados com a extensão tgz. Neste artigo baixarei e instalarei a versão de 64 bits numa máquina com Ubuntu Linux. Porém, como o software do Arduino está disponível nos repositórios do Ubuntu, efetuarei a instalação pelo método mais simples – o bom e velho apt-get.
Para começar, conecte o Arduino (vamos tratar da versão Uno aqui, e os passos servem também para as versões Mega, Duemilanove e Nano) ao computador usando o cabo USB A – B. Verifique se o LED Power (PWR) acende no Arduino.
Verifique também se a placa foi reconhecida pelo Ubuntu emitindo o comando lsu
$ lsusb
Se sua placa foi reconhecida, proceda á instalação do software executando os comandos a seguir:
$ sudo apt-get update
$ sudo apt-get install arduino
Aguarde enquanto o apt baixa os pacotes e os instala em seu sistema.
Após o término da instalação, vamos configurar e testar o Arduíno.
Configurando e Testando o Arduíno:
Abra o IDE clicando no Lançador e digitando arduino na caixa de pesquisa. Clique no ícone do pacote:
Recomendo também arrastar o ícone do Arduino para o lançador, a fim de facilitar a execução do IDE sempre que desejado:
Recomendo também arrastar o ícone do Arduino para o lançador, a fim de facilitar a execução do IDE sempre que desejado:
É necessário adicionar seu usuário ao grupo “dialout” para que seja possível enviar código ao Arduíno. Clique em Add na caixa de diálogo que surge para executar essa operação:
Digite sua senha para autenticação e clique em Autenticar:
O IDE será aberto:
Primeiramente vamos selecionar nossa placa. Clique no menu Tools, submenu Board, e então selecione sua placa na lista suspensa. Em nosso caso, será o Arduino Uno:
Agora, vamos selecionar a porta de comunicação correta para que possamos enviar os programas para o Arduino. Clique no menu Tools, submenu Serial Port, e então selecione a porta COM (emulada) onde o arduino está conectado. Provavelmente aparecerá uma única porta. Caso não seja possível selecionar uma porta (se a opção Serial Port aparecer em cinza), reinicie o sistema, e tente novamente.
Antes de reiniciar o sistema:
Após reiniciar o sistema:
Veja que apareceu a porta /dev/ttyACM0. Agora nosso Arduíno está configurado corretamente, e podemos passar ao teste carregando um projeto no microcontrolador.
Carregando um projeto
Clique em File -> Examples -> 01.Basics -> Blink. Será aberta uma nova janela com o código do programa. Dê uma olhada no código e vamos alterá-lo, pois na verdade esse programa já está carregado, por padrão, na placa do Arduíno – por isso há um LED amarelo piscando nela!
Altere o código da seção loop() para ficar assim:
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(2000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
Alteramos o tempo no qual o LED fica aceso e apagado, respectivamente para 2 segundos e meio segundo.
Após alterar o código, clique no botão Upload para compilar o programa e enviá-lo para a placa:
Verifique a mensagem de confirmação de envio no rodapé da janela:
Feito! Agora olhe na placa e verifique que o LED amarelo pisca a intervalos de 2 segundos aceso e 0.5 segundo apagado:
Software e drivers instalados com sucesso no Ubuntu Linux!!!
Nos próximos artigos, começaremos a aprender a criar projetos para o Arduíno.
Podemos enviar informações do Arduíno para o PC (ou outros dispositivos) usando o IDE (ou outro programa de terminal serial qualquer), de modo a verificarmos se nosso programa está operando da forma esperada, e assim podermos detectar e eliminar erros de programação, ou efetuarmos qualquer outro tipo de comunicação com a máquina.
E também podemos enviar dados e comandos do PC para o Arduíno, de modo a poder controlar dispositivos eletrônicos a ele conectados.
As placas de Arduíno possuem ao menos uma porta serial (UART / USART), chamada de Serial. Ela realiza comunicação por meio dos pinos digitais 0 (RX) e 1 (TX), assim como via USB com o PC. Veja um detalhe da placa de um Arduino UNO mostrando esses pinos e sua identificação:
Se usarmos esses pinos com a função de TX/RX, não poderemos utilizá-los para outras funções.
Podemos usar a ferramenta de Monitor Serial presente no IDE para comunicação com a placa. Para isso, basta clicar no botão Serial Monitor na barra de ferramentas, e selecionar a taxa de transferência desejada em bauds (a mesma que será inserida no código):
Vamos trabalhar em nosso projeto com o Arduíno UNO, que possui as características descritas acima. Outras placas podem possuir características diferentes, como o Arduino Mega, que possui três portas seriais adicionais, e o Arduino Due, que possui três portas seriais TTL de 3.3V a mais. Nosso projeto funcionará em qualquer uma das placas.
Vamos ver alguns exemplos de comunicação serial com o Arduino, usando a classe Serial.
A classe Serial possui diversas funções para comunicação, sendo algumas delas listadas na tabela a seguir:
Vamos trabalhar em nosso projeto com o Arduíno UNO, que possui as características descritas acima. Outras placas podem possuir características diferentes, como o Arduino Mega, que possui três portas seriais adicionais, e o Arduino Due, que possui três portas seriais TTL de 3.3V a mais. Nosso projeto funcionará em qualquer uma das placas.
Vamos ver alguns exemplos de comunicação serial com o Arduino, usando a classe Serial.
A classe Serial possui diversas funções para comunicação, sendo algumas delas listadas na tabela a seguir:
Função | Significado |
available() | Obtém o número de bytes disponíveis para leitura na porta serial. |
begin() | Configura a taxa de dados em bauds para transmissão serial de dados |
end() | Desabilita a comunicação serial, permitindo que os pinos TX e RX (0 e 1) sejam usados para entrada e saída geral de sinais. |
print() | Imprime dados na porta serial em formato legível por humanos (texto ASCII) |
println() | Idem a print(), porém adicionando um caractere de retorno de carro (ASCII 13) e um de nova linha (ASCII 10) no final da string. |
read() | Lê dados a partir da porta serial. |
readBytes() | Lê caracteres a partir da porta serial em um buffer até que uma determinada quantidade de caracteres tenha sido lida. |
write() | Escreve dados binários na porta serial |
Vamos a um exemplo: exibir números sequenciais no monitor serial:
Exemplo 01: Exibir números sequenciais no Monitor Serial:
Conecte o Arduino na porta USB de seu PC, abra o IDE e digite o seguinte código em um novo projeto:
/* Testando a saída serial do Arduíno Vamos escrever números na porta serial*/ void setup(){ Serial.begin(9600); //Enviar e receber dados em 9600 baud Serial.println("Gerando valores sequenciais"); } int numero = 0; void loop() { Serial.print("Valor: "); Serial.println(numero); delay(500); numero++; } |
Após digitar o código no IDE, compile-o e envie-o para execução no Arduíno. Então, abra o Serial Monitor para verificar os dados sendo transmitidos do Arduino para seu PC:
Exemplo 02: Exibindo valores da 1 a 255 em vários sistemas
Neste segundo exemplo, vamos exibir os números de 1 a 255 no monitor serial nos sistemas decimal, binário e hexadecimal.
Conecte seu arduino à porta USB, abra o IDE no PC e digite o código a seguir:
/* Exibindo valores em diferentes sistemas de numeração */
void setup(){
Serial.begin(9600); Serial.println(“Exibindo valores em sistemas diversos”);
}
int valor = 0;
void loop(){
for (valor = 0; valor <= 255; valor++) {
Serial.print(“DEC: “);
Serial.print(valor);
Serial.print(” HEX: “);
Serial.print(valor, HEX);
Serial.print(” BIN: “);
Serial.println(valor, BIN);
/* Se o valor for 255, não repetir mais a geração de números.
Entrar nesse loop para sempre:
*/
if(valor == 255) {
while(true) {
continue;
}
}
}
}
|
Após digitar o código, compile-o e envie para execução no Arduino. Veja a saída esperada:
Enviando dados do PC para o Arduíno via porta serial
Queremos agora efetuar o processo inverso: enviar caracteres do PC para o Arduíno, o que pode ser muito útil para, por exemplo, controlar dispositivos a partir do computador conectado a um Arduíno.
Vamos criar um projeto para demonstrar o uso da função Serial.read():
Ex. 03: Controlando um LED a partir do PC
Neste projeto vamos fazer um LED piscar em uma velocidade proporcional a um valor numérico enviado a partir do PC. Crie um novo projeto no IDE e digite o código abaixo:
/* Enviando dados do PC para o ArduínoVamos piscar um LED de forma proporcional ao valor recebido a partir do PC */
const int ledPin = 13; // Pino ao qual o LED será conectado
int piscando = 0; // variável para armazenar taxa de “piscagem”
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // Pino 13 será de saída de sinais
}
void loop()
{
if (Serial.available()) { // Verificar se há caracteres disponíveis
char caractere = Serial.read(); // Armazena caractere lido
if ( isDigit(caractere) ) { // Verificar se o caractere ASCII é um dígito entre 0 e 9
piscando = (caractere – ‘0’); // Convertendo ASCII em valor numérico (0 = 48)
piscando = piscando * 100; // Escalando taxa de tempo multiplicando por 100ms
}
}
pisca(); // Chamando a função blink(), que será declarada abaixo.
}
/* Declarando a função pisca() que fará o LED piscar na taxa deternminada pelo valor armazenado na variável piscando
*/
void pisca()
{
digitalWrite(ledPin, HIGH);
delay(piscando);
digitalWrite(ledPin, LOW);
delay(piscando);
}
|
Conecte um LED ao arduíno usando uma protoboard e um resistor de aproximadamente 470 ohms conforme a iliustração abaixo mostra:
Compile e envie o código digitado ao Arduíno. Logo após, abra o Serial Monitor, digite um número entre 0 e 9 e clique no botão Send para enviar o valor ao Arduíno:
Observe que o LED piscará numa velocidade diferente para cada número enviado a partir do IDE. Desta forma, atingimos nosso objetivo de enviar dados a partir do PC para a placa do Arduíno, controlando um dispositivo eletrônico conectado a ele.
Podemos também acessar a porta serial usando outro programa, como o PuTTY. Para isso, abra o PuTTY (que pode ser baixado gratuitamente em http://www.putty.org/) e faça os ajustes conforme as figuras a seguir:
Em Session, clique em Serial no tipo da conexão, digite o nome da porta serial na caixa Serial line (a minha é COM 3), e a velocidade em bauds em Speed (9600 no meu caso):
Em Terminal, clique em Force On nas seções Local echo e Local line editing:
Clique no botão Open para abrir a conexão e observe as mensagens sendo enviadas do Arduíno para o PuTTY ao enviarmos o programa do exemplo 02:
Neste artigo iremos criar um projeto simples mas muito interessante: iremos fazer com que o Arduíno toque sons de frequências diversas em um alto-falante (ou outro transdutor de áudio qualquer).
Para isso usaremos a função tone do Arduíno. Essa função gera um sinal sonoro com uma frequência e duração ajustáveis, sendo que ajustaremos a frequência usando um potenciômetro e a duração via código.
Conectaremos o potenciômetro de tom ao pino de entrada analógica 0 (A0) do Arduíno, e usaremos um outro potenciômetro para controlar o volume do som que será reproduzido no alto-falante. Confira a lista de componentes necessária e o esquema do circuito:
1 Arduíno Uno1 Potenciômetro de 1KΩ
1 Potenciômetro de 10KΩ
1 Alto-falante de 8Ω (ou outro transdutor, como um buzzer)
Esquema do circuito:
Veja um desenho das conexões dos componentes ao Arduíno:
E, finalmente, o código que será utilizado:
const int pino_falante = 9; // Conectar falante ao pino 9 const int pot_freq = 0; // potenciômetro para ajuste de frequência - pino A0 void setup(){// Aqui não vai nada neste sketch} void loop(){ int ler_potenc = analogRead(pot_freq); // Ler entrada para ajuste de frequência // mapear os valores analógicos lidos para valores significativos: int frequencia = map(ler_potenc, 0, 1023, 100, 3000); // 100 Hz a 3 KHz int tempo = 300; //duração do tom, em ms tone(pino_falante, frequencia, tempo); // envia som ao falante delay(300); //pausa de 300ms }
Vamos à explicação do código empregado.
Começamos declarando duas constantes, pino_falante, que servirá para ajustar o pino digital 9 para a conexão do alto-falante, e pot_freq, que determina que o pino analógico 0 será o local de conexão do potenciômetro de mudança de tom.
Na função setup() não precisamos ajustar nada neste sketch – mas ela tem de estar lá, mesmo que vazia.
Dentro da função principal do programa (loop) começamos por declarar uma variável de nome ler_potenc, a qual receberá o retorno da chamada da função analogRead, a qual lê o valor de tensão a partir do pino pot_freq (A0). Essa leitura será utilizada para determinar a frequência do tom a ser gerado.
Na sequência declaramos uma variável chamada frequencia, que receberá o retorno da função map. A função map é usada para mapear um par de valores (no caso, o intervalo de 0 a 1023) para outro par de valores mais significativos para o programa em questão (no caso, os valores de 100 a 3000). Lembre-se que a entrada analógica tem uma resolução de 10 bits, o que significa que ela pode discriminar 1024 valores distintos de tensão. Esses valores mapeados representarão as frequências que serão geradas posteriormente, na faixa de 100 a 3000 Hz.
Declaramos então a variável inteira tempo, que receberá um valor para ajustar o tempo de duração do tom executado, em milissegundos.
A função tone será usada para gerar o tom e enviá-lo ao pino digital pino_falante (9), onde está conectado o alto-falante. Essa função recebe três parâmetros: número do pino, frequência do som em Hertz e duração do tom em milissegundos. O terceiro parâmetro é opcional – se omitido, a função tocará o tom até que seja interrompida.
E para finalizar, adicionamos um intervalo entre os sons, de 300 milissegundos, com o uso da função delay. Você pode mudar esse valor à vontade.
É isso aí! Até o próximo projeto!
Neste projeto vamos efetuar o controle de três LEDs por meio de um botão de pressão (pushbutton), de modo que quando o botão for pressionado, o estado dos LEDs mudará – se estiverem acendendo em sequência, irão parar, e se estiverem apagados, iniciarão a sequência acendendo um por um. Para que isso seja possível, vamos lançar mão do recurso de Interrupções presente no Arduino.
Para isto vamos precisar dos seguintes componentes:
Na figura a seguir temos o diagrama esquemático para as ligações dos componentes utilizados no circuito:
O Industruino é uma placa compatível com o Arduino Leonardo, acomodada em um case, e que inclui também uma área para prototipagem, um painel LCD onboard e um painel de controle de membrana. Seu objetivo primário é o uso em projetos de automação, equipamentos para registro de dados coletados, ou ainda para instalações de arte interativa, sendo uma alternativa aos tradicionais CLPs (Controladores Lógicos Programáveis) em muitas aplicações.
O Industruino, que é desenvolvido na Bélgica pela ES-Gear, foi criado por dois designers de produtos que resolveram investir no projeto após construírem um sistema de controle de acesso RFID baseado em Arduino, e verificarem que a solução construída em placas de prototipagem “não parecia a solução mais elegante para uma instalação permanente e acessível”.
No momento, a empresa comercializa três produtos, sendo dois Industruinos (PROTO e IND.I/O), e um módulo de comunicação Ethernet, que adiciona conectividade de rede ao Industruino. Os equipamentos possuem as seguintes especificações:
Vendido na forma de kit para montagem.
Os produtos podem ser adquiridos no próprio website, sendo enviados a partir de Hong Kong via HK Speedpost e Fedex para países fora da Europa, e seus valores de venda atuais são:
Nesta lição vamos conhecer mais três funções muito importantes usadas no desenvolvimento de software para o Arduino: analogRead(), analogWrite() e analogReference(). Essas funções permitem usar os pinos de entrada e saída analógicas da placa.
A função analogRead() lê o valor de um pino analógico especificado. O Arduino Uno possui um conversor analógico-digital de 10 bits e seis canais (O Arduino Mega possui 16 canais e as placas Mini e Nano, 8 canais). 10 bits significa que as tensões de entrada entre 0 e 5 volts aplicadas ao pino serão mapeadas em valores inteiros entre 0 e 1023 (210). Dessa forma, temos uma resolução de leitura de 5 V / 1024 = 4,9 mV por unidade de medida. Essa resolução é devida ao conversor analógico-digital (ADC) utilizado na placa do Arduino. Quanto maior o núemro de bits, maior será a resolução, e mais precisos os valores mensurados nos pinos. Tanto a faixa de tensão de entrada quanto a resolução dos pinos pode ser alterada com a função analogReference(), discutida mais à fernte neste artigo.
Uma entrada analógica demora cerca de 100 μs para ser lida, então a taxa máxima de leitura é de cerca de 10.000 vezes por segundo.
Essa função retorna um número inteiro entre 0 e 1023, por padrão. a figura a seguir mostra a localização dos pinos de entrada analógica em uma placa Arduino Uno:
Na figura a seguir, a localização das entradas analógicas em uma placa Arduino Mega:
Sintaxe da Função:
analogRead(pino);
Parâmetros:
pino: número do pino analógico de entrada que será lido (pinos de A0 a A5 na maioria das placas, sendo de 0 a 15 no Arduino Mega e de 0 a 7 nos Arduinos Nano e Mini).
Exemplo: Vamos efetuar a leitura de um sinal aplicado à entrada analógica A2 do Arduino, por meio de um resistor, sensor ou potenciômetro, armazenando o valor lido na variável valor e mostrando no Serial Monitor os valores lidos.:
A função analogWrite() permite escrever um valor analógico (na verdade, um sinal PWM) em um pino. Geralmente usamos essa função para ativar / desativar dispositivos conectados ao Arduino, como LEDs, atuadores, motores, entre outros.
A chamada à função analogWrite() gera um sinal de onda quadrada de uma razão cíclica (duty cicle) especificada, até que uma nova chamada à função seja realizada. A frequência do sinal PWM na maioria dos pinos é de cerca de 490 Hz. No Arduino Uno e placas similares, os pinos 5 e 6 possuem uma frequência de cerca de 980 Hz. No Arduino Leonardo os pinos 3 e 11 também possuem a frequência de 980 Hz.
Essa função opera nos pinos 3, 5, 6, 9, 10 e 11 na maioria das placas de Arduino (as que possuem os chips ATmega168 ou ATmega328). No Arduino Mega, funciona nos pinos 2 a 13 e 44 a 46. Você pode identificar facilmente esses pinos na placa por possuirem o sinal ~ ao lado do número do pino, indicando a funcionalidade de PWM presente.
Uma característica interessante dessa função é a de que não é necessário chamar a função pinMode() para configurar o pino como saída antes de chamar a função analogWrite(), e a função não retorna valor algum.
Tome cuidado para não se confundir: a função analogWrite() não tem nada a haver com os pinos analógicos da placa, nem com a função analogRead()!!!
Sintaxe da Função:
analogWrite(pino, valor);
Parâmetros:
pino: número do pino que receberá o sinal de saída
valor: razão cíclica (duty cicle), um valor entre 0 e 255 (de sempre desligado a sempre ligado)
Exemplo: Vamos iluminar um LED de acordo com um valor de entrada lido a partir de um potenciômetro. Em outas palavras, vamos construir um dimmer extremamente simples. O potenciômetro será ligado ao pino 3, um pino de entrada analógica, e o LED ao pino de saída PWM 10. A variável valor irá armazenar o valor lido a partir do potenciômetro e seu valor será usado para definir o grau de iluminação do LED.
Note que ao chamarmos a função analogWrite(), definimos o pino que será escrito (LED, pino 10), e o valor que será escrito é o valor lido do potenciômetro dividido por 4. Fazemos essa divisão pois a entrada recebe valores que vão de 0 a 1023, porém a saída da função somente pode entregar valores entre 0 e 255, ou seja, um quarto da resolução de leitura.
A função analogReference() é utilizada para configurar a tensão de referência usada nas entradas analógicas – mais precisamente, o valor superior da faixa de valores de entrada. Quando o Arduino realiza uma leitura analógica, ele efetua ma comparação entre a tensão medida no pino analógico utilizado com um valor de tensão denominado Tensão de Referência Analógica, que por padrão é o valor de tensão de operação normal da placa, 5 volts.
Assim, como vimos anteriormente, ao usar uma tensão de referência de 5V, cada unidade retornada na leitura de valores pela função analogRead() terá o valor de 4,9mV (0,00488V, mais precisamente). porém, algumas vezes precisamos medir valores de tensão em uma faixa distinta, por exemplo, entre 0 e 3V, ou entre 0 e 4,5V. Nesse caso, para que o ADC saiba qual é o valor superior da faixa (o inferior é zero), usamos a função analogReference(). O valor mais baixo de tensão de referencia possível no Arduino é de 1,1V.
Desta forma, se, por exemplo, precisarmos medir valores em uma faixa de tensão entre 0 e 3V, ajustamos o valor de referência para 3V, e a partir daí cada unidade de medida do ADC será interpretada pelo Arduino como sendo 3 V / 1024 = 2,9 mV (0,0292V) por unidade de medida.
Essa função possui cinco opções de configuração, que são as seguintes:
Esta função não retorna nenhuma informação ao programa. Abaixo vemos a localização do pino AREF em uma placa Arduino Uno:
Sintaxe da Função:
analogReference(tipo);
Parâmetros:
tipo: é o tipo da referência que será usada, podendo ser DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2v56 ou EXTERNAL
Um ponto importante a se notar quando a função analogReference() for usada é de que você não deve usar valores menores que 0V ou maiores do que 5V com a opção dereferência externa no pino AREF. Além disso, se for usar a opção EXTERNAL não se esqueça de configurar essa opção ANTES de chamar a função no programa, sob pena de danificar o chip microcontrolador de seu Arduino.
Exemplo: Precisamos ligar um sensor ao Arduino que gera sinais de saída entre 0 e 4V. Para que a precisão das leituras seja a melhor possível, vamos alterar a opção de tensão de referência analógica para o intervalo entre 0 e 4V, usando uma fonte de tensão externa:
Vamos explorar neste artigo as funções Tone() e noTone(), que permitem gerar tons de frequências pré-estabelecidas e interromper a execução dos tons, respectivamente.
A função Tone() gera um sinal de onda quadrada de uma frequência especificada, com 50% de ciclo de trabalho (duty cicle) em um pino da placa. É possível especificar também uam duração para o sinal gerado, o qual sem essa especificação continua a ser executada até que uma chamada à função NoTone() seja realizada.
Geralmente usamos essa função para gerar um tom de áudio (dapi o nome Tone), o qual pode ser reproduzido em um alto-falante ou transdutor piezoelétrico (buzzer).
Somente é possível gerar um tom por vez. Se houver um tom sendo tocado em um pino do Arduino, uma chamada à função Tone() em outro pino não surtirá efeito. Se a chamada à função for realizada no mesmo pino onde há um tom tocando, a frequência do tom é ajustada de acordo. Caso você queira tocar um som em outro pino, quando já houver um tom tocando em um pino diferente, primeiramente você deverá chamar a função NoTone() no pino atual para interromper o som, antes de tocar o próximo.
Ao usar a função Tone() tome cuidado, pois ela pode interferir com as saídas PWM dos pinos 3 e 11, em placas que não sejam o Arduino Mega.
A tabela a seguir as frequências mínima e máxima que podem ser geradas com essa função, em vários modelos de placas Arduino:
Placa | Frequência mín., em Hz | Frequência máx., em Hz |
Uno, Mega, Leonardo | 31 | 65535 |
Zero | 41 | 275000 |
Due | Não disponível | Não disponível |
Sintaxe:
tone(pino, frequência)
tone(pino, frequência, duração)
Parâmetros
pino: o pino no qual o tom será gerado
frequência: a frequência do tom em Hz, um número do tipo unsigned int
duração: duração do tom em milissegundos, um valor do tipo unsigned long. Esse parâmetro é opcional.
A função noTone() interrompe a geração do sinal de onda quadrada (“tom”) disparado pela função Tone(). Se não houver nenhum tom sendo gerado, chamar a função noTone não tem efeito algum.
Sintaxe
noTone(pino)
Parâmetros
pino é o número do pino no qual o tom gerado será interrompido.
Exemplo de uso das funções Tone() e noTone(): Vamos gerar uma nota “Lá” por um segundo, em seguida uma nota “Sol’ por mais um segundo, e pausar por mais um segundo, repetindo todo o processo na sequência.
Para isso precisamos saber as frequências das notas que serão geradas. Vamos usar as frequências a seguir:
[youtube https://www.youtube.com/watch?v=rfaCcTMitvs]
Uma biblioteca é um trecho de software que fornece funcionalidade específica a um programa, como por exemplo a capacidade de escrever em um display de LCD ou de controlar a posição de um servomotor. O uso de uma biblioteca simplifica o desenvolvimento de aplicações, pois o código da biblioteca já está pronto, e só precisa ser incorporado ao programa em desenvolvimento para que suas funções possam ser acessadas e utilizadas pelo desenvolvedor. Assim, podemos estender o uso do Arduino incorporando bibliotecas específicas durante o desenvolvimento de um sketch.
Na plataforma Arduino existem três tipos diferentes de bibliotecas de software disponíveis:
Algumas das bibliotecas necessitam de um hardware especial para serem utilizadas, muitas vezes na forma de Shields. Vamos entender a seguir as aplicações de cada tipo de biblioteca citada na lista anterior.
A biblioteca essencial vem instalada na IDE do Arduino e é imprescindível para o desenvolvimento de programas, desde os mais simples (como piscar um LED) até projetos complexos, como realizar automação de uma residência (em conjunto com outras bibliotecas). Desta forma, a programação do Arduino fica muito simplificada, pois o programador não tem a necessidade de entender como o código da biblioteca funciona internamente – basta saber como usá-la.
Algumas funções comuns fornecidas pela biblioteca core são as funções digitalRead,digitalWrite, Serial.begin e analogRead, entre outras.
As bibliotecas padrão são incluídas na instalação do IDE do Arduino, porém não são incluídas por padrão nos projetos que você cria, pois o Arduino possui recursos de memória limitados, e assim essas bibliotecas somente são incluídas de forma explícita quando você necessita delas. A inclusão de uma biblioteca padrão é feita por meio de uma declaração #include no início do código do seu sketch. Por exemplo, se você quiser incluir em um sketch a biblioteca padrão Stepper, usada para permitir o controle de motores de passo, você deve incluir a seguinte declaração no início de seu código:
#include
Note que o nome da biblioteca deve estar envolvido entre os caracteres < e >, finaliza com a extensão .h e você não deve usar o ponto-e-vírgula no final desta linha. Após a inclusão da biblioteca, você pode usar as funções que ela codifica em seu programa. Para saber quais são essas funções e como utilizá-las, você deve consultar a documentação específica da biblioteca.
As bibliotecas padrão do Arduino são:
Existem algumas outras bibliotecas padrão que somente estão disponíveis em alguns modelos específicos de Arduino, como por exemplo a biblioteca AudioZero, que permite reproduzir arquivos de áudio de um cartão SD em uma placa Arduino Zero.
Veremos exemplos do uso de cada uma destas bibliotecas em projetos ao longo de nossas lições de Arduino.
Essas bibliotecas são disponibilizadas por desenvolvedores diversos que contribuem voluntariamente com software para a plataforma, e não são distribuídas por padrão com o IDE do Arduino. Para usá-las, você precisa baixá-las e então efetuar sua instalação por meio do IDE. Elas oferecem funções adicionais a bibliotecas existentes ou novas funcionalidades não presentes em nenhuma biblioteca padrão, permitindo estender o uso do Arduino de forma praticamente ilimitada.
Para importar uma nova biblioteca você deve efetuar os seguintes passos (no IDE versão 1.6.6):
Aguarde enquanto a biblioteca é baixada e instalada. Após o término da instalação, verifique se tudo correu bem clicando no menu Sketch -> Incluir Biblioteca, e role para baixo o submenu, até a seção “Recommended” ou “Contributed“, e você deverá encontrar a biblioteca adicionada lá:
É isso aí, biblioteca adicionada e prontinha para uso!
Caso a biblioteca que você precisa não esteja presente no Gerenciador de Bibliotecas, você ainda poderá instalá-la baixando-a da Internet e efetuando a importação da biblioteca. Para isso, siga os passos a seguir:
Clique em OK para inclui-la no IDE. Aparecerá a mensagem “Biblioteca adicionada às suas bibliotecas. Veja o menu “Incluir Biblioteca” na parte inferior da janela da IDE.
Agora é só usar a nova biblioteca em seus projetos, quando necessário.
Você pode desenvolver suas próprias bibliotecas para o Arduino, e também pode instalar as bibliotecas manualmente. Veremos esse processo em outro artigo.
Neste artigo estudamos sucintamente as bibliotecas de software do Arduino. Como citado no texto, muitas das bibliotecas atendem a um determinado hardware específico, como um shield ou um sensor, e na próxima lição iremos conhecer os Shields para Arduino.
No artigo anterior falamos sobre as Bibliotecas no Arduino, que podem ser utilizadas para expandir a funcionalidade das placas. Agora vamos explorar os Shields, que são uma outra forma de aumentar as funções que um Arduino pode desempenhar – porém, desta vez, usando dispositivos de hardware.
Suponha que você queira controlar seu Arduino remotamente, usando uma conexão WiFi, Bluetooth ou XBee. Como proceder nestes casos, já que as placas do Arduino (e seus clones) não possuem essas funcionalidades? Neste caso, lançamos mão dos Shields – placas de hardware que podem ser plugadas no Arduino, contendo circuitos eletrônicos que permitem desempenhar as funções citadas, e muitas outras, dependendo da placa. É até possível empilhar shields uns sobre os outros, pois muitos deles possuem seus próprios conectores iguais aos do Arduino, de modo que é possível acrescentar mais de uma funcionalidade simultânea à sua placa.
Frequentemente, um shield necessita de bibliotecas de software específicas para funcionar corretamente, e você deve instalá-las no IDE do Arduino, baixando-as do website do fabricante do Shield. Algumas inclusive estão presentes como bibliotecas padrão do Arduino.
Você pode adquirir os shields prontos para usar, ou na forma de kits para montagem, caso no qual você mesmo monta e solda os conectores e outros componentes na placa do shield, o que geralmente barateia seu preço. Ou ainda, se você tiver conhecimentos adequados de eletrônica, pode até mesmo criar seus próprios shields a partir do zero, de modo a acrescentar a funcionalidade que bem entender a seu Arduino.
A seguir apresento uma lista (não completa) com os shields mais comuns usados em projetos envolvendo Arduinos:
Abaixo um shield de motor Duinopeak, que permite controlar 2 motores de passo e 4 motores DC:
Vista lateral do shield: note o comprimento dos pinos inferiores, usados para conectar a placa sobre o Arduino:
E veja o Duinopeak com vários motores conectados:
Esse shield é baseado no chip Ethernet Wiznet W5100, suportado pela biblioteca oficial do Arduino.
E abaixo um shield WiFi da ElecFreaks:
E a seguir, outro exemplo de shield USB, da Duinopeak:
Para utilizar um shield basta conectá-lo sobre a placa do Arduino, efetuar as conexões elétricas necessárias com outros componentes, importar sua biblioteca, e escrever o programa (sketch). Veja na figura a seguir um shield Bluetooth da Adafruit conectado sobre um Arduino Uno:
Veja que o shield se encaixa perfeitamente sobre a placa do Arduino, e há a possibilidade de soldarmos conectores no shield para que seja possível expandir as conexões para os pinos do Arduino abaixo. Muitos shields já vem com os pinos soldados, bastando então efetuar conexões como necessário para o projeto. Desta forma, é possível inclusive empilhar shields um sobre o outro, expandindo bastante as funcionalidades da placa. A figura a seguir mostra dois shields empilhados sobre uma placa:
Vimos neste artigo diversos shields que podem ser usados em conjunto com um Arduino; existem muitos outros disponíveis. Em nossos projetos com Arduino iremos explorar de forma mais aprofundada esses e outros shields, conhecendo suas peculiaridades e o modo de escrever código para usá-los.
[youtube https://www.youtube.com/watch?v=mQdD82Vq3oM]
Os LEDs RGB possuem três LEDs em um único encapsulamento: um vermelho (R, red), um verde (G, green) e um azul (B, blue), com seus anodos ou seus catodos conectados entre si (configurações anodo comum ou catodo comum). Portanto, possuem quatro terminais, uma para cada cor e um comum.
Neste projeto vamos aprender a controlar um LED RGB, de modo que seja possível controlar as cores que ele exibirá. Faremos um sequencial, no qual o LED piscará com uma cor diferente por vez, e ainda vamos incrementar o código controlando a intensidade do brilho – a cada piscada, o LED brilhará um pouco mais intenso, até atingir um valor máximo, e então voltará ao brilho mínimo, reiniciando o processo.
O esquema a seguir mostra a ligação de um LED RGB de catodo comum a um Arduino, da forma como trabalharemos no projeto. Note que serão usados três resistores limitadores de corrente, um para cada LED interno do conjunto.
Os resistores R1, R2 e R3 podem ser resistores de 220 Ω, e o LED utilizado é um LED RGB de catodo comum (conectado ao GND). Cada terminal do LED será conectado a um pino digital do Arduino, sendo que conectaremos o terminal vermelho ao pino 3, o verde ao pino 5 e o azul ao pino 6, que são pinos capazes de fornecer saída em PWM, que precisaremos para controlar a intensidade de brilho do LED.
Veja na imagem abaixo o conjunto montado em uma breadboard, com a cor azul acesa no LED:
Na listagem abaixo temos o código a ser utilizado neste projeto. Usaremos a funçãoanalogWrite() para controlar qual LED é aceso, e qual a intensidade de brilho com o qual ele emitirá luz.
const int vermelho = 3; // configurar pinos ligados ao LED
const int verde = 5; const int azul = 6; int cor = 0; // valor de 0 a 255 para representar a matiz (graduação de cor)
void setup() {
// sem declaração; usando função analogWrite() }
void loop() {
// escrever os valores RGB nos pinos: analogWrite(vermelho, cor); delay (500); analogWrite(vermelho, 0); delay (100); analogWrite(verde, cor); delay (500); analogWrite(verde, 0); delay (100); analogWrite(azul, cor); delay (500); analogWrite(azul, 0); delay (100); cor = cor + 15; // incrementar a intensidade da cor
if (cor > 255) { cor = 0; delay(10); } } |
pós carregar o código no Arduino, observe que o LED piscará, acendendo uma cor por vez em sequência, e começando com um brilho fraco, o qual irá aumentar ao longo do tempo. Ao atingir o valor máximo de brilho, o LED se apaga e o processo é reiniciado.
Note que neste projeto foi usado um LED RGB cristal (transparente), no qual podemos ver claramente a distinção entre os LEDs coloridos internos. Se você quiser misturar as cores para obter novos tons, use um LED RGB difuso. Trataremos disso em um próximo projeto.
Neste projeto vamos aprender a ler um valor de tensão usando um pino analógico. Utilizaremos um potenciômetro para ajustar esse valor, o qual poderia também ser fornecido a partir de outra fonte, como um sensor, por exemplo.
Os valores lidos podem ser usados para disparar eventos, como acionar um alarme, motor ou outro elemento qualquer. Neste tutorial os valores lidos serão exibidos no monitor serial.
Abaixo temos o diagrama esquemático a ser utilizado:
É um projeto bem simples. Vamos precisar de um potenciômetro de 10 kΩ (outros valores próximos também servirão), e de um resistor de baixo valor (47 Ω são suficientes) para evitar que uma corrente em excesso possa danificar seu Arduino.
Vamos começar conectando o potenciômetro entre os pinos 5V e GND, e seu terminal central (divisor de tensão) será conectado ao pino analógico A0, a partir de onde será feita a leitura do valor da tensão elétrica.
Abaixo temos o código utilizado no projeto:
Um potenciômetro possui três terminais. Dois desses terminais são conectados a um material resistivo interno, e o terceiro terminal é conectado a um eixo giratório que pode ser rotacionado para fazer contato ao longo do material resistivo.
Geralmente esse é o terminal central. Conforme o potenciômetro gira, a resistência entre o terminal central e os outros terminais muda, aumentando em relação a um dos terminais e diminuindo em relação ao outro terminal.
Desta forma, se aplicarmos uma tensão elétrica entre os terminais laterais do potenciômetro, podemos variar sua resistência em relação ao terminal central, provocando uma queda de tensão cujo valor irá depender da posição do eixo giratório.
Essa tensão será lida no pino A0 do Arduino, e poderemos ler no monitor serial um valor numérico associado, que irá variar de 0 para quando a tensão estiver em seu nível mais baixo até um valor máximo (1023), para quando a tensão estiver próxima de 5 volts.
Note que não será exibido o valor da tensão em si, pois não se trata de um voltímetro, mas sim um valor numérico mapeado a partir da leitura do nível de tensão em A0.
Vamos usar o monitor serial para exibir esse valor numérico proporcional à tensão elétrica lida no pino A0. Conforme ajustamos o potenciômetro, o nível de tensão será modificado, e o valor exibido no computador será alterado de acordo. A leitura é feitam em intervalos de 100 ms, ajustado pela função delay().
A figura a seguir ilustra o circuito montado em uma matriz de contatos:
Após compilar e carregar o código no Arduino, abra o monitor serial clicando em Ferramentas -> Monitor serial no Arduino IDE (ou pressione a combinação de teclas Ctrl + Shift + M), e observe que os valores capturados na entrada analógica aparecerão. Movimente o eixo do potenciômetro e você verá os valores sendo alterados de acordo com a rotação aplicada, como podemos ver na captura de tela abaixo:
Na figura podemos ver que eu variei a rotação do potenciômetro de um valor próximo ao máximo até zero, e depois de volta ao valor máximo, ou seja, no terminal central do potenciômetro fomos da tensão máxima até 0V, e de volta à tensão máxima (aproximadamente 5V, fora a queda no resistor de 47Ω).
Você pode aprender mais sobre a função analogRead() neste artigo, que também traz informações sobre as funções analogWrite() e analogReference().
É isso aí! Vamos aprimorar essa técnica nos próximos projetos, a fim de efetuarmos a leitura de sinais de sensores e o controle de cargas a partir dos valores lidos.
A função map() permite efetuar o mapeamento de um intervalo numérico em outro intervalo numérico desejado. Isso significa que em um intervalo numérico que vai de um valor mínimo até um valor máximo, o valor mínimo será mapeado em um novo_mínimo, e o valor máximo será mapeado em um novo_máximo, e os valores intermediários serão remapeados em novos valores intermediários, de forma correspondente.
map(valor,Mínimo_Atual,Máximo_Atual,Novo_Mínimo,Novo_Máximo);
Onde:
Exemplo: Queremos mapear os valores em um intervalo que vai de 0 a 1023 para um novo intervalo entre 0 e 200. Os valores atuais serão lidos a partir de uma variável chamada valor, e os novos valores mapeados serão gravados em uma variável de nome novo_valor:
novo_valor = map(valor,0,1023,0,200);
A função também pode mapear valores de forma inversa, bastando para isso trocar a posição dos valores mínimo e máximo novos:
novo_valor = map(valor,0,1023,200,0);
A função map() opera somente com números inteiros, não retornando valores de ponto flutuante (fracionários). Se um número fracionário for gerado, ele será truncado antes de ser retornado. A função não arredonda os valores mapeados.
Internamente, a função map() é codificada da seguinte forma:
Vamos aplicar a função map() em um projeto simples. Vamos usar o mesmo circuito que foi utilizado anteriormente quando mostramos como ler um valor de tensão aplicado a um pino analógico. Os valores retornados, que por padrão estão no intervalo entre 0 e 1023 (resolução de 10 bits dos pinos analógicos), serão remapeados para um outro intervalo, de 8 bits (valores entre 0 e 255). Os valores lidos serão exibidos no monitor serial.
Abaixo temos o diagrama esquemático a ser utilizado:
Usaremos um potenciômetro de 10 kΩ (outros valores próximos também servirão), e um resistor de baixo valor (47 Ω são suficientes) para evitar que uma corrente em excesso possa danificar o Arduino.
Vamos começar conectando o potenciômetro entre os pinos 5V e GND, e seu terminal central (divisor de tensão) será conectado ao pino analógico A0, a partir de onde será feita a leitura do valor da tensão elétrica. Para maiores informações sobre o funcionamento do circuito utilizado, consulte o projeto “Lendo valores analógicos a partir de um potenciômetro“.
Abaixo temos o código utilizado no projeto:
const int potenciometro = 0;
int valor = 0.0;
int valor_mapeado;void setup() {
Serial.begin(9600);
}
void loop() {
valor = analogRead(potenciometro);
valor_mapeado = map(valor,0,1023,0,255);
Serial.println(valor_mapeado);
delay(200);
}
Após compilar e carregar o código no Arduino, abra o monitor serial clicando em Ferramentas -> Monitor serial no Arduino IDE (ou pressione a combinação de teclas Ctrl + Shift + M), e observe que os valores capturados na entrada analógica aparecerão. Movimente o eixo do potenciômetro e você verá os valores sendo alterados de acordo com a rotação aplicada, como podemos ver na captura de tela abaixo:
Na figura podemos ver que eu variei a rotação do potenciômetro de um valor próximo ao máximo até zero, e depois de volta ao valor máximo, ou seja, no terminal central do potenciômetro fomos da tensão máxima até 0V, e de volta à tensão máxima (aproximadamente 5V, fora a queda no resistor de 47Ω). Os valores mostrados estão no intervalo entre 0 e 255, e não entre 0 e 1023, como seria o normal, pois estão senado remapeados pela função.
[youtube https://www.youtube.com/watch?v=NxrlQza-vG0]
Vamos analisar neste artigo as associações de capacitores em série e em paralelo.
Quando os capacitores são associados em paralelo, somamos suas capacitâncias, da mesma forma que fazemos com resistores associados em série. Deste modo:
Ctot = C1 + C2 + … + Cn
Podemos pensar num arranjo de capacitores em paralelo como se fossem um único capacitor com capacitância maior. Porém, a maior tensão que pode ser aplicada a um arranjo de capacitores em paralelo com segurança é limitada pela tensão do capacitor com menos valor de tensão suportada.
Veja um exemplo a seguir de capacitores associados em paralelo:
Neste exemplo temos que Ctot = C0 + C1 + C2 = 10μF +10μF + 22μF = 42μF.
Quando conectamos dois ou mais capacitores em série, a capacitância total obtida será sempre menor do que o valor do menor capacitor do conjunto. Usamos uma fórmula para calcular a capacitância equivalente em série que é similar à fórmula da resistência em paralelo:
Geralmente conectamos capacitores em série em um circuito para que o conjunto possa suportar uma tensão elétrica maior do que as tensões individuais nos capacitores, pois a tensão elétrica será diferente em cada capacitor. Veja um exemplo de associação em série de capacitores:
Neste exemplo temos que 1/Ctot = 1/C0 + 1/C1 + 1/C2, ou seja:
1/Ctot = 1/10 + 1/10 + 1/22 = 4,07μF.
Já as tensões em cada capacitor podem ser calculadas individualmente com a fórmula (Ctot / Cn) * Vin. Por exemplo, a tensão sobre os terminais de C1 será de (4,07 / 10) * 12 = 4,884V. Lembre-se de que a tensão em um dado capacitor não deve nunca exceder seu valor nominal de tensão, pois isso acarretará a destruição do componente.
[youtube https://www.youtube.com/watch?v=u70egVhjpcc]
Um Divisor de Tensão resistivo é um circuito formado por uma associação em série de resistores, com o intuito de obter valores de tensão diferentes (e menores) do valor da tensão da fonte que alimenta esse circuito. Para isso podemos usar a partir de dois resistores ligados em série e uma fonte de alimentação para obter uma tensão elétrica que será uma fração da tensão de entrada.
A tensão total aplicada (Vs) é dividida e sofre uma queda de forma proporcional em todos os resistores desse circuito em série. O valor da queda de tensão em um resistor é proporcional ao valor de sua resistência, e quanto maior a resistência do componente, maior será a queda de tensão, enquanto um valor de resistência menor impões uma queda de tensão também menor.
Fórmula
Podemos calcular o valor da queda de tensão em um resistor usando uma fórmula simples. É possível efetuar esse cálculo inclusive sem conhecer o valor da corrente do circuito. A fórmula que usaremos é a seguinte:
Onde:
Vn = Valor da queda de tensão sobre um resistor n
Rn = Valor da resistência do resistor n
Rt = Resistência total da associação
Vs = Tensão de entrada do circuito.
Vamos a um exemplo. Dado o circuito a seguir, calcule o valor da tensão que será medida sobre o resistor R2:
A resistência total da associação e série é de 100Ω + 150Ω + 220Ω = 470Ω . Aplicando a fórmula temos que:
VR2 = (150 / 470) * 10 = 3,19V.
Portanto, temos que a queda de tensão sobre um resistor (ou grupo de resistores) em um circuito em série é igual à razão entre a resistência desse resistor e a resistência total, multiplicada pela tensão de entrada.
Aplicações
Os divisores de tensão se prestam a inúmeras aplicações em eletricidade e eletrônica. Por exemplo, podemos construir uma fonte de alimentação para fornecer valores de tensão variados a partir de uma tensão de entrada única, de modo a não precisarmos de diversas fontes distintas, uma para cada tensão.
Um potenciômetro é um resistor variável que pode ser usado como divisor de tensão ajustável, para criar tensões de referência, medir posicionamento em um joystick, ajustar níveis de áudio e muitas outras aplicações.
Em muitas lições posteriores usaremos esses conceitos de divisores de tensão, por isso é muito importante estudar esse tema com afinco.
[youtube https://www.youtube.com/watch?v=ysuGUCgepn8]
Definimos a condutância de um condutor como sendo o inverso de sua resistência elétrica. Simbolizamos a condutância com a letra G. Desta forma, se R é a resistência e G é a condutância de um condutor qualquer submetido a uma tensão elétrica V e atravessado por uma corrente elétrica I, temos que:
resistência indica a oposição de um material condutor à passagem da corrente elétrica, e a condutância, inversamente, indica a facilidade com a qual o condutor deixa fluir a corrente elétrica.
Unidade de medida
A unidade de medida da condutância no S.I. é o siemens, abreviado pela letra S, em homenagem ao inventor alemão Werner von Siemens . Quanto maior o valor em siemens de um condutor, melhor ele conduz a corrente elétrica, pois mais baixa é sua resistência elétrica.
A condutância de um condutor (assim como a resistência) depende de alguns fatores, como o formato físico do condutor (geometria), o material de que ele é feito e a temperatura do condutor, entre outras..
Vejamos um exemplo de cálculo:
Exemplo 01: Dado um elemento condutor cuja resistência é de 125 Ω, calcule sua condutância.
Exemplo 01: Dado um elemento condutor cuja resistência é de 125 Ω, calcule sua condutância. G = 1/R = 1/125 = 0,008 S |
E teremos então um material Supercondutor, um tipo de material muito especial, no qual não há aquecimento joule e, portanto, não há perda de energia por dissipação de calor.
Observação: Não devemos confundir a condutância elétrica com a condutividade de um material, que é característica específica de cada material, e é o oposto da resistividade. Podemos calcular a condutância com base na condutividade, de acordo com a fórmula abaixo:
onde a condutância G equivale ao produto da condutividade σ pela área A da seção transversal do condutor, dividida pelo comprimento l. Essa é uma relação similar à existente entre a resistência elétrica e a resistividade de um material condutor. Vamos estudar esses conceitos nas próximas lições de nosso curso de eletrônica.
[youtube https://www.youtube.com/watch?v=rH0YLDlGjn8]
Em um condutor qualquer, sua resistência elétrica depende de alguns fatores, como o comprimento do condutor, a área de sua secção transversal e de um parâmetro denominado resistência específica do material, também chamada de resistividade.
Baseando-se nesses parâmetros, podemos calcular a resistência de um condutor usando a fórmula conhecida como Segunda lei de Ohm:
Onde temos que:
R = resistência elétrica do condutor, em ohms
l = comprimento do fio, em metros (m)
A = área da secção reta do fio, em m2
ρ = resistência específica do material, em Ωm (ohms por metro)
A letra grega ρ (rho) representa a resistividade de um material, a qual permite comparar a resistência elétrica de diferentes condutores independentemente de seus comprimentos ou áreas. Valores mais altos de resistividade indicam que o material apresenta maior resistência elétrica que outro material de iguais dimensões e menor resistividade.
Abaixo temos uma tabela com valores de resistividade de diversos materiais:
Material |
Resistividade ρ (em Ωm) |
Alumínio | 2,82 x 10-8 |
Ouro | 2,44 x 10-8 |
Prata | 1,59 x 10-8 |
Cobre | 1,72 x 10-8 |
Ferro | 10,0 x 10-8 |
Platina | 10,6 x 10-8 |
Chumbo | 0,22 x 10-6 |
Tungstênio | 5,6 x 10-8 |
Níquel-cromo | 100 x 10 -8 |
Latão | 7 x 10-8 |
Grafite (carbono) | 3,5 x 10-5 |
Silício | 640 |
Vidro comum | entre 1010 e 1014 |
Enxofre | 1015 |
Borracha (neoprene) | 109 |
Teflon | 1014 |
Água pura | 2,5 x 105 |
Pele humana | aprox. 5,0 x 105 |
Podemos notar pela tabela que a resistividade dos bons condutores, como os metais cobre, alumínio e prata, é da ordem de 1021 vezes menor do que a resistividade de materiais isolantes, como o Teflon e o Vidro.
O inverso da resistividade é a condutividade elétrica, simbolizada pela letra grega σ (sigma), e calculada pela fórmula a seguir:
A unidade de medida da condutividade elétrica é o siemens por metro (S/m).
Vamos ver alguns exemplos de cálculos de resistividade e condutividade:
Exemplo 01: Vamos determinar a resistência de duas barras de materiais de secção circular, uma de cobre e outra de grafite, ambas com um comprimento de 1 metro e com 2 mm de diâmetro. Consultando a tabela anterior, temos que as resistividades dos materiais são:
Cobre: 1,72 x 10-8 Ωm
Grafite: 3,5 x 10-5 Ωm
Vamos aos cálculos:
a.) Para o cobre:
Temos a fórmula final para o nosso exemplo. Agora vamos aplicar o valor das resistências específicas dos materiais de acordo com a tabela anterior. Para o cobre a resistência específica é de 1,72 x 10-8 Ωm. Aplicando na fórmula temos:
Já para o grafite, cuja resistência específica é de 3,5 x 10-5 Ωm, teremos:
Repare que a resistência da barra de grafite é muito maior – cerca de 1976 vezes – do que a da barra de cobre, pelo fato do cobre ser um excelente condutor elétrico, e o grafite ser um condutor pobre (mas não é um isolante!).
Exemplo 02: Vamos determinar a resistência de um condutor de alumínio, cuja área da seção transversal é de 2,1 mm2 e o comprimento é de 27 m.
Resolução: Já temos a área da seção transversal calculada, então vamos aplicar os dados à fórmula geral da resistividade. A resistência específica do alumínio, de acordo com nossa tabela, é de 2,82 x 10-8Ωm.
Então:
Exemplo 03: Calcule a condutividade da barra de cobre analisada no exercício 01.
No exercício 01 calculamos a resistência de uma barra de cobre de 1m de comprimento por 2mm de diâmetro. Para calcularmos sua condutividade, basta calcular o inverso de sua resistividade – e não o inverso da resistência elétrica, que é chamada de Condutância – cuidado para não confundir os termos!
A resistência específica do cobre é de 1,72 x 10-8 Ωm. Então temos:
Algumas observações importantes sobre a resistividade elétrica:
[youtube https://www.youtube.com/watch?v=w-kEIyFwf4I]
Definimos como Corrente Elétrica o fluxo de cargas elétricas que passam por uma seção de um condutor por unidade de tempo. Simbolizamos a corrente elétrica com a letra I maiúscula, e não com a letra C, que corresponde à unidade de carga elétrica Coulomb.
Energia, de várias formas (calor, luz, magnetismo) pode fazer com que um elétron seja liberado da camada de valência de um átomo. Quando o átomo perde um elétron dessa forma, ele deixa de ser eletricamente neutro e passa a ser conhecido como um íon positivo, pois agora possui uma carga elétrica total positiva – possui mais prótons do que elétrons. Já os elétrons liberados tendem a se deslocar a átomos próximos, os quais acabam com mais elétrons do que prótons, transformando esses átomos em íons negativos.
Vamos entender melhor como esse fenômeno ocorre. Suponha dois corpos carregados eletricamente, um com excesso de cargas negativas (excesso de elétrons) e o outro com excesso de cargas positivas (falta de elétrons), como mostrado na figura a seguir:
Vamos conectar esses dois corpos usando um fio ou uma barra de um material condutor, como cobre, prata ou alumínio, conforme segue:
Ao conectarmos os dois corpos por meio de um condutor, criamos um caminho para que as cargas elétricas possam fluir. O corpo da esquerda possui mais elétrons que o corpo da direita – mais cargas elétricas negativas, ou íons negativos (com excesso de elétrons). O condutor em si é neutro, pois seus átomos possuem a mesma quantidade de elétrons e prótons.
Os elétrons extras na camada mais externa dos íons negativos (corpo da esquerda) são atraídos pelos íons positivos do corpo da direita, além de sofrerem repulsão dos elétrons em excesso dos próprios íons negativos. Isso faz com que um elétron em um dos íons negativos “salte” da órbita do átomo onde se encontra e acabe em um átomo adjacente mais à direita, no metal do condutor, conforme vemos na figura a seguir:
Agora o átomo do fio condutor possui um elétron extra, o que o transforma também em um íon negativo, e o átomo que cedeu esse elétron a ele se tornou neutro, recebendo um novo elétron proveniente de outro íon negativo próximo a ele no corpo carregado.
Os elétrons no fio condutor sentem a atração dos íons positivos no corpo da direita, além da repulsão dos elétrons em excesso no corpo da esquerda, e eventualmente o elétron extra adquirido pelo condutor salta para outro átomo adjacente, e então mais outro, e outro, provocando um movimento contínuo de elétrons fluindo da esquerda para a direita. Isso não ocorre com apenas um elétron por vez na realidade, mas sim com bilhões e bilhões deles em um movimento contínuo, como mostra a figura a seguir:
Este fluxo de elétrons é o que denominamos como Corrente Elétrica. Podemos resumir esse fenômeno dizendo que a partir do momento em que existe uma força ou “pressão” produzida pelas cargas positivas e negativas, ela fará com que os elétrons fluam do ponto mais negativo para o mais positivo. O corpo positivo possui uma deficiência de elétrons, e o lado negativo possui um excesso de elétrons, e um fluxo contínuo se dará entre esses pontos (desde que haja contato entre eles, por meio de um condutor). A quantidade de corrente elétrica que flui entre esses pontos é mensurável e calculável, como veremos a seguir.
Para explorarmos mais a fundo esse conceito, definimos ΔQ como a quantidade de cargas que atravessam uma área S de um condutor em um intervalo de tempo Δt, de modo que a corrente média Imed é definida como:
Imed = ΔQ / Δt
Como a quantidade de carga elétrica é medida em Coulombs e a unidade de tempo adotada é o segundo, medimos a corrente elétrica em Coulombs por Segundo; porém, a unidade de medida de corrente elétrica padrão que usamos no dia a dia é chamada de Ampère, representado pela letra A. Desta forma,
O Ampère é uma unidade relativamente grande de corrente, por isso em eletrônica comumente usamos seus submúltiplos, como mostra a tabela a seguir:
Submúltiplo | Símbolo | Valor | N. Científica |
miliampère | mA | 0,001A | 1 x 10-3 A |
microampère | µA | 0,000001A | 1 x 10-6 A |
nanoampère | nA | 0,000000001A | 1 x 10-9 A |
picoampère | pA | 0,000000000001A | 1 x 10-12 A |
Se uma corrente de 1A atravessa um condutor de cobre, o número de elétrons que passa por uma seção transversal do fio em um segundo é igual a um Coulomb por segundo. Sabendo que um elétron possui uma carga de –1,602×10-19C, e calculando o número de cargas elétricas (elétrons) em um Coulomb temos que:
Portanto, 1 Ampère equivale ao fluxo de 6,242 x 1018 elétrons em um segundo passando por uma seção de um condutor.
No cálculo o número resultante é negativo porque os elétrons, na verdade, fluem na direção oposta da corrente definida convencionalmente, e lhes é atribuída carga negativa. Porém, todas as fórmulas usadas em eletrônica consideram que a corrente I é composta de cargas positivas. Seguiremos essa convenção normal – não fará diferença alguma nos resultados finais de nossos cálculos.
Vamos agora a um exemplo de cálculo:
R.: A carga que atravessa esse condutor é de:
ΔQ = I x Δt = 2A x 3s = 6C (6 Coulombs).
Um elétron possui uma carga em módulo (sem o sinal) de 1,602 x 10-19C, portanto:
número de elétrons = carga elétrica / carga de um elétron = 6 / 1,602 x 10-19C = 3,745 x 1019elétrons.
Abaixo temos uma tabela que mostra, de forma aproximada, os valores de corrente elétrica que são consumidos por diversos dispositivos eletro-eletrônicos comuns:
Dispositivo | Corrente consumida |
LED | 20mA |
Ventilador | 1A |
Notebook | de 2 a 3A |
Lâmpada fluorescente (CFL) | de 1 a 2A |
Forno de microondas | de 8 a 13A |
Telefone celular | 200mA |
Ao manipularmos circuitos eletrônicos onde haja fluxo de corrente elétrica (equipamentos ligados, portanto), devemos tomar muito cuidado pois uma corrente elétrica entre 100 mA e 1 A, dependendo da constituição física da pessoa, pode ser suficiente para causar uma parada cárdiorrespiratória em caso de choque elétrico, podendo levar à morte. Todo cuidado é pouco!
[youtube https://www.youtube.com/watch?v=lOOYmOLAmpc]
Para que uma corrente elétrica possa fluir entre dois pontos, é necessário que exista uma Tensão Elétrica entre esses pontos. Quando uma tensão elétrica é aplicada sobre um condutor, há o surgimento de uma Força Eletromotriz (FEM), que é responsável por colocar em movimento os elétrons livres dentro do condutor.
Podemos nos referir à Tensão Elétrica também como Diferença de Potencial (ddp), expressão que indica claramente a natureza dessa grandeza elétrica – a diferença de energia potencial (cargas) que existe entre dois pontos quaisquer.
Veja na figura a seguir um circuito que mostra a ligação entre uma fonte de tensão elétrica (bateria) e uma lâmpada, conectados por meio de condutores (fios) e uma chave liga-desliga (switch):
Quando a chave está aberta (desligada), não há passagem de corrente pelo circuito. Quando a chave é ligada (fechada), porém, a corrente elétrica começa a circular pelo circuito, acendendo o LED. Isso ocorre pois há uma tensão elétrica nos terminais da bateria, e essa tensão “empurra” os elétrons livres através do circuito, na direção do pólo negativo para o positivo (sentido anti-horário na figura); o sentido convencional da corrente aponta na direção oposta (positivo para o negativo, sentido horário na figura). Dizemos que há um acúmulo de cargas negativas (excesso de elétrons) no pólo negativo da bateria, e consequentemente, acúmulo de cargas positivas (falta de elétrons) no pólo positivo. Essa diferença de cargas entre os dois pontos é que dá origem à tensão elétrica.
A unidade de medida da tensão elétrica é o Volt, simbolizado pela letra V, em homenagem ao físico italiano Alessandro Volta que inventou o que é considerada a primeira “pilha” química, em 1799. Já a tensão elétrica em si podemos simbolizar com as letras V ou U; eu uso preferencialmente a letra U, para evitar expressões do tipo “V = 9V”, que podem causar confusão na hora de representar e calcular um circuito.
Para ficar mais claro o conceito de tensão elétrica, podemos fazer uma analogia com um tanque de água. Veja na figura abaixo um tanque cheio de água, com uma abertura para escoamento na parte inferior. Consideramos a água em si (quantidade de água) como se fosse a carga elétrica, a altura da coluna de água como a tensão elétrica, e o fluxo de água que sai pelo cano como a corrente elétrica. Note que quanto maior a altura da coluna de água (maior potencial energético = maior tensão), maior será a força com a qual a água será expulsa – maior o fluxo de água, ou corrente.
Uma das grandezas elétricas fundamentais é a Resistência Elétrica que, em poucas palavras, definimos como a “dificuldade oferecida por um condutor à passagem da corrente elétrica”. Em um material condutor qualquer, elétrons livres colidem frequentemente com outros elétrons, íons e impurezas dentro da grade cristalina do material, o que limita seu movimento.
Em 1826, o físico alemão Georg Simon Ohm publicou alguns resultados de experimentos que tratavam da resistência elétrica de diferentes materiais, e descobriu uma relação linear entre a quantidade de corrente que flui através de um material quando uma tensão elétrica específica é aplicada a ele. A razão entre a tensão elétrica aplicada e a corrente elétrica resultante foi chamada de Resistência Elétrica, e pode ser definida pela fórmula a seguir:
Chamamos esta fórmula de Lei de Ohm, onde R é a resistência do material, dada pela razão entre tensão em volts e a corrente, em ampères. A unidade de medida escolhida para a resistência elétrica foi o Ohm, abreviada pela letra grega omega, Ω, em homenagem a Georg Ohm. Temos então que 1 ohm é a resistência obtida quando aplicamos uma tensão de 1 V e obtemos uma corrente de 1 A.
A lei de Ohm só pode ser aplicada a materiais ditos ôhmicos, que são materiais cuja resistência permanece constante mesmo com a variação da tensão elétrica. Já os materiais ditos não-ôhmicos não seguem esse padrão, não obedecendo à lei de Ohm. Por exemplo, um diodo semicondutor apresenta variações significativas em sua resistência dependendo da tensão aplicada e sua polaridade.
A resistência elétrica de um fio de material condutor varia com diversos fatores, como o material em si, a temperatura e sua forma. Se duplicarmos o comprimento de um fio, sua resistência elétrica também duplicará, o que significa que a resistência é diretamente proporcional ao comprimento do fio. Já se duplicarmos a área da secção transversal do fio, sua resistência elétrica cairá pela metade, mostrando que a área transversal de um condutor e sua resistência elétrica são inversamente proporcionais.
O primeiro fenômeno é facilmente explicável se imaginarmos que, ao aumentarmos o comprimento do fio, haverá muito mais choques entre os elétrons e a estrutura do material em si, pois o caminho a se percorrer é maior. Já no segundo caso, ao aumentarmos a área da secção transversal, haverá mais espaço para os elétrons livres se movimentarem, diminuindo o número de choques e interações entre eles e a grade cristalina do material condutor em si. Assim, um fio de maior diâmetro pode suportar uma corrente mais alta, pois os elétrons podem ser distribuídos por uma área maior de condução. Já uma área menos tende a concentrar muitos elétrons em um espaço de passagem reduzido, aumentando significativamente o número de colisões entre eles, o que inclusive ocasiona o aumento de temperatura do material. Por esse motivo, fios de pequeno diâmetro não são indicados para instalações elétricas de corrente elevada, pois seu aquecimento aumenta o risco de incêndio e outros danos.
A figura abaixo ilustra a relação entre o comprimento e o diâmetro de um condutor com sua resistência elétrica:
O material de que é formado o condutor também tem um papel crucial na determinação de sua resistência. Cada material possui o que chamamos de Resistência Específica, ou Resistividade, e você pode ler mais a respeito da Resistividade neste artigo.
O inverso da resistência elétrica é chamado de Condutância Elétrica, e é uma grandeza que determina o quão bem um condutor pode conduzir a corrente elétrica. Para ler mais sobre condutância elétrica, acesse esta lição.
Chamamos de Resistor ao componente eletrônico projetado para introduzir resistência de valor específico em um circuito eletrônico. Abaixo vemos os símbolos comumente usados para representar um resistor em um diagrama esquemático:
O símbolo da esquerda é usado com muito mais frequência em nossos diagramas. Vamos estudar com muito mais detalhes os resistores e suas aplicações em outra lição.
Podemos medir a resistência de um condutor qualquer usando um equipamento chamado de Ohmímetro, ou ainda, o que é mais comum, um multímetro com a função de medição de resistência. Veja na figura a seguir a medição da resistência elétrica de um resistor (componente eletrônico) com o uso de um multímetro:
Note que a marcação no corpo do resistor traz o valor “5K6“, que significa que sua resistência elétrica é de 5600 Ω. Porém, o valor medido é de 5,89KΩ, ou 5890Ω, o que se explica pelo fato do resistor possuir uma tolerância de 10% (também marcada no corpo) para mais ou para menos do valor da resistência nominal (marcada). Também podemos ver a marcação “25W“, que significa que esse resistor pode dissipar uma potência de até 25 Watts, bastante alta por sinal para circuitos eletrônicos. Na prática, em eletrônica costumamos utilizar resistores de baixa dissipação, como 1/4 W e até mesmo 1/8 W.
Vamos aplicar a fórmula da Lei de Ohm para calcular a resistência de um elemento no exemplo a seguir:
Exemplo 01: Uma lâmpada, alimentada por uma fonte cuja tensão elétrica é de 12 V, é atravessada por uma corrente de 300mA. Qual a resistência da lâmpada? (Vamos ignorar a resistência da fonte e dos fios condutores).
Resolução:
Primeiramente, vamos transformar miliampères em ampères: 300mA = 300/1000 A = 0,3A.
Aplicando a lei de Ohm temos então:
Portanto, a resistência da lâmpada é de 40 Ω.
No próximo artigo vamos explorar a Lei de Ohm, juntando os conceitos de Resistência, Corrente e Tensão Elétricas.
[youtube https://www.youtube.com/watch?v=BUa-wIO1FyY]
Um resistor é um dos componentes mais comuns e fundamentais em Eletrônica. Sua finalidade é impedir o fluxo livre de corrente elétrica em um circuito por meio de sua resistência elétrica, e impor uma queda de tensão ou limitação de corrente.
Um resistor consiste geralmente em dois conectores ligados a um condutor de energia elétrica pobre, que pode ser constituído por uma variedade de materiais, como veremos mais à frente.
Os resistores são componentes passivos, o que significa que eles apenas consomem energia, e não podem gerá-la.
Podemos ver abaixo os símbolos utilizados para representar resistores em esquemas eletrônicos:
O símbolo da esquerda é o mais tradicional, usado nos Estados Unidos e no Brasil. O símbolo da direita é mais usado em esquemas europeus e em outros países, e ambos são válidos para desenhar nossos circuitos.
Na figura abaixo podemos ver diversos resistores de tipos diferentes, cada qual com uma aplicação distinta:
As aplicações mais comuns dos resistores são a limitação de corrente em dispositivos semicondutores como LEDs, polarização de transístores, controle de cargas em capacitores, ajuste da resposta de frequência em circuitos de áudio, como pull-up ou pull-down em entradas de circuitos lógicos digitais, entre muitas outras.
Além dos resistores comuns como os mostrados na ilustração acima, existem também alguns tipos especiais de resistores, como por exemplo potenciômetros e trimpots, que são resistores variáveis – cuja resistência pode se ajustada conforme a necessidade, e resistores que tem sua resistência alterada quando alguma característica do ambiente é modificada, como a luminosidade, temperatura ou pressão. Os resistores ainda podem ser do tipo SMD (surface mount device) ou through-hole.
A resistência elétrica dos resistores é medida em Ohms (Ω). Os valores de resistência dos resistores podem ser lidos de duas maneiras: diretamente, com o valor escrito no próprio corpo do componente, ou por meio de um código de cores, que é de longe a forma mais comum.
Resistores podem ser associados entre si de diversas formas, permitindo obter valores de resistências diferentes dos encontrados comumente nos componentes vendidos no mercado, sendo os tipos de associação mais comuns a associação em Série e a associação em Paralelo.
Os resistores axiais possuem tradicionalmente o código de cores impresso em seu corpo em uma sequência de três faixas coloridas que expressam o valor da resistência do componente, e mais uma faixa que expressa a tolerância desse valor (desvio possível para mais ou para menos, em porcentagem).
As duas primeiras faixas representam um dígito de 0 a 9, enquanto a terceira faixa indica um multiplicador decimal (número de zeros que devem ser anexados aos dígitos). Abaixo temos uma tabela com o código de cores de resistores de quatro faixas:
Tolerância
A resistência real de um resistor pode ser diferente do seu valor nominal, tanto maior quanto menor. O limite da resistência real é chamado de tolerância. Os valores de tolerância mais comuns para resistores de carbono são +-5%, +-10% e +-20% Dessa forma, um resistor de 100Ω que possua tolerância de +-5% pode na verdade, ter uma resistência real de qualquer valor entre 95 e 105Ω, portanto 5Ω a mais ou a menos que o valor nominal de 100Ω.
Os resistores de fio enrolado geralmente possuem tolerância mais estrita, de +-5%.
Potência
Os resistores também possuem uma especificação de potência, que indica a quantidade de energia que o resistor pode dissipar (na forma de calor) antes de se danificar. Caso a potência seja exercida, o resistor se danificará – literalmente, “queimará”. A especificação de potência é dada em Watts (W).
Os resistores de carbono geralmente são vendidos com especificações de potência que podem variar entre 1/16W e 2W, ao passo que resistores de fio enrolado possuem especificações de potência maiores, de 2W a até centenas de Watts.
Vamos interpretar os códigos de cores de alguns resistores para descobrir seus valores:
1º dígito: Vermelho = 2
2º dígito: Marrom = 1
Multiplicador: Laranja = 103 = x 1000
Tolerância: Prata = ± 10%
Resultado: Resistor de 21000 Ω (21KΩ), com 10% de tolerância.
1º dígito: Amarelo = 4
2º dígito: Violeta = 7
Multiplicador: Vermelho = 102 = x 100
Tolerância: Ouro = ± 5%
Resultado: Resistor de 4700 Ω (4,7kΩ / 4K7), com 5% de tolerância.
Existem resistores cujo código de cores é formado por 5 ou 6 faixas, em vez das 4 faixas que identificam s resistores mais comuns. As faixas adicionais são usadas para representar maior precisão dos valores de resistência e para indicar o coeficiente de temperatura do resistor.
Como vimos nos exemplos anteriores, e com base na tabela de código de cores, os resistores podem apresentar valores de resistência desde frações de ohm até milhões de ohms. A tabela a seguir mostra uma equivalência entre valores de resistência em ohms, quiloohms (kΩ, milhares de ohms) e megaohms (MΩ, milhões de ohms):
A estabilidade de um resistor é sua habilidade de manter um valor de resistência preciso mesmo em condições que a afetariam, como sua temperatura, umidade, vibrações, corrente e tensão elétrica. O coeficiente de temperatura de um resistor (Tc) é expresso na mudança da resistência em partes por milhão para cada grau Celsius de desvio da temperatura ambiente (considerada como sendo 25º C), podendo ser um valor positivo ou negativo.
Já o coeficiente de tensão, expresso como Vc, descreve a mudança no valor de resistência que pode ocorrer em decorrência de alteração no valor da tensão elétrica aplicada sobre o resistor. Geralmente afeta resistores cujo elemento resistivo é baseado em carbono.
Os resistores podem ser fabricados com diversos materiais, como por exemplo:
Podemos classificar os resistores em dois tipos: Resistores Fixos e Resistores Variáveis.
Resistores Fixos
Um resistor fixo é aquele que somente possui um valor de resistência, o qual permanece sempre constante (em condições normais de operação). Há dois tipos principais de resistores fixos por composição: os resistores de carbono e os de fio enrolado.
Resistores Variáveis
Os resistores variáveis permitem alterar a resistência de um circuito, conforme a necessidade. Geralmente são classificados como Potenciômetros, Reostatos e Trimmers.
Se uma tensão contínua é aplicada em um resistor, a quantidade de corrente que irá atravessar esse resistor pode ser encontrada usando-se a Lei de Ohm. Podemos também descobrir a potência dissipada na forma de calor no resistor com a fórmula da Potência Geral, ou Lei da Potência de Ohm, conforme as fórmulas a seguir:
Lei de Ohm
Lei da Potência de Ohm
Onde R é a resistência do resistor expressa em Ohms (Ω), P é a potência dissipada em Watts (W), U é a tensão elétrica em Volts (V) e I é a corrente em Ampères (A).
Vejamos alguns exemplos de cálculos:
Exemplo 1: Calcule a corrente que atravessa o resistor no circuito a seguir, sabendo que a fonte fornece 12 V de tensão, e o resistor tem uma resistência de 100 Ω:
Resolução:
Exemplo 2: Usando o mesmo circuito do exemplo anterior, calcule a potência dissipada pelo resistor.
Resolução:
Podemos medir o valor da resistência de um resistor com o uso de um Ohmímetro, ou ainda com um multímetro, que geralmente possui essa função embutida. Para isso, basta conectar as pontas de prova do aparelho medidor aos terminais do resistor que se deseja medir, preferencialmente com o resistor desconectado do circuito. Veja na figura a seguir a medição da resistência elétrica de um resistor com o uso de um multímetro:
A marcação no corpo do resistor traz o valor “5K6“, o que significa que sua resistência elétrica é de 5600 Ω. Esse resistor, por ser de alta potência de dissipação, não traz a marcação de sua resistência na forma de um código de cores, mas sim de forma direta para leitura. Porém, o valor apresentado pelo multímetro é de 5,89KΩ, ou 5890Ω, o que se explica pelo fato do resistor possuir uma tolerância de 10% (também marcada no corpo) para mais ou para menos do valor da resistência nominal (marcada). Ou seja, seu valor real pode oscilar entre 5040 Ω (-10%) e 6160 Ω (+10%). O valor medido está, portanto, dentro da tolerância indicada. Também podemos ver a marcação “25W“, que significa que esse resistor pode dissipar uma potência de até 25 Watts, bastante alta por sinal para circuitos eletrônicos. Na prática, em eletrônica costumamos utilizar resistores de baixa dissipação, como 1/4 W e até mesmo 1/8 W.
Os resistores são empregados em uma infinidade de aplicações em circuitos eletrônicos, geralmente para limitar corrente ou provocar queda de tensão. A lista a seguir elenca algumas das aplicações mais comuns dos resistores:
E diversas outras aplicações. Vamos estudar cada um desses circuitos em nosso curso de Eletrônica.
[youtube https://www.youtube.com/watch?v=tOG_MSa3u2M]
Em 1826, o físico Georg Simon Ohm publicou alguns resultados de experimentos relacionados à resistência elétrica de diversos materiais, considerando os efeitos observáveis da passagem de corrente elétrica sobre esses materiais, e descobriu uma relação linear entre a quantidade de corrente que fluía por um material quando uma determinada tensão elétrica era aplicada a ele. Ele então definiu a resistência como sendo uma razão entre a tensão aplicada e a corrente elétrica resultante, originando a famosa fórmula:
Chamamos esta fórmula de Lei de Ohm, onde R é a resistência elétrica, em ohms, U é a tensão elétrica, em volts, e I é a corrente elétrica, dada em ampères. De acordo com essa lei, a resistência de um ohm equivale a uma corrente elétrica de um ampère fluindo em um condutor submetido à tensão elétrica de um volt. Portanto,
Com a fórmula da Lei de Ohm, se tivermos duas grandezas, é possível calcular a terceira. Para memorizar mais facilmente a fórmula da Lei de Ohm e suas transformações, podemos usar o Círculo da Lei de Ohm, que pode ser visto na figura a seguir:
O valor de R2 é, portanto, de 47,5Ω (valor arredondado).
Exemplo 03: No circuito a seguir, calcule o valor da tensão da fonte de alimentação, sabendo que a corrente total que atravessa o circuito é de 500 mA (0,5 A):
Neste circuito temos a corrente elétrica total, que é de 500 mA (0,5 A), e três resistores de valores diferentes associados em série. Para que possamos calcular o valor da tensão elétrica da bateria, precisamos primeiramente calcular o valor da resistência equivalente do circuito. Como os resistores estão associados em série, basta somarmos os valores de suas resistências individuais para obtermos a resistência total:
A resistência equivalente o circuito é de 228Ω. Agora podemos aplicar a Lei de Ohm para calcular o valor da tensão da bateria:
Portanto, a tensão da fonte de alimentação é de 114 volts.
Para saber mais sobre a Lei de Ohm, assista ao vídeo a seguir, onde alguns exemplos são explicados passo-a-passo:
[youtube https://www.youtube.com/watch?v=6iHvCoNOpK8]
A carga elétrica é uma propriedade básica da matéria portada por algumas partículas elementares, que faz com que a matéria experimente uma força quando posicionada em um campo eletromagnético.
As cargas elétricas são de dois tipos gerais: positivas e negativas. Cargas elétricas de mesmo tipo exercem uma força de repulsão entre si, enquanto cargas de sinais opostos atraem-se mutuamente, quando próximas.
Um objeto possui carga elétrica negativa se possuir um excesso de elétrons, e carga elétrica positiva se tiver falta de elétrons (portanto, mais prótons do que elétrons em seus átomos). A matéria carregada eletricamente sofre influência de, e produz um campo eletromagnético. Desse modo, podemos dizer que a quantidade de carga elétrica que um corpo possui é determinada pela diferença entre q quantidade de prótons e a quantidade de elétrons que o corpo possui. Se o corpo tiver mais prótons que elétrons, está carregado com carga positiva; se tiver mais elétrons do que prótons, sua carga é negativa. Observe que apenas os elétrons podem variar, pois somente essas partículas podem se desligar de um átomo – os prótons estão sempre fixos no núcleo atômico, salvo em condições muito especiais, como uma explosão nuclear.
A unidade de medida de carga elétrica é o Coulomb, representado pela letra C, e o símbolo da carga elétrica é a letra Q.
A carga elétrica é quantizada, medida em múltiplos inteiros de uma unidade individual chamada de carga elementar e, que equivale a aproximadamente 1,602 x 10-19 C (tanto para prótons quanto para elétrons); quarks (partículas constituintes dos prótons e dos nêutrons) possuem valores de carga que são múltiplos inteiros de e/3. A carga do próton é +e e a do elétron, -e (negativa), por convenção.
Um coulomb equivale, portanto, a 6,242 x 1018 e, e é definido como a quantidade de cargas que atravessa a secção transversal de um condutor carregando um ampère em um segundo. Portanto:
Uma das características mais importantes das cargas elétricas é de que elas são capazes de exercer uma força. Essa força está presente em um Campo Eletrostático, que envolve os corpos carregados. Se dois corpos de cargas de sinais diferentes forem colocados próximos um ao outro, o campo eletrostático irá se concentrar na região entre os corpos, e podemos representar o campo elétrico por meio de linhas de força entre os dois corpos. Quaisquer elétrons que adentrem esse campo serão atraídos pelo corpo com carga positiva, e repelidos pelo corpo com carga negativa. A figura a seguir ilustra esse fenômeno:
Já quando duas cargas de mesma polaridade são posicionadas próximas entre si. as linhas de força irão se repelir mutuamente. A figura abaixo ilustra esse fenômeno:
É uma lei da física que descreve a interação eletrostática entre partículas eletricamente carregadas. Essa lei foi descoberta / publicada em 1785 pelo físico francês Charles Augustin de Coulomb. A lei de Coulomb diz o seguinte:
A magnitude da força eletrostática de interação entre duas cargas pontuais é diretamente proporcional ao produto das magnitudes das cargas e inversamente proporcional ao quadrado da distância entre elas.
Podemos expressar a lei de coulomb com a fórmula a seguir:
Onde:
Podemos arredondar a constante k para o valor 9,0 x 109 N.m2/c2
Como o coulomb é uma unidade de valor bem específico, é comum utilizarmos múltiplos ou submúltiplos em cálculos que envolvam carga elétrica. A tabela a seguir mostra alguns múltiplos e submúltiplos do coulomb, com seus respectivos valores:
Submúltiplos | ||
Nome | Símbolo | Valor |
femtocoulomb | fC | 10-15 C |
picocoulomb | pC | 10-12 C |
nanocoulomb | nC | 10-9 C |
microcoulomb | μC | 10-6 C |
milicoulomb | mC | 10-3 C |
Múltiplos | ||
Nome | Símbolo | Valor |
kilocoulomb | KC | 103 C |
megacoulomb | MC | 106 C |
gigacoulomb | GC | 109 C |
teracoulomb | TC | 1012 C |
petacoulomb | PC | 1015 C |
Vejamos agora alguns exemplos de cálculos envolvendo cargas elétricas.
Exemplo 01: Um material possui uma carga em excesso de 12,48 x 1018 elétrons. Qual sua carga em coulombs?
Resolução:
Temos que a carga Q = Número total de elétrons / Carga de um coulomb. Então:
A carga elétrica do material é de 2 coulombs.
Exemplo 02: Uma carga de 3,5C atravessa a seção transversal de um condutor metálico. Calcule quantos elétrons passam por esse condutor por segundo.
Resolução:
Sabemos que 1C de carga equivale a 6,24 x 1018e (número de cargas elementares = número de elétrons). Então, se temos 3,5C de carga, basta multiplicarmos os valores para determinar o número total N de elétrons que atravessam esse condutor:
Portanto, pelo condutor passam 2,184 x 1019 elétrons por segundo.
Exemplo 03: Duas cargas pontuais, cada uma com uma carga de +1,0 C, estão separadas por uma distância de 1,0 m. Determinar a magnitude da força de repulsão elétrica entre elas.
Resolução:
Sabemos que a força é de repulsão pois ambas as cargas possuem o mesmo sinal (+). Vamos extrair os dados do enunciado do problema:
Portanto, pelo condutor passam 2,184 x 1019 elétrons por segundo.
Exemplo 03: Duas cargas pontuais, cada uma com uma carga de +1,0 C, estão separadas por uma distância de 1,0 m. Determinar a magnitude da força de repulsão elétrica entre elas.
Resolução:
Sabemos que a força é de repulsão pois ambas as cargas possuem o mesmo sinal (+). Vamos extrair os dados do enunciado do problema:
Vamos usar a constante de coulomb arredondada para 9,0 x 109N.m2/c2. Aplicando a fórmula da Lei de Coulomb temos:
Portanto, a força de repulsão entre as duas cargas é de 9,0 x 109 Newtons.
Exemplo 04: Duas esferas estão carregadas com uma carga idêntica de -6,25 nC (nanocoulombs). A distância que as separa é de 61,7 cm. Determine a magnitude da força de repulsão elétrica entre elas.
Resolução:
Novamente, sabemos que a força é de repulsão porque ambas as esferas possuem carga de mesmo sinal, neste caso, negativa. Extraindo os dados do enunciado temos as seguintes informações:
Lembrando que 1 nC (nanocoulomb) equivale a 1 x 10-9 C. Os valores das cargas elétricas de cada esfera serão utilizados sem o sinal (em módulo). Vamos aplicar a fórmula da Lei de Coulomb para calcular a força de repulsão:
Portanto, a força de repulsão entre as esferas é de 9,23 x 10-7 Newtons.
Exemplo 05: Duas esferas com cargas de +3,37 μC (microcoulombs) e -8,21 μC atraem-se com uma força de -0,0626 N. Determine a distância que separa essas duas esferas.
Resolução:
Desta vez a força de interação entre as esferas é de atração, pois seus sinais são opostos. Isso significa que uma das esferas possui excesso de elétrons enquanto a outra esfera possui falta de elétrons. Vamos aos dados que usaremos no cálculo:
Vamos aplicar os valores obtidos do enunciado do exercício na fórmula da Lei de Coulomb. Mas antes, vamos transformar a fórmula para que possamos calcular a distância de acordo com os outros parâmetros da fórmula:
E então, calculando:
Portanto, a distância entre as esferas é de 1,99 m.
Quando um corpo possui cargas elétricas, ele se mantém carregado por um período de tempo variável, se essas cargas não forem descarregadas de alguma forma, sendo transferidas de ou para outro corpo. Quando isso ocorre, temos cargas em repouso no corpo em questão, às quais damos o nome de Eletricidade Estática. Vamos estudar a Eletricidade Estática em nosso próximo artigo, pois ela tem uma grande importância para nosso estudo de Eletricidade e Eletrônica.
[youtube https://www.youtube.com/watch?v=yvMgFHbOXyE]
Curso de Eletrônica – Medindo Corrente Elétrica com um Multímetro
Medindo Corrente Elétrica com o Multímetro
Nesta parte 02 do tutorial sobre uso de um multímetro, vamos mostrar como proceder para medir corrente elétrica em um circuito simples e mostramos como medir tensão e resistência elétricas.
A medição de corrente elétrica com o multímetro deve ser realizada colocando-se o aparelho em série com o ramo do circuito que desejamos medir, pois a corrente deve atravessá-lo para que possa ser mensurada. Esse procedimento é diverso da medição de tensão elétrica, na qual colocamos as pontas de provas entre os dois pontos cuja diferença de potencial queríamos medir.
Vamos usar o circuito a seguir em nossos exemplos:
Curso de Eletrônica - Medir corrente com um multímetro
Temos uma fonte de tensão elétrica de 9V (uma bateria) e três resistores conectados a ela, sendo R1 e R2 resistores de 100 Ω, e R3 um resistor de 10 KΩ. R1 e R3 estão em série, assim como R1 e R2, e R2 e R3 estão em paralelo entre si.
Vamos às medidas. Primeiramente vamos determinar qual escala do multímetro usar. Para isso, vamos determinar a corrente total neste circuito, usando a Lei de Ohm. Primeiramente vamos calcular a resistência equivalente do circuito, que é dada por:
Eletrônica - Resistência Equivalente
Com o valor de resistência equivalente de 199Ω, vamos agora calcular a corrente total que passa pelo circuito:
Medindo corrente com multímetro - corrente total
Sabemos agora que a corrente total no circuito é de 45 mA. Podemos então selecionar a escala mais adequada de medição no multímetro, que no caso é a escala de 200 mA, corrente contínua. Claro que nem sempre será possível efetuar os cálculos de corrente como fizemos neste exemplo, pois os circuitos podem ser muito complexos ou os valores dos resistores podem estar ilegíveis, sem contar que podem haver outros tipos de componentes conectados, como capacitores, indutores, integrados, etc.; Na dúvida, sempre comece medindo pela escala mais alta.
Observação: a potência total dissipada pelo circuito é de P = U x I = 9 V x 0,045 A = 0,405 W. Portanto, procure usar resistores que suportem esse valor de potência (ao menos em R1, por onde a corrente total irá circular), como por exemplo 0,5 W, sob risco de queimá-los.
Veja o circuito montado em uma breadboard na figura abaixo:
Medindo corrente elétrica - circuito na breadboard
Vamos às medições de corrente. Primeiramente, ajustaremos a escala do multímetro e plugaremos a ponta de prova no borne correto, onde se lê “mA B”:
Medindo Corrente elétrica: Escala do multímetro
Medindo Corrente Elétrica: Escala do multímetro
Medição #01: Corrente que passa por R1
Para medir a corrente que atravessa R1, vamos desconectar um de seus terminais do circuito e então colocá-lo em série com o multímetro (função de amperímetro, A), como mostra a ilustração a seguir:
Medindo corrente elétrica em R1
Veja a corrente que foi medida no multímetro:
Medindo a corrente elétrica em R1 com o multímetro
O multímetro nos mostra o valor de 45,5 mA, muito próximo do valor calculado da corrente total, que foi de 45 mA. Essa pequena diferença se deve às tolerâncias dos resistores e às resistências dos fios (que não foram consideradas no cálculo), além da precisão do multímetro. Esperávamos esse valor, pois toda corrente atravessa esse resistor, que está ligado diretamente à fonte de alimentação do circuito.
Medição #02: Corrente que passa por R2
Agora vamos medir a corrente que passa pelo resistor R2. Conectamos de volta R1 e desconectamos um dos terminais de R2 para efetuar a medição. Esperamos obter um valor de corrente menor do que o que foi medido em R1, pois a corrente se divide entre os dois ramos do circuito, onde estão R2 e R3 respectivamente. Veja como deve ser feita a conexão no circuito para a medição:
Medindo corrente em R2
Veja a corrente que foi medida no multímetro:
Eletrônica - Medindo corrente em R2 com o amperímetro
Agora o multímetro mostra o valor de 45,1 mA. Como sabemos, a corrente total é de 45,5 mA, portanto faltam 45,5 – 45,1 = 0,4 mA. Onde está essa corrente? Atravessando o resistor R3 provavelmente. É o que veremos agora:
Medição #03: Corrente que passa por R3
Vamos medir a corrente que atravessa o resistor R3, cuja resistência é de 10 KΩ. Reconectamos R2 e desconectamos um dos terminais de R3 para efetuar a medição, conforme ilustra o diagrama esquemático abaixo:
Medindo a corrente elétrica em R3 com o multímetro
Veja a corrente que foi medida no multímetro:
Medindo a corrente elétrica em R3 com o ammeter
Eis os 0,4 mA que faltavam. Essa corrente circulou pelo ramo do circuito onde está R3, mostrando que a corrente se divide ao encontrar resistores em paralelo. Estudaremos esse fenônemo com muito mais detalhes nas lições sobre Análise de Circuitos, Leis de Kirchhoff, Teorema de Thevenin, e outras.
É isso aí! Aprendemos a medir corrente com um multímetro nesta lição. Não se esqueça: para isso, você deve colocar o multímetro em série com o ramos do circuito cuja corrente deseja medir, frequentemente desconectando algum componente desse circuito. Na próxima aula sobre multímetros vamos aprender a medir o ganho de transístores.
[youtube https://www.youtube.com/watch?v=qixMyb1-Xzg]
Curso de Eletrônica - Como usar Um Multímetro Usando um Multímetro Um Multímetro é um aparelho para testes e medição de grandezas elétricas, extremamente popular entre técnicos e engenheiros eletrônicos devido à sua grande utilidade, permitindo, mesmo nos modelos mais simples, efetuar a medição de Corrente, Tensão e Resistência Elétricas, permitindo assim realizar diversos tipos de diagnósticos em circuitos elétricos. Alguns modelos mais incrementados permitem realizar medições adicionais, como Capacitância, Frequência, Temperatura, Indutância e outras. Vamos utilizar neste artigo um Multímetro Digital, pois é o tipo mais amplamente usado hoje em dia, em larga escala. Porém, existem também os multímetros Analógicos, dos quais falaremos posteriormente. Os multímetros também podem ser de Bancada, que geralmente possuem várias funções extras, mais alcance de escala e maior precisão, e portáteis (de mão), muito úteis para carregar em uma maleta de ferramentas ou bolsa. Vamos usar um multímetro portátil neste artigo para realizar medições. Antes de prosseguir, recomendamos que o leitor revise seus conhecimentos sobre alguns conceitos básicos de eletricidade, tais como:
Partes de um MultímetroUm multímetro possui três partes principais:
O Visor é onde os resultados das medições são exibidos. Dependendo do modelo do multímetro, pode ter 3 ou mais dígitos, e um dígito adicional para representar o sinal de negativo. O botão de seleção é um botão rotativo, de múltiplas posições, que usamos para selecionar a função que desejamos medir, e a precisão da escala de medição, e também para desligar o multímetro quando não em uso, para economizar sua bateria, que geralmente é uma bateria de 9 V. As ponteiras são conectadas em bornes específicos presentes no multímetro, sendo uma ponteira geralmente na cor vermelha para representar a polaridade positiva, e outra ponteira na cor preta, para representar a polaridade negativa. Comumente, um multímetro possui mais de dois bornes de conexão para as ponteiras, os quais permitem a medição de outras grandezas quando as ponteira são trocadas de conector. Na foto abaixo podemos ver um exemplo de um multímetro típico (um Minipa modelo ET-2020), o qual usarei nas medições apresentadas no artigo: Esse multímetro nos permite realizar medições de Tensão Alternada e Contínua, Resistência, Corrente Elétrica (contínua apenas), realizar teste em baterias de 1,5 V e 9 V, e testar o ganho (hFE) de transístores NPN e PNP, além de realizar teste de continuidade. A figura abaixo mostra a localização de cada uma dessas funções na escala do multímetro: Para efetuar essas medições, é necessário conectar as pontas de prova nos bornes corretos. A figura a seguir mostra as funções que são medidas em cada borne, lembrando que a ponteira preta sempre deve ser conectada ao borne COM, e a vermelha, ao demais bornes, conforme o teste que se deseja realizar: Efetuando MediçõesPara efetuarmos medições, a primeira coisa a se fazer é determinar a grandeza a ser mensurada. Vamos começar efetuando medição de Tensão Elétrica. Para isso, vamos conectar as pontas de prova nos bornes conforme segue:
Agora, precisamos determinar que tipo de tensão elétrica vamos medir: Contínua (DCV) ou Alternada (ACV) . Vou efetuar a medição de uma Bateria de 9V, que opera com Tensão Contínua. Para isso, precisamos localizar no Multímetro a escala de tensão contínua, e ajustar sua precisão para acomodar o valor que pretendemos medir, que é de aproximadamente 9V. Para isso, escolhemos na escala o valor que for mais próximo e acima do valor esperado na medição, para evitar danos ao multímetro. Se estiver com dúvida com relação ao valor da tensão que será medida, coloque a chave de seleção no valor mais elevado e depois vá baixando, para aumentar a precisão, até o valor máximo ainda seguro para a medição. No meu caso, o valor de escala mais próximo e acima de 9V é o de 20 DCV (tensão contínua), que permite medir valores de 0 até 19,99 V. Veja a escala selecionada na figura abaixo: Vamos à medição. Após selecionar a escala correta no aparelho girando a chave seletora, conecte as pontas de prova aos pólos da bateria, com firmeza, e verifique no visor do multímetro o valor medido. Caso você inverta a polaridade das ponteiras, não haverá problema, pois o multímetro mede a tensão em relação ao ponto comum (COM). Neste caso, a única diferença que você verá é que o sinal aparecerá com o sinal de negativo no visor. Veja a medição realizada na figura abaixo: Note o valor medido: 9,81 V, um pouco acima do esperado para esta bateria, que é de 9 V. Isso pode se dar por conta de ajustes de calibração do multímetro ou por conta de variações na tensão da bateria em si. Note que esse multímetro possui uma posição específica para medição de baterias, tando de 9V quanto pilhas de 1,5V. Mas muitos multímetros não possuem essa opção, então a forma mais comum de efetuar essa medição é a que acabamos de mostrar. Medindo Tensão Alternada: Rede ElétricaVamos medir agora a tensão da rede elétrica, em uma tomada de 110 V. Essa tensão é alternada, portanto vamos ter de alterar a posição da chave seletora para ACV, escolhendo a escala de 200 V (neste caso sabemos o valor que será medido; caos não soubéssemos se a tomada é de 110 V ou de 220 V, deveríamos colocar a chave seletora na posição 750 V para não danificar o multímetro). Veja a medição na figura a seguir: Na posição 200M (que mede até 200 MΩ), o multímetro mostra o valor 01,0. A precisão do valor mostrado é muito baixa, e isso nos indica que a faixa da escala escolhida está muito elevada. Vamos alterar a posição da chave seletora para 20M para conseguirmos maior precisão nessa medição: Note que agora o valor mostrado é de 0,05, ainda muito impreciso. Vamos mudar novamente a posição da chave seletora, abaixando um nível da escala, para 2000K (que equivale a 2M): Na posição 2000K temos uma precisão melhor. Veja que o multímetro agora mostra o valor 051, e como a escala está em KΩ, isso indica que a resistência do resistor é de 51 KΩ. Podemos obter maior precisão nessa medição alterando novamente a escala, pois temos uma posição mais próxima de 51 KΩ, que é a posição 200K: Conseguimos a melhor precisão possível para essa medição: 51,6 na posição 200K, o que significa que a resistência medida é de 51,6 KΩ. Esse resistor é, na verdade, um resistor de 47 KΩ, e o valor apresentado (um pouco acima) se deve à tolerância do valor da resistência, que é de 10%. Portanto, o resistor pode ter sua resistência entre 42,3 KΩ e 51,7 KΩ (47 ±10%), o que indica que nosso resistor está em bom estado. O que acontece se tentarmos medir esse resistor em uma escala mais abaixo? Vamos medi-lo agora alterando a posição da chave seletora para 20 K: Veja que agora o multímetro não mostrou nenhum valor de resistência, e em vez disso, mostrou o valor “I”. Interpretamos esse valor com sendo “Infinito”, ou seja, o valor medido está além do valor máximo que pode ser medido nessa posição da escala. Neste caso, basta alterar a chave seletora para uma posição acima, ou até que um valor concreto seja mostrado no visor. Vamos medir a resistência de um pedaço de fio de cobre agora. Medindo a Resistência de um Fio de CobreUm fio de cobre é um excelente condutor de eletricidade, e justamente por isso esperamos medir um valor de resistência muito baixa, tendendo a zero ohms. Na prática, fatores como o comprimento do fio, seu diâmetro, se é sólido ou de fios trançados, sua temperatura, etc.influenciam no valor da resistência medida. De qualquer forma, esperamos que o valor medido seja muito baixo, e por isso vamos colocar a escala do multímetro no menor valor possível, que no caso do meu aparelho é de 200 Ω (ou seja, mede até 200 ohms). Veja na figura a seguir essa medição sendo realizada: O valor medido foi de apenas 6,7 Ω e, na prática, pode ser até um pouco menor, devido ao contato entre as pontas de prova e o pedaço de fio, que é imperfeito. Também usei uma garra jacaré para fixar uma das ponteiras ao fio, pois precisei de uma das mãos para disparar a fotografia! Esse tipo de medição é muito útil para testar, por exemplo, cabos de força de equipamentos, que podem estar rompidos e, assim, impedir que a energia elétrica chegue ao aparelho, tornando-o inoperante. Caso a resistência medida seja maior do que alguns poucos ohms, ou se aparecer o valor “I”, então o cabo estará com problemas – provavelmente rompido. Na parte 02 desta lição sobre Multímetros vamos efetuar a medição de Corrente Contínua em um circuito simples e, posteriormente, medir o ganho de transístores NPN e PNP.[youtube https://www.youtube.com/watch?v=RfcTeP_PErY?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9][youtube https://www.youtube.com/watch?v=V7b7Bltf_3I?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9][youtube https://www.youtube.com/watch?v=kkWXLujBOts?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9][youtube https://www.youtube.com/watch?v=UWez5nbTL80?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9][youtube https://www.youtube.com/watch?v=OUytzHqFfso?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9][youtube https://www.youtube.com/watch?v=sgm0hN-4Sy8?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9][youtube https://www.youtube.com/watch?v=_rDPgBe0yYk?list=PLA50BBmr8ti4g3j6rRJfiYqoyomWeDLU9] |
Curso de Eletrônica - Como funciona um LED RGB
Como funciona um LED RGB
Um LED RGB consiste em três LEDs encapsulados em um mesmo dispositivo, que podem ser controlados individualmente, cada um com uma cor distinta: um vermelho (Red), um verde (Green) e um azul (Blue). Abaixo podemos ver os símbolos esquemáticos de LEDs RGB de dois tipos: anodo comum e catodo comum:
Eles possuem quatro terminais, sendo que três deles são conectados a cada LED de cor individual, e o quarto terminal é comum a todos. Existem duas configurações possíveis para esse terminal ("perna"): anodo comum e catodo comum.
É possível ativar as cores individualmente, fazendo com que o LED se acenda uma das três cores disponíveis, ou ainda combinar as cores dos LEDs individuais para que sejam produzidas cores diferentes. Como internamente os três LEDs se localizam muito próximos entre si, o olho humano não é capaz de distingui-los, enxergando a mistura de cores finais.
Podemos gerar inúmeras cores distintas, combinando diferentes níveis de cada cor primária do LED. Podemos usar para isso a técnica de PWM, a qual permite ajustar o nível de brilho em cada um dos LEDs e, portanto a mistura dessas cores.
Na imagem abaixo podemos ver um LED RGB. Note que alguns dos terminais possuem tamanhos diferentes. No caso da ilustração, perceba que um dos terminais é maior, sendo esse o terminal comum (catodo no LED mostrado). O pino da esquerda correspondente ao LED interno vermelho, o central, ao verde, e o da direita, ao azul. É importante consultar o datasheet do componente para determinar as funções dos pinos; em sua ausência, teste os pinos, sempre usando um resistor (recomendo ao menos 220 Ω) em série com cada LED interno (proteção contra sobrecorrente), e lembrando que o terminal mais comprido é o catodo (ou anodo, dependendo do LED), o qual é conectado ao +V ao GND.
LED RGB
A figura a seguir mostra a pinagem do LED apresentado, assim como as dimensões dos pinos, em mm. Informações retiradas do datasheet LED:
Na figura a seguir podemos ver uma sugestão de conexão de um LED RGB a uma breadboard (protoboard). O segundo pino da esquerda para a direita é o comum (anodo ou catodo):
E na figura seguinte, o LED (catodo comum) conectado a uma fonte de energia, com três resistores limitadores de corrente 220 Ω protegendo cada LED individual. Nesta configuração, as três cores acenderão simultaneamente:
Uma característica importante dos LEDs RGB é que cada LED individual interno, por ser de cor distinta, possui sua própria tensão de operação, o que deve ser levado em conta ao se projetar um circuito - os LEDs geralmente operam com a mesma corrente, porém com tensões diferentes; de acordo com a Lei de Ohm, isso significa que cada pino do LED irá necessitar de um resistor de valor de resistência diferente. A intensidade luminosa também tende a ser diferente, sendo que a cor vermelha geralmente possui menor intensidade do que o verde e o azul.
Abaixo temos alguns dados retirados do datasheet de um LED, modelo YSL-R596CR3G4B5C-C10 ilustrado o que foi dito:
Note que a corrente direta (IF) é a mesma para cada cor, mas a tensão elétrica é diferente, assim como a intensidade luminosa (medida em milicandelas, mcd), e a degradação luminosa após 1000 horas de uso – a cor verde se degrada mais rapidamente do que as demais.
Os LEDS RGB são encontrados em dois tipos principais: Difuso e Transparente. Os LEDs transparentes possuem o invólucro em plástico transparente, e é possível visualizar os LEDs individuais dentro dele. Geralmente, ao acender mais de uma cor simultaneamente, conseguimos enxergá-las separadamente, sendo que este tipo de LED é muito útil para sinalização e iluminação, mas não para mixar as cores básicas e formar novas cores. Possui um brilho maior que os LEDs difusos.
Já os LEDs difusos tem o encapsulamento feito com resina epoxy translúcida, que não permite que vejamos os LEDs individuais internamente. Neste tipo de LED a luz gerada é difundida uniformemente no invólucro do dispositivo, sendo possível misturar a luz dos LEDs individuais e perceber um novo tom de cor, resultante da mistura das cores acionadas. A luz pode ser percebida em todos os lados do componente, pois a luz é espalhada em um ângulo de visão maior – porém com menor luminosidade.
Além dos LEDs RGB existem outros tipos de LEDs que trazem mais de uma cor em um único encapsulamento. Um LED bicolor possui, como o nome sugere, duas cores disponíveis – pois contém dois LEDs em um único encapsulamento. Podem ser encontrados em duas formas: com dois ou com três pinos (terminais).
Em um LED bicolor de dois pinos, dois LEDs de cores diferentes são combinados em um encapsulamento e conectados inversamente em paralelo. A figura a seguir esquematiza esse LED:
A tabela da verdade a seguir mostra os estados possíveis para esse LED:
A | B | Estado |
0 | 0 | LEDs Apagados |
0 | 1 | Vermelho aceso |
1 | 0 | Verde aceso |
1 | 1 | LEDs apagados |
Com este tipo de LED, portanto, apenas uma das cores pode ser acesa por vez.
Já em um LED bicolor de três pinos, dois LEDs de cores diferentes são conectados em reverso (mas não em paralelo), e um pino comum (catodo) é conectado a GND. A figura a seguir mostra o esquema interno desse LED:
A tabela da verdade a seguir mostra os estados possíveis para esse LED:
A | B | Estado |
0 | 0 | LEDs Apagados |
0 | 1 | Vermelho aceso |
1 | 0 | Verde aceso |
1 | 1 | Ambos acesos |
Neste segundo tipo de LED bicolor, é possível acender um ou ambos os LEDs simultaneamente.
Nos próximos artigos falaremos mais sobre outros tipos de arranjos de LEDs, como os bargraphs e displays de sete segmentos.
[youtube https://www.youtube.com/watch?v=C0EvhO0UHgw]
Curso de Eletrônica - O que é um LDR (Light Dependent Resistor)
LDR (Light Dependent Resistor)
Um LDR (Resistor Dependente da Luz) é um tipo especial de resistor que apresenta uma mudança em sua característica de resistência elétrica quando submetido à ação da luz.
Também chamados de fotorresistores, apresentam um valor de resistência elevada em um ambiente escuro, e quando expostos à luz, têm a condutividade aumentada. Ou seja, oferecem baixa resistência elétrica quando iluminados.
Abaixo vemos os símbolos mais usuais para um LDR (o da esquerda é mais usual):
E a foto abaixo mostra um LDR típico:
Funcionamento de um LDR
Os LDRs são fabricados com materiais de alta resistência, como por exemplo o Sulfeto de Cádmio (Cds) ou Sulfeto de Chumbo (Pbs). Esses materiais possuem poucos elétrons livres quando colocados em ambientes escuros, e liberam elétrons quando há incidência de luz sobre eles aumentando sua condutividade. Chamamos a esse efeito de fotocondutividade.
Quando cessa a incidência de luz sobre o componente, os elétrons retornam à camada de valência e a resistência do material volta a aumentar.
No geral, os LDRs possuem resistências entre 1 MΩ e 10 MΩ no quando em ambiente escuro, e resistências que podem chegar a menos de 100 Ω quando iluminados.
Alguns LDRs são projetados para responder em luz infravermelha (como os de Sulfto de Chumbo - Pbs) ou ainda em luz ultravioleta.
Tipos de fotocondutores
Há dois tipos de fotocondutores:
Curva característica de resistência de um LDR
O gráfico a seguir mostra a curva característica de resistência de um LDR em relação à quantidade de luz incidente sobre ele, medida em lux:
Note que a resistência decai conforme a quantidade de luz incidente sobre o LDR aumenta. A quantidade de luz é medida em Lux, que mede o fluxo luminoso por unidade de área (iluminância); equivale a um lúmen por metro quadrado. A tabela a seguir mostra alguns valores típicos de iluminância em Lux para diversas fontes luminosas comuns:
Fonte de Luz | Iluminância em Lux |
Lua cheia | 0,27 a 1,0 |
Lâmpada incandescente de 60 W a 1 m | 50 |
Lâmpada fluorescente | 500 |
Luz do Sol direta | 32000 – 100.000 |
Pôr-do-sol | 400 |
Expectro de luz
O efeito de diminuição da resistência também depende do comprimento de onda da radiação que atinge o LDR. Na figura a seguir podemos ver um gráfico de resposta espectral de um LDR típico.
Você pode notar no gráfico que a resposta relativa do LDR considerado é muito maior entre cerca de 530 nm - ou seja, ele responde muito melhor à variação de luminosidade nessa faixa de comprimento de onda.
A resistência do LDR não varia instantaneamente quando suas condições luminosas variam. Existe uma latência (tempo) que decorre até que a resistência atinja um valor estável.
Expressamos esse tempo de recuperação em KΩ/s, sendo um valor típico cerca de 200KΩ/s na passagem de um ambiente claro para um escuro, e muito mais rápido no sentido inverso – em torno de apenas 10 ms na transição do escuro para o iluminado. Esse é um fator importante que deve ser levado em consideração ao criar projetos que utilizem LDRs para, por exemplo, acionar dispositivos de acordo com o nível de iluminação ambiente.
Falando em projetos que utilizam LDRs, listamos abaixo as principais aplicações desses componentes eletrônicos:
Exemplo de uso de LDR
O circuito abaixo é um exemplo clássico de aplicação de um LDR: um LED acionado pela ausência de luz:
Ao bloquear a incidência de luz sobre o LDR1, o transístor Q1 é polarizado e permite a passagem de corrente entre coletor e emissor, ativando o LED1.
É isso aí! Nesta lição exploramos os LDRs, resistores especiais que tem sua resistência elétrica alterada de acordo com a luz incidente.
[youtube https://www.youtube.com/watch?v=70UAjueO2Pg]
Curso de eletrônica - Eletricidade Estática e ESD
Eletricidade Estática e ESD
A Eletricidade Estática é uma forma de eletricidade que ocorre quando existe um acúmulo de cargas elétricas, positivas ou negativas, na superfície de um corpo, causando um desbalanceamento de cargas. O nome Estática indica que estas cargas não se deslocam como ocorre na eletricidade dinâmica (corrente elétrica), na qual as cargas elétricas fluem através de um condutor.
O acúmulo de cargas em corpos ocorre quando a superfície desses corpos se toca e se separa, sendo que ao menos uma dessas superfícies possui uma alta resistência à passagem de corrente - portanto, é um isolante. Então, se dois materiais forem atritados entre si, cargas elétricas (elétrons) podem ser transferidas de um corpo para outro, e quando eles são separados, estas cargas permanecem presentes em suas superfícies, de forma estacionária.
Praticamente todo mundo já interagiu em algum momento com um corpo carregado de eletricidade. Um exemplo clássico ocorre quando usamos uma blusa de lã - o atrito da lã com nosso próprio corpo provoca o acúmulo de cargas tanto na lã, como em nossa pele, e é comum retirarmos a blusa e sentirmos os pelos do braço se arrepiando, ou ainda ouvirmos estalos, ou, em alguns casos mais raros, até mesmo vermos pequenas faíscas, caso tiremos essa roupa no escuro. Esse efeito, chamado de Descarga Eletrostática, se da por conta da descarga de energia estática acumulada.
Como ocorre a eletrização dos corpos
Todos os materiais são formados por átomos, que geralmente contém a mesma quantidade de elétrons e prótons, por tanto, uma carga elétrica neutra (balanceada), pois os elétrons possuem carga negativa e os prótons, carga positiva. Os prótons permanecem no núcleo atômico e não podem ser retirados de lá, a não ser em uma reação nuclear no núcleo atômico também encontramos os Nêutrons, como o próprio nome diz, são neutros, não possuindo carga elétrica. Já os elétrons circundam o núcleo em "camadas" de distâncias variadas até o núcleo. Quando dois corpos quaisquer entram em contato físico, é possível que elétrons da camada mais externa dos átomos se movam de um corpo para outro, de modo que o corpo que recebe esses elétrons acaba com uma carga elétrica negativa acumulada (excesso de elétrons), e o corpo que perdeu elétrons fica com uma carga positiva (falta de elétrons). Quando separamos esses corpos, as cargas adquiridas se mantém, e então dizemos que ambos os corpos estão carregados com eletricidade estática - estão eletrizados.
Átomo Neutro - Mesmo número de prótons (bolinhas vermelhas) e elétrons (bolinhas pretas). As bolinhas azuis representam os nêutrons, que não influenciam nos fenômenos elétricos.
A figura a seguir ilustra esse processo de eletrização por atrito:
Eletrização por atrito de dois corpos
No geral, se um material tiver os elétrons na última camada com uma ligação fraca ao átomo, ele tende a perder elétrons, ao passo que materiais que possuam a última camada com poucos elétrons (pouco preenchida) tende a ganhar elétrons. Quando esses materiais são postos em contato, a transferência dos elétrons pode ocorrer. Damos a esse fenômeno o nome de "efeito triboelétrico". O prefixo tribo - desse termo vem do grego e significa "atritar, esfregar", o que mostra claramente como se dá o efeito.
A eletrização de um corpo também pode se dar por contato. Neste caso, um dos corpos considerados é um condutor que possui cargas elétricas em sua superfície (está eletrizado) e, ao tocar em um outro corpo com um potencial elétrico diferente, haverá a distribuição das cargas entre ambos os corpos, até que atinjam o equilíbrio entre si. Se os corpos forem então separados, ambos estarão carregados, com a mesma quantidade de cargas. Assim, é possível carregar um condutor transferindo para ele parte da carga contida no outro corpo.
Série Triboelétrica
A série triboelétrica é uma listagem de materiais ordenados de acordo com a separação de cargas que ocorre quando são trocados por outro corpo. Em outras palavras, a série triboelétrica mostra quais materiais adquirem carga positiva ou negativa quando atritados ou quando entram em contato entre si, e a intensidade relativa da quantidade de cargas adquiridas. Sempre que um material está numa posição mais inferior da série, e é atritado com um material em posição superior, ele adquire uma carga mais negativa ( e o material acima, uma carga mais positiva). Quanto mais longe os materiais estiverem entre si na listagem, maior a quantidade de cargas que eles podem adquirir se atritados um com o outro. Abaixo temos uma listagem resumida de materiais na série triboelétrica:
Materiais mais positivamente carregados (+)
Aço (sem carga)
Materiais mais negativamente carregados (-)
Portanto, se você atritar um dos materiais do final da lista com um dos materiais do inicio da lista, como por exemplo um pedaço de plástico polipropileno com um tecido de nylon, haverá a transferência de cargas (elétrons) entre eles, ficando ambos eletrizados - o material do início da lista mais positivamente, e o final, mais negativamente.
Podemos fazer um experimento caseiro e simples para demonstrar o acúmulo de eletricidade estática em corpos após o atrito entre eles: vamos esfregar um objeto de plástico contra um tecido sintético e então aproximar esse objeto de uma bolinha de isopor suspensa por um fio de linha. Veja o que acontece:
Perceba que a bolinha de isopor é atraída em direção ao plástico, devido às cargas elétricas acumuladas sobre este objeto. O mesmo efeito pode ser obtido, de forma ainda mais simples, penteando seu cabelo (seco) com um pente de plástico e então aproximando o pente de um montinho de papel picado sobre a mesa. Veja o que ocorre:
Os pedacinhos de papel picado são atraídos em direção ao pente, devido às cargas elétricas acumuladas sobre ele, que atraem os átomos que compõe o papel devido a diferença de cargas entre esses objetos.
Perigos da Eletricidade Estática: Descarga Eletrostática
Como vimos anteriormente, cargas elétricas podem se acumular na superfície dos corpos, incluindo um corpo humano, se objetos forem atritados entre si. A quantidade de cargas que podem se acumular dessa forma é altamente variável, dependendo de uma série de fatores, como os tipos de materiais envolvidos, duração do contato, umidade do ar, entre outros. A tensão elétrica que se acumula pode, na verdade chegar a milhares de volts em muitos casos. É isso, mesmo, você leu direito: milhares de volts. Uma simples esfregadela dos pés em um tapete ou carpete, mesmo calçando sapato, pode fazer com que seu corpo acumule mais de mil volts de eletricidade estática. Em casos extremos esta tensão pode chegar a quase 10.000 volts!
Já tocou na maçaneta da porta, ou mesmo no braço de outra pessoa e sentiu um leve choque? Se sim, o que você experimentou foi uma descarga eletrostática (ESD, electrostatic discharge). As cargas acumuladas no seu corpo foram rapidamente descarregadas sobre outro corpo que tinha muito menos cargas, ou então estava neutro (ou vice-versa). A corrente elétrica nesses casos é muito baixa, por isso você não sofre nada além da pequena descarga, porém a tensão é elevada. E é aí que podemos ter problemas.
Descarregar três ou quatro mil volts em uma maçaneta é uma coisa; agora imagine descarregar essa tensão elétrica sobre um corpo extremamente sensível, como um chip semicondutor (circuito integrado), que funciona com, por exemplo, 5V de tensão! Em um caso desses, é altamente provável que o chip seja destruído internamente – você não o verá em chamas, mas sua conexões internas podem ser totalmente destruídas, e o chip fica inutilizado. Este é um problema gigantesco em um laboratório de eletrônica ou de informática, onde técnicos manuseiam componentes eletrônicos e placas sensíveis, como por exemplo um microprocessador de computador ou uma placa de vídeo – elementos que tem custo elevado, inclusive, e que podem ser danificados permanentemente simplesmente por serem tocados por uma fração de segundo!
Para evitar esse tipo de problema é recomendado que o técnico ou engenheiro que vai manusear componentes delicados use algum equipamento de proteção contra ESD, como por exemplo uma pulseira anti-estática, que deve conectar o braço da pessoa a algum ponto aterrado, preferencialmente na bancada de trabalho. Assim, evita-se o acúmulo de cargas no corpo e diminui-se drasticamente o problema da ESD. Também recomenda-se armazenar componentes sensíveis à ESD em embalagens adequadas, como por exemplos sacos plásticos antiestáticos.
Procure também usar roupas fabricadas com tecidos de fibras naturais, como algodão, em vez de usar tecidos sintéticos quando estiver no laboratório ou trabalhando com dispositivos e componentes sensíveis, pois os tecidos sintéticos tendem a acumular cargas estáticas com muito mais facilidade.
Um outro grande perigo de uma descarga eletrostática se dá quando a descarga causa uma faísca em um ambiente onde há gases inflamáveis, como por exemplo em ambientes industriais. Muitos acidentes são causados por conta desse fenômeno, algumas vezes com prejuízo de vidas humanas, além do prejuízo material envolvido.
Veja abaixo uma simulação interativa e divertida da Universidade do Colorado sobre eletricidade estática e ESD. Clique na perna do John Travolta e a arraste para frente e para trás para carregar seu corpo com eletricidade estática; depois, clique e arraste seu braço para produzir uma descarga na maçaneta da porta:
[youtube https://www.youtube.com/watch?v=bLSyoeo8XeQ?list=PLUYgUK-nZTo-wLdsJ6P_XfhVZ0kh8Xczo]
Eletrônica - O que são Resistores de Pull-Up
Resistores de Pull-Up
Introdução
Resistores de Pull-Up são muito comuns quando usamos microcontroladores (MCUs) ou qualquer dispositivo que opere com lógica digital. Este tutorial irá explicar quando e onde usar resistores de pull-up, e então faremos um cálculo simples para mostrar porque os resistores de pull-up são importantes.
Leituras sugeridas
Abaixo listamos alguns conceitos que são importantes conhecer antes de prosseguir com o estudo dos pull-ups:
O que é um Resistor de Pull-Up
Digamos que você tenha um microcontrolador com um pino configurado como entrada. Se não houver nada conectado ao pino e seu programa efetuar a leitura do pino, ele será alto (VCC) ou baixo (OV)? É difícil dizer. Este fenômeno é conhecido como Estado Flutuante. Para prevenir esse estado desconhecido, um resistor de pull-up ou de pull-down irá assegurar que o pino esteja em um estado alto ou baixo, usando uma pequena quantidade de corrente.
Por motivo de simplicidade, vamos nos focar neste tutorial em resistores de pull-up, pois eles são mais comuns que os resistores de pull-down. Eles operam usando os mesmos princípios, exceto que o resistor de pull-up é conectado ao nível alto de tensão (geralmente 3,3v ou 5v), e o resistor de pull-down é conectado ao terra, ou nível baixo.
Os pull-ups são frequentemente usados com botões e chaves interruptoras. Veja o circuíto abaixo:
Com um resistor de pull-up, o pino de entrada irá ler um estado em nível alto quando o botão não está sendo pressionado. Em outras palavras, uma pequena quantidade de corrente flui entre VCC e o pino de entrada, de modo que o pino de entrada possui um valor próximo a VCC. Quando o botão é pressionado, ele conecta o pino de entrada diretamente a GND (ground). A corrente flui através do resistor até o terra, de modo que o pino agora apresenta nível baixo de tensão. Tenha em mente que, s e o resistor não estivesse no circuito, o botão conectaria o VCC diretamente ao GND, o que é uma situação muito ruim, e é conhecida como um curto circuito.
Bem, qual valor de resistor você deve escolher?
A resposta mais fácil e curta é que você quer um resistor cujo valor esteja próximo a 10 KΩ para ser usado como pull up.
Um resistor de valor baixo é chamado de pull-up forte (corrente maior flui), e um resistor de valor alto é chamado de pull-up fraco (menor corrente flui).
O valor do resistor de pull-up precisa ser escolhido para satisfazer a duas condições:
Para a primeira condição, não queremos um valor de resistência muito baixo. Quanto menor a resistência, mais energia será usada quando o botão é pressionado. Geralmente queremos um valor de resistência grande (como 10kΩ), mas não o queremos tão grande que chegue a causar conflito com a condição 2. Um resistor de 4MΩ poderia trabalhar como um pull-up, mas sua resistência é tão grande que pode não conseguir realizar seu trabalho em 100% do tempo.
A regra geral para a condição 2 é usar um resistor de pull-up (R1) que seja uma ordem de magnitude (1/10) menor do que a impedância de entrada (R2) do pino de entrada. Um pino de entrada em um microcontrolador possui uma impedância que pode variar entre 100 kΩ e 1 MΩ. Para esta discussão, impedância é só uma forma incrementada de dizer "resistência" e é representada pelo resistor R2 na figura acima. Assim, quando o botão não está sendo pressionado, uma quantidade muito pequena de corrente flui de VCC através do resistor R1 ao piano de entrada. O resistor de pull-up R1 e a impedância R2 do pino de entrada dividem a tensão, e esta tensão precisa ser alta o suficiente para que o pino de entrada apresente um nível alto quando lido.
Por exemplo, se você usar um resistor de 1 MΩ como pull-up R1 e a impedância do pino de entrada R2 estiver na ordem de 1 MΩ (formando um divisor de tensão), a tensão no pino de entrada será em torno de metade da tensão VCC, e o microcontrolador pode não registrar o pino como não estando no nível alto. Em um sistema 5v, o que um microcontrolador lê em um pino de entrada se sua tensão for de 2,5v? É um nível alto (HIGH) ou baixo (LOW)? O MCU não sabe e você ler esse valor tanto como nível alto quanto como nível baixo. Uma resistência entre 10kΩ e 100kΩ para R1 deve evitar a maioria dos problemas.
Como os resistores de pull-up são tão comumente necessários, muitos microcontroladores como o ATmega328 na plataforma Arduíno possuem pull-ups internos que podem ser habilitados ou desabilitados. Para habilitar os pull-ups internos em um Arduíno, você pode usar a seguinte linha de código na função setup():
pinMode(5, INPUT_PULLUP); // Habilita o resistor de pull-up interno no pino 5
Outra coisa a se notar é que quanto maior a resistência para o pull-up, mais devagar o pino responderá a mudanças de tensão. Isso ocorre porque o sistema que alimenta o pino de entrada é essencialmente um capacitor acoplado com o resistor de pull-up, desta maneira formando um filtro RC, e filtros RC levam algum tempo para carregar e descarregar. Se você tiver um sinal que mude realmente rápido (como um USB), um resistor de pull-up de valor elevado pode limitar a velocidade na qual o pino pode mudar de estado de forma confiável. É por isso que você verá frequentemente resistores de valores entre 1kΩ e 4.7KΩ em linhas de sinais USB.
Todos esses fatores contam na decisão sobre qual valor o resistor de pull-up deve ter.
igamos que você queira limitar a corrente a aproximadamente 1mA quando o botão é pressionado no circuito acima, onde o valor de VCC 5V.Qual valor de resistência você deve usar?
É fácil demonstrar como calcular o resistor de pull-up usando a Lei de Ohm:
Em relação ao esquema acima, a Lei de Ohm agora é:
Rearranjamos a equação acima com um pouco de álgebra simples para resolvê-la para o resistor:
Lembre-se de converter todas as unidades em volts, ampères e ohms antes de efetuar o cálculo (por ex,.: 1mA = 0,001 Ampères). E solução então é usar um resistor de 5kΩ.
[youtube https://www.youtube.com/watch?v=AQ3PeiEw1gg&w=560&h=315]
Curso de Eletrônica - O que é eletricidade
O que é eletricidade?
Inicio
A eletricidade nos rodeia - tecnologias como telefones celulares, computadores, lâmpadas, aparelhos de ar-condicionado e vídeo-games funcionam à base de energia elétrica. É quase impossível não depender da eletricidade em nosso mundo moderno. E, mesmo que você que você consiga se "desplugar", a eletricidade ainda é encontrada na natureza, desde os raios em uma tempestade até os sinais elétricos nas sinapses em nossos neurônios. Mas, o que exatamente é a eletricidade? Bem, esta é uma questão um tanto quanto complicada, e quanto mais nos aprofundamos no assunto, mais questões vão surgindo - e na verdade, não há uma resposta definitiva, apenas representações abstratas de como a eletricidade interage com o meio ao nosso redor.
A Eletricidade é um fenômeno natural que ocorre na natureza e se apresenta de muitas formas diferentes. Vamos nos focar neste tutorial na noção de Corrente Elétrica, o fenômeno que alimenta nossos equipamentos eletro-eletrônicos. Vamos tentar entender como a eletricidade flui de uma fonte de energia através de fios, acendendo LEDs, acionando motores e alimentando nossos dispositivos de comunicação.
A Eletricidade é definida sucintamente com o fluxo de cargas elétricas, mas há muito mais por trás dessa simples declaração. De onde as cargas vem? Como elas se movem? Para onde vão? Como a carga elétrica provoca movimento mecânico, ou produz luz? São muitas as questões a serem respondidas, e para começar vamos precisar analisar o que ocorre em nível atômico na matéria, estudando um pouco sobre os átomos que constituem basicamente tudo com o que nós interagimos na vida.
Por tanto, vamos falar um pouco sobre física básica, abordando conceitos como força, energia, átomos, partículas atômicas e campos. Não nos aprofundaremos em demasia nesses assuntos, e caso queira conhecer mais a respeito, deverá consultar outras fontes - como as que citaremos no final do artigo.
Átomos
Para entender os fundamentos da eletricidade, precisamos primeiramente entender os átomos, que são blocos fundamentais na construção da matéria. Os átomos se apresentam em diferentes formas nos elementos químicos, como hidrogênio, oxigênio, ferro e cobre. Os átomos de muitos tipos podem se combinar para formar moléculas, as quais constituem a matéria que nós podemos ver e tocar fisicamente.
Os átomos são muito, mas muito pequenos, com no máximo cerca de 300 pm (picômetros) de tamanho (3 x 10-10 ou 0.0000000003 metros!). Uma moedinha de cinco centavos pode ter cerca de 3,2 x 1022 átomos (32.000.000.000.000.000.000.000 de átomos) de metal em sua contribuição.
Porém, mesmo o átomo não é pequeno o suficiente para explicar como funciona a eletricidade. Precisamos mergulhar mais a fundo e observar os blocos de construção dos próprios átomos, que são as partículas subatômicas - em nosso caso, prótons, elétrons e nêutrons.
Blocos de Construção dos Átomos
Um átomo é "construído" com uma combinação de três partículas distintas: prótons e os nêutrons se localiza, densamente unidos. Rodeando o núcleo encontramos grupos de elétrons em órbita, uma região chamada de "eletrosfera". Veja um modelo conceitual simples de átomo na figura a seguir:
Um modelo de átomo muito simplificado. Não está em escala, mas é útil para entender como um átomo é constituído. Um núcleo central de prótons e nêutrons é rodeado por elétrons em órbita (a exceção é o átomo de hidrogênio, que não possui nêutrons).
Todo átomo tem ao menos um próton em seu núcleo. O número de prótons no átomo é importante, por que ele define que elemento químico o átomo representa. Por exemplo, um átomo com apenas um próton é o hidrogênio, um átomo com 29 prótons é o cobre, e um átomo com 79 prótons é o ouro. Esta contagem do número de prótons é conhecida como Número Atômico do átomo.
Os nêutrons no núcleo servem a um propósito muito importante: eles mantém os prótons unidos no núcleo e determinam o isótopo do átomo. Mas os nêutrons não são importantes em nosso estudo sobre eletricidade, de modo que não falaremos sobre eles neste tutorial.
Já os elétrons são críticos para o funcionamento da eletricidade - aliás, a própria palavra eletricidade é derivada em elétron. Em sua forma mais estável, um átomo terá o mesmo número de elétrons e de prótons, sendo então um átomo neutro. De acordo com o modelo atômico de Bohr mostrado abaixo, um núcleo com 29 prótons é rodeado por exatos 29 elétrons:
O modelo atômico de Bohr é um modelo muito útil para nossos estudos sobre eletricidade.
Os elétrons não ficam presos eternamente aos átomos. Os elétrons na órbita ("camada") mais externa do átomo são chamados de valência. Se houver força externa suficiente, um elétron da camada valência pode escapar da órbita do átomo e se tornar livre. Elétrons livres nos permite movimentar cargas, o que é preceito fundamental da eletricidade. Vamos falar então sobre as cargas elétricas.
Cargas Circulantes
Como mencionamos anteriormente, a eletricidade é definida como o fluxo de cargas elétricas. Carga é uma propriedade da matéria, assim como massa, volume ou densidade. Podemos medir as cargas elétricas, determinando a quantidade de cargas que um copo possui. E um outro conceito chave no entendimento das cargas elétricas é que elas existem em dois tipos: positivas (+) ou negativas (-).
Para que possamos mover as cargas necessitamos de portadores de carga, e eles são os elétrons. Os elétrons carregam uma carga negativa (por convenção), enquanto os prótons possuem carga positiva. Já os nêutrons não possuem carga - são "neutros". Os elétrons e os prótons carregam a mesma quantidade de carga - apenas o tipo é diferente.
Um átomo de lítio
As cargas dos elétrons e dos prótons são importantes, pois elas nos fornecem meios de exercer força sobre elas: a Força Eletrostática
Força Eletrostática
A Força Eletrostática, também conhecida como Lei de Coulomb, é uma força que opera entre cargas. Cargas do mesmo tipo se repelem mutuamente, enquanto cargas de tipos opostos se atraem.
A quantidade de força que age sobre duas cargas depende da distância entre elas. Quanto mais próximas duas cargas estiverem entre si, maior a força, tanto de atração, quanto de repulsão. Graças à força eletrostática, os elétrons "empurração" outros elétrons e serão atraídos por prótons. Esta força é parte da "cola" que mantém os átomos unidos, e é também a força que precisamos para fazer como que os elétrons e, consequentemente, as cargas possam fluir.
Fazendo com que as cargas circulem
Os elétrons nos átomos podem agir como portadores de carga, porque cada elétron carrega uma carga negativa. Se pudermos libertar um elétron de um átomo e força-lo a se mover, poderemos criar eletricidade.
Considere o modelo atômico de um átomo de cobre, um dos melhores materiais para carregar cargas elétricas. Seu estado estável, o cobre possui 29 prótons em seu núcleo e um número igual de elétrons orbitando ao redor desse núcleo. Os elétrons orbitam em distâncias variáveis do núcleo do átomo, e elétrons mais próximos ao núcleo sofrem uma força de atração muito maior do que os elétrons posicionados em órbitas mais distantes. Os elétrons mais externos de um átomo são chamados de elétrons de valência, e requerem pouca força para se libertarem do átomo em questão.
Diagrama de átomo de cobre: 29 prótons no núcleo, rodeados por camadas de elétrons em circulação. Os elétrons mais próximos do núcleo são muito difíceis de remover enquanto os elétrons de valência, na camada externa precisam de pouca energia para serem ejetados do átomo.
Usando força eletrostática suficiente nos elétrons de valência - tanto "empurrando" com um outra carga negativa "puxando" com uma carga positiva - podemos ejetar o elétron da órbita ao redor do átomo, criando assim um elétron livre.
Consideramos agora um fio de cobre: matéria preenchida com incontáveis átomos de cobre (na verdade, podemos contá-los!). Enquanto nosso elétron livre flutua no espaço entre os átomos, ele é empurrado e puxado pelas cargas ao redor daquele espaço. Neste caos o elétron livre irá eventualmente encontrar um outro átomo para se acomodar; desta forma, a carga negativa deste elétron irá ejetar outro elétron da camada de valência do átomo.
elétron irá ejetar outro elétron da camada de valência do átomo. Agora temos um novo elétron vagando pelo espaço livre, eventualmente agindo como o anterior. Este efeito em cadeia pode continuar indefinidamente e criar um fluxo de elétrons denominado Corrente Elétrica.
Pente atraindo papel picado por meio de eletricidade estática.
Ao trabalharmos com eletrônica, geralmente não teremos de lidar com eletricidade estática. Quando o fizermos, será geralmente para tentar proteger componentes eletrônicos sensíveis contra descargas eletrostáticas, que podem danificá-los facilmente. Medidas preventivas contra eletricidade estática incluem o uso de pulseiras anti-estáticas, mantas de borracha e outros tipos de equipamento de segurança.
Alguns equipamentos fazem uso do fenômeno da eletricidade estática, como por exemplo as impressoras a Laser, que utilizam cargas estáticas para formarem as imagens a serem impressas no papel.
Eletricidade dinâmica é a forma de eletricidade que permite a existência de todos os nossos equipamentos eletrônicos. Esta forma de eletricidade existe quando as cargas são capazes de fluir em movimento constante. De forma oposta à eletricidade estática onde as cargas se acumulam e permanecem em descanso, na eletricidade dinâmica as cargas estão sempre se movimentando. Este é o tipo de eletricidade com a qual nos ocuparemos no resto do tutorial.
Para que possa fluir, a corrente elétrica necessita de um circuito, que pode ser descrito como um loop fechado de materiais condutores. Um circuito pode ser tão simples quanto um fio conectado ponta com ponta, porém circuitos realmente úteis normalmente contém uma combinação de fios e outros componentes que controlam o fluxo de eletricidade. Um circuito, porém, não pode ter partes isolantes internamente que o dividam em seções separadas.
Se você tiver um fio de cobre e quiser induzir um fluxo de elétrons através dele, todos os elétrons livres precisam fluir na mesma direção. O cobre é um excelente condutor, perfeito para fazer cargas fluírem. Se um circuito feito com fios de cobre é quebrado, as cargas não fluirão através do ar, o que as impedirá também de prosseguir a partir do ponto onde o fio se partiu.
Por outro lado, se o fio for conectado nas duas pontas, todos os elétrons possuirão um átomo vizinho e poderão fluir na mesma direção geral.
Após essas reflexões, conseguimos entender como os elétrons podem fluir (se movimentar num condutor), mas como fazemos para que eles entrem em movimento a princípio? Então, uma vez que os elétrons estejam fluindo, como eles produzem a energia necessária para acender lâmpadas ou girar motores, por exemplo? Para entendermos como isso ocorre, vamos estudar os Campos Elétricos.
Campos Elétricos
Vimos anteriormente, de forma sucinta, como os elétrons fluem através da matéria para criar eletricidade. Agora, precisamos de uma fonte para induzir esse fluxo de elétrons. Geralmente, essa fonte de fluxo de elétrons virá na forma de um campo elétrico.
Um campo é uma ferramenta que usamos para modelar interações físicas que não envolvem nenhum tipo de contato observável. Os campos não podem ser vistos, pois eles não possuem aparência física, porém o efeito que eles exercem é bem real.
Todos nós estamos familiarizados com um campo em particular: o Campo Gravitacional Terrestre, que é o efeito de um corpo massivo atraindo outros corpos. O campo gravitacional da Terra pode ser modelado com um conjunto de vetores que apontam todos para o centro do planeta; independente de onde você estiver na superfície do planeta, você sentirá a força te puxando em direção ao centro:
A força ou intensidade dos campos não é uniforme em todos os pontos do campos. Quanto mais longe estivermos da origem do campo, menor será o efeito do campo sentido. A magnitude do campo gravitacional terrestre diminui a medida em que nos afastamos do centro do planeta.
Ao continuar nossa exploração sobre campos elétricos lembre-se de como o campo gravitacional da Terra funciona, pois ele possui muita similaridade com os campos elétricos. Campos gravitacionais exercem uma força nos objetos que possuem massa, e os campos elétricos exercem uma força em objetos que possuam cargas.
Campos elétricos são uma ferramenta importante para compreendermos como a eletricidade surge e continua a fluir. Os campos elétricos descrevem as forças que atraem ou repelem cargas no espaço entre elas. Comparados ao campo gravitacional da Terra, os campos elétricos possuem uma diferença muito importante: enquanto o campo gravitacional geralmente atrai apenas outros objetos que possuam massa, os campos elétricos repelem cargas com a mesma frequência com que as atraem.
A direção dos campos elétricos é sempre definida como a direção para a qual uma carga de teste positiva se moveria se fosse lançada dentro do campo. A carga de teste tem de ser infinitamente pequena, para evitar que sua própria carga influencie o campo elétrico em si.
Podemos então começar a construir campos elétricos para cargas solitárias, positivas e negativas. Se você soltar uma carga de teste positiva próxima a uma carga negativa, a carga de teste será atraída em direção da carga negativa. Então, para uma carga negativa única nós podemos desenhar as setas de nosso campo elétrico apontando para dentro em todas as direções. A mesma carga de teste despejada próxima a outra carga positiva resultaria em repulsão entre ambas, o que significa que nós desenharíamos setas “saindo” da carga positiva:
Campos elétricos de cargas únicas. Uma carga negativa tem um campo elétrico em direção interna porque ela atrai cargas positivas. A carga positiva, por sua vez, possui um campo elétrico em sentido externo, pois repele cargas de mesmo tipo.
Grupos de cargas elétrica podem ser combinados para formarem campos elétricos mais completos:
O campo elétrico uniforme visto acima “aponta” para longe das cargas positivas, em direção Às negativas. imagine uma carga de teste minúscula inserida no campo elétrico formado; ela seguiria a direção das setas. Como vimos, a eletricidade geralmente envolve o fluxo dos elétrons – cargas negativas – que fluem contra campos elétricos.
Os campos elétricos nos fornecem a força necessária para induzir um fluxo de corrente. Um campo elétrico em um circuito é como uma “bomba de elétrons”: uma grande fonte de cargas negativas que podem impulsionar os elétrons, os quais fluirão através do circuito em direção à massa de cargas positivas.
Quando aproveitamos a energia elétrica para acionar nossos circuitos, equipamentos e gadgets, estamos realmente transformando energia. Circuitos eletrônicos devem ser capazes de armazenar energia e transformá-la em outras formas, como calor, luz ou movimento. A energia armazenada de um circuito é chamada de energia potencial elétrica.
Para entendermos a energia potencial precisaremos entender a energia de um modo geral. Energia é definida como a habilidade de um objeto de realizar trabalho sobre outro objeto, o que significa mover esse objeto por uma certa distância. A energia existe em muitas formas, algumas das quais podemos ver (como a energia mecânica) e outras que não podemos ver (como energia química ou elétrica) Independente de qual forma seja considerada, a energia existe em um de dois estados: Cinética e Potencial.
Um objeto possui energia cinética quando está em movimento. A quantidade de energia cinética que um objeto possui depende de sua massa e velocidade. Já a energia potencial é uma forma de energia armazenada quando um objeto está em repouso. Ela descreve quanto trabalho o objeto pode realizar se colocado em movimento. É um tipo de energia que nós podemos, geralmente, controlar. Quando um objeto é colocado em movimento, sua energia potencial se transforma em energia cinética.
Voltemos à gravidade como exemplo. Uma bola de boliche que esteja em repouso (parada) no topo de um edifício possui uma grande quantidade de energia potencial (armazenada). Uma vez que seja arremessada lá de cima, a bola – atraída pelo campo gravitacional – acelera em direção ao chão. Conforme a bola acelera, energia potencial é convertida em energia cinética (energia do movimento). Eventualmente toda a energia da bola será convertida de potencial para cinética, e então transferida para o chão (ou para o objeto como qual a bola se chocar). Quando a bola está no chão, possui muito pouca energia potencial.
Da mesma forma que a massa em um campo gravitacional possui energia potencial gravitacional, cargas em um campo elétrico possuem energia potencial elétrica. A energia potencial elétrica de uma carga descreve quanta energia armazenada ela possui, e quando colocada em movimento por uma força eletrostática, essa energia se torna cinética, e então a carga pode realizar trabalho.
Como a bola de boliche no alto do edifício, uma carga positiva nas proximidades de outra carga positiva possui energia potencial elevada; se deixada livre para se mover, a carga seria repelida pela outra carga igual. Já uma carga de teste positiva colocada próxima a uma carga negativa teria pouca energia potencial, de forma análoga à bola de boliche no chão.
Para incutir algo com energia potencial, temos de realizar trabalho movendo o objeto por uma certa distância. No caso da bola de boliche, o trabalho vem de carregarmos a bola por dezenas de andares, subindo, no sentido contrário ao do campo gravitacional. De forma similar, trabalho deve ser realizado para empurrar uma carga positiva contra a direção de um campo elétrico (tanto em direção a outra carga positiva, quanto para longe de uma carga negativa). Quanto mais longe a carga for deslocada no campo, mais trabalho teremos de realizar. Igualmente, se você tentar empurrar uma carga negativa para longe de uma carga positiva – contra o campo elétrico – terá de realizar trabalho.
Para uma carga localizada em um campo elétrico sua energia potencial elétrica dependerá do tipo (positiva ou negativa), quantidade de carga, e sua posição no campo. A energia potencial elétrica é medida na unidade joule (J).
O potencial elétrico é criado a partir de energia potencial elétrica para ajudar a definir quanta energia é armazenada em um campo elétrico. É um outro conceito que nos auxilia a modelar o comportamento de campos elétricos. Potencial Elétrico não é a mesma coisa que energia potencial elétrica!
Em qualquer ponto de um campo elétrico o potencial elétrico é a quantidade de energia potencial elétrica dividida pela total de carga naquele ponto. Tiramos a quantidade de cargas da equação e ficamos com uma idéia de quanta energia potencial áreas específicas do campo elétrico podem fornecer. O potencial elétrico é medido em unidades de joules por coulomb (J/C), os quais nós definimos como sendo um Volt (V).
Em qualquer campo elétrico há dois pontos de potencial elétrico que são de interesse significativo para nós. Há o ponto de alto potencial, onde uma carga positiva teria a energia potencial mais alta possível, e há o ponto de baixo potencial, onde uma carga teria a energia potencial mais baixa possível.
Um dos termos mais comuns que discutimos quando falamos de eletricidade é a voltagem (tensão). Uma tensão é a diferença de potencial entre dois pontos em um campo elétrico. A tensão elétrica nos dá uma ideia de quanta força (“pressão”) um campo elétrico possui.
Agora que entendemos os conceitos de potencial e energia potencial, vamos discutir outro ponto extremamente importante: A corrente elétrica.
Após estudar um pouco de física de partígulas, teoria de campos e energia potencial, sabemos o suficiente para fazer com que a eletricidade flua. Vamos criar um circuito!
Primeiro, revisemos os ingredientes de que precisamos para “fazer” eletricidade:
A definição de eletricidade é o Fluxo de Cargas. Geralmente nossas cargas serão carregadas por elétrons livres.
Elétrons (carga negativa) são retidos fracamente em átomos de materiais condutores. Com um pequeno empurrãozinho podemos libertar elétrons de átomos e fazê-los se movimentarem em uma direção geral uniforme.
Um circuito fechado de material condutor fornece um caminho para que os elétrons fluam continuamente.
As cargas são impelidas por um campo elétrico. Precisamos de uma fonte de potencial elétrico (tensão / voltagem), a qual empurrará os elétrons de um ponto de baixa energia potencial para um ponto de energia potencial mais elevada.
Baterias são fontes de energia comuns, as quais convertem energia química em energia elétrica. Elas possuem dois terminais, os quais se conectam ao resto do circuito. Em um terminal há um excesso de cargas negativas, enquanto no outro terminal se acumulam as cargas positivas. Temos aqui então uma diferença de potencial pronta para entrar em ação.
Se nós conectarmos nosso fio “recheado” de átomos condutores de cobre à bateria, o campos elétrico irá influenciar os elétrons livres (de carga negativa) nos átomos do cobre. Empurrados a partir do terminal negativo e atraídos pelo terminal positivo de forma simultânea, os elétrons no cobre se moverão de átomo em átomo criando o fluxo de cargas que nós conhecemos como eletricidade – Corrente Elétrica.
Após um segundo do fluxo da corrente, os elétrons terão se movido na verdade muito pouco – frações de centímetro. Contudo, a energia produzida pelo fluxo de corrente é enorme, especialmente por não haver nada no circuito para diminuir o fluxo ou consumir a energia. Conectar um condutor puro diretamente aos terminais de uma fonte de energia não é uma boa idéia. A energia se move de forma muito rápida através do sistema (quase à velocidade da luz!) e é transformada em calor no fio, o qual pode rapidamente se fundir (derreter) ou entrar em combustão.
Em vez de desperdiçar essa energia toda, sem mencionar que a bateria pode ser danificada e o fio pegar fogo, vamos construir um circuito que faz algo realmente útil. Geralmente um circuito elétrico irá transformar energia elétrica em energia de outra forma – luz, calor, movimento, etc. Se conectarmos uma pequena lâmpada à bateria com os fios conectados entre ambos, teremos um circuito simples, porém funcional:
Esquema: Uma bateria (à esquerda) conectada a uma lâmpada (à direita). O circuito é completado quando a chave (no topo) é fechada. Com o circuito fechado, os elétrons podem fluir, empurrados a partir do terminal negativo da bateria através da lâmpada, em direção ao terminal positivo da bateria.
Enquanto os elétrons se movem a passo de tartaruga, o campo elétrico afeta o circuito inteiro quase instantaneamente (praticamente velocidade da luz!) Os elétrons ao longo do circuito, quer esteja no potencial mais baixo, mais alto, ou próximos à lâmpada, são influenciados pelo campo elétrico. Quando a chave é fechada e os elétrons são submetidos ao campo elétrico, todos os elétrons no circuito (na camada de valência!) começam a fluir praticamente ao mesmo tempo. As cargas mais próximas à lâmpada a atravessarão e começarão a transformar a energia, de elétrica em luminosa (e térmica também).
Neste tutorial nós mostramos apenas uma minúscula parte do assunto. Ainda há muitos conceitos a serem explorados, e o faremos em nossos próximos tutoriais sobre Eletricidade e Eletrônica. A partir daqui, os próximos passos serão entender a Lei de Coulomb (um pouquinho de matemática…), trabalhar as grandezas elétricas (Tensão, Resistência, Corrente, Potência) e a Lei de Ohm.