Índice:
- Etapa 1: Pré-requisitos
- Etapa 2: Instalando o software CribSense
- Etapa 3: Preparando o hardware: conecte a câmera
- Etapa 4: Preparando o seu hardware: LED IV
- Etapa 5: Preparando o Hardware: Chassi
- Etapa 6: Preparando o Hardware: Montagem
- Etapa 7: Calibração
- Etapa 8: Demonstração
- Etapa 9: Solução de problemas
Vídeo: CribSense: um monitor de bebê baseado em vídeo e sem contato: 9 etapas (com fotos)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
O CribSense é um monitor de bebê sem contato baseado em vídeo que você mesmo pode fazer sem gastar muito
CribSense é uma implementação C ++ de Video Magnification ajustada para rodar em um Raspberry Pi 3 Model B. Durante um fim de semana, você pode configurar seu próprio monitor de bebê para berço que dispara um alarme se seu bebê parar de se mover. Como bônus, todo o software é gratuito para uso não comercial e é facilmente extensível.
O repositório completo contendo arquivos de origem e documentação pode ser encontrado em
Embora pensemos que o CribSense é muito divertido, é importante lembrar que este não é realmente um dispositivo de segurança certificado e à prova de falhas. Ou seja, ele precisa estar configurado corretamente e ter um ambiente bem controlado para funcionar. Por exemplo, se não estiver bem calibrado e / ou o ambiente no vídeo não for favorável à ampliação do vídeo, você pode não conseguir usá-lo. Fizemos isso como um projeto divertido para ver o quão bem poderíamos ter um software de computação pesada, como ampliação de vídeo, executado em hardware de computação limitada, como um Raspberry Pi. Qualquer produto real exigiria muito mais testes do que fizemos. Portanto, se você usar este projeto, considere o que ele é: uma pequena exploração da ampliação de vídeo em um Pi.
O que você vai precisar:
Raspberry Pi + Câmera + Ferramentas de configuração:
- Raspberry Pi 3 Modelo B
- Fonte de alimentação micro USB 5 V 2,5 A
- Módulo de câmera Raspberry Pi NoIR V2
- Cartão MicroSD (usamos um cartão Classe 10 de 16GB)
- Cabo flexível para câmera Raspberry Pi (12 ")
- Alto-falantes com entrada de 3,5 mm
- Monitor HDMI
- Teclado USB
- Mouse USB
- [opcional] Dissipador Raspberry Pi (se você estiver preocupado com o calor, pode colocar um desses no seu Pi)
Circuito LED IR para operação com pouca luz:
- [3x] Diodos 1N4001
- 1 Ohm, Resistor de 1W
- LED IR 1W
- 2 fios para ligar o LED ao Pi
- Ferro de solda
Chassis:
- Acesso a uma impressora 3D (volume mínimo de construção = 9,9 "C x 7,8" L x 5,9 "A) para imprimir nosso chassi. No entanto, sinta-se à vontade para construir o seu próprio.
- Cola (qualquer tipo de cola funcionará, mas a cola quente é recomendada para a prototipagem).
Etapa 1: Pré-requisitos
Antes de iniciar nosso guia passo a passo, você já deve ter instalado a versão mais recente do Raspbian em seu cartão SD e se certificar de que seu Pi está funcionando. Você também precisará habilitar o módulo da câmera antes de acessar a câmera.
Etapa 2: Instalando o software CribSense
O CribSense depende do autoconf, libtool, OpenCV e libcanberra, bem como de ferramentas de software comuns.
- autoconf e libtool são usados para configurar automaticamente makefiles e criar scripts para CribSense em muitas plataformas (como Linux, OSX e Raspberry Pi).
- OpenCV é um poderoso pacote de visão computacional usado para fazer processamento de imagem e é a base do código de ampliação de vídeo e detecção de movimento. Possui ótimo suporte, é fácil de usar e tem bom desempenho.
- libcanberra é uma biblioteca simples para reproduzir sons de eventos. É usado para reproduzir o som de alarme do CribSense.
Visite suas páginas individuais para obter detalhes completos.
Instale-os abrindo um terminal em seu Pi e executando:
sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev
Em seguida, você precisa definir o driver da câmera para carregamento automático adicionando bcm2835-v4l2 a `/ etc / modules-load.d / modules.conf`. Seu modules.conf deve ser assim:
# / etc / modules: módulos do kernel para carregar no momento da inicialização.
# # O arquivo contém os nomes dos módulos do kernel que devem ser carregados # no momento da inicialização, um por linha. As linhas que começam com "#" são ignoradas. i2c-dev bcm2835-v4l2
Uma vez que o arquivo foi editado, você deve reiniciar seu Pi. Este driver é usado pelo CribSense para extrair quadros diretamente da câmera NoIR.
Em seguida, você pode clonar o repositório executando:
git clone
Em seguida, vá para o repositório e construa o software executando
cd CribSense
./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug make sudo make install sudo systemctl daemon-reload
Parabéns, você instalou todo o software necessário!
Configuração
O CribSense é personalizável por meio de um arquivo de configuração INI simples. Após executar `make install`, o arquivo de configuração está localizado em /etc/cribsense/config.ini. Você pode visualizar e editar esses parâmetros executando
sudo nano /etc/cribsense/config.ini
Uma breve explicação de cada parâmetro é fornecida na configuração padrão, mas mais detalhes estão disponíveis em https://lukehsiao.github.io/CribSense/setup/config/. Também discutiremos a calibração e configuração no final deste guia.
Executando o CribSense
O CribSense foi projetado para ser executado na inicialização usando um serviço systemd. Enquanto estiver conectado ao Raspberry Pi com o teclado e o mouse, certifique-se de que os parâmetros de configuração funcionem para o seu berço. Você pode precisar reajustar esses parâmetros se movê-lo.
Enquanto estiver ajustando os parâmetros, você pode executar cribsense à vontade na linha de comando, executando
cribsense --config /etc/cribsense/config.ini
Quando estiver satisfeito, você pode habilitar a execução automática executando
sudo systemctl enable cribsense
Você pode interromper a execução automática do cribsense executando
sudo systemctl disable cribsense
Visão geral do software
O software CribSense é o coração e a alma deste projeto. Vimos algumas das grandes demonstrações de ampliação de vídeo do MIT e queríamos tentar executar um algoritmo semelhante em um Raspberry Pi. Isso exigiu um aumento de mais de 10 vezes do trabalho de tbl3rd em sua implementação C ++ de ampliação de vídeo para rodar em tempo real no Pi. As otimizações necessárias guiaram nosso design do software.
Em um nível alto, o CribSense alterna repetidamente uma máquina de estado de software. Primeiro, ele divide cada quadro de vídeo em tons de cinza de 640x480 em 3 seções horizontais (640x160) para melhor localidade do cache. Em seguida, amplia cada banda em um segmento separado e monitora o movimento visto no quadro. Depois de monitorar o movimento por vários segundos, ele determina a área primária de movimento e recorta o quadro nela. Isso reduz o número total de pixels que o algoritmo precisa processar. Em seguida, o CribSense monitora a quantidade de movimento no fluxo recortado e emite um alarme se nenhum movimento for percebido por um período de tempo configurável. Periodicamente, o CribSense abrirá sua visualização novamente para monitorar o quadro completo caso o bebê tenha se movido e recortado em torno da nova área primária de movimento.
A ampliação de vídeo é usada para aumentar a relação sinal / ruído de movimentos sutis como a respiração infantil. Não seria necessário para movimentos maiores, mas pode ajudar para movimentos muito sutis. Observe que nossa implementação é vagamente baseada no algoritmo descrito nos documentos do MIT e não funciona tão bem quanto seu código proprietário.
Otimizações como multithreading, recorte adaptável e otimizações do compilador nos deram aproximadamente 3x, 3x e 1,2x aumento de velocidade, respectivamente. Isso nos permitiu atingir a aceleração de 10x necessária para rodar em tempo real no Pi.
Detalhes completos podem ser encontrados na página Arquitetura de software do repositório CribSense.
Se você estiver interessado em ampliação de vídeo, visite a página do MIT.
Etapa 3: Preparando o hardware: conecte a câmera
Primeiro, você deve trocar o cabo de 6 "que veio com a câmera pelo cabo de 12". Para fazer isso, você pode simplesmente seguir este tutorial sobre como substituir o cabo da câmera.
Em resumo, você verá uma guia para empurrar / puxar na parte traseira da câmera que pode ser puxada para liberar o cabo flexível. Substitua o cabo curto pelo mais longo e empurre a guia de volta.
Você notará que temos um cabo de 24 "em nossas fotos. Era muito longo. O cabo de 12" na lista de materiais tem um comprimento muito mais razoável.
Etapa 4: Preparando o seu hardware: LED IV
O CribSense é relativamente fácil de construir e, em grande parte, composto de peças disponíveis comercialmente. Como pode ser visto na figura acima, existem 5 componentes de hardware principais, apenas 2 dos quais são feitos sob medida. Esta página explicará como construir o circuito de LED IR e a próxima página explicará como construir o chassi.
Para esta parte, você precisa obter seu ferro de solda, fios, diodos, LED IR e resistor. Estaremos construindo o circuito mostrado na 2ª figura. Se você é novo em soldagem, aqui está um bom guia que o ajudará a atualizá-lo. Embora este guia discuta a soldagem através de orifícios, você pode usar as mesmas técnicas básicas para conectar esses componentes, conforme mostrado na 3ª figura.
Para fornecer iluminação adequada à noite, usamos um LED IR, que não é visível ao olho humano, mas visível para a câmera NoIR. O LED IR não consome muita energia em comparação com o Raspberry Pi, então deixamos o LED IR ligado por uma questão de simplicidade.
Em versões anteriores do Pi, a saída de corrente máxima desses pinos era de 50 mA. O Raspberry Pi B + aumentou isso para 500mA. No entanto, usamos apenas os pinos de alimentação de 5 V para simplificar, que podem fornecer até 1,5 A. A tensão direta do LED IR é de cerca de 1,7 ~ 1,9 V de acordo com nossas medições. Embora o LED IR possa consumir 500mA sem se danificar, reduzimos a corrente para cerca de 200mA para reduzir o calor e o consumo geral de energia. Os resultados experimentais também mostram que o LED IV é brilhante o suficiente com 200mA de corrente de entrada. Para preencher a lacuna entre 5 V e 1,9 V, usamos três diodos 1N4001 e um resistor de 1 Ohm em série com o LED IV. A queda de tensão no fio, diodos e resistor é de cerca de 0,2 V, 0,9 V (para cada um) e 0,2 V, respectivamente. Assim, a tensão sobre o LED IR é 5 V - 0,2 V - (3 * 0,9 V) - 0,2 V = 1,9 V. A dissipação de calor no LED é de 0,18 W e 0,2 W no resistor, todos dentro de suas classificações máximas.
Mas nós ainda não acabamos! A fim de obter um melhor ajuste no chassi impresso em 3D, queremos que a lente do LED IR se projete de nosso chassi e que a placa PCB fique alinhada com o orifício. O pequeno fotodiodo no canto inferior direito vai atrapalhar. Para remediar isso, desolda-lo e virá-lo para o lado oposto do quadro, conforme mostrado nas duas fotos finais. O fotodiodo não é necessário, pois queremos que o LED esteja sempre ligado. Simplesmente mudá-lo para o lado oposto deixa o circuito de LED original inalterado.
Ao soldar os fios, certifique-se de que os fios tenham pelo menos 30 cm de comprimento e tenham cabeçotes de pino que possam deslizar sobre os GPIOs do Pi.
Etapa 5: Preparando o Hardware: Chassi
Arquivos Fonte:
- Caso STL
- Case Makerbot
- Capa STL
- Cover Makerbot
Usamos um chassi simples impresso em 3D para abrigar o Pi, a câmera e o LED. Usar nosso chassi é opcional, embora recomendado para evitar que crianças pequenas toquem em circuitos eletrônicos expostos. Cada berço é diferente, portanto, nosso chassi não inclui um suporte de montagem. Várias opções de montagem podem incluir:
- Abraçadeiras
- 3M Dual Lock
- Velcro
- Fita
Se você tiver acesso a um MakerBot Replicator (5ª geração), pode simplesmente fazer o download dos arquivos.makerbot para o caso e a capa em sua MakerBot Replicator e imprimir. Demora cerca de 6 horas para imprimir o caso e 3 horas para imprimir a capa. Se você estiver usando um tipo diferente de impressora 3D, continue lendo.
Um volume mínimo de construção de 9,9 "(C) x 7,8" (L) x 5,9 "(A) é necessário para imprimir o CribSense. Se você não tiver acesso a uma impressora 3D com este volume de construção, você pode usar uma impressão 3D online (como Shapeways ou Sculpteo) para imprimir CribSense. A resolução mínima de impressão é 0,015 ". Se você estiver usando uma impressora 3D do tipo de fabricação de filamento fundido, isso significa que o diâmetro do bico deve ser de 0,015 "ou menor. Impressoras com resoluções de impressão mais baixas (diâmetros de bico maiores) podem funcionar, mas o Raspberry Pi pode não caber no chassi. Recomendamos PLA (ácido polilático) como o material de impressão preferido. Outros plásticos podem funcionar, mas o Raspberry Pi pode não caber na caixa se o coeficiente de expansão térmica do plástico escolhido for maior que o do PLA. Se sua impressora 3D tiver um placa de impressão aquecida, desligue o aquecedor antes de prosseguir.
Orientar o modelo na placa de impressão da impressora é fundamental para uma impressão bem-sucedida. Esses modelos foram cuidadosamente projetados para que não precisem ser impressos com material de suporte, economizando plástico e melhorando a qualidade de impressão. Antes de prosseguir, baixe os arquivos 3D da caixa e da capa. Ao imprimir esses modelos, o pescoço do CribSense deve ficar plano na placa de impressão. Isso garante que todos os ângulos de balanço nos modelos não excedam 45 graus, eliminando assim a necessidade de material de suporte. Para obter instruções sobre como orientar modelos 3D no volume de construção de sua impressora, consulte o manual de instruções que vem com sua impressora 3D. Exemplos para a orientação de construção da caixa e da tampa são mostrados acima.
Além de colocar o pescoço do CribSense plano contra a placa de impressão, você pode notar que os modelos são girados em torno do eixo vertical. Isso pode ser necessário para ajustar o modelo dentro do volume de construção de sua impressora 3D. Esta rotação é opcional se o comprimento do seu volume de construção for longo o suficiente para acomodar o CribSense.
Etapa 6: Preparando o Hardware: Montagem
Depois de ter todo o hardware pronto, você pode começar a montagem. Qualquer cola pode ser usada neste processo, mas recomendamos a cola quente por dois motivos principais. A cola quente seca rapidamente, então você não precisa esperar muito tempo para que ela seque. Além disso, a cola quente pode ser removida se você cometer um erro. Para remover a cola quente seca, embeba a cola quente em álcool isopropílico. Recomendamos a concentração de 90% ou mais, mas a concentração de 70% ainda funcionará. Embeber a cola quente seca em álcool isopropílico vai enfraquecer a ligação entre a cola e a superfície subjacente, permitindo que você descasque a cola de forma limpa. Ao embeber a cola em álcool isopropílico, o Raspberry Pi deve ser desligado e desconectado. Certifique-se de deixar tudo secar antes de reaplicar a cola quente e inicializar o Raspberry Pi.
Todas as imagens para essas etapas estão em ordem e seguem junto com as etapas de texto.
- Insira o Raspberry Pi no chassi. Você precisará flexioná-lo um pouco para inserir a porta de áudio, mas assim que estiver inserido, o conector de áudio irá mantê-lo no lugar. Depois de instalado, certifique-se de que todas as portas ainda possam ser acessadas (por exemplo, você pode conectar o cabo de alimentação).
- Em seguida, use cola quente para pregar o Pi no lugar e prenda a câmera ao Pi. Também existem orifícios para parafusos, se preferir usá-los.
- Agora, cole o LED e a câmera na tampa frontal (foto). Comece colando a quente a câmera NoIR no orifício da câmera. Certifique-se de que a câmera esteja confortável e alinhada com o chassi. Não use muita cola; caso contrário, você não conseguirá encaixar a câmera no gabinete principal. Certifique-se de ligar o Pi e dar uma olhada na câmera (`raspistill -v`, por exemplo) para ter certeza de que está bem angulado e tem um bom campo de visão. Se não estiver, remova a cola quente e reposicione.
- Em seguida, cole o LED IR no orifício no pescoço da capa. O pescoço está em um ângulo de 45 graus para iluminar o berço, o que resulta em mais sombras em situações de pouca luz. Isso adiciona mais contraste à imagem, facilitando a detecção de movimento.
- Conecte os fios do LED IV aos pinos do cabeçalho do Raspberry Pi, conforme mostrado na imagem esquemática.
- Embale os cabos no chassi de forma que não os amasse ou estique. Acabamos dobrando o cabo estilo acordeão porque o cabo flexível da nossa câmera era muito longo.
- Com tudo dobrado, cola quente nas bordas onde as duas peças se encontram, selando-as no lugar.
Etapa 7: Calibração
Detalhes sobre os parâmetros de configuração podem ser encontrados na documentação do repositório CribSense. Também assista ao vídeo para ver um exemplo de como você pode calibrar o CribSense depois de ter tudo configurado.
Aqui está um exemplo do arquivo de configuração:
[io]; Configuração I / O
; input = path_to_file; Arquivo de entrada para usar input_fps = 15; fps de entrada (40 máx., 15 recomendado se estiver usando a câmera) full_fps = 4,5; fps em que quadros completos podem ser processados crop_fps = 15; fps em que os quadros recortados podem ser processados camera = 0; Câmera para usar largura = 640; Largura da altura do vídeo de entrada = 480; Altura do vídeo de entrada time_to_alarm = 10; Quantos segundos esperar sem movimento antes do alarme. [colheita]; Configurações de corte adaptáveis crop = true; Se deve ou não cortar frames_to_settle = 10; # quadros a aguardar após a redefinição antes do processamento roi_update_interval = 800; # frames entre o recálculo do ROI roi_window = 50; # quadros a serem monitorados antes de selecionar ROI [movimento]; Configurações de detecção de movimento erode_dim = 4; dimensão do kernel erodido dilate_dim = 60; dimensão do kernel dilatado diff_threshold = 8; diferença de abs necessária antes de reconhecer a duração da mudança = 1; # frames para manter o movimento antes de sinalizar true pixel_threshold = 5; # pixels que devem ser diferentes para sinalizar como motion show_diff = false; exibir a diferença entre 3 quadros [ampliação]; Configurações de ampliação de vídeo amplificar = 25; A% de amplificação desejada de corte baixo = 0,5; A baixa frequência do passa-banda. corte alto = 1,0; A alta frequência do passa-banda. limiar = 50; O limite de fase como% de pi. show_magnification = false; Mostra os quadros de saída de cada ampliação [debug] print_times = false; Imprimir tempos de análise
A calibração do algoritmo é um esforço iterativo, sem solução exata. Incentivamos você a experimentar vários valores, combinando-os com os recursos de depuração, para encontrar a combinação de parâmetros mais adequada ao seu ambiente. Antes de iniciar a calibração, certifique-se de que show_diff e show_magnification estejam definidos como true.
Como orientação, aumentar a amplificação e os valores de phase_threshold aumenta a quantidade de ampliação aplicada ao vídeo de entrada. Você deve alterar esses valores até ver claramente o movimento que deseja rastrear no quadro do vídeo. Se você vir artefatos, reduzir o phase_threshold enquanto mantém a mesma amplificação pode ajudar.
Os parâmetros de detecção de movimento ajudam a compensar o ruído. Ao detectar regiões de movimento, erode_dim e dilate_dim são usados para dimensionar as dimensões dos núcleos OpenCV usados para erodir e dilatar o movimento para que o ruído seja primeiro corroído, então o sinal de movimento restante é significativamente dilatado para tornar as regiões de movimento óbvias. Esses parâmetros também podem precisar ser ajustados se o seu berço estiver em uma configuração de contraste muito alto. Em geral, você precisará de um erode_dim maior para configurações de alto contraste e de um erode_dim menor para baixo contraste.
Se você executar o CribSense com show_diff = true e perceber que muito da saída do acumulador é branco, ou alguma parte completamente não relacionada do vídeo é detectada como movimento (por exemplo, uma lâmpada piscando), aumente o erode_dim até apenas a parte do vídeo correspondente ao seu bebê é a maior seção de branco. A primeira figura mostra um exemplo onde a dimensão erodida é muito baixa para a quantidade de movimento no quadro, enquanto a próxima mostra um quadro bem calibrado.
Depois de calibrado, certifique-se de que o pixel_threshold esteja definido com um valor tal que "Movimento do Pixel" relate apenas os valores de pico do movimento do pixel, e não todos eles (o que significa que você precisa cortar o ruído). Idealmente, você verá uma saída como esta em seu terminal, onde há um padrão periódico claro correspondente ao movimento:
[info] Movimento do pixel: 0 [info] Estimativa de movimento: 1,219812 Hz
[informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 1,219812 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 1,219812 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 1,219812 Hz [informações] Movimento do pixel: 44 [informações] Estimativa de movimento: 1,219812 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 1,219812 Hz [informações] Movimento do pixel: 161 [informações] Estimativa de movimento: 1,219812 Hz [informações] Movimento do pixel: 121 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 86 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento de pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento de pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movem de pixel ent: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 97 [informações] Estimativa de movimento: 0,841416 Hz [informações] Movimento do pixel: 74 [informações] Estimativa de movimento: 0,839298 Hz [informações] Pixel Movimento: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 60 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 48 [informações] Movimento Estimativa: 0,839298 Hz [informações] Movimento do pixel: 38 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 29 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 28 [informações] Estimativa de movimento: 0,839298 Hz [info] Movimento do pixel: 22 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz [informações] Movimento do pixel: 0 [informações] Estimativa de movimento: 0,839298 Hz
Se sua saída for mais parecida com esta:
[informações] Movimento do pixel: 921 [informações] Estimativa de movimento: 1,352046 Hz
[informações] Movimento do pixel: 736 [informações] Estimativa de movimento: 1,352046 Hz [informações] Movimento do pixel: 666 [informações] Estimativa de movimento: 1,352046 Hz [informações] Movimento do pixel: 663 [informações] Estimativa de movimento: 1,352046 Hz [informações] Movimento do pixel: 1196 [informações] Estimativa de movimento: 1,352046 Hz [informações] Movimento do pixel: 1235 [informações] Estimativa de movimento: 1,352046 Hz [informações] Movimento do pixel: 1187 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 1115 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 959 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 744 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 611 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 468 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 371 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 307 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 270 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 234 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 197 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 179 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 164 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 239 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 733 [informações] Estimativa de movimento: 1,456389 Hz [informações] Movimento do pixel: 686 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento do pixel: 667 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento do pixel: 607 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento de pixel: 544 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento de pixel: 499 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento de pixel: 434 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento do pixel: 396 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento do pixel: 375 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento do pixel: 389 [informações] Estimativa de movimento: 1,229389 Hz [informações] Movimento do pixel: 305 [informações] Estimativa de movimento: 1,312346 Hz [informações] Movimento do pixel: 269 [informações] Estimativa de movimento: 1,312346 Hz [informações] Movimento do pixel: 1382 [informações] Movimento E estimativa: 1,312346 Hz [informações] Movimento do pixel: 1086 [informações] Estimativa de movimento: 1,312346 Hz [informações] Movimento do pixel: 1049 [informações] Estimativa de movimento: 1,312346 Hz [informações] Movimento do pixel: 811 [informações] Estimativa de movimento: 1,312346 Hz [info] Movimento do pixel: 601 [informações] Estimativa de movimento: 1,312346 Hz [informações] Movimento do pixel: 456 [informações] Estimativa de movimento: 1,312346 Hz
Ajuste pixel_threshold e diff_threshold até que apenas os picos sejam vistos e o movimento do pixel seja 0, caso contrário.
Etapa 8: Demonstração
Aqui está uma pequena demonstração de como o CribSense funciona. Você terá que imaginar que ele está preso ao lado de um berço.
Ao posicionar o CribSense sobre o berço, você precisará otimizar a distância entre o bebê e a câmera. O ideal é que o peito do bebê ocupe menos de 1/3 do quadro. A criança não deve estar muito longe, ou o vídeo de baixa resolução terá dificuldade para encontrar detalhes suficientes para ampliar. Se a câmera estiver muito perto, ela pode não ser capaz de ver seu filho se ele rolar ou se mover para fora do enquadramento. Da mesma forma, se a criança estiver sob um cobertor "tenda", onde o contato entre o cobertor e o peito da criança é limitado, pode ser difícil detectar o movimento. Coloque-os bem!
Você também deve considerar a situação de iluminação ao redor de seu berço. Se o seu berço estiver ao lado de uma janela, você pode obter sombras em movimento ou valores de luz em mudança, pois o sol é bloqueado por nuvens ou o movimento acontece fora da janela. Um lugar com iluminação consistente é o melhor.
Com um pouco mais de trabalho, pensamos que alguém poderia melhorar nosso software para que a calibração seja um processo muito mais suave. No futuro, recursos adicionais como notificações push também podem ser adicionados.
Etapa 9: Solução de problemas
Você pode encontrar alguns problemas comuns ao configurar o CribSense. Por exemplo, tendo problemas para construir / executar o programa ou não ouvir nenhum áudio. Lembre-se de que o CribSense não é um monitor de bebê perfeitamente confiável. Gostaríamos de receber contribuições em nosso repositório GitHub conforme você faz melhorias!
Aqui estão algumas dicas de solução de problemas que reunimos durante a criação do CribSense.
Nenhum alarme está tocando
- Seus alto-falantes estão funcionando?
- Você consegue reproduzir outros sons do Pi fora do alarme do CribSense?
- Se o seu Pi está tentando reproduzir áudio por meio de HDMI em vez da porta de áudio? Verifique a página de configuração de áudio do Raspberry Pi para certificar-se de que selecionou a saída correta.
- O software CribSense está detectando movimento? Se o CribSense estiver sendo executado em segundo plano, você pode verificar com journalctl -f em um terminal.
- Se o CribSense estiver detectando muitos movimentos, pode ser necessário calibrar o CribSense.
O LED IV não está funcionando
- Você consegue ver uma cor vermelha fraca quando olha para o LED IV? Um leve anel vermelho deve ser visível quando o LED está aceso.
- Verifique a polaridade das conexões. Se + 5V e GND estiverem invertidos, não funcionará.
- Conecte o LED a uma fonte de alimentação com um limite de tensão / corrente de 5 V / 0,5 A. Normalmente, deve consumir 0,2A a 5V. Caso contrário, seu LED pode estar com defeito.
O CribSense está detectando movimento, embora não haja uma criança
- Você calibrou corretamente o CribSense?
-
Lembre-se, o CribSense está apenas procurando mudanças nos valores dos pixels
- Há alguma sombra se movendo dentro do quadro?
- Há oscilação ou alteração na iluminação?
- O CribSense está montado em uma superfície estável (ou seja, algo que não vai tremer se as pessoas estiverem passando por ele)?
- Existem outras fontes de movimento na moldura (espelhos que captam os reflexos, etc.)?
O CribSense NÃO está detectando movimento, embora haja movimento
- Você calibrou corretamente o CribSense?
- Existe algo no caminho da câmera?
- Você consegue se conectar à câmera do Raspberry Pi? Verifique executando raspistill -v em um terminal para abrir a câmera no Pi por alguns segundos.
- Se você olhar sudo systemctl status cribsense, o CribSense está realmente rodando?
- O seu filho está debaixo de um cobertor que é "acobertado" de forma que não entre em contato com a criança? Se houver lacunas de ar significativas entre o cobertor e a criança, o cobertor pode mascarar o movimento.
- Você consegue ver o movimento se amplificar mais o vídeo?
- Você consegue ver o movimento se ajustar os cortes de baixa e alta frequência?
- Se isso está acontecendo apenas com pouca luz, você se certificou de que a calibração funciona com pouca luz?
CribSense não constrói
Você instalou todas as dependências?
Não consigo executar o cribsense na linha de comando
- Você acidentalmente digitou errado ao executar./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug durante a construção do software?
- O cribsense está presente em / usr / bin?
- Qual caminho é fornecido se você executar "which cribsense"?
Recomendado:
Fonte de água sem contato: 9 etapas (com fotos)
Fonte de água sem contato: No final do meu primeiro ano como aluno do MCT, fui incumbido de fazer um projeto que contivesse todas as habilidades que adquiri nos cursos ao longo do ano. Eu estava procurando um projeto que verificasse todos os requisitos definidos pelos meus professores e em
Distribuidor de desinfetante de mãos sem contato faça você mesmo, sem um Arduino ou um microcontrolador: 17 etapas (com imagens)
Dispensador de desinfetante de mãos sem contato DIY Sem um Arduino ou um microcontrolador: Como todos sabemos, o surto COVID-19 atingiu o mundo e mudou nosso estilo de vida. Nessa condição, o Álcool e os desinfetantes para as mãos são fluidos vitais, no entanto, devem ser usados de maneira adequada. Tocar recipientes de álcool ou desinfetantes para as mãos com mãos infectadas c
Usar smartphone como termômetro sem contato / termômetro portátil: 8 etapas (com fotos)
Use Smartphone como termômetro sem contato / termômetro portátil: Medir a temperatura corporal com sem contato / sem contato como uma pistola térmica. Eu criei este projeto porque o Thermo Gun agora é muito caro, então preciso encontrar uma alternativa para fazer DIY. E o objetivo é fazer com a versão de baixo orçamento.SuppliesMLX90614Ardu
Termômetro infravermelho sem contato baseado em Arduino - Termômetro baseado em IR usando Arduino: 4 etapas
Termômetro infravermelho sem contato baseado em Arduino | Termômetro baseado em IR usando Arduino: Olá pessoal, neste instructables faremos um termômetro sem contato usando arduino. Já que às vezes a temperatura do líquido / sólido é muito alta ou muito baixa e então é difícil fazer contato com ele e ler sua temperatura então naquele cenário
Resfriador / suporte de laptop de custo zero (sem cola, sem perfuração, sem porcas e parafusos, sem parafusos): 3 etapas
Resfriador / suporte para laptop de custo zero (sem cola, sem furação, sem porcas e parafusos, sem parafusos): ATUALIZAÇÃO: ATUALIZAÇÃO ESPECIALMENTE VOTE MEU INSTRUTÁVEL, OBRIGADO ^ _ ^ VOCÊ TAMBÉM PODE GOSTAR DE VOTO EM MEU OUTRO CONCURSO INSCREVA-SE EM www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ OU TALVEZ VOTE NO MEU MELHOR AMIGO