תוכן עניינים:

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 שלבים
וִידֵאוֹ: MediaTek Labs VP - Marc Naddell on MediaTek Labs and IoT 2024, יולי
Anonim
Comunicação IoT Com a Dragonboard 410C
Comunicação IoT Com a Dragonboard 410C

É bastante comum 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 yes 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, for resolver essa comunicação.

שלב 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.

ראשי תיבות, או הוראות התקנה של מערכת ההפעלה. ניתן להשתמש במכשיר GPS מקומי, ולפיכך לא ניתן לרשום שום רישום, לרכוש מערכות מערכת Linaro 17.04.1, caso contrário, ולפתוח את דרכי לוח 410C של 96 לוחות, קישור הבא.

ניתן להשתמש במערכות ההפעלה של מערכת ההפעלה, ולהגדיר את התוכנה Biblioteca libmraa עבור שימוש ב- GPIOs, מתוך Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu system system operacional para executor os comandos):

Pré requisitos libmraa

  • עדכון sudo apt-get
  • sudo apt-cache search pcre
  • sudo apt-get install libpcre3-dev
  • sudo apt-get להתקין git
  • sudo apt-get להתקין cmake
  • sudo apt-get להתקין python-dev
  • sudo apt-get להתקין swig

Instalação mraa

  • שיבוט sudo git
  • sudo mkdir mraa/build && cd $ _
  • sudo cmake.. -DBUILDSWIGNODE = כבוי
  • סודו לעשות
  • sudo עשה התקנה

בשביל להשתמש ב biblioteca com Python, que é o caso deste להוראה, vamos adicionar o export da nossa variavel de ambiente do Python for a biblioteca. אם כן, השתמש בעורך הטקסט והסרטון העדיף על מנת להעביר אותנו לאתר, או להשתמש ב- VIM:

  • sudo vim ~/.bashrc
  • pressione a teclar i, para iniciariar a edição do arquivo
  • לא ניתן להעריך אחרון: ייצוא PYTHONPATH = $ PYTHONPATH: $ (dirname $ (מצא /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, תוכנות להתקנת תוכנות עבור תוכנות GPS (lembrnado que para a utilização dessa parte, recomendamos or uso do system system operational Linaro 17.04.1). אין קונסולה, לבצע או לבצע comando abaixo:

sudo apt-get להתקין gnss-gpsd gpsd-gpsd-clients

לשם בדיקה, בצע את הקונסולה:

gpsmon –n

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) hardware (s) num case, e no menor dos cenários, este case estará dentro de uma casa ou apartamento. פותר רזולוציה, תוכנות חיצוניות של אנטנות, גישה לאינטרנט אלחוטי, כמות של 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 needsário.

עבור מתג עבור מתג זה עבור אנטנות פנימיות עבור חיצוניות, יש צורך להכין את התהליכים שלנו כי Qualcomm disponibilizou אין קישור מסמך.

OBS: ניתן למצוא מגוון רחב של רכיבי רכיב (קבלים, עמידות והתנגדות) באינטרנט. אנו מציעים לכם אנטנות, כיוון שאנו מציעים אתר ללא SmartCore.

עבור שער כניסה לנוסאים תלויים במערכות ההגדרות והחיבור של wifi, אינטרנט ואינטרנט, GSM. אם יש לנו GSM externos, יש צורך במכשירי תקשורת ובספציפיות, ובאמצעות קריקטורה של מערכת alimentação diretamente da entrada de alimentação da Dragonboard 410C.

על מנת לדמיין את הצעדים הקיימים, ניתן להסיר את הפוסטים שלנו ולהשתמש בהם על מנת להשתמש ב- GSM (ATENÇÃO COM A POLARIDADE).

עבור ממשלה מקומית, אירועים שימוש בפרוטוקול MQTT, והגדרת נקודה חמה של Dragonboard 410C. תוכנת Vamos מותקנת בתוכנה Mosquitto for tornar a nossa placa um broker mqtt, com a execução da linha abaixo no seu console:

sudo apt-get להתקין יתוש

תוכנת com היא גם תוכנת התקנת תוכנה.

עבור הגדרות Dragonboard 410C כמו נקודה חמה, או סיסמה:

  • לחץ על icone de redes no canto inferior direito
  • לחץ עליהם 'ערוך חיבורים'
  • בחר באפשרות 'חיבורי רשת', לחץ על 'הוסף'
  • בחר באפשרות Wi-Fi, ולחץ על 'צור'
  • Ao abrir a tela de configuração da rede, insira um nome em SSID
  • אחרי מה שאתה רוצה עבור 'נקודה חמה' ללא קמפו 'מצב'
  • Caso queira incluir uma senha para a rede, configure-a na aba 'Wi-fi Security'
  • לסיום הקלקה על 'שמור'

Agora qualquer dispositivo pode se conectar à rede exclusiva da Dragonboard 410C, e utilizar or seu broker for publicar e subscrever.

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

שלב 2: הכינו ממשק API של Sua Cloud

Este passo é algo que depende muito de projeto para projeto. Pode ser que exact ser feita do zero, ou o cloud yes existe com a needidade de criar או mecanismo de API, ou até mesmo yes ter uma API pronta para utilizar.

ניתן להבחין במאמר זה כדי להעביר את תוכנת ה- API, אך אנו יכולים לבחור את ההוראות. Caso queira seguir um tutorial mais completeo, sugiro ver או artigo deste link. Em todo caso, sugiro desenvolver algo mais estruturado, caso a finalidade do projeto seja comercial.

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

  • Acesse o site da Heroku, por este link
  • לחץ על 'הירשם', אין מילים מובילות, לא רשומות
  • הרשמה, לוח מחוונים, לחץ על 'חדש' ופתח 'יצירת אפליקציה חדשה'
  • Insira um nome para a sua aplicação
  • Em seguida, לחץ על 'צור אפליקציה'
  • App app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
  • Instale o Heroku Cli, para fazer os מפרס את para a sua aplicação, seguindo and instrução para seu system operacional, de acordo com a documentação deste link
  • Agora você deverá seguir as instruçõeses of deploy for a kommando of desenvolvimento da sua API, disponível em

Seguindo os passos acima, yes temos a pasta na sua máquina, para desenvolver a sua API. Agora vamos instalar of NodeJS e a framework Express, והגדרנו את כל הפתרונות הבאים:

  • curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
  • sudo apt -get install -y nodejs
  • sudo apt-get להתקין npm
  • מערכת ההפעלה לינוקס יכולה להפיץ לינוקס באמצעות כלי אריזה מתקדמים (APT), או מערכת מערכות הפעלה או שליטה או קישור
  • Agora לבצע npm להתקין express -generator -g
  • Acesse o diretório que foi realizado os procedimentos da aplicação da Heroku com 'cd _PASTA_SEU_APP_'
  • תחילת הצומת של aplicação com 'npm init', e os outros comandos abaixo
  • תקליטור../
  • אקספרס _PASTA_SEU_APP_
  • תקליטור _PASTA_SEU_APP_
  • התקנת npm

Para deixar dois נקודות קצה preparados, um de GET e um de POST, siga os passo abaixo:

  • 'מסלולים' של פסה פסטה
  • 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 ('Type content', 'application/json'); res.send (JSON.stringify ({msg: 'Hello API'}, null, 3));}); router.post ('/', function (req, res, next) {var msg = 'ריק'; if (typeof req.body.msg! = 'undefined') msg = req.body.msg; res.setHeader ('סוג תוכן', 'יישום/json'); res.send (JSON.stringify ({msg: msg}, null, 3));});

Agora você realize or deploy do seu app for a Heroku:

  • התחברות להרוקו
  • git להוסיף.
  • git commit -am "התחייבות ראשונית"
  • git push heroku master

Com isso você já tem seus endpoints de testes prontos. עבור נקודות בדיקה או נקודות קצה של תוכנות דואר, קישור הבא. הכנס לאפליקציית url da seu (לדוגמה: https://_SEU_APP_.herokuapp.com/) והזמנת GET ou POST, והקש על 'שלח'. Para o método POST, או סיסמה:

  • קליק על אבא 'גוף'
  • בחר a opção 'x-www-form-urlencoded
  • מפתח הודעה מפתח
  • Em Value, pode inserir qualquer mensagem

כיצד ניתן להשתמש בממשק API של הבדיקות הבאות.

שלב 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

עבור תלות ב- Wifi, שירותים מקוונים ו- GSM עבור abrir caminho de dados עבור utilizarmos ו- nossa API, ללא הגדרת שלב קדמי.

אנו יכולים להשתמש במודולי GSM הומולוגיים, כמו למשל, לא ניתן להבחין בדוגמאות הדוגמאות והדוגמאות שיכולות להיראות ברגע שהדגמה יכולה להתבצע, או לבנות SIM800L. Este modulo foi producido e distribuído em massa pelo fabricando, mas sem qualquer homologação, tanto que não está disponível no site do fabricando.

ניתן להשתמש במגוון אופציות, כגון GSM ואופני Dragonboard 410C.

אין שום שלב 'להכין דרגוןבורד', וזה תמיד קבוע ותורם לשימוש. Para isso utilizaremos um regulador de tensão step down, para diminuir a tensão de entrada. שימושים או רגולטור דה טנסאו ממיר באק Stepdown באק Dc Lm2596 3a Nf, para este teste

מידע נוסף על ריאליזציה כמספר נושאים:

  • בנה את המצב החיובי של דרגוןבורד, כמו גם אין שלב 'הכנת דרגוןבורד', והמשתמש בביצוע 'IN +' של הרגולטור של הטנסאו
  • צור קשר שלילי על דרגונבורד, כמו גם אין שלב 'הכן דרגוןבורד', והמשמעות היא 'IN -'
  • חשוב: ליג א דרגוןבורד, תקנון עם אוקסילו דה אומה צ'אווה דה פנדה, רגולציה על טרימפוט פאר א סייד (OUT + e OUT -) על 4.2V. Siga adiante apenas se a saída estiver com esse valor. Caso seja utilizado outro modulo GSM, verifique a tensão adequada. Este passo deve ser repetido, semper que houver inclusão de um hardware, pois pode haver variação.
  • צור קשר עם הרגולציה של OUT +'ללא פינו VCC, מציין את התמונה המובילה
  • Construct a saida for regulador de tensão 'OUT -' no pino GND, indicado on imagem de capa deste step
  • Construct 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
  • Construct 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: לא ניתן יהיה לחבר את האנטנה ללא GSM מודולרי, או לא להשתמש ב- IPX ANT, ולציין את הצעדים הקיימים.

תוכנת Agora vamos ao. Vamos utilizar a biblioteca mraa que instalamos anteriormente, para realizar a comunicação entre o modulo GSM e a Dragonboard 410C.

מידע נוסף על התכונה 'מקרא ובדיקות':

  • Crie um arquivo com a extensão.py, como sugestão 'gsm.py'
  • אין צורך, אין שום חשיבות לעיבוד biblioteca mrra, ובזמן biblioteca זמן עבור עיכובים מוגדרים

יבוא mraa

Defina uma variável for caminho da UART que conectamos or modulo GSM

port = '/dev/tty96B0'

Instancie a UART com ajuda da biblioteca mraa

uart = mraa. Uart (יציאה)

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

כתוב def (מסר):

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

Crie um loop עבור 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
  • בצע או ארקיבו

python gsm.py

כתוב 'AT', וניתן לראות את זה בצורה נכונה, ואפשר לקרוא את זה 'אישור'

Para que nosso módulo não dependa de digitarmos cada comando AT - encontrados next link - faremos duas funções, uma que irá realizar a conexão com a APN e outra que ira consumir a nossa API.

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

def connect ():

time.sleep (0.5) לכתוב ("AT") time.sleep (0.5) לכתוב ('AT+CREG = 1') time.sleep (0.5) לכתוב ('AT+COPS = 2') time.sleep (0.5) כתוב ('AT+SAPBR = 3, 1, "Contype", "GPRS"') time.sleep (0.5) write ('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) לכתוב (' AT+SAPBR = 1, 1 ') time.sleep (0.5) לכתוב (' AT+SAPBR = 2, 1 ') time.sleep (6)

Sugiro que rode cada comanda antes de utilizar esta função. אלגומות של התצפית נראות לא פחות ממחלוקת:

  • עבור מערכת ההחלפה של Val+do comando AT+COPS, תוכל להגיש עבור בחירה נוספת, פרמירו לבצע AT+COPS =? após o comando AT_COPS =?
  • Os comandos de definição da APN estão com asteriscos pois depende de cada operadora do SIM Card, procure se informar com a operador para saber qual o endereço da APN, usuário e senha.
  • Repare que a cada

Agora vamos implementar a função que irá eniar consirir a nossa API:

שלח def (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", "הרשאה: נושא ******** ********* / r / n "') time.sleep (0.5) אם m ==' GET ': כתוב (' AT+HTTPACTION = 0 ') אחר: כתוב (' AT+HTTPPARA = "CONTENT", "application/x-www-form-urlencoded" ') time.sleep (0.5) write (' AT+HTTPDATA = '+str (len (d))+', 10000 ') time.sleep (0.5) לכתוב (str (t)) time.sleep (10) לכתוב ('AT+HTTPACTION = 1') time.sleep (6) לכתוב ('AT+HTTPTERM')

אלגומות של Segue observações para estes comandos:

  • מבחן כיף של 3 פרמטרים. '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
  • אם אתה משתמש ב- AT+HTTPS אופציונלי, אין אפשרות להשתמש ב- SSL
  • O argumento 'm' deverá ser enviado no formato querystring (Ex: msg = ola+dragonboard & arg2 = teste &…)
  • אם אתה משתמש ב- AT+HTTPPARA = "USERDATA…"

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

Antes de adquirir seu SIM כרטיס, consultte a operadora trabalha com a mesma technologia que o modulo GSM que você estiver utilizando, mas é aconselhável utilizar o SIM Card de empresas em comunicação IoT, por questõeses kompatibleidade.

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

שלב 4: Preparando 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 utilizar a placa de prototipagem NODEMCU ESP8266 ESP-12, como exemplo. Esta e qualquer outra placa de prototipagem, como o nome yes diz, é ótima para protótipos, mas no momento em que o o hardware for definido como produto, deve ser desenvolvido um complexo dedicado. ניתן גם להשתמש ב- WiFi, ובאופן כללי גם באמצעות קומוניקה.

Para nos comunicarmos com a nossa Dragonboard 410C, מדויק של 2 מקראיות:

  • 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, כהגדרות של רשת Wi-Fi ו- do broker, ambos da nossa Dragonboard 410C:

  • const char* SSID = "_REDE_DRAGONBOARD_"; // שם ההגדרה של Hotspot ב- Dragonboard
  • const char* PASSWORD = ""; // Insira o valor da senha se houver definido on configuração do Hotspot
  • const char* BROKER = "_IP_DRAGONBOARD_"; // בצע 'ip a' na sua Dragonboard עבור descobrir או ip da rede interna

ניתן להשתמש ב- Wi-Fi כדי למקם ולהחליף את הלקוח MQTT:

  • WiFiClient espWIFI;
  • PubSubClient MQTT (espWIFI);

לאחר ההתקנה, תחילה WIFI וקונספט MQTT:

  • WiFi.begin (SSID, PASSWORD);
  • MQTT.setServer (BROKER, 1883);
  • MQTT.setCallback (callback_mqtt); // Caso você faça הירשם ב- algum tópico

אין שום כיף ללולאה.

MQTT.loop ();

Você pode criar uma função de verificação de conexão de WIFI e do broker, para não ter problemsas com intermitência. Para isso crie um função com as linhas abaixo, e chame-a na função de loop:

void checkConnections () {

אם (! MQTT.connected ()) בעוד (! MQTT.connected ());

אם (WiFi.status ()! = WL_CONNECTED) {WiFi.begin (SSID, PASSWORD); בעוד (WiFi.status ()! = WL_CONNECTED);}

}

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

הוצאת MQTT.publish ('_ NOME_DO_TOPICO_', "Ola Dragonboard");

Não vou entrar em detailshes for exemplar of a leitura de sensores e etc, pois vai variar muito de projeto for projeto e de hardware for חומרה. Basta incluir esta linha onde necessá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. כמו כן, ניתן לבצע אותו כמו לינה, אך ללא קונסולה של Dragonboard 410C:

  • sudo apt-get install python pip
  • 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 timeout = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"

def onConnect (לקוח, נתוני משתמש, דגלים, rc): client.subscribe (TopicSubscribe)

def onMessage (לקוח, נתוני משתמש, הודעה): 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 houver conexão com o broker, e a função 'onMessage' que será executada quando houver mensagem recebida nos מינויים מוגדרים על função 'onConnect'.

הוצא את "arythivo com" python mqtt.py ", וראו את זה כמו conexões anteriores estiverem sido realizadas com sucesso, você receberá na sua tela us dados que estão sendo enviados dispositivo externo, no caso deste exemplo, pelo NODEMCU.

הערה: אני נהנה מהמסר על הודעות. אנו יכולים להבחין בעצמנו, אך לא ניתן לשלוח באמצעות GSM עבור ממשק API, ולשלוח 'לעשות זאת' באמצעות gsm.py, ללא הודעות 'התקנה ומניפולציה של GSM'.

הערה חשובה: עבור התכונה Alimentação da placa NODEMCU ESP8266 ESP-12, em especifico, sugiro que consultem o documento 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: שקול פינאי

אנו יכולים להבחין במתכונת של צעדים קדמיים, צעדים אחרונים או תוכנות IoT com o mundo, com auxilio da sua Dragonboard 410C. É חשוב לי להעזר בפורומים אחרים ותוכנות קשיחות ותוכנות, ופתרונות עבור ספריות מופלאות. Os sensores e outros recursos que serão utilizados no dispositivo externo, todo or preparo and implementação da sua API Cloud, us recursos of hardware ligados à Dragonboard, e também a forma com que us dados são tratados, fica a kritério de quem for executor 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, for us comerciantes ligados aos serviços, deixamos em aberto também, bastando trabalhar bem a sua API, e a consumindo através destas frentes.

מוּמלָץ: