Sommario:

Comunicazione IoT con Dragonboard 410C: 5 passaggi
Comunicazione IoT con Dragonboard 410C: 5 passaggi

Video: Comunicazione IoT con Dragonboard 410C: 5 passaggi

Video: Comunicazione IoT con Dragonboard 410C: 5 passaggi
Video: Innovation Coffee - Low-code IoT Development with Blynk and Airius 2024, Dicembre
Anonim
Comunicazione IoT con Dragonboard 410C
Comunicazione IoT con Dragonboard 410C

È bastante come 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 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.

Per que você use serviços como o do seu 'Zé da água', que você sempre confiou, será mostrado come montar a base de uma plataforma IoT com a dragonboard, per resolver essa comunicação.

Passaggio 1: preparare una Sua Dragonboard 410C

Prepara una Sua Dragonboard 410C
Prepara una Sua Dragonboard 410C

Neste passo vamos prepara a nossa Drabonboard 410C per se tornar o gateway da nossa estrutura IoT dentro dalla sua casa.

Primeiramente, vamos instalar um sistema operacional na placa. Caso si opta per utilizzare la localizzazione GPS, che è necessario modificare o cliente nessun momento di registro, sugerimos que instale o sistema operativo Linaro 17.04.1, caso contrario, vedi come opções de na página da Dragonboard 410C da 96boards, nuovo collegamento.

Após a instalação do seu sistema operacional, instale a biblioteca libmraa para a utilização das GPIOs, da Dragonboard 410C. Para isso, você deve seguir os passis abaixo (abra o console do seu system operacional para executar os commands):

Pré requisitos libmraa

  • sudo apt-get update
  • sudo apt-cache search 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

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

Para utilizar a biblioteca com Python, que é o caso deste instructable, vamos adicionar o 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
  • 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 saiir do arquivo.

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

Agora, vamos instalar os softwares for facilitar a leitura do GPS (lembrnado que para a utilização dessa part, recomendamos o use do sistema operacional 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: Antena interna da Drabonboard é para ser utilizada fora de case em locais mais abertos. Até mesmo em locais abertos, a leitura pode demorar de 5 a 10 minuti, 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. Para resolver, podemos utilizar antenas externas, tanto para wi-fi, quanto para o 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 necessário.

Per realizzare o cambiare le anteprime interne per le parti esterne, è necessario seguire i procedimenti per la disponibilità di un documento Qualcomm senza il collegamento.

OBS: È più facile che si incontrino i componenti (condensatori, resistenze e induttori) su Internet che si trovano nella scheda fisica. O mesmo para antenas, que sugerimos a compra no site da SmartCore.

Per il nostro gateway non è necessario configurare e connettere wifi, con internet, iremos utilzar um modulo GSM. I moduli GSM esterni, generalmente necessitano di una tensione specifica e specifica, di un dispositivo mobile in cui si desidera alimentare direttamente l'ingresso di alimentazione da Dragonboard 410C.

L'immagine di questo passo è sufficiente, è possibile utilizzare i ponti per l'alimentazione del modulo GSM (ATENÃO COM A POLARIDADE).

Per realizzare una comunicazione interna, utilizzare il protocollo MQTT e definire un hotspot come Dragonboard 410C. Vamos instalar o software 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 software já estará instalado e ativo.

Per definire un suo Dragonboard 410C come hotspot, si prega di notare:

  • Clique no icone de redes no canto lower direito
  • Fai clic su "Modifica connessioni"
  • Após abrir a tela 'Connessioni di rete', clicca su 'Aggiungi'
  • Seleziona un'opzione Wi-fi, e clicca su 'Create'
  • Ao abrir a tela de configuração da rede, insira um nome em SSID
  • Na mesma tela mude para 'Hotspot' no campo 'Mode'
  • Caso queira incluir uma senha para a rede, configure-a na aba 'Wi-fi Security'
  • Per finalizzare la cricca su 'Salva'

Agora qualquer dispositivo pode se conectar à rede exclusiva da Dragonboard 410C, e utilizar o seu broker per publicar e subcrever.

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

Passaggio 2: prepara un'API Sua Cloud

Este passo é algo que depende muito de projeto para projeto. Pode ser que precise ser feita do zero, ou o cloud já existe com a necessidade 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 mais completo, 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 passis para iniciar a sua aplicação:

  • Acesse o site da Heroku, per questo link
  • Clique em 'Registrati', no canto superior dieito, para iniciar o seu registro
  • Após o registro, em sua dashboard, clique em 'New' e scolha a opção 'Create New App'
  • Insira um nome para a sua aplicação
  • In seguito, fai clic su "Crea app"
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Installa o Heroku Cli, per fazer os deploys per una sua applicazione, seguendo le istruzioni per il tuo sistema operativo, de acordo con un link documentação deste
  • Agora você deverá seguir as instruções de deploy para começar o desenvolvimento da sua API, disponível em

Seguire os passi acima, já temos a pasta na sua máquina, para desenvolver a sua API. Agora vamos instalar o NodeJS e a framework Express, seguindo os passis 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 che utilizza o Advanced Packaging Tool (APT), o outro sistema operativo, consultare o link
  • Agora esegue npm install express-generator -g
  • Acesse o diretório que foi realizado os procedimenti da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicie aplicação node com 'npm init', e os outros comandis abaixo
  • cd../
  • espresso _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • installazione npm

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

  • Acesse a pasta 'percorsi'
  • 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('/', 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ê realizzare o distribuire fare seu app per un Heroku:

  • login heroku
  • git add.
  • git commit -am "commit iniziale"
  • git push heroku maestro

Com isso você já tem seus endpoints de testes prontos. Per testare gli endpoint sugerimos instalar o software Postman, neste link. Inserisci un url da seu app (Es: https://_SEU_APP_.herokuapp.com/) e selecione o método GET ou POST, e clique em 'SEND'. Para o metodo POST, siga os passi:

  • Clique na aba 'Corpo'
  • Selecione a opção 'x-www-form-urlencoded
  • Insira o chiave 'msg'
  • Em Value, pode inserir qualquer mensagem

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

Passaggio 3: Installazione E Manipulando O Modulo GSM

Installazione E Manipulando O Modulo GSM
Installazione E Manipulando O Modulo GSM
Installazione E Manipulando O Modulo GSM
Installazione E Manipulando O Modulo GSM

Per non dipendere dalla connessione Wifi, utilizzare la comunicazione GSM per aprire i dati per l'utilizzo di una nuova API, configurata senza passaggi precedenti.

È possibile utilizzare i moduli GSM omologati, ma per i test non è possibile utilizzare il modulo più semplice e richiedere un momento o modulo 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 una nossa Dragonboard 410C.

Come mencionado no step 'Prepare a sua Dragonboard', teremos que regular a tensão para utilizar o module. Para isso utilizaremos um regulador de tensão step down, para diminuir a tensão de entrada. Utilizamos o Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, per questo teste

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

  • Collegati a una versione positiva di Dragonboard, come illustrato senza alcun passaggio 'Prepare a sua Dragonboard', e collegati a 'IN +' e regola la tensione
  • 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
  • IMPORTANTE: 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 estivar com esse valor. Caso seja utilizado outro modulo GSM, verifique a tensão adequada. Questo passo deve essere ripetuto, sempre che sia incluso l'hardware, poi può variare.
  • Conecte a saída do regulador de tensão 'OUT +' no pino VCC, indicado na imagem 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 fare 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
  • Collegare o pino GND fare modulo GSM senza pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. È fondamentale per stabilizzare o tráfego de dados pelo RX TX

OBS: Non è necessario connettere un'antenna senza modulo GSM, pinos NET ou IPX ANT, indica l'immagine del passaggio successivo.

Agora vamos ao software. Vamos utilizar a biblioteca mraa que instalamos anteriormente, para realizar a comunicação serial entre o module GSM and a Dragonboard 410C.

Siga os passis para importar a biblioteca e testar a comunicação com o módulo:

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

import mraa

Defina uma variável para o caminho da UART que conectamos o modulo GSM

porta = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart(porta)

Richiedi una funzione per l'ambiente per il comando AT per il modulo GSM

def scrivere (messaggio):

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

Crie um loop para fazer a leitura do modulo GSM

while 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
  • Esegui o arquivo

python gsm.py

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

Per il nostro modulo non dipende dal comando digitale AT - contrasti nidificati link - faremos duas funções, ma che irá realiza una connessione con un APN e oltre che irá consuma una nossa API.

A 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 comandi:

  • 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 alter o valor na função connect() para o indexador da sua rede exibida após o comando AT_COPS=?
  • I comandi di definizione dell'APN possono essere utilizzati con asteriscos poi dipende da cada operadora do SIM Card, procure se informar com a operador para sabre qual o endereço da APN, usuário e senha.
  • Repare que a cada

Agora vamos implementar a função que irá enviar consumir a nossa API:

def send(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", "Autorizzazione: Bearer ******** *********\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 comandi:

  • A função recebe 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
  • O comando 'AT+HTTPS' è opzionale, nessun caso da sua api utilizar SSL
  • O argumento 'm' deverá ser enviado no formato querystring (Es: msg=ola+dragonboard&arg2=teste&…)
  • O comando 'AT+HTTPPARA="USERDATA…' é opcional, apenas se hover a necessidade de definir algum header no request

Più informazioni su sugiro rodar cada comando, individualmente e em ordem, antes da utilização.

Prima di acquistare una SIM Card, consultare un operatore trabalha con una tecnologia mesma che o modulo GSM che você estivar utilizando, ma è possibile utilizzare una SIM Card di imprese specializzate in comunicazione IoT, per ricerche di compatibilità, personalizzazione e praticità.

Com'è possibile configurare e implementare facilmente, è pronto per tutte le comunicazioni con altri nuovi Dragonboard 410C.

Step 4: Preparando Dispositivi Para Se Comunicar Com a Dragonboard

Preparando Dispositivi Para Se Comunicar Com a Dragonboard
Preparando Dispositivi Para Se Comunicar Com a Dragonboard

Neste passo, iremos utilizar a placa de prototipagem NODEMCU ESP8266 ESP-12, come esempio. Esta e qualquer outra placa de prototipagem, como o nome já diz, é ótima para protótipos, mas no moment em que o hardware for definido come produto, deve ser desenvolvido um complexo dedicado. Questo modulo consente di accedere al WiFi, è possibile facilitare la comunicazione.

Para nos comunicarmos com a nossa Dragonboard 410C, precisazioni di 2 biblioteche:

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

Defina como variáveis globais, as definições da rede Wi-fi e do broker, ambos da nossa Dragonboard 410C:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // Nome da rede definida come Hotspot na Dragonboard
  • const char* PASSWORD = ""; // Insira o valor da senha se hover definido na configuração do Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // Execute 'ip a' na sua Dragonboard para descobrir o ip da rede interna

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

  • WiFiClient espWIFI;
  • PubSubClient MQTT(espWIFI);

Funzionalità di configurazione, avvio di connessione WIFI e comunicazione MQTT:

  • WiFi.begin(SSID, PASSWORD);
  • MQTT.setServer(BROKER, 1883);
  • MQTT.setCallback(callback_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);}

}

E finalmente, iremos enviar algum dado para a Drabonboard 410C, con il seguente comando:

MQTT.publish('_NOME_DO_TOPICO_', "Ola Dragonboard");

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

Voltando per la nostra Dragonboard410C, vamos criar um arquivo teste in python, para checarmos os dados recebidos pelo broker, mas antes, vamos instalar uma biblioteca que nos auxiliará na conexão do broker. Para isso eseguire come 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:

import paho.mqtt.client come mqttimport sys

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

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

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

prova: client = mqtt. Client() client.on_connect = onConnect client.on_message = onMessage client.connect(Broker, port, timeout) client.loop_forever() tranne: sys.exit(0)

Neste arquivo vamos definimos duas funções, a 'onConnect' que será chamada no moment em que houver conexão com o broker, e a função 'onMessage' que será executada quando houver mensagem recebida nos subscribes 'Connect na fun'ção '

Esegui l'archivio con 'python mqtt.py', e tutto ciò che è stato eseguito prima dell'estate se realizzato con successo, voce ricevuta sulla sua tela su dati che è stato inviato al dispositivo esterno, nessun caso di esempio, gruppo NODEMCU.

Notare che funzione ha onMessage, che riceve informazioni ed esibizioni su console. Então é neste ponto que você tratará os dados recebidos e no moment 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 manipolando o modulo GSM'.

Nota importante: per realizzare l'alimentazione da placa NODEMCU ESP8266 ESP-12, è specifico, si consiglia di consultare il documento per il collegamento. 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 facili a troca rapidamente.

Passaggio 5: Considerazioni finali

Se si può configurare l'estate come descritto in tutti i passaggi precedenti, si può comunicare con il proprio dispositivo IoT e si può utilizzare anche la Dragonboard 410C. È importante ressaltar que nidificare un foram istruibile menzionato vari hardware e software, ma più vantaggi per le pinne di esempio di comunicazione. Sensori e risorse aggiuntive che ricorrono al server non utilizzato all'esterno, tutto o la preparazione e l'implementazione della sua API Cloud, i ricorsi dell'hardware legati a Dragonboard, e la forma con i dati che seguono, come criteri per l'esecuzione o il progetto. Para definir como produto final, sugerimos apĺicar as tecnologias e procedimenti adeguati 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 consumando através destas frentes.

Consigliato: