- Componentes necessários
- Breve introdução ao Li-Fi
- Seção do transmissor Li-Fi usando Arduino
- Seção do receptor Li-Fi usando Arduino
- Codificação Arduino para Li-Fi
Li-Fi (Light Fidelity) é uma tecnologia avançada que permite a transferência de dados usando comunicação ótica, como luz visível. Os dados Li-Fi podem viajar através da luz e, em seguida, interpretados no lado do receptor usando qualquer dispositivo sensível à luz como LDR ou fotodiodo. A comunicação Li-Fi pode ser 100 vezes mais rápida do que Wi-Fi.
Aqui neste projeto, iremos demonstrar a comunicação Li-Fi usando dois Arduino. Aqui, os dados de texto são transmitidos usando LED e teclado 4x4. E é decodificado no lado do receptor usando LDR. Explicamos anteriormente o Li-Fi em detalhes e usamos o Li-Fi para transferir sinais de áudio.
Componentes necessários
- Arduino UNO
- Sensor LDR
- 4 * 4 teclado
- 16 * 2 LCD alfanumérico
- Módulo de interface I2C para LCD
- Tábua de pão
- Conectando Jumpers
- LED de 5 mm
Breve introdução ao Li-Fi
Conforme discutido acima, Li-Fi é uma tecnologia de comunicação avançada que pode ser 100 vezes mais rápida do que a comunicação Wi-Fi. Usando esta tecnologia, os dados podem ser transferidos usando fontes de luz visíveis. Imagine, se você pudesse acessar a internet de alta velocidade apenas usando sua fonte de luz. Não parece muito interessante?
Li-Fi usa luz visível como meio de comunicação para a transmissão de dados. Um LED pode atuar como uma fonte de luz e o fotodiodo atua como um transceptor que recebe sinais de luz e os transmite de volta. Ao controlar o pulso de luz no lado do transmissor, podemos enviar padrões de dados exclusivos. Este fenômeno ocorre em velocidade extremamente alta e não pode ser visto através do olho humano. Então, no lado do receptor, o fotodiodo ou resistor dependente de luz (LDR) converte os dados em informações úteis.
Seção do transmissor Li-Fi usando Arduino
Conforme mostrado na figura acima, na parte do transmissor da comunicação Li-Fi, o teclado é usado como entrada aqui. Isso significa que selecionaremos o texto a ser transmitido usando o teclado. Em seguida, as informações são processadas pela unidade de controle que nada mais é do que o Arduino em nosso caso. O Arduino converte as informações em pulsos binários que podem ser enviados a uma fonte de LED para transmissão. Em seguida, esses dados são fornecidos à luz LED, que envia os pulsos de luz visível para o lado do receptor.
Diagrama de circuito da seção do transmissor:
Configuração de hardware para o lado do transmissor:
Seção do receptor Li-Fi usando Arduino
Na seção do receptor, o sensor LDR recebe os pulsos de luz visível do lado do transmissor e os converte em pulsos elétricos interpretáveis, que são enviados ao Arduino (unidade de controle). O Arduino recebe esse pulso e o converte em dados reais e os exibe em um display LCD 16x2.
Diagrama de circuito da seção receptora:
Configuração de hardware para o lado do receptor:
Codificação Arduino para Li-Fi
Conforme mostrado acima, temos duas seções para Transmissor e Receptor Li-Fi. Os códigos completos para cada seção são fornecidos na parte inferior do tutorial e uma explicação passo a passo dos códigos é fornecida abaixo:
Código do transmissor Arduino Li-Fi:
No lado do transmissor, o Arduino Nano é usado com teclado 4x4 e LED. Primeiro, todos os arquivos de biblioteca dependentes são baixados e instalados no Arduino via Arduino IDE. Aqui, a biblioteca do teclado é usada para usar o teclado 4 * 4, que pode ser baixado deste link. Saiba mais sobre a interface do teclado 4x4 com o Arduino aqui.
#incluir
Após a instalação bem-sucedida dos arquivos de biblioteca, defina o não. de linhas e valores de coluna que é 4 para ambos, visto que usamos um teclado 4 * 4 aqui.
const byte ROW = 4; const byte COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Em seguida, os pinos do Arduino são definidos e usados para fazer a interface com o teclado 4 * 4. Em nosso caso, usamos A5, A4, A3 e A2 para R1, R2, R3, R4 respectivamente, e A1, A0, 12, 11 para C1, C2, C3 e C4 respectivamente.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Teclado customKeypad = Teclado (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
Dentro de setup (), o pino de saída é definido, onde a fonte de LED é conectada. Além disso, ele é mantido DESLIGADO ao ligar o dispositivo.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, BAIXO); }
Dentro enquanto circuito, os valores recebidos a partir do teclado são lidos usando customKeypad.getKey () e é comparado na if-else laço, para gerar impulsos únicos em cada teclas pressionadas. Pode ser visto no código que os intervalos do cronômetro são mantidos exclusivos para todos os valores-chave.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); atraso (10); digitalWrite (8, BAIXO); }
Código do receptor Arduino Li-Fi:
No lado do receptor Li-Fi, o Arduino UNO faz interface com um sensor LDR, conforme mostrado no diagrama de circuito. Aqui, o sensor LDR é conectado em série com um resistor para formar um circuito divisor de tensão e a saída de tensão analógica do sensor é fornecida ao Arduino como um sinal de entrada. Aqui, estamos usando um módulo I2C com LCD para reduzir o não. de conexões com o Arduino, pois este módulo requer apenas 2 pinos de dados SCL / SDA e 2 pinos de alimentação.
Inicie o código incluindo todos os arquivos de biblioteca necessários no código, como Wire.h para comunicação I2C, LiquidCrystal_I2C.h para LCD, etc. Essas bibliotecas seriam pré-instaladas com o Arduino, portanto, não há necessidade de baixá-las.
#incluir
Para usar o módulo I2C para LCD alfanumérico 16 * 2, configure-o usando a classe LiquidCrystal_I2C . Aqui temos que passar o endereço, a linha e o número da coluna, que são 0x3f, 16 e 2, respectivamente, em nosso caso.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Dentro de setup (), declare o pino de entrada de pulso para receber o sinal. Em seguida, imprima uma mensagem de boas-vindas no LCD que será exibida durante a inicialização do projeto.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("BEM-VINDO A"); lcd.setCursor (0, 1); lcd.print ("CIRCUITO DIGEST"); atraso (2000); lcd.clear (); }
Dentro do enquanto ciclo, a duração de impulso de entrada a partir de LDR é calculado usando pulseIn função, e o tipo de impulsos é definida que é pobre em nosso caso. O valor é impresso no monitor serial para fins de depuração. Sugere-se verificar a duração, pois pode ser diferente para diferentes configurações.
longa duração sem sinal = pulseIn (8, HIGH); Serial.println (duração);
Depois de verificar as durações de todos os pulsos do transmissor, temos agora 16 faixas de duração de pulso, que são anotadas para referência. Agora compare-os usando um loop IF-ELSE para obter os dados exatos que foram transmitidos. Um loop de amostra para a Chave 1 é fornecido abaixo:
if (duração> 10000 && duração <17000) { lcd.setCursor (0, 0); lcd.print ("Recebido: 1"); }
Transmissor e receptor Li-Fi usando Arduino
Após fazer o upload do código completo em ambos os Arduinos, pressione qualquer botão no teclado ao lado do receptor e o mesmo dígito será exibido no LCD 16x2 do lado do receptor.
É assim que o Li-Fi pode ser usado para transmitir dados através da luz. Espero que você tenha gostado do artigo e aprendido algo novo com ele, se tiver alguma dúvida, pode usar a seção de comentários ou perguntar nos fóruns.