Satura rādītājs:

Comunicação IoT Com a Dragonboard 410C: 5 soļi
Comunicação IoT Com a Dragonboard 410C: 5 soļi

Video: Comunicação IoT Com a Dragonboard 410C: 5 soļi

Video: Comunicação IoT Com a Dragonboard 410C: 5 soļi
Video: Обзор и конфигурация модуля EBYTE LoRa 2024, Jūlijs
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 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 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 servicom 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. darbība: sagatavojiet Sua Dragonboard 410C

Sagatavojiet Sua Dragonboard 410C
Sagatavojiet Sua Dragonboard 410C

Neste passo vamos gatavo a nossa Drabonboard 410C para se tornar o gateway da nossa estrutura IoT dentro da sua casa.

Primeiramente, vamos instalar um system operacional na placa. Caso você opte porizar localizaçãoo GPS, que ajudará muito o cliente no momento de registro, sugerimos que instale o system operationional Linaro 17.04.1, caso contrário, veja as opções de na página da Dragonboard 410C da 96boards, neste link.

Instalējiet un uzstādiet operētājsistēmu, instalējiet bibliotēkas bibliotēku, kas paredzēta GPIO izmantošanai, un Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu system operational para executar os comandos):

Pré requisitos libmraa

  • sudo apt-get update
  • sudo apt-cache meklēt pcre
  • sudo apt-get install libpcre3-dev
  • sudo apt-get instalēt git
  • sudo apt-get install cmake
  • sudo apt-get instalēt python-dev
  • sudo apt-get install swig

Instalação mraa

  • sudo git klons
  • sudo mkdir mraa/build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = IZSL
  • sudo padarīt
  • sudo veikt instalēšanu

Lai izmantotu biblioteka com Python, que é o caso deste instructable, lūdzu, skatiet vai eksportējiet da nossa variavel de ambiente do Python for biblioteca. Para isso, use o editor de texto de sua preferência para seguir os passos abaixo, vamos utilziar o VIM:

  • sudo vim ~/.bashrc
  • nospiediet teclar i, para iniciar un edição do arquivo
  • pieskaroties linha seguinte no final do arquivo: export PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find /usr /local -name mraa.py))
  • nospiediet ESC par sair da edição do arquivo e digite ': x!' e ievadiet para salvar e sair do arquivo.

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

Agora, instalētās programmatūras un programmatūra, lai atvieglotu un izmantotu GPS (lembrnado que para a utilização dessa parte, recomendamos o uso do system operacional Linaro 17.04.1). Nr konsoli, izpildiet vai izpildiet abaixo:

sudo apt-get install gnss-gpsd gpsd gpsd-customers

Testā, izpildiet o código abaixo, também no seu console:

gpsmon –n

OBS: A antena interna da Drabonboard é para ser utilizada fora de case 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 informationçõ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. Atrisinātājs, ārējo ierīču antenas, bezvadu interneta pieslēgums, GPS sistēma.

OBS: A instalācija ārējā ārējā não é um procedimento tão simples para quem não tem familiaridade com Procedimentos de soldagem com SMD, portanto, iepirkums um serviço especializado se nepieciešamība.

Lai realizētu vai pārslēgtu ārējās dīkstāves, ir nepieciešams veikt procedūru un Qualcomm disponibilizou no documento deste link.

OBS. O mesmo para antenas, que sugerimos and compra no site da SmartCore.

Para que nosso vārteja ir atkarīga no konfigurācijas konfigurēšanas un savienojuma ar wifi, izmantojot internetu, izmantojot GSM modeli. Izmantot GSM ārējos modeļus, kas ir vispiemērotākie, lai palielinātu 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.

Lai to paveiktu, jums ir jākļūst par precīzu soli, un pēc tam ir jānosaka, kā to izmantot, izmantojot GSM moduli (ATENÇÃO COM A POLARIDADE).

Lai sazinātos ar internetu, izmantotu MQTT protokolu un izmantotu Dragonboard 410C como hotspot. Instalējiet vai instalējiet programmatūru Mosquitto, kas atrodas starp brokastu mqtt, com a execução da linha abaixo no seu console:

sudo apt-get install mosquitto

Com isso o software jestará instalado e ativo.

Nosakiet Dragonboard 410C como um hotspot, kā arī šādas iespējas:

  • Clique no icone de redes no canto inferior direito
  • Noklikšķiniet uz “Rediģēt savienojumus”
  • Após abrir a tela 'Tīkla savienojumi', noklikšķiniet uz 'Pievienot'
  • Izvēlieties Wi-Fi, noklikšķiniet uz "Izveidot"
  • Ao abrir ir tela de configuração da rede, insira um nome em SSID
  • Šī ir "Hotspot" no campo "Mode"
  • Caso queira ietver uma senha para un rediģēt, konfigurēt-Wi-Fi Security
  • Pēdējā klikšķī noklikšķiniet uz "Saglabāt"

Agora qualquer dispositivo pode se conectar à rede exkluziv da da Dragonboard 410C, e utilizar o seu broker para publicar e subscrever.

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

2. darbība. Sagatavojiet Sua Cloud API

Este passo é algo que depende muito de projeto para projeto. Pode ser que precīzs ser feita do zero, ou o cloud já existe com an needidade 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 apmācība ir pilnībā pabeigta, ierosiniet ver vai 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 and nossa API, e para não termos gastos com estes sēklinieki, iremos utilizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Vietne Heroku, šī saite
  • Noklikšķiniet uz "Pierakstīties", no canto superior dieito, para iniciar o seu registro
  • Reģistrējieties, atrodiet informācijas paneli, noklikšķiniet uz “Jauns” un skatiet opciju “Izveidot jaunu lietotni”
  • Insira um nome para a sua aplicação
  • Esi maisida, noklikšķiniet uz "Izveidot lietotni"
  • Seu app está pronto, podendo ver seu funcionamento clickando 'Open App', no canto superior directnto
  • Instalējiet vai Heroku Cli, para fazer os deploys para a sua aplicação, seguindo a instrução para seu system operation, de acordo com a documentação deste link
  • Agora você deverá seguir kā instrukcijas API izvietošanai vai desenvolvimento da sua, izvietojiet to vietnē

Seguindo os passos acima, ja temos a pasta and sua máquina, para desenvolver and sua API. Instalējiet Agora vamos vai NodeJS e a Framework Express, sekojiet os passos abaixo:

  • čokurošanās -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 use o Advanced Packaging Tool (APT), ou outro system operational, consulte o link
  • Agora izpilda npm install express -generator -g
  • Acesse o diretó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../
  • izteikt _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm instalēt

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

  • Pieejiet makaronu maršrutus
  • 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 ('/', funkcija (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ê realizēt vai izvietot lietotni Heroku:

  • heroku pieteikšanās
  • git pievienot.
  • git bind -am "sākotnējā apņemšanās"
  • git push heroku meistars

Com isso você já tem seus endpoints de testes prontos. Para testar os endpoints sugerimos instalar o software Postman, neste link. Insira a url da seu app (Ex: https://_SEU_APP_.herokuapp.com/) e selecione o método GET ou POST, e clique em 'SEND'. Metode POST, siga os passos:

  • Noklikšķiniet uz "Body"
  • Atlasiet opciju x-www-form-urlencoded
  • Insira o taustiņš 'msg'
  • Em Value, pode inserir qualquer mensagem

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

3. darbība: Instalando E Manipulando O Modulo GSM

Instalācija E Manipulando vai Modulo GSM
Instalācija E Manipulando vai Modulo GSM
Instalācija E Manipulando vai Modulo GSM
Instalācija E Manipulando vai Modulo GSM

Wi -Fi savienojums ir atkarīgs no savienojuma, izmantojot GSM sakaru sakarus, kas paredzēti, lai izmantotu un izmantotu API, kuru nav iespējams konfigurēt.

Ja izmantojat GSM homologados, izmantojiet moduļu izmantošanas modeli, mas para os testes do nosso protótipo iremos utilizar um modeulo simples e que atende a nossa demanda do momento, or modulo SIM800L. Este modulo foi producido and distribuído em massa pelo fabricando, mas sem quality quer homologação, tanto que não está disponível no site do fabricando.

Vamos var izmantot konferences, ievadīt vai modulēt GSM un nosūtīt Dragonboard 410C.

Como mencionado no step 'Sagatavojiet sua Dragonboard', teremos que regular a tensão para utilizar o modulo. Para isso utilizaremos um regulador de tensão atkāpjas, para diminuir a tensão de entrada. Utilizamos vai Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este

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

  • Sazinieties ar Dragonboard positiva, 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
  • SVARĪGI: Ligue a Dragonboard, ereg com com au auxilio de uma chave de fenda, regule vai trimpot para que a saida (OUT + e OUT -) tenha 4.2V. Siga adiante apenas se a saída estiver com esse valor. Caso seja utilizado outro modulo GSM, pārbaudiet un pārbaudiet atbilstošo. Este passo deve ser repetido, semper que houver incluão de um hardware, pois pode haver variação.
  • Conecte a saída do regulador de tensão 'OUT +' no pino VCC, indikators un attēls 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 modular GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Conecte o pino TXD modular GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Conecte o pino GND modular GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. Tas ir fundamentāls para dibinātājs vai trāfego de dados pelo RX TX

OBS: Não se esqueça de conectar uma antena no modulo GSM, pelos pinos NET vai IPX ANT, norādes par attēlu.

Agora vamos ao programmatūra. Vamos izmanto biblioteca mraa que instalamos anteriormente, lai realizētu komunicētu sērijas ieeju vai moduli GSM un Dragonboard 410C.

Siga os passos para importar a biblioteca and testar a comunicação com vai 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 delay

importēt mraa

Dažādu parametru definēšana UART režīmā vai GSM modulis

ports = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (osta)

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

def rakstīt (msg):

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

Crie um loop para fazer un leitura do modulo GSM

kamēr True: r = uart.read (128), ja r! = "": print (r.decode ('UTF-8')) i = str (input ()) write (i) time.sleep (0.5)

  • Salve o arquivo e volte para konsolei
  • Izpildīt o arquivo

python gsm.py

Digite "AT", e se tudo conectado corretamente, você irá receber na tela and menens "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 an APN e outra que irá patēriņš un nossa API.

Primārais 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) rakstīt ('AT+SAPBR = 3, 1, "Contype", "GPRS"') time.sleep (0,5) rakstīt ('AT+SAPBR = 3, 1, "APN", "*****"') time.sleep (0.5) write ('AT+SAPBR = 3, 1, "USER", "*****"') time.sleep (0.5) rakstīt ('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 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 depende de cada operadora do SIM Card, buy it informar com a operador para saber quality or endereço da APN, usuário e senha.
  • Sagatavojiet qua a cada

Agora vamos īsteno função que irá enviar patērētāju un nossa API:

def sūtīt (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) rakstīt ('AT+HTTPPARA = "USERDATA", "Autorizācija: nesējs ******** ********* / r / n "') time.sleep (0.5), ja m ==' GET ': rakstīt (' AT+HTTPACTION = 0 ') cits: rakstīt (' AT+HTTPPARA = "SATURS", "application/x-www-form-urlencoded" ') time.sleep (0.5) write (' AT+HTTPDATA = '+str (len (d))+', 10000 ') time.sleep (0.5) rakstīt (str (t)) time.sleep (10) rakstīt ('AT+HTTPACTION = 1') time.sleep (6) rakstīt ('AT+HTTPTERM')

Segue algumas observações para estes comandos:

  • Funkcija 3 parametri. '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
  • Komandā “AT+HTTPS” ir opcionāls risinājums, bez SSL izmantošanas
  • O argumento 'm' deverá ser enviado no formato querystring (Piem., Msg = ola+dragonboard & arg2 = teste &…)
  • O comando 'AT+HTTPPARA = "USERDATA…' opcional, apenas se houver a needididade de definir algum header no request

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

Antes de adquirir seu SIM Card, consulte se a operadora trabalha com a mesma tecnologia que or modulo GSM que vocester estzer utilizando, mas é aconselhável utilizar o SIM Card de empresas especializadas em comunicação IoT, por questes of saderīgs eadade.

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

4. solis. Sagatavojiet pūšamo dēli

Gatavs disponēšanas līdzeklis Se Comunicar Com a Dragonboard
Gatavs disponēšanas līdzeklis 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. Este modulo já possui WiFi, ievadot un atvieglojot saziņu.

Para nos comunicarmos com un nossa Dragonboard 410C, precīzijas 2 bibliotecas:

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

Nosakiet dažādas izmaiņas, kā definējiet Wi-Fi un brokeri, kā arī Dragonboard 410C:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // Nosaukums, kas definēts šajā Hotspot vietā Dragonboard
  • const char* PASSWORD = ""; // Insira o valor da senha se houver definido na configuração do Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Izpildiet "ip a" ar Dragonboard descobrir vai ip da rede interna

Pārbaudiet, vai ir pieejams Wi-Fi, kas ir pieejams, un klienta MQTT ir pieejams:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Lai izveidotu iestatījumus, uzsāktu WIFI un komunikācijas MQTT savienojumu:

  • WiFi.begin (SSID, PASSWORD);
  • MQTT.setServer (BROKER, 1883);
  • MQTT.setCallback (atzvanīšanas_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 problem com intermitência. Para isso crie um função com as linhas abaixo, e chame-a fun função de loop:

void checkConnections () {

ja (! MQTT.connected ()), kamēr (! MQTT.connected ());

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

}

Beidzot, iremos enviar algum dado para a Drabonboard 410C, com vai seguinte comando:

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

Não vou entrar em detailshes 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 a nossa 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. Paralēli izpildiet kā konsolēm Dragonboard 410C:

  • sudo apt-get instalēt python pip
  • pip instalēt 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:

importēt paho.mqtt.client kā mqttimport sys

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

def onConnect (klients, lietotāja dati, karogi, rc): client.subscribe (TopicSubscribe)

def onMessage (klients, lietotāja dati, ziņojums): ziņojums = str (msg.payload) drukāt (ziņojums)

try: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Brokeris, ports, taimauts) client.loop_forever () izņemot: 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'.

Izpildiet arquivo com 'python mqtt.py', un, piemēram, kā iepriekšējie priekšteči estiverem sido realizadas com percesso, você receberá na sua tela os dados que estão sendo enviados pelo seu dispositivo externo, no caso deste examplelo, pelo NODEMCU.

Piezīme 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 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'.

Svarīga informācija: NODEMCU ESP8266 ESP-12, realitāte, ieteikumi, konsultācijas vai dokumentu saites saite. 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 facilitita a troca rapidamente.

5. solis: Apsveriet Finais

Se estiver tudo configurado como descritos nos steps anteriores, você já está comunicando o seu dispositivo IoT com o mundo, com auxilio da sua Dragonboard 410C. É importante ressaltar que neste instructable foram mencionados vários hardwares e softwares, mas apenas para fino de exem. 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 critério de quem for executar o projeto. Para definir 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, e a Consindo através destas frentes.

Ieteicams: