Índice:
- Etapa 1: Diagrama de blocos do sistema
- Etapa 2: Componentes para este projeto
- Etapa 3: Etapa 2: Diagrama de circuito e conexões
- Etapa 4: Instale o sistema operacional no DragonBoards
- Etapa 5: interfaces de conectividade
- Etapa 6: Instalando Módulos de Software Essenciais
- Etapa 7: Demonstração
- Etapa 8: Obrigado
Vídeo: Visão inteligente de IoT: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Este é um projeto focado no contexto da cidade inteligente. Nesse caso, há três grandes problemas que estamos resolvendo:
1 - economia de energia na iluminação pública; 2 - melhorar a segurança da cidade; 3 - melhorar o fluxo de tráfego.
1 - Com o uso de luzes LED em ruas, a economia já é de até 50%, e com a adição do Telegestão, podemos ter 30% a mais de economia.
2 - Com o uso de câmeras inteligentes, podemos controlar as luzes para diminuir onde o fluxo de pessoas está ausente e tornar mais claro o trecho da rua por onde as pessoas estão caminhando. Além de economizar energia, aumentará a sensação de estar sendo observado, intimidando pessoas mal-intencionadas. Além disso, alarmes visuais (piscando as lâmpadas, por exemplo), podem ser usados em caso de comportamento suspeito.
3 - A câmera inteligente vigiará o trânsito, processará localmente suas condições e controlará os semáforos para melhor administrar o trânsito. Desta forma, os engarrafamentos poderiam ser evitados, os carros não teriam que esperar muito tempo sem sinais vermelhos quando não houvesse fluxo na passagem, e assim por diante. Em relação aos problemas tecnológicos, também estamos resolvendo problemas comuns em IoT, como conectividade robusta em escala de cidade e integração de câmeras para rede IoT, usando processamento de borda para transmitir apenas informações relevantes.
Veja nossa publicação no Embarcados e GitHub
Também no YouTube
Nosso time:
Milton Felipe Souza Santos
Gustavo Retuci Pinheiro
Eduardo Caldas Cardoso
Jonathas Baker
(Informações de contato na parte inferior)
Etapa 1: Diagrama de blocos do sistema
Esta é uma visão geral da arquitetura da solução.
O sistema é composto por um Camera-Gateway que usa RFmesh na interface FAN, WiFi na LAN e também CAT-M para conectividade WAN. Ele também contém fotocélulas inteligentes, câmeras inteligentes e sinais de luz.
Todos os dispositivos da rede, principalmente a câmera inteligente, estão enviando dados por meio do 6lowpan para o gateway inteligente, para que ele tome as decisões relacionadas à iluminação pública e ao controle dos sinais luminosos.
O gateway também está conectado ao nosso servidor via VPN. Desta forma, temos acesso ao FAN e LAN, bot para verificar o estado ou controlar os dispositivos.
Etapa 2: Componentes para este projeto
Smart Cam
- DragonBoard410C / DragonBoard820C
- Câmera USB
- OneRF NIC
Camera Gateway
- DragonBoard410C / DragonBoard820C
- Câmera USB
- OneRF NIC
- Modem Cat-M / 3G
Sinal de luz inteligente
Etapa 3: Etapa 2: Diagrama de circuito e conexões
Smart Cam
- Câmera na porta USB
- OneRF NIC na porta UART
Camera Gateway
- Câmera na porta USB
- OneRF NIC na porta UART
- Modem 3G / Cat-M na porta USB
(Todos conectados pelo Mezanino IoT)
Smart Stree Light
- Poste de luz convencional
- Placa de relé (3 canais)
- OneRF NIC
Fotocélula Inteligente
- OneRF NIC
- Medidor de energia
Etapa 4: Instale o sistema operacional no DragonBoards
Instalando Debian no Dragonboard820C (método Fastboot)
Usando um sistema operacional Linux, instale os pacotes listados em:
No dragonboard:
faça s4 DESLIGADO, DESLIGADO, DESLIGADO, DESLIGADO
Ligue pressionando vol (-)
Se estiver usando um monitor serial (altamente recomendado), você receberá a mensagem “fastboot: processing command” (monitor serial em 115200) Conecte o micro-usb (J4) no PC
No PC host: Baixe (e descompacte) em
dispositivos $ sudo fastboot
452bb893 fastboot (exemplo)
$ sudo fastboot flash boot boot-linaro-buster-dragonboard-820c-BUILD.img
$ sudo fastboot flash rootfs linaro-buster-alip-dragonboard-820c-BUILD.img
Instalando Debian no Dragonboard410C
Etapas no computador (Linux)
1 - Baixe a imagem
$ cd ~
$ mkdir Debian_SD_Card_Install_image
$ cd Debian_SD_Card_Install_image
$ wget
2 - Descompacte os arquivos
$ cd ~ / Debian_SD_Card_Install_image
$ unzip dragonboard410c_sdcard_install_debian-233.zip
3 - Insira o microSD no seu computador e verifique se ele está montado
$ df -h
/ dev / sdb1 7,4G 32K 7,4G 1% / media / 3533-3737
4 - Desmonte o microSD e grave a imagem
$ umount / dev / sdb1
$ sudo dd if = db410c_sd_install_debian.img of = / dev / sdb bs = 4M oflag = sync status = noxfer
5 - Remova o microSD do seu PC
Etapas no computador (Windows) Download - Imagem do cartão SD - (Opção 1) Imagem do cartão SD - Instale e inicialize a partir do eMMC
www.96boards.org/documentation/consumer/dr…
Descompacte a imagem de instalação do cartão SD
Baixe e instale a ferramenta Win32DiskImager
sourceforge.net/projects/win32diskimager/f…
Abra a ferramenta Win32DiskImager
Insira o cartão SD no computador
Encontre o arquivo.img extraído
Clique em Write
Passos no DragonboardCertifique-se de que o DragonBoard ™ 410c esteja desconectado da energia
Defina a chave S6 no DragonBoard ™ 410c para 0-1-0-0, “SD Boot switch” deve ser definido como “ON”.
Conecte um HDMI
Conecte um teclado USB
Insira o microSD
Conecte o adaptador de energia
Selecione a imagem a instalar e clique em “Instalar”
espere a instalação terminar
Remova o adaptador de energia
Remova o microSD
Defina o interruptor S6 para 0-0-0-0
FEITO
Etapa 5: interfaces de conectividade
Instalando Cat-m e 3G
Aplique os seguintes comandos AT usando uma máquina host:
AT # SIMDET? // verificar a presença do SIM # SIMDET: 2, 0 // sim não inserido
#SIMDET: 2, 1 // sim inserido
AT + CREG? // verifique se está registrado
+ CREG: 0, 1 // (desativar código de resultado não solicitado de registro de rede (padrão de fábrica), rede doméstica registrada)
AT + COPS?
+ COPS: 0, 0,”VIVO”, 2 // (modo = escolha automática, formato = alfanumérico, oper,?)
AT + CPAS // Status de atividade do telefone
+ CPAS: 0 // pronto
AT + CSQ // verifica a qualidade do serviço
+ CSQ: 16, 3 // (rssi, taxa de erro de bit)
AT + CGATT? // estado do anexo GPRS
+ CGATT: 1 // anexado
AT + CGDCONT = 1,”IP”,”zap.vivo.com.br”,, 0, 0 // configura o contexto
OK
AT + CGDCONT? // verifique o contexto
+ CGDCONT: 1,”IP”,”zap.vivo.com.br”,””, 0, 0
AT # SGACT = 1, 1 // Ativação de contexto
#SGACT: 100.108.48.30
OK
Configure a interface
Usando ambiente gráfico
Conecte o modem (oneRF_Modem_v04 - HE910)
Conexões de rede abertas
Clique em + para adicionar uma nova conexão
Selecione Banda Larga Móvel
Selecione o dispositivo correto
Selecione o país
Selecione o provedor
Selecione o plano e salve
Remova o Modem
Reconecte o Modem
Usando terminalapt-get install pppconfig
pppconfig
provedor = vivo
dinamico
INDIVÍDUO
vivo
vivo
115200
Tom
*99#
não (manual)
/ dev / ttyUSB0
Salve
cat / etc / ppp / peers / vivo
cat / etc / chatscripts / vivo
pon vivo
Se você estiver usando o módulo Cat-M, basta usar os seguintes comandos antes:
echo 1bc7 1101> / sys / bus / usb-serial / drivers / opção1 / new_id
apt-get install comgt
comgt -d / dev / ttyUSB0 comgt info -d / dev / ttyUSB0
Etapa 6: Instalando Módulos de Software Essenciais
No computador de desenvolvimento
Observe que algumas etapas dependem do hardware e devem ser ajustadas para atender às especificações reais do computador. As bibliotecas podem ser instaladas com um único comando.
sudo apt install build-essential git libatlas libgoogle-glog-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev libatlas libboost libgflags2 hdf5 openmpi-bin opnempi-doc protobuf-compiler python-pip python-numpy python-scipy python-matplotlib python-futuro python-protobuf python-type python-hypotesis python-yaml
OpenCV
Esta estrutura é usada para desenvolver algoritmos estatísticos baseados em imagens na máquina de desenvolvimento. Uma vez que a maior parte do nosso código é escrito em Python, o método de instalação mais fácil é apenas
pip install opencv-python
Observe, no entanto, que essas rodas não usarão nada além de sua CPU e podem nem mesmo usar todos os seus núcleos, então você pode querer compilar a partir da fonte para obter o desempenho máximo. Para construir o pacote no Linux, por exemplo, você faz o download do arquivo zip da página OpenCV Releases e descompacta-o. Da pasta descompactada:
mkdir build && cd buildcmake.. make all -j4
sudo make install
O comando -j4 instrui o make a usar quatro threads. Use tantos quantos sua CPU tiver!
Caffe
Para configurar a estrutura Caffe a partir de fontes:
git clone https://github.com/BVLC/caffe.git && cd caffemkdir build
cmake..
faça tudo
faça teste faça teste de execução
Se todos os testes forem executados com êxito, você está pronto.
TensorFlow
O Google não permite que você compile o TensorFlow com ferramentas comuns. Requer o Bazel para isso e é provável que não funcione, portanto, evite compilá-lo e apenas pegue o módulo pré-compilado com:
pip instalar tensorflow
Se o seu computador for um pouco antigo e não tiver instruções AVX, obtenha o último tensorflow não AVX com
pip install tensorflow == 1.5
E está feito.
SNPE - Snapdragon ™ Neural Processing Engine
Configurar o Snappy, como nossos amigos da Qualcomm chamam de SNPE, não é difícil, mas as etapas devem ser seguidas de perto. O esquema de instalação é:
clonar os repositórios git dos frameworks de rede neural
CaffeCaffe2
TensorFlow
ONNX
execute os scripts para verificar se há dependênciasnpe / bin / dependencies.sh
snpe / bin / check_python_depends.sh
para cada estrutura instalada, execute snpe / bin / envsetup.sh
fonte $ SNPE / bin / envsetup.sh -c $ CAFFE_GIT
fonte $ SNPE / bin / envsetup.sh -f $ CAFFE2_GIT
fonte $ SNPE / bin / envsetup.sh -t $ TENSORFLOW_GIT
fonte $ SNPE / bin / envsetup.sh -o $ ONNX_GIT
Para originar SNPE em cada instância de terminal que você abrir, anexe as quatro linhas da etapa três ao final de seu arquivo ~ /.bashrc.
No alvo
Mudar de amd64 para arm64 não é uma tarefa fácil, pois muitas bibliotecas aproveitarão as instruções do x86 para aumentar seu desempenho. Felizmente, é possível compilar a maioria dos recursos necessários no próprio quadro. As bibliotecas necessárias podem ser instaladas com um único comando.
sudo apt install build-essential git libatlas libgoogle-glog-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev libatlas libboost libgflags2 hdf5 openmpi-bin opnempi-doc protobuf-compiler python-pip python-numpy python-scipy python-matplotlib python-futuro python-protobuf python-type python-hypotesis python-yaml
Instale-os com o apt e siga em frente. Observe que esta etapa pode levar algum tempo, pois as chamadas do apt fazem para construir o código que não é pré-compilado.
OpenCV
Baixe a versão do repositório OpenCV, descompacte-o em algum lugar e da pasta descompactada:
mkdir build && cd buildcmake..
fazer tudo -j3
sudo make install
Observe que usamos a opção -j3. Se você acessar a placa via ssh, ter todos os núcleos totalmente carregados pode ser o suficiente para interromper a conexão. Isso não é desejável. Limitando o uso de thread a três, sempre teremos pelo menos um thread livre para lidar com conexões ssh e manutenção geral do sistema.
Isso é para o Dragonboard 820 e Inforce 6640 com o chip APQ8096. No Dragonboard 410, você desejará ter um pouco de memória virtual livre ou limitar os threads de compilação a um, já que ele tem menos RAM física disponível.
Também é importante notar que o resfriamento do chip ajudará a aumentar o desempenho, limitando o estrangulamento térmico. Um dissipador de calor faz o truque com cargas pequenas, mas você vai querer um ventilador adequado para compilar e outras cargas intensivas da CPU.
Por que não instalar o OpenCV com apt ou pip? Porque compilá-lo na máquina de destino torna todas as instruções de processador disponíveis visíveis para o compilador, melhorando o desempenho de execução.
SNPE - Snapdragon ™ Neural Processing Engine
Instalamos o Snappy exatamente como em um computador desktop, embora não houvesse uma estrutura de rede neural real instalada (o SNPE só precisa dos repositórios git, não dos binários reais).
No entanto, como tudo o que precisamos são os binários e cabeçalhos para o comando snpe-net-run, existe a possibilidade de que apenas ter os seguintes arquivos em uma pasta e adicionar esta pasta ao PATH funcione:
Rede neural binarysnpe / bin / aarch64-linux-gcc4.9 / snpe-net-run
Bibliotecas de CPU
snpe / lib / aarch64-linux-gcc4.9 / libSNPE.so
snpe / lib / aarch64-linux-gcc4.9 / libsymphony-cpu.so
/usr/lib/aarch64-linux-gnu/libatomic.so.1
Bibliotecas DSP
snpe / lib / dsp / libsnpe_dsp_skel.so
snpe / lib / aarch64-linux-gcc4.9 / libsnpe_adsp.so
Visualizador de resultados
snpe / models / alexnet / scripts / show_alexnet_classifications.py
O item em negrito, /usr/lib/aarch64-linux-gnu/libatomic.so.1, é fornecido com o Linaro neste caminho e deve ser copiado para esta pasta mínima hipotética.
Outros pacotes imprtant:
sudo apt-get install net-toolssudo apt-get install gedit
sudo apt install nodejs
sudo apt install openvpn
Etapa 7: Demonstração
Veja uma breve demonstração do Smart IoT Vision para Smart-City funcionando !!
www.youtube.com/watch?v=qlk0APDGqcE&feature=youtu.be
Etapa 8: Obrigado
Agradecemos a equipe Qualcomm e a Embarcados por criar e apoiar o concurso.
Sinta-se à vontade para nos contatar em:
Referências
Guia de instalação do Dragonboard 410c para Linux e Android
github.com/96boards/documentation/wiki/Dr….
DragonBoard 410c
caffe.berkeleyvision.org/install_apt.htmlhttps://caffe.berkeleyvision.org/installation.html#… https://developer.qualcomm.com/docs/snpe/setup.ht…https://caffe.berkeleyvision.org / installation.html #… https://github.com/BVLC/caffe https://caffe.berkeleyvision.org/installation.html#… https://github.com/tensorflow/tensorflow http: / /caffe.berkeleyvision.org/installation.html#… https://www.tensorflow.org/install/ https://caffe.berkeleyvision.org/installation.html#… https://caffe.berkeleyvision.org/
Recomendado:
Persistência da equipe de visão de LED: 11 etapas (com fotos)
Persistência da equipe de LED de visão: É bem sabido que mesmo depois que uma luz é desligada, o olho humano continua " vendo " por uma fração de segundo. Isso é conhecido como Persistência da Visão, ou POV, e permite " pintar " fotos movendo rapidamente uma tira o
Protótipo de óculos de visão noturna para Airsoft / Paintball: 4 etapas
Protótipo de óculos de visão noturna para Airsoft / Paintball: uma breve nota sobre visão noturna Os verdadeiros óculos de visão noturna (gen 1, gen2 e gen 3) normalmente funcionam amplificando a luz ambiente, no entanto, os óculos de visão noturna que construiremos aqui funcionam com um princípio diferente. Estaremos usando a câmera Pi NoIR que
Despertador inteligente: um despertador inteligente feito com Raspberry Pi: 10 etapas (com imagens)
Despertador inteligente: um despertador inteligente feito com Raspberry Pi: Você sempre quis um relógio inteligente? Se sim, esta é a solução para você! Fiz o Smart Alarm Clock, é um relógio que você pode alterar a hora do alarme de acordo com o site. Quando o alarme disparar, haverá um som (campainha) e 2 luzes
Jardinagem inteligente baseada em IoT e agricultura inteligente usando ESP32: 7 etapas
Jardinagem inteligente baseada em IoT e agricultura inteligente usando ESP32: O mundo está mudando com o tempo e a agricultura. Hoje em dia, as pessoas estão integrando a eletrônica em todos os campos e a agricultura não é exceção para isso. Esta fusão da eletrônica na agricultura está ajudando os agricultores e as pessoas que administram jardins
Proteja sua casa inteligente de forma inteligente: 14 etapas
Proteja sua casa inteligente de forma inteligente: Estou disputando o concurso de segurança e proteção. Se você gosta do meu instrutível, vote nele! Vou mostrar-lhe como proteger totalmente a sua casa e o ambiente de maneira fácil e econômica. Contém segmentos onde você aprenderá a: 1. Configure y