Índice:

Máscara facial com visor de papel eletrônico: 9 etapas (com imagens)
Máscara facial com visor de papel eletrônico: 9 etapas (com imagens)

Vídeo: Máscara facial com visor de papel eletrônico: 9 etapas (com imagens)

Vídeo: Máscara facial com visor de papel eletrônico: 9 etapas (com imagens)
Vídeo: Essa é a minha mascara #tech #mikedev 2024, Dezembro
Anonim
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico
Máscara facial com visor de papel eletrônico

O surto do vírus corona trouxe uma nova moda para o mundo ocidental: máscaras faciais. No momento em que este artigo foi escrito, eles se tornaram obrigatórios na Alemanha e em outras partes da Europa para o uso diário no transporte público, para fazer compras e várias outras ocasiões. Minha filha, parteira em formação, já confeccionou várias máscaras para sua família e colegas, e me deu a ideia desse projeto, indicando-me o seguinte:

Embora as máscaras faciais possam ser úteis para restringir a propagação do vírus, e as máscaras comunitárias feitas por elas mesmas agora vêm em várias formas, tamanhos e padrões e até mesmo com iluminação, elas têm um problema comum: tornam seu usuário sem rosto. Pelo menos até certo ponto, visto que a boca e o nariz devem ser cobertos. O que torna a comunicação não verbal difícil, e todos esses rostos sem rosto não assustam apenas crianças pequenas.

A seguir, gostaria de descrever uma nova solução para esse problema: uma máscara facial com um display integrado. Localizado mais ou menos onde sua boca deveria estar, pode permitir que você expresse seu estado geral de humor - sorriso feliz, normal, tenso, zangado, irritado, … - exibindo uma imagem de uma boca apropriada ou um esboço de uma boca, alguns mensagem de texto, símbolo ou mesmo uma animação.

Não vou excluir que o conceito possa ter alguma utilidade na prática, mas pelo menos pode ser muito divertido de usar em festas. E pode lhe dar a chance de usar o sorriso de sua celebridade favorita, vampiro, orc, tubarão, gato, cachorro,….

A seguinte descrição do protótipo tem como objetivo permitir que você construa sua própria versão do dispositivo, esperançosamente melhorada e adaptada às suas necessidades e desejos especiais. Como o layout é simples e o dispositivo consiste principalmente de peças disponíveis comercialmente, apenas habilidades técnicas e equipamentos limitados são necessários para a montagem.

Por favor, mostre-nos suas versões, layouts, ideias de melhorias e imagens para exibir no dispositivo.

Suprimentos

  • Tela de papel eletrônico flexível de 2,9 '' WaveShare com driver HAT (€ 33 via Amazon.de)
  • Comprei os componentes separadamente: display flexível WaveShare de 2,9 polegadas e-Paper (via Eckstein, € 19), 296x128 pixels p / b.

    Wiki

    HAT do driver de exibição WaveShare eInk (via Amazon.de, € 9)

  • Raspberry Pi Zero, usei um modelo da versão 1.3, você também pode usar um Raspberry Pi Zero W (Pimoroni.com, € 10,51)
  • Calço de botão Pimoroni (€ 8,55 em Pimoroni.co.uk)
  • Uma placa de plástico fina, rígida, mas flexível como suporte para a tela (usei uma folha de proteção de tela não utilizada para o iPhone 5)
  • Banco de energia USB e cabo micro USB longo ou em combinação com RPi Zero, Pimoroni Zero LiPo shim, LiPo e um carregador LiPo
  • Máscara facial comercial ou personalizada (tipo plano)
  • Opcional: um cabo de fita mais longo (FFC 24 pinos 0,5 mm de passo) seria útil, por exemplo, 60 cm - SAMTEC FJH-20-D-24.00-4 via Digi-Key (cabo mais longo que consegui encontrar) ou apenas encadear peças FFC de 20 cm usando adaptadores (como feito aqui)

    No final de maio de 2020, a Adafruit está oferecendo cabos de extensão de 25 cm e 24 pinos e conectores extensores: (cabo: https://www.adafruit.com/product/4230, 1,5 US $), conector: (https:// www.adafruit.com / product / 4524)

  • Opcional: fechos patenteados ou tiras de velcro costuráveis para fixar na tela a uma máscara facial ou um envelope de tecido, elásticos (alguns usados de um kit de reparo de sutiã)
  • Fita dupla-face para fixar a posição da tela no envelope (ou você pode costurar para consertar)
  • Tira de corda para o RPi Zero

Etapa 1: Layout e conceito técnico

Layout e conceito técnico
Layout e conceito técnico
Layout e conceito técnico
Layout e conceito técnico
Layout e conceito técnico
Layout e conceito técnico

O WaveShare está oferecendo uma tela de papel eletrônico flexível de 2,9 polegadas no tamanho de 6,6 x 2,9 cm e uma resolução de 296 x 128 pixels, além de um Raspberry Pi HAT para simplificar o controle de suas telas de tinta eletrônica. O tamanho e a resolução da tela de 2,9 '' permitem exibir uma boca quase em tamanho real e, sendo flexível, pode ser colocada sobre superfícies curvas. Um pequeno conector deve ser conectado ao display, que então deve ser conectado ao RPi HAT com um cabo de banda plana de 24 pinos.

Usar um Raspberry Pi Zero como microcontrolador oferece uma ampla gama de oportunidades para controlar a tela. Para o protótipo, escolhi o calço de botão da Pimoroni, pois é uma solução simples e barata disponível no mercado que pode ser usada em combinação com outros HATs / pHATs e podem oferecer opções de controle suficientes para a maioria dos propósitos. A programação otimizada (qualquer ajuda bem-vinda!) Pode permitir a redução do consumo de energia do sistema ao mínimo.

Uma maneira simples de gerar as imagens em preto e branco necessárias será descrita em uma etapa posterior. Em princípio, você pode exibir filmes do tipo GIF

Uma limitação do layout atual resulta do cabo relativamente curto que conecta o RPi e a tela. O cabo que vem com o HAT tem 20 cm de comprimento, o cabo análogo mais longo que consegui encontrar tinha 60 cm de comprimento (mas não estava disponível em maio de 2020). Para ter a framboesa ao alcance de suas mãos, por ex. em uma pulseira, pode-se concatenar vários desses cabos com conectores entre eles. por enquanto recorri à opção de usar o RPI Zero como cordão (ver imagens).

Você pode usar a máscara do visor sem o RPi, pois o visor do e-Paper requer alimentação externa apenas para alterar, mas não para exibir uma imagem. Portanto, você pode apenas escolher sua "comparação do dia", anexar o RPi ao display, carregar a imagem correspondente no display e, em seguida, desconectar o RPi.

Para uma versão infantil, você pode usar a tela flexível de 2,13 '' oferecida pelo WaveShare. Por ter resolução de 212x104 pixels, deve-se gerar arquivos bmp neste tamanho. Adaptar o script para esta exibição é muito simples.

A Adafruit está oferecendo telas flexíveis semelhantes e um encaixe de placa de driver para sua família de placas Feather. Isso permitiria adotar esse conceito para ser usado com um microcontrolador. Para obter mais detalhes, consulte a Etapa 9.

Etapa 2: gerar imagens em preto e branco

Gerar imagens em preto e branco
Gerar imagens em preto e branco
Gerar imagens em preto e branco
Gerar imagens em preto e branco
Gerar imagens em preto e branco
Gerar imagens em preto e branco

Você pode gerar as imagens a serem exibidas usando programas gráficos vetoriais (por exemplo, InkScape) ou gráficos de pixel (por exemplo, The GIMP), mas a saída final deve ser um arquivo bmp preto e branco de 296 x 128 pixels.

Portanto, para que uma imagem colorida seja exibida no visor do e-paper, ela deve ser convertida em uma imagem em preto e branco.

Você pode usar imagens bmp da coleção (última etapa) ou gerar suas próprias. conforme descrito a seguir. Pode haver maneiras diferentes de atingir a meta, mas usei um procedimento muito simples e direto usando o GIMP:

  1. Basta obter um arquivo de imagem com a parte da boca tendo um tamanho mínimo de 296 pixels de largura e 128 pixels de altura. Isso pode exigir um retrato frontal de alta resolução.
  2. Selecione uma área com uma proporção de largura para altura de cerca de 2,32 para 1 e use Imagem - Reduzir para a seleção *
  3. Em seguida, usando Image - Scale image * para reduzir para 296 pixels de largura (ou 128 pixels de altura).
  4. Como a seguir, selecione uma área grande de 296 x 128 pixels e trunque a imagem para a seleção como acima.
  5. Como o tamanho deve ser exatamente 296x128 pixels, use o tamanho da tela de ajuste de imagem * para corrigir, se necessário
  6. Agora converta a imagem em tons de cinza usando Imagem - Modo - Tons de cinza. Esta etapa não é estritamente necessária, mas pode ser bastante útil para ajustes e otimização (consulte a etapa 9).
  7. Em seguida, converta em um bitmap preto e branco usando Imagem - Modo - Indexado * com as opções "1 bit" e pontilhamento "Floyd-Steinberg"
  8. Finalmente, exporte o bitmap como BMP para uma pasta apropriada
  9. Você pode tentar otimizar os resultados modificando parâmetros como contraste ou brilho da imagem em escala de cinza. Cor- Componentes - Extrair componentes-canal verde RGB é uma opção simples para melhorar as imagens e realçar os componentes vermelhos como a boca. Volte para a etapa 7.
  10. Para um filme do tipo GIF

  11. Coloque os arquivos na subpasta de imagem fora da pasta de exemplo de papel eletrônico, se necessário, renomeie-os (por exemplo, imagem_1.bmp, …)
  12. Substitua os nomes dos arquivos bmp fornecidos no script de exemplo pelos de seus arquivos.

Observações:

  • Não tenho certeza se acertei os nomes em inglês de todos os comandos do GIMP, pois estou usando uma versão em alemão.
  • Para alguns dos exemplos de imagens, foram usadas seleções de imagens tiradas da Internet, portanto, elas não podem ser usadas em publicações ou para quaisquer fins comerciais.

Etapa 3: Eletrônica e Montagem

Eletrônica e Montagem
Eletrônica e Montagem
Eletrônica e Montagem
Eletrônica e Montagem
Eletrônica e Montagem
Eletrônica e Montagem

A montagem das peças eletrônicas é relativamente simples. O calço do botão, se usado diretamente conectado ao RPi, deve ser soldado ao GPIO do RPi conforme indicado nas instruções do fabricante. Como o calço é muito fino, um HAT pode ser colocado no GPIO com o calço conectado. Use o mínimo de solda possível e tente não contaminar os pinos GPIO acima da área do calço, dessoldar se necessário. Em combinação com o WaveShare e-Paper HAT, você pode até adicionar um calço Pimoroni ZeroLiPo ao GPIO além do calço de botão, o que pode permitir o uso de um pequeno LiPo como fonte de alimentação. Em seguida, coloque o e-Paper HAT no GPIO usando os espaçadores que vêm com o HAT.

Conecte o visor de papel eletrônico e o cabo de conexão plano ao adaptador de papel eletrônico e, em seguida, ao HAT de papel eletrônico conforme descrito pelo fabricante (marcadores azuis na extremidade do cabo FFC no lado inferior). Defina os dois interruptores no HAT de acordo com os requisitos do visor usado, para o visor flexível de 2,9 '' para "A" e "0".

Certifique-se de ter instalado todo o software necessário e bibliotecas instaladas.

Você pode primeiro usar os scripts de exemplo fornecidos por Pimoroni e WaveShare para verificar a funcionalidade dos componentes e, em seguida, testar o código específico do projeto (mostrado em uma etapa posterior).

Dado que o hardware e o software estão funcionando, agora você pode conectar a tela e o adaptador de e-Paper ao envelope da tela ou à máscara. Eu sugeriria fixar o monitor e o adaptador em algum suporte flexível, mas suficientemente rígido, usei uma folha fina de plástico e fita dupla-face. Agora, a folha de suporte pode ser usada para fixar o visor à sua máscara ou a um envelope de proteção maior, por exemplo, costurando ou usando fita dupla-face, fechos patenteados ou pequenos ímãs.

Como o cabo FFC que conecta o RPI e o monitor tem apenas 20 cm de comprimento, usei um cordão de corda enrolado nos suportes do HAT para tornar o Raspberry Pi usável perto do rosto. Conforme discutido, um cabo mais longo ou uma extensão de cabo seriam úteis.

Para o protótipo usei um pedaço de tecido plástico semelhante a um bolso (20x9,5 cm), na verdade algum material de embalagem que estava à mão. Em seguida, cortei um orifício para a tela e fixei a tela / placa de apoio lá. Em seguida, coloquei quatro travas de plástico nos cantos, veja as imagens. Para segurar tudo no rosto, usei dois elásticos translúcidos com ganchos de um kit de conserto de sutiã. Então, eles vão ao redor de sua cabeça e os ajustes de comprimento são muito simples.

Etapa 4: O Script

O script de exemplo é uma fusão de scripts de demonstração fornecidos pelo WaveShare para o HAT de exibição (veja Github aqui) e por Pimoroni para o Botão Shim (veja aqui). Qualquer elogio vai para eles, eu levo qualquer culpa. Quaisquer comentários e sugestões para otimização são bem-vindos.

O script WaveShare requer a instalação de várias bibliotecas, conforme indicado na documentação do GitHub. O mesmo acontece com o script Pimoroni, mas aqui há uma ferramenta para fazer o trabalho por você.

É melhor usar um cartão SD recém-atualizado com Raspian e, em seguida, adicionar a ferramenta Pimoroni usando

sudo apt-get install pimoroni

e use-o para instalar os códigos de correção do botão (encontrados em "outros") e as dependências.

Para a parte do WaveShare, copie seus drivers e pacotes de exemplos da página do GitHub e instale-o e todas as dependências conforme descrito lá (!). A maioria das dependências já pode estar preenchida.

Coloque o script na pasta de exemplos python do software de exibição WaveShare e copie os arquivos bmp para a subpasta pic.

Usar o script é relativamente simples. Nesse caso, altere os nomes dos arquivos bmp nas listas de BMPs para aqueles que você gostaria de exibir. Você pode preparar listas de backup e apenas substituir aquela desejada na lista ativa, copiando.

Execute o script. Verifique se as coisas estão funcionando bem. Em seguida, você pode remover os adaptadores HDMI e USB (com alguns hubs USB, a remoção pode interromper o RPi) e colocar a máscara de exibição em seu rosto e o cordão em volta do pescoço. Dê uma olhada no espelho e brinque para ver se tudo está funcionando bem.

O script foi dividido ao mínimo necessário para ler os botões e exibir os bmps. Portanto, se desejar exibir texto, linhas ou figuras geométricas, adicione os elementos necessários do script de exemplo 2in9d.

As imagens, que devem estar localizadas na pasta "pic", são listadas na lista "BMPs", que consiste em 5 sublistas com os nomes de 5 imagens cada, ou 25 imagens no total. A primeira imagem em cada sublista está vinculada ao botão A, a segunda ao botão B e assim por diante. As sublistas podem ser selecionadas pressionando longamente os botões A a E, ou seja, o painel 1 é selecionado com o botão A, o painel 2 com o botão B etc. O script define vários threads em execução em segundo plano, observando cada botão a ser pressionado. brevemente ou mantida por mais de 2 segundos, resultando em uma alteração das variáveis de sinalizador. O loop do programa principal apenas detecta se um botão foi pressionado / mantido lendo os sinalizadores button_was_held e button_was_pressed, e quais sinalizadores (panel_flag, button_flag) foram levantados. Em seguida, ele define as variáveis correspondentes (painel ou imagem) de acordo. Finalmente, a imagem correspondente a “BMPs [painel] [imagem]” é selecionada na lista e gravada no visor. Em seguida, os sinalizadores são redefinidos para seus estados fundamentais "nulo" ou "Falso".

O resto do script trata principalmente de definir variáveis, início da exibição e algum tratamento de erros. Você pode executar o script a partir do IDE ou do console usando “python3 Button_shim_2in9_1.py”. Alternativamente, você pode ter o script rodando diretamente após a inicialização.

O script ainda está em fase de otimização, portanto, verifique se há atualizações.

A versão mais recente (2020-maio-10) contém uma função para exibir as imagens na lista BMPs, display_gallery (), e uma para exibir aquelas nas listas collection_x, display_collections (). Não incluído na lista abaixo, consulte o arquivo em anexo.

Esteja ciente de que, para evitar "fantasmas", apague qualquer imagem se o monitor não for usado por vários dias.

#! / usr / bin / env python

# from Pimoroni botão shim script importar tempo importar sinal importar botõeshim # importar e iniciar a exibição #from WaveShare-paper script # - * - codificação: utf-8 - * - import sys import os picdir = os.path.join (os.path.dirname (os.path.dirname (os.path.realpath (_ file_))), 'pic') libdir = os.path.join (os.path.dirname (os.path.dirname (os.path.realpath (_file_))), 'lib') if os.path.exists (libdir): sys.path.append (libdir) importar registro de waveshare_epd importar epd2in9d importar tempo de PIL importar imagem, ImageDraw, ImageFont importar traceback #Set output log level logging.basicConfig (level = logging. DEBUG) '' '#não obrigatório aqui font15 = ImageFont.truetype (os.path.join (picdir,' Font.ttc '), 15) font24 = ImageFont.truetype (os.path. join (picdir, 'Font.ttc'), 24) '' '#set BMP list BMPs =

Etapa 5: uma versão de máscara de pano e outros conceitos de aplicação

Uma versão de máscara de pano e outros conceitos de aplicação
Uma versão de máscara de pano e outros conceitos de aplicação

Na versão atual do protótipo, a tela pode ser usada acima de uma marca facial normal ou ser fixada em máscaras existentes com tiras de velcro ou ímãs. Mas, na verdade, você gostaria de integrar a tela em uma máscara, com algumas opções para posicionamento e remoção rápidos.

O que fiz até agora foi usar uma máscara que comprei em uma alfaiataria local ("Schneiderei Schmargendorf") feita de um tecido bastante grosso, identifiquei a área certa em que a vitrine deve ser colocada e, em seguida, corte um furo na camada externa do mascarar. Para o cabo da tela, uma fenda foi cortada no lado interno em uma posição apropriada. A placa de apoio foi cortada no tamanho mínimo necessário e vários pequenos orifícios foram inseridos para permitir a costura. Em seguida, o display foi fixado na placa de apoio com fita dupla-face, com aplicação também nas bordas para fixação da placa e display na camada de tecido. Em seguida, o visor foi colocado na máscara, o cabo foi movido para a fenda e o pano foi encaixado na placa de apoio. Pode ser útil fortalecer as bordas cortadas do pano antes disso, por exemplo, com uma pequena quantidade de super cola. No caso, fixe a placa de apoio costurando depois de verificar se tudo se encaixa bem. Conecte o cabo ao HAT e inicie o Pi.

A limitação dessa abordagem é que você não pode lavar a máscara com o visor integrado fixo. Mas haveria várias outras maneiras de anexar a tela à máscara. Uma opção pode ser adicionar outra camada de tecido removível a uma máscara e manter a tela no lugar por tiras de velcro ou fechos transparentes. Dessa forma, ele pode ser removido facilmente para lavagem da máscara ou movido para outra máscara.

Posteriormente, as versões aprimoradas podem integrar um suporte de tela dedicado para obter uma aparência mais profissional.

---------------------------- Embora a ideia original fosse uma máscara facial com tela, um layout muito semelhante também pode ser usado para tags de nome, ou um display integrado em roupas ou pulseiras.

Ou pense em uma versão "Quem sou eu" com uma faixa para a cabeça com visor integrado, exibindo imagens ou termos escolhidos aleatoriamente em uma coleção maior.

Uma ideia que acho um tanto ridícula, mas não quero deixar de mencionar, seria um Niqab com essa exibição.

Você tem ideias adicionais? Por favor deixe-me saber!

Como todo o projeto ainda está em andamento, dê uma olhada nas atualizações de vez em quando.

Etapa 6: coleta de imagens - bocas e rostos

Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos
Coleção de imagens - bocas e rostos

Aqui você encontra uma coleção de imagens que podem ser usadas na tela de 2,9 polegadas, com foco em rostos, geralmente restrita à parte da boca. Entre outros, contém HM a Rainha (2x), o Presidente Obama, Ghandi, o Dalai Lama, Stalin, Paul Newman, Pavarotti e meu gato.

Esteja ciente de que, como usei imagens da Internet como fonte para algumas delas, a proteção de direitos autorais ainda pode ser aplicável e elas podem não ser usadas para fins comerciais.

Etapa 7: Coleção - Padrões

Coleção - Padrões
Coleção - Padrões
Coleção - Padrões
Coleção - Padrões
Coleção - Padrões
Coleção - Padrões

Aqui estão alguns padrões que podem ser exibidos, a maioria gerados usando o GIMP.

Etapa 8: coleta de imagens - sinais, símbolos e texto

Coleção de imagens - sinais, símbolos e texto
Coleção de imagens - sinais, símbolos e texto
Coleção de imagens - sinais, símbolos e texto
Coleção de imagens - sinais, símbolos e texto
Coleção de imagens - sinais, símbolos e texto
Coleção de imagens - sinais, símbolos e texto

Mais imagens de exemplo para a tela 293x128:

Sinais e símbolos, textos.

Novamente: algumas imagens ou símbolos (por exemplo, Raspberry, Apple, Instructables) podem ser protegidos por direitos autorais e não devem ser usados para fins comerciais.

Etapa 9: Layout alternativo: Adafruit Feather e E-paper Display

Layout alternativo: Adafruit Feather e E-paper Display
Layout alternativo: Adafruit Feather e E-paper Display
Layout alternativo: Adafruit Feather e E-paper Display
Layout alternativo: Adafruit Feather e E-paper Display

Percebi hoje (21 de maio de 2020) que a Adafruit também oferece telas de papel eletrônico flexíveis do mesmo tamanho e dimensões (https://www.adafruit.com/product/4262, 27 US $), bem como 25 cm Cabos de extensão de 24 pinos com passo de 0,5 mm (https://www.adafruit.com/product/4230, 1,5 US $) e conectores extensores (https://www.adafruit.com/product/4524).

Eles têm um driver de e-paper para sua família de placas Feather (Adafruit eInk Feather Friend com 32 KB SRAM, https://www.adafruit.com/product/4446, 9 US $) que vem com um suporte de cartão SD para armazenar todos esses imagens.

Presumo que isso possa permitir um layout mais compacto e eficiente em termos de energia do que a versão Raspberry Zero descrita aqui e seria uma solução perfeita se você preferir usar uma plataforma STM32F405, 32u4 ou nRF52840. Infelizmente, não parece ser trivial combinar os monitores eInk Feather Friends e WaveShare da Adafruit.

Gosto muito de ver uma versão com BLE e um aplicativo para controlar quais imagens são exibidas.

O WaveShare está oferecendo um escudo de driver de vídeo Arduino e drivers de vídeo baseados em ESP3266, se você preferir.

Recomendado: