Isi kandungan:

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

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

Video: Comunicação IoT Com a Dragonboard 410C: 5 Langkah
Video: Начало работы — Windows 10 IoT Core + DragonBoard 410c 2024, Julai
Anonim
Comunicação IoT Com sebuah Dragonboard 410C
Comunicação IoT Com sebuah Dragonboard 410C

É bastante comum desenvolver ou, até mesmo, terdiri daripada 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ê menggunakan 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, para resolver essa comunicação.

Langkah 1: Sediakan Sua Dragonboard 410C

Sediakan Sua Dragonboard 410C
Sediakan 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, vamos instalar um sistema operacional na placa. Caso você opte por utilizar localização GPS, que ajudará muito o cliente no momento de registro, sugerimos que instale o sistema operasional Linaro 17.04.1, caso contrário, veja as opções de na página da Dragonboard 410C da 96boards, pautan neste.

Oleh itu, instalação do seu sistema beroperasi, instal biblioteca libmraa para a utilização das GPIO, da Dragonboard 410C. Para Isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):

Pra requisitos libmraa

  • sudo apt-get kemas kini
  • sudo apt-cache cari 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 clone
  • sudo mkdir mraa / build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = MATI
  • sudo buat
  • sudo buat pasang

Para utilizar a biblioteca com Python, que é o caso deste instruksional, vamos adicionar o eksport da nossa variavel de ambiente do Python para a biblioteca. Untuk penerbitan, gunakan o editor de texto de sua preferência para seguir os passos abaixo, vamos utilziar o VIM:

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

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

Agora, vamos instalar os software untuk سهولتitar a leitura do GPS (lembrnado que para a utilização dessa parte, recomendamos o uso do sistema operasional Linaro 17.04.1). Tidak ada konsol seu, jalankan o comando abaixo:

sudo apt-get install gnss-gpsd gpsd gpsd-klien

Para testar, jalankan o código abaixo, também no seu console:

gpsmon –n

OBS: Antena interna da Drabonboard untuk ser utilizada fora de case e em locais mais abertos. Até mesmo em locais abertos, sebuah leitura pode demorar de 5 a 10 minutos, então não fique preocupado se não exibir sebagai informações prontamente.

Pensando no projeto, com certeza iremos encapsular o (s) hardware s sum num case, e no menor dos cenários, este case estará dentro de uma casa ou apartamento. Penyelesai para, luaran antena pemanfaatan podemos, tanto para wi-fi, GPS kuanto untuk o.

OBS: 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 Needário.

Daripada pengalih suara, lakukanlah antena antena dan luaran, yang diperlukan untuk melaksanakan prosedur Qualcomm disponibilizou no documento deste link.

OBS: É muito mais fácil de encontrar os componentses (kapasitor, resistores e indutores) dan internet do que em loja física. Wahai antena antena, que sugerimos a compa no site da SmartCore.

Para que nosso gateway não fique depende de uma configuração e conexão wifi, com a internet, iremos utilzar um módulo GSM. Os módulos GSM externos, geralmente requitam de 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.

Na imagem de capa deste step, estão destacados os pontos de saída que deverá ser utilizado para a soldagem dos cabos untuk alimentação do modulo GSM (ATENÇÃO COM A POLARIDADE).

Sebagai realizar a comunicação interna, iremos utilizar o protocolo MQTT, dan definisi Dragonboard 410C comots hotspot. Vamos instalar o software Mosquitto para tornar a nossa placa um broker mqtt, com a execução da linha abaixo no seu console:

sudo apt-get install mosquitto

Perisian komuniti já estará instalado e ativo.

Para definir a sua Dragonboard 410C como um hotspot, siga os passos:

  • Clique no icone de redes no canto inferior direito
  • Clique em 'Edit sambungan'
  • Apo abrir a tela 'Sambungan rangkaian', klik 'Tambah'
  • Selecione a opção Wi-fi, dan klik 'Buat'
  • Seterusnya, tela de configuração da rede, insira um n em em SSID
  • Na mesma tela mude untuk 'Hotspot' no campo 'Mode'
  • Caso queira incluir uma senha para rede, konfigurasi-a na aba 'Wi-fi Security'
  • Klik finalis untuk 'Save'

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

Comstes Preparos acima, estamos prontos para seguir com o desenvolvimento.

Langkah 2: Sediakan Sua Cloud API

Este passo é algo que depende muito de projeto para projeto. Pode ser que tepat ser feita lakukan sifar, atau awan dan ada aplikasi yang perlu diisi dan mecanismo de API, ou até mesmo já ter uma API pronta para utilizar.

Vamos descrever um passo a passo para iniciar uma API básica, pelo menos para o teste deste diarahkan. Caso queira seguir um tutorial maisomplo, pautan sugiro ver o artigo deste. Em todo caso, sugiro desenvolver algo mais estruturado, caso a finalidade do projeto seja comercial.

Primeiramente, precisamos de um lugar para colocarmos a nossa API, e para não termos gastos com estes testes, iremos utilizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Acesse o site da Heroku, pautan ini
  • Clique em 'Sign Up', tanpa cito superior dieito, para iniciar o seu registro
  • Apo o registro, em sua dashboard, klik 'New' e escolha a opção 'Buat Aplikasi Baru'
  • Insira um nome para a sua aplicação
  • Em seguida, klik 'Buat Aplikasi'
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Instal o Heroku Cli, para fazer os menggunakan para a sua aplicação, seguindo a instrução para seu sistema operacional, de acordo com a documentação deste link
  • Agora você deverá seguir sebagai instrukses de deploy para começar o desenvolvimento da sua API, disponível em

Seguindo os passos acima, já temos a pasta na sua máquina, para desenvolver a sua API. Agora vamos instalar o NodeJS e a framework Express, seguindo os passos abaixo:

  • 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 use o Advanced Packaging Tool (APT), atau outro sistema operacional, lihat pautan
  • Agora laksanakan npm pasang express-generator -g
  • Acesse o diretório que juga realizado os Procedimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicie a aplicação node com 'npm init', e os outros comandos abaixo
  • cd../
  • menyatakan _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • pasang npm

Para deixar dois endpoints prepados, um de GET e um de POST, siga os passo abaixo:

  • Dapatkan 'laluan' pasta
  • abra o arquivo 'index.js'
  • Termasuk trecho de código abaixo, que irá adicionar sebagai rotas na raiz da sua aplicação para os dois métidos (DAPATKAN POS):

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 = 'blank'; 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ê menyadari o menyebarkan aplikasi seu untuk Heroku:

  • log masuk heroku
  • git tambah.
  • git commit -am "komit awal"
  • git tolak tuan heroku

Komuniti vokal ja tem seus endpoints de testes prontos. Para testar os endpoints sugerimos instalar o software Postman, pautan neste. Insira a url da seu app (Cth: https://_SEU_APP_.herokuapp.com/) e selecione o método DAPATKAN POST, dan klik 'HANTAR'. Para o método POST, siga os passos:

  • Clique na aba 'Badan'
  • Selecione a opção 'x-www-form-urlencoded
  • Insira o kunci 'msg'
  • Nilai Em, pode inserir qualquer mensagem

Com essas instruções temos a nossa API de testes pronta para o uso.

Langkah 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

Para não dependermos de uma conexão Wifi, vamos utilizar a comunicação GSM para abrir caminho de dados para utilizarmos a nossa API, configurada tidak ada langkah sebelumnya.

É aconselhável a utilização de modulos GSM homologados, mas para os testes do nosso protótipo iremos utilizar um módulo simples e que atende a nossa demanda do momento, o modulo SIM800L. Este modulo foi produzido e distribuído em massa pelo fabricando, mas sem qualquer homologação, tanto que não está disponível no site do fabricando.

Vamos berkaitan dengan físicas, entre o modulo GSM e a nossa Dragonboard 410C.

Como mencionado tidak ada langkah 'Siapkan a Dragonboard', teremos que regular a tensão para utilizar o modulo. Para isso utilizaremos um regulador de tensão mundur, para diminuir a tensão de entrada. Utilizamos o Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este teste

Siga os passos abaixo para realizar sebagai conexões físicas:

  • Conecte a saída positiva da Dragonboard, como ilustrado tidak ada langkah 'Siapkan sua Dragonboard', dan conecte na entrada 'IN +' do regulador de tensão
  • Conecte a saída negativa da Dragonboard, como ilustrado tidak ada langkah 'Siapkan sebuah Dragonboard yang ramah', e conecte na entrada 'IN -' do regulador de tensão
  • PENTING: Ligue a Dragonboard, e regulule com o auxilio de uma chave de fenda, peraturan 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 a tensãoukupada. Este passo deve ser repetido, perkakasan semper que houver inclusão de um, pois pode haver variação.
  • Conecte a saída do regulador de tensão 'OUT +' no pino VCC, indicado na imagem de capa deste langkah
  • Conecte a saída do regulador de tensão 'OUT -' no pino GND, indicado na imagem de capa deste langkah
  • Conecte o pino RXD do modulo GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Conecte o pino TXD do modulo GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Conecte o pino GND do modulo GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. Istilah dan dana untuk estabilizar o tráfego de dados pelo RX TX

OBS: Não se esqueça de conectar uma antena no modulo GSM, pelos pinos NET ou IPX ANT, indicados na imagem de capa deste step.

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

Siga os passos para importar a biblioteca e testar a comunicação com o módulo:

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

import mraa

Defina uma variável para o caminho da UART que conectamos o 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 untuk o modulo GSM

def tulis (msg):

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

Crie um loop para fazer a leitura do modulo GSM

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

  • Selamatkan o arquivo e volte para o konsol
  • Laksanakan o arquivo

python gsm.py

Digite 'AT', e se tudo conectado corretamente, penerima suara dan tela a mensgem 'OK'

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

Primeira função será de conexão:

def connect ():

time.sleep (0.5) write ("AT") time.sleep (0.5) write ('AT + CREG = 1') time.sleep (0.5) tulis ('AT + COPS = 2') masa.sleep (0.5) tulis ('AT + SAPBR = 3, 1, "Contype", "GPRS"') time.sleep (0.5) tulis ('AT + SAPBR = 3, 1, "APN", "*****"') time.sleep (0.5) tulis ('AT + SAPBR = 3, 1, "PENGGUNA", "*****"') time.sleep (0.5) tulis ('AT + SAPBR = 3, 1, "PWD", "*****" ') time.sleep (0.5) write (' AT + SAPBR = 1, 1 ') time.sleep (0.5) tulis (' 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 melaksanakan 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 apo o comando AT_COPS =?
  • Kad Komuniti dan Kekayaan APN estão com asteriscos pois depende de cada operadora do SIM Card, perolehi maklumat rasmi untuk pengendali saber qual o endereço da APN, usuário e senha.
  • Repare que a cada

Agora vamos Implementar a Função Que Irá Enviar Consum a Nossa API:

def send (p, m, d = ""):

tulis ('AT + HTTPINIT') time.sleep (0.5) tulis ('AT + HTTPSSL = 1') time.sleep (0.5) tulis ('AT + HTTPPARA = "CID", 1') time.sleep (0.5) tulis ('AT + HTTPPARA = "URL", "_URL_APP_HEROKU _ /' + p + '"') time.sleep (0.5) tulis ('AT + HTTPPARA = "USERDATA", "Kebenaran: Pembawa ******** ********* / r / n "') time.sleep (0.5) jika m ==' DAPATKAN ': tulis (' AT + HTTPACTION = 0 ') yang lain: tulis (' AT + HTTPPARA = "KANDUNGAN", "application / x-www-form-urlencoded" ') time.sleep (0.5) write (' AT + HTTPDATA = '+ str (len (d)) +', 10000 ') time.sleep (0.5) tulis (str (t)) waktu. Tidur (10) tulis ('AT + HTTPACTION = 1') masa. Tidur (6) tulis ('AT +

Segue algumas observações para estes comandos:

  • Penerima função 3 parametros. '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 untuk GET
  • O comando 'AT + HTTPS' opsional, tidak ada caso da sua api utilizar SSL
  • O argumen 'm' deverá ser enviado no formato querystring (Cth: msg = ola + dragonboard & arg2 = teste &…)
  • O comando 'AT + HTTPPARA = "USERDATA …' opsional, apenas se houver a απαραίτηidade de definir algum header tanpa permintaan

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

Kad SIM Antes de adquirir seu, rujuk kepada operadora trabalha com a mesma tecnologia que o modulo GSM que você estiver utilizando, mas é aconselhável utilizar o SIM Card de empresas especializadas em comunicação IoT, por questões de Compatibilidade, custos e.

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

Langkah 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á fasilitar a comunicação.

Para nos comunicarmos com a nossa Dragonboard 410C, precisamos de 2 bibliotecas:

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

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

  • const char * SSID = "_REDE_DRAGONBOARD_"; // Nome da rede definida como Hotspot na Dragonboard
  • const char * PASSWORD = ""; // Insira o valor da senha se houver definido na configuração do Hotspot
  • const char * BROKER = "_IP_DRAGONBOARD_"; // Laksanakan 'ip a' na sua Dragonboard untuk descobrir o ip da rede interna

Crie o objeto de rede Wi-fi da placa e instancie o client MQTT com este objeto:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Dalam keselesaan, siapkan WIFI dan komunicação MQTT:

  • WiFi.begin (SSID, KATA LALUAN);
  • MQTT.setServer (BROKER, 1883);
  • MQTT.setCallback (callback_mqtt); // Caso você faça melanggan em algum tópico

Tidak ada gelaran yang menyenangkan, adicione a 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 sebagai linhas abaixo, e chame-a na função de loop:

batal checkConnections () {

jika (! MQTT.connected ()) sementara (! MQTT.connected ());

if (WiFi.status ()! = WL_CONNECTED) {WiFi.begin (SSID, PASSWORD); sementara (WiFi.status ()! = WL_CONNECTED);}

}

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

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

Não vou entrar em detalhes para exemplificar a leitura de sensores dsb, pois vai variar muito de projeto para projeto e de hardware para hardware. Basta incluir esta linha onde requá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 dijalankan sebagai linhas abaixo no console da Dragonboard 410C:

  • sudo apt-get install python pip
  • memasang pip 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:

import paho.mqtt.client sebagai mqttimport sys

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

def onConnect (klien, data pengguna, bendera, rc): client.subscribe (TopicSubscribe)

def onMessage (klien, data pengguna, msg): message = str (msg.payload) cetak (mesej)

cuba: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Broker, port, timeout) client.loop_forever () kecuali: sys.exit (0)

Neste arquivo vamos definimos duas funções, '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 melanggan definidos na função 'onConnect.

Laksanakan 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.

Perhatikan que é na função onMessage, que recebemos a informação e exibimos nos seu console. Então é neste ponto que você tratará os 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 سهولتita a troca rapidamente.

Langkah 5: Considerações Finais

Se estiver tudo configurado como descritos nos step anteriores, você já está comunicando o seu dispositivo IoT com o mundo, com auxilio da sua Dragonboard 410C. É importante ressaltar que neste foram yang diarahkan untuk mencionados vários hardwares e softwares, mas apenasãa de fins. Os sensores e outros recursos que serão utilizados no dispositivo externo, todo o preparo e implementação da sua API Cloud, os recursos de hardware ligados à Dragonboard, e também a forma com que os dados são tratados, fica a kritério de quem untuk pelaksana projeto. Final defino como produto final, sugerimos apĺicar sebagai tecnologias e procedureimentosukupados para tal

O uso de apps e aplicações de gestão, para os comerciantes ligados aos serviços, deixamos em aberto também, bastando trabalhar bem a sua API, e a consumerindo através destas frentes.

Disyorkan: