Kazalo:

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

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

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

É bastante comum desenvolver ou, até mesmo, primerjajte produkte IoT za vsak primer. 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 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. korak: Pripravite Sua Dragonboard 410C

Pripravite Sua Dragonboard 410C
Pripravite Sua Dragonboard 410C

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

Primeiramente, vamos instalar um system operational on placa. Caso você opte z uporabo lokalizacijskega GPS -ja, ki je nameščen za stranke brez trenutka registracije, sugerimos que namestite v operacijski sistem Linaro 17.04.1, caso contrário, uporabite kot opcije na strani Dragonboard 410C do 96boards, neste link.

Namestite operacijski sistem za namestitev, namestite biblioteco libmraa za uporabo GPIO -jev, da Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):

Pré requisitos libmraa

  • sudo apt-get posodobitev
  • sudo apt-cache iskanje 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 = IZKLOPLJENO
  • sudo make
  • 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 of 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
  • adicionar 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 software to facilitar and 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, execute 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 and 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 razreševalnik, nastavitve uporabe antenskih zunanjih naprav, tanto za 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, nabava storitve um especializado se potrebuje.

Če želite realizirati ali zamenjati do das antenas internas para externas, morate opraviti postopek, ki je potreben za uporabo Qualcommove dokumentacije brez povezave.

OBS: É muito mais fácil de encontrar z komponentami (kapacitivnostmi, odpornostmi in induktorji) na internetu do que em loja física. O mesmo para antenas, que sugerimos in compra no site da SmartCore.

Za več informacij o prehodih, ki niso odvisni od konfiguracije uma in e -povezave z wi -fi -jem, z internetom, lahko uporabljate GSM. Če uporabljate zunanji GSM -sprejemnik, ki je nujno potreben za zmanjšanje napetosti in e -pošte, morate vstopiti v sistem za alimentação direktomente za vnos hrane v 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).

Če želite realizirati mednarodno komunikacijo, uporabiti protokol MQTT ali definitivno skupno dostopno točko Dragonboard 410C. Namestite programsko opremo Mosquitto za tornarje in posrednike, ki izvajajo posredništvo 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.

Za definicijo in uporabo Dragonboard 410C kot vroče točke, glejte os:

  • Clique no icone de redes no canto inferior direito
  • Kliknite »Uredi povezave«
  • Após abrir a tela 'Network connections', kliknite na 'Add'
  • Izberite in izberite Wi-Fi in kliknite »Ustvari«
  • Ao abrir a tela de configuração da rede, insira um nome em SSID
  • Na mesma tela mude za 'Hotspot' no campo 'Mode'
  • Caso queira vključuje uma senha para a rede, configure-a na aba 'Wi-fi Security'
  • Para finalizar clique em 'Save'

Agora qualquer dispositivo pode se conectar à rede exclusiva da Dragonboard 410C, e izkoristiti ali seu posrednik za publicar in subscrever.

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

2. korak: Pripravite API za oblak Sua

Este passo é algo que depende muito de projeto para projeto. Pode ser que natančno ser feita do nič, ou v oblaku já existe com a needidade 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 testtes, iremos usear a a platetaforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Dostop do spletnega mesta Heroku, na povezavi
  • Kliknite na 'Sign Up', no canto superior dieito, para iniciar o seu registerro
  • Após o registerro, em sua armaturna plošča, klika em 'New' e escolha in opção 'Create New App'
  • Insira um nome para a sua aplicação
  • Em seguida, klikni 'Ustvari aplikacijo'
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Namestite Heroku Cli, para fazer os razmešča za sua applicação, seguindo inštrução para seu operacijski sistem, de acordo com a Documentação 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 testenine na sua máquina, para desenvolver in sua API. Agora vamos instalar o NodeJS e framework Express, seguindo 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
  • V tem primeru ne uporabljajte distribucijskega sistema Linux za napredno orodje za pakiranje (APT), ali zunaj operacijskega sistema, poiščite povezavo
  • Agora izvedite npm install express -generator -g
  • Acesse o diretório que foi realizado os processdimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Zaženite aplikacijsko vozlišče com 'npm init', e os outros comandos abaixo
  • cd../
  • izraziti _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • npm install

Za druge točke pripravljenih končnih točk, um de GET in um de POST, siga os passo abaixo:

  • Acesse "poti" testenin
  • abra o arquivo 'index.js'
  • Vključ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 ('/', function (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ê zavedati o uvajanju do seu app za Heroku:

  • heroku prijava
  • git add.
  • git commit -am "začetna zaveza"
  • git push heroku mojster

Com isso você já tem seus endpoints de testtes prontos. Če želite preveriti končne točke, namestite ali namestite programsko opremo Postman, neste link. Vnesite url da seu aplikacijo (npr.: https://_SEU_APP_.herokuapp.com/) in izberite izbrano metodo za POSTAVITE, kliknite »POŠLJI«. Para ali método POST, siga os passos:

  • Clique na aba "Body"
  • Izberite in opção 'x-www-form-urlencoded
  • Vnesite ključ 'msg'
  • Em Value, nastavite inserir qualquer mensagem

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

3. korak: 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

Če ne uporabljate brezžičnega omrežja Wi -Fi, ki uporablja komunikacijski GSM za uporabo, ne uporabljajte API -ja za nossa, nastavite brez koraka naprej.

Če uporabljate modularne homologne module GSM, več parametrov preskusnih sistemov ne uporabljate več kot enostavnih in enostavnih modulov 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 or modulo GSM and a nossa Dragonboard 410C.

Como mencionado no step 'Prepare a sua Dragonboard', teremos que regular a tensão para utilizar or modulo. Para isso utilizaremos um regulalador de tensão stopiti dol, para diminuir a tensão de entrada. Uporabite Regularor De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, za več informacij

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

  • Conecte a saída positiva da Dragonboard, como ilustrado no step 'Prepare a sua Dragonboard', e conecte in entrada 'IN +' do regulalador de tensão
  • Conecte a saída negativa da Dragonboard, como ilustrado no step 'Prepare a sua Dragonboard', e conecte on entrada 'IN -' do regulalador de tensão
  • POMEMBNO: Ligue a Dragonboard, e regule com o auxilio de uma chave de fenda, regulate 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 izkorišča outro modulo GSM, preveri in tensão adequada. Este passo deve ser repetido, semper que houver includesão de um hardware, pois pode haver variação.
  • Conecte a saída do regulalador de tensão 'OUT +' no pino VCC, indicado na imagem de capa deste step
  • Conecte a saída do regulalador de tensão 'OUT -' no pino GND, označeno na sliki de capa deste step
  • Conecte o pino RXD do modulo GSM no pino 5 UART 0 TX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Conecte ali pino TXD do modulo GSM no pino 7 UART 0 RX da Dragonboard, ambos indicados nas imagens de capa deste step
  • Povezava ali pino GND do modulo GSM brez pino 1, 2, 39 OU 40 GND do Dragonboard, ambos označuje nas slike kot zmogljiv korak. Isto é fundmental para estabilizar o tráfego de dados pelo RX TX

OBS: Não se esqueça de conectar uma antena ne modulo GSM, pelos pinos NET ali IPX ANT, prikazuje na sliki de zmogljiv korak.

Agora vamos ao programska oprema. Vamos uporablja biblioteco mraa que instalamos anteriormente, za realizacijo sporočila serijske enote o modulu GSM in 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

Določite možnost spreminjanja parametrov za UART, ki so povezani s modulom GSM

port = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (pristanišče)

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

def pisanje (sporočilo):

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

Crie um zanka za fazer in modularno GSM

medtem ko 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
  • Izvedite arquivo

python gsm.py

Številka »AT«, e se tudo conectado corretamente, você 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 definicião da APN estão com asteriscos pois depende de cada operadora do SIM Card, nabavi 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 consumir a nossa API:

def pošlji (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", "Pooblastilo: Nosilec ******** ********* / 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 parametre. '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 opcijsko, brez caso da sua api uporablja SSL
  • O argumento 'm' deverá ser enviado brez formato querystring (Ex: msg = ola+dragonboard & arg2 = teste &…)
  • O comando 'AT+HTTPPARA = "USERDATA…" je opcijsko, apenas se nahaja tam, kjer je potrebna definicija glave alguma brez zahteve

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

Predhodno nastavite kartico SIM, se obrnite na operaterja trabalha com in mesma tecnologia que o modulo GSM que você estiver uselidando, mas é aconselhável use or SIM Card de empresas especializadas em comunicação IoT, questões de compatibilidade, customs

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

4. korak: Pripravite Dispositivos Para Se Comunicar Com a Dragonboard

Preparando Dispositivos Para Se Comunicar Com a Dragonboard
Preparando Dispositivos 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 za definido como produto, deve ser desenvolvido um complexo dedicado. Če želite vzpostaviti brezžični internet, morate vzpostaviti komunikacijo.

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 posrednik MQTT

Definirajte kot različno globalno, kot opredeljujete za ponovno uporabo Wi-Fi in 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 nahaja dokončno v konfiguraciji do Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Izvedite '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);

V funkciji namestitve poiščite združeni WIFI in komunikacijski MQTT:

  • WiFi.začetek (SSID, GESO);
  • MQTT.setServer (BROKER, 1883);
  • MQTT.setCallback (povratni klic_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); medtem ko (WiFi.status ()! = WL_CONNECTED);}

}

E finalmente, iremos enviar algum dado para a Drabonboard 410C, com o seguinte comando:

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

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

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. Para isso izvedite kot 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:

uvozite paho.mqtt.client kot mqttimport sys

Posrednik = "_IP_DRAGONBOARD_" vrata = 1883 časovna omejitev = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

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

def onMessage (client, userdata, msg): message = str (msg.payload) tiskanje (sporočilo)

poskusite: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (posrednik, vrata, časovna omejitev) client.loop_forever () razen: 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'.

Execute 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.

Zapomnite si 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šljete prek 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".

Upoštevajte pomembne podatke: Za realizacijo in dodajanje pladnja NODEMCU ESP8266 ESP-12, posebnega, ustreznega nasveta ali dokumentacije o povezavi. 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

Se estiver tudo configurado como descritos nos steps anteriores, você já está comunicando o seu dispozitivo 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 e Impleção da sua API Cloud, oscursos of hardware ligados à Dragonboard, e também a form com que os dados são tratados, fica a kriterijué de quem for executar o projeto. 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.

Priporočena: