Cuprins:

Comunicație IoT Com a Dragonboard 410C: 5 pași
Comunicație IoT Com a Dragonboard 410C: 5 pași

Video: Comunicație IoT Com a Dragonboard 410C: 5 pași

Video: Comunicație IoT Com a Dragonboard 410C: 5 pași
Video: Streamlined provisioning of IoT devices; creating a reliable management platform - Domotz 2024, Iulie
Anonim
Comunicație IoT Com a Dragonboard 410C
Comunicație IoT Com a Dragonboard 410C

É bastante comum developer ou, até mesmo, buy um produto IoT pentru a sua casa. Abrir uma cortina, ligar uma tomada, ajustar a temperaturii de mediu, monitorizare de siguranță, între alți beneficii de echipamente IoT.

Agora, seria interesantă transformă eses alertas das "coisas" da sua casa, em solicitações de serviço, e ainda melhor, em serviços care vocea conhece e că já está acostumado. O comerciante "zé da água" não tem conditionsções de entrar num grande marketplace for vender a sua água e tão little ter resources for acquirer and keep um sistema de pedidos.

Pentru a cărei voci folosiți serviciile ca o do 'Zé da água', că vocea dvs. întotdeauna confiou, va fi mostrat ca să montați o bază de uma platformă IoT cu un dragonboard, pentru rezolvarea acestei comunicații.

Pasul 1: Pregătiți un Sua Dragonboard 410C

Pregătiți un Sua Dragonboard 410C
Pregătiți 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 instalar um system operational na placa. Caso você opte by use localização GPS, that ajudará muito o client no moment of registre, sugerimos that instale or system operational Linaro 17.04.1, case contrário, veja as opções de pe pagina din Dragonboard 410C da 96boards, neste link.

Após a instalação do your system operational, instale a biblioteca libmraa for a useção das GPIOs, da Dragonboard 410C. Para isso, você deve follow os passos abaixo (abra o console do your operational system for executar os commandos):

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

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

Pentru a utiliza o bibliotecă cu Python, care este un caz în acest fel instructiv, vom adăuga sau exporta de la noi variabile de mediu la Python pentru bibliotecă. Pentru acest lucru, utilizați editorul de text al preferinței sale pentru a urma os aboixo, vamos utilziar sau VIM:

  • sudo vim ~ /.bashrc
  • presiune a teclar i, pentru a începe o ediție a arhivului
  • adăugați linia următoare nu finalizați arhiva: export PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find / usr / local -name mraa.py))
  • pressione ESC para sair da edição do arquivo e digite ': x!' e enter pentru salvar e sair do arquivo.

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

Agora, vamos installar os softwares para facilitar a leitura do GPS (lembrnado that for a useção dessa parte, recomandamos o uso do sistema operational Linaro 17.04.1). No seu console, execute or command abaixo:

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

Pentru a testa, executa codul abaixo, de asemenea, nu consola ta:

gpsmon –n

OBS: A antena interna da Drabonboard este pentru a fi folosită pentru cazuri și în locații mai multe. Até mesmo em locais abertos, a leitura can demorar de 5 a 10 minutes, 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 will inside in uma casa ou apartamento. Pentru rezolvare, putem utiliza antene externe, atât pentru Wi-Fi, cât și pentru GPS.

OBS: A instalaçã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 specializat se necessário.

Pentru a realiza o schimbare a antenelor interne pentru externe, va fi necesar să urmeze procedurile pe care Qualcomm le-a disponibilizat în acest document.

OBS: É muito mais fácil de find os components (capacitores, resistores and indutores) pe internet do that em loja física. O chiar pentru antene, pe care le sugerăm să cumpărăm pe site-ul SmartCore.

Pentru că nu avem un gateway care să nu depindă de configurarea și conexiunea wifi, cu internet, folosim un modul GSM. Os módulos GSM externos, general necesitam de uma tensão estável e specific, 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 that deverá ser used for a soldagem dos cabos for a alimentação do modulo GSM (ATENÇÃO COM A POLARIDADE).

Pentru realizarea unei comunicații internaționale, trebuie să utilizăm protocolul MQTT, și să definim un Dragonboard 410C ca hotspot. Vamos instalar o software Mosquitto for tornar a nossa placa um broker 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.

Pentru a defini la Dragonboard 410C ca un hotspot, la care se pasează:

  • Clique no icone de redes no canto inferior direito
  • Faceți clic pe „Editați conexiunile”
  • Apăsați pentru a deschide o pânză „Conexiuni de rețea”, faceți clic pe „Adăugați”
  • Selectați o opțiune Wi-fi, și faceți clic pe „Creați”
  • Pentru a deschide o țesătură de configurare da rede, insirați un nume în SSID
  • Na aceeași țesătură pentru 'Hotspot' no campo 'Mode'
  • Caso queira include un mesaj pentru a configura, configura-a na 'Wi-fi Security'
  • Pentru a finaliza clica în 'Salvare'

Agora qualquer device can you connectar to rede exclusive from Dragonboard 410C, and use your broker for publicar and subscrever.

Cu aceste pregătiri acima, suntem prontos pentru a continua cu dezvoltarea.

Pasul 2: Pregătiți un API Sua Cloud

Acest pas este ceva ce depinde muito de proiect pentru proiect. Pode ser que precise ser feita do zero, ou o cloud já existe com a necesitate de criar o mecanism de API, sau até chiar já ter uma API pronta for use.

Vamos descrever um passo to step for initiate uma API basic, hair less for o teste deste instructable. Caso queira seguir um tutorial mais complet, sugiro ver o article deste link. În orice caz, sugiro dezvolta ceva mai mult extrudat, caz în care finalizează proiectul seja comercială.

În primul rând, trebuie să avem un loc pentru plasarea noii API, și pentru termenii cheltuieli cu aceste teste, folosind o platformă Heroku. Siga os passos for initiate a sua aplicação:

  • Accesați site-ul Heroku, prin acest link
  • Faceți clic pe 'Sign Up', fără cântec superior, pentru a începe sau a vă înregistra
  • Apelați la registru, în tabloul de bord, faceți clic pe „Nou” și selectați opțiunea „Creați o aplicație nouă”
  • Insira um nume pentru a aplica
  • Urmăriți, faceți clic pe „Creați aplicație”
  • Seu app está pronto, podendo your functioning clickando em 'Open App', fără un cânt superior superior
  • Instale o Heroku Cli, pentru fazer os deploys pentru a aplica aplicația, urmând un instrument pentru sistemul său operațional, de acord cu un document de acest link
  • Agora você deverá follow as instruções deploy for começar or development from sua API, disponível em

Seguindo os passos acima, já temos a pasta na sua machine, for develop a sua API. Agora vamos instalar o NodeJS e a framework Express, urmând 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 folosind o distribuție Linux care utilizează Advanced Advanced Tool (APT), sau alt sistem operațional, consultat sau link
  • Agora execută npm install express-generator -g
  • Acesse o diretório that foi 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../
  • exprimă _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • instalare npm

Pentru a lăsa dois endpoints pregătite, um de GET și um de POST, siga os passo abaixo:

  • Acese a "trasee" pentru paste
  • abra o arquivo 'index.js'
  • Inclua o trecho de código abaixo, care va adăuga 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'}, nul, 3));}); router.post ('/', function (req, res, next) {var msg = 'goal'; 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ê realizează sau implementează aplicația pentru Heroku:

  • autentificare heroku
  • git add.
  • git commit -am "commit inițial"
  • git push heroku master

Com isso você já tem its endpoints of testes prontos. Pentru testarea endpoint-urilor, sugerăm instalarea software-ului Postman, în acest link. Introduceți o adresă URL a aplicației dvs. (Ex: https://_SEU_APP_.herokuapp.com/) și selectați metoda GET sau POST, și faceți clic pe 'SEND'. Pentru o metodă POST, siga os passos:

  • Faceți clic pe „Corp”
  • Selectați o opțiune 'x-www-form-urlencoded
  • Insira o cheie 'msg'
  • În valoare, puteți introduce calificativul mensaj

Com essas instruções temos a nossa API de teste pronta pentru o utilizare.

Pasul 3: Instalarea și manipularea modulului GSM

Instalarea și manipularea modulului GSM
Instalarea și manipularea modulului GSM
Instalarea și manipularea modulului GSM
Instalarea și manipularea modulului GSM

Pentru noi dependențe de uma conexiune Wifi, folosim o comunicație GSM pentru a deschide caminho de date pentru utilizarea armamentului la o nouă API, configurată fără step anterior.

E aconselhável a use of module GSM omologados, mas for os testes do nosso protótipo iremos use um módulo simples e that atende to nossa demand do moment, o modulo SIM800L. Acest modul a fost produs și distribuit în masă de păr fabricând, dar sem calificând omologarea, așa că nu există disponibil pe site-ul fabricării.

Vamos às conexões físicas, entre o modulo GSM și a noii Dragonboard 410C.

Așa cum nu am menționat nici un pas 'Prepare a sua Dragonboard', avem nevoie de o tensiune regulată pentru utilizarea sau modulul. Pentru a utiliza astfel un regulator de tensiune step down, pentru a reduce tensiunea de intrare. Utilizator sau Regulator de tensiune Stepdown Buck Conversor Dc Lm2596 3a Nf, pentru acest test

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

  • Conectați-vă la o poziție pozitivă de Dragonboard, cum este ilustrat în pasul 'Prepare a sua Dragonboard', și conectați-vă la intrarea 'IN +' do regulator de tensão
  • Conectează-te la negativă de Dragonboard, ca ilustrat la pasul 'Prepare a sua Dragonboard', și conectează la intrare '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 a folosit un alt modul GSM, adevărat la tensiune adecvată. Acest pas trebuie să fie repetat, întotdeauna pe care îl includem de un hardware, poate să avem variație.
  • Conectați-vă la regulatorul de tensiune 'OUT +' no pino VCC, indicat cu imaginea capului acestui pas
  • Conectați-vă la regulatorul de tensiune 'OUT -' no pino GND, indicat cu imaginea capului acestui pas
  • Conectează-te la RXD cu modulul GSM fără pino 5 UART 0 TX de la Dragonboard, ambele indicate în imagini de acest nivel
  • Conectați-vă pino TXD cu modul GSM nu pino 7 UART 0 RX de la Dragonboard, ambele indicate în imagini de acest nivel
  • Conectați-vă GND-ul modulului GSM nu pino 1, 2, 39 OU 40 GND-ul Dragonboard, ambele indicate sunt imagini de capătul acestui pas. Acest lucru este fondamental pentru a stabiliza sau 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.

Agora vamos ao software. Vamos use a biblioteca mraa that installamos anteriormente, pentru realizarea unei comunicații serial între modulul GSM și a Dragonboard 410C.

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

  • Crie um arquivo com a extensão.py, as sugestão 'gsm.py'
  • No arquivo, inicie importando a biblioteca mrra, și prea la biblioteca time pentru definir întârzieri

import mraa

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

port = '/ dev / tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (port)

Crie uma funcție pentru a trimite pentru comandă AT pentru modul GSM

scriere def (msg):

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

Crie um loop para fazer a leitura do modulo GSM

în timp ce 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 pentru o consolă
  • Execute o arquivo

python gsm.py

Digite 'AT', este conectat corect, vocea este receber na tela a mensgem 'OK'

Pentru că ne-am módul nu depinde de cifre fiecare comandă AT - găsite în acest link - farem două funcții, uma care să realizeze o conexiune cu APN și o altă că să consumăm o API nossa noastră.

O primă funcție va fi de conexiune:

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 înainte de a folosi această funcție. Urmăriți câteva observații asupra acestor comenzi:

  • Pentru definirea corectă a valorii de comandă AT + COPS, care serve pentru selecționarea sa sua rede, primul execute AT + COPS = ?, aguarde care apare ca redistribuie, și altul sau valoarea națională conectează () pentru o indexator da sua rede exibida após o comanda AT_COPS =?
  • Os commandos de definição da APN este com asteriscos pois depende de cada operadora do SIM Card, procure se informar com a operador for saber qual o endereço da APN, usuário e senha.
  • Repare que a cada

Acum vom implementa o funcție care va trimite consumul unei API-uri noi:

trimitere 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", "Autorizare: purtător ******** ********* / 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 +

Urmăriți câteva observații pentru aceste comenzi:

  • A função recebe 3 parametri. 'p' pentru o cale care va fi executat de la API-ul său, 'm' pentru o metodă care trebuie să utilizeze aplicația sa (GET / POST / …), e 'd' pentru a fi trimis în caz de metodă pentru GET
  • Comanda 'AT + HTTPS' este opțională, fără caz de utilizare SSL
  • O argumentare 'm' deveră nu este trimisă în format querystring (Ex: msg = ola + dragonboard & arg2 = teste & …)
  • Comanda 'AT + HTTPPARA = "USERDATA …' este opțională, se deschide o necesitate de a defini un antet fără cerere

Mais uma vez sugiro rodar each command, individualmente e em ordem, before da utilação.

Antes de acquir seu SIM Card, consultate a operadora work with a same technology that o modulo GSM that você estiver using, mas é aconselhável use o SIM Card de firme specializate în comunicație IoT, prin căutări de compatibilitate, custodii și practică.

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

Step 4: Preparando Dispositivos Para Se Comunicar Com a Dragonboard

Pregătind Dispozitive Pentru Se Comunică Com a Dragonboard
Pregătind Dispozitive Pentru Se Comunică Com a Dragonboard

În acest pas, vom folosi o placă de prototipagem NODEMCU ESP8266 ESP-12, ca exemplu. Esta e qualquer altă placa de prototipagem, cum o nume já diz, é ótima para protótipos, mas no moment em că o hardware for definido as produto, trebuie să fie dezvoltat um complex dedicat. Acest módulo poate avea WiFi, pentru a facilita comunicarea.

Pentru a ne comunica cu noile Dragonboard 410C, avem 2 biblioteci:

  • ESP8266WiFi> biblioteca pentru ativar la conexiunea da placa
  • PubSubClient> biblioteca pentru realizarea unei comunicații cu brokerul MQTT

Definiți-vă ca diverse globuri, ca definiții de redare Wi-fi și de broker, ambele din Dragonboard 410C:

  • const char * SSID = "_REDE_DRAGONBOARD_"; // Nume da redefinit ca Hotspot pe 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 para descobrir o ip da rede interna

Crie o object de rede Wi-fi da placa e instancie o client MQTT com this object:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Funcția de configurare, începe conexiunea WIFI și comunicația MQTT:

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

No sua funcție de buclă, adăugând o linie abaixo pentru ca o MQTT să intre în buclă:

MQTT.loop ();

Você pode criar uma função de verificación de conexión de WIFI e do broker, pentru probleme teroriste cu intermitența. Pentru a fi crie um funcționare com as linhas abaixo, e chame-a na funcționare de buclă:

void checkConnections () {

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

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

}

În cele din urmă, vom trimite un număr mare pentru Drabonboard 410C, cu următorul comandă:

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

Nu vrei să intri în detalii pentru a exemplifica a leitura de senzori e etc, pois va varia muito de proiect pentru proiect și de hardware pentru hardware. Basta include această linie în cazul în care este necesar, pe care să-l primesc pentru a-și oferi brokerul.

Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, pentru checarmos os dados recebidos pelo broker, mas before, vamos instalar uma biblioteca that nos auxiliará na conexão do broker. Pentru a fi executat ca linhas abaixo fără consolă din Dragonboard 410C:

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

Agora vamos criar um arquivo python com o name, as example, mqtt.py. Nele vamos definir algumas funções that serão explicadas a follow:

import paho.mqtt.client ca mqttimport sys

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

def onConnect (client, date utilizator, steaguri, rc): client.subscribe (TopicSubscribe)

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

încercați: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Broker, port, timeout) client.loop_forever () cu excepția: sys.exit (0)

În acest moment avem definite două funcții, a 'onConnect' care va fi șampanat în momentul în care se află conexiunea com o broker, și a funcționează 'onMessage' care va fi executat când se află mesajul primit fără subscripții definite în funcție 'onConnect'.

Execute o arquivo com 'python mqtt.py', e se toate as conexões anterior estiverem been realizated com sucesso, você receberá na sua tela os dados that estão sendo enviados pelo your device externalo, no case deste example, pelo NODEMCU.

Notă care este în funcție onMessage, care recepționează informațiile și expunem la consola noastră. Întâi este în acest punct că vocea tratează os dados recebiți și nu în momentul acesta, trimite prin GSM pentru o API, pela funcția 'send' do your arquivo de teste gsm.py, care criamos no step 'Instalare și manipulare sau modul GSM'.

Uma observație importantă: Pentru realizarea unei alimentații din placă NODEMCU ESP8266 ESP-12, în mod specific, sugerează că consultați sau documentați acest link. Muito cuidado neste moment, 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 care facilita a troca rapid.

Pasul 5: Considerações Finais

Se estiver tudo configurado as descritos nos steps previous, você já está comunicando your device IoT com or world, com auxilio da sua Dragonboard 410C. É important resaltar that this instructable foram mencionados vários hardwares e softwares, mas apenas for fins de exemplify a comunicação. Os senzori și alte resurse care sunt folosite fără dispozitiv extern, tot o pregătire și implementare a API-ului Cloud, resurse de hardware ligate la Dragonboard, și sunt și o formă cu care sunt tratate, cum ar fi un criteriu pentru executare sau proiect. Pentru a defini ca produs final, sugerimii apică ca tehnologii și proceduri adecvate pentru tal

O uz de aplicații și aplicații de gestiune, pentru comercianții conectați la servicii, lăsându-le să fie și acestea, lucrând la bem a API-ului său, și consumând atravele destine frente.

Recomandat: