جدول المحتويات:

Comunicação IoT Com a Dragonboard 410C: 5 خطوات
Comunicação IoT Com a Dragonboard 410C: 5 خطوات

فيديو: Comunicação IoT Com a Dragonboard 410C: 5 خطوات

فيديو: Comunicação IoT Com a Dragonboard 410C: 5 خطوات
فيديو: Qualcomm launches its premium 820E embedded platform for IoT developers 2024, يوليو
Anonim
Comunicação IoT Com a Dragonboard 410C
Comunicação IoT Com a Dragonboard 410C

É bastante comum desenvolver ou، até mesmo، include 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 for vender a sua água e tão pouco ter recursos for adquirir e manter um sistema de pedidos.

استخدم Para que você 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.

الخطوة 1: قم بإعداد Sua Dragonboard 410C

قم بإعداد Sua Dragonboard 410C
قم بإعداد 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. Caso você opte por utilizar localização GPS، que ajudará muito o cliente no momento de registro، sugerimos que instale o sistema operacional Linaro 17.04.1، caso contário، veja as opções de na página da Dragonboard 410C da 96boards، neste link.

Após a instalação do seu sistema operacional، install a biblioteca libmraa para a utilização das GPIOs، da Dragonboard 410C. Para isso، você deve seguir os passos abaixo (abra o console do seu sistema operacional para exivar os comandos):

المتطلبات الأساسية 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 مرا

  • sudo git clone
  • sudo mkdir mraa / build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = إيقاف
  • sudo
  • sudo جعل التثبيت

Para utilizar a biblioteca com Python، que é o caso deste training، vamos adicionar o export da nossa variavel de ambiente do Python para a biblioteca. Para isso ، استخدم محرر النص المفضل لديك:

  • سودو فيم ~ /
  • pressione a teclar i، para iniciar a edição do arquivo
  • adicionar a linha seguinte no final do arquivo: تصدير PYTHONPATH = $ PYTHONPATH: $ (dirname $ (find / usr / local -name mraa.py))
  • Pressione ESC para sair da edição do arquivo e digite ': x!' أدخل الفقرة سالفار وسير دو أركيفو.

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

Agora، vamos instalar os softwares para simple a leitura do GPS (lembrnado que para a utilização dessa parte، recomendamos o uso do sistema operacional Linaro 17.04.1).

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

Para testar، Execute o código abaixo، também no seu console:

غسبمون ن

OBS: A antena interna da Drabonboard é para ser utilizada fora de cases 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 as informações prontamente.

Pensando no projeto، com certeza iremos encapsular o (s) device (s) num case، e no menor dos cenários، este case estará dentro de uma casa ou apartamento. محلل الفقرة ، podemos useizar antenas externas ، tanto para wi-fi ، quanto para o GPS.

OBS: هناك إجراءات خارجية يمكن أن تكون بسيطة للغاية.

الفقرة الواقعية من خلال التبديل بين العمليات الخارجية للعمليات الخارجية ، يجب أن تكون إجراءات تشغيل كوالكوم كوالكوم لا يوجد رابط للوثيقة.

OBS: É muito mais fácil de encontrar os (مكثفات ، مقاومات و indutores) على الإنترنت تفعل que em loja física. O mesmo para antenas، que sugerimos a compra no site da SmartCore.

Para que nosso gateway não fique relente de uma configuração e conexão wifi، com a internet، iremos utilzar um módulo GSM. Os módulos GSM externos، geralmente implitam 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.

صورة حقيقية للخطوة الموجهة ، وهي عبارة عن مجموعة من العناصر الأساسية التي يمكن استخدامها من قبل المستخدمين في جميع أنحاء العالم.

الفقرة تحقق من الاتصال الداخلي ، واستخدام بروتوكول MQTT ، وتحديد نقطة اتصال 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. تثبيت البعوض sudo apt-get install

قم بتوصيل البرنامج أثناء تشغيله.

الفقرة محددة a sua Dragonboard 410C como um hotspot، siga os passos:

  • Clique no icone de redes no canto direito أدنى
  • انقر فوق "تحرير الاتصالات"
  • Após abrir a tela "اتصالات الشبكة" ، انقر فوق "إضافة"
  • Selecione a opção Wi-fi، e clique em '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 بما في ذلك uma senha para a rede، config-a na aba "Wi-fi Security"
  • الفقرة النهائية انقر فوق "حفظ"

Agora Qualquer Disitivo pode se conectar à rede Exclusive da Dragonboard 410C، e useizar o seu broker para publicar e subscrever.

Com estes Preparos acima، estamos prontos para seguir com o desenvolvimento.

الخطوة 2: قم بإعداد Sua Cloud API

يمكنك الاعتماد على مشروع خاص بالمشروع. تقدم الخدمة بشكل دقيق لا تفعل الصفر ، أو السحابة موجودة ، يجب أن تكون ضرورية للتغلب على آلية واجهة برمجة التطبيقات ، أو يمكنك استخدام واجهة برمجة التطبيقات لاستخدامها.

Vamos descrever um passo a passo para iniciar uma API básica، pelo menos para o teste desteبرة. Caso queira seguir um البرنامج التعليمي mais completeo، 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 o site da Heroku، por este link
  • انقر فوق "تسجيل" ، لا يمكن أن يكون متفوقًا ، فقرة غير موجودة في التسجيل
  • Após o registro، em sua dashboard، clique em 'New' e escolha a opção 'Create New App'
  • Insira um nome para a sua aplicação
  • Em seguida ، انقر على "إنشاء تطبيق"
  • تطبيق Seu está pronto، podendo ver seu funcionamento clicando em "Open App"، no canto Superior dirento
  • Instale o Heroku Cli، para fazer os ينشر الفقرة 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 publishing 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 e a 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
  • Caso não esteja استخدم توزيع Linux que o Advanced Packaging Tool (APT) ، أو خارج النظام التشغيلي ، استشر الرابط
  • يقوم Agora بتنفيذ 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
  • قرص مضغوط../
  • صريح _PASTA_SEU_APP_
  • القرص المضغوط _PASTA_SEU_APP_
  • تثبيت npm

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

  • Acesse a Pasta "طرق"
  • 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 ('/'، الوظيفة (req، res، next) {var msg = 'blank'؛ 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ê تدرك o نشر تطبيق do seu para a Heroku:

  • تسجيل الدخول إلى heroku
  • بوابة إضافة.
  • git الالتزام -am "الالتزام الأولي"
  • بوابة دفع سيد heroku

Com isso você já tem seus endpoints de testes prontos. نقاط نهاية نظام التشغيل الفقرة اختبار تثبيت برنامج ساعي البريد ، رابط neste. Insira a url da seu app (مثال: https://_SEU_APP_.herokuapp.com/) e selecione o método GET ou POST ، e clique em 'SEND'. Para o método POST، siga os passos:

  • كليك نا أبا "الجسد"
  • Selecione a opção 'x-www-form-urlencoded
  • Insira o مفتاح "msg"
  • قيمة Em ، pode inserir Qualquer mensagem

معلومات أساسية لتعليم كيفية استخدام واجهة برمجة التطبيقات (API) الخاصة بالاختبارات pronta para o uso.

الخطوة 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

Para não تعتمد على شبكة Wifi ، vamos useizar a comunicação GSM para abrir caminho de dados para utilizarmos a nossa API ، configurada no step for front.

استخدم أسلوبًا متماثلًا لنظام GSM ، يمكنك استخدام بعض أنواع البروتوبيتو لاستخدامات بسيطة ومميزة ، أو نموذج SIM800L. طريقة توزيع المنتجات وتوزيعها على النسيج ، والتطريز المتماثل ، لا يوجد موقع لا يوجد فيه موقع.

Vamos às conexões físicas، Entre o modulo GSM e a nossa Dragonboard 410C.

Como mencionado no step "إعداد لوح دراغون صغير" ، يمكنك استخدام هذا النظام بشكل منتظم. Para isso utilizaremos um regulador de tensão بالتنحي ، para diminuir a tensão de entrada. Utilizamos o Regulador De Tensão Stepdown Buck Conversor Dc Lm2596 3a Nf، para este teste

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 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
  • هام: 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 seja يستخدم نظام GSM للخارج ، تحقق من أنه مناسب تمامًا. إستي باسو متكرر ، متكرر ، كل شيء شامل الأجهزة ، صندوق نقاط التكرار.
  • 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 do 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
  • Conecte o pino GND do 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: Não se esqueça de conectar uma antena no modulo GSM، pelos pinos NET ou IPX ANT، indicados na imagem de capa deste step.

برنامج Agora vamos ao. يستخدم Vamos مكتبة mraa que instalamos anteriormente ، الفقرة الواقعية ، مدخل مسلسل comunicação o modulo GSM e a 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'
  • لا يوجد أركيفو ، استيراد الكتابات ، تاريخ المكتبة ، التأخير المحدد في المكتبة

استيراد مرا

تعريف مختلف لجميع أنواع الكامينهو عن طريق الاتصال السريع أو النموذجي GSM

المنفذ = '/ dev / tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (منفذ)

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

الكتابة def (msg):

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

Crie um loop para fazer a leitura do modulo GSM

بينما صحيح: r = uart.read (128) إذا كان r! = '': طباعة (r.decode ('UTF-8')) i = str (إدخال ()) اكتب (i) time.sleep (0.5)

  • Salve o arquivo e volte para o console
  • تنفيذ س arquivo

بيثون gsm.py

Digite '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á Consumer a nossa API.

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

def connect ():

وقت النوم (0.5) وقت الكتابة ("AT") وقت النوم (0.5) الكتابة ('AT + CREG = 1') وقت النوم (0.5) الكتابة ('AT + COPS = 2') وقت النوم (0.5) الكتابة ('AT + SAPBR = 3، 1، "Contype"، "GPRS"') وقت. النوم (0.5) اكتب ('AT + SAPBR = 3، 1، "APN"، "*****"') time.sleep (0.5) اكتب ('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:

  • الفقرة محددة للشجاعة التي تقوم بها AT + COPS ، que service para selecionar a sua rede ، primeiro تنفيذ AT + COPS =؟ após o comando AT_COPS =؟
  • Os comandos de definição da APN estão com asteriscos pois Depe de cada operadora do SIM Card، procure se informar com operador para sabre qual o endereço da APN، usuário e senha.
  • Repare que a cada

Agora vamos:

def send (p ، m ، d = ):

اكتب ('AT + HTTPINIT') time.sleep (0.5) اكتب ('AT + HTTPSSL = 1') time.sleep (0.5) اكتب ('AT + HTTPPARA = "CID" ، 1') time.sleep (0.5) اكتب ('AT + HTTPPARA = "URL"، "_URL_APP_HEROKU _ /' + p + '"') time.sleep (0.5) اكتب ('AT + HTTPPARA = "USERDATA" ، "التفويض: Bearer ******** ********* / r / n "') time.sleep (0.5) إذا كان m ==' GET ': اكتب (' AT + HTTPACTION = 0 ') وإلا: اكتب (' AT + HTTPPARA = "CONTENT"، "application / x-www-form-urlencoded" ") time.sleep (0.5) الكتابة ('AT + HTTPDATA =' + str (len (d)) + '، 10000') time.sleep (0.5) اكتب (str (t)) time.sleep (10) اكتب ('AT + HTTPACTION = 1') time.sleep (6) اكتب ('AT +

Segue algumas Observações para estes comandos:

  • ألف função recebe 3 باراميتروس. 'p' para o path que será تنفيذي 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 الوسيطة 'm' deverá ser enviado no formato querystring (على سبيل المثال: msg = ola + dragonboard & arg2 = teste &…)
  • O comando 'AT + HTTPPARA = "USERDATA …' é opcional، apenas بحد ذاته ضرورة لتحديد رأس algum بدون طلب

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

Antes de adquirir seu SIM Card ، قم باستشارة مشغل trabalha com a mesma tecnologia que o modulo GSM que você estiver utilizando ، mas é aconselhável useizar o SIM Card de empresas especializadas em comunicação IoT، por Questidade de Compatible.

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

الخطوة 4: تحضير 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 useizar 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 produto، deve ser desenvolvido um complexo dedicado. Este módulo já luxui WiFi، então irá easyar 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 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 como Hotspot na Dragonboard
  • الحرف الثابت * كلمة المرور = "" ؛ // Insira o valor da senha حد ذاته هووفر تعريف غير محدد للتهيئة Hotspot
  • const char * BROKER = "_IP_DRAGONBOARD_" ؛ // تنفيذ '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) ،

طريقة الإعداد ، inicie a conexão WIFI e a comunicação MQTT:

  • WiFi.begin (SSID ، كلمة المرور) ؛
  • MQTT.setServer (سمسار ، 1883) ؛
  • MQTT.setCallback (callback_mqtt) ، // Caso você faça Subscribe em algum tópico

لا توجد طريقة فعالة للحلقة ، استخدم حلقة لينها 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:

اختيار باطل

إذا (! MQTT.connected ()) بينما (! MQTT.connected ()) ؛

if (WiFi.status ()! = WL_CONNECTED) {WiFi.begin (SSID، PASSWORD)؛ while (WiFi.status ()! = WL_CONNECTED)؛}

}

E النهائي ، iremos enviar algum dado para a Drabonboard 410C ، com o seguinte comando:

MQTT.publish ('_ NOME_DO_TOPICO_'، "Ola Dragonboard") ؛

Não vou entrar em detalhes for exemplificar a leitura de sensores e etc، pois vai variar muito de projeto for projeto e de Hardware para Hardware. Basta incluir esta linha onde mustá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. يتم تنفيذ الفقرة أيضًا كـ linhas abaixo no console da Dragonboard 410C:

  • sudo apt-get install python pip
  • نقطة تثبيت 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:

استيراد paho.mqtt.client كـ mqttimport sys

الوسيط = "_IP_DRAGONBOARD_" المنفذ = 1883 مهلة = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect (العميل ، بيانات المستخدم ، الأعلام ، RC): client.subscribe (TopicSubscribe)

def onMessage (client، userdata، msg): message = str (msg.payload) طباعة (رسالة)

جرب: client = mqtt. Client () client.on_connect = onConnect client.on_message = onMessage client.connect (وسيط ، منفذ ، مهلة) client.loop_forever () باستثناء: sys.exit (0)

Neste arquivo vamos Definimos duas funções، a "onConnect" que será chamada no momento em que hoses conexão com o broker، e a função 'onMessage' que será exada quando hover mensagem recebida nos subscribes Definitions na função 'onConnect'.

قم بتنفيذ arquivo com 'python mqtt.py' ، e se todas as conexões anteriores estiverem sido realizadas com sucesso، vocêeceberá na sua tela os dados que estão sento enviados pelo seu dispitivo externo، no caso deste exemplo، pelo.

ملاحظة 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'.

مراقبة أوما مهمة: الفقرة الواقعية والأغذية في الشبكة ، NODEMCU ESP8266 ، ESP-12 ، خاصة ، وجودة الاستشارة ، ورابط مصير المستند. 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 simple a troca fastamente.

الخطوة 5: النظر في Finais

Se estiver tudo configurado como descritos nos steps، você já está comunicando o seu detitivo IoT com o mundo، com auxilio da sua Dragonboard 410C.. مستشعرات التشغيل والخوادم الموارد المتاحة للاستخدامات الخارجية ، والقيام بالتحضير والتنفيذ السحابي لواجهة برمجة التطبيقات ، ونظام التشغيل ligados à Dragonboard ، e também a forma com que os dados são tratados ، fica a critério de quem for Executive o. الفقرة التعريفية النهائية للمنتوجات ، 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 الاستهلاكية através destas frentes.

موصى به: