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