1. O problema e as especificações

Há lugares onde o rádio é um problema: salas de hospital com equipamento sensível, fábricas e minas onde as emissões perturbam equipamentos, ou zonas sem rede. A luz resolve estes casos: não produz interferência de rádio, não atravessa paredes e um LED custa pouco. É a ideia do Li-Fi (Light Fidelity), que o Radar Tecnológico apresenta. O nosso comunicador usa os mesmos princípios: no emissor, a intensidade da luz de um díodo emissor de luz (LED) varia ao ritmo da mensagem; no receptor, um fotodíodo converte a luz de novo num sinal eléctrico.

O objectivo do projecto é enviar voz (modo VOZ, comunicação analógica) e texto (modo TEXTO, comunicação digital) por um feixe de luz, a 1,1 m de distância, com componentes comuns, e perceber de onde vem cada valor do circuito. As especificações da Tabela 5 orientam todas as escolhas que se seguem.

2. O sistema em blocos

A Figura 15 mostra o comunicador inteiro: é o esquema emissor → canal → receptor da Teoria em 10 Minutos (Figura 9), com os blocos reais do projecto. O texto usa sempre os mesmos números ①–⑭.

Figura 15 da Revista CIRCUITO+
Figura 15 — Diagrama de blocos do Li-Fi Comunicador. Junto à seta de saída de cada bloco, a forma de onda do sinal que dele sai: em cima de cada seta, o modo VOZ; em baixo, o modo TEXTO (ilustração calculada). Azul: emissor (①–⑥); castanho: canal óptico (⑦); verde: receptor (⑧–⑭); o feixe propaga-se pelo ar em ⑦ e entra pela lente ⑧.

No emissor, o microfone ① dá alguns milivolts, que o pré-amplificador ② leva a 0,75 V de pico sobre 2,2 V. O Arduino emissor ③ transforma o texto que escreves em bits de 0 V e 5 V. O comutador S1 ④ escolhe o sinal, o driver ⑤ converte-o numa corrente (15 mA ± 7,5 mA na voz; 19 mA ou 0 no texto) e o LED ⑥ em luz. No canal ⑦, a luz enfraquece com o quadrado da distância e junta-se-lhe a luz ambiente. No receptor, a lente e o tubo ⑧ juntam a luz útil, o fotodíodo ⑨ dá alguns microamperes e o amplificador de transimpedância (TIA) ⑩ converte-os numa tensão. Na voz, o filtro ⑪ (300–3400 Hz) e o LM386 ⑫ levam o sinal ao altifalante; no texto, o comparador com histerese ⑬ decide cada bit e o Arduino receptor ⑭ mostra a mensagem num ecrã de cristais líquidos (LCD).

Tabela 5 — Especificações do Li-Fi Comunicador
ParâmetroValorObservações
ModosVOZ (analógico) e TEXTO (digital)escolhidos com o comutador S1
ModulaçãoVOZ: intensidade da luz; TEXTO: OOKOOK: luz acesa = 1, luz apagada = 0
Banda de voz300 Hz a 3400 Hzfiltro do receptor: 339 Hz a 3386 Hz
Débito do texto2400 bit/s, trama série de 10 bits (8 de dados)240 caracteres por segundo
Distância1,1 m (ponto de projecto); texto até ≈ 1,6 mlente de 25 mm à frente do fotodíodo
Fonte de luzLED branco de 5 mm, θ½ ≈ 15°VOZ: 15 mA ± 7,5 mA; TEXTO: ≈ 19 mA ou 0
Sensorfotodíodo BPW34 + amplificador de transimpedância de 330 kΩ≈ 3 µA de fotocorrente a 1,1 m
Saídasaltifalante de 8 Ω; ecrã LCD de 16 × 2 caracteresvolume com P1; limiar do texto com P2
Alimentação9 V (circuitos analógicos); 5 V por USB (Arduinos)uma pilha de 9 V no emissor e outra no receptor
SimulaçãoSimulIDE 1.1.0-SR2, um só ficheiroPacote Digital, pasta projecto_capa_simulide

3. O emissor bloco a bloco

Figura 16 da Revista CIRCUITO+
Figura 16 — Esquema eléctrico do emissor: microfone MIC1 com R1, pré-amplificador U1A (LM358) com R2–R5 e C1–C3, Arduino Uno emissor com o terminal do computador (Monitor Série) nos pinos 0 e 1 e a saída da luz no pino 11, divisor R14/R15, comutador S1, driver Q1/R7 e LED D1. A laranja, as tensões e correntes de projecto.

Microfone ① — polarizar o electreto

O esquema do emissor está na Figura 16. O MIC1 é um microfone de electreto, com um pequeno transístor de efeito de campo (JFET) no interior, polarizado por R1 = 10 kΩ a partir dos 9 V. A voz aparece como uma tensão alternada de alguns milivolts entre R1 e o microfone; C1 = 1 µF bloqueia a componente contínua (com os 16,6 kΩ de R2 ∥ R3, o corte fica perto de 9,6 Hz).

Pré-amplificador ② — ganho 101 e repouso a 2,2 V

U1A é metade de um LM358 em montagem não inversora. A entrada + está polarizada pelo divisor R2/R3, ligado aos 9 V (VCC):

V+ = VCC · R3 / (R2 + R3)
V+ = 9 V × 22 kΩ / (68 kΩ + 22 kΩ)
V+ = 2,20 V
(C.1)

Como C3 bloqueia a contínua em R5, a saída repousa também em 2,20 V, que fixa a corrente de repouso do LED. Para a voz, o ganho é:

G = 1 + R4 / R5
G = 1 + 100 kΩ / 1 kΩ
G = 101
(C.2)

Os 7,4 mV de pico à entrada dão 0,75 V à saída, o que o driver ⑤ precisa para modular o LED a meio. C3 cria o corte inferior e C2, em paralelo com R4, o superior:

finf = 1 / (2π R5 C3)
finf = 1 / (2π × 1 kΩ × 1 µF)
finf ≈ 159 Hz
(C.3)
fsup = 1 / (2π R4 C2)
fsup = 1 / (2π × 100 kΩ × 100 pF)
fsup ≈ 15,9 kHz
(C.4)

O corte de 3,4 kHz fica para o receptor (bloco ⑪): dois cortes iguais em cascata estreitariam a banda. C2 só limita o ruído e mantém o amplificador estável.

Arduino emissor ③ e comutador S1 ④

No modo TEXTO, o pino 11 envia a trama série da secção 6 (5 V = bit 1); os pinos 0 e 1 ficam ligados ao Monitor Série do computador, a 9600 bit/s. O divisor R14/R15 reduz os 5 V para a base de Q1:

VB = 5 V · R15 / (R14 + R15)
VB = 5 V × 4,7 kΩ / (3,9 kΩ + 4,7 kΩ)
VB ≈ 2,73 V
(C.5)

S1, um comutador de duas posições (SPDT), liga a base de Q1 à saída do pré-amplificador através de R6 = 100 Ω (VOZ) ou ao divisor R14/R15 (TEXTO).

Driver ⑤ e LED ⑥ — uma fonte de corrente controlada por tensão

Q1 (BC547B) é um seguidor de emissor: o emissor fica VBE ≈ 0,7 V abaixo da base, e R7 fixa a corrente, que passa no LED:

ILED ≈ (VB − VBE) / R7
VOZ: (2,20 V − 0,7 V) / 100 Ω ; TEXTO: (2,73 V − 0,7 V) / 100 Ω
VOZ: IQ = 15,0 mA ; TEXTO: 20,3 mA
(C.6)

No modo TEXTO, a corrente de base provoca uma queda em RTh = R14 ∥ R15 = 2,13 kΩ. Com β ≈ 300 e VTh = 2,73 V:

ILED = (VTh − VBE) / [R7 + RTh / (β + 1)]
ILED = (2,73 V − 0,7 V) / (100 Ω + 2,13 kΩ / 301)
ILED ≈ 19,0 mA
(C.7)

Na voz, essa queda é desprezável. IQ = 15 mA fica a meio da gama útil do LED (0 a 30 mA); os ±0,75 V da voz dão ΔI = ±7,5 mA, e o índice de modulação é:

m = ΔI / IQ
m = 7,5 mA / 15 mA
m = 0,50
(C.8)

A corrente varia entre 7,5 mA e 22,5 mA, sem nunca apagar o LED. Controlamos a corrente, e não a tensão, porque a luz de um LED é proporcional à corrente, enquanto a tensão directa muda de exemplar para exemplar. A potência em Q1, com a tensão colector-emissor VCE, é pequena:

PQ1 = VCE · IQ
PQ1 = (9 V − 3,0 V − 1,5 V) × 15 mA
PQ1 ≈ 68 mW (o BC547B suporta 500 mW)
(C.9)

O LED branco de 5 mm tem um ângulo a meia intensidade θ½ ≈ 15°. Estimamos que emite Pt ≈ 10 mW de luz com 15 mA, uma eficiência η ≈ 0,667 W/A.

4. O canal óptico ⑦ e a lente ⑧

Que fotocorrente Ifoto chega ao fotodíodo com o LED a uma distância d? Um LED é aproximadamente uma fonte lambertiana. A ordem lambertiana mL = −ln 2 / ln(cos θ½) mede quanto a luz se concentra para a frente: para θ½ = 15°, mL ≈ 20. Com o receptor em frente ao LED, a fracção da luz emitida que chega a uma área A, ajudada por uma lente de ganho GL, é o ganho do canal H = (mL + 1) A GL / (2πd²). O BPW34 tem A = 7,5 mm²; uma lupa de 25 mm de diâmetro aumenta a área de recolha para cerca de 490 mm² e, com as perdas, contamos com GL ≈ 50. O fotodíodo converte a luz em corrente com a responsividade Rλ ≈ 0,3 A/W para a luz branca.

O simulador não tem luz: a luz é substituída por uma conta

No SimulIDE não existe um «componente luz» entre o LED e o fotodíodo. Como a potência da luz é proporcional à corrente do LED e a fotocorrente é proporcional à potência da luz, toda a cadeia LED → ar → lente → fotodíodo resume-se a um número, k, que diz quantos amperes de fotocorrente resultam de cada ampere no LED:

k = Ifoto / ILED = η · Rλ · (mL + 1) · A · GL / (2πd²)
k = 0,667 W/A × 0,3 A/W × 21 × 7,5 × 10⁻⁶ m² × 50 / (2π × (1,1 m)²)
k ≈ 2,07 × 10⁻⁴ (a 1,1 m)
(C.10)

Repara no d² do denominador: é a lei do inverso do quadrado. Se duplicares a distância, a luz espalha-se por uma área quatro vezes maior e a fotocorrente cai para ¼. Para outra distância, basta corrigir k:

k(d) = k(1,1 m) · (1,1 m / d)²
k(1,6 m) = 2,073 × 10⁻⁴ × (1,1 m / 1,6 m)²
k(1,6 m) ≈ 9,80 × 10⁻⁵
(C.11)
Tabela 6 — Ganho do canal k e fotocorrente, pelas Equações (C.10) e (C.11)
d (m)kIfoto a 15 mA (µA)Ifoto a 19,0 mA (µA)
0,51,00 × 10⁻³15,019,0 (TIA saturado)
1,12,07 × 10⁻⁴3,113,93
1,69,80 × 10⁻⁵1,471,86
Nota: 15 mA é a corrente de repouso do LED no modo VOZ; 19,0 mA, a corrente do bit 1 no modo TEXTO (C.7).
Figura 17 da Revista CIRCUITO+
Figura 17 — Fotocorrente Ifoto em função da distância, pelas Equações (C.10) e (C.11), com a lente de 25 mm. Traço contínuo: 15 mA no LED (VOZ, repouso); tracejado: 19,0 mA (TEXTO, bit 1). A linha pontilhada marca o limite do TIA descontada a luz ambiente.

O tubo ⑧, um cilindro de cartão preto à frente do fotodíodo, tapa a luz ambiente que vem de lado. Nas contas assumimos 2 µA de luz ambiente, com 20 % de ondulação a 100 Hz (as lâmpadas da rede de 50 Hz piscam 100 vezes por segundo).

5. O receptor bloco a bloco

A Figura 18 mostra a parte analógica do receptor, com o fotodíodo real à entrada (no SimulIDE é uma fonte controlada), e a Figura 19 o ramo de texto.

A tensão de referência VREF

Com uma só pilha de 9 V, os amplificadores precisam de uma «massa virtual», o divisor R8/R9 filtrado por C4:

VREF = VCC · R9 / (R8 + R9)
VREF = 9 V × 10 kΩ / (47 kΩ + 10 kΩ)
VREF ≈ 1,58 V
(C.12)

Fotodíodo ⑨ e TIA ⑩ — luz em corrente, corrente em tensão

O BPW34 é um fotodíodo PIN de área grande, em polarização inversa. O amplificador de transimpedância U2A obriga essa corrente, mais a da luz ambiente Iamb, a passar por R10, e a saída fica:

VTIA = VREF + (Ifoto + Iamb) · R10
VTIA = 1,58 V + (3,11 µA + 2 µA) × 330 kΩ
VTIA ≈ 3,26 V (VOZ, em repouso, a 1,1 m)
(C.13)

Com 9 V, a saída do LM358 só sobe até cerca de 7,5 V (VOH). Acima desta corrente total o TIA satura:

Imáx = (VOH − VREF) / R10
Imáx = (7,5 V − 1,58 V) / 330 kΩ
Imáx ≈ 17,9 µA
(C.14)

C5, em paralelo com R10, estabiliza o TIA e limita a banda:

B = 1 / (2π R10 C5)
B = 1 / (2π × 330 kΩ × 22 pF)
B ≈ 21,9 kHz
(C.15)

Filtro de voz ⑪ — 300 a 3400 Hz

O passa-alto C6/R11 (com R11 ligada a VREF) tira a componente contínua e parte dos 100 Hz; o seguidor U2B isola-o do passa-baixo R12/C7:

fPA = 1 / (2π R11 C6) = 1 / (2π × 10 kΩ × 47 nF) ≈ 339 Hz
(C.16)
fPB = 1 / (2π R12 C7) = 1 / (2π × 10 kΩ × 4,7 nF) ≈ 3386 Hz
(C.17)

LM386 e altifalante ⑫

C8 leva o sinal ao volume P1 = 100 kΩ e ao pino 3 do LM386 (U3), de ganho 20. Para 0,5 W em RL = 8 Ω:

Vp = √(2 · P · RL) = √(2 × 0,5 W × 8 Ω) ≈ 2,83 V (141 mV à entrada)
(C.18)

Comparador com histerese ⑬ — decidir se é 0 ou 1

No modo TEXTO, o TIA dá ≈ 2,24 V com o LED apagado e ≈ 3,54 V com o LED aceso a 1,1 m. U4 compara-o com o limiar Vth ≈ 2,9 V, ajustado com P2. Para que a ondulação de 100 Hz não provoque comutações a mais, o comparador tem histerese (montagem de Schmitt):

Vliga = Vth · (1 + R16 / R17) = 2,9 V × (1 + 10 kΩ / 150 kΩ) ≈ 3,09 V
(C.19)
Vdesliga = Vliga − 5 V · R16 / R17 = 3,09 V − 5 V × 10 kΩ / 150 kΩ ≈ 2,76 V (janela de 0,333 V)
(C.20)
Figura 18 da Revista CIRCUITO+
Figura 18 — Esquema eléctrico do receptor, parte analógica: VREF (R8, R9, C4); canal óptico ⑦: a luz do LED D1 chega ao fotodíodo D2 (BPW34) ⑨; TIA U2A com R10 ∥ C5; filtro C6/R11, U2B e R12/C7; P1, U3 (LM386), R13/C10, C9 e LS1.
Figura 19 da Revista CIRCUITO+
Figura 19 — Esquema eléctrico do receptor, ramo de texto: comparador U4 (LM393) com histerese (R16, R17), limiar THR ajustado com P2, resistência de pull-up R18 para os 5 V do Arduino, Arduino Uno receptor (entrada no pino 0, RX) e LCD 16 × 2 (HD44780) em modo de 4 bits.

Até onde chega o texto?

O texto deixa de passar quando a diferença entre os níveis do TIA, descontada a ondulação da luz ambiente (2 × 0,132 V), fica menor do que a janela de histerese:

Ifoto,mín = [5 V · R16 / R17 + 2 ΔIamb R10] / R10
Ifoto,mín = (0,333 V + 2 × 0,4 µA × 330 kΩ) / 330 kΩ
Ifoto,mín ≈ 1,81 µA
(C.21)
dmáx = 1,1 m · √[k(1,1 m) / kmín]
dmáx = 1,1 m × √(2,07 × 10⁻⁴ / 9,54 × 10⁻⁵)
dmáx ≈ 1,62 m
(C.22)

6. A parte digital — trama UART, OOK e código

Os Arduinos falam por uma porta série assíncrona (UART). Cada carácter viaja numa trama de 10 bits (Figura 20): com a linha em repouso a 1 (luz acesa), um bit de início a 0, os 8 bits de dados, de D0 para D7, e um bit de paragem a 1, o formato «8N1».

Figura 20 da Revista CIRCUITO+
Figura 20 — Trama UART 8N1 do carácter «1» (código ASCII 0x31) a 2400 bit/s, tal como sai na luz (ilustração calculada). As zonas sombreadas são os bits a 1 (LED aceso).
Tb = 1 / Rb = 1 / 2400 bit/s ≈ 417 µs ; trama de 10 bits: 4,17 ms
(C.23)

O código do emissor (Listagem 1)

O emissor cria com a biblioteca SoftwareSerial uma porta série no pino 11, a da luz, e deixa os pinos 0 e 1 para o Monitor Série.

Listagem 1 — lifi_emissor.ino (Arduino Uno Emissor ③)
// Li-Fi Comunicador - EMISSOR: texto -> luz
#include <SoftwareSerial.h>

const byte PINO_LUZ = 11; // -> R14 -> S1 -> Q1
const long TAXA = 2400;   // 1 bit = 417 us
SoftwareSerial luz(10, PINO_LUZ); // RX nao usado
char linha[64];           // frase escrita no PC
byte n = 0;
unsigned long ultimo = 0;

void setup() {
  Serial.begin(9600); // Monitor Serie (PC)
  luz.begin(TAXA);    // repouso = 1: LED aceso
  Serial.println(F("Emissor Li-Fi: escreve"));
}

void loop() {
  // 1) guarda o que escreves ate ao Enter
  while (Serial.available()) {
    char c = Serial.read();
    if (c == '\n' || c == '\r' ||
        n == sizeof(linha) - 1) {
      if (n > 0) {
        linha[n] = '\0';
        luz.print(linha); // a frase sai pela luz
        luz.print('\n');  // \n = fim
        Serial.print(F("> "));
        Serial.println(linha);
        n = 0;
      }
      ultimo = millis();
    } else {
      linha[n++] = c;
    }
  }
  // 2) sem texto: mensagem de demonstracao
  if (n == 0 && millis() - ultimo > 5000) {
    luz.print(F("11 DE NOVEMBRO\n"));
    Serial.println(F("> 11 DE NOVEMBRO"));
    ultimo = millis();
  }
}

O código do receptor (Listagem 2)

O receptor lê a porta série do microcontrolador, no pino 0, a 2400 bit/s, e mostra até 32 caracteres no LCD quando chega o fim de linha.

Listagem 2 — lifi_receptor.ino (Arduino Uno Receptor ⑭)
// Li-Fi Comunicador - RECEPTOR: luz -> LCD
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char txt[33]; // 2 linhas x 16 caracteres
byte n = 0;

void mostrar() {
  lcd.clear();
  for (byte i = 0; i < n; i++) {
    if (i == 16) lcd.setCursor(0, 1);
    lcd.print(txt[i]);
  }
}

void setup() {
  Serial.begin(2400); // a taxa do emissor
  lcd.begin(16, 2);
  lcd.print(F("Li-Fi: a espera"));
}

void loop() {
  while (Serial.available()) {
    char c = Serial.read();
    if (c == '\n' || c == '\r') { // fim
      if (n > 0) mostrar();
      n = 0;
    } else if (c >= 32 && c < 127 && n < 32) {
      txt[n++] = c; // so imprimiveis
    }
  }
}

7. O circuito completo no SimulIDE

Todo o comunicador está num só ficheiro, lifi_comunicador.sim1, na pasta projecto_capa_simulide do Pacote Digital. Abre-se no SimulIDE 1.1.0-SR2, a versão estável deste simulador gratuito, que executa os programas reais dos Arduinos (.hex) e calcula o circuito analógico. As Figuras 21 e 22 mostram o emissor com o canal e o receptor.

Figura 21 da Revista CIRCUITO+
Figura 21 — Captura real do SimulIDE 1.1.0-SR2, emissor e canal. ① MIC1, R1, C1; ② U1A, R2–R5, C2, C3; ③ Arduino emissor (lifi_emissor.hex), R14/R15; T terminal «Monitor Série (PC)»; ④ S1 (fechado = VOZ); ⑤ Q1, R6, R7; ⑥ D1; ⑦ canal: a fonte Ifoto = k · ILED, que lê a tensão em R7, e a luz ambiente.
Figura 22 da Revista CIRCUITO+
Figura 22 — Captura real do SimulIDE 1.1.0-SR2, receptor, no mesmo instante. À esquerda chega a fotocorrente, em paralelo com C_PD (70 pF); VREF: R8/R9, C4; ⑩ U2A, R10, C5; ⑪ C6/R11, U2B, R12/C7, C8; ⑫ P1, U3 (LM386), C9, R13/C10, LS1; ⑬ U4, R16–R18, P2; ⑭ Arduino receptor (lifi_receptor.hex); L LCD.

8. Estudos de simulação

8.1 Modo VOZ a 1,1 m

Com S1 fechado, o gerador do microfone injecta um tom de 1 kHz com 12 mV de pico, e P1 está a 30 % do curso. À entrada do pré-amplificador:

vPRE = vg · (R2 ∥ R3) / (R1 + R2 ∥ R3) · |G|
vPRE = 12 mV × 16,6 kΩ / (10 kΩ + 16,6 kΩ) × 99,6
vPRE ≈ 0,746 V de pico
(C.24)
vSPK = vTIA · HPA HPB aP1 G386 HC9 Ho
vSPK = 0,510 V × 0,947 × 0,869 × 0,211 × 20 × 0,996 × 0,976 ≈ 1,72 V de pico
(C.25)
P = vSPK² / (2 RL) = (1,72 V)² / (2 × 8 Ω) ≈ 0,185 W
(C.26)
Figura 23 da Revista CIRCUITO+
Figura 23 — Captura real do SimulIDE, modo VOZ, d = 1,1 m, tom de 1 kHz, 1 ms/div. De cima para baixo: ① Microfone (12 mV de pico); ② Pré-amplificador (1,46 V a 2,94 V); ⑩ Transimpedância (2,66 V a 3,91 V); ⑫ Altifalante (−1,66 V a 1,67 V).
Tabela 7 — Previsto/Observado, modo VOZ a 1,1 m (Figura 23)
GrandezaPonto de medidaPrevisto (cálculo)Observado (captura)Desvio (%)
Tensão média (V)② U1A, pino 12,20 (C.1)2,200,0
Semi-amplitude (V)② U1A, pino 10,746 (C.24)0,74−0,8
Índice de modulação m② e R70,497 (C.8)0,483−2,8
Tensão média (V)TIA ⑩, U2A pino 13,264 (C.13)3,285+0,6
Corrente do LED em repouso (mA)deduzida da média do TIA por (C.13)15,0 (C.6)15,3+2,1
Semi-amplitude, voz + 100 Hz (V)TIA ⑩, U2A pino 10,6420,625−2,6
Semi-amplitude (V)⑫ altifalante 8 Ω1,72 (C.25)1,665−3,3
Potência no altifalante (W)⑫ altifalante0,185 (C.26)0,173−6,4

8.2 Modo TEXTO a 1,1 m

Com S1 aberto, o Arduino emissor envia a mensagem de demonstração. A Figura 24, a 2 ms/div, mostra o início de «11 DE NOVEMBRO»: a saída do comparador ⑬ é igual aos dados ③, bit a bit.

Figura 24 da Revista CIRCUITO+
Figura 24 — Captura real do SimulIDE, modo TEXTO, d = 1,1 m, 2 ms/div. De cima para baixo: ③ Dados (0 V / 4,98 V); ⑤ Driver (0 V / 1,91 V); ⑩ Transimpedância (2,10 V a 3,68 V); ⑬ Comparador (0,03 V / 5,00 V).

8.3 A mensagem no LCD e no Monitor Série

Na Figura 25, escrevemos «11 DE NOVEMBRO» no terminal e carregámos em Enter. O emissor respondeu no Monitor Série com «> 11 DE NOVEMBRO»; a porta série do receptor mostra o mesmo texto, recebido pela luz, e o LCD escreveu-o.

Figura 25 da Revista CIRCUITO+
Figura 25 — Capturas reais do SimulIDE. (a) Em cima, o terminal «Monitor Série (PC)» com o eco «> 11 DE NOVEMBRO»; em baixo, a UART do Arduino receptor. (b) LCD a 1,1 m (Vth = 2,9 V). (c) LCD a 1,6 m (Vth = 2,54 V).

8.4 Modo TEXTO a 1,6 m — o limite

Para simular 1,6 m, o ganho do canal passa para k = 9,80 × 10⁻⁵ (C.11). Baixando o limiar com P2 para centrar a janela de histerese entre os dois níveis:

Vth = Vliga · R17 / (R16 + R17) = 2,71 V × 150 kΩ / (10 kΩ + 150 kΩ) ≈ 2,54 V
(C.27)
Figura 26 da Revista CIRCUITO+
Figura 26 — Captura real do SimulIDE, modo TEXTO, d = 1,6 m (k = 9,80 × 10⁻⁵), limiar P2 em 2,54 V, 2 ms/div.
Tabela 8 — Previsto/Observado, modo TEXTO a 1,1 m e a 1,6 m (Figuras 24 a 26)
GrandezaPonto de medidaPrevisto (cálculo)Observado (captura)Desvio (%)
d = 1,1 m: nível alto (V)③ pino 115,004,98−0,4
d = 1,1 m: corrente do LED no bit 1 (mA)⑤ emissor de Q1, V / 100 Ω19,0 (C.7)19,1+0,6
d = 1,1 m: nível alto máximo (V)TIA ⑩, U2A pino 13,67 (C.13)3,68+0,3
d = 1,1 m: nível baixo mínimo (V)TIA ⑩, U2A pino 12,11 (C.13)2,10−0,3
d = 1,1 m: duração de um bit (µs)③ e ⑬417 (C.23)411 a 423≤ 1,4
d = 1,1 m e 1,6 m: níveis de saída (V)⑬ pino 00 / 5,000,03 / 5,000,0 (nível alto)
d = 1,1 m e 1,6 m: texto recebidoLCD ⑭«11 DE NOVEMBRO»«11 DE NOVEMBRO»sem erros
d = 1,6 m: nível alto máximo (V)TIA ⑩, U2A pino 12,98 (C.13)2,99+0,2
d = 1,6 m: nível baixo mínimo (V)TIA ⑩, U2A pino 12,11 (C.13)2,10−0,3

9. Análise de resultados

Modo VOZ. Todos os desvios da Tabela 7 ficam abaixo de 7 % e acumulam-se ao longo da cadeia. O LED nunca se apaga e nenhum amplificador satura.

Modo TEXTO a 1,1 m e a 1,6 m. A 1,1 m os desvios da Tabela 8 são inferiores a 1 % e as margens são folgadas. A 1,6 m há comunicação, mas só com o limiar reajustado para 2,54 V: 1,6 m é o limite do texto, e 1,1 m a distância de projecto.

10. Lista de material

Tabela 9 — Lista de material (resistências de película de carbono, 1/4 W, 5 %, série E12)
ReferênciaComponenteValor / designação comercialQtd.Substituto
R1, R9, R11, R12, R16, R18 · R6, R7resistência10 kΩ · 100 Ω6 · 2—
R2 · R3 · R4 · R5 · R8resistência68 kΩ · 22 kΩ · 100 kΩ · 1 kΩ · 47 kΩ1 de cada—
R10 · R17 · R13 · R14 · R15resistência330 kΩ · 150 kΩ · 10 Ω · 3,9 kΩ · 4,7 kΩ1 de cadaR10: 270 kΩ com muita luz ambiente
— (pino 15 do LCD)resistência da retroiluminação220 Ω1330 Ω (menos brilho)
P1 · P2, P3potenciómetro de volume · trimmers (limiar, contraste)100 kΩ logarítmico · 10 kΩ1 · 2P1: 100 kΩ linear
C1, C3, C8 · C6, C10 · C7condensador de poliéster1 µF, 63 V · 47 nF · 4,7 nF3 · 2 · 1C1, C3, C8: electrolítico de 1 µF
C2 · C5condensador cerâmico NP0100 pF · 22 pF1 de cada—
C4, C11 · C9 · C12condensador electrolítico, 16 V10 µF · 220 µF · 100 µF2 · 1 · 125 V
MIC1microfone de electreto, 2 terminaiscápsula de 6 mm1cápsula de 9,7 mm
U1, U2 · U3 · U4amp. operacional duplo · amp. de áudio · comparador duploLM358N · LM386N-1 · LM393N2 · 1 · 1LM2904N · LM386N-3 · LM2903N
Q1transístor NPNBC547B1BC548B (mesma pinagem)
D1 · D2LED branco de 5 mm, θ½ ≈ 15° · fotodíodo PINalto brilho · BPW341 · 1outro LED branco · BPW34S
S1 · LS1comutador SPDT · altifalante— · 8 Ω, 0,5 W1 · 1LS1: 8 Ω, 1 W
LCD1módulo LCD 16 × 2controlador HD447801qualquer 16 × 2 HD44780
—placa ArduinoArduino Uno R32Arduino Nano (mesmos pinos)
—lente e tubo · alimentaçãolupa de 25 mm; tubo de cartão preto · pilha de 9 V com ficha; cabo USB1 · 2 + 2fonte de 9 V com limitação de corrente

11. Montagem, testes e resolução de problemas

  1. Emissor em repouso (S1 em VOZ): U1A a 2,2 V; emissor de Q1 a 1,5 V (15 mA).
  2. Receptor em repouso: VREF = 1,58 V; TIA perto de 1,58 V com o fotodíodo tapado e de 3,3 V com o LED a 1,1 m.
  3. Voz: segue um tom de 1 kHz pelos pontos da Figura 23; depois fala e ouve.
  4. Inverso do quadrado: a amplitude no TIA a 0,55 m, 1,1 m e 2,2 m cai para ¼ de cada vez.
  5. Texto e limiar (S1 em TEXTO): mede o TIA com o LED aceso e apagado e põe Vth a meio com P2; o LCD mostra «11 DE NOVEMBRO» a cada 5 s.
Tabela 10 — Resolução de problemas
SintomaCausa provávelVerificaçãoCorrecção
LED apagado nos dois modosQ1 trocado (pinagem) ou R7 abertatensão no emissor de Q1 (1,5 V em VOZ)confirmar a pinagem C-B-E do BC547B
LED aceso mas sem somP1 no mínimo, C9 invertido ou U3 sem 9 Vsinal nos pinos 3 e 5 de U3rodar P1; rever C9 e o pino 6
Zumbido forte no altifalanteluz de lâmpadas da rede a entrar no fotodíodo100 Hz na saída do TIApôr ou alongar o tubo ⑧; apagar a lâmpada
Saída do TIA encostada a ≈ 7,5 Vdemasiada luz ambiente: TIA saturado (C.14)tapar o fotodíodo: a saída deve descer para 1,58 Vusar o tubo; reduzir R10 para 270 kΩ
Voz distorcidasobremodulação: o LED apaga nos valesemissor de Q1 abaixo de 0,5 V nos valesfalar mais longe ou trocar R5 por 2,2 kΩ
LCD sem caracteres (só blocos)contraste mal ajustadotensão no pino 3 do LCD (≈ 0,5 V)rodar P3
LCD com «Li-Fi: a espera» e nada maislimiar fora da janela ou S1 em VOZníveis do TIA e THRS1 em TEXTO; reajustar P2 a meio dos níveis
Caracteres errados no LCDdistância no limite; margem de histerese esgotadaníveis do TIA em relação a Vliga e Vdesligaaproximar para 1,1 m ou alinhar melhor a lente
Erro ao carregar o programa do receptorfio do comparador ligado ao pino 0o USB usa o pino 0 para programardesligar o fio do pino 0 durante o carregamento
⚠ Segurança
  • Não olhes fixamente para o LED de perto, sobretudo com a lente;
  • Não faças curto-circuito numa pilha de 9 V: aquece muito;
  • Começa com o volume P1 no mínimo, sobretudo com auscultadores;
  • Nunca ponhas mais de 5 V num pino do Arduino.
Em resumo — Li-Fi Comunicador
  • O Li-Fi Comunicador envia voz (15 mA ± 7,5 mA, m = 0,5) e texto (OOK, UART 8N1 a 2400 bit/s) por um LED branco.
  • O driver Q1 + R7 controla a corrente do LED, e não a tensão: ILED = (VB − 0,7 V) / R7.
  • No SimulIDE a luz é uma conta: Ifoto = k · ILED, com k = 2,07 × 10⁻⁴ a 1,1 m, e k cai com d².
  • O TIA de 330 kΩ converte ≈ 3 µA em 1 V; o comparador com 0,333 V de histerese recupera os bits.
  • As capturas confirmam o cálculo com desvios inferiores a 7 % (voz) e a 1 % (texto); a 1,6 m o texto passa, mas com margens de poucos milivolts.