Bosch XDK e IBM Cloud, construindo uma solução IoT de ponta a ponta

Felipe Neves
Venturus
Published in
12 min readFeb 26, 2018

Bosch XDK é uma ferramenta completa de sensores que permite o desenvolvimento rápido de protótipos e aplicações IoT. IBM Cloud é a plataforma de Internet das coisas bastante acessível da Big Blue.

Picture: Bosch

Olá pessoal, eis que estou estreando minha escrita de artigos no Medium, espero trazer a vocês um pouco de ferramentas e conceitos do mundo de sistemas embarcados e Internet das Coisas, hoje vou mostrar a vocês como desenvolver um template de solução ioT envolvendo hardware como o Bosch XDK Sensor e o serviço de IoT presente do IBM Cloud. Eu fui presenteado no meu aniversário pela minha esposa, pelo pequeno e também poderoso Bosch XDK Sensor, uma ferramenta de desenvolvimento fabricada pela Bosch que contém uma gama muito interessante de sensores. Não satisfeito em apenas explorar as capacidades de sensoriamento e brincar com processamentos de sinais, resolvi explorar o lado Internet dos Bagulho e conectar o pequeno dispositivo a uma plataforma. A escolhida: o IBM Bluemix Iot Platform. Nesse artigo vocês vão ver o resultado disso, além disso os deixarei aptos a fazer o mesmo, bastando ter o pequeno dispositivo da Bosch.

Primeiramente, o Bosch XDK Sensor

Entrar em detalhes do dispositivo, foge ao escopo desse pequeno tutorial, por outro lado devemos conhecer um pouco dessa ferramenta que me chamou a atenção e fez a belíssima Bianca me comprar uma como mimo. O XDK é uma ferramenta descrita pela Bosch como uma experiência completa de sensores. Em um mesmo housing o pessoal da Bosch colocou uma gama de sensores muito legais como:

  • Acelerômetro de 3 eixos;
  • Giroscópio e Magnetômetro;
  • Sensor de umidade;
  • Sensor de pressão;
  • Sensor de temperatura;
  • Sensor acústico;
  • Sensor de luz ambiente.

Os sensores inerciais são baseados nos circuitos integrados BMIxxx Bosch sensortec, o acústico é parte da família AKU e como diferencial tem uma resposta plana para ruído ambiente na faixa de 10Hz a 10KHz. Os demais sensores combinados podem formar uma gama de aplicações interessantes, como o leitor de impressão digital (que talvez sirva para um próximo artigo).

Mas você meu leitor deve estar se perguntando, o que esse dispositivo tem de tão especial que valha uma avaliação? Pois bem, não contente o pessoal que desenhou o XDK adicionou features para transformá-lo em uma máquina de processar sinais do ambiente, e o dotou de:

  • Rádio WiFi e Bluetooth Low energy;
  • Entrada para cartão SD;
  • Circuito de bateria (bem como carregador);
  • Microcontrolador de 32bits ARM Cortex-M3.

A receita para o sucesso se completa, ao colocar tudo isso em um pequeno housing com com o devido trabalho mecânico para que o dispositivo possa ser facilmente instalado em uma máquina ou no ambiente que deseja-se sentir. Abaixo temos uma foto do pequeno e notável sensor:

Com o XDK a mão o usuário pode ir na Comunidade Bosch XDK efetuar o download do XDK Workbench, um ambiente de desenvolvimento baseado em Eclipse fornecido pela Bosch, que vem recheado com um conjunto de componentes para desenvolvimentos de aplicações em sensores e conectividade, por WiFi ou BLE, o usuário escolhe. Nesse texto, utilizaremos o WiFi para enviar um stream de dados e autenticar nosso XDK ao serviço Bluemix da IBM, e por falar nele…

IBM Cloud Watson Iot Platform

Apesar do nome grande, e um pouco intimidador, o serviço de Internet das coisas oferecidos pelo serviço Cloud da IBM não assusta nem um pouco, no máximo durante algumas horas o usuário vai se perder na vasta documentação até encontrar o que deseja. Eu, que conheci a IBM como fabricante de mainframes e desktops para supermercados, fiquei surpreendido com o serviço. Basicamente o Watson IoT Platform é um serviço do IBM Bluemix que permite você, sim você mero mortal como eu, a conectar e gerenciar seus dispositivos via nuvem, ou seja, aquele sensor (no caso o XDK) captura aquela informação em tempo real, envia por algum protocolo conhecido (REST, ou MQTT) para a plataforma IoT, do outro lado, o desenvolvedor pode criar uma aplicação de análise, deep learning ou mesmo uma reação simples usando o conjunto extenso dos outros serviços do IBM Cloud, conectar um ao outro, empacotar e provavelmente teremos uma solução que pode resolver algum problema do dia a dia. Parece fantasioso, mas é exatamente o que se pretende utilizando o serviço. No nosso tutorial vamos criar apenas um lado, o lado que o desenvolvedor que não tem aquela intimidade com o hardware pode ter várias dúvidas, o dispositivo. Mas antes vamos dar uma olhada na figurinha que a IBM mostra como um exemplo de fluxo de informação de uma solução genérica empregando IoT:

Simples não? Um dispositivo que observa o ambiente, envia por MQTT os dados. O Watson IoT Platform entra como um Hub de dispositivos, do outro lado, com as API fornecidas pelo Bluemix aplicações podem se conectar aos dispositivos e processar seus dados, entregando ao servição de nuvem capaz de fazer análise e apresentação da informação obtida.

Gostei! Tenho o XDK, como conecto ao IBM Cloud?

E agora entraremos na seção mais divertida, o tutorial propriamente dito, mas antes precisamos obter outros dois grandes componentes:

  • Bosch XDK Workbench;
  • Conta IBM Cloud (A versão gratuita é mais que suficiente para testar).

Para fazer o download do XDK, basta clicar nesse link, fazer o cadastro na comunidade XDK da Bosch e efetuar o download, lembrando que até o presente momento, apenas existe a versão disponível para Windows. Recentemente perguntei na comunidade sobre outros sistemas operacionais e a resposta foi boa, eles tem planos para liberar para Linux e Mac mas pediram para aguardar pois não existe uma data ainda. Voltando ao XDK Workbench uma vez baixado, instale como um programa tradicional do Windows.

A conta IBM pode parecer burocrática mas também não assusta, basicamente, vá para esse link e para criar sua conta clique no botão Sign up como mostrado abaixo:

Siga os passos para criação de sua conta, sobre informações de pagamentos, minha sugestão é que preencha mesmo se não for utilizar, pois com isso você cancela a limitação por tempo de uso dos serviços (mesmo os gratuitos) e nenhum centavo vai te ser cobrado se você utilizar apenas a cota gratuita reservada para cada serviço, atente-se sempre a esses limites (Lembrando que eu e o Embarcados não nos responsabilizamos por erros ou uso indevido do serviço que possa acabar gerando cobrança, portanto, atenção nisso caro leitor). Criada a conta, já temos tudo o que é necessário para criação de um dispositivo IoT na plataforma Bluemix.

Preparando o Watson IoT Platform

Vamos começar pelo lado do IBM Cloud, primeiro faça seu login, com o email e senha usados para criar a conta, você deverá ver algo assim:

Antes de criar um dispositivo IoT, precisamos instanciar um serviço do Watson Iot Platform, para isso, vá ao canto superior esquerdo e selecione dentre as opções Services e em seguida, Internet of Things:

Você irá para a apresentação do serviço de IoT, no canto inferior esquerdo, selecione Get started, vejam a figura:

Ao clicar, você será direcionado para a tela de criação do serviço, atribua um nome para ele em seguida, no canto inferior direito, clique no botão, Create:

Após criar o serviço, volte ao painel inicial e role para baixo, ali deve estar a instância criada por você, de um clique nela:

Ao clicar no serviço você deve se deparar com algo do tipo:

Está tudo pronto para criarmos nosso dispositivo conectado. Para avançarmos agora vá para o canto superior esquerdo, e clique no ícone de dispositivo, a aba dispositivos vai aparecer, clique nela, e você será direcionado para a área de dispositivos criados, o ali existente é o meu XDK criado previamente, você caro leitor vai criar um igual:

Agora clique em incluir dispositivo no canto superior direito, vamos inicar o processo de registro do dispositivo:

Selecione Criar tipo de dispositivo:

Nessa tela clique novamente em Criar tipo dispositivo ,e veja a seguir:

Adicione um nome, bem como uma descrição, e no canto inferior direito, clique em avançar, os próximos campos são opcionais, e para esse exemplo não serão necessários, portanto avance, até se deparar com essa tela:

No canto superior direto, proceda em Avançar, agora configuraremos o dispositivo e geraremos suas credenciais para que o XDK possa se registrar no IoT Platform, você deve ver em seguida algo assim:

Em seguida clique em avançar, lembrando que o nome dado ao ID do dispositivo será o mesmo a ser adicionado como ID no firmware do XDK, portanto guarde bem esse valor, clique novamente em avançar passando pelo campo de metadados, que não será utilizado, em seguida avançar novamente, até ver essa tela:

Atenção a essa tela, aqui será gerado um token para que o XDK consiga se autenticar no IoT Platform, para fins de simplificação, não forneça nenhum token e clique em avançar, ao final do processo este será gerado automaticamente, por último clique em incluir, se o processo terminar com sucesso, você deverá ver o seguinte:

Guardem bem o campo marcado, eles contém informações que serão passados ao firmware MQTT utilizado no Bosch XDK. Após esse passo, o dispositivo pode ser considerado configurado, e estará aguardando a conexão de alguém possua as credenciais compatíveis com ele. Guardem em especial o ID de organização, ele é a base para criar a URL de acesso no MQTT também.

Obtendo e preparando o firmware do Bosch XDK

Agora que já temos o serviço de IoT configurado, vamos partir para o preparo do firmware, para facilitar acessem o Repositório com o firmware para o XDK para obter uma cópia da versão a pleno funcionamento do XDK com as minhas modificações, salve em algum lugar de fácil acesso (se obtiver o .zip não esqueça de extrair os arquivos), abra o ambiente Workbench, você deverá ver isso aqui:

Para ver o ícone do XDK no canto superior esquerdo, ligue o dispositivo, e o conecte a porta USB do seu computador. Para quem ja está acostumado com Eclipse, o XDK Workbench vai soar como uma agradável surpresa, agora vamos adicionar o projeto obtido, para isso, no canso superior esquerdo, clique em File->Import, o resultado deverá ser esse aqui:

Selecione a aba, General e em seguida Existing Project into Workspace , com isso passe o diretório onde o projeto está salvo ( não passe o conteúdo da pasta!), vejam abaixo:

Selecione o projeto desejado, e clique em Finish, após a importação ele deve aparecer assim no seu workspace:

Agora que o firmware está no workspace, deixe-me explicar como você, usuário, deverá modificar ele, primeiramente pressione CTRL+SHIFT+R, uma caixa de texto vai abrir, procure pelo arquivo mqttConfig.h, vamos para a seção mais importante:

Modifique os campos WLAN_SSID e WLAN_PWD para sua rede WiFi, o campo MQTT_CLIENT_ID precisa de um formato específico que pode ser esclarecido na documentação do Bluemix mas no geral deve ser: d:org_id:device_type:device_id. Resumindo, agora precisaremos das credencias do dispositivo criado na conta Bluemix, volte lá e abra o dispositivo, substitua org_id pelo ID de organização, os demais campos referem — se ao tipo de dispositivo e o ID de dispositivo que também estão nas credenciais.

Para o campo MQTT_BROKER_NAME também existe uma URL padrão dada por: org_id.messaging.internetofthings.ibmcloud.com como substitua org_id pelo ID de organização presente nas credenciais do seu dispositivo. Com isso ficou faltando apenas adicionar o token de autenticação no campo IBM_BLUEMIX_DEVICE_TOKEN , copie e cole o valor que está na credencial do seu dispositivo, o campo IBM_BLUEMIX_USERNAME não precisa ser alterado.

Lembrando que esse firmware já contém as modificações necessárias no pacote de conexão do MQTT para uma versão acrescida de autenticação, então nenhuma modificação se faz necessária. Ao terminar, agora vamos compilar o firmware, para isso pressione CTRL+B, e aguarde, o SDK da Bosch possui muitas features (que falaremos em outros posts) então esse processo pode demorar um pouco.

Com o dispositivo conectado e após a compilação vamos fazer o download do firmware para o XDK, para isso, clique no botão flash no canto superior direito, e observe a aba console:

Uma vez feito o download o XDK inicializará imediatamente, e vai se conectar ao WiFi que foi configurado, em seguida invocará a thread que cuida do protocolo MQTT e tentará se conectar ao Bluemix, observe que o led laranja vai acender em caso de uma conexão realizada com sucesso.

Resultados

Agora que o dispositivo deve estar conectado, volte ao dispositivo criado ao Bluemix, aguarde alguns segundos, e veja que que existe agora um ícone com um indicador de sinal, se esse ícone aparecer significa que o XDK estabeleceu uma conexão válida, observem:

Clique no dispositivo, e role até o log de conexão:

Você deve estar se perguntando: “Ok, mas e os dados?” Como todo bom protocolo MQTT o XDK efetua leitura dos dados do acelerômetro, e os formata como JSON, porém a aquisição só é iniciada ao pressionar o botão Left do XDK, use a imagem abaixo como referência:

Com isso, a aquisição será feita e enviada ao Bluemix a cada 2 segundos, ao fazer isso, volte ao Bluemix, abra seu dispositivo e observe a seção de eventos, você vai ver que a cada 2 segundos um pacote de dados em formato JSON vai chegar e ser atualizado em tempo real:

Whow! Sim os dados agora estão chegando. Ainda não está satisfeito? Vamos olhar o conteúdo do pacote JSON, basta clicar em um dos eventos que ele vai expandir e mostrar seu conteúdo:

Pronto! Seu dispositivo está configurado, registrado, autenticado e enviando dados em um tipo de arquivo padrão, agora você usuário do Bluemix pode começar a escrever aplicações ou utilizar ferramentas de análise para estudar os dados enviados pelo dispositivo XDK, lembrando que basta modificar algumas linhas em mqttSensor.c e .h para que outros sensores possam ser enviados no mesmo JSON e apresentados como o demonstrado acima.

Conclusão

O objetivo desse artigo era o de mostrar um pouco do processo envolvido para colocar aquele hardware desenvolvido com todo carinho para falar com a nuvem de qualquer lugar do mundo, esse processo gera dúvidas dos dois lados, de quem faz uma aplicação que se alimenta desses dados, e de quem desenvolve dispositivos para prover os dados, o Bosch XDK em conjunto com a ferramenta IBM Cloud Watson IoT Platform levam vantagens por serem maduras e validadas, acelerando no desenvolvimento daquela super idéia envolvendo IoT, aqui nesse texto ilustramos o passo — a — passo para conectar o XDK como dispositivo de aquisição ao serviço de IoT da IBM deixando-o apto para ser acessado pela aplicação ou ferramenta de apresentação dos dados. Espero que esse tutorial seja de grande valia, compartilhem suas experiências ou dúvidas nos comentários!

--

--

Felipe Neves
Venturus

Passionate Embedded Systems Developer, open source embedded systems tools contributor and user. Lead Firmware Engineer at Venturus