- Componentes requeridos
- Breve introducción a Li-Fi
- Sección del transmisor Li-Fi usando Arduino
- Sección del receptor de Li-Fi usando Arduino
- Codificación Arduino para Li-Fi
Li-Fi (Light Fidelity) es una tecnología avanzada que permite transferir datos mediante comunicación óptica como la luz visible. Los datos de Li-Fi pueden viajar a través de la luz y luego interpretarse en el lado del receptor utilizando cualquier dispositivo sensible a la luz como LDR o fotodiodo. La comunicación Li-Fi puede ser 100 veces más rápida que la Wi-Fi.
Aquí, en este proyecto, demostraremos la comunicación Li-Fi utilizando dos Arduino. Aquí los datos de texto se transmiten mediante LED y teclado 4x4. Y se decodifica en el lado del receptor mediante LDR. Anteriormente explicamos Li-Fi en detalle y usamos Li-Fi para transferir señales de audio.
Componentes requeridos
- Arduino UNO
- Sensor LDR
- Teclado 4 * 4
- LCD alfanumérico de 16 * 2
- Módulo de interfaz I2C para LCD
- Tablero de circuitos
- Conexión de puentes
- LED de 5 mm
Breve introducción a Li-Fi
Como se mencionó anteriormente, Li-Fi es una tecnología de comunicación avanzada que puede ser 100 veces más rápida que la comunicación Wi-Fi. Con esta tecnología, los datos se pueden transferir utilizando fuentes de luz visible. Imagínese, si pudiera acceder a Internet de alta velocidad con solo usar su fuente de luz. ¿No te parece muy interesante?
Li-Fi utiliza la luz visible como medio de comunicación para la transmisión de datos. Un LED puede actuar como una fuente de luz y el fotodiodo actúa como un transceptor que recibe señales de luz y las transmite. Al controlar el pulso de luz en el lado del transmisor, podemos enviar patrones de datos únicos. Este fenómeno ocurre a una velocidad extremadamente alta y no se puede ver a través del ojo humano. Luego, en el lado del receptor, el fotodiodo o la resistencia dependiente de la luz (LDR) convierte los datos en información útil.
Sección del transmisor Li-Fi usando Arduino
Como se muestra en la figura anterior, en la parte del transmisor de la comunicación Li-Fi, el teclado se usa aquí como entrada. Eso significa que seleccionaremos el texto que se transmitirá usando el teclado. Luego, la información es procesada por la unidad de control que no es más que Arduino en nuestro caso. Arduino convierte la información en pulsos binarios que se pueden alimentar a una fuente LED para su transmisión. Luego, estos datos se envían a la luz LED que envía los pulsos de luz visible al lado del receptor.
Diagrama de circuito de la sección del transmisor:
Configuración de hardware para el lado del transmisor:
Sección del receptor de Li-Fi usando Arduino
En la sección del receptor, el sensor LDR recibe los pulsos de luz visible del lado del transmisor y los convierte en pulsos eléctricos interpretables, que se alimentan al Arduino (unidad de control). Arduino recibe este pulso y lo convierte en datos reales y lo muestra en una pantalla LCD de 16x2.
Diagrama de circuito de la sección del receptor:
Configuración de hardware para el lado del receptor:
Codificación Arduino para Li-Fi
Como se muestra arriba, tenemos dos secciones para el transmisor y el receptor de Li-Fi. Los códigos completos para cada sección se dan al final del tutorial y una explicación paso a paso de los códigos se da a continuación:
Código del transmisor Arduino Li-Fi:
En el lado del transmisor, Arduino Nano se utiliza con teclado y LED 4x4. Primero, todos los archivos de la biblioteca dependiente se descargan e instalan en Arduino a través de Arduino IDE. Aquí, la biblioteca de teclados se usa para usar el teclado 4 * 4 que se puede descargar desde este enlace. Obtenga más información sobre la interfaz del teclado 4x4 con Arduino aquí.
#incluir
Después de la instalación exitosa de los archivos de la biblioteca, defina el no. de filas y valores de columna, que es 4 para ambos, ya que aquí hemos usado un teclado 4 * 4.
const byte ROW = 4; const byte COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Luego, se definen los pines Arduino que se utilizan para interactuar con el teclado 4 * 4. En nuestro caso, hemos utilizado A5, A4, A3 y A2 para R1, R2, R3, R4 respectivamente, y A1, A0, 12, 11 para C1, C2, C3 y C4 respectivamente.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Teclado customKeypad = Teclado (makeKeymap (código de teclado), rowPin, colPin, ROW, COL);
Dentro de setup (), se define el pin de salida, donde se conecta la fuente LED. Además, se mantiene APAGADO mientras se enciende el dispositivo.
configuración vacía () { pinMode (8, SALIDA); digitalWrite (8, BAJO); }
En el interior , mientras que bucle, los valores recibidos desde el teclado se leen utilizando customKeypad.getKey () y se compararon en el if-else bucle, para generar pulsos únicos en cada uno de pulsaciones de teclas. Se puede ver en el código que los intervalos del temporizador se mantienen únicos para todos los valores clave.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); retraso (10); digitalWrite (8, BAJO); }
Código del receptor Arduino Li-Fi:
En el lado del receptor Li-Fi, Arduino UNO está interconectado con un sensor LDR como se muestra en el diagrama del circuito. Aquí, el sensor LDR está conectado en serie con una resistencia para formar un circuito divisor de voltaje y la salida de voltaje analógico del sensor se alimenta a Arduino como una señal de entrada. Aquí estamos usando un módulo I2C con LCD para reducir el no. de conexiones con Arduino ya que este módulo requiere solo 2 pines de datos SCL / SDA y 2 pines de alimentación.
Inicie el código incluyendo todos los archivos de biblioteca requeridos en el código como Wire.h para la comunicación I2C, LiquidCrystal_I2C.h para LCD, etc. Estas bibliotecas estarían preinstaladas con Arduino, por lo que no es necesario descargarlas.
#incluir
Para usar el módulo I2C para LCD alfanumérico de 16 * 2, configúrelo usando la clase LiquidCrystal_I2C . Aquí tenemos que pasar la dirección, fila y número de columna que son 0x3f, 16 y 2 respectivamente en nuestro caso.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Dentro de setup (), declare el pin de entrada de pulso para recibir la señal. Luego imprima un mensaje de bienvenida en la pantalla LCD que se mostrará durante la inicialización del proyecto.
configuración vacía () { pinMode (8, ENTRADA); Serial.begin (9600); lcd.init (); LCD luz de fondo(); lcd.setCursor (0, 0); lcd.print ("BIENVENIDO A"); lcd.setCursor (0, 1); lcd.print ("RESUMEN DEL CIRCUITO"); retraso (2000); lcd.clear (); }
Dentro del tiempo de bucle, la duración de entrada de pulsos de LDR se calcula utilizando pulseIn función, y el tipo de impulso se define que es baja en nuestro caso. El valor se imprime en el monitor de serie con fines de depuración. Se sugiere verificar la duración, ya que puede ser diferente para diferentes configuraciones.
larga duración sin signo = pulseIn (8, HIGH); Serial.println (duración);
Después de verificar las duraciones de todos los pulsos del transmisor, ahora tenemos 16 rangos de duración de pulsos, que se anotan como referencia. Ahora compárelos usando un bucle IF-ELSE para obtener los datos exactos que se han transmitido. A continuación, se proporciona un bucle de muestra para la clave 1:
if (duración> 10000 && duración <17000) { lcd.setCursor (0, 0); lcd.print ("Recibido: 1"); }
Transmisor y receptor Li-Fi usando Arduino
Después de cargar el código completo en ambos Arduinos, presione cualquier botón en el teclado en el lado del receptor y se mostrará el mismo dígito en la pantalla LCD de 16x2 en el lado del receptor.
Así es como se puede utilizar Li-Fi para transmitir datos a través de la luz. Espero que hayas disfrutado del artículo y hayas aprendido algo nuevo de él, si tienes alguna duda, puedes usar la sección de comentarios o preguntar en foros.