Como utilizar o framework TotalCross na Raspberry Pi 3

A Startup Brasileira TotalCross lançou recentemente o SDK para Sistemas Embarcados que suporta, nesta versão, a Raspberry Pi e os hardwares da Toradex. Esse SDK, assim como o Mobile, usa o Java como linguagem de programação, permitindo sua utilização em qualquer IDE que suporta Java (VS Code, NetBeans, IntelliJ, Eclipse, etc).

O Java é utilizado somente como uma linguagem de entrada, pois o SDK TotalCross conta com sua própria máquina virtual que não usa nada da JVM. A TCVM (TotalCross Virtual Machine) converte bytecodes Java para bytecodes TotalCross, que foram elaborados a partir de pesquisas estatísticas de performance para identificar as operações mais frequentes e que mais impactam na performance, bem como a compressão delas para reduzir os conjuntos de instruções, garantindo footprint extremamente otimizado das aplicações.

Diferentemente da JVM e da maioria das máquinas virtuais, a TCVM funciona por registradores e não por pilha. Isto faz com que o custo de troca de contexto (chamada de método ou função) seja menor na TCVM. Além disso, sua chamada nativa tem um overhead menor em relação ao JNI, o que na prática faz com que haja uma camada a menos entre o Java e o código nativo (linguagem C). O que pode parecer pouco em um primeiro momento, traz uma diferença considerável de performance de operações complexas que fazem uso intensivo de implementação nativa, como interface gráfica ou criptografia.

O TotalCross possui também seu próprio Garbage Collector com ênfase na redução do footprint de memória com mínimo de impacto na aplicação. Sua execução é escalonada para ocorrer com pouca frequência e em momentos de baixo processamento, garantindo bom funcionamento em hardwares low-end.

Já na parte gráfica o TotalCross possui primitivas implementadas em cima do Skia Graphics Engine e SDL, com base em X11, escolhido por ser amplamente compatível com praticamente todos os sistemas. Porém, a TotalCross já está trabalhando para adicionar o suporte também ao Wayland com o intuito de aumentar ainda mais sua performance. Com esse backend gráfico o TotalCross busca garantir máxima compatibilidade sem comprometer performance, sendo capaz de fazer uso de aceleração gráfica quando disponível.

A seguir está demostrado como se utiliza o SDK com uma Raspberri Pi 3. Siga o tutorial:

Iniciando com TotalCross para Raspberry Pi 3

Este tutorial ensina como:

  • Iniciar com TotalCross;
  • Fazer seu primeiro programa;
  • Visualizar sua aplicação;
  • Ir além do básico!

E utilizará as seguintes ferramentas:

  • Java JDK 1.8;
  • Maven 3.6.x;
  • VSCode;
  • Microsoft Java Extension Plugin for VSCode;
  • Raspberry Pi 3;
  • 7x jumpers macho-fêmea;
  • Protoboard;
  • Módulo LED RGB (ou um LED RGB comum);
  • Módulo push-button (ou push-button comum).

Um jeito rápido de começar com TotalCross é instalando a extensão do TotalCross para VSCode. Aqui assume-se que está tudo pronto para utilizar o Java JDK 1.8 e o Maven. Pode-se verificar se está com a versão correta do Java da seguinte forma

Caso não esteja com a desejada, pode-se alterar selecionando um dos itens ou instalando a versão correta. Também pode-se verificar a instalação do Maven:

Com isso, basta abrir o console do VSCode (CTRL + Shift + P) e digitar TotalC… o autocomplete deve ajudar! Deve-se visualizar as seguintes opções:

Selecionar a opção TotalCross: Create New Project. Criar a pasta HelloWorld e selecioná-la. Chamar o GroupId de com.totalcross e o ArtifactId de HelloWorld. Seguir selecionando a versão mais recente do TotalCross SDK e plataforma alvo -linux-arm. Estes passos podem ser visualizados no GIF:

Em seguida, na aba de exploração de arquivos, deve-se clicar com o botão direito no arquivo RunHelloWorldApplication.java e selecionar Run. O resultado deve ser:

Pronto! HelloWorld no simulador integrado já pode ser visualizado!

Seu primeiro programa, com TotalCross e Raspberri Pi 3!

Propõe-se aqui um projeto básico de controle de um LED RGB com TotalCross. Basicamente haverá 3 botões na tela para controlar cada pino do LED e um botão de GPIO para resetar os pinos!

Seguir o seguinte esquemático:

Se desejar usar outros pinos ou verificar qual a numeração de cada um desses utilizados, recomenda-se verificar o pinout do WiringPi. O TotalCross SDK contempla todas as Setup Functions e as Core Functions desta biblioteca. Com isso, pode-se dar seguimento ao código. Dentro de initUI() em HelloWorld.java adicionar uma label embaixo da anterior:

Para começar a trabalhar com os pinos, criar (como atributos) variáveis para os pinos e botões da tela:

Em seguida iniciar o GPIO com a classe Gpio:

Adicionar o primeiro botão na interface:

Fazer a mesma coisa para os outros dois botões:

Por fim, criar uma thread para verificar a cada 20ms o estado do push-button e tomar a ação de desligar o LED caso esteja pressionado:

Novamente, rodar a classe RunHelloWorldApplication.java para obter este resultado no simulador:

O código completo pode ser encontrado aqui.

O deploy da aplicação

O último passo para visualizar sua aplicação no Raspberry Pi é fazer o deploy. Da mesma forma no console:

Esperar o tempo de build… Pronto, uma caixa de diálogo como essa aparecerá e basta preencher com as informações do seu RPI

Na tela ou no VNC ver o resultado!

Indo além do básico

Com este tutorial já é possível iniciar as primeiras aplicações com TotalCross, além de pode também consultar a documentação. A ferramenta vai muito além do foi visto neste tutorial, podendo se ter uma dimensão completa através do TCSample.

Este exemplo de dashboard foi apresentado pela TotalCross no Web Summit 2019 em Portugal.

Sobre a Startup TotalCross, responsável pelo SDK

A Startup Brasileira TotalCross liberou em novembro de 2019 a versão beta do seu SDK para sistemas embarcados. Esta versão Beta suporta, por enquanto, Raspberry Pi e os hardwares da Toradex. Presente no mercado de ferramentas multiplataforma para aplicativos mobile, com clientes em todo Brasil e mais 10 países, a TotalCross está lançando seu SDK inteiramente gratuito para competir com Qt e Electron.

A Startup que nasceu de empreendedores com larga experiência em desenvolvimento de frameworks, tendo criado em 2002 uma das primeiras ferramentas multiplataforma para Palm OS e WinCE, está ampliando seu portfólio e entrando no próspero mercado de Sistemas Embarcados.

Estratégia de mercado

TotalCross está vindo ao mercado com uma proposta de valor muito clara: facilidade de desenvolvimento, por utilizar Java como linguagem de programação; e performance. Seu objetivo é ser o melhor framework de criação de GUI (Graphical User Interface) para sistemas embarcados de baixa capacidade computacional, rodando aplicativos tanto em hardwares com GPU como sem.

A Startup visa suportar os principais hardwares do mercado até final de 2020 através dos investimentos no time de produto e, também, da comunidade de desenvolvedores, que está começando a ser criada, uma vez que o seu SDK tem código aberto no GitHub (https://github.com/TotalCross/TotalCrossSDK).

No seu modelo comercial, a TotalCross está focando em pequenas e médias empresas, disponibilizando gratuitamente a licença do SDK. Sua forma de monetização será através de royalties por dispositivo. Os valores desses royalties ainda não foram divulgados, mas já se sabe que os primeiros usuários terão acesso à um valor promocional de U$0,99 por dispositivo.

Para baixar gratuitamente o SDK TotalCross para Linux ARM, basta acessar à landing page. Neste mesmo link também é disponibilizado o acesso à documentação e à Comunidade TotalCross do Telegram.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Raspberry Pi » Como utilizar o framework TotalCross na Raspberry Pi 3
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Nenhum resultado encontrado.

Séries

Menu

WEBINAR
 
NVIDIA JETSON – A Inteligência Artificial na palma de sua mão

Data: 08/07 às 14:00h Apoio: Arrow | NVIDIA
 
INSCREVA-SE AGORA »



 
close-link

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link