U-BLOX NINA W102 PROGRAMADO EM MICROPYTHON E COMANDADO VIA ASSISTENTE DE VOZ ALEXA
O objetivo deste BLOG é demonstrar como é possível utilizar programar o módulo U-BLOX NINA W102 com a linguagem de Scripts MicroPython e comandá-lo via Assistente Alexa.
Por Miguel ALEXAndre Wisintainer
UBLOX NINA W102
Wi-Fi 802.11b / g / n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32
SMARTCORE
A SmartCore fornece módulos para comunição wireless, biometria, conectividade, rastreamento e automação.
Nosso portifólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br
ASSISTENTE ALEXA
A Amazon Alexa, por exemplo, é um serviço de assistente pessoal inteligente na nuvem onde pode ser solicitadas tarefas como realizar pesquisas, mandar executar uma lista de músicas ou questionar o horário atual. Segundo o site da Amazon Alexa, o serviço permite se conectar com dispositivos (AWS IoT Cor) e por meio da Web Service da Amazon, efetuar comandos de voz, interpretá-los e tomar uma ação correspondente.
MICROPYTHON
O MicroPython é uma implementação enxuta e eficiente da linguagem de programação Python 3 que inclui um pequeno subconjunto da biblioteca padrão do Python e é otimizada para ser executada em microcontroladores e em ambientes restritos.
O microPython pyboard é uma placa de circuito eletrônico compacta que executa o MicroPython no estado original, oferecendo a você um sistema operacional Python de baixo nível que pode ser usado para controlar todos os tipos de projetos eletrônicos.
O MicroPython é repleto de recursos avançados, como um prompt interativo, números inteiros de precisão arbitrária, fechamentos, compreensão de listas, geradores, tratamento de exceções e muito mais. No entanto, é compacto o suficiente para caber e executar com apenas 256k de espaço de código e 16k de RAM.
O MicroPython pretende ser o mais compatível possível com o Python normal, para permitir a transferência de código com facilidade da área de trabalho para um microcontrolador ou sistema incorporado.
O AWS IoT Core é uma plataforma que permite que você conecte dispositivos a serviços da AWS e outros dispositivos, proteja dados e interações, processe e haja de acordo com os dados do dispositivo e permita que os aplicativos interajam com dispositivos mesmo quando estiverem off-line.
Os dados são armazenados em um local que recebe o nome de Thing Shadow, use tópicos para habilitar aplicativos e coisas para obter, atualizar ou excluir as informações do estado para uma Coisa.
O Amazon Alexa é um serviço de voz na nuvem da Amazon que permite que os desenvolvedores controlem por voz os serviços da Amazon conectados. Um aplicativo exemplo é o Amazon Echo, que é um assistente de controle de voz. Quando os usuários falam com o Amazon Echo, ele analisa a voz recebida e faz uma resposta apropriada. Neste exemplo, apresenta-se como conectar os serviços da Amazon (incluindo o Amazon Alexa, o AWS Lambda, o AWS IoT Core, o AWS IAM) e utilizar o Amazon Alexa para controlar a Lâmpada no U-BLOX NINA W102.
O Amazon Alexa Skills Kit (ASK) é um serviço de voz. Ele pode ser conectado a serviços da nuvem e o usuário pode controlar por voz os serviços conectados e receber resposta de voz. O recurso de análise de voz fornecido pelo Amazon Alexa está pronto para uso, faz com que os desenvolvedores possam se concentrar no design do serviço em nuvem e no modelo de interação do usuário.
O Amazon AWS Lambda é um serviço de computação. As linguagens de programação suportadas inclui o Node.js, o Python e o java. O Lambda permite que os usuários configurem os recursos requeridos pelo cálculo (como memória, tempo de computação).
Os três elementos basicamente trabalham em conjunto:
(1) Quando um usuário diz "Lamp on" para o dispositivo de teste (que suporta Amazon Alexa), Amazon Alexa analisa o comando de voz de acordo com o esquema e o arquivo das declarações de amostra (fornecido pelo usuário antes) e gera intenção JSON.
(2) Amazon Alexa envia a intenção JSON para o AWS Lambda. De acordo com a intenção, o serviço Lambda envia uma mensagem de atualização para o serviço AWS IoT Core Shadow.
(3) O serviço AWS IoT Core Shadow atualiza o estado de sombra de acordo com a mensagem de atualização do serviço Lambda.
(3.1) Se o U-BLOX NINA W102 estiver on-line e tiver assinado o serviço de sombra, o U-BLOX NINA W102 ativa o LED.
(3.2) Em seguida, o Lambda gera a mensagem de resposta de texto e voz e envia para o Amazon Alexa.
(4) Finalmente, o usuário pode ouvir a mensagem de voz para indicar que o LED foi acionado com sucesso.
MONTANDO AS REGRAS NO ASSISTENTE DE VOZ ALEXA (Resumo)
Primeiramente cria-se uma skill na Amazon Alexa. Para isso, primeiro cadastra-se o nome de invocação. Esse nome de invocação é o nome que o Amazon Alexa irá identificar que se trata da skill criada. Em seguida, são criadas as ações ou intents, que o Amazon Alexa irá solicitar ao Amazon Lambda que seja executado cada comando.
Os comandos são criados na tela de intents. Para ativar a execução de um intent, podem ser criados diversos comandos. Ou seja, quando se quer que através de diversas maneiras de falar apenas uma específica ação seja executada, cria-se uma lista de comando para apenas um intent. Pode-se observar que o comando contém uma palavra entre chaves. Esta palavra chama-se slot. Um slot é uma espécie de variável, onde os seus valores podem ser previamente definidos.
Cada intent é uma ação. Cada ação pode ter um ou mais comandos. Cada comando pode ou não ter um slot. No comando de acender ou apagar o quarto verde vê-se que tem apenas um comando com um slot. Já na ação (intent) de acender ou apagar todas as luzes vê-se três comandos, ou três formas de chamar esta ação.
SERVIDOR LAMBDA
O AWS Lambda da Amazon é uma plataforma que permite que o usuário, ou cliente, pague apenas o que consumir. Disponibiliza processamento sempre que preciso, ou até quando agendado que seja executado automaticamente.
Com a alta disponibilidade, o usuário apenas fornece seu código, ou cria a sua Função do Lambda, como é chamado. Cada função é gerenciada pela Amazon, desde a disponibilidade de execução e segurança. Com o AWS Lambda pode-se conectar com outros serviços da Amazon, como o AWS IoT Core e a Amazon Alexa.
Principais pontos do programa
OBS: ASSISTENTE ALEXA CONVERSA COM LAMBDA QUE ENTÃO CONVERSA COM AWS IoT CORE E FINALMENTE O MÓDULO U-BLOX NINA W102.
AWS IoT Core (a coisa) (PyPortal)
A função da Amazon voltada para a Internet das Coisas (AWS IoT Core) permite conectar dispositivos à Internet para que se possam ser transmitidos dados, armazenados e analisados. Muitos tipos de objetos são usados nas aplicações para Internet das Coisas, desde câmeras de segurança a refrigeradores. Seja qual for o dispositivo desde que possa ser ligado, pode fazer parte do IoT. Essas aplicações tornaram dados antigamente inúteis em dados importantes para os usuários.
A Amazon oferece uma plataforma de Internet of Things (Internet das Coisas) onde se gerenciam dispositivos na nuvem facilmente. Podem-se criar aplicações que processam ou analisam informações de dispositivos conectados sem necessitar que o cliente tenha uma infraestrutura. O AWS IoT Core permite suporte ao protocolo HTTP e MQTT, que visa reduzir consumo de dados na rede. Estes protocolos utilizam suas respectivas portas para acesso aos serviços.
Certificados
KEY_PATH = "/dc5478fc78-private.pem"
CERT_PATH = "/dc5478fc78-certificate.pem"
CACERT_PATH = "/ca.pem"
(este não é utilizado, pois deve o mesmo estar embutido no engine do Micropython)
As coisas criadas
EXECUTANDO PROGRAMA
Para edição do programa foi utilizado a ide THONNY, um editor Python simples para programadores iniciantes. Abra a COM onde está o U-BLOX NINA W102.
Control-C para a execução e Control-D inicia.
TESTES COM A ASSISTENTE ALEXA E CIRCUITPYTHON
CÓDIGO
importmachinefromnetworkimportWLANimportnetworkimporttimefromumqtt.robustimportMQTTClientlast_message=0message_interval=5counter=0DISCONNECTED=0CONNECTING=1CONNECTED=2MQTT_HOST="XXXXXXXXX-ats.iot.us-east-1.amazonaws.com"TOPIC="$aws/things/lamp/shadow/update/accepted"MQTT_CLIENT_ID="lamp"MQTT_PORT=8883state=DISCONNECTEDconnection=Nonewlan=network.WLAN(network.STA_IF)wlan.active(True)defpub_msg(msg):globalconnectionconnection.publish(topic=TOPIC,msg=msg,qos=0)print('Sending: '+msg)defrun():globalstateglobalconnectionglobalclientKEY_PATH="/dc5478fc78-private.pem"CERT_PATH="/dc5478fc78-certificate.pem"CACERT_PATH="/ca.pem"withopen(KEY_PATH,'r')asf:key1=f.read()print(key1)print(" ")withopen(CACERT_PATH,'r')asf:key2=f.read()print(key2)print(" ")withopen(CERT_PATH,'r')asf:cert1=f.read()print(cert1)print(" ")client=MQTTClient(client_id=MQTT_CLIENT_ID,server=MQTT_HOST,port=MQTT_PORT,keepalive=10000,ssl=True,ssl_params={"cert":cert1,"key":key1,"server_side":False})client.set_callback(sub_cb)client.connect()print('MQTT LIVE!')client.subscribe(TOPIC)print('Connected to %s MQTT broker, subscribed to %s topic'%(MQTT_HOST,TOPIC))defsub_cb(topic,msg):print((topic,msg))iftopic==b'notification'andmsg==b'received':print('ESP received hello message')whilestate==CONNECTED:msg='{"device_id":"some_id", "data":"some_data"}'pub_msg(msg)time.sleep(2.0)whileTrue:if1==1:wlan.connect('Andreia Oi Miguel 2.4G','XXXXXXXXX')whilenotwlan.isconnected():machine.idle()print('Connected...')run()whileTrue:try:client.check_msg()if(time.time()-last_message)>message_interval:msg=b'Hello #%d'%counterclient.publish(TOPIC,msg)last_message=time.time()counter+=1exceptOSErrorase:run()break
Salve o programa e execute!
O programa mandará a cada segundo um Hello #xxx para o tópico e também se inscreverá no mesmo para receber alguma mensagem, no caso, para mandar acender ou apagar uma lâmpada.
Nenhum comentário:
Postar um comentário