Turinys:

„Comunicação IoT Com Como Dragonboard 410C“: 5 žingsniai
„Comunicação IoT Com Como Dragonboard 410C“: 5 žingsniai

Video: „Comunicação IoT Com Como Dragonboard 410C“: 5 žingsniai

Video: „Comunicação IoT Com Como Dragonboard 410C“: 5 žingsniai
Video: Embedded Devices - Insight into IoT - Canonical's Mike Bell 2024, Liepa
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 a temperatura de um ambiente, monitoramento de segurança, entre outros Benecicios de equipamentos IoT.

Agora, seria interessante transformer 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 condições de entrar num grande marketplace para vender a sua água e tão pouco ter recursos para adquirir e manter um system de pedidos.

Para que você use 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.

1 žingsnis: Paruoškite „Sua Dragonboard 410C“

Paruoškite „Sua Dragonboard 410C“
Paruoškite „Sua Dragonboard 410C“

„Neste passo vamos“paruošia „nosa Drabonboard 410C“, skirtą „IoT dentro da sua casa“.

Pirminė, vamos instaliacinė sistemos operacinė sistema. „Caso“žodžiai, naudojami naudojant lokalizuotą GPS, turi būti priskirtas registruotam asmeniui, nesvarbu, ar tai yra registracijos momentas, ar ne, bet ne operacinė sistema „Linaro 17.04.1“, „caso contrário“, „Vera“, kaip „Dragonboard 410C da 96boards“ir kitos nuorodos nuoroda.

Įdiegti ir įdiegti operacinę sistemą, įdiegti biblioteka, skirta naudoti GPIO, naudojant „Dragonboard 410C“. Para isso, você deve seguir os passos abaixo (abra o console do seu system operacional para executar os comandos):

Pré requisitos libmraa

  • sudo apt-get atnaujinimas
  • sudo apt-cache paieška kompiuteryje
  • 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 klonas
  • sudo mkdir mraa/build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = IŠJUNGTA
  • sudo padaryti
  • sudo make install

Naudokitės biblioteka Python, que é o caso deste instructable, norėdami parodyti ar eksportuoti da nossa variavel de ambiente do Python para biblioteka. Be to, naudokitės teksto redaktoriumi, kuris teikia pirmenybę pasų abaixo, vamos utilziar arba VIM:

  • sudo vim ~/.bashrc
  • paspauskite teclar i, para iniciar a edição do arquivo
  • Jei norite baigti arquivo, eksportuokite PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find /usr /local -name mraa.py))
  • paspauskite ESC, jei norite pakeisti arquivo ir digite ': x!' e enter para salvar e sair do arquivo.

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

„Agora“, įdiegta programinė įranga, skirta palengvinti ir įdiegti GPS („Lembrnado que para a utilização dessa parte“, rekomenduojamą naudoti ar naudoti sistemos operacinę sistemą „Linaro 17.04.1“). Nėra konsolės, vykdykite komandą:

sudo apt-get install gnss-gpsd gpsd gpsd-klientai

Parodykite testą, atlikite o código abaixo, também no seu console:

gpsmon –n

OBS: A antena interna da Drabonboard é para ser utilizada forra de de e em locais mais abertos. Até mesmo em locais abertos, leitura pode 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 estará dentro de uma casa ou apartamento. Išspręskite, naudokitės išorinėmis antenomis, naudokite „Wi-Fi“, GPS funkciją.

OBS: A instaliaçã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 requiredário.

Išorinis išjungimas, perjungimas į išorinį ryšį, būtinas visų procedūrų derinys ir „Qualcomm disponibilizou no documento deste link“.

OBS: „Mu mui mais fácil de encontrar os“komponentai (talpos, rezistoriai ir indukciniai įrenginiai) ir internetas. O mesmo para antenas, que sugerimos a compra no site da SmartCore.

Naudodami „Wi -Fi“tinklą, kuris priklauso nuo konfigūracijos ir prieigos prie „Wi -Fi“tinklo, prisijungus prie interneto, naudojamas GSM modulis. Išorinis GSM išorinis ryšys, geralmente vajadus de uma tensão estável e específica, então vamos criar uma saída de alimentação directtamente da entrada de alimentação da Dragonboard 410C.

Jei norite, kad šis žingsnis būtų tinkamas, ar ne, ar ne, ar ne?

Norėdami realizuoti komunikaciją, naudoti MQTT protokolą ir naudoti „Dragonboard 410C“viešosios interneto prieigos tašką. Įdiekite arba įdiekite programinę įrangą „Mosquitto“, kad pasiektumėte vietos brokerį mqtt, atlikdami linijos abaixo no seu pultą:

sudo apt-get install mosquitto

Kompiuterio programinė įranga yra įdiegta ir įdiegta.

Nustatykite „Dragonboard 410C como um hotspot“, taip pat:

  • Clique no icone de redes no canto inferior direito
  • Spustelėkite „Redaguoti ryšius“
  • Após abrir a tela „Tinklo ryšiai“, spustelėkite „Pridėti“
  • Pasirinkite „Wi-Fi“ir spustelėkite „Sukurti“
  • Ao abrir yra sukonfigūruota da rede, įtraukta į SSID
  • Dabar galite pamatyti „Hotspot“be režimo režimą
  • „Caso queira“apima uma senha para ir rede, konfigūruokite „Wi-Fi Security“
  • Paskutinis paspaudimas „Išsaugoti“

„Agora“kokybės disponavimo sistema, skirta „Dragonboard 410C“išskirtinumui, naudojimui ar brokeriui, skirtam viešam ir subkreveriui.

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

2 žingsnis: Paruoškite „Sua Cloud“API

Este passo é algo que depende muito de projeto para projeto. Pode ser que tikslus ser feita do zero, ou o cloud já existe com a requiredidade de criar 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 para o teste deste instructable. „Caso queira seguir um tutorial“yra baigtas, siūloma nuoroda į artigo nuorodą. Dabar tai yra kazino, kuris siūlo visapusišką estruturadą, kas yra galutinis sprendimas.

Pirminis, tikslus de um lugar para colocarmos ir nossa API, ir para não termos gastos com estes sėklidės, iremos utilizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Prisijunkite prie Heroku svetainės, esančioje nuorodoje
  • Spustelėkite „Prisiregistruoti“, bet ne dieta, para iniciar o seu registro
  • Registruokitės, suraskite prietaisų skydelį, spustelėkite „Naujas“ir pasirinkite „Sukurti naują programą“
  • Insira um nome para a sua aplicação
  • Paspauskite mišinį, spustelėkite „Sukurti programą“
  • Seu app está pronto, podendo ver seu funcionamento clickando 'Open App', no canto superior directnto
  • Įdiekite „Heroku Cli“, įdiekite programą „Para a sua aplicação“, „seguindo a instrução para seu system operacional“, de acordo com a documentação deste link
  • „Agora você deverá seguir“, kaip instrukcijos, skirtos dislokuoti „API“, skirtos diegti, sukuriant

Seguindo os passos acima, ja temos a pasta and sua máquina, des desvolvolver and sua API. „Agora vamos instalar“arba „NodeJS e a Framework Express“, derinys su paso 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 utilize o Advanced Packaging Tool“(APT), ou outro sistemos operacional, consulte o link
  • „Agora“vykdo npm install install express -generator -g
  • Acesse o directtório que 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../
  • išreikšti _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm įdiegti

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

  • Pasiekite makaronų „maršrutus“
  • abra o arquivo 'index.js'
  • Inclua o trecho de código abaixo, que ir adownar 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ê realizuoti ar įdiegti„ Heroku “programą:

  • heroku prisijungimas
  • pridėk.
  • git įsipareigoti -am "pradinis įsipareigojimas"
  • git push heroku meistras

Com isso você já tem seus endpoints de testes prontos. Para testar os endpoints sugerimos instalar or software Postman, neste link. Insira a url da seu app (Pvz.: Https://_SEU_APP_.herokuapp.com/) ir pasirinkimas arba metodas GET OU POST, ir spustelėkite „SEND“. Metodas POST, siga os passos:

  • Paspaudimas „Kūnas“
  • Parenkamas pasirinkimas „x-www-form-urlencoded“
  • Insira o raktas „žinutė“
  • Em Value, pode inserir qualquer mensagem

Com essas instrukcijos temos a nossa API de testes pronta para o uso.

3 žingsnis: „Instalando E Manipulando“arba „Modulo GSM“

„Instalando E Manipulando“arba „Modulo GSM“
„Instalando E Manipulando“arba „Modulo GSM“
„Instalando E Manipulando“arba „Modulo GSM“
„Instalando E Manipulando“arba „Modulo GSM“

Priklausomai nuo to, ar yra „Wifi“ryšys, ar ne, naudokite GSM komunikaciją, kad galėtumėte naudotis API ir konfigūruoti be jokių žingsnių.

Naudojant modulio GSM homologines sistemas, naudojamas parazitų sėklidžių prototipas iremos panaudojimui ir metodų paprastumui, ir eilės prieinamumui, ir momentiniam SIM800L modeliui. Este modulo foi production and distribuído em mas mas pelo fabricando, mas sem quality quer homologação, tanto que não está disponível no site do fabricando.

„Vamos às conexões físicas“, „GSM“modulis ir „Dragonboard 410C“modulis.

Como mencionado no step „Paruoškite„ Dragonboard “, teremos que regula a tensão para utilizar o modulo. Para isso utilizaremos um regulador de tensão down down, para diminuir a tensão de entrada. „Utilizamos“arba „Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este“

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

  • Susipažinkite su „Dragonboard“pozityvu, be iliustrato, žingsnis po žingsnio „Paruoškite„ Dragonboard “, ir įveskite„ IN +“, kad būtų galima reguliuoti
  • Sulaukite neigiamą „Dragonboard“neigiamą veiksmą, iliustruokite be žingsnio „Paruoškite„ Dragonboard “, e conecte na entrada„ IN -“do regulador de tensão
  • SVARBU: „Ligue a Dragonboard“, reguliuokite „com“arba „auxilio de uma chave de fenda“, reguliuokite ar trimpot para que a saida (OUT + e OUT -) ten 4.2V. Siga adiante apenas se a saída estiver com esse valor. Naudojant GSM modemą, reikia patikrinti, ar yra pakankamai laiko. Este passo deve ser repetido, semper que houver incluão de um hardware, pois pode haver variação.
  • Sujunkite reguliavimo režimą „OUT +“be pino VCC, nurodant vaizdą
  • Sujunkite saoda do regulador de tensão 'OUT -' no pino GND, indicado na imagem de capa deste step
  • „Conecte o pino RXD“modulis „GSM no pino 5 UART 0 TX da Dragonboard“, „Ambos indicados nas imagens de capa deste step“
  • „Conecte o pino TXD“modulis „GSM no pino 7 UART 0 RX“„Dragonboard“, ambos rodo, kaip tai padaryti
  • Susisiekite su pn GND ir moduliu GSM be pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. Yra pagrindinis fondo įkūrimo ar trosfego de dados pelo RX TX pagrindas

OBS: Nano ar esqueça de conectar uma antena no modulo GSM, pelės pinos NET arba IPX ANT, nurodo vaizdą, kurį galima padaryti.

„Agora vamos ao“programinė įranga. Naudodamiesi biblioteka mraa que instalamos anteriormente, para realizar a comunicação serial Entre or modul GSM and a Dragonboard 410C.

Siga os passos para importar a biblioteca e testar a comunicação com o method:

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

importuoti mraa

Nustatykite įvairius parametrus, skirtus „UART“kameroms ir GSM moduliams

port = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (uostas)

Įdiekite funkcinį atsiliepimą, kurį galite rasti naudodamiesi GSM moduliu

def rašyti (msg):

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

Crie um loop para fazer ir leitura do modulo GSM

o tiesa: 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 konsolė
  • Vykdyti o arquivo

python gsm.py

Skaitmeninis „AT“, e -mokslas, susijęs su teisingumu, voka ir atsakymas į telefoną ir „OK“

Para que nosso metodulo não dependa de digitarmos cada comando AT - encontrados neste link - faremos duas funções, uma que irá realizar a conexão com a APN e outra que irá sunaudojimas ir nossa API.

Pagrindinė pramogų serija:

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 apibrėžti Corretamente o Valor do comando AT+COPS. após o comando AT_COPS =?
  • Nustatykite APN nustatymus pagal asteriscos, priklausančias nuo SIM kortelės operacinės sistemos, įsigykite neoficialų operatorių, kuris atliks APN naudojimą, naudojimą ir seną.
  • Pataisykite tai

„Agora vamos“įgyvendina „função que irá enviar“suvartojimą ir „API“API:

def siųsti (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", "Autorizacija: nešėjas ******** ********* / r / n "') time.sleep (0.5), jei m ==' GET ': rašyti (' 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+HTTPTERM')

Segue algumas observações para estes comandos:

  • Funkcija 3 parametrai. '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
  • Jei norite naudoti „AT+HTTPS“, neprivaloma naudoti SSL
  • O argumento 'm' deverá ser enviado no formato querystring (Pvz.: msg = ola+dragonboard & arg2 = teste & …)
  • O comando 'AT+HTTPPARA = "USERDATA …" opcional, apenas se houver a requiredidade de definir algum header no request

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

Pridėkite prie SIM kortelės, pasikonsultuokite su operacijos operacija ir pasikonsultuokite su žiniatinklio technologija, kuri yra modulio modulis, skirtas GSM skambučių valdymui, naudojimui, masiniam naudojimui ir SIM kortelės, skirtos specialiesiems poreikiams, skirtiems komunikaciniam IoT, poros suderinamumo ir kūrimui.

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

4 žingsnis: paruoškite „Dispositivos Para Se Comunicar Com a Dragonboard“

Paruoškite „Dispositivos Para Se Comunicar Com a Dragonboard“
Paruoškite „Dispositivos Para Se Comunicar Com a Dragonboard“

Neste passo, iremos utilizar a placa de prototipagem NODEMCU ESP8266 ESP-12, como example. 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. Naudokite „Wi -Fi“būdus, kaip palengvinti ir naudoti komunikaciją.

„Comunicarmos“, skirtos „Dragonboard 410C“, 2 biblioteka:

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

„Defina como variáveis globais“, kaip apibrėžtas „Wi-Fi“ir brokeris, „Dragosboard 410C“:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // Naujasis „Hotspot“ir „Dragonboard“apibrėžimas
  • const char* PASSWORD = ""; // Insira o valor da senha se houver apibrėžimas su konfigūracija Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Vykdyti „ip a“su „Dragonboard“, skirtu descobrir arba ip da rede interna

Atsisiųskite „Wi-Fi“ir „MQTT“klientus, kad gautumėte:

  • „WiFiClient espWIFI“;
  • PubSubClient MQTT (espWIFI);

Naudodami sąranką, inicijuokite WIFI ryšį ir MQTT komunikaciją:

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

Nėra sua função de loop, reikia atkreipti dėmesį į linha abaixo para que arba MQTT entre em loop:

MQTT.loop ();

Paslaugos, skirtos „WIFI“ir „brokerių“funkcijų patikrinimui, tarpininkaujant, be problemų. Para isso crie um função com as linhas abaixo, e chame-a funcuã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)}}

}

Paskutinis variantas, kaip pažvelgti į „Drabonboard 410C“diegimo algoritmą, paspaudus šią parinktį:

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

Não vou entrar em detalhes para exemplificar a leitura de sensores e etc, pois vai variar muito de projeto para projeto e de hardware para hardware. Basta incluir esta linha onde needário, que os dados serão enviados para a seu broker.

Voltando para ir nos Dragonboard410C, vamos criar um arquivo teste em python, para checarmos os dados recebidos pelo broker, mas antes, vamos instalar uma biblioteca que nos auxiliará na conexão do broker. Vykdykite „Dragonboard 410C“kaip konsolės linhas abaixo:

  • sudo apt-get įdiegti python pip
  • pip įdiegti paho-mqtt

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

importuoti paho.mqtt.client kaip mqttimport sys

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

def onConnect (klientas, vartotojo duomenys, vėliavos, rc): client.subscribe (TopicSubscribe)

def onMessage (klientas, vartotojo duomenys, žinutė): message = str (msg.payload) print (message)

pabandykite: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Brokeris, prievadas, skirtasis laikas) client.loop_forever () išskyrus: 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'.

Vykdykite arquivo com „python mqtt.py“, pvz., Kaip bendrininkus, anteriores estiverem sido realizadas com success, voê receberá na sua tela os dados que estão sendo enviados pelo seu dispositivo externo, no caso deste examplelo, pelo NODEMCU.

Pastaba que é na função onMessage, que recebemos a informação and 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 criamos no passo 'Instalando e manipulando o modulo GSM'.

Svarbus stebėjimas: NODEMCU ESP8266 ESP-12, realus, iš anksto pagrįstas, patarimas, konsultacija arba dokumento dokumento nuoroda. 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 palengvinti ir troca rapidamente.

5 žingsnis: „Considerações Finais“

Išsiaiškinkite, kaip konfigūruoti, aprašomi žingsniai prieš tai, kalbama apie komunikaciją ar seką, esantį „IoT com o mundo“, „com auxilio da sua“„Dragonboard 410C“.. Os sensores e outros recursos que serão utilizados no dispositivo externo, todo o preparo and 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 criterio de quem for executar o projeto. Para finir como produto final, sugerimos apĺicar as tecnologias e Procedimentos adekvatos 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, and a a fogyasztindo através destas frentes.

Rekomenduojamas: