Daftar Isi:

Komunikasi IoT dengan Dragonboard 410C: 5 Langkah
Komunikasi IoT dengan Dragonboard 410C: 5 Langkah

Video: Komunikasi IoT dengan Dragonboard 410C: 5 Langkah

Video: Komunikasi IoT dengan Dragonboard 410C: 5 Langkah
Video: Prototyping With Arduino : Course Introduction 2024, Juli
Anonim
Komunikasi IoT dengan Dragonboard 410C
Komunikasi IoT dengan Dragonboard 410C

bastante comum desenvolver ou, até mesmo, comprar um produto IoT para a sua casa. Abrir uma cortina, ligar uma tomada, ajustar a temperature 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 vendor 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.

Langkah 1: Siapkan Sua Dragonboard 410C

Siapkan Sua Dragonboard 410C
Siapkan Sua Dragonboard 410C

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

Primeiramente, vamos instalar um sistema operacional na placa. Pilih opsi untuk digunakan secara lokal GPS, lihat pilihan klien tidak ada pendaftaran saat ini, lakukan instalasi atau operasi sistem Linaro 17.04.1, opsi contrário, veja sebagai opsi dari Dragonboard 410C, neste linkboards.

Após a instalao do seu sistema operacional, instal a biblioteca libmraa para a utilizao das GPIOs, da Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):

Pre 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

Instalao mraa

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

Untuk menggunakan biblioteca com Python, que é o caso deste instrucable, vamos adicionar o export da nossa variavel de ambiente do Python untuk biblioteca. Untuk itu, gunakan editor de texto de sua preferência para seguir os passos abaixo, vamos utilziar atau 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!' dan masukkan para salvar e sair do arquivo.

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

Agora, vamos instalar os softwares untuk facilitar a leitura do GPS (lembrnado que para a utilização dessa parte, recomendamos o uso do sistem operasi Linaro 17.04.1). Tidak ada konsol, jalankan atau perintah abaixo:

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

Para testar, jalankan o código abaixo, também no seu console:

gpsmon –n

OBS: Sebuah antena interna da Drabonboard é para ser utilizada fora de case e em locais mais abertos. Até mesmo em locais abertos, a leitura pode demorar de 5 a 10 minutos, então não fique preocupado se não exibir sebagai informações prontamente.

Pensando no projeto, com certeza iremos encapsular o(s) hardware 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.

Realisasi untuk beralih lakukan antenas internas para externas, será perlu seguir os prosedur untuk Qualcomm disponibilizou no documento deste link.

OBS: muito mais fácil de encontrar os komponen (kapasitor, resistor dan indutor) di internet lakukan que em loja física. O mesmo para antenas, que sugerimos a compra no site da SmartCore.

Untuk menentukan gateway tidak bergantung pada konfigurasi uma dan koneksi wifi, com a internet, iremos utilzar um módulo GSM. Unduh GSM externos, geralmente necessitam de uma tenso estável e específica, então vamos criar uma saída de alimentao diretamente da entrada de alimentao da Dragonboard 410C.

Langkah demi langkah, lihat langkah-langkah yang akan dilakukan untuk menentukan langkah-langkah yang akan digunakan untuk menjual semua peralatan untuk melakukan modulo GSM (ATENÇÃO COM A POLARIDADE).

Para realizar a comunicação interna, iremos utilizar o protokol MQTT, dan mendefinisikan hotspot como 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á está instalado dan ativo.

Untuk menentukan sebuah sua Dragonboard 410C como um hotspot, siga os passos:

  • Clique no icone de redes no canto inferior direito
  • Klik 'Edit koneksi'
  • Segera lakukan 'Koneksi jaringan', klik 'Tambah'
  • Pilih Wi-fi pilihan, dan klik 'Buat'
  • 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'
  • Klik para finalizar em 'Simpan'

Agora qualquer dispositivo pode se conectar rede eksklusif da Dragonboard 410C, dan gunakan broker untuk publik dan subscrever.

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

Langkah 2: Siapkan Sua Cloud API

Este passo é algo que depende muito de projeto para projeto. Pode ser que tepat 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 dapat diinstruksikan. Caso queira seguir um tutorial lengkap, sugiro ver o artigo deste link. Em todo caso, sugiro desenvolver algo mais estruturado, caso a finalidade do projeto seja komersial.

Primeiramente, precisamos de um lugar para colocarmos a nossa API, e para não termos gastos com estes testis, iremos utilizar a plataforma Heroku. Siga os passos para iniciar a sua aplicação:

  • Akses ke situs da Heroku, melalui tautan
  • Klik 'Sign Up', no canto superior dieito, para iniciar o seu registro
  • Após o registro, em sua dashboard, klik 'Baru' dan escolha a opção 'Buat Aplikasi Baru'
  • Insira um nome para a sua aplicação
  • Em seguida, klik 'Buat Aplikasi'
  • Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', tidak ada canto superior dirento
  • Instal Heroku Cli, para fazer os deploys para a sua aplicação, seguindo a instrução para seu sistema operacional, 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 pasta na sua máquina, para desenvolver a sua API. Agora vamos instalar o NodeJS dan kerangka kerja 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
  • Caso não esteja utilizando uma distribuição Linux que use o Advanced Packaging Tool (APT), ou outro sistem operasi, konsultasikan o link
  • Agora jalankan npm install express-generator -g
  • Akses ke direktori untuk mengetahui realisasi dan prosedur aplikasi da Heroku com 'cd _PASTA_SEU_APP_'
  • Inicie a aplikasi node com 'npm init', e os outros comandos abaixo
  • cd../
  • ekspres _PASTA_SEU_APP_
  • cd _PASTA_SEU_APP_
  • instal npm

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

  • Akses 'rute' pasta
  • abra o arquivo 'index.js'
  • Termasuk 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 = 'kosong'; 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ê menyadari atau menerapkan aplikasi seu para Heroku:

  • login heroku
  • git tambahkan.
  • git commit -am "komit awal"
  • git push heroku master

Com isso você já tem seus endpoints de testes prontos. Para testar os endpoints sugerimos instalar o perangkat lunak Tukang pos, tautan bersarang. Insira a url da seu app (Contoh: https://_SEU_APP_.herokuapp.com/) dan pilih GET ou POST, e klik 'KIRIM'. Para o método POST, siga os passos:

  • Klik na aba 'Tubuh'
  • Pilih opsi 'x-www-form-urlencoded
  • Insira o key 'pesan'
  • Nilai Em, pode inserir qualquer mensagem

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

Langkah 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

Untuk tidak bergantung pada koneksi Wifi, gunakan komunikasi GSM untuk mengetahui aplikasi untuk menggunakan API nossa, konfigurasikan tanpa langkah sebelumnya.

aconselhável a utilizao de modulos GSM homologados, mas para os testes lakukan nosso protótipo iremos utilizar um módulo simples e que atende a nossa demanda do 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 menghubungkan koneksi, masuk ke modul GSM dan nossa Dragonboard 410C.

Como mencionado no step 'Siapkan sua Dragonboard', teremos que regular a tensão para utilizar o modulo. Para isso utilizaremos um regulador de tenso mundur, para diminuir a tensão de entrada. Memanfaatkan Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf, para este teste

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

  • Hubungkan sesuatu yang positif da Dragonboard, como ilustrado no step 'Siapkan sebuah sua Dragonboard', dan hubungkan 'IN +' lakukan regulador de tensão
  • Menghubungkan Dragonboard, como ilustrado no step 'Siapkan sua Dragonboard', dan hubungkan 'IN -' lakukan regulador de tensão
  • PENTING: Ligue a Dragonboard, regulasi com o auxilio de uma chave de fenda, regulasi 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 utilizado outro modulo GSM, verifikasi puluhan kali memadai. Este passo deve ser repetido, semper que houver inclusão de um hardware, pois pode haver variação.
  • 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
  • Koneksi RXD lakukan modulo GSM no pino 5 UART 0 TX da Dragonboard, ambos indicatos nas imagens de capa deste step
  • Terhubung dengan pino TXD melakukan modulo GSM no pino 7 UART 0 RX da Dragonboard, menunjukkan langkah-langkah yang harus dilakukan
  • Terhubung ke pino GND lakukan modulo GSM no pino 1, 2, 39 OU 40 GND da Dragonboard, ambos indicados nas imagens de capa deste step. Isto é fundmental para estabilizar o tráfego de dados pelo RX TX

OBS: Tidak ada koneksi ke antena tanpa modulo GSM, pelos pinos NET atau IPX ANT, indikasikan langkah yang sesuai.

Perangkat lunak Agora vamos ao. Vamos utilizar a biblioteca mraa que instalamos anteriormente, para realizar a komunikasi serial entre o modul GSM dan Dragonboard 410C.

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

  • Menangis um arquivo com a extensão.py, como sugestão 'gsm.py'
  • Tidak ada arquivo, inicie importando a biblioteca mrra, e também a biblioteca time para definir delays

impor mraa

Tentukan semua variasi untuk caminho da UART dengan koneksi dan modulo GSM

port = '/dev/tty96B0'

Contoh UART com ajuda da biblioteca mraa

uart = mraa. Uart(port)

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

def menulis (pesan):

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

Menangis um loop para fazer a leiura do modulo GSM

while Benar: 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
  • Jalankan o arquivo

python gsm.py

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

Semua pilihan Anda tergantung pada digitarmos cada comando AT - encontrados neste link - faremos duas funções, uma que irá realizar a conexão com a APN dan outra que irá consumir a nossa API.

A primeira função será de conexão:

pasti terhubung():

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 algumaes 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 apa komando AT_COPS=?
  • Perintah untuk menentukan APN dan akses ke lokasi tergantung pada operasi kartu SIM, dapatkan informasi yang lengkap dari operador para saber qual o endereço da APN, usuário dan senha.
  • Repare que a cada

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

def kirim(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", "Otorisasi: Pembawa ******** *********\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 algumaes para estes comandos:

  • Menyenangkan menerima 3 parameter. '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' é opcional, no caso da sua api utilizar SSL
  • O argumento 'm' deverá ser enviado tanpa format querystring (Mis: msg=ola+dragonboard&arg2=teste&…)
  • O comando 'AT+HTTPPARA="USERDATA…' é opcional, apenas se houver a necessidade de definir algum header no request

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

Antes untuk meminta SIM Card, berkonsultasi dengan operadora trabalha com a mesma tecnologia que o modul GSM que você estiver utilizando, mas é aconselhável utilizar o SIM Card de empresas especializadas em comunicao IoT, por quests.

Com as configuraes and implementaes acima, estamos prontos para nos comunicarmos com a nuvem através da nossa Dragonboard 410C.

Langkah 4: Persiapan Dispositivos Para Se Comunicar Com a Dragonboard

Persiapan Dispositivos Para Se Comunicar Com a Dragonboard
Persiapan Dispositivos Para Se Comunicar Com a Dragonboard

Neste passo, iremos utilizar 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 untuk definido como produto, deve ser desenvolvido um complexo dedicado. Este módulo já possui WiFi, ento irá facilitar a comunicação.

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 comunicao com o broker MQTT

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

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

Permintaan untuk rede Wi-fi dan tempat instan untuk klien MQTT com este objeto:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (terutama WIFI);

Dari penyiapan, mulai koneksi WIFI dan komunikasi MQTT:

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

Tidak ada sua função de loop, adicione a linha abaixo para que o MQTT entre em loop:

MQTT.loop();

Suarakan untuk bersenang-senang dengan verifikasi koneksi WIFI dan broker, tanpa masalah komunikasi intermiten. Para isso crie um função com sebagai linhas abaixo, e chame-a na função de loop:

batal periksaKoneksi(){

if (!MQTT.connected()) while (!MQTT.connected());

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

}

Akhir dari, iremos enviar algum dado para a Drabonboard 410C, com o seguinte comando:

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

Tidak ada entrar em detalhes para exemplificar a leitura de sensores dll, pois vai variar muito de projeto para projeto e de hardware untuk hardware. Basta termasuk esta linha onde necessário, que os dados serão enviados para broker seu.

Voltando para 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 dijalankan sebagai linhas abaixo no console da Dragonboard 410C:

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

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

impor paho.mqtt.client sebagai 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(klien, userdata, msg): pesan = str(msg.payload) print(pesan)

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

Temukan semua kesenangan, sebuah 'onConnect' dan 'onConnect' tidak ada momen untuk mencari tahu tentang broker, dan bersenang-senanglah 'onMessage' dengan executada quando houver mensagem recebida nos subscribes definidos na fun'ção.

Jalankan 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 caca de externo.

Catatan que é na função onMessage, que recebemos a informação e exibimos nos seu console. Masuk ke dalam 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 dan manipulando modulo GSM'.

Uma observao importante: Para realizar a alimentao da placa NODEMCU ESP8266 ESP-12, em especifico, sugiro que Consultem o documento deste link. Bersabarlah saat-saat, tenang dan sederhana 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.

Langkah 5: Mempertimbangkan 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. É resaltar penting que neste foram yang dapat diinstruksikan dan perangkat lunak contoh, perangkat keras dan elektronik. Sensor dan outros recursos que serão utilizados no dispositivo externo, todo o preparo dan implementao da sua API Cloud, os recursos dari ligado perangkat keras à Dragonboard, dan também a forma com que os dados são tratados untuk eksekusi, fica a crité. Para definir como produto final, sugerimos apĺicar as tecnologias and procedimentos adequados para tal

Gunakan aplikasi dan aplikasi, para os comerciantes ligados aos serviços, deixamos em aberto também, bastando trabalhar bem a sua API, dan consumindo através destas frentes.

Direkomendasikan: