Spisu treści:
- Krok 1: Przygotuj Sua Dragonboard 410C
- Krok 2: Przygotuj Sua Cloud API
- Krok 3: Instalando E Manipulando O Modulo GSM
- Krok 4: Preparando Dispositivos Para Se Comunicar Com a Dragonboard
- Krok 5: Zastanów się nad Finaisem
Wideo: Komunikacja IoT Com i Dragonboard 410C: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
É 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, monitormento 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 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.
Krok 1: Przygotuj Sua Dragonboard 410C
Zagnieżdżone passo vamos przygotuj się do nowej Drabonboard 410C dla tornaru lub bramy do nowej konstrukcji IoT przez nią.
Primeiramente, vamos instalar um sistema operacional na placa. Możesz wybrać opcję, korzystając z lokalizacji GPS, nie musisz już dokonywać rejestracji, nie możesz zainstalować systemu operacyjnego Linaro 17.04.1, możesz użyć opcji na stronie Dragonboard 410C z łączem 96.
Após a instalação do seu sistema operacional, zainstaluj bibliotekę libmraa do obsługi GPIO, z Dragonboard 410C. Para isso, você deve seguir os passos abaixo (abra o console do seu sistema operacional para executar os comandos):
Wymagania wstępne libmraa
- aktualizacja sudo apt-get
- sudo apt-cache wyszukiwanie pcre
- sudo apt-get zainstaluj libpcre3-dev
- sudo apt-get zainstaluj git
- sudo apt-get install cmake
- sudo apt-get zainstaluj python-dev
- sudo apt-get install swig
Instalacja mraa
- klon sudo git
- sudo mkdir mraa/build && cd $_
- sudo cmake.. -DBUILDSWIGNODE=OFF
- sudo zrobić
- sudo dokonać instalacji
Aby korzystać z biblioteki z Pythona, que é o caso deste instructable, vamos adicionar lub export da nossa variavel de ambiente do Pythona dla biblioteki. Para isso, użyj edytora 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 $(znajdź /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 użyj biblioteca mraa com Pyhton.
Agora, vamos instalar os softwares para facilitar 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-klienci
Para testar, wykonaj 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, 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. 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.
Para realizar o switch do das antenas internas para externas, será necessário seguir os procedimentos que a Qualcomm disponibilizou no documento deste link.
OBS: É muito mais fácil de encontrar os componentes (kondensatory, rezystory e indutores) na internet do que em loja física. O mesmo para antenas, que sugerimos a compra no site da SmartCore.
Para que nosso gateway não fique depende de uma configuração e conexão wifi, com a internet, iremos utilzar um módulo GSM. Os módulos GSM externos, geralmente necessitam de uma tensão estável e específica, então vamos criar uma Saida de alimentação de entrada de alimentação da 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 a alimentação do modulo GSM (ATENÇÃO COM A POLARIDADE).
Aby zrealizować wewnętrzną komunikację, zastosować protokół MQTT i zdefiniować wspólny hotspot Dragonboard 410C. Vamos instalar o oprogramowanie 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.
Aby zdefiniować nowy punkt dostępowy Dragonboard 410C, możesz skorzystać z następujących opcji:
- Clique no icone de redes no canto inferior direito
- Kliknij „Edytuj połączenia”
- Após brir a tela „Połączenia sieciowe”, klika „Dodaj”
- Wybierz opção Wi-Fi, klikaj w „Utwórz”
- Ao brir 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”
- Para finalizar klika em „Zapisz”
Agora to urządzenie, które łączy w sobie ekskluzywną funkcję redagowania z Dragonboard 410C, i jest używane lub używane jako pośrednik w celach publicznych i subskrypcyjnych.
Com estes preparos acima, estamos prontos para seguir com o desenvolvimento.
Krok 2: Przygotuj Sua Cloud API
Este passo é algo que depende muito de projeto para projeto. Pode ser que dokładna ser feita do zera, ou o chmura já istnieje jako 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 kompletny, 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 dla colocarmos i nossa API, i dla termosów gastos com estes testes, iremos utilizar z platformą Heroku. Siga os passos para iniciar a sua aplicação:
- Acesse o site da Heroku, por este link
- Clique em 'Sign Up', no canto superior dieito, para iniciar o seu registro
- Após o registro, em sua dashboard, clique em „New” e escolha a opção „Utwórz nową aplikację”
- Insira um nome para a sua aplicação
- Em seguida, klikaj w „Utwórz aplikację”
- Seu app está pronto, podendo ver seu funcionamento clicando em 'Open App', no canto superior dirento
- Instale o 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 jako instruçes de deploy para começar lub desenvolvimento da sua API, disponível em
Seguindo os passos acima, já temos a pasta na sua máquina, para desenvolver 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 zainstaluj npm
- Nie można korzystać z dystrybucji uma w systemie Linux o Advanced Packaging Tool (APT), o outro system operacyjny, o konsultację o link
- Agora wykonaj 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
- Płyta CD../
- ekspresowe _PASTA_SEU_APP_
- cd _PASTA_SEU_APP_
- instalacja npm
Para deixar dois endpoints preparados, um de GET e um de POST, siga os passo abaixo:
- Uzyskaj „trasy” makaronu
- 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 = 'pusty'; 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ê realizuj o deploy do seu app para a Heroku:
- Zaloguj się do heroku
- git dodaj.
- git commit -am "wstępne zatwierdzenie"
- git push mistrz heroku
Com isso você já tem seus endpoints de testes prontos. Podczas testowania punktów końcowych należy zainstalować oprogramowanie Postman, neste link. Insira a url da seu app (np.: https://_SEU_APP_.herokuapp.com/) i wybierz metodę GET lub POST, i kliknij „SEND”. Para o método POST, siga os passos:
- Klika na aba „Ciało”
- Selecione a opção 'x-www-form-urlencoded
- Insira o klawisz „wiadomość”
- Em Value, pode inserir qualquer mensagem
Com essas instruções temos a nossa API de testes pronta para o uso.
Krok 3: Instalando E Manipulando O Modulo GSM
Dla uzależnionych połączeń Wi-Fi, używaj komunikacji GSM, aby korzystać z nowych interfejsów API, nie musisz konfigurować żadnych kroków.
É aconselhável a utilização de modulos GSM homologados, mas para os testes do 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 às conexões físicas, entre lub modulo GSM i nossa Dragonboard 410C.
Como mencionado no step „Przygotuj sua Dragonboard”, teremos que regular a tensão para utilizar o modulo. Para isso utilizaremos um regulador de tensão ustąpić, 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 jako conexões físicas:
- Conecte a saída positiva da Dragonboard, como ilustrado bez kroku „Przygotuj sua Dragonboard”, e conecte na entrada „IN +” do regulador de tensão
- Conecte a saída negativa da Dragonboard, como ilustrado bez kroku „Przygotuj sua Dragonboard”, e conecte na entrada „IN -” do regulador de tensão
- WAŻNE: Ligue a Dragonboard, e regule com lub auxilio de uma chave de fenda, regule lub trimpot para que a saída (OUT + e OUT -) tenha 4.2V. Siga adiante apenas se 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.
- 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
- Połącz o pino RXD do modulo GSM bez pino 5 UART 0 TX z Dragonboard, ambos indicados nas imagens de capa deste step
- Połącz o pino TXD do modulo GSM bez pino 7 UART 0 RX z Dragonboard, ambos indicados nas imagens de capa deste step
- Podłącz o pino GND do modulo GSM bez pino 1, 2, 39 OU 40 GND z Dragonboard, ambos wskazuje na obrazach z capa deste step. Isto é fundmental para estabilizar o tráfego de dados pelo RX TX
OBS: Nie wiesz, co się łączy z anteną uma bez modułu GSM, pelos pinos NET lub IPX ANT, wskazuje na obraz capa deste step.
Oprogramowanie Agora vamos ao. Korzystaj z biblioteki mraa que wcześniejszej instalacji, aby zrealizować komunikację szeregową lub moduł GSM i 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 delays
importuj mraa
Defina uma variável para o caminho da UART que conectamos o modulo GSM
port = '/dev/tty96B0'
Instancie a UART com ajuda da biblioteca mraa
uart = mraa. Uart(port)
Crie uma função para enviar para os comando AT para o modulo GSM
def napisz (wiadomość):
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
- Wykonaj o arquivo
python gsm.py
Cyfra „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 ira realizar a conexão com a APN e outra que irá consumir a 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 jeździł 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 komenda AT_COPS=?
- Os comandos de definição da APN estão com asteriscos pois depende de cada operadora do SIM Card, zamów se informar com a operador para saber qual o endereço da APN, usuário e senha.
- Napraw que a cada
Agora vamos implementar a função que irá enviar consumir a nossa API:
def wyślij(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", "Autoryzacja: 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 comandos:
- Função recebe 3 parametry. „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 dla GET
- O komando 'AT+HTTPS' i opcjonalne, bez użycia protokołu SSL
- O argumento 'm' deverá ser enviado no formato querystring (np.: msg=ola+dragonboard&arg2=teste&…)
- O comando 'AT+HTTPPARA="USERDATA…' é opcjonalne, apenas se houver a necessidade de definir algum header no request
Mais uma vez sugiro rodar cada comando, indywidualmente e em ordem, antes da utilização.
Antes de adquirir seu SIM Card, consulte se a operadora trabalha com a mesma tecnologia que o modulo GSM que você estiver utilizando, mas é aconselhável utilizar o SIM Card de empresas especializadas em comunicação õ es
Com jako configurações e implementações acima, estamos prontos para nos comunicarmos com a nuvem através da nossa Dragonboard 410C.
Krok 4: 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 já diz, é ótima para protótipos, mas no momento em que o hardware for definido como produto, deve ser desenvolvido um complexo dedicado. Este módulo já possui WiFi, então 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 komunikacja z brokerem MQTT
Defina como variáveis globais, jako 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
- const char* HASŁO = ""; // Insira o valor da senha se houver definido na configuração do Hotspot
- const char* BROKER = "_IP_DRAGONBOARD_"; // Wykonaj „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:
- WiFiKlient espWIFI;
- PubSubClient MQTT(espWIFI);
Na função de setup, inicie a conexão WIFI e a comunicação MQTT:
- WiFi.begin(SSID, HASŁO);
- MQTT.setServer (BROKER, 1883);
- MQTT.setCallback(callback_mqtt); // Caso você faça subskrybuj em algum tópico
No sua função de loop, adicione a linha abaixo para que o MQTT entre em loop:
MQTT.pętla();
Você pode criar uma função de verificação de conexão de WIFI e czy 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:
nieważne sprawdzanie połączeń () {
if (!MQTT.connected())while (!MQTT.connected());
if (WiFi.status() != WL_CONNECTED){WiFi.begin(SSID, HASŁO);while (WiFi.status() != WL_CONNECTED);}
}
E finalmente, iremos enviar algum dado para a Drabonboard 410C, com lub seguinte comando:
MQTT.publish('_NOME_DO_TOPICO_', "Ola Dragonboard");
Não vou entrar em detalhes para exemplificar a leitura de sensores e itp., 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 seu broker.
Voltando para a nossa Dragonboard410C, vamos criar um arquivo teste em python, dla checarmos os dados recebidos pelo broker, mas ante, vamos instaluje swoją bibliotekę pomocniczą na conexão do brokera. Dla isso wykonaj jako linhas abaixo no console da Dragonboard 410C:
- sudo apt-get zainstaluj python pip
- pip zainstaluj 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 jako mqttimport sys
Broker = "_IP_DRAGONBOARD_" port = 1883 timeout = 60 TopicSubscribe = "_MESMO_TOPICO_DISPOSITIVO_EXTERNO_"
def onConnect(klient, dane użytkownika, flagi, rc): client.subscribe(TopicSubscribe)
def onMessage(client, userdata, msg): message = str(msg.payload) print(message)
try: client = mqtt. Client() client.on_connect = onConnect client.on_message = onMessage client.connect(Broker, port, timeout) client.loop_forever() z wyjątkiem: 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, i funkcja 'onMessage' que será executada quando houver mensagem recebida nos prescribes' definido.
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.
Uwaga 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 modulo manipulando'.
Uma observação Importante: Para realizar a 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.
Krok 5: Zastanów się nad Finaisem
Zobacz konfigurację, jak opisano poprzednie kroki, zadzwoń do nas lub innych urządzeń IoT com lub na świecie, połącz się z nią Dragonboard 410C.. Os sensores i outros recursos que serão utilizados no dispositivo externo, todo lub preparo e implementação da sua API Cloud, o recursos de hardware ligados a Dragonboard, i também forma que que de dados são tratados, execut for a ritério. 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, basstando trabalhar bem sua API, e consumindo através destas frentes.
Zalecana:
Komunikacja bezprzewodowa LoRa 3Km do 8Km z tanim urządzeniem E32 (sx1278/sx1276) dla Arduino, Esp8266 lub Esp32: 15 kroków
LoRa 3Km do 8Km Bezprzewodowa komunikacja z niskokosztowym urządzeniem E32 (sx1278/sx1276) dla Arduino, Esp8266 lub Esp32: Tworzę bibliotekę do zarządzania EBYTE E32 opartą na urządzeniu LoRa serii Semtech, bardzo wydajne, proste i tanie urządzenie. Wersja 3Km tutaj, wersja 8Km tutaj Mogą pracować na dystansie od 3000m do 8000m i mają wiele funkcji i
Żyroskop MPU 6050, komunikacja z akcelerometrem z Arduino (Atmega328p): 5 kroków
MPU 6050 Żyroskop, komunikacja z akcelerometrem z Arduino (Atmega328p): IMU MPU6050 posiada zarówno 3-osiowy akcelerometr, jak i 3-osiowy żyroskop zintegrowane w jednym układzie. Oś X, Y i Z. Wyjścia żyroskopu ar
Komunikacja Serial Com a Dragonboard 410c Usando Mezzanine 96boards Czujniki: 7 kroków
Komunikacja Serial Com a Dragonboard 410c Usando Mezzanine 96boards Czujniki: O objetivo desse tutorial é mostrar as etapas necessárias para configurar o ambiente de desenvolvimento, de modo que seja possível comunicar com a Dragonboard 410c através de um computador / notebook usando comunica&ccedi
Arduino i mobilna komunikacja Bluetooth (komunikator): 8 kroków
Arduino i mobilna komunikacja Bluetooth (Messenger): Komunikacja odgrywa ważną rolę w naszym codziennym życiu. Ale w tych czasach zablokowania komunikacji z własną rodziną lub porozumiewania się z ludźmi w naszym domu czasami potrzebne są telefony komórkowe. Ale korzystanie z telefonów komórkowych przez krótki czas
Komunikacja klient/serwer MKR1000 IoT: 4 kroki
MKR1000 IoT Client/server Communications: Ten projekt opisuje, jak skonfigurować dwa urządzenia Arduino/Genuino MKR1000 jako serwer i klient. Klient MKR1000 połączy się z lokalnym Wi-Fi i nasłuchuje dwóch wejść fizycznie podłączonych do klienta; jeden z guzika, a drugi z wibracji