Tabla de contenido:

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

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

Video: Comunicação IoT Com a Dragonboard 410C: 5 pasos
Video: Getting Started - Windows 10 IoT Core + DragonBoard 410c 2024, Noviembre
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 la temperatura de um ambiente, monitoramento de segurança, entre otros 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 condiciones 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ê use servicios como o do seu 'Zé da água', que você semper confiou, será mostrado como montar una base de uma plataforma IoT com a dragonboard, para resolver essa comunicação.

Paso 1: Prepare un Sua Dragonboard 410C

Preparar un Sua Dragonboard 410C
Preparar un 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 a 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 operacional Linaro 17.04.1, caso contrário, veja as opções de na página de Dragonboard 410C da 96boards, neste link.

Após a instalação do seu sistema operacional, instale una biblioteca libmraa para una utilização das GPIOs, da Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para ejecutar os comandos):

Pré requisitos libmraa

  • sudo apt-get update
  • sudo apt-cache search 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 clon
  • sudo mkdir mraa / build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = OFF
  • sudo hacer
  • sudo hacer instalar

Para utilizar una biblioteca com Python, que é o caso deste instructable, vamos a adicionar o exportar la variación de ambiente de Python para una biblioteca. Para isso, utilice o editor de texto de sua preferenciaência para seguir os passos abaixo, vamos a utilizar 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 ingrese para salvar e sair do arquivo.

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

Agora, vamos a 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). No seu console, execute o comando abaixo:

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

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

gpsmon –n

OBS: A antena interna da Drabonboard é para ser utilizada para casos 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 simple para quem não tem familiaridade com procedimentos de soldagem com SMD, portanto, procure um serviço especializado se necessário.

Para realizar el interruptor de las antenas internas para las externas, será necesario seguir los procedimientos que un Qualcomm disponibilizou no documento deste link.

OBS: É muito mais fácil de encontrar os componentes (capacitores, resistores e indutores) na internet do que em loja física. O mesmo para antenas, que sugerimos una compra no site da SmartCore.

Para que nosso gateway no dependa de uma configuração e conexão wifi, com a internet, iremos utilzar um módulo GSM. Os módulos GSM externos, geralmente necesario de una tensión estável e específica, entón vamos a criar uma saída de la alimentación directamente a la entrada de la alimentación del Dragonboard 410C.

En una imagen de capa deste step, se destacan los pontos de seguridad que deverá ser utilizados para una soldadura de dos cabos para una alimentación de módulo GSM (ATENÇÃO COM A POLARIDADE).

Para realizar una comunicación interna, iremos a utilizar el protocolo MQTT, y definir un Dragonboard 410C como hotspot. Vamos a instalar o software Mosquitto para tornar a nossa placa um broker mqtt, com a ejecuçã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 los pasos:

  • Clique no icone de redes no canto inferior direito
  • Haga clic en 'Editar conexiones'
  • Após abre una tela 'Conexiones de red', clique en 'Agregar'
  • Seleccione una opción de Wi-Fi, haga clic en 'Crear'
  • Para abrir una pantalla de configuración de la red, 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'
  • Para finalizar clique em 'Guardar'

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.

Paso 2: Prepare una API Sua Cloud

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

Vamos a descrever um passo a passo para iniciar uma API básica, pelo menos para o teste deste instructable. Caso queira seguir um tutorial mais completo, 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 para colocarmos una API nossa, e para não termos gastos com estes testes, iremos utilizar una plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Acesse o site da Heroku, por este enlace
  • Clique em 'Sign Up', no canto superior dieito, para iniciar o seu registro
  • Após o registro, em sua dashboard, clique em 'New' y opção 'Create New App'
  • Insira um nome para a sua aplicação
  • Em seguida, clique em 'Create App'
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Instale o 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 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 a 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 no esteja utilizando uma distribuição Linux que utiliza o Advanced Packaging Tool (APT), outro sistema operacional, consulte o enlace
  • Agora ejecutar npm install express-generator -g
  • Acesse o diretório que foi realizó os procedimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicie un nodo de aplicación com 'npm init', e os outros comandos abaixo
  • CD../
  • expreso _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm install

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

  • Acesse a pasta 'rutas'
  • abra o 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ê realizar o implementar la aplicación seu para un Heroku:

  • heroku iniciar sesión
  • git add.
  • git commit -am "confirmación inicial"
  • git push heroku master

Com isso você já tem seus endpoints de testes prontos. Para testar los puntos finales sugerimos instalar el software Postman, neste link. Insira una aplicación url da seu (Ej: https://_SEU_APP_.herokuapp.com/) e selecione o método GET ou POST, y clique em 'SEND'. Para o método POST, siga los pasos:

  • Clique na aba 'Cuerpo'
  • Seleccione una opción 'x-www-form-urlencoded
  • Insira o clave 'msg'
  • Em Value, pode inserir qualquer mensagem

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

Paso 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 no dependermos de una conexión Wifi, vamos a utilizar una comunicación GSM para abrir un caminho de datos para utilizar una API nossa, configurada sin paso anterior.

Ésta es la solución a la utilización de módulos GSM homologados, más para los testículos del mismo modo que protótipo iremos a utilizar un módulo simple y que asista a una demanda de momento, o módulo SIM800L. Este módulo foi produzido e distribuído em massa pelo fabricando, mas sem qualquer homologação, tanto que no está disponible no site do fabricando.

Vamos a las conexiones físicas, entre el módulo GSM y el Dragonboard 410C.

Como no mencioné el paso 'Prepare a sua Dragonboard', teremos que regular a tensão para utilizar o modulo. Para isso utilizaremos um regulador de tensão dimitir, 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 como conexiones físicas:

  • Conecte a saída positiva da Dragonboard, como ilustrado no step 'Prepare a sua Dragonboard', e 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
  • IMPORTANTE: Ligue a Dragonboard, e regule com o 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 una tensión adecuada. Este passo deve ser repetido, semper que houver inclusão de um hardware, pois pode haver variação.
  • Conecte un saída do regulador de tensão 'OUT +' no pino VCC, indicado na imagem de capa deste step
  • Conecte un saída do regulador de tensão 'OUT -' no pino GND, indicado na imagem de capa deste step
  • 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 al módulo GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados en imágenes de capa deste paso. 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 ou IPX ANT, indicados na imagem de capa deste step.

Software Agora vamos ao. Vamos a utilizar una biblioteca que instalamos anteriormente, para realizar una comunicación en serie entre el módulo GSM y un Dragonboard 410C.

Siga los pasos para importar una biblioteca y testar una comunicación con el módulo:

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

importar mraa

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

puerto = '/ dev / tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (puerto)

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

def escribir (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 consola
  • Ejecutar 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 no dependa de digitarmos cada comando AT - encontrado neste link - faremos duas funções, uma que irá realizar una conexión con APN e outra que irá consumir a nossa API.

A 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) 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 montó cada comanda antes de utilizar esta función. 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 depend de cada operadora do SIM Card, procure se informar com un operador para saber qual o endereço da APN, usuário e senha.
  • Repare que a cada

Agora vamos a implementar una función que irá enviar consumir una API nossa:

def enviar (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", "Autorización: Portador ******** ********* / r / n "') time.sleep (0.5) if m ==' GET ': write (' AT + HTTPACTION = 0 ') else: write (' AT + HTTPPARA = "CONTENT", "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 +

Segue algumas observações para estes comandos:

  • A função recebe 3 parametros. 'p' para o path que será ejecutado 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 sin formato querystring (Ej: msg = ola + dragonboard & arg2 = teste &…)
  • O comando 'AT + HTTPPARA = "USERDATA …' é opcional, solo se encuentra sin necesidad de definir un encabezado algum sin solicitud

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

Antes de adquirir la tarjeta SIM, consulte 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 IoT, por questões de compatibilidade, custos e praticidade.

Com as configuraciones e implementações acima, estamos prontos para no comunicarmos com un nuvem através da nossa Dragonboard 410C.

Paso 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 a 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 moment em que o hardware for definido como produto, deve ser desenvolvido um complexo dedicado. Este módulo tiene la posibilidad de WiFi, então irá facilitar una comunicación.

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 una comunicação com o broker MQTT

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

  • const char * SSID = "_REDE_DRAGONBOARD_"; // Nombre definido 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_"; // Ejecutar 'ip a' na sua 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);

En función de la configuración, inicie una conexión WIFI y una comunicación MQTT:

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

No 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 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 () {

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

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

}

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

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

Não vou entrar em detalhes para ejemplificar una lectura de sensores e etc, pois vai variar muito de projeto para projeto e de hardware para hardware. Basta incluir esta linha onde necessário, que os dados serão enviados para un seu broker.

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

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

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

importar paho.mqtt.client como mqttimport sys

Agente = "_IP_DRAGONBOARD_" puerto = 1883 tiempo de espera = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect (cliente, datos de usuario, banderas, rc): cliente.subscribe (TopicSubscribe)

def onMessage (cliente, datos de usuario, msg): mensaje = str (msg.payload) print (mensaje)

intente: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Broker, port, timeout) client.loop_forever () excepto: 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á ejecutada quando houver mensagem recebida nos suscribe definido na função 'onConnect'.

Execute o arquivo com 'python mqtt.py', e se todas as conexões anteriores estiverem sido realizado con éxito, você receberá na sua tela os dados que estão sendo enviado pelo seu dispositivo externo, no caso deste exemplo, pelo NODEMCU.

Note 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 moment 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'.

Observación importante: Para realizar una alimentación de la 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.

Paso 5: Consideraciones finales

Se estiver tudo configurado como descrito en los pasos anteriores, você já está comunicando o seu dispositivo IoT com o mundo, com auxilio da sua Dragonboard 410C. É importante ressaltar que neste instructable foram mencionado vários hardwares e softwares, mas solo para fins de ejemplificar a comunicação. 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 critério de quem for execute o projeto. Para definir como producto final, sugerimos apĺicar as tecnologias e procedimentos adequados para tal

Uso de aplicaciones y aplicaciones de gestión, para los comerciantes ligados a los servicios, deixamos em aberto também, bastando trabalhar bem a sua API, y consumindo através destas frentes.

Recomendado: