O que é?
O termo WiFi é uma abreviação de Wireless Fidelity, também uma alusão à expressão “Hi-Fi” (High Fidelity). O nome foi registrada pela empresa de tecnologia Wi-Fi Alliance, que também foi responsável por trazer a tecnologia wireless ao Brasil. Tal nome se popularizou de tal forma que hoje o termo é atribuído a qualquer tecnologia WLAN (Wireless Local Area Network).
Como funciona?
O WiFi funciona através de ondas de rádio, assim como as TVs, aparelhos de rádio e celulares. A antena do roteador é a responsável por captar e emitir os sinais, bem como decodificá-los. E é assim que os aparelhos conseguem trocar informações.
Essa troca de informações pode ocorrer em duas frequências diferentes, 2.4GHz ou 5 GHz. E quanto mais alta a frequência, maior é a capacidade de transferência de dados.
Também existe um protocolo que os aparelhos precisam seguir para se entenderem, que é o padrão 802.11. Tal padrão é uma série de regulamentações que especifica regras de transmissão e codificação para a troca de informações. Esse protocolo apresenta algumas variações que são sinalizadas pelas letras “a”, “b”, “g” e “n”, a depender da frequência utilizada, do alcance máximo da rede e da velocidade máxima de transmissão.
Por exemplo, o 802.11a transmite as informações na frequência de 5GHz com velocidade de até 54 megabits por segundo. O 802.11b usa a frequência de 2,4GHz e sua velocidade chega a até 11 megabits por segundo. Enquanto o 802.11g é mais rápido que a versão “b”, mesmo usando a frequência de 2,4GHz, e chega a até 54 megabits por segundo. Já o 802.11n foi criado com o objetivo de aumentar tanto o alcance como o sinal de transmissão e chega a até 140 megabits por segundo.
História
Todas essas “letrinhas”, como “b”, “g” e o “n”, que sucedem o número 802.11, contam, também, um pouco da história do WiFi.
802.11: esta é a nomenclatura inicial para as redes sem fio, desenvolvida em 1997 pelo Instituto de Engenheiros Eletricistas e Eletrônicos (IEEE). Ainda que uma grande inovação para a época, o padrão apresentava uma taxa de transferência muito baixa, próxima a 2 megabytes por segundo. Por conta disso, o padrão foi descontinuado.
802.11b: desenvolvido dois anos depois do anterior, este apresentava uma taxa de transferência de até 11 megabytes por segundo. Porém, este padrão fazia uso das mesmas frequências de operação de diversos outros aparelhos domésticos, como microondas e telefones sem fio, que também operam próximos à 2.4GHz. Isso poderia causar interferências dependendo do local em que o roteador se encontrava.
802.11a: este padrão trabalhava com uma transmissão de 54 megabytes por segundo e atuava na frequência de 5GHz. Apesar de conseguir transferir os dados com mais velocidade, a distância entre dispositivos era mais curta. Este sistema tinha um custo mais alto e teve baixa quantidade de vendas se comparado ao anterior. Seu desenvolvimento se deu em paralelo ao padrão b. Porém, o modelo não teve muito adesão do mercado.
802.11g: este padrão trouxe a junção das vantagens trazidas pelos dois modelos anteriores. Com isso, este é capaz de transferir dados a 54 megabytes por segundo, usando frequências próximas a 2.4GHz para uma melhor abrangência de sinal.
802.11n: este é baseado em uma metodologia chamada MIMO (Multiple Input Multiple Output), que realiza múltiplas conexões de entrada e saída para melhorar as taxas de transferência e abrangência do sinal.
E se construíssemos nosso próprio WIFI?
O WiFi é uma tecnologia de comunicação que consegue transmitir informação através de ondas eletromagnéticas na escala das ondas de rádio. Observado a Figura 1, é possível observar como é o espectro eletromagnético.
Figura 1. Espectro eletromagnético (Foto: [1]).
Para fins didáticos e experimentais, podemos construir um WiFi de forma que possamos ver seu funcionamento. Nesse sentido, não podemos usar o mesmo comprimento de onda usado pela tecnologia WiFi, pois este, é invisível para o olho humano. Por esse motivo, construiremos um protótipo utilizando a luz visível.
Para isso, utilizaremos duas placas Arduino, um LDR (Light Dependent Resistor), um resistor de 10KΩ para pull down do LDR, dois LED de cores diferentes e dois resistores de 330Ω para os LED.
É possível observar os circuitos por meio da Figura 2 e Figura 3.
Figura 2. Montagem dos LED e do LDR.
Figura 3. Montagem dos LED e do LDR II.
Foram utilizados os LED das cores vermelho e azul para representar o sinal binário 1 e 0, respectivamente. Para isso, calibramos os intervalos lidos pelo LDR para que o software embarcado na placa Arduino pudesse diferenciá-los. É possível observar os LED acesos na Figura 4 e na Figura 5.
Figura 4. LED azul acesso.
Figura 5. LED vermelho aceso.
Com o circuito pronto, podemos partir para a programação. A ideia é que os LED consigam transmitir informações para o LDR. Com esse objetivo, segue o código usado para o transmissor, composto pelos LED azul e vermelho.
Para o teste, o receptor deve receber a palavra “OLA” em código ASCII.
const int ledAzul = 8; const int ledVermelho = 7; void setup(){ // put your setup code here, to run once: pinMode(ledAzul, OUTPUT); pinMode(ledVermelho, OUTPUT); } void loop(){ int palavra[21] = {1,0,0,1,1,1,1, 1,0,0,1,1,0,0, 1,0,0,0,0,0,1}; // OLA for(int i = 0; i < 21; i++){ if(palavra[i] == 1){ digitalWrite(ledVermelho, HIGH); delay(500); digitalWrite(ledVermelho, LOW); } else{ digitalWrite(ledAzul, HIGH); delay(500); digitalWrite(ledAzul, LOW); } } digitalWrite(ledVermelho, LOW); digitalWrite(ledAzul, LOW); delay(2000); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 const int ledAzul = 8 ; const int ledVermelho = 7 ; void setup ( ) { // put your setup code here, to run once: pinMode ( ledAzul , OUTPUT ) ; pinMode ( ledVermelho , OUTPUT ) ; } void loop ( ) { int palavra [ 21 ] = { 1 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 } ; // OLA for ( int i = 0 ; i < 21 ; i ++ ) { if ( palavra [ i ] == 1 ) { digitalWrite ( ledVermelho , HIGH ) ; delay ( 500 ) ; digitalWrite ( ledVermelho , LOW ) ; } else { digitalWrite ( ledAzul , HIGH ) ; delay ( 500 ) ; digitalWrite ( ledAzul , LOW ) ; } } digitalWrite ( ledVermelho , LOW ) ; digitalWrite ( ledAzul , LOW ) ; delay ( 2000 ) ; }
Do lado do receptor, o código deve ser conseguir ler as informações enviadas pelos dois LED e decodificar, conforme abaixo:
const int receptor = A0; int valor; void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: int palavra[21]; valor = analogRead(receptor); //Serial.print("Valor: "); //Serial.println(valor); Serial.println("Aguardando mensagem..."); if(valor > 400 && valor < 500){ //ambiente Serial.println(); Serial.println("Recebendo mensagem..."); Serial.println(); delay(1950); for(int i = 0; i < 21; i++){ valor = analogRead(receptor); if(valor > 800 && valor < 900){ //vermelho palavra[i] = 1; } else if(valor > 700 & valor < 800){ //azul palavra[i] = 0; } delay(500); } Serial.print("Mensagem: "); for(int j = 0; j < 21; j++){ Serial.print(palavra[j]); } delay(1500); Serial.println(); Serial.println(); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 const int receptor = A0 ; int valor ; void setup ( ) { // put your setup code here, to run once: Serial . begin ( 9600 ) ; } void loop ( ) { // put your main code here, to run repeatedly: int palavra [ 21 ] ; valor = analogRead ( receptor ) ; //Serial.print("Valor: "); //Serial.println(valor); Serial . println ( "Aguardando mensagem..." ) ; if ( valor > 400 && valor < 500 ) { //ambiente Serial . println ( ) ; Serial . println ( "Recebendo mensagem..." ) ; Serial . println ( ) ; delay ( 1950 ) ; for ( int i = 0 ; i < 21 ; i ++ ) { valor = analogRead ( receptor ) ; if ( valor > 800 && valor < 900 ) { //vermelho palavra [ i ] = 1 ; } else if ( valor > 700 & valor < 800 ) { //azul palavra [ i ] = 0 ; } delay ( 500 ) ; } Serial . print ( "Mensagem: " ) ; for ( int j = 0 ; j < 21 ; j ++ ) { Serial . print ( palavra [ j ] ) ; } delay ( 1500 ) ; Serial . println ( ) ; Serial . println ( ) ; } }
No Vídeo 1 é possível observar o funcionamento do transmissor.
No Vídeo 2 é possível ver a transmissão da palavra “OLA” acontecendo.
Conclusão
Nesse projeto foi possível construir um modelo didático para um sistema de WiFi. Com esse protótipo, foi possível alcançar incríveis 0.000002 Mbps a uma distância de 3 cm.
Será que é possível deixar esse sistema mais rápido? Se sim, quão mais rápido?
Será que é possível aumentar sua distância de cobertura máxima? Se sim, quão mais distante?
Perguntas essas que poderão ser respondidas em futuros artigos.
Além disso, também é possível implementar um algoritmo capaz de codificar uma mensagem, digitada no Serial Monitor do Arduino IDE, para código ASCII, bem como um decodificador dessa mensagem do lado do receptor. Isso tornaria o modelo um pouco mais próximo do real. Mas e você, tem também alguma ideia de melhoria desse sistema?
Referências
[1] Toda Matéria. Espectro Eletromagnético. 2017. Disponível em: . Acesso em 07/08/2020.
William Lehr, Lee W McKnight. Wireless Internet access: 3G vs. WiFi?. Telecommunications Policy.
ELSYS. Wi-Fi. 2017. Disponível em:
Willian Fonseca. Wireless: diferenças entre as gerações b, g e n. 2009. Disponível em:
Wikipedia. IEEE 802.11b-1999. 2020. Disponível em:
Saiba Mais
Li-Fi: Conexões sem fio sem rádios
Bluetooth Wi-Fi ou ambos? Sua escolha sem fio