INHOUDSOPGAWE:

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

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

Video: Comunicação IoT Com a Dragonboard 410C: 5 stappe
Video: MediaTek Labs VP - Marc Naddell on MediaTek Labs and IoT 2024, Julie
Anonim
Comunicação IoT Com a Dragonboard 410C
Comunicação IoT Com a Dragonboard 410C

Dit is ook 'n goeie idee om 'n produk wat IoT para a sua casa bied, te vergelyk. Abrir uma cortina, liga uma tomada, just a tempera de um ambiente, monitoramento de segurança, entre outros benefícios de equipamentos IoT.

Agora, seria interessante transformas esses alertas das "coisas" da sua casa, em solicitações de serviço, e ainda melhor, em serviços que você conhece e que yes 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ê gebruik 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.

Stap 1: Berei 'n Sua Dragonboard 410C voor

Berei 'n Sua Dragonboard 410C voor
Berei 'n Sua Dragonboard 410C voor

Ons bied 'n uitstekende voorbereiding vir Drabonboard 410C vir 'n deur of 'n deur.

Eerste, vinnigste installasie van 'n operasionele stelsel. Ons kan ook gebruik maak van plaaslike GPS, en ons kan ook nie 'n registreermoment ontvang nie, maar ook 'n operasionele stelsel vir Linaro 17.04.1, caso contrário, en ander weergawes vir Dragonboard 410C en 96boards.

Ons kan ook 'n operasionele stelsel installeer, 'n biblioteca libmraa vir die gebruik van GPIO's, vanaf Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executor os comandos):

Pré requisitos libmraa

  • sudo apt-get update
  • sudo apt-cache soek rekenaar
  • sudo apt-get installeer libpcre3-dev
  • sudo apt-get install git
  • sudo apt-get installeer cmake
  • sudo apt-get installeer python-dev
  • sudo apt-get install swig

Instalação mraa

  • sudo git kloon
  • sudo mkdir mraa/build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = UIT
  • sudo maak
  • sudo maak installeer

Para utilizar a biblioteca com Python, que é o caso deste instructable, ons kan ook meer inligting oor die uitvoer van Python vir 'n biblioteca uitvoer. Vir meer inligting, gebruik die redakteur van die teks wat ons die beste verkies om ons te gebruik, of gebruik VIM:

  • sudo vim ~/.bashrc
  • druk op die teks, ek wil dit eers doen
  • U kan ook nie 'n finale artikel doen nie: uitvoer PYTHONPATH = $ PYTHONPATH: $ (dirname $ (vind /usr /local -name mraa.py))
  • druk ESC para sair da edição do arquivo e digite ': x!' e enter para salvar e sair do arquivo.

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

Agora, ons kan ook sagteware installeer om GPS te gebruik (ons kan dit ook gebruik, aanbeveel om die operasionele stelsel Linaro 17.04.1 te gebruik).

sudo apt-get installeer gnss-gpsd gpsd gpsd-kliënte

Om dit te doen, voer die funksie of die konsole uit:

gpsmon –n

OBS: A antena interna da Drabonboard é para ser utilizada fora the cases e em locais mais abertos. Ons bied 'n lys van 5 tot 10 minute aan, en dit kan ook 'n gegewens wees.

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. Vir resolusie, podemos gebruik van eksterne antennes, tanto vir wi-fi, kwantiteit vir GPS.

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

Vir die realisasie van 'n skakelaar kan ek 'n interne dokument vir 'n skakel gebruik.

OBS: Ons kan hierdie komponente (kondensators, weerstande en induktore) op die internet aanskakel. Ons het antennas, wat sugerimos en 'n webwerf van SmartCore nie.

Vir 'n ingangspoort kan ons 'n unieke konfigurasie en wifi, 'n internet, of 'n internetverbinding vir GSM gebruik. Ons kan ook GSM -eksterne e -posse benodig, en ons kan ook al die draaiboeke van Dragonboard 410C gebruik.

As voorbeeld kan ons 'n stap vir stap gebruik om die funksie van 'n GSM (ATENÇÃO COM A POLARIDADE) te benut.

Para realizar a comunicação interna, iremos utilizar of protocolo MQTT, and definir a Dragonboard 410C como hotspot. Ons installeer ook sagteware Mosquitto for tornar in 'n makelaar, met 'n uitvoer van 'n konsole:

sudo apt-get install mosquitto

Dit is ook 'n sagteware wat installeer kan word.

Vir 'n definisie van Dragonboard 410C as 'n hotspot, kan u ook die volgende passeer:

  • Klik op 'n ikoon om nie 'n minderwaardige regstelling te gebruik nie
  • Klik op 'Verander verbindings'
  • As u 'Netwerkverbindings' gebruik, klik dan op 'Voeg'
  • Kies 'n Wi-Fi-opsie, en klik op 'Skep'
  • U kan ook die konfigurasie hiervan gebruik, maar u moet die SSID -nommer insuleer
  • Dit is 'n wonderlike weergawe van 'Hotspot' sonder 'mode'
  • Dit bevat 'n volledige konfigurasie vir 'Wi-Fi Security'
  • Om die kliek op 'Save' te klik

Ons kan ook 'n elektroniese verskaffer van Dragonboard 410C gebruik en 'n makelaar vir die publieke en subskrywer gebruik.

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

Stap 2: Berei 'n Sua Cloud API voor

Este passo é algo que depende muito de projeto para projeto. Ons kan presies weet of dit 'n wolk is wat 'n noodsaaklike hulpmiddel of 'n API nodig het.

Ons kan u 'n wagwoord vir 'n aanwyser vir die API gee, maar ons kan dit ook opdrag gee. U kan die tutoriaal vir my voltooi, of u kan die skakel skakel. Ek kan dit ook doen, maar dit kan ook 'n finale oplossing wees vir kommersiële doeleindes.

Primeiramente, precisamos de um lugar for colocarmos en nossa API, en para não termos gastos com estes testes, iremos utilizar and plataforma Heroku. Ons kan ook die volgende inligting aanneem:

  • Besoek die webwerf van Heroku, deur die skakel
  • Klik op 'Registreer', sonder 'n superieure voorblad, of vir 'n ander registrasie
  • Registreer op die dashboard, klik op 'New' en klik op 'Create New App'
  • Insira um nome para a sua aplicação
  • Klik op 'Skep app'
  • U kan die app oopmaak, maar ook 'n oop app klik, maar u kan nie meer 'n goeie program nie
  • Instale o Heroku Cli, para fazer os deploys para a sua aplicação, seguindo and a instrução para seu sistema operacional, de acordo com a documentação deste link
  • Agora kan die instruksies vir die implementering van 'n implementering van 'n API, beskikbaar op

Ons kan dit ook doen, maar dit is ook 'n pasta vir ons, maar ook vir 'n API. Ons kan ook installeer op NodeJS en 'n raamwerk Express, en ons kan ook die volgende doen:

  • curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
  • sudo apt -get install -y nodejs
  • sudo apt-get install npm
  • Ons kan Linux versprei deur Advanced Packaging Tool (APT), 'n outosistiese operasionele stelsel, of skakel
  • Agora voer npm uit, installeer express -generator -g
  • Acesse o diretório que foi realizado os procedimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Gee 'n aplicação -node vir 'npm init',
  • cd../
  • druk uit _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm installeer

Para deixar dois eindpunte voorbereidings, om die GET en um POST, kan ons ook die volgende doen:

  • Acesse a pasta 'routes'
  • abra o arquivo 'index.js'
  • U kan ook hierdie inligting insluit:

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 = 'leeg'; 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 kan besef dat u die app vir 'n Heroku kan implementeer:

  • heroku -aanmelding
  • git byvoeg.
  • git commit -am "aanvanklike verbintenis"
  • git push heroku meester

Com isso você já tem seus endpoints de testes prontos. Vir die eindpunte wat ons installeer, word die sagteware van Postman, die volgende skakel, geïnstalleer. Skep 'n url -app (byvoorbeeld: https://_SEU_APP_.herokuapp.com/) en kies 'n pos, klik op 'SEND'. Para o método POST, sowel as die volgende:

  • Klik op 'Body'
  • Kies 'n opção 'x-www-form-urlencoded
  • Sleutel boodskap in
  • Em Value, ons kan 'n mens kwalifiseer

Ons kan hierdie temas en 'n nuwe API vir die toetsing van ons eie gebruik.

Stap 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

Vir afhanklike verbindings met Wifi, kan ons ook 'n gekombineerde GSM -stelsel gebruik om 'n nuwe API te gebruik, sonder 'n stap vorentoe.

Ons kan ook die GSM -homoloë in die praktyk gebruik, maar ons kan ook hierdie simptome gebruik om 'n paar eenvoudige simptome te gebruik om SIM800L te gebruik. Este modulo foi producido e distribuído em massa pelo fabricando, mas sem qualquer homologação, tanto que não está disponível no site do fabricando.

Daar is ook 'n aantal voorbeelde van GSM en Dragonboard 410C.

As 'n voorbereiding vir 'n draakbord ', kan u gereeld 'n paar modules gebruik. Ons kan ook die reguleerder van die stad afskakel, maar ook vir die intrede. Gebruik of reguleerder De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este teste

Ons kan dit vir 'n werklikheid as volg beskryf:

  • Maak 'n positiewe uitwerking op Dragonboard, met 'n stap 'Maak 'n draakbord gereed', en maak 'IN +' ingeskakel deur die regulator de tensão
  • Maak 'n negatiewe uitwerking op Dragonboard, met 'n stap 'Berei 'n draakbord voor', en maak 'n ingang 'IN' -'regulator de tensão'
  • BELANGRIK: Ligue a Dragonboard, 'n reguleer as 'n hulpmiddel om dit te doen, reguleer die trompot vir 'n paar keer (OUT + e OUT -) na 4.2V. Ons kan ook 'n uitstekende diens vir ons gee. Ons kan 'n outomatiese GSM -module gebruik, en dit is baie akkuraat. Este passo deve ser repetido, wat die houer insluit, insluitend hardeware, kan ook verskillende variëteite hê.
  • Reguleer die spanning 'OUT +' sonder VCC
  • Skakel 'n outomatiese regulator uit -geen GND nie
  • Geskik vir die RXD vir GSM no pino 5 UART 0 TX vir Dragonboard
  • Geskik vir TXD vir GSM no pino 7 UART 0 RX van Dragonboard
  • Maak 'n GND -module vir GSM no pino 1, 2, 39 OU 40 GND en draakbord, wat 'n stap vir stap voorstel. Isto é fundamental para estabilizar o tráfego de dados for RX TX

OPMERKINGS: Ons kan nie 'n gegewe GSM -netwerk of 'n IPX ANT -module gebruik nie, maar ook 'n stap vir stap.

Agora vamos oa sagteware. Ons kan ook 'n biblioteca gebruik om 'n anteriormente te installeer, maar ook vir 'n kommu nese reeks vir GSM en Dragonboard 410C.

Ons kan die volgende vir die Bybel en vir die komunikação of die volgende toets:

  • Crie um arquivo com a extensão.py, como sugestão 'gsm.py'
  • Daar is geen belangrike inligting oor biblioteca nie, maar ook 'n tyd wat by die tyd vertraag word

invoer mraa

Ons kan 'n verskeidenheid veranderings vir uART -toestelle aanskakel

poort = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (poort)

Dit is 'n funksie wat ons kan gebruik om 'n GSM -module te gebruik

def skryf (msg):

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

Ons kan 'n lus vir 'n GSM -module gebruik

terwyl True: r = uart.read (128) as r! = '': print (r.decode ('UTF-8')) i = str (input ()) skryf (i) time.sleep (0.5)

  • Salve of arquivo e volte para o console
  • Voer die werk uit

python gsm.py

Digite 'AT', e se tudo conectado corretamente, você irá receber na tela a mensgem 'OK'

Vir 'n nuwe funksie kan ons 'n skakel na 'n volgende skakel gebruik - 'n skakel wat u kan gebruik, maar u kan dit ook realiseer met 'n APN wat u kan gebruik om 'n API te gebruik.

A primeira função será de conexão:

def connect ():

time.sleep (0.5) skryf ("AT") time.sleep (0.5) skryf ('AT+CREG = 1') time.sleep (0.5) skryf ('AT+COPS = 2') time.sleep (0.5) skryf ('AT+SAPBR = 3, 1, "Kontipe", "GPRS"') time.sleep (0.5) skryf ('AT+SAPBR = 3, 1, "APN", "*****"') time.sleep (0.5) skryf ('AT+SAPBR = 3, 1, "USER", "*****"') time.sleep (0.5) write ('AT+SAPBR = 3, 1, "PWD", "*****" ') time.sleep (0.5) skryf (' AT+SAPBR = 1, 1 ') time.sleep (0.5) skryf (' AT+SAPBR = 2, 1 ') time.sleep (6)

Ons kan hierdie funksie gebruik. Daar is 'n aantal algemene waarnemings:

  • 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 após o comando AT_COPS =?
  • Ons definieer die APN as 'n asteriscos pois depende de cada operadora van die SIM -kaart.
  • Repare que a cada

Ons kan ook 'n funksionele implementering van 'n nos API gebruik:

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

skryf ('AT+HTTPINIT') time.sleep (0.5) skryf ('AT+HTTPSSL = 1') time.sleep (0.5) skryf ('AT+HTTPPARA = "CID", 1') time.sleep (0.5) skryf ('AT+HTTPPARA = "URL", "_URL_APP_HEROKU _/'+p+'"') time.sleep (0.5) skryf ('AT+HTTPPARA = "USERDATA", "Magtiging: draer ******** ********* / r / n "') time.sleep (0.5) as m ==' KRY ': skryf (' AT+HTTPACTION = 0 ') anders: skryf (' AT+HTTPPARA = "INHOUD", "aansoek/x-www-vorm-urlencoded" ') time.sleep (0.5) skryf (' AT+HTTPDATA = '+str (len (d))+', 10000 ') time.sleep (0.5) skryf (str (t)) time.sleep (10) skryf ('AT+HTTPACTION = 1') time.sleep (6) skryf ('AT+HTTPTERM')

Segge algumas observações para estes comandos:

  • Ons bied 3 parameters aan. '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
  • Die opsie 'AT+HTTPS' is opsioneel, en u kan nie SSL gebruik nie
  • O argumento 'm' deverá ser enviado no formato querystring (Ex: msg = ola+dragonboard & arg2 = teste & …)
  • Kom op 'AT+HTTPPARA =' GEBRUIKERSDATA '

Dit is 'n uitstekende manier om 'n individu te gebruik, maar dit kan ook gebruik word.

U kan die SIM -kaart aanvra, sowel as 'n operasionele stelsel vir tegnologiese GSM -verskaffers, wat ons ook kan gebruik, of 'n spesiale SIM -kaart kan gebruik, veral vir verskaffers en verskaffers.

Kom as konfigurasies en implementerings, en kan ook op die draakbord 410C toegepas word.

Stap 4: Voorbereidingsbesprekings vir 'n kombinasie van 'n draakbord

Preparando Dispositivos Para Se Comunicar Com a Dragonboard
Preparando Dispositivos Para Se Comunicar Com a Dragonboard

Ons kan ook hierdie protokol gebruik om NODEMCU ESP8266 ESP-12 te gebruik. Esta e qualquer outra placa de prototipagem, como o nome já diz, é ótima fora protótipos, mas no momento em que hard hardware for definido como produto, deve ser desenvolvido um complexo dedicado. U kan ook WiFi gebruik, maar u kan dit ook kommunikeer.

Para nos comunicarmos com en nossa Dragonboard 410C, presies in twee Bybeltekens:

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

Defina como variáveis globais, as definiçeses for rede Wi-fi and do broker, ambos da nossa Dragonboard 410C:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // Dit is die naam wat Hotspot en Dragonboard kan definieer
  • const char* PASSWORD = ""; // Ons kan die funksies van die hotspot definieer
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Voer 'ip a' uit op Dragonboard vir die beskrywing van die internet

Ons kan die Wi-Fi-kaart gebruik en die MQTT-kliënt installeer:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Na die opstelling, kan u meer as WIFI en 'n MQTT -kommunikasie gebruik:

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

U kan ook nie 'n lus gebruik nie, maar ons kan ook die 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, en chame-a na função de loop:

void checkConnections () {

as (! MQTT.connected ()) terwyl (! MQTT.connected ());

as (WiFi.status ()! = WL_CONNECTED) {WiFi.begin (SSID, PASSWORD); terwyl (WiFi.status ()! = WL_CONNECTED);}

}

Eindelik kan ons ook 'n algemene idee vir 'n Drabonboard 410C of 'n sekere kommando gee:

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

Ons kan meer as een voorbeeld van 'n voorbeeld van 'n sensoriese sensor, ens. Dit is 'n noodsaaklike voorwaarde dat ons 'n makelaar kan hê.

Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, for checarmos os dados recebidos pelo broker, mas antes, vamos instalar uma biblioteca que nos auxiliará na conexão doen makelaar. Dit kan ook uitgevoer word as 'n konsole van Dragonboard 410C:

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

Agora vamos criar um arquivo python com o nome, como exemplo, mqtt.py. Ons kan nie meer die volgende funksies beskryf nie:

voer paho.mqtt.client in as mqttimport sys

Makelaar = "_IP_DRAGONBOARD_" poort = 1883 time -out = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect (kliënt, gebruikersdata, vlae, rc): client.subscribe (TopicSubscribe)

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

probeer: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (makelaar, poort, time -out) client.loop_forever () behalwe: 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á executada quando houver mensagem recebida nos subscribes definidos na função 'onConnect'.

Voer die funksie van 'python mqtt.py' uit, en ons kan dit ook as 'n voorafgaande anteriores estiverem van die werklike aspekte gebruik, maar ons kan dit ook na ons stuur, maar ek kan nie eksterne eksos plaas nie, maar ook NODEMCU.

Let op dat die funksie opMessage moontlik is, en dat ons 'n konsole -inligting kan ontvang. Ons kan die volgende keer dat ons dit kan doen nie, maar ons kan dit via GSM vir 'n API gebruik, of 'stuur' ons na die toets van gsm.py, en ons kan nie 'installeer en manipuleer' GSM nie.

Uma note: Para realizar a alimentação da placa NODEMCU ESP8266 ESP-12, em especifico, sugiro que consultem or documento deste link. Ons het 'n volgende oomblik, maar ons kan eenvoudig 'n paar voorbeelde van 'n pols sien wat 'n vinnige plek kan bied.

Stap 5: Oorweeg Finais

Ons kan ook die konfigurasie van die beskrywings van die voorste stappe voorskryf, maar dit is ook moontlik om 'n kombinasie van IoT com of mundo, as auxilio da sua Dragonboard 410C te gebruik.. Ons kan ook 'n eksterne wolk, 'n implementering en implementering van 'n API -wolk, 'n hardeware -lêer vir Dragonboard, 'n e -posadres en 'n vorm vir die uitvoer van 'n uitvoerder of projek. Para definir como produto final, sugerimos apĺicar as tecnologias e procedimentos adequados para tal

Ons gebruik programme en toepassings, sowel as 'n aantal bedienings, funksies en funksies.

Aanbeveel: