Esta transferência de arquivos não usa a internet de jeito nenhum (decimen)

BBetter Stack
Computing/SoftwareConsumer ElectronicsInternet Technology

Transcript

00:00:00Aqui vai uma pergunta. Como você envia um arquivo para alguém sem usar uma rede e sem usar nenhum
00:00:05dispositivo físico como pen drives? Bem, a resposta é a transferência de arquivos óptica. Um desenvolvedor chamado Evan
00:00:13Crawley acabou de criar uma ferramenta chamada Deciman, que é capaz de enviar um arquivo de um dispositivo para
00:00:19outro apenas piscando códigos QR e fazendo a leitura deles de volta. É uma técnica de transferência de arquivos muito legal
00:00:26e que usa algumas táticas de engenharia bem inteligentes. Então, no vídeo de hoje, vamos dar uma olhada
00:00:31no Deciman, ver como ele funciona e testá-lo em diferentes cenários para ver quão poderosa a transferência
00:00:37de arquivos óptica realmente é. Vai ser muito divertido, então vamos nessa.
00:00:46Então o Deciman funciona assim. Um dispositivo exibe um fluxo de quadros parecidos com códigos QR em sua tela
00:00:53e outro dispositivo aponta uma câmera para ele e os decodifica de volta em um arquivo. Portanto, não há pilha de rede
00:01:00envolvida. Então, se você precisar trocar um arquivo com um dispositivo isolado (air-gapped), esta é a única maneira
00:01:06de fazer isso sem conectar fisicamente nenhum dispositivo externo, como unidades USB. E a ideia é que você
00:01:12codifique seu arquivo como uma sequência de códigos QR, exiba-os na tela um após o outro e faça com que uma câmera
00:01:19na outra ponta capture e decodifique cada quadro. Agora, isso pode parecer simples, mas a complicação surge
00:01:26do fato de que as câmeras não capturam instantaneamente, e as telas não são atualizadas
00:01:32instantaneamente. Portanto, você está colocando duas peças de hardware diferentes para competir, e se elas ficarem dessincronizadas,
00:01:38os quadros são corrompidos ou perdidos completamente. Mas a resposta do Deciman para esse problema é um método chamado fountain coding (código de fonte).
00:01:46Em vez de enviar o quadro um, quadro dois, quadro três e torcer para que cada um deles chegue perfeitamente,
00:01:53ele gera um fluxo efetivamente ilimitado de quadros codificados, onde cada quadro é uma mistura matemática
00:02:00de pedaços do arquivo original, em vez de um pedaço específico dele. Isso significa que nenhum quadro individual é irsubstituível.
00:02:07O receptor não precisa especificamente do quadro número 47, ele apenas precisa de quadros suficientes, quais quer que cheguem.
00:02:14E se você perder metade deles, não importa. Ele continua transmitindo até que o receptor colete
00:02:22o suficiente deles. Mas essa abordagem não é de forma alguma uma solução mágica. Com esse método, há um limite para a quantidade de dados
00:02:29que podemos transferir. Por padrão, o remetente do Deciman envia 2953 bytes por quadro a 60 quadros por segundo.
00:02:37Se você fizer as contas, obterá um limite teórico de aproximadamente 177 quilobytes por segundo.
00:02:44Leve em conta a sobrecarga do fountain coding, já que alguns desses quadros mesclados são essencialmente redundantes por design.
00:02:51E o que sobra é o número que o arquivo leia-me (README) do Deciman realmente afirma.
00:02:56Ele atinge um pico de cerca de 128 quilobytes por segundo quando medido de telefone para telefone.
00:03:02E o motivo pelo qual ele usa pedaços de 2953 bytes especificamente é porque corresponde ao QR code versão 40,
00:03:11o maior tamanho padrão de QR code, uma grade de 177 por 177 de módulos individuais compactados em um único quadro.
00:03:20E é aí que o verdadeiro compromisso aparece. Se você colocar mais dados em um quadro, precisará de menos quadros
00:03:26no geral para enviar o mesmo arquivo, o que significa que qualquer câmera que esteja fazendo a leitura de volta precisa de mais resolução,
00:03:33uma mão mais firme e um foco mais nítido para distinguir um módulo do outro.
00:03:38Portanto, todo o sistema é realmente um ato de equilíbrio entre três variáveis.
00:03:42Quantos quadros por segundo você está enviando, quão denso cada um desses quadros é e quão boa a câmera receptora
00:03:49realmente é em resolver essa densidade. E o Deciman vem com um equilíbrio específico configurado por padrão,
00:03:57e é ajustado para um cenário específico, que, como descobri, não é o cenário em que o testei.
00:04:03Então aqui está a minha configuração: a tela de um laptop como remetente, a uma distância normal de um braço,
00:04:09como você realmente usaria isso na prática. Com essa configuração, minha transferência atingiu o limite de cerca de três quilobytes por segundo.
00:04:16Aproximadamente de um a dois por cento dos quadros transmitidos são realmente decodificados. O resto é capturado e descartado.
00:04:23Agora há três coisas que estão jogando contra nós aqui. O primeiro e maior obstáculo é a incompatibilidade de taxa de quadros.
00:04:30O remetente está enviando 60 quadros por segundo, mas a câmera do meu telefone captura a 30. Você não pode amostrar 60 imagens distintas
00:04:38com um sensor que está capturando apenas 30. E é pior do que apenas perder metade delas, porque a janela de exposição em cada
00:04:45quadro capturado abrange dois códigos QR diferentes na tela. Portanto, a câmera não perde um quadro de forma limpa. Ela mistura dois deles em algo que não é decodificado para nada.
00:04:56E no arquivo main.ts, há até uma nota que diz que o iOS fornecerá silenciosamente 30 quadros por segundo, mesmo quando o aplicativo solicita explicitamente 60 à câmera.
00:05:07A câmera simplesmente não fornece o que você solicitou, e o código já aborda isso.
00:05:12E um pouco mais abaixo no mesmo arquivo, há um comentário que basicamente prevê exatamente o que aconteceu comigo na minha primeira tentativa.
00:05:19Os padrões, que são 2953 bytes por quadro a 60 quadros por segundo, são ajustados especificamente para demonstração de telefone para telefone a curta distância.
00:05:29E espera-se que essa mesma combinação tenha dificuldades em um monitor comum à distância de um braço.
00:05:35Em outras palavras, o projeto me disse que isso aconteceria. Eu simplesmente não tinha rolado o suficiente no código para ver.
00:05:41No lado do envio, um painel de laptop de 60 hertz tem o mesmo problema ao contrário. E os pixels de LCD levam muito tempo para fazer a transição completa de cor de cinza para cinza.
00:05:51E esse tempo de configuração significa que o painel não chegou totalmente a um código antes que o próximo comece a pintar sobre ele.
00:05:58Portanto, você está obtendo artefatos de fantasma (ghosting). E o segundo problema é a densidade do código versus a resolução da câmera.
00:06:042953 bytes é a versão 40 de QR code, mas a decodificação confiável precisa de cerca de três a quatro pixels da câmera por módulo, o que resulta em mais de 600 pixels de largura em foco nítido apenas para o código em si.
00:06:20E a tela do laptop mantida à distância de um braço raramente preenche tanto do quadro da câmera de um telefone, mas de telefone para telefone a curta distância preenche todo o visor facilmente.
00:06:30E o terceiro problema é o brilho e o contraste. É um problema secundário, mas ajuda se o binarizador do receptor limpa o limite da imagem, mas ainda assim não pode corrigir uma incompatibilidade de taxa de quadros ou um código subdimensionado.
00:06:44Então agora vamos tentar fazer a mesma transferência, mas desta vez de um telefone para outro telefone.
00:06:50Portanto, a única coisa que muda é o remetente. É uma tela OLED pequena e brilhante mantida perto, preenchendo todo o quadro do telefone receptor.
00:06:58Agora a câmera pode realmente atingir um valor mais próximo da sua taxa de quadros real.
00:07:02O código preenche o quadro em alta resolução e não há fantasmas de LCD para combater.
00:07:07Este é o cenário sob o qual o número de 128 quilobytes por segundo no arquivo leia-me foi realmente medido.
00:07:14Há também um detalhe pequeno, mas genuinamente útil, no código do receptor.
00:07:18Ele relata os FPS de captura e os FPS de decodificação separadamente. A captura nos diz o que a câmera está vendo fisicamente.
00:07:26A decodificação diz quanto disso é realmente utilizável.
00:07:30Quando esses dois números se distanciam um do outro, com a captura permanecendo saudável enquanto a decodificação despenca,
00:07:35você está olhando para uma incompatibilidade entre a densidade dos quadros e o que a câmera pode realmente resolver nessa faixa.
00:07:42Portanto, se laptop para telefone for o seu caso de uso real, a solução é reequilibrar essas três variáveis no lado do remetente.
00:07:50Você deve diminuir os bytes por quadro para 1465, o que corresponde a uma versão de QR code mais grossa com módulos maiores e mais tolerantes.
00:07:59E então diminuir os FPS de transmissão para 24, deliberadamente abaixo do limite de 30 FPS da câmera.
00:08:07Assim, os quadros são amostrados de forma limpa, um de cada vez, em vez de se misturarem.
00:08:12E como você pode ver, diminuir esses números gera uma taxa de transferência muito maior.
00:08:16Portanto, isso apenas mostra que a transferência de arquivos óptica não é uma solução única para todos os casos.
00:08:21Você precisa ajustá-la manualmente para cada caso de uso, dependendo do hardware que está usando.
00:08:26Então aí está, pessoal.
00:08:27Esse é o Deciman em resumo.
00:08:29No geral, este foi um projeto genuinamente divertido de explorar.
00:08:32A transferência de arquivos óptica é uma técnica muito legal.
00:08:36E ver o conceito de fountain coding sendo aplicado em um cenário do mundo real aqui foi realmente interessante de ver.
00:08:44E enquanto eu explorava este projeto, também estava pensando, onde você realmente usaria esse tipo de ferramenta?
00:08:49Acho que a resposta óbvia seria para transferências em ambientes isolados (air-gapped), onde você deliberadamente não quer nenhuma conexão de rede.
00:08:57Ou talvez dispositivos que nem têm Bluetooth ou Wi-Fi, como hardware antigo ou sistemas embarcados.
00:09:04Quero dizer, em qualquer lugar onde uma tela e uma câmera sejam as únicas duas coisas com as quais você pode contar.
00:09:10Mas o que você acha desta ferramenta?
00:09:11Você já usou ferramentas de transferência óptica antes?
00:09:14Você vê alguma aplicação na vida real para isso?
00:09:17Deixe-nos saber na seção de comentários abaixo.
00:09:19E pessoal, se vocês gostam desse tipo de análise técnica, por favor, me avitem esmagando o botão de Curtir embaixo do vídeo.
00:09:25E também não se esqueçam de se inscrever no nosso canal.
00:09:28Este tem sido o Andrus da BetterStack e vejo vocês nos próximos vídeos.
00:09:34Vejo vocês no próximo vídeo.

Key Takeaway

A ferramenta Deciman viabiliza a transferência de arquivos sem internet através de códigos QR ópticos, exigindo ajustes manuais de taxa de quadros e densidade para superar limitações de hardware como incompatibilidades entre telas LCD e câmeras de celulares.

Highlights

  • O Deciman envia arquivos entre dispositivos piscando códigos QR na tela e fazendo a leitura com uma câmera, sem utilizar redes ou conexões físicas.

  • O limite teórico de transferência atinge 177 quilobytes por segundo com quadros de 2953 bytes a 60 quadros por segundo.

  • A transferência real de telefone para telefone atinge um pico de 128 quilobytes por segundo.

  • O uso de fountain coding gera um fluxo contínuo de quadros misturados matematicamente, eliminando a dependência de quadros específicos.

  • A transferência de laptop para telefone apresenta quedas severas de taxa devido à incompatibilidade de taxa de quadros e aos tempos de transição de pixels em telas LCD.

  • O ajuste das configurações para 1465 bytes por quadro e 24 quadros por segundo resolve os problemas de sincronização em monitores de laptop.

Timeline

Mecanismo de funcionamento e fountain coding

  • O Deciman transfere dados de um dispositivo para outro através de códigos QR exibidos em sequência e capturados por uma câmera.
  • A ausência de pilha de rede permite a troca de dados em ambientes isolados air-gapped sem unidades USB.
  • O fountain coding gera um fluxo ilimitado de quadros compostos por misturas matemáticas de pedaços do arquivo original.

A transferência óptica de arquivos dispensa redes e dispositivos físicos ao transformar dados em sequências de códigos QR. Como as câmeras e telas operam em velocidades diferentes, o risco de perda ou corrupção de quadros é alto. O fountain coding resolve esse problema ao tornar os quadros redundantes e intercambiáveis, permitindo que o receptor reconstrua o arquivo completo a partir de qualquer subconjunto suficiente de quadros recebidos.

Limitações de velocidade e densidade dos códigos QR

  • O envio padrão utiliza quadros de 2953 bytes baseados na versão 40 de QR code a 60 quadros por segundo.
  • A taxa de transferência real atinge 128 quilobytes por segundo em testes de telefone para telefone.
  • A tentativa de uso com um monitor de laptop reduz a velocidade de transferência para cerca de três quilobytes por segundo.

O tamanho máximo do código QR versão 40 comporta 2953 bytes por quadro, estabelecendo um limite teórico de 177 quilobytes por segundo. A sobrecarga inerente ao fountain coding reduz esse valor para um pico prático de 128 quilobytes por segundo em telas OLED de celulares. A transição para telas de laptops gera falhas drásticas de decodificação devido à baixa resolução relativa e à proporção inadequada da imagem no visor da câmera.

Causas dos erros de transmissão e otimização de hardware

  • A incompatibilidade entre a taxa de 60 quadros por segundo do remetente e os 30 quadros por segundo da câmera corrompe os dados capturados.
  • O tempo de resposta dos pixels de LCD cria artefatos de fantasma que impedem a leitura limpa de cada código QR.
  • A redução da taxa para 24 quadros por segundo e 1465 bytes por quadro estabiliza a transferência em monitores de laptop.

A falha na transferência via laptop ocorre devido à sobreposição de imagens causada pela diferença entre a taxa de captura da câmera e a emissão da tela. Adicionalmente, o atraso na mudança de cor dos pixels de LCD gera borrões visuais. A adaptação do sistema para cenários específicos exige a diminuição manual da densidade dos dados e da frequência de transmissão para adequar o fluxo às capacidades reais do hardware receptor.

Community Posts

View all posts