ÍNDICE DE CONTEÚDO
- Projeto de Kiosk Interativo para a Beaglebone Black com Yocto – parte 1
- Projeto de Kiosk Interativo para a Beaglebone Black com Yocto – parte 2
- Projeto de Kiosk Interativo para a Beaglebone Black com Yocto – parte 3
Neste artigo veremos como desenvolver um Interactive Kiosk (projeto de Kiosk Interativo) para a BeagleBone Black com o Yocto Project. Se você não conhece o Yocto sugiro que dê uma lida no artigo BeagleBone Black + Yocto escrito pelo Henrique Rossi. Totens, Kiosks e Terminais de Auto-Atendimento, são exemplos de produtos que podem ser desenvolvidos a partir da solução proposta.
Esta solução é composta por dois tipos de atores: o web-kiosk e o kiosk-manager. O web-kiosk é o equipamento que será utilizado pelo usuário final, e sua interface além de possuir uma tela LCD conectada na porta HDMI, pode ter também teclado e mouse ou ser sensível ao toque (touchscreen).
O kiosk-manager irá gerenciar o conteúdo a ser exibido em todos os web-kiosks, porém a sua presença não é obrigatória, já que o web-kiosk pode funcionar como um equipamento stand-alone. Os equipamentos podem estar conectados entre si através de uma LAN ou pela internet.
A figura abaixo ilustra uma possível topologia utilizando esses atores:
Nesta primeira parte vamos montar o ambiente de trabalho e gerar e testar a imagem do web-kiosk.
Montando o Ambiente de construção
Vamos criar os diretórios e baixar os fontes necessários:
1 2 3 4 5 6 7 |
mkdir -p ~/yocto/dl cd ~/yocto git clone git://git.yoctoproject.org/poky kiosk-src cd kiosk-src git checkout dora git clone git://git.yoctoproject.org/meta-ti git clone git://git.yoctoproject.org/meta-web-kiosk |
Agora vamos configurar o ambiente para gerarmos os artefatos de software:
1 2 |
cd ~/yocto . kiosk-src/oe-init-build-env kiosk-build |
Adicione as duas linhas abaixo no arquivo ~/yocto/kiosk-build/conf/bblayers.conf
para a variável BBLAYERS:
1 2 |
${TOPDIR}/../kiosk-src/meta-ti \ ${TOPDIR}/../kiosk-src/meta-web-kiosk \ |
Modifique e adicione as seguintes variáveis no arquivo ~/yocto/kiosk-build/conf/local.conf
1 2 3 4 5 6 7 8 |
#MACHINE ??= "qemux86" MACHINE ?= "beaglebone" DL_DIR ?= "${TOPDIR}/../dl" PACKAGE_CLASSES ?= "package_ipk" IMAGE_INSTALL_append = " kernel-modules" |
Note que configuramos nossa machine como sendo a beaglebone (serve tanto para a white como a black), mudamos o diretório de download para podermos reutilizar os fontes baixados em outros projetos, usaremos o gerenciador de pacotes ipk (ele é mais indicado para sistemas embarcados porque não exige muitos recursos para funcionar) e vamos instalar na imagem todos os módulos do kernel gerados.
Se você já fez o tutorial do Henrique, você pode simplesmente atualizar as suas cópias locais dos repositórios (git pull origin <branch_name>
), adicionar o repositório da meta-web-kiosk (git clone git://git.yoctoproject.org/meta-web-kiosk
) e modificar os arquivos bblayers.conf e local.conf.
Veja que nesse caso, para criarmos a aplicação de Kiosk Interativo foi necessário adicionar apenas a camada meta-web-kiosk, que possui as receitas das aplicações necessárias e as imagens que irão compor a solução. E essa é uma das características mais vantajosas do Yocto. Como ele é organizado em meta-layers, que são camadas usadas para agrupar um determinado conjunto de receitas, elas podem ser integradas com diferentes camadas afim de prover diversas funcionalidades diferentes para o seu projeto. Além disso, as camadas podem ter propósitos específicos, como por exemplo suporte a arquiteturas de hardware, como é o caso da camada meta-ti que contém os BSPs (Board Support Packages) para algumas placas e arquiteturas da Texas Instruments.
Gerando a imagem do web-kiosk
Para gerar a imagem do web-kiosk rode o seguinte comando:
1 |
bitbake core-image-web-kiosk |
Esta é a configuração de build que eu utilizei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Build Configuration: BB_VERSION = "1.20.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-12.10" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "beaglebone" DISTRO = "poky" DISTRO_VERSION = "1.5" TUNE_FEATURES = "armv7a vfp neon" TARGET_FPU = "vfp-neon" meta meta-yocto meta-yocto-bsp = "dora:75bed4086eb83f1d24c31392f3dd54aa5c3679b1" meta-ti = "master:6f1ab0fe37a4f044b04777ff0efc96b7fe0d100f" meta-web-kiosk = "master:7bf1e5b2cffb58d521353b00a1a3049c520875ed" |
Gravando a imagem do web-kiosk
Este procedimento é praticamente o mesmo utilizado no tutorial do Henrique mencionado no começo deste post.
Para a gravação das imagens no microSD card, o mesmo deve ser particionado e formatado de acordo o padrão aceito pelo placa. Para isso foi criado um script, que pode ser obtido com os seguintes comandos:
1 2 |
cd ~/yocto/ git clone https://github.com/henriqueprossi/beaglebone-black.git bbb-sdcard-prepare |
Insira um microSD card no computador PC ou notebook (sistema host) e descubra qual o device node criado pelo sistema operacional. Tente um dos seguintes comandos:
1 2 |
dmesg sudo fdisk -l |
Caso, por exemplo, o device node criado seja /dev/sdb, use o seguinte comando:
1 2 3 4 |
cd bbb-sdcard-prepare cd scripts chmod +x format_sd_card.sh sudo ./format_sd_card.sh /dev/sdb |
Assim que o processo de particionamento e formatação terminar, duas partições no microSD card são criadas:
- boot (FAT32);
- rootfs (ext4).
Execute a “montagem” dessas duas partições no sistema de arquivos do sistema host. Caso esse faça uso da distribuição Ubuntu, basta remover e inserir novamente o dispositivo no seu conector. Dado que, por exemplo, os pontos de montagem criados sejam /media/boot e /media/rootfs, as imagens geradas anteriormente são copiadas da seguinte forma paro o web-kiosk:
1 2 3 4 |
cd ~/yocto/kiosk-build/tmp/deploy/images/beaglebone cp MLO /media/boot cp u-boot.img /media/boot sudo tar xzf core-image-web-kiosk-beaglebone.tar.gz -C /media/rootfs |
Testando a imagem
Remova o microSD do computador e insira-o na BBB, conecte-a a uma TV por um cabo HDMI, a um roteador pelo cabo ethernet e a um teclado e a um mouse através de um hub USB. Se quiser monitorar o processo de boot, você também pode conectar um cabo serial.
Depois de energizar a placa você terá as seguintes imagens na TV:
É possível mudar a página inicial a ser exibida. Para isso conecte na console serial da BBB e digite o comando:
1 |
change_midori_url.sh https://www.embarcados.com.br |
E este será o resultado:
Projeto de Kiosk: O que vem por aí
Na segunda parte desta série sobre o projeto de kiosk interativo veremos como gerar a imagem do kiosk-manager e como configurar os atores para que conversem entre si.
Na terceira do projeto de kiosk interativo, veremos como customizar a imagem de acordo com as nossas necessidades.
Saiba mais
Cozinhando com o Yocto Project
Desvendando Yocto Project – Primeiros passos
Beaglebone Black + Yocto Daisy (Versão 1.6)
Lançada Nova Versão 1.7 (dizzy) do Yocto Project
Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1
Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 2
Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3
Beaglebone Black + Qt Embedded + Yocto – parte 1
Beaglebone Black + Qt Embedded + Yocto – parte 2
Beaglebone Black + Qt5 + Yocto – parte 1
Beaglebone Black + Qt5 + Yocto – parte 2
Raspberry pi + Qt5 + Yocto – parte 1
Raspberry pi + Qt5 + Yocto – parte 2
Referência
Apresentação que eu origem a esses artigos sobre o projeto de um kiosk interativo: Build Your Own Digital Signage Solution with Yocto Project no ELC 2013 San Francisco, feita por Nitin Kamble.
Diego,
Primeiramente, ótimos artigos da série. Estou pensando em montar um!
Você conhece algum LCD touch ou um Touch externo que seja compatível e com preço acessível aqui no Brasil?
Obs: 17 a 19 polegadas
Obrigado.
Olá Henrique,
Desculpe pela demora na resposta.
Estava na espera de um cliente me passar o contato do fornecedor.
Segue: https://www.playtix.com.br
Sem problemas!
Muito Obrigado.
Olá Diego,
É possível realizar a mesma operação utilizando o Raspberry Pi?
Teria a disponibilidade de colocar o código fonte?
Olá Daniel. Essa é uma ótima pergunta. Vou passar as instruções e se não ficar claro eu posso criar um post para mostrar o processo todo. Basicamente, teremos que baixar os fontes e configurar o Yocto para gerar as imagens (web-kiosk e kiosk-manager) para a Rpi. O Yocto constrói e empacota todos os artefatos de software para o target através da variável MACHINE. Portanto vamos modificar essa variável para o target “raspberrypi”. 1 – Baixando o source do BSP da Rpi em ~/yocto/kiosk-src : git clone git://git.yoctoproject.org/meta-raspberrypi cd meta-raspberrypi git checkout dora 2 – Vamos modificar o Yocto para “enxergar”… Leia mais »
[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1 […]
[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1 […]
[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1 […]
[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1 […]
[…] você já fez o tutorial do Henrique ou tutorial: ”Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto”, você pode […]
[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1 […]
[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1 […]
[…] na primeira e segunda partes da série como gerar, gravar e testar as imagens do web-kiosk e kiosk-manager na […]