Innholdsfortegnelse:

Comunicação IoT Com a Dragonboard 410C: 5 trinn
Comunicação IoT Com a Dragonboard 410C: 5 trinn

Video: Comunicação IoT Com a Dragonboard 410C: 5 trinn

Video: Comunicação IoT Com a Dragonboard 410C: 5 trinn
Video: Qualcomm launches its premium 820E embedded platform for IoT developers 2024, Juli
Anonim
Comunicação IoT Com a Dragonboard 410C
Comunicação IoT Com a Dragonboard 410C

É bastante comum desenvolver ou, até mesmo, comprar um produto IoT para a sua casa. Abrir uma cortina, ligar uma tomada, ajustar a temperatura de um ambiente, monitoramento de segurança, entre outros benefícios de equipamentos IoT.

Agora, seria interessante transformar esses alertas das "coisas" da sua casa, em solicitações de serviço, e ainda melhor, em serviços que você conhece e que já está acostumado. O comerciante "zé da água" não tem condições de entrar num grande marketplace para vender a sua água e tão pouco ter recursos para adquirir e manter um sistema de pedidos.

Para que você bruk serviços como o do seu 'Zé da água', que você semper confiou, será mostrado como montar a base de uma plataforma IoT com a dragonboard, for resolver essa comunicação.

Trinn 1: Forbered en Sua Dragonboard 410C

Forbered en Sua Dragonboard 410C
Forbered en Sua Dragonboard 410C

Neste passo vamos prepara a nossa Drabonboard 410C para se tornar o gateway da nossa estrutura IoT dentro da sua casa.

Primeiramente, kan også installeres i operativsystemet. Caso você opte por utilizar localização GPS, que ajudará muito o cliente no momento de registro, sugerimos que instale or system operacional Linaro 17.04.1, caso contrário, veja as opçõeses na na página da Dragonboard 410C da 96boards, neste lenke.

Du kan installere et system for operasjonell bruk, installere en biblioteca libmraa for a utilização das GPIOs, da Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):

Pré requisitos libmraa

  • sudo apt-get oppdatering
  • sudo apt-cache søk pcre
  • sudo apt-get install libpcre3-dev
  • sudo apt-get install git
  • sudo apt-get install cmake
  • sudo apt-get install python-dev
  • sudo apt-get install swig

Instalação mraa

  • sudo git klon
  • sudo mkdir mraa/build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = AV
  • sudo lage
  • sudo gjør install

Para utilizar a biblioteca com Python, que é o caso deste instructable, vamos adicionar o export da nossa variavel de ambiente do Python para a biblioteca. Para isso, benytt deg av tekstredigeringsprogrammet for å foretrekke para seguir os passos abaixo, vamos utilziar o VIM:

  • sudo vim ~/.bashrc
  • pressione a teclar i, para iniciar a edição do arquivo
  • Adicionar a linha seguinte no final do arquivo: export PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find /usr /local -name mraa.py))
  • pressione ESC para sair da edição do arquivo e digite ': x!' e enter para salvar e sair do arquivo.

Com isso já conseguimos utilizar a biblioteca mraa com Pyhton.

Agora, vamos installer os programvare for å gjøre et søk for GPS (lembrnado que para a utilização dessa parte, recomendamos o uso do system system operacional Linaro 17.04.1). Ingen konsoll, utfør o comando abaixo:

sudo apt-get install gnss-gpsd gpsd gpsd-klienter

For tester, execute o código abaixo, também no seu console:

gpsmon –n

OBS: A antena interna da Drabonboard é para ser utilizada fora de cases e em locais mais abertos. Até mesmo em locais abertos, a leitura pode demorar de 5 a 10 minutos, então não fique preocupado se não exibir as informações prontamente.

Pensando no projeto, com certeza iremos encapsular o (s) hardware (s) num case, e no menor dos cenários, este case estará dentro de uma casa ou apartamento. Para resolver, podemos utilizar antenas externas, tanto para wi-fi, quanto para o GPS.

OBS: A instalação da antena externa não é um procedimento tão simples para quem não tem familiaridade com procedimentos de soldagem com SMD, portanto, procure um serviço especializado se nødvendário.

Para realizar o switch do das antenas internas para externas, será needsário seguir os procedimentos que a Qualcomm disponibilizou no documento deste link.

OBS: Det er mulig å koble til komponentene (kondensatorer, resistorer og industrier) på internett. Vi har flere antenner, og det er ikke noe nettsted for SmartCore.

Para que nosso gateway não fique dependente de uma configuração e conexão wifi, com a internet, iremos utilzar for módulo GSM. Os GSM eksterneos, geralmente necessitamam uma tensão estável e específica, então vamos criar uma saída de alimentação diretamente da entrada de alimentação da Dragonboard 410C.

For eksempel kan vi gjøre et skritt som kan gjøre det mulig for oss å bruke det for å gjøre det til en GSM -modul (ATENÇÃO COM A POLARIDADE).

Para realizar a comunicação interna, iremos utilizar of protocolo MQTT, e definir a Dragonboard 410C como hotspot. Vamos installere programvare Mosquitto for tornar and nossa placa um broker mqtt, com a execução da linha abaixo no seu console:

sudo apt-get install mygg

Det er også programvare som er installert og installert.

Para definir a sua Dragonboard 410C som hotspot, og passord:

  • Klikk no icone de redes no canto inferior direito
  • Klikk på 'Rediger tilkoblinger'
  • Klikk på 'Nettverkstilkoblinger', klikk på 'Legg til'
  • Velg Wi-Fi og klikk på 'Opprett'
  • Ao abrir a tela de konfiguração da rede, insira um nome em SSID
  • Na mesma tela mude for 'Hotspot' no campo 'Mode'
  • Caso queira inkluderer en uma senha for en rede, configure-a na aba 'Wi-fi Security'
  • For endelig å klikke på 'Lagre'

Agora qualquer dispositivo pode se conectar à rede exclusiva da Dragonboard 410C, e utilizar o seu broker para publicar e subscrever.

Com estes preparos acima, estamos prontos para seguir com o desenvolvimento.

Trinn 2: Forbered et Sua Cloud API

Este passo é algo que depende muito de projeto para projeto. Pode ser que presis ser feita do zero, ou o cloud já existe com a necessidade de criar or mecanismo de API, ou atéé mesmo já ter uma API pronta para utilizar.

Vamos descrever um passo a passo para iniciariar uma API básica, meno menos para o teste deste instructable. Caso queira seguir um tutorial mais completeo, sugiro ver o artigo deste link. Em todo caso, sugiro desenvolver algo mais estruturado, caso a finalidade do projeto seja comercial.

Primeiramente, precisamos de um lugar for colocarmos a nossa API, e para não termos gastos com estes testes, iremos utilizar and plataforma Heroku. Vi kan også lese mer om følgende:

  • Acesse o site da Heroku, por este link
  • Klikk på 'Registrer deg', no canto superior dieito, para iniciar o seu registro
  • Registrer deg, kontrollpanelet klikker på "Ny" og viser "Opprett ny app"
  • Insira um nome para a sua aplicação
  • Em seguida, klikk på 'Opprett app'
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Instale o Heroku Cli, para fazer os distribuerer para a sua aplicação, seguindo and instrução para seu system operacional, de acordo com a documentação deste link
  • Agora você deverá seguir as instruçõeses deploy for paraççar o desenvolvimento da sua API, disponível em

Det kan også brukes til å lage en pasta med en spesiell API. Agora kan også installere NodeJS og rammeverk Express, og det kan vi gjøre følgende:

  • curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
  • sudo apt -get install -y nodejs
  • sudo apt-get install npm
  • Caso não esteja utilizando uma distribuição Linux que utilize o Advanced Packaging Tool (APT), ou outro system system operation, consulte o link
  • Agora utfør npm installer express -generator -g
  • Acesse o diretório que foi realizado os procedimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicie a aplicação node 'npm init', e os outros comandos abaixo
  • cd../
  • ekspress _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm installere

Para deixar dois endepunkter forbereder, um de GET e um de POST, og det er passas abaixo:

  • Acesse a pasta 'routes'
  • abra o arquivo 'index.js'
  • Inkludere trecho de código abaixo, que irá adicionar as rotas na raiz da sua aplicação para os dois métidos (GET e POST):

router.get ('/', function (req, res, next) {res.setHeader ('Content-Type', 'application/json'); res.send (JSON.stringify ({msg: 'Hello API'}, null, 3));}); router.post ('/', function (req, res, next) {var msg = 'empty'; if (typeof req.body.msg! = 'undefined') msg = req.body.msg; res.setHeader ('Content-Type', 'application/json'); res.send (JSON.stringify ({msg: msg}, null, 3));});

Agora você realize o deploy do seu app para a Heroku:

  • heroku pålogging
  • git legge til.
  • git commit -am "initial commit"
  • git push heroku master

Com isso você já tem seus endpoints de testes prontos. For testar os endepunkter sugerimos installer or software Postman, neste link. Insira a url da seu app (Ex: https://_SEU_APP_.herokuapp.com/) e selecione o método GET ou POST, e clique em 'SEND'. Para o método POST, og passasjerer:

  • Klikk på aba 'Body'
  • Velg en opção 'x-www-form-urlencoded
  • Insira o key 'msg'
  • Em Value, pode inserir qualquer mensagem

Vi kan bruke temos og nossa APIs testes pronta para o uso.

Trinn 3: Instalando E Manipulando O Modulo GSM

Instalando E Manipulando O Modulo GSM
Instalando E Manipulando O Modulo GSM
Instalando E Manipulando O Modulo GSM
Instalando E Manipulando O Modulo GSM

For å avhenge av en konneksjon av Wifi, kan vi også bruke en GSM -kommunikasjon for å gjøre det enklere å bruke et API, som ikke er et trinn foran.

Vi kan også bruke GSM -homologer til moduler, for eksempel kan vi teste og bruke simuleringer for å få et enkelt eksempel på en SIMANDL -modul. Este modulo foi producido e distribuído em massa pelo fabricando, mas sem qualquer homologação, tanto que não está disponível no site do fabricando.

Vamos às conexões físicas, entre o modulo GSM and a nossa Dragonboard 410C.

Gjør ikke noe trinn 'Forbered en Dragonboard', og det er vanlig å bruke en modul. Para isso utilizaremos um regulador de tensão trappe ned, for diminuir og tensão de entrada. Utilizamos o Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este teste

Vi kan også gi en realisering av følgende virkninger:

  • Konstruer en positiv posisjon for Dragonboard, som et trinn 'Forbered en dragonboard', og konstruer 'IN +' til regulator de tensão
  • Konstruer en negativ av Dragonboard, som et trinn 'Forbered en Dragonboard', og konstruer 'IN -' gjør regulador de tensão
  • VIKTIG: Ligue a Dragonboard, en regule com a auxilio de uma chave de fenda, regule o trimpot para que a saída (OUT + e OUT -) tenha 4.2V. Siga adiante apenas se a saída estiver com esse valor. Caso seja utilizado outro modulo GSM, verifique and tensão adequada. Este passo deve ser repetido, semper que houver inclusão de um hardware, pois pode haver variação.
  • Konstruere en regulator for tensão 'OUT +' no pino VCC, indicado for image of the capa deste step
  • Konstruere en regulator for tensão 'OUT -' no pino GND, indicado for image of the capa deste step
  • Konstruer o pino RXD for modul GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados for the capa deste step
  • Konstruere o pino TXD for modulo GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados for the capa deste step
  • Konstruere o pino GND do modulo GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. Isto é fundmental para estabilizar o tráfego de dados for RX TX

OBS: Vi kan ikke koble til en antenne uten GSM -moduler, nettverk eller IPX ANT, som kan vise et trinn for trinn.

Agora vamos ao programvare. Vamos utilizar a biblioteca mraa que instalamos anteriormente, para realizar and comunicação serial entre or modulo GSM e a Dragonboard 410C.

Vi kan også lese mer om følgende:

  • Crie um arquivo com a extensão.py, como sugestão 'gsm.py'
  • No arquivo, inicie importando a biblioteca mrra, e também a biblioteca time para definir forsinkelser

importer mraa

Defina uma variável para o caminho da UART que conectamos or modulo GSM

port = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (port)

Crie uma função para enviar para os comando AT para o modulo GSM

def skrive (msg):

uart.write (bytearray (str (msg)+'\ n', 'utf-8'))

Crie um loop for fazer a leitura do modulo GSM

while True: r = uart.read (128) if r! = '': print (r.decode ('UTF-8')) i = str (input ()) write (i) time.sleep (0.5)

  • Salve o arquivo e volte para o console
  • Utfør o arquivo

python gsm.py

Digite 'AT', e se tudo conectado corretamente, você irá receber na tela a mensgem 'OK'

Para que nosso módulo não dependa de digitarmos cada comando AT - encontrados neste link - faremos duas funções, uma que irá realizar and conexão com a APN e outra que irá consumir a nossa API.

A primeira função será de conexão:

def connect ():

time.sleep (0.5) skrive ("AT") time.sleep (0.5) skrive ('AT+CREG = 1') time.sleep (0.5) skrive ('AT+COPS = 2') time.sleep (0.5) write ('AT+SAPBR = 3, 1, "Contype", "GPRS"') time.sleep (0.5) write ('AT+SAPBR = 3, 1, "APN", "*****"') time.sleep (0,5) skriv ('AT+SAPBR = 3, 1, "USER", "*****"') time.sleep (0,5) write ('AT+SAPBR = 3, 1, "PWD", "*****" ') time.sleep (0.5) skriv (' AT+SAPBR = 1, 1 ') time.sleep (0.5) write (' AT+SAPBR = 2, 1 ') time.sleep (6)

Sugiro que rode cada comanda antes de utilizar esta função. Segue algumas observações sobre estes comandos:

  • Para definir corretamente o valor do comando AT+COPS, que serve para selecionar a sua rede, primeiro execute AT+COPS = ?, aguarde que apareça as redes disponíveis, e altere o valor na função connect () para o indexador da sua rede exibida após o comando AT_COPS =?
  • Os comandos de definição da APN estão com asteriscos pois depende de cada operadora do SIM Card, procure se informar com a operador para saber qual o endereço da APN, usuário e senha.
  • Repare que a cada

Agora vamos implementar a função que irá enviar consumir a nossa API:

send send (p, m, d = ''):

write ('AT+HTTPINIT') time.sleep (0.5) write ('AT+HTTPSSL = 1') time.sleep (0.5) write ('AT+HTTPPARA = "CID", 1') time.sleep (0.5) write ('AT+HTTPPARA = "URL", "_URL_APP_HEROKU _/'+p+'"') time.sleep (0.5) write ('AT+HTTPPARA = "USERDATA", "Authorization: Bearer ******** ********* / r / n "') time.sleep (0,5) hvis m ==' GET ': skriv (' AT+HTTPACTION = 0 ') annet: skriv (' AT+HTTPPARA = "INNHOLD", "application/x-www-form-urlencoded" ') time.sleep (0.5) skriv (' AT+HTTPDATA = '+str (len (d))+', 10000 ') time.sleep (0,5) skrive (str (t)) time.sleep (10) skrive ('AT+HTTPACTION = 1') time.sleep (6) write ('AT+HTTPTERM')

Segue algumas observações para estes comandos:

  • En funksjonsmessig tilbakemelding på 3 parametre. 'p' para o path que será executado da sua API, 'm' para o método que você irá utilizar da sua api (GET/POST/…), e 'd' para os dados enviados em caso do método não for GET
  • O comando 'AT+HTTPS' er valgfritt, og det er ikke mulig å bruke SSL
  • O argumento 'm' deverá ser enviado no formato querystring (Ex: msg = ola+dragonboard & arg2 = teste & …)
  • O comando 'AT+HTTPPARA = "USERDATA …" er valgfritt

Mais uma vez sugiro rodar cada comando, individualmente e em ordem, antes da utilização.

Antes de adquirir seu SIM Card, consulte se a operadora trabalha com a mesma technologia que o modulo GSM que você estiver utilizando, mas é aconselhável utilizar o SIM Card de empresas especializadas em comunicação IoT, por questõeses kompatibilidade, custos e praticidade.

Com as configurações and implementações acima, estamos prontos para nos comunicarmos com a nuvem através da nossa Dragonboard 410C.

Trinn 4: Preparando Dispositivos Para Se Comunicar Com a Dragonboard

Preparando Dispositivos Para Se Comunicar Com a Dragonboard
Preparando Dispositivos Para Se Comunicar Com a Dragonboard

Neste passo, iremos utilizar a placa de prototipagem NODEMCU ESP8266 ESP-12, como exemplo. Esta e qualquer outra placa de prototipagem, como o nome já diz, é ótima para protótipos, mas no momento em que o hardware for definido como produto, deve ser desenvolvido um complexo dedicado. Este módulo já possui WiFi, então irá facilitar and comunicação.

Para nos comunicarmos com a nossa Dragonboard 410C, presist to 2 bibliotecas:

  • ESP8266WiFi> biblioteca para ativar a conexão da placa
  • PubSubClient> biblioteca for realizar a comunicação com o broker MQTT

Defina como variáveis globais, as definiçeses da rede Wi-fi e do broker, ambos da nossa Dragonboard 410C:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // Det er definert som Hotspot og Dragonboard
  • const char* PASSWORD = ""; // Insira o valor da senha se houver definido na configação do Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Utfør 'ip a' på suge Dragonboard for descobrir eller ip da rede interna

Crie o objeto de rede Wi-fi da plassering og instansie o client MQTT com este objeto:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Etter oppsett, kan du også bruke WIFI og en kommune MQTT:

  • WiFi. Begynner (SSID, PASSORD);
  • MQTT.setServer (BROKER, 1883);
  • MQTT.setCallback (tilbakering_mqtt); // Caso você faça abonnere på algum tópico

No sua função de loop, adicione and linha abaixo para que o MQTT entre em loop:

MQTT.loop ();

Você pode criar uma função de verificação de conexão de WIFI e do broker, para não ter problemas com intermitência. Para isso crie um função com as linhas abaixo, e chame-a na função de loop:

void checkConnections () {

hvis (! MQTT.connected ()) mens (! MQTT.connected ());

hvis (WiFi.status ()! = WL_CONNECTED) {WiFi.begin (SSID, PASSWORD); mens (WiFi.status ()! = WL_CONNECTED);}

}

E finalmente, iremos enviar algum dado para a Drabonboard 410C, com o seguinte comando:

MQTT.publish ('_ NOME_DO_TOPICO_', "Ola Dragonboard");

Du kan også bruke detaljer for eksempel på sensorer og etc, og du kan også velge mellom forskjellige modeller for maskinvare og maskinvare. Basta incluir esta linha onde necessário, que os dados serão enviados para a seu broker.

Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, para checarmos os dados recebidos pelo broker, mas antes, vamos instalar uma biblioteca que nos auxiliará na conexão do broker. Para isso execute as linhas abaixo no console da Dragonboard 410C:

  • sudo apt-get install python pip
  • pip installer paho-mqtt

Agora vamos criar um arquivo python com o nome, como exemplo, mqtt.py. Nele vamos definir algumas funções que serão explicadas a seguir:

importer paho.mqtt.client som mqttimport sys

Megler = "_IP_DRAGONBOARD_" port = 1883 timeout = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect (klient, brukerdata, flagg, rc): client.subscribe (TopicSubscribe)

def onMessage (client, userdata, msg): message = str (msg.payload) print (melding)

prøv: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (megler, port, timeout) client.loop_forever () unntatt: sys.exit (0)

Neste arquivo vamos definimos duas funções, a 'onConnect' que será chamada no momento em que houver conexão com o broker, e a função 'onMessage' que será executada quando houver mensagem recebida nos subscribes definidos na função 'onConnect'.

Utfør o arquivo com 'python mqtt.py', e se todas as conexões anteriores estiverem sido realizadas com sucesso, você receberá na sua tela os dados que estão sendo enviados pelo seu dispositivo externo, no caso deste exemplo, pelo NODEMCU.

Legg merke til at det er en funksjon på onMessage, som vi kan motta informasjon om og eksibimos fra konsollen. Então é neste ponto que você tratará us dados recebidos e no momento certo, enviará via GSM para a sua API, pela função 'send' do seu arquivo de teste gsm.py, que criamos no passo 'Instalando e manipulando o modulo GSM'.

Uma observação importante: Para realizar a alimentação da placa NODEMCU ESP8266 ESP-12, em especifico, sugiro que consultem o documento deste link. Muito cuidado neste momento, pois uma simples falha de inversão de polos pode queimar a placa, mas caso isso aconteça a boa noticia é que tem um preço que facilita a troca rapidamente.

Trinn 5: Considerações Finais

Se estiver tudo configurado como descritos nos steps anteriores, você já está comunicando o seu dispositivo IoT com o mundo, com auxilio da sua Dragonboard 410C. É importante ressaltar que neste instructable foram mencionados vários hardwares e software, mas apenas para fins de exemplifico. Os sensores e outros recursos que serão utilizados no dispositivo externo, todo o preparo and implementação da sua API Cloud, us recursos de hardware ligados à Dragonboard, e também a forma com que us dados são tratados, fica a critério de quem for executar o projeto. Para definir como produto final, sugerimos apĺicar as tecnologias e procedimentos adequados para tal

Bruk av apper og applikasjoner de gestão, for comerciantes ligados aos serviços, deixamos em aberto também, bastando trabalhar bem a sua API, e a consumindo através destas frentes.

Anbefalt: