Taula de continguts:

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

Vídeo: Comunicação IoT Com a Dragonboard 410C: 5 passos

Vídeo: Comunicação IoT Com a Dragonboard 410C: 5 passos
Vídeo: Getting Started - Windows 10 IoT Core + DragonBoard 410c 2024, De novembre
Anonim
Comunicação IoT Com a Dragonboard 410C
Comunicação IoT Com a Dragonboard 410C

És bastant com desenvolupar o, fins i tot, comprar un producte IoT per a la seva casa. Abrir uma cortina, ligar uma tomada, ajustar a temperatura de ambiente, monitoramiento de seguridad, entre otros beneficiosos de equipamentos IoT.

Agora, seria interessant 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 conditionsções de entrar num grande marketplace para vender a sua água e tão little ter recursos for adquirir e manter um sistema de pedidos.

Para que você use serviços com o do seu 'Zé da água', que você sempre confiou, serà mostrat com a base de la seva plataforma IoT com a dragonboard, per resoldre aquesta comunitat.

Pas 1: prepareu un Sua Dragonboard 410C

Prepareu un Sua Dragonboard 410C
Prepareu un Sua Dragonboard 410C

Neste passo vamos prepara a nossa Drabonboard 410C per a tornar o gateway da nostra estrutura IoT dins de la seva casa.

Primerament, vamos instalar um sistema operacional na placa. Caso vocé opte by use localização GPS, que ajudará muito o cliente no moment de registro, sugerimos que instale o sistema operacional Linaro 17.04.1, caso contrário, veja as opções de na page da Dragonboard 410C da 96boards, neste link.

Após a instal·lació del seu sistema operacional, instale a biblioteca biblioteca per a una utilització de GPIOs, da Dragonboard 410C. Per a això, s'ha de seguir els passos abaixo (abra o console do seu sistema operacional per executar els comandos):

Pré requisits 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

  • clon sudo git
  • sudo mkdir mraa / build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = OFF
  • sudo make
  • sudo make install

Per utilitzar una biblioteca amb Python, que és o cas d’aquest tipus d’instrucció, podem afegir o exportar la nostra variable d’ambient de Python per a una biblioteca. Per a això, utilitza o editor de text de la seva preferència per seguir els passos abaixo, vamos utilziar o VIM:

  • sudo vim ~ /.bashrc
  • pressió a teclar i, per iniciar una edició de l'arxiu
  • afegir una línia següent sense finalitzar l'arxiu: export PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find / usr / local -name mraa.py))
  • pressione ESC para sair da edição do arquivo e digite ': x!' e enter per salvar e sair do arquivo.

Com també és possible aconseguir una biblioteca amb Pyhton.

Agora, vamos instalar os softwares para facilitar leitura do GPS (lembrnado que para a utilização dessa parte, recomendamos o uso del sistema operacional Linaro 17.04.1). No seu console, execute o comando abaixo:

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

Per testar, executar o codi abaix, també no en la seva consola:

gpsmon –n

OBS: A antena interna da Drabonboard és per ser utilitzat fora de casos i en llocs més oberts. Até even em locais abertos, a leitura can demorar de 5 a 10 minutos, então não fique preocupado se não exibir as informações prontamente.

Pensant no projectat, amb certesa irem encapsular o (s) hardware (s) num case, e no menor dos cenários, this case will estar inside de uma casa ou apartamento. Per resoldre, podem utilitzar antenes externes, tant per wi-fi, quant per GPS.

OBS: A installationção da antena externa não é um procedimento tão simples for quem não tem familiaridade with procedimentos de soldagem with SMD, portanto, procure um serviço specialized se necessário.

Per realitzar o canviar les antenes internes per a externes, serà necessari seguir els procediments que a Qualcomm disponible no hi ha cap document d’aquest enllaç.

OBS: És més fàcil trobar components (capacitors, resistors i indutores) en internet que em lliga física. O mateix per a antenes, que sugerim a la compra en cap lloc de SmartCore.

Per a què ens pugui passar una passarel·la no depenent de la configuració i connexió wifi, com a internet, us farem servir un mòdul GSM. Os módulos GSM externos, generalmente necesario de uma tensão estável e específica, então vamos criar uma saída de alimentação diretamente da entrada de alimentación 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 para a alimentación do modulo GSM (ATENÇÃO COM A POLARIDADE).

Per realitzar una comunicació interna, utilitzar un protocol MQTT, definir un Dragonboard 410C com a punt d'accés. Vamos instalar o software Mosquitto para tornar a la nostra placa um broker mqtt, com a una execució da linha abaixo no seu console:

sudo apt-get install mosquitto

Com isso o software ja estarà instal·lat i actiu.

Per definir la seva Dragonboard 410C com a punt d'accés, segueix els passos:

  • Clique no icone de redes no canto inferior direito
  • Feu clic a Edita connexions
  • Podeu obrir una tela "Connexions de xarxa", feu clic a "Afegeix"
  • Seleccioneu l'opció Wi-Fi i feu clic a "Crea"
  • Al obrir una tela de configuració da rede, insira um nom en SSID
  • Na mateixa tela mude for 'Hotspot' no campo 'Mode'
  • Caso queira inclou un fitxer per configurar, configurar una seguretat Wi-Fi
  • Per finalitzar la camarilla "Desa"

Agora qualquer device can connectar to red exclusiva from Dragonboard 410C, i utilitzar el seu broker per publicar i subscriure.

Com aquests preparats acima, estem prontos per seguir amb el desenvolupament.

Pas 2: prepareu una API Sua Cloud

Aquest pas és quelcom que depengui del projecte per al projecte. Podeu ser que precisament us feu zero, o el núvol ja existeix com a necessitat de criar o mecanisme d'API, o fins i tot us hauríeu d'utilitzar API.

Descarregem un pas a pas per iniciar la vostra API bàsica, menys per testar-lo. Caso queira seguirá un tutorial más completo, sugiro ver o artículo deste enlace. En tot cas, es pot desenvolupar alguna cosa més estruturat, en cas de finalització del projecte comercial.

Primerament, precisem un lloc per col·locar-nos a la nostra API, i per a no pagar-los amb aquests testes, utilitzarem una plataforma Heroku. Siga els passos per iniciar la seva aplicació:

  • Accediu al lloc de Heroku, per aquest enllaç
  • Feu clic a 'Sign Up', sense un cant superior, per iniciar o registrar
  • Apunteu-vos al registre, al seu tauler, feu clic a "Nova" i escolliu l'opció "Crea una aplicació nova"
  • Insira um nom per a la seva aplicació
  • Segueix, feu clic a "Crea aplicació"
  • Seu app està aviat, podent veure el seu funcionament fent clic a 'Open App', sense cant superior
  • Instale o Heroku Cli, per fazer os deploys per a la seva aplicació, seguint un instrument per al seu sistema operacional, d'acord amb un document d'aquest enllaç
  • Agora você deverá seguir as instruções deploy for começar o development from his API, disponível em

Seguint els passos acima, ja tenim una pasta en la seva màquina, per desenvolupar la seva API. Ara vamos instalar o NodeJS e a framework Express, seguint els 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
  • Cas no usant la vostra distribució Linux que utilitzeu Advanced Packaging Tool (APT), o un altre sistema operatiu, consulteu o enllaceu
  • Agora executa npm install express-generator -g
  • Acesse o diretório que foi realized os procedimentos da applicationção da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicie a aplicação node com 'npm init', e altres comandos abaixo
  • cd../
  • expressar _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • Instal·lació de npm

Per deixar-los endpoints preparats, amb GET i amb POST, seguint el pas abaixo:

  • Accedir a "rutes" de pasta
  • abra o arquivo 'index.js'
  • Inclua o trecho de código abaixo, que irá addicionar as rotas na raiz da la seva aplicació per a dos metis (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 = 'buit'; 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ê realitza o desplega la seva aplicació per a Heroku:

  • inici de sessió d’heroku
  • git add.
  • git commit -am "commit inicial"
  • git push heroku master

Com isso você já tem seus endpoints de testes prontos. Per testar els endpoints, s’instal·larà el programari Postman, en aquest enllaç. Insira a url da your app (Ex: https://_SEU_APP_.herokuapp.com/) i selecciona el mètode GET o POST, i cliqueu-hi 'SEND'. Per al mètode POST, segueix els passos:

  • Clique na aba 'Body'
  • Seleccioneu una opció 'x-www-form-urlencoded
  • Insira o key 'msg'
  • Em Value, podeu inserir qualquer mensagem

Com esses instruções tenim a la nostra API de testes pronta per a ús.

Pas 3: Instal·lació i manipulació del mòdul GSM

Instal·lant i manipulant o mòdul GSM
Instal·lant i manipulant o mòdul GSM
Instal·lant i manipulant o mòdul GSM
Instal·lant i manipulant o mòdul GSM

Per a no dependències d'uma connexió Wifi, vamos utilitzar una comunicação GSM per obrir caminho de dados para usararmos a una nostra API, configurada sense pas anterior.

S'aconsellà a la utilització de mòduls GSM homologats, però per als testes que ens fan protegir-nos, utilitzarem mòduls simples i que assistim a la nostra demanda del moment, o mòdul SIM800L. Aquest mòdul ha estat produït i distribuït en massa de pèl fabricant, però sempre es pot homologar, tant que no està disponible a cap lloc fabricant.

Vam a connexions físiques, entre o mòdul GSM i a la nostra Dragonboard 410C.

Com es mencionat no pas 'Prepare a sua Dragonboard', hem de tenir regularment una tensió per utilitzar o mòdul. Per utilitzar també un regulador de tensió step down, per disminuir a la tensió d’entrada. Utilitzadors o regulador de tensió Stepdown Buck Conversor Dc Lm2596 3a Nf, per a aquest test

Siga os passos abaixo per realitzar com a connexions físiques:

  • Conecte a saída positiva da Dragonboard, com il·lustrat no step 'Prepare a sua Dragonboard', e conecte na entrada 'IN +' do regulador de tensão
  • Conecte a saída negativa da Dragonboard, com il·lustrat 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 adiant apenas se a saída estiver com esse valor. Cas seja utilitzat un altre mòdul GSM, veritable a tensão adequada. Aquest pas s'ha de repetir, sempre que s'inclou un hardware, per què pot haver-hi variació.
  • Conecte a saída do regulador de tensão 'OUT +' no pino VCC, indicado na imagem de capa deste step
  • Conecte a 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, ambdós indicats en imatges de capa d’aquest pas
  • Conecte o pino TXD do modulo GSM no pino 7 UART 0 RX da Dragonboard, ambdós indicats en imatges de capa d’aquest pas
  • Conecte o pino GND do modulo GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambdós indicats en les imatges de la capa d’aquest pas. Això és fonamental per estabilitzar o tráfego de dados pelo RX TX

OBS: Não se esqueça de conectar uma antena no modulo GSM, pelos pinos NET o IPX ANT, indicats en imatge de capa d’aquest pas.

Agora vamos ao software. Vam utilitzar una biblioteca mraa que instal·lem anteriorment, per realitzar una comunicació serial entre o mòdul GSM i 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, com a suggeriment 'gsm.py'
  • No arquivo, inicie importando a biblioteca mrra, i també a biblioteca time per definir retards

importar 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 per enviar per a l'ordre AT per al mòdul GSM

def write (msg):

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

Crie um loop per fer una leitura del mòdul GSM

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

  • Salve o arquivo e volte per a consola
  • Execute o arquivo

python gsm.py

Digite 'AT', està totalment connectat correctament, es veu receber na tela a mensgem 'OK'

Para que nosso módulo no dependa de digitarmos cada comando AT - encontrados en este enlace - faremos dos funciones, uma que irá realizando una conexión con APN y otra que irá consumir a nuestra API.

Una primera funció serà de connexió:

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, "USUARI", "*****"') 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 abans d’utilitzar aquesta funció. Seguiu algunes observacions sobre aquests comandaments:

  • Per definir corretament o valor del comandament AT + COPS, que serveix per seleccionar a la seva redacció, primer executar AT + COPS = ?, aguarde que apareix com a redistribució disponible, i alt o valor en funció connectar () per a l’indexador de la seva redacció 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 for saber qual o endereço da APN, usuari i senha.
  • Repare que a cada

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

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

Seguiu algunes observacions per aquests comandaments:

  • A função recebe 3 parametros. 'p' per al camí que serà executat per la seva API, 'm' per al mètode que us faré servir des de la seva api (GET / POST / …), i 'per als vostres enviats en cas de mètode no per a GET
  • El comandament 'AT + HTTPS' és opcional, sense cap cas per la seva aplicació SSL
  • O argumento 'm' deverá ser enviado no format querystring (Ex: msg = ola + dragonboard & arg2 = teste & …)
  • O comando 'AT + HTTPPARA = "USERDATA …' és opcional, es pot comprovar la necessitat de definir cap capçalera sense cap sol·licitud

Més uma vegada sugiro rodar cada comandament, individualment i em ordem, abans de fer servir.

Antes de adquirir la seva SIM Card, es consulta una operadora treballant amb la mateixa tecnologia que o mòdul GSM que es fa servir, però és més fàcil d’utilitzar o SIM Card d’empreses especialitzades en comunicação IoT, per preguntes de compatibilitat, custòdies i pràctica.

Com a configuracions i implementacions acima, estem prontos per a comunicar-nos amb un nou através de la nostra Dragonboard 410C.

Step 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

En aquest pas, utilitzarem una placa de prototipatge NODEMCU ESP8266 ESP-12, com a exemple. Aquesta e qualquer altra placa de prototipagem, com o nom já diz, é ótima para protótipos, mas no moment em que o hardware for definido as produto, deve ser desenvolvido um complexo dedicado. Aquest mòdul pot tenir WiFi, tot això permet facilitar la comunicació.

Per comunicar-nos amb la nostra Dragonboard 410C, precisem 2 biblioteques:

  • ESP8266WiFi> biblioteca per ativar a conexão da placa
  • PubSubClient> biblioteca per realitzar una comunicació amb el broker MQTT

Definiu com a varietats globals, com a definicions de red Wi-fi i broker, ambdues de Dragonboard 410C:

  • const char * SSID = "_REDE_DRAGONBOARD_"; // Nom de redefinició com a punt d'accés a Dragonboard
  • const char * PASSWORD = ""; // Insira o valor da senha se houver definido na configuração do Hotspot
  • const char * BROKER = "_IP_DRAGONBOARD_"; // Execute 'ip a' na sua Dragonboard per descobrir o ip da rede interna

Crie o objecte de rede Wi-fi da placa e instancie o client MQTT com aquest objecte:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Funcionament de configuració, inici de connexió WIFI i de comunicació MQTT:

  • WiFi.begin (SSID, CONTRASENYA);
  • 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 funció de verificació de connexió de WIFI e do broker, per a problemes amb 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 ()) mentre que (! MQTT.connected ());

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

}

Finalment, enviarem un gran nombre per a Drabonboard 410C, amb el següent comandament:

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

No voleu entrar en detalls per exemplificar una leitura de sensors e etc, pois vaig a variar el projecte de projecte per a hardware i hardware. Basta incluir esta linha onde necessário, que os dados serão enviados per al seu broker.

Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, para checarmos os dados recebidos pelo broker, mas abans, vamos instalar la biblioteca que nos auxiliará en conexión do broker. Per a això també s'executa com a linha abaixo sense consola de Dragonboard 410C:

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

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

importeu paho.mqtt.client com a mqttimport sys

Broker = "_IP_DRAGONBOARD_" port = 1883 temps d'espera = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect (client, dades d'usuari, senyaladors, rc): client.subscribe (TopicSubscribe)

def onMessage (client, dades d'usuari, msg): message = str (msg.payload) print (missatge)

try: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (corredor, port, temps d'espera) client.loop_forever () excepte: sys.exit (0)

Neste arquivo vamos definimos duas funções, a 'onConnect' que serà chamada no moment em que houver conexão com o broker, e a função 'onMessage' que serà executat quan houver mensagem recebida nos subscrit definidos na função 'onConnect'.

Execute o arquivo com 'python mqtt.py', e se all as conexões anteriors estiverem been realized com sucesso, você receberá na sua tela os dados que estão sendo enviado pelo su dispositivo externo, no caso deste ejemplo, pelo NODEMCU.

Note that is na função onMessage, that recebemos a information i exibimos nos your console. Então é neste punt que você tractará os dados recebidos e no moment certain, enviarà via GSM per a la seva API, pela função 'send' do seu arquivo de teste gsm.py, que criamos no passo 'Instal·lant i manipulant o mòdul GSM'.

Uma observació important: Per realitzar una alimentació de la placa NODEMCU ESP8266 ESP-12, específicament, suggerir que consulti o document d’aquest enllaç. Muito cuidado neste momento, pois uma simples falha d'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.

Pas 5: Considerações Finais

Es troba tot configurat com a descrits en passos anteriors, ja està comunicant o el seu dispositiu IoT amb el món, com a auxiliar de la seva Dragonboard 410C. É important ressaltar que en aquest moment es poden fer mencions relacionats amb programes i programes, fins i tot amb fins d’exemplificar a comunicação.. Os sensores e otros recursos que serão utilizados no dispositivo externo, todo o preparo e implementação da sua API Cloud, os recursos de hardware ligados à Dragonboard, i també a una forma com que els darrers dies tractats, tenen un crit de quem per executar o projectar. Per definir com a producte final, els sugerims s'apicaran com a tecnologies i procediments adequats per tal

O uso de apps e aplicações de gestão, per a comerciants lligats als serveis, deixem em obert també, bastant treballant bem a la seva API, i a consumint através destes frentes.

Recomanat: