SigFox é uma das LPWANs mais utilizadas no mundo e é um dos nomes em evidência quando se fala de Internet das Coisas. Com boa cobertura no Brasil e no exterior, o SigFox é utilizado em vários segmentos de mercado: agricultura, smart cities, indústrias, logística, gerenciamento de suprimentos, energia e por aí vai. Portanto, ao se projetar uma solução em Internet das Coisas, SigFox é um nome forte para a escolha da LPWAN a ser utilizada.
Como o número de projetos e soluções em Internet das Coisas utilizando Linux Embarcado como sistema operacional vem crescendo nos últimos anos, logo faz sentido ter algo para interagir com a rede SigFox a partir do Linux e um modem SigFox. Este artigo visa mostrar a sigfox_comm, uma ferramenta Linux open-source (de minha autoria) que permite o envio de dados para a rede SigFox a partir do Linux.
Requisito – modem SigFox a ser utilizado
Esta ferramenta foi preparada para o uso do Linux com o modem SigFox WSSFM11R2D, do fabricante Wisol. Este modem possui comunicação serial, a partir de uma UART. É importante ressaltar que este modem trabalha com nível de tensão 3,3V (alimentação e na comunicação serial), não sendo tolerante a 5V.
Codificação e repositório da sigfox_comm
A ferramenta sigfox_comm foi inteiramente feita em linguagem C, visando ser leve (poucos recursos computacionais utilizados) e de execução rápida. Dessa forma, seu uso é viável mesmo em sistemas com hardware muito modesto. Ainda, não há nenhuma dependência, ou seja, somente com o GCC e as bibliotecas padrão é possível compilar a ferramenta.
O código-fonte da ferramenta pode ser obtido no seguinte repositório Github: https://github.com/phfbertoleti/sigfox_comm/
Testes e validações executados
A sigfox_comm foi testada e validada nos seguintes sistemas Linux:
- Notebook comum, utilizando como sistema operacional o Ubuntu 16.04 LTS e utilizando um conversor USB-Serial de 3,3V de nível de tensão de operação.
- Placa Pocket Beaglebone, utilizando como sistema operacional o Debian GNU/Linux 9 (stretch).
- Placa Raspberry Pi Zero W, utilizando como sistema operacional o Raspbian GNU/Linux 10 (buster) e utilizando um conversor USB-Serial de 3,3V de nível de tensão de operação.
- Placa Raspberry Pi 3B, utilizando como sistema operacional o Raspbian GNU/Linux 9 (stretch) e utilizando um conversor USB-Serial de 3,3V de nível de tensão de operação.
Comunicação serial com o modem SigFox WSSFM11R2D
O modem SigFox WSSFM11R2D possui comunicação serial via UART, sendo que a configuração padrão é:
- Baudrate: 9600bps
- Número de bits: 8 bits
- Paridade: nenhuma
- Número de stop-bits: 1 bit
Ou seja, para utilizar SigFox em seu sistema Linux, você precisará do modem SigFox, alimentação 3,3V e de uma UART somente.
Como baixar o código-fonte e compilar
Para baixar o código-fonte e fazer sua compilação, siga o procedimento abaixo:
- No sistema Linux em que deseja utilizar a ferramenta, clone o repositório do projeto com o seguinte comando:
git clone https://github.com/phfbertoleti/sigfox_comm.git - Entre no diretório do código-fonte da ferramenta (sigfox_comm\source_code).
- Compile o código-fonte utilizando o comando make
A compilação não deve demorar mais do que alguns segundos. A ferramenta compilada estará no mesmo diretório do código-fonte, sob o nome sigfox_comm.
Como utilizar a sigfox_comm
A utilização dessa ferramenta é feita via linha de comando (não há GUI para ela). Como a ferramenta faz uso de uma UART, se seu usuáreio Linux não estiver no grupo dialout, será preciso executá-la como super usuário (sudo).
Sua chamada é feita da seguinte forma:
sudo ./sigfox_comm PATH_UART DATA_ARRAY
Onde:
- Primeiro argumento (PATH_UART): caminho do arquivo referente a UART que o modem SigFox está ligado (por exemplo: /dev/ttyO4)
- Segundo argumento (DATA_ARRAY): dados a serem enviados a rede SigFox. Estes dados devem estar na forma de uma Hex-String. Como a rede SigFox limita o tamanho máximo dos bytes a serem enviados em 12 bytes, este argumento (Hex-String) deve ter, no máximo, 24 caracteres ( = 24 bytes) . Caso uma Hex-String maior que 24 caracteres seja passada neste segundo argumento, a ferramenta considerará apenas os primeiros 24 caracteres e ignorará o restante.
Portanto, um exemplo de chamada seria:
sudo ./sigfox_comm /dev/ttyO4 010203040506070809101112
O que gera um output conforme mostrado na figura 1.
Feito isso, seus dados serão enviados à rede SigFox e já estarão disponíveis no backend SigFox para consulta e uso.
Exemplos de utilização
O repositório da ferramenta possui alguns exemplos de utilização (feitos para placas específicas) em: https://github.com/phfbertoleti/sigfox_comm/tree/master/examples
Os exemplos são em Shell Script, facilitando portanto o uso destes, de modo que com exceção da própria ferramente, não é necessária nenhuma outra compilação. É importante ressaltar que, para funcionarem, os Shell Scripts dos exemplos devem estar na mesma pasta onde se encontra a ferramenta compilada.









