Solução de controlo remoto com base no microcontrolador
nRF51822
Nuno R. G. Costa - 14754
Trabalho realizado sob a orientação de
Professor Paulo Matos
Professor José Lima
Engenharia Informática
2014/2015
Solução de controlo remoto com base no microcontrolador
nRF51822
Relatório da UC de Projeto
Licenciatura em Engenharia Informática
Escola Superior de Tecnologia e Gestão
Nuno Costa
2014/2015
iii
A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas
neste relatório.
iv
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projeto.
___________________________________________
Paulo Matos - Coorientador
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projeto.
___________________________________________
José Lima - Coorientador
Aceite para avaliação da UC de Projeto
v
vi
Dedicatória
Dedico este projeto aos meus pais, à minha namorada, e a toda a minha família e amigos.
Como não tenho grande jeito para a escrita, vou ser parco em palavras, e espero que todos se
sintam lisonjeados por este pequeno gesto da minha parte, um bem-haja a todos vós.
Sejam felizes!
vii
viii
Agradecimento
Em primeiro lugar quero agradecer aos meus pais, pois sem eles nada disto seria possível,
também agradeço ao professor Paulo Matos pela ajuda que me prestou durante o projeto. E
agradeço a todas as pessoas que me ajudaram de algum modo.
A todos o meu mui e sincero Obrigado!
ix
x
Resumo
O nRF51822 é um microcontrolador SoC que permite comunicação sem fios através do
protocolo Bluetooth Low Energy (BLE) ou de outros que operem na banda dos 2.4GHz. É
utilizado em muitos dos dispositivos que têm surgido nos últimos meses que visam interagir
com aplicações (software) para dispositivos móveis (smartphones, tablets e afins), como é o
caso dos beacons, dos monitores de fitness, dos smart watches, ou até dos werables.
Neste projeto é utilizado o microcontrolador nRF51822 para desenvolver um controlador de
rega monitorizável e programável remotamente. O projeto é assim composto pelo atuador,
que ficará junto às válvulas de rega, e pela unidade de controlo e monitorização que
normalmente ficará dentro da habitação. A comunicação entre ambos será efetuada por
wireless e o acesso à unidade de controlo será feito via BLE através de um smartphone
Android.
Palavras-chave: Comunicação sem fios, Bluetooth Low Energy, microcontrolador
nRF51822.
xi
xii
Abstract
The nRF51822 is a SoC microcontroller that enables wireless communication throw
Bluetooth Low Energy Protocol (BLE) or other, operating in the band of 2.4GHz. It is used in
many devices that have emerged in recent months aimed to interact with applications
(software) for mobile devices (smartphones, tablet and others), as is the case of beacons, the
fitness monitors, smart watches, or wearables.
In this project the nRF51822 microcontroller is used to develop an irrigation controller that
can be remotely, supervised and programmable. The project is composed of the actuator,
which will be near the irrigation valves, and the control and monitoring unit which normally
will be in the house. The communication between the two will be performed by wireless and
the access to the control unit is done via BLE using an Android smartphone.
Key Words: Wireless communication, Bluetooth Low Energy, nRF51822 microcontroller
xiii
xiv
Conteúdo
1
Introdução .......................................................................................................................... 1
1.1
Motivação ..................................................................................................................... 1
1.2
Objetivos ....................................................................................................................... 2
1.3
Estrutura do Relatório do Projeto ................................................................................. 2
2
Descrição do problema ...................................................................................................... 3
3
Proposta de Solução........................................................................................................... 4
4
3.1
Descrição da Solução .................................................................................................... 4
3.2
Arquitetura da Solução ................................................................................................. 4
Ferramentas ....................................................................................................................... 7
4.1 Ambiente de desenvolvimento ...................................................................................... 7
4.1.1 IDE Keil ................................................................................................................. 7
4.1.2 EAGLE CAD ......................................................................................................... 8
4.1.3 Android Studio ....................................................................................................... 8
4.2 Descrição do Hardware Principal ................................................................................. 9
4.2.1 Microcontrolador nRF51822 .................................................................................. 9
4.2.2 Programador ULINK2.......................................................................................... 12
4.2.3 Electroválvulas ..................................................................................................... 12
4.3 Comunicações Usadas ................................................................................................ 13
4.3.1 A Tecnologia Low Energy por trás do Bluetooth Smart ...................................... 13
4.3.2 Descrição da pilha Bluetooth Smart ..................................................................... 16
4.3.3 Nordic Gazell ....................................................................................................... 17
5
Implementação ................................................................................................................. 20
5.1
Aprender o funcionamento da placa ........................................................................... 20
5.2
Aplicação Android ...................................................................................................... 23
6
Testes................................................................................................................................. 25
7
Discussão........................................................................................................................... 27
8
Conclusões ........................................................................................................................ 28
A Proposta de Projeto ......................................................................................................... 31
xv
Lista de Figuras
Figura 1 Esquema de funcionamento do projeto ..................................................................................................... 6
Figura 2 IDE Keil .................................................................................................................................................... 7
Figura 3 EAGLE CAD ............................................................................................................................................ 8
Figura 4 Android Studio ......................................................................................................................................... 9
Figura 5 Microcontrolador nRF51822 (imagem retirada [TEST REPORT 2014])............................................... 10
Figura 6 Aplicação SoC com SoftDevice (imagem retirada de [IMAGEM S110]) .............................................. 11
Figura 7 Arquitetura da pilha do SoftDevice (imagem retirada de [IMAGEM S110]) ......................................... 11
Figura 8 Adaptador ULINK2 ................................................................................................................................ 12
Figura 9 Electroválvulas em metal ........................................................................................................................ 13
Figura 10 Electroválvulas em plástico .................................................................................................................. 13
Figura 11 Pilhas Protocolares Bluetooth (imagem retirada [BLE 2015]) ............................................................. 16
Figura 12 Ligações entre placa e o cabo JTAG ..................................................................................................... 20
Figura 13 Nome de cada pino ............................................................................................................................... 21
Figura 14 Placa com o nRF51822 ......................................................................................................................... 21
Figura 15 Fonte de alimentação ............................................................................................................................ 21
Figura 16 Sistema pronto para testes..................................................................................................................... 22
Figura 17 Aspeto da Aplicação ............................................................................................................................. 24
Figura 18 Testes com Arduino .............................................................................................................................. 25
Figura 19 IDE Arduino ......................................................................................................................................... 26
Figura 20 Browser no pc ....................................................................................................................................... 26
Figura 21 Browser no Android ............................................................................................................................. 26
xvi
xvii
Lista de Abreviações
ARM ---------- Advanced RISC Machine
CPU ----------- Central Processing Unit
DC-DC -------- Direct corrent to Direct Correct
ESB ----------- Enhanced ShockBurst
GPIO ---------- General Purpose Input/Output
Ground -------- Negative supply voltage
IDE ------------ Integrated Development Environment
LCD ----------- Liquid Crystal Display
PBC ----------- Printed Circuit Board
PPI ------------- Programmable Peripheral Interconnect
PWM ---------- Pulse-width modulation
RAM ---------- Random-access memory
SO ------------- Sistema Operativo
SoC ------------ System On Chip
Vcc ------------ Positive supply voltage
WiFi ----------- Rede sem fios
xviii
xix
Capítulo 1
1 Introdução
1.1 Motivação
Hoje em dia existem vários sistemas de controlo de rega, tanto analógicos como digitais. A
possibilidade de controlar o sistema de rega remotamente também já existe no mercado, e há
vários exemplos onde as placas de controlo de rega estão ligadas por Bluetooth, WiFi ou
Ethernet. No caso da ligação WiFi ou Ethernet é possível o controlo a partir de qualquer parte
do mundo, desde que tenha acesso à internet. Alguns destes dispositivos até estão ligados a
páginas de previsão meteorológica, e o próprio dispositivo a partir de um algoritmo, analisa os
dados da página e conforme o estado do tempo nesse dia, aciona ou não o sistema de rega,
sem necessidade de qualquer programação prévia de horários. Outros utilizam sensores de
humidade, luminosidade, temperatura, entre outros, verificando assim as condições
meteorológicas em tempo real, o que lhes permite, também, baseados num algoritmo, ativar a
rega ou não de forma autónoma.
A motivação para a escolha deste projeto foi o interesse por aprender novas tecnologias que
não são abordadas em nenhuma das outras Unidades Curriculares, nomeadamente
programação de microcontroladores e criação de aplicações para SO Android.
O âmbito em que se insere o projeto também contribuiu para a escolha, pois o controlo dos
gastos de água em vários tipos de rega é bastante importante para que as reservas de água do
planeta não sejam gastas de forma leviana, contribuindo assim para manter e melhorar o meio
ambiente. Este controlo também beneficia as produções agrícolas, pois vai fornecer apenas as
quantidades indispensáveis para o cultivo das diversas espécies de produtos hortícolas, plantas
e outros.
Outro especto foi a polivalência deste projeto, pois com umas pequenas alterações pode ser
adaptado para controlar outros mecanismos, como um dispensador de comida para animais,
juntando um sensor de luminosidade controlar o motor das persianas de uma habitação e
também as luzes, entre outros, basta alguma imaginação.
1
1.2 Objetivos
Um dos objetivos é explorar as capacidades do microcontrolador nRF51822, tanto a sua
capacidade de exatidão na execução de código como as comunicações sem fios que este
disponibiliza, e ainda o seu baixo consumo energético.
Com a criação de uma aplicação, que neste caso foi para SO Android, os horários de rega
serão facilmente configuráveis, uma vez que não será necessário nenhum tipo de ligação
física para enviar os horários para as placas com o nRF51822.
1.3 Estrutura do Relatório do Projeto
O relatório está dividido em 8 capítulos, no primeiro capítulo é tratada a motivação que houve
para a escolha e realização do projeto, os objetivos que se pretendem atingir e a estrutura do
relatório.
No segundo capítulo é explicado o problema e o que envolve.
Terceiro capítulo expõem a solução que se pretende e a arquitetura da mesma.
O quarto capítulo tem uma breve descrição das ferramentas usadas, tanto de hardware como
de software, algumas serão usadas para implementação e outras fazem parte da solução final,
há também uma abordagem ao tipo de comunicações usadas no projeto.
Quinto capítulo mostra partes da implementação, como o funcionamento das placas com o
microcontrolador nRF51822 e explica como a aplicação Android está idealizada.
No sexto capítulo aborda os testes feitos com o sistema inicial e solução pretendida. Mas
também trata outra solução para a comunicação remota feita com base em Arduino e através
do uso da Ethernet.
Sétimo capítulo menciona o que ficou feito e o que era desejado.
No oitavo e último capítulo tem as conclusões em relação ao projeto e o que poderá ser feito
futuramente.
2
Capítulo 2
2 Descrição do problema
O problema principal é a comunicação de todo o sistema usando dois tipos de comunicação
sem fios. Um dos tipos de comunicação é o Bluetooth Low Energy (BLE) também designado
por Bluetooth Smart, o outro é por frequência rádio, usando a pilha do protocolo Gazell,
propriedade da Nordic Semiconductor (página oficial [NORDIC]), que também opera na
frequência 2,4GHz.
Também é necessário o estudo dos componentes de hardware envolvidos, como as placas que
têm o microcontrolador nRF51822, o programador ULINK2, e outros componentes elétricos e
eletrónicos.
Outro desafio, é a criação de uma aplicação para SO Android, usando para isso a API 18, pois
foi a partir dessa API que passou a haver bibliotecas especificas para BLE.
3
Capítulo 3
3 Proposta de Solução
3.1 Descrição da Solução
Este projeto tem como finalidade criar uma aplicação que vai interagir com o
microcontrolador nRF51822 da Nordic Semiconductor (documentos variados sobre os
produtos da Nordic Semiconductor [NORDIC INFO]) que foi integrado numa placa
desenvolvida na Escola Superior de Tecnologia e de Gestão. Assim sendo, no projeto serão
usadas duas placas deste tipo, uma fica junto das electroválvulas para as ativar e desativar
conforme os horários estipulados, estes horários são enviados da placa que fica dentro da
habitação para a placa que está junto das electroválvulas. A placa que fica dentro da habitação
funcionará como intermediária entre o smartphone e a placa que está no exterior da habitação,
recebe os dados dos horários através de uma aplicação que está instalada no dispositivo com
SO Android.
3.2 Arquitetura da Solução
A aplicação criada para controlar a rega vai comunicar remotamente por Bluetooth Low
Energy (BLE) com a placa que estará dentro da habitação, assim sendo o dispositivo com SO
Android terá de estar num raio inferior a 10m sem obstáculo ou bastante mais próximo caso
haja obstáculo entre o dispositivo e a placa que se encontra dentro da habitação, por forma a
conseguir sinal suficiente para poder transmitir os dados. A aplicação vai permitir saber os
horários que estão em execução, fazer um reset dos horários, e adicionar novos horários.
A placa dentro da habitação estará ligada a uma pequena bateria, que será de 3v, esta placa
recebe os dados tanto do dispositivo com SO Android via BLE (exemplos disponíveis em
[ANDROID BLE 2015]), como da placa no exterior da habitação via wifi, através de um dos
possíveis protocolos de rede sem fios, Gazell, ESB ou Ant.
4
A placa que ficará no exterior da habitação vai receber e enviar dados para a placa no interior
da habitação através de um dos protocolos anteriormente referidos, esta também será
alimentada por uma bateria que neste caso, e devido às electroválvulas, terá uma tensão
superior, na ordem dos 9V a 12V, e devido a isso é necessário o uso dos relés. A placa vai
servir como atuador das electroválvulas, enviando impulsos elétricos, quer para ativar as
electroválvulas, quer para as desativar.
As electroválvulas uma vez ativas vão permitir a passagem da água através da tubagem até ao
local que vai ser regado. Quando recebem o impulso elétrico para desativar, a passagem de
água é interrompida até à próxima ativação.
5
Figura 1 Esquema de funcionamento do projeto
6
Capítulo 4
4 Ferramentas
4.1 Ambiente de desenvolvimento
4.1.1 IDE Keil
O Keil é o Integrated Development Environment (IDE) escolhido como ambiente de
desenvolvimento para o microcontrolador nRF51822, a programação é em linguagem C, e é
transferida para o nRF51822 através do adaptador ULINK2, havendo a possibilidade de usar
mais adaptadores. Outras opções que podiam ser usadas para a criação e compilação de
código eram o GCC, ARM mbed, ou IAR Embedded Workbench. Todos eles sugeridos pela
Nordic Semiconductor como plataformas de desenvolvimento de código para o
microcontrolador nRF51822.
Figura 2 IDE Keil
7
4.1.2 EAGLE CAD
É um software para desenho de PCB's. Para além de permitir o desenho e a conceção de
PCB’s este software permite visualizar todas as ligações do PCB que contém o
microcontrolador nRF51822.
Figura 3 EAGLE CAD
4.1.3 Android Studio
É um IDE para desenvolver todo o tipo de aplicações para plataformas equipadas com o
sistema operativo Android, está apetrechado com tudo que é necessário à criação e teste de
aplicações Android. Outra opção é o Eclipse, que permite desenvolver aplicações e programas
em várias linguagens, entre elas java que é usada nas aplicações Android. O Eclipse também
dispõe de um ambiente de desenvolvimento específico para Android, bem como os
emuladores que permitem virtualizar dispositivos móveis para testar as aplicações.
8
Figura 4 Android Studio
4.2 Descrição do Hardware Principal
4.2.1 Microcontrolador nRF51822
Este microcontrolador foi desenvolvido pela Nordic Semiconductor, que é uma companhia
sediada na Noruega, mais concretamente em Trondheim, e tem filiais espalhadas pelo mundo.
A empresa foi criada em 1983 pela Universidade Técnica de Trondheim, e é no momento,
líder no mercado dos chips wireless. Estes chips consomem uma quantidade muito pequena
de energia, e podem ser alimentados por uma bateria tão pequena como a pilha de um relógio.
9
Figura 5 Microcontrolador nRF51822 (imagem retirada [TEST REPORT 2014])
O nRF51822 é um poderoso, System on a Chip (SoC) multiprotocolo, altamente flexível ideal
para Bluetooth® Smart (anteriormente chamado Bluetooth Low Energy) e para aplicações
sem fio Ultra Low Power de 2,4 GHz. O nRF51822 é construído em torno de um CPU ARM
Cortex M0™ de 32 bits com 256kB ou 128kB de memória Flash e 32kB ou 16kB de memória
RAM. O transceptor 2.4GHz integrado suporta tanto Bluetooth® Smart como a stack de
protocolos Nordic Gazell e ESB de 2,4 GHz. Este último, compatível com os produtos da
série nRF24L de Nordic Semiconductor.
O nRF51822 incorpora vários periféricos analógicos e digitais que podem interagir sem
intervenção da CPU através do sistema Programmable Peripheral Interconnect (PPI). Um
esquema de mapeamento de 31 pinos GPIO flexível permite ter entradas e saídas como
interfaces de serie, Pulse Width Modulation (PWM) e demodulador de quadratura para ser
mapeado para qualquer pino de dispositivo, em função das necessidades do Printed Circuit
Board (PCB). Isso permite total flexibilidade do projeto associado à localização e à função
pin-out.
O nRF51822 suporta stacks do protocolo Bluetooth® Smart, bem como stacks de protocolo
de 2.4GHz, incluindo o Gazell, ESB e Ant. O nRF51822 requer uma única fonte de
alimentação e dá ao utilizador a opção de usar um Chip regulador linear interno, dando um
intervalo de fornecimento de 1.8-3.6V, e um modo direto de 1.8V e um conversor buck on
chip Direct corrent to Direct Correct (DC-DC) dando um intervalo de 2,1-3,6v de
abastecimento. O uso do conversor DC-DC pode ser controlado de forma dinâmica durante o
tempo de execução, e permite ao nRF51822 operar em correntes de pico de rádio abaixo dos
10 mA @ 3V de fornecimento (TX @ 0 dBm e RX).
10
As Stacks de protocolo da Nordic Semiconductor são conhecidas como SoftDevices.
SoftDevices são pré-compilados, os arquivos binários pré-ligados. SoftDevices podem ser
utilizados nos chips da série nRF51. (especificações do nRF51822 traduzidas de [Nordic
2015])
Figura 6 Aplicação SoC com SoftDevice (imagem retirada de [IMAGEM S110])
Figura 7 Arquitetura da pilha do SoftDevice (imagem retirada de [IMAGEM S110])
11
4.2.2 Programador ULINK2
O adaptador Keil ULINK2 USB-JTAG permite ligar a porta USB do PC diretamente ao
Hardware que se pretende programar, via JTAG, OCDS ou cabo de série, e permite as
seguintes funcionalidades:

Fazer download de aplicações e testa-las no Hardware.

Programar a memória flash de vários chips.

Programar a memória flash externa de vários sistemas.

Depurar programas executados no próprio chip.
(ponto 4.2.2. traduzido de [ULINK2])
Figura 8 Adaptador ULINK2
4.2.3 Electroválvulas
É uma válvula controlada por uma corrente elétrica e concebida para controlar o fluxo de um
fluido que passa através de um canal. As válvulas vão ser ativadas e desativadas por um
impulso elétrico enviado pela placa que fica junto às mesmas, o impulso passa por um relé
devido à diferença de tensão que existe entre a placa e as electroválvulas.
12
Figura 9 Electroválvulas em metal
Figura 10 Electroválvulas em plástico
4.3 Comunicações Usadas
4.3.1 A Tecnologia Low Energy por trás do Bluetooth Smart
Graças ao seu design inovador, a tecnologia Bluetooth® Smart consome apenas uma fração
da energia que Bluetooth consomem. Bluetooth Smart estende o uso da tecnologia sem fios
para dispositivos Bluetooth que são alimentados por baterias, de célula tipo moeda, como
relógios e brinquedos. Outros dispositivos, como desporto e fitness, cuidados de saúde,
teclados e ratos, beacons, wearables e dispositivos de entretenimento são melhorados por esta
versão da tecnologia. E em muitos casos, torna-se possível utilizar estes dispositivos para
mais de um ano sem recarga.
De acordo com as especificações das versões anteriores, o alcance de rádio pode ser
otimizado de acordo com a aplicação. A maioria dos dispositivos Bluetooth no mercado hoje
em dia incluem o alcance do rádio Bluetooth de 30 pés básico, ou 10 metros, mas não há
limite imposto pela especificação. Com Bluetooth Smart, os fabricantes podem optar por
otimizar o alcance para 200 pés ou mais, particularmente para aplicações em casa com
sensores, onde um alcance maior é uma necessidade.
Bluetooth Smart oferece os seguintes recursos:
- Modos de consumo de energia, ultra baixo, médio ou inativo.
- Capacidade de funcionar durante anos com baterias de célula tipo moeda
- Menores custos de implementação
13
- Interoperabilidade entre vários fornecedores
- Alcance aumentado
Este melhoramento à especificação do Núcleo Bluetooth, permite dois tipos de
implementação, de dual-mode e de modo único. Numa implementação dual-mode, a
funcionalidade Bluetooth Low Energy está integrada num controlador Bluetooth clássico
existente. A arquitetura resultante partilha muito da tecnologia rádio do Bluetooth clássico
existente, e da funcionalidade, resultando num aumento mínimo do custo em comparação com
a tecnologia Bluetooth clássico. Além disso, os fabricantes podem usar a tecnologia atual
Bluetooth clássico (Bluetooth v2.1 + EDR ou Bluetooth v3.0 + HS) chips com a nova stack
Low Energy, melhorando o desenvolvimento de dispositivos com Bluetooth clássico e
habilitando-lhes novas capacidades.
Chips de modo único, que permitiram a dispositivos compactos e altamente integrados, contar
com uma camada de ligação muito leve, fornecendo consumos muito baixos em modo
inativo, descoberta simples de dispositivos, e transferência de dados confiável ponto-amultiponto com o modo avançado de economia de energia e garantir conexões criptografadas
com o menor custo possível. A camada de ligação nestes controladores permitirá sensores
conectados à Internet para agendar o tráfego de baixa energia Bluetooth entre transmissões
Bluetooth.
Os membros registados do Bluetooth SIG podem aceder a informações técnicas detalhadas
sobre a tecnologia Bluetooth Low Energy.
Detalhes técnicos:
Transferências de dados - Bluetooth Smart (low energy) suporta pacotes de dados muito
curtos (mínimo de 8 octeto até 27 octetos máximo) que são transferidos a 1 Mbps. Todas as
ligações usam um sistema avançado de busca para atingir ciclos de trabalho ultra-baixos.
Frequency Hopping - Bluetooth Smart (low energy) usa a frequência adaptativa de salto,
comum a todas as versões de tecnologia Bluetooth para minimizar a interferência de outras
tecnologias na banda dos 2.4 GHz ISM. Benefícios multi-caminho eficientes melhoram os
custos de ligação e o alcance.
14
Control Anfitrião - Bluetooth Smart (low energy) coloca uma quantidade significativa de
inteligência no controlador, que permite que o host possa dormir por longos períodos de
tempo e ser acordado pelo controlador somente quando o host precisa executar alguma ação.
Isso permite as maiores economias actuais, uma vez que o anfitrião consome mais energia do
que o controlador.
Latência - Bluetooth Smart (low energy) pode suportar a configuração da conexão e
transferência de dados tão baixo como 3ms, permite a uma aplicação formar uma conexão e,
em seguida, transferir os dados autenticados em alguns milissegundos para uma breve
comunicação antes de rapidamente terminar a conexão.
Alcance - Aumento do índice de modulação fornece um alcance ao Bluetooth Smart (low
energy) de mais de 100 metros.
Robustez - Bluetooth Smart (low energy) usa uma forte CRC de 24 bits em todos os pacotes
que garantem a robustez máxima contra interferências.
Segurança forte - criptografia AES-128 completa usando CCM para fornecer uma forte
criptografia e autenticação de pacotes de dados.
Topologia - Bluetooth Smart (low energy) utiliza um endereço de acesso de 32 bits em cada
pacote para cada slave, permitindo que milhares de milhões de dispositivos sejam conectados.
A tecnologia é otimizada para conexões de um-para-um, permitindo também conexões umpara-muitos usando uma topologia em estrela. (ponto 4.3.1 traduzido de [BLUETOOTH
2015])
15
4.3.2 Descrição da pilha Bluetooth Smart
Figura 11 Pilhas Protocolares Bluetooth (imagem retirada [BLE 2015])
GAP - Generic Access Profile, controla as ligações, a visibilidade do aparelho, e determina
como dois dispositivos podem interagir entre eles. (traduzido de [GAP])
GATT - é um acrônimo para o perfil Generic Attribut, e define o modo como dois
dispositivos Bluetooth Low Energy transferem dados entre eles, usando conceitos chamados
Serviços e características. GATT faz uso de um protocolo de dados genérico chamado
Attribute Protocol (ATT), que é usado para armazenar serviços, características e dados
relacionados, numa tabela de pesquisa simples usando IDs de 16 bits para cada entrada na
tabela. (traduzido de [GATT])
SMP – Security Manager Protocol, é usado no emparelhamento e transporta uma chave
especifica, na stack está ligado ao L2CAP (traduzido de [BLUETOOTH P])
L2CAP – Logical link control and adaptation protocol, é usada no interior da stack de
protocolo Bluetooth. Passa os pacotes tanto para o Host Controller Interface (HCI) ou, num
sistema hostless diretamente para o Link Manager/ACL.
Funções do L2CAP incluem:
- Multiplexação de dados entre diferentes protocolos de camada superior.
- Segmentação e remontagem de pacotes.
- Fornecendo gerenciamento de transmissão unidirecional de dados multicast a um grupo de
outros dispositivos Bluetooth.
- Gestão da qualidade de serviço (QoS) para protocolos das camadas superiores.
L2CAP é usado para comunicar através do link ACL host. A sua conexão é estabelecida após
o link ACL ser criado.
16
No modo básico, L2CAP oferece pacotes com uma carga configurável até 64 kB, com 672
bytes como o padrão MTU e 48 bytes como o mínimo obrigatório suportado MTU. Em modo
de controlo de retransmissão e fluxo, L2CAP pode ser configurado para dados fiáveis ou
assíncronos por canal através da realização de retransmissões e verificações CRC. A
confiabilidade num desses modos é, opcionalmente e/ou adicionalmente, garantida pela
camada inferior Bluetooth BDR / EDR interface através do ar, configurando o número de
retransmissões e nivelando o timeout (tempo após o qual o rádio irá libertar os pacotes). A
sequenciação é garantida pela camada inferior.
A especificação EL2CAP adiciona um modo de retransmissão adicional reforçada (ERTM)
com a especificação de núcleo, que é uma versão melhorada de retransmissão e modos de
controlo de fluxo. ERTM é necessário ao usar um AMP (Alternate MAC / PHY), tal como
802.11abgn. (L2CAP traduzido de [BLUETOOTH P])
Link Layer – Camada de ligação, é o equivalente LMP para Bluetooth Low Energy (LE),
mas é mais simples. Ele é implementado no controlador e gere propaganda, digitalização,
conexão e segurança a partir de um nível baixo, perto do ponto de vista de hardware do ponto
de vista Bluetooth. (traduzido de [BLUETOOTH P])
LE PHY – Low Energy, PHY é uma abreviatura para designar a camada física do modelo
OSI. (traduzido de [LE PHY])
4.3.3 Nordic Gazell
A camada de ligação Gazell é um protocolo para a criação de uma ligação sem fios robusta
tipicamente entre um único host e até oito dispositivos numa topologia de rede em estrela. A
camada de ligação Gazell é um protocolo projetado para minimizar o consumo de energia em
produtos desktops sem fio sensíveis ao consumo de energia, e também é adequado para uma
gama de outras aplicações sem fio.
No resto deste texto "Camada de ligação Gazell" irá ser substituído simplesmente com
"Gazell".
Gazell tem a característica de que uma das extremidades da comunicação pode estar"sempre
17
ligada", a fim de minimizar o consumo de energia dos dispositivos na outra extremidade que
tenham menor autonomia energética. O exemplo prototípico disso é um rato sem fios que
comunica com um dongle USB. Além disso, o Gazell tem um sofisticado esquema de
mudança de canal e sincronização, mais fácil de usar, mais robusto a interferências e com
boas características de coexistência com outras soluções de comunicação sem fios. Permitindo
ainda alto rendimento e baixa latência.
Características
Suporta uma topologia de rede em estrela com um Host e até 8 Dispositivos (pipes).
Transferência de dados bidirecional entre cada host e o dispositivo.
Canal de salto funcionalidade que dá uma elevada taxa de ligação sem fios e de confiança em
ambientes com interferência de outras fontes de rádio.
Reconhecimento de pacotes e funcionalidade de retransmissão de pacotes automática para
evitar a perda de dados.
TX e RX FIFO individuais para cada pipe de dados.
Compatível com legado nRF24Lxx Gazell.
Dispositivos de auto sincronização com o anfitrião, o que significa:
Nenhum pacote da conexão é necessário para configurar um link.
Nenhum pacote de votação é obrigado para manter uma ligação.
Os dispositivos podem introduzir-se e remover-se a partir da rede em qualquer altura.
Modos Gazell
Gazell suporta uma rede em estrela, onde cada nó tem um modo de determinar o seu papel;
um nó está no modo de host e está "always on", enquanto os nós restantes estão na
modalidade de dispositivos. Cada anfitrião Gazell pode comunicar até com 8 dispositivos
Gazell. Cada dispositivo comunica com um único anfitrião (host).
Uma vez ativado, o anfitrião numa rede Gazell, este está sempre a escutar. São os dispositivos
que iniciam, a comunicação com o anfitrião. Para ser reconhecido pelo anfitrião cada
dispositivo tem que enviar-lhe um pacote. É possível para o anfitrião enviar dados para o
dispositivo usando a mensagem de confirmação (ACK) da receção dos pacotes. Portanto, um
host tem que esperar por um pacote a partir de um dispositivo antes de poder enviar quaisquer
dados para ele.
É possível construir redes Gazell mais sofisticadas, já que um único dispositivo é capaz de
comunicar com vários Hosts e qualquer nó é capaz de alternar entre os dois modos. No
18
entanto, isso requer que a aplicação coordenar uma rede deste tipo. (ponto 4.3.3 traduzido de
[GAZELL])
19
Capítulo 5
5 Implementação
5.1 Aprender o funcionamento da placa
A primeira ação a ser executada foi instalar o IDE Keil, depois os drivers do ULINK2, de
seguida foi colocada a fonte na breadboard assim como a placa com o nRF51822, os LED’s e
resistências. O passo seguinte foi fazer as ligações dos fios condutores na breadboard e
posteriormente ligar o adaptador ULINK2 ao ground, Vcc, SWIO e CLOCK da placa.
Figura 12 Ligações entre placa e o cabo JTAG
20
Figura 13 Nome de cada pino
Depois das ligações feitas testou-se a placa com o microcontrolador nRF51822, para aprender
o seu funcionamento. Foi usado o IDE Keil para enviar o código para o nRF51822 através do
ULINK2. O primeiro exemplo foi o blinky, que é um pequeno programa que ativa
alternadamente 2 pinos de input/output. Este programa é um dos exemplos que a Nordic
Semiconductor disponibiliza para o nRF51822. Neste caso o pino para o LED_0 era o 8 e
para o LED_1 era o 9.
Figura 14 Placa com o nRF51822
Figura 15 Fonte de alimentação
21
Figura 16 Sistema pronto para testes
Seguiu-se o teste aos botões com o exemplo debouncer, este exemplo permite testar até um
máximo de 8 botões, que activam ou desactivam os respectivos LED’s associados a cada
botão.
Para testar a comunicação radio foi usado o exemplo radio, são necessárias duas placas com o
microcontrolador nRF51822, uma configurada como RX ou Receiver e outra como TX ou
Transmitter. O funcionamento deste exemplo replica o que acontece na placa configurada
como TX, para a placa configurada como RX, quando se carrega num botão na placa RX
nesta acende um LED e envia um sinal rádio para a placa TX para acender o LED
correspondente.
Até este ponto tudo foi correndo como era esperado, mas a partir do momento em que se
começou a testar o BLE, começaram os problemas. Para ter acesso ao BLE era necessário
instalar numa das placas o SoftDevice S110 (dados sobre SoftDevice em [S110]) mais
recente, que no momento era o 8.0.2. O SoftDevice é pré compilado, ligado binariamente e
implementa um protocolo wireless. A sua API permite criar código de alto nível usando
linguagem C. O nRF51 Software Development Kit (SDK) mais recente é a v9.0, este kit
dispõe de bibliotecas e exemplos prontos a usar, que permitem conhecer o funcionamento do
BLE disponível no microcontrolador nRF51822 (site onde pode colocar perguntas e tem
muita documentação relativa a criação de código para produtos Nordic e tutoriais
[DEVELOPER]).
22
As placas como não foram feitas de modo industrial, ainda não estão perfeitas, e devido a esse
fator nem todas as placas produzidas se comportam da mesma forma, este comportamento
pode ser devido ao uso que tiveram, pois já não são novas, ou outro fator de ordem técnica
que eu desconheço, o facto é que mesmo depois de testar 3 placas, não se conseguiu um
sistema estável para usar o SoftDevice, que teve de ser a V7.0, e o SDK teve de ser V6.1, uma
vez que só tinha acesso aos exemplos do nRF51822 dessa versão do SDK, e era necessário
que se destinassem à placa genérica nrf6310, pois esta placa tem os pinos configurados como
os que são usados nas placas deste projeto. Se o exemplo usado fosse para outra placa teriam
de ser feitas configurações e testes aos pinos, não havendo garantias que tudo ficasse a
funcionar como esperado. As placas apenas funcionam como deve ser, depois de serem
iniciadas em modo Debug, após este inicio pode-se sair deste modo e continuam a funcionar.
Assim sendo, o projeto torna-se pouco viável, pois o hardware fornecido não desempenha a
sua função convenientemente. Apenas se consegue fazer testes, não permitindo concluir com
sucesso todo o projeto, que passaria pela implementação do sistema de rega, desde a aplicação
Android, passando pelos 2 tipos de comunicação, BLE e Gazell, e culminando na parte das
electroválvulas.
5.2 Aplicação Android
A aplicação foi criada com base no exemplo [GOOGLE GIT], este exemplo procura
dispositivos que emitem sinal radio BLE, depois mostra na aplicação os serviços e
características disponíveis do dispositivo encontrado. A este exemplo foram acrescentadas as
atividades da escolha do dia da semana e da escolha do horário. Foi ainda alterada a atividade
gatt_services_characteristics de modo a incluir botões para transitar, para a atividade de cada
válvula, por forma a definir o seu horário de início e fim de rega.
23
Figura 17 Aspeto da Aplicação
A aplicação ainda não está concluída. Falta a parte de transferência de dados para a placa,
definir os horários corretamente e gravar os mesmos na aplicação.
24
Capítulo 6
6 Testes
Na placa que fica junto às electroválvulas coloquei o código do exemplo Blinky e adicionei
funções de get, set e reset, para ativar e desativar as electroválvulas, faltou implementar a
comunicação com a placa no interior da habitação. A placa está a funcionar por razões de
demonstração, com períodos de 1 segundo em vez de 30 minutos, como seria normal para
completar um dia, pois foi criada uma matriz para cada electroválvula, com 7 dias e 48
períodos de 30 minutos em cada período.
A aplicação recebe dados através de BLE, vindos da placa intermediária.
Como não consegui implementar completamente o trabalho criei uma alternativa usando
Arduino (site oficial do Arduino [ARDUINO]) e Android, que permite activação remota de
led’s, falta criar a parte dos horários, e estudar o modo como aceder ao Shield ethernet a partir
da internet. Apenas testei com o Router de casa, que atribui um ip ao Shield. Para esta solução
basta aceder ao ip do shield através de um browser, funcionando assim em todas as
plataformas que disponham de browser.
Figura 18 Testes com Arduino
25
Figura 19 IDE Arduino
Figura 20 Browser no pc
Figura 21 Browser no Android
26
Capítulo 7
7 Discussão
Este projeto ficou à quem do que era desejado, na comunicação através de BLE, entre a
aplicação e a placa que fica no interior da habitação, faltou testar o envio de dados para a
placa, só foi testada a receção de dados enviados da placa para a aplicação. Na comunicação
entre placas, só foi testado um exemplo rádio que funcionou como esperado, mas era apenas
unidirecional. A ativação da placa através de um horário foi conseguida, faltou a parte das
interrupções e colocar um timer. Por outro lado, também testei a plataforma Arduino, que
permite uma programação mais intuitiva, e tem uma quantidade de exemplos muito maior.
Também permite maior diversidade de projetos pois dispões de mais componentes de
hardware, como sensores de todo o tipo, e vários tipos de comunicação.
27
Capítulo 8
8 Conclusões
Com este projeto adquiri conhecimentos de eletrónica, comunicações BLE e como queria
apresentar um sistema a funcionar remotamente, também dediquei algum tempo a explorar o
vasto mundo Arduino.
Espero que nos próximos projetos que venha a criar, tenha mais tempo, e comece a contar
com os imprevistos, que como o nome diz, alguns deles não podem ser previstos, mas muitos
deles podem, e por isso, ser proactivo, ajuda bastante na criação e implementação dos
projetos.
Futuramente espero que o projeto seja concluído com êxito, implementando as partes que
agora ficaram incompletas, também podem ser acrescentadas melhorias, como adicionar um
LCD às placas para uma melhor monitorização sobre o funcionamento das electroválvulas e
respetivos horários. Se as electroválvulas forem alimentadas por uma bateria, poderá ser
acrescentado um painel fotovoltaico, melhorando ainda mais a eficiência energética do
projeto.
28
Referências bibliográficas
[ANDROID BLE 2015] Android
Develop
Bluetooth
Low
Energy.
Disponível
online
em
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html consultado
em Agosto de 2015
[ARDUINO]
Página Oficial Arduino. Disponível online em https://www.arduino.cc/ consultado em
Agosto de 2015
[BLE 2015]
Geting start with Bluetooth Low Energy. Disponível
https://www.safaribooksonline.com/library/view/getting-startedwith/9781491900550/ch01.html consultado em Agosto de 2015
[BLUETOOTH 2015]
Bluetooth
technical
Information.
Disponível
online
em
http://www.bluetooth.com/Pages/low-energy-tech-info.aspx consultado em Agosto de
2015
online
em
[BLUETOOTH P 2015] Protocolos
Bluetooth.
Disponível
online
em
https://en.wikipedia.org/wiki/List_of_Bluetooth_protocols#Low_Energy_Security_M
anager_Protocol_.28SMP.29 consultado em Agosto de 2015
[DEVELOPER]
Nordic
Semiconductor
Developer
Zone.
Disponível
https://devzone.nordicsemi.com/docs/ consultado em Novembro 2014
online
[GAP]
Definição de GAP. Disponível online em https://learn.adafruit.com/introduction-tobluetooth-low-energy/gap consultado em Agosto 2015
[GATT]
Definição de GATT. Disponível online em https://learn.adafruit.com/introduction-tobluetooth-low-energy/gatt consultado em Agosto 2015
[GAZELL]
Dados
sobre
camada
de
ligação
Gazell.
Disponível
online
em
http://developer.nordicsemi.com/nRF51_SDK/nRF51_SDK_v6.x.x/doc/6.1.0/s110/ht
ml/a00113.html consultado em Dezembro 2014
[GOOGLE GIT]
Código
do
exemplo
Android
Gatt.
Disponivel
em
https://android.googlesource.com/platform/development/+/7167a054a8027f75025c86
5322fa84791a9b3bd1/samples/BluetoothLeGatt?autodive=0 consultado em Agosto
2015
[IMAGEM S110]
Imagens
das
stacks.
Disponível
online
em
http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.pdf.sds/S110_SDS_v2.0
.pdf consultado em Agosto de 2015
[LE PHY]
Definição de LE PHY. Disponivel em https://fr.wikipedia.org/wiki/PHY consultado
em Agosto 2015
[NORDIC]
Página
oficial
da
Nordic
Semiconductor.
Disponível
http://www.nordicsemi.com/ consultado em Novembro 2014
[NORDIC INFO]
Centro de informação dos produtos Nordic Semiconductor. Disponível online em
http://infocenter.nordicsemi.com/index.jsp consultado em Novembro 2014
[S110]
SoftDevice
S110
v6.1.0.
Disponível
online
em
http://developer.nordicsemi.com/nRF51_SDK/nRF51_SDK_v6.x.x/doc/6.1.0/s110/ht
ml/index.html consultado em Agosto de 2015
online
em
em
29
[TEST REPORT 2014]
Test
Reporto
of
nRF51822.
Disponível
online
em
http://infocenter.nordicsemi.com/topic/com.nordic.infocenter.pdf.qr/HSR_nRF51x22QFAx_ATP_Fab3_2014-11.pdf consultado em Novembro 2014
[ULINK2]
Documentação
do
Adaptador
ULINK2.
Disponível
online
em
http://www.keil.com/support/man/docs/ulink2/ulink2_in_features.htm consultado em
Agosto de 2015
30
Anexo A
A Proposta de Projeto
Curso de Licenciatura em Engenharia Informática
Projeto 3º Ano - Ano letivo de 2014/2015
Solução de controlo remoto com base no nRF51822
Orientador: Paulo Matos
José Lima
1 Objetivo
O nRF5188 é um microcontrolador SoC que permite comunicação sem fios através do
protocolo Bluetooth Low Energy (BLE) ou de outros que operem na banda dos 2.4GHz. É
utilizado em muitos dos dispositivos que têm surgido nos últimos meses que visam integrar
com aplicações (software) para dispositivos móveis (smartphones, tablets e afins), como é o
caso dos beacons, dos monitores de fitness, dos smart watches, ou até dos werables.
2 Detalhes
O objetivo deste projeto é utilizar o microcontrolador nRF51822 para desenvolver um
controlador de rega monitorizável e programável remotamente. O projeto é assim composto
pelo atuador, que ficará junto às válvulas de rega; e pela unidade de controlo e monitorização
que normalmente ficará dentro da habitação. A comunicação entre ambos será efetuada por
wireless.
3 Metodologia de trabalho
A realização deste projeto pressupõe as seguintes fases:
1. Levantamento e a especificação dos requisitos
2. Análise do sistema
3. Implementação
4. Testes de verificação e de validação
5. Produção de documentação
Dimensão da equipa: 1-2 alunos
Recursos necessários: Computador
A31
Download

Solução de controlo remoto com base no microcontrolador nRF51822