Sadržaj:

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

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

Video: Comunicação IoT Com a Dragonboard 410C: 5 koraka
Video: Обзор и конфигурация модуля EBYTE LoRa 2024, Srpanj
Anonim
Comunicação IoT Com a Dragonboard 410C
Comunicação IoT Com a Dragonboard 410C

É bastante comum desenvolver ou, até mesmo, usporedite um produto IoT para a sua casa. Abrir uma cortina, ligar uma tomada, ajustar a temperature de um ambiente, monitorramento de segurança, entre outros benefícios 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 sistema 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.

Korak 1: Pripremite Sua Dragonboard 410C

Pripremite Sua Dragonboard 410C
Pripremite Sua Dragonboard 410C

Neste passo vamos priprema a nossa Drabonboard 410C za paranar tornar o gateway da nossa estrutura IoT dentro da sua casa.

Primarno, možete instalirati operativni sistem na placu. Caso você opte putem upotrebe lokalizacijskog GPS -a, ako želite pristupiti klijentima bez trenutka registracije, možete instalirati operativni sustav Linaro 17.04.1, caso contrário, već kao opcije na stranici za Dragonboard 410C do 96 ploča, neste link.

Instalirajte do operacijskog sustava, instalirajte biblioteku libmraa za korištenje GPIO -a, da Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacijski para izvršitelj os comandos):

Pré requisitos libmraa

  • sudo apt-get ažuriranje
  • sudo apt-cache pretraživanje 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

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

Para utilizar a biblioteca com Python, que é o caso deste instructable, vamos adicionar or export da nossa variavel de ambiente do Python para a biblioteca. Para isso, use o editor de texto de sua preferência para seguir os passos abaixo, vamos utilziar o VIM:

  • sudo vim ~/.bashrc
  • pressione a teclar i, para iniciar a edição do arquivo
  • dodatak a linha seguinte no final do arquivo: export PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find /usr /local -name mraa.py))
  • pressione 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, vamos instalar os softwares para facilitar a leitura do GPS (lembrnado que para a utilização dessa parte, recomendamos o uso do system operational Linaro 17.04.1). No seu console, execute o comando abaixo:

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

Para testar, izvršite o código abaixo, também no seu console:

gpsmon –n

OBS: A antena interna da Drabonboard é para ser utilizada fora de cases e em locais mais abertos. Até mesmo em locais abertos, leitura pode demorar de 5 a 10 minutos, 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. Za razrješivač, podemos iskorištavanje vanjskih antena, tanto para wi-fi, kvantno za GPS.

OBS: A instalação da antena externa não é um processdimento tão simples para quem não tem familiaridade com procedimentos de soldagem com SMD, portanto, procure um serviço especializado se needário.

Za realizaciju o switch do das antenas internas para externas, será neophodário seguir os procedimentos que Qualcomm disponibilizou no documento deste link.

OBS: É muito mais fácil de encontrar os komponente (kapacitivnosti, otpornosti i induktori) na internetu do que em loja física. O mesmo para antenas, que sugerimos a compra no site da SmartCore.

Para que nosso gateway não fique dependente de uma configuração e conexão wifi, com a internet, iremos utilzar um módulo GSM. Os módulos GSM eksternos, generalno neophodan de uma tensão estável e específica, 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 que deverá ser utilizado para a soldagem dos cabos para alimentação do modulo GSM (ATENÇÃO COM A POLARIDADE).

Za realizaciju interne komunikacije, iremos korištenja ili protokola MQTT -a, definitivno za Dragonboard 410C zajedničku žarišnu točku. Vamos instaliran ili softver Mosquitto para 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 softveru za instalaciju i ativo softvera.

Za definiciju Dragonboard 410C kao žarišnu točku, pogledajte:

  • Clique no icone de redes no canto inferior direito
  • Kliknite "Uredi veze"
  • Após abrir a tela 'Network connections', kliknite na 'Add'
  • Odaberite i odaberite Wi-Fi i kliknite "Stvori"
  • Ao abrir a tela de configuração da rede, insira um nome em SSID
  • Na mesma tela mude za "Hotspot" bez campo "Mode"
  • Caso queira uključuje uma senha para a rede, configure-a na aba 'Wi-fi Security'
  • Para finalizar clique em "Save"

Agora qualquer dispositivo podešava se conectar à rede exclusiva da Dragonboard 410C, e iskoristiti o seu broker para publicar e subscrever.

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

Korak 2: Pripremite Sua Cloud API

Este passo é algo que depende muito de projeto para projeto. Pode ser que precizan ser feita do nula, ou o cloud já existe com a neophodidade de criar o mecanismo de API, ou até mesmo já ter uma API 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 mais completeto, sugiro ver o 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 a nossa API, e para não termos gastos com estes testes, iremos utilizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Acesse site da Heroku, por este link
  • Kliknite na 'Sign Up', no canto superior dieito, para iniciar o seu registro
  • Após o registerro, em sua dashboard, click the 'New' e escolha and opção 'Create New App'
  • Insira um nome para a sua aplicação
  • Em seguida, click the "Create App"
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Instalirajte Heroku Cli, para fazer os implementira za sua aplikaciju, osigurajte instrukcije za operacijski sustav, de acordo com a dokumentacija deste link
  • Agora você deverá seguir as instruções de deploy para começar o desenvolvimento da sua API, disponível em

Seguindo os passos acima, já temos a pasta na sua máquina, para desenvolver a sua API. Agora vamos instaliran o NodeJS -u i okvirnom Express -u, pazite na 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
  • Kako ne biste koristili distribuirajuću distribuciju Linuxa, koristite napredni alat za pakiranje (APT), ili operacijski sustav izvan sustava, konzultirajte se ili povežite
  • Agora izvrši npm install express -generator -g
  • Acesse o diretório que foi realizado os procedimentos da aplicição da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicirajte aplicação čvor com 'npm init', e os outros comandos abaixo
  • cd../
  • izraziti _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm instalirati

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

  • Acesse "rute" tjestenine
  • abra o arquivo 'index.js'
  • Uključuje 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 = 'prazno'; 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ê shvatiti o implementaciji do seu aplikacije za Heroku:

  • heroku prijava
  • git add.
  • git commit -am "početno urezivanje"
  • git push heroku majstora

Com isso você já tem seus endpoints de testtes prontos. Da biste provjerili krajnje točke, instalirajte softver Postman, nema veze. Upišite url da seu aplikaciju (npr.: https://_SEU_APP_.herokuapp.com/) i odaberite stavku METODO DOBITE POST, ili kliknite "SEND". Para o método POST, siga os passos:

  • Clique na aba "Tijelo"
  • Odaberite i opção 'x-www-form-urlencoded
  • Unutar ključa "poruka"
  • Em Value, pode inserir qualquer mensagem

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

Korak 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

Kako ne biste ovisili o umreženom Wi -Fi -ju, možete koristiti komunikacijski GSM za uklanjanje caminho de dados -a za korištenje nossa API -ja, bez koraka unaprijed.

Ako upotrijebite modularne GSM homologne uređaje, drugi parametri testiranja ne smiju biti zaštićeni prototipom i jednostavno se koriste jednostavnim i jednostavnim zahtjevima, odnosno modulom SIM800L. Este modulo foi produzido e distribuído em massa pelo fabricando, mas sem qualquer homologação, tanto que não está disponível no site do fabricando.

Vamos às conexões físicas, entre o modulo GSM e nossa Dragonboard 410C.

Como mencionado no step "Prepare a sua Dragonboard", teremos que regular a tensão para utilizar o modulo. Para isso utilizaremos um regulalador de tensão odstupiti, para diminuir a tensão de entrada. Upotreba Regulatora De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este teste

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

  • Priključite a saída pozitiva na Dragonboard, kao ilustraciju bez koraka 'Pripremite sua Dragonboard', e conecte na entrada 'IN +' do regulalador de tensão
  • Spojite negativnu poruku Dragonboarda, kao ilustraciju bez koraka "Pripremite dragonboard", ili napomenu "IN -" do regulalador de tensão
  • VAŽNO: 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 se može koristiti izvan modula GSM, provjeravajući odgovarajuću adekvatnost. Este passo deve ser repetido, semper que houver inclusão de um hardware, pois pode haver variação.
  • Priključite a saída do regulalador de tensão 'OUT +' bez pino VCC -a, na slici do koraka
  • Conecte a saída do regulalador de tensão 'OUT -' no pino GND, naznačeno na imagem de capa deste step
  • Conecte o pino RXD radi modulo GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Conecte o pino TXD do modulo GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Spoj ili pino GND do modulo GSM no pino 1, 2, 39 OU 40 GND do Dragonboard, ambos indicados nas imagens de capa deste step. Isto é fundmental para estabilizar o tráfego de dados pelo RX TX

OBS: Não nije esqueça de conectar uma antena bez modularnog GSM -a, pelos pinos NET ili IPX ANT, prikazuje slike na korak do mogućnosti koraka.

Agora vamos ao softver. Vamos koristi biblioteku mraa que instalamos anteriormente, kako bi realizirao zajednički serijski unos o modulu GSM i 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, como sugestão 'gsm.py'
  • No arquivo, inicie importando a biblioteca mrra, e também a biblioteca time para definir delay

uvoz mraa

Definirajte varijabilne parametre o tome da UART que povezuje modulo GSM

port = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (luka)

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

def pisanje (poruka):

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

Crie um loop para fazer i modularni GSM

dok je 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 para o console
  • Izvršite o arquivo

python gsm.py

Digitalizirajte "AT", e se tudo conectado corretamente, glasovni irá receber na tela a mensgem "OK"

Para que nosso módulo 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á consumir a nossa API.

Primeira 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) 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 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 ovisi o cada operadora na SIM kartici, nabavite informator com a operador para sabre qual o endereço da APN, usuário e senha.
  • Popravite que a cada

Agora vamos implementator a função que irá enviar konzumira nossa API:

def slanje (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: Nosilac ******** ********* / 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+HTTPTERM')

Segue algumas observações para estes comandos:

  • Função recebe 3 parametra. '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 za GET
  • O comando 'AT+HTTPS' je opcionalno, nema mogućnosti da sua api koristi SSL
  • O argumento 'm' deverá ser enviado bez formato querystring (Npr.: msg = ola+dragonboard & arg2 = teste & …)
  • O comando 'AT+HTTPPARA = "USERDATA…" je opcionalno, apeni se nalaze ako je potrebno definitivno zaglavlje alguma bez zahtjeva

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

Antes de adquirir seu SIM Card, konzultirajte se s operatora trabalha com a mesma tecnologia que o modulo GSM que você estiver utilizando, mas é aconselhável utilizar on SIM Card de empresas especializadas em comunicação IoT, por questões de compatiblebilidade, customs

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

Korak 4: Pripremite Dispositivos Para Se Comunicar Com a Dragonboard

Pripremite Dispozitivos Para Se Comunicar Com a Dragonboard
Pripremite Dispozitivos Para Se Comunicar Com a Dragonboard

Neste passo, iremos use a placa de prototipagem NODEMCU ESP8266 ESP-12, como exemplo. 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. Ako želite koristiti WiFi, jednostavno omogućite komunikaciju.

Para nos comunicarmos com a nossa Dragonboard 410C, precisamos de 2 bibliotecas:

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

Definirajte como variáveis globais, kao što definirate da ponovo koristite Wi-Fi i posrednika, ambos da nossa Dragonboard 410C:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // Nome da rede definida como Hotspot na Dragonboard
  • const char* PASSWORD = ""; // Insira o valor da senha se houver definido na konfiguraciji do Hotspota
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Izvršite 'ip a' na sua Dragonboard para descobrir o ip da rede interna

Crie o objeto de rede Wi-fi da placa e instancie of client MQTT com este Objeto:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

Na funkciji postavljanja pokrenite zajednički WIFI i komunikacijski MQTT:

  • WiFi.početak (SSID, LOZINKA);
  • MQTT.setServer (BROKER, 1883.);
  • MQTT.setCallback (povratni poziv_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 problemas com 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 ()) while (! MQTT.connected ());

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

}

Za kraj, iremos enviar algum dado para Drabonboard 410C, com o seguinte comando:

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

Não vou entrar em detaels para exemplificar a leitura de sensores e etc, pois vai variar muito de projeto para projeto e de hardver za hardver. Basta incluir esta linha onde neophodário, que os dados serão enviados para a seu brokera.

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. Paralelno izvršite kao linhas abaixo no console da Dragonboard 410C:

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

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

uvoz paho.mqtt.client kao mqttimport sys

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

def onConnect (client, userdata, flags, rc): client.subscribe (TopicSubscribe)

def onMessage (client, userdata, msg): message = str (msg.payload) ispis (poruka)

pokušajte: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (Broker, port, timeout) client.loop_forever () osim: sys.exit (0)

Neste arquivo vamos definimos duas funções, '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'.

Izvršite o arquivo com 'python mqtt.py', e se todas as conexões anteriores estiverem sido realizadas com sucesso, você receberá na sua tela os dados que estão sendo enviados pelo seu dispositivo externo, no caso deste exemploU, pelo NOD.

Napomena 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, pošalje se putem GSM -a za sua API, pela função 'send' do seu arquivo de teste gsm.py, que criamos no passo 'Instalando e manipulando o modulo GSM'.

Uo zapažanje važno: Za realizaciju i alimentação da placa NODEMCU ESP8266 ESP-12, e especifico, sugiro que konzultacije o dokumentu deste link. 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 facilita a troca rapidamente.

5. korak: Considerações Finais

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 a softwaficar. Os senzori i outros recursos que serão utilizados ne raspolažu vanjskim, todo o preparo e implementação da sua API Cloud, os recursos hardverski ligados à Dragonboard, e também forma com que os dados são tratados, koji je kriterij de quem za izvršenje projekta. Para definir como produto final, sugerimos apĺicar as tecnologias e procedimentos adequados 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 consumindo através destas frentes.

Preporučeni: