Inhaltsverzeichnis:

IoT-Com mit Dragonboard 410C kommunizieren - Gunook
IoT-Com mit Dragonboard 410C kommunizieren - Gunook

Video: IoT-Com mit Dragonboard 410C kommunizieren - Gunook

Video: IoT-Com mit Dragonboard 410C kommunizieren - Gunook
Video: Getting Started - Windows 10 IoT Core + DragonBoard 410c 2024, Juli
Anonim
Kommunikation von IoT mit Dragonboard 410C
Kommunikation von IoT mit Dragonboard 410C

É bastante comum desenvolver ou, até mesmo, comprar um produto IoT para a sua casa. Abrir uma cortina, ligar uma tomada, ajustar a temperature de um ambiente, monitoramento de segurança, entre outros benefícios de equimentos 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 und que já está acostumado. O comerciante "zé da água" não tem condições de entrar num grande Marketplace para vender a sua água et tão pouco ter recursos para adquirir e manter um sistema de pedidos.

Para que você use serviços como o do seu 'Zé da água', que você semperconfou, será mostrado como montar a base de uma plataforma IoT com a Dragonboard, para Resolver essa comunicação.

Schritt 1: Bereiten Sie ein Sua Dragonboard 410C. vor

Bereiten Sie ein Sua Dragonboard 410C. vor
Bereiten Sie ein Sua Dragonboard 410C. vor

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

Primeiramente, vamos instalar um sistema operacional na placa. Caso você opte of utilizar localização GPS, que ajudará muito or cliente no momento de registro, sugerimos que instal oder sistema operacional Linaro 17.04.1, caso contrário, veja als opções de na página da Dragonboard 410C von 96.boards, neste link

Installieren Sie Ihr System operacional, installieren Sie eine Biblioteca-Libmraa für die Verwendung von GPIOs, von Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):

Pre requisitos libmraa

  • sudo apt-get update
  • sudo apt-cache suche 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=OFF
  • sudo machen
  • sudo machen installieren

Para utilizar a biblioteca com Python, que é o caso deste instructable, vamos adicionar oder export da nossa variavel de ambiente do Python für eine Biblioteca. Para isso, verwenden Sie o editor de texto de sua prencia 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))
  • Drücken Sie ESC für die Bearbeitung von Texten und Ziffern ':x!' Ich gebe para salvar und sair do arquivo ein.

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

Agora, vamos instalar os softwares para facilitar a leitura do GPS (lembrnado que para a utilização dessa parte, recomendamos o uso do sistema operacional Linaro 17.04.1).

sudo apt-get install gnss-gpsd gpsd gpsd-clients

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

gpsmon – nein

OBS: Eine interne Antenne von 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 minuten, 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 für Wi-Fi, Quanto für GPS.

OBS: A instalação da antena externala não é um procedimento tão simples para quem não tem vertrautidade com procedimentos de soldagem com SMD, portanto, beschaffen um serviço especializado se necessário.

Für die Realisierung oder den Wechsel von Antennen intern für externe, ist es erforderlich, weitere Verfahren zu verwenden, die von Qualcomm bereitgestellt werden, ohne dass ein Dokument zur Verfügung gestellt wird.

OBS: muito mais fácil de encontrar os Componentes (Kondensatoren, Widerstände und Indutoren) im Internet tun que em loja física. O mesmo para antenas, que sugerimos a compra no site da SmartCore.

Para que nosso Gateway, nicht abhängig von der Konfiguration und Verbindung von WLAN, com und Internet, nützt ein GSM-Modul. Os módulos GSM externos, Geräte, die es benötigen, um eine bestimmte Temperatur zu erhöhen und zu spezifizieren.

Ein Bild der Kapa deste Schrittes, ist es, das pontos de saída que deverá ser utilizado für ein Soltagem dos Cabos für eine Alimentação do modulo GSM (ATENÇÃO COM A POLARIDADE) zu verwenden.

Um eine interne Kommunikation zu realisieren, verwenden Sie das MQTT-Protokoll und definieren Sie einen Dragonboard 410C-Como-Hotspot. Vamos instalar o software Mosquitto para tornar a nossa placa umbroker mqtt, com a Execução da linha abaixo no seu console:

sudo apt-get install mosquitto

Com isso o software 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
  • Klicken Sie auf 'Verbindungen bearbeiten'
  • Apos abrir a tela 'Netzwerkverbindungen', klicken Sie auf 'Hinzufügen'
  • Wählen Sie eine WLAN-Option aus, und klicken Sie auf "Erstellen"
  • Ao abrir a tela de configuração da rede, insira um nome em SSID
  • Na mesma tela mude para 'Hotspot' no campo 'Mode'
  • Caso queira incluir uma senha para a rede, configure-a na aba 'Wi-Fi Security'
  • Die letzte Clique von 'Speichern'

Agora qualquer dispositiv pode se conectar oder rede exclusiva von Dragonboard 410C, und verwendet oder seu Broker für öffentliche und Subscrever.

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

Schritt 2: Bereiten Sie eine Sua Cloud API vor

Este passo é algo que depende muito de projeto para projeto. Pode ser que präzise ser feita do zero, ou o cloud já existe com a notidade de crar o 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 für o teste deste anweisbar. Caso queira seguir um Tutorial mais completo, sugiro ver oder artigo deste link. Em todo caso, sugiro desenvolver algo mais estruturado, caso a finalidade do projeto seja comercial.

Primeiramente, Präzisamos für Colocarmos und Nossa API, e Para não gastos com est testes, iremos utilizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Zugriff auf die Site da Heroku, por este link
  • Clique em 'Sign Up', no canto superior dieito, para iniciar o seu registro
  • Registrieren Sie sich, im Dashboard, klicken Sie auf "Neu" und klicken Sie auf "Neue App erstellen".
  • Insira um nome para a sua aplicação
  • Seien Sie sicher, Clique in 'Create App'
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Instale oder Heroku Cli, para fazer os deploys 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 as instruções de deploy para começar or desenvolvimento da sua API, disponível em

Seguindo os passos acima, já temos a Pasta na sua máquina, für Desenvolver und eine sua API. Agora vamos instalar o NodeJS und ein 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), oder outro sistema operacional, konsultieren Sie o Link
  • Agora führe npm aus install express-generator -g
  • Zugriff oder Direktion que foi realizado os procedimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Starten Sie einen Aplicação-Knoten com 'npm init', oder outros comandos abaixo
  • CD../
  • Express _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm installieren

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

  • Zugang zu Pasta-Routen
  • abra oder arquivo 'index.js'
  • Inclua o 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ê realisieren oder implementieren diese App für Heroku:

  • Heroku-Login
  • git hinzufügen.
  • git commit -am "erstes Commit"
  • git push heroku meister

Com isso você já tem seus endpoints de testes prontos. Para testar os Endpunkte sugerimos instalar o Software Postman, neste link. Geben Sie eine URL in die App ein (Beispiel: https://_SEU_APP_.herokuapp.com/) und wählen Sie die Methode GET oder POST aus, und klicken Sie auf 'SEND'. Para o método POST, siga os passos:

  • Clique na aba 'Körper'
  • Wählen Sie eine Option 'x-www-form-urlencoded
  • Insira o Taste 'msg'
  • Em Value, Pode inserir qualquer mensagem

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

Schritt 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

Keine Abhängigkeit von der Verbindung mit Wifi, keine Nutzung von GSM-Verbindungen für die Nutzung von Verbindungen zu einer API-Nutzung, Konfiguration ohne Schritt anterior.

Aconselhável eine Nutzung von Modulen GSM Homologados, mas para os testes tun nosso protótipo iremos utilizar um modulo simples und que atende a nossa demanda do momento, oder modulo SIM800L. Este modulo foi produzido and 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 oder modulo GSM und nossa Dragonboard 410C.

Como mencionado no step 'Vorbereiten eines sua Dragonboard', regelmäßige Teremos und Tensão para utilizar o modulo. Para isso utilizaremos um regulador de tensão step down, 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 as conexões físicas:

  • Conecte a saída positiva da Dragonboard, como ilustrado no step 'Prepare a sua Dragonboard', und conecte na entrada 'IN +' do regulador de tensão
  • Conecte a saída negativa da Dragonboard, como ilustrado no step 'Prepare a sua Dragonboard', e conecte na entrada 'IN -' do regulador de tensão
  • WICHTIG: Ligue a Dragonboard, regule com o auxilio de uma chave de fenda, regel oder 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ão adequada. Este passo deve ser repetido, sempre que houver inclusão de um hardware, pois pode haver variação.
  • Conecte a saída do regulador de tensão 'OUT +' no pino VCC, indicado na imagem de capa dete step
  • Conecte a saída do regulador de tensão 'OUT -' no pino GND, indicado na imagem de capa dete step
  • Conecte oder pino RXD do modulo GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados nas imagens de capa dete step
  • Conecte oder pino TXD do modulo GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados nas imagens de capa dete step
  • Anschluss oder Pino GND tun Modulo GSM kein Pino 1, 2, 39 OU 40 GND von Dragonboard, zeigt die Abbildungen der Capa deste Step an. Isto é fundmental para 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 oder IPX ANT, indicados na imagem de capa dete step.

Agora Vamos ua Software. Vamos utilizar a biblioteca mraa que instalamos ateriormente, para realizar a comunicação serial enter or modulo GSM and a Dragonboard 410C.

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

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

Importieren

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

port = '/dev/tty96B0'

Instanz eines 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 schreiben (msg):

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

Crie um loop para 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
  • Ausführen oder 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 de digitarmos cada comando AT - encontrados neste link - faremos duas funções, uma que irá realizar a conexão com a APN und outra que irá consumir a nossa API.

Eine primaira 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) write('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) write('AT+SAPBR=3, 1, "USER", "*****"') time.sleep(0.5) write('AT+SAPBR=3, 1, "PWD", "*****"') time.sleep(0.5) write('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, besorgen Sie sich einen informar com a Operador für Sabre qual o endereço da APN, usuário e senha.
  • Repariere que a cada

Agora vamos implementieren eine Função que irá enviar consumir a nossa API:

def 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", "Berechtigung: Inhaber ******** *********\r\n"') time.sleep(0.5)if m == 'GET': write('AT+HTTPACTION=0')else: write('AT+HTTPPARA ="INHALT", "application/x-www-form-urlencoded"') time.sleep(0.5) write('AT+HTTPDATA='+str(len(d))+', 10000') time.sleep(0.5) write(str(t)) time.sleep(10) write('AT+HTTPACTION=1') time.sleep(6)write('AT+HTTPTERM')

Segue algumas observações para estes comandos:

  • Ein função recebe 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 for GET
  • O comando 'AT+HTTPS' é opcional, no caso da sua api utilizar SSL
  • O argumento 'm' deverá ser enviado no format querystring (Bsp: msg=ola+dragonboard&arg2=teste&…)
  • O-Kommando 'AT+HTTPPARA="USERDATA…' é opcional, apenas se houver a necessidade de definir algum header no request

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

Antes de adquirir seu SIM Card, consule se a 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 IoTe de comunicatão de IoT.

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

Schritt 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 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 globalis, als 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* PASSWORT = ""; // Insira o valor da senha se houver definido na configuração do Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // 'ip a' na sua ausführen Dragonboard para 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);

Zur Einrichtungsfunktion, zur Verbindung mit WIFI und zur MQTT-Kommunikation:

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

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

MQTT.loop();

Você pode criar uma funçã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(){

if (!MQTT.connected())while (!MQTT.connected());

if (WiFi.status() != WL_CONNECTED){WiFi.begin(SSID, PASSWORD); while (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");

Es enthält keine Details für beispielhafte Sensoren und usw., verschiedene Varianten von Projekten für Projekte und Hardware für Hardware. Basta incluir esta linha onde necessário, que os dados serão enviados für einen Seu-Broker.

Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, para checarmos os dados recebidos pelo makler, 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 installiere python pip
  • pip install 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 als mqttimport sys

Broker = "_IP_DRAGONBOARD_" Port = 1883 Timeout = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect(client, userdata, flags, rc): client.subscribe(TopicSubscribe)

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

try: client = mqtt. Client() client.on_connect = onConnect client.on_message = onMessage client.connect(Broker, Port, Timeout) client.loop_forever() außer: 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, and a função 'onMessage' que será Executada quando houver mensagem recebida nosConnect abonniert definidos na funç.

Execute 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 des externaleo NODEM ca.

Hinweis 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 cramos no passo 'Instalando' oder manipuland

Uma observação Importante: Para Realizar a Alimentação da place. 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.

Schritt 5: Rücksichtnahme auf 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. Os sensores e outros recursos que serão utilizados no dispositivo externalo, 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 critério de executar. Para definir como produto final, sugerimos apĺicar as tecnologias e procedimentos adequados 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 consumindo através detas frentes.

Empfohlen: