sábado, 20 de março de 2021

NINA W106 - PROGRAMANDO EM PYTHON - ZERYNTH

NINA W106 - PROGRAMANDO EM PYTHON - ZERYNTH

 

O objetivo deste BLOG é demonstrar de forma resumida como é possível fazer com que o módulo NINA W106 possa ser programado em Python mediante a plataforma Zerynth.

Neste projeto, construiremos um dispositivo BLE (Bluetooth Low Energy) com a função de um beacon EDDYSTONE. Ao aproximar um celular com BLE SCANNER, você poderá entrar em uma página clicando na URL.

EVK NINA W106

EDDYSTONE


Com o Eddystone, você ainda pode criar funcionalidades semelhantes para incluir dois níveis de hierarquia. Isso inclui um Beacon ID de 16 bytes, composto por um namespace de 10 bytes e uma instância de 6 bytes.
O Eddystone fornece quatro tipos de quadros:
  • Eddystone-UID : esse tipo é semelhante à configuração de UUID + Maior + Menor do iBeacon. Ele define um Beacon ID de 16 bytes composto por um namespace de 10 bytes e uma instância de 6 bytes. Por exemplo, o espaço para nome poderia definir o ID de um varejista nacional para suas lojas e a instância se referiria a cada loja exclusivamente.
  • Eddystone-URL : esse tipo fornece uma maneira de transmitir um URL a ser descoberto por um dispositivo de scanner BLE, que por sua vez pode navegar até o URL e apresentar a página da Web ao usuário.
  • Eddystone-TLM : esse tipo fornece informações de telemetria sobre o dispositivo, como nível da bateria, temperatura e um contador de pacotes anunciados.
  • Eddystone-EID : esse tipo fornece uma estrutura para atingir um certo nível de segurança e privacidade de um dispositivo. EID significa ID Efêmero, que é um identificador que muda periodicamente a uma taxa determinada durante a fase de implantação, registrando-a em um serviço da web confiável.
NOTA: Embora o Google tenha praticamente abandonado o padrão Eddystone em smartphones (especificamente Android e Chrome), ele ainda pode servir como um bom formato para aplicativos em que você controla os dois lados (dispositivos de radiodifusão + dispositivos de scanner) e que não dependem do smartphone aplicativos. Também serve como um ótimo exercício para aprender mais sobre como os anúncios Bluetooth funcionam e como utilizá-los para seu próprio aplicativo.
Neste tutorial, focaremos nos tipos de quadro Eddystone-UID e Eddystone-URL .
Aqui está o que abordaremos hoje:

Formato Eddystone
Dados de serviço
Eddystone-UID
Eddystone-URL
Eddystone-TLM e Eddystone-EID
Implementando Eddystone no NINA B302 usando Zephyr RTOS
Exemplo de Eddystone-UID

Formato Eddystone
Para entender melhor como os dispositivos de transmissão Eddystone funcionam, precisamos examinar os detalhes dos pacotes de publicidade envolvidos. Veja como é o formato de um pacote de anúncios Eddystone:
A parte mostrada na figura acima é constante para todos os pacotes de anúncios do Eddystone, exceto para a parte de Dados do Serviço .
Os dados do anúncio seguem o formato Comprimento-Tipo-Valor (semelhante ao formato TLV popular ). valor Comprimento indica o comprimento dos dados que incluem o Tipo e a Carga útil .
O padrão Eddystone utiliza o tipo de dados Anúncio de Dados de Serviço para enviar os dados para os dispositivos de scanner BLE. O iBeacon, por outro lado, utiliza o tipo de dados Anúncio de Dados do Fabricante.
Agora, vejamos a parte de dados de serviço, que inclui as informações que estamos interessados ​​em analisar no final do receptor.

Dados de serviço

O formato da porção de dados de serviço depende do tipo de quadro usado (Eddystone-UID, Eddystone-URL, Eddystone-TLM ou Eddystone-EID).
O primeiro byte do campo Dados do Serviço sempre inclui o tipo de quadro, definido da seguinte forma:


Eddystone-UID

Como mencionamos anteriormente, esse tipo de quadro é usado de maneira semelhante ao iBeacon da Apple. Inclui o seguinte:

Ao usar esse tipo de quadro, podemos utilizar o namespace de 10 bytes para um ID exclusivo de nossa escolha (por exemplo, para indicar um identificador de loja específico) e, em seguida, usar o 6 bytes como uma identificação de um subconjunto do namespace (por exemplo, para identificar um corredor dentro da loja).
Notas:
  • Esse tipo de quadro utiliza no máximo 31 bytes de dados de anúncio disponíveis em um pacote de anúncio BLE (primário).
  • campo Ranging Data é a potência Tx medida em 0 metros do transmissor (-100 dBm a +20 dBm).
    De acordo com a especificação Eddystone, a melhor maneira de determinar o valor a ser incluído nesse campo é medir o RSSI real em 1 metro e adicionar 41 dBm ao valor (com base na suposição de que 41 dBm é a perda de sinal que ocorre acima de 1 metro).
  • Para obter mais informações e recomendações sobre a geração do ID do espaço para nome e da instância, consulte a especificação Eddystone aqui .
Nota importante : O valor da potência Tx usa um formato de complemento de dois para representar valores assinados. Para obter mais informações sobre esse cálculo, consulte a seção do artigo da Wikipedia sobre o complemento de dois: https://en.wikipedia.org/wiki/Two%27s_complement#Converting_to_two's_complement_representation


Eddystone-URL

O tipo de quadro Eddystone-URL é único e diferente do uso do Eddystone-UID ou do formato iBeacon da Apple. É usado para anunciar um URL para o scanner descobrir e analisar e, potencialmente, apontar para um navegador da Web.
Esse tipo de quadro é usado principalmente em aplicativos e implementações da Physical Web ".
Como o comprimento máximo dos dados do anúncio BLE é de 31 bytes, isso limita os URLs que podem ser transmitidos usando esse tipo de quadro. No entanto, o formato fornece algum nível de codificação compactada para aproveitar ao máximo o espaço limitado disponível para os dados do anúncio.
Aqui está o formato usado para esse tipo de quadro:

O valor da potência Tx é representado da mesma maneira que descrevemos na seção Eddystone-UID acima.
O esquema de URL é definido da seguinte maneira:
- Diferentes prefixos para URLs são representados da seguinte maneira
- A parte principal do URL é incluída como uma sequência de caracteres. Por exemplo, "google" seria representado como uma sequência de 'g' 'o' 'o' 'g' 'l' 'e', ​​que seria convertida em seus valores ASCII.
- Finalmente, a expansão do URL (por exemplo, .com / ou .com ) é representada da seguinte maneira:

Por exemplo, se quiséssemos representar "https://www.google.com/" com uma potência Tx de 0 dBm, a matriz de dados de serviço ficaria assim:

Tipo de quadro (URL)Potência Txhttps: // www.googeue
.com /
0x100x000x010x670x6f0x6f0x670x6c0x650x00
Exemplo de valor do campo Dados do serviço Eddystone-URL

Eddystone-TLM e Eddystone-EID

Os quadros Eddystone-TLM são usados ​​para transmitir dados de telemetria úteis para monitorar a saúde dos beacons em campo. Esse quadro não contém nenhum identificador, portanto é emparelhado com os quadros Eddystone-URL, Eddystone-UID ou Eddystone-EID.
Quando emparelhado com quadros EID, o pacote Eddystone-TLM é criptografado. Quando emparelhados com quadros de URL ou UID, no entanto, os pacotes TLM não são criptografados.
Para saber mais sobre esses tipos, consulte os seguintes links:
Sobre a Zerynth

Zerynth simplifica o desenvolvimento de IoT fornecendo uma maneira fácil e eficiente de programar os microcontroladores de 32 bits mais populares em Python e conectá-los às principais infraestruturas de nuvem, com padrões de segurança de alto nível. Com P&D em Pisa, Itália, e uma equipe de vendas global, Zerynth está ajudando milhares de desenvolvedores em todo o mundo a desenvolver novos produtos de IoT e aplicativos da Indústria 4.0 com custos reduzidos e melhor tempo de colocação no mercado.

Zerynth compreende um conjunto de ferramentas de desenvolvimento de software que aceleram o design do produto IoT, simplificando a programação de firmware de microprocessadores de 32 bits - como o dispositivo Arm® Cortex ™ de 64 MHz do SoC nRF52840 - usando Python ou C / Python “híbrido”. (A programação C / Python é útil para codificação de baixo nível para tarefas críticas de tempo, ao mesmo tempo que mantém a flexibilidade e legibilidade do Python para tarefas não críticas.) O produto também oferece suporte à conexão segura com os principais serviços de nuvem e facilita a integração de hardware com sensores, atuadores, e protocolos industriais. O design e o desenvolvimento são ainda mais simplificados pela disponibilidade de uma lista crescente de bibliotecas de código aberto disponíveis no GitHub.
 
As ferramentas de software compreendem ‘Zerynth Virtual Machine’ e ‘Zerynth Studio’. Zerynth Virtual Machine é uma máquina virtual multithread, baseada em pilha, construída em cima de um sistema operacional em tempo real (RTOS). A máquina virtual é independente do hardware, permitindo a reutilização de código em uma ampla gama de microcontroladores de 32 bits. Quando executado no NINA W106, a máquina virtual usa apenas 60 a 80kB da alocação de Flash de 1 MB do chip e 3 a 5kB de sua alocação de 256kB de RAM.

Zerynth Studio é um ambiente de desenvolvimento integrado (IDE) poderoso e gratuito para o desenvolvimento de aplicativos Python ou híbridos C/Python. O IDE inclui um compilador, um depurador e um editor de código avançado, juntamente com tutoriais e projetos de exemplo para aprendizado rápido.
 
Zerynth Virtual Machine foi desenvolvido com o objetivo de trazer a linguagem de programação de alto nível, Python, para o mundo embarcado com suporte para compatibilidade multithread e cross board. A máquina virtual oferece suporte à maioria dos recursos de alto nível do Python, incluindo módulos, classes, multithreading, retorno de chamada, temporizadores e exceções. Além disso, a máquina virtual permite o uso de recursos personalizados relacionados ao hardware, como interrupções, modulação por largura de pulso (PWM) e E/S digital.



 Uma licença gratuita para acessar a Máquina Virtual Zerynth é concedida uma vez que o desenvolvedor cria uma conta Zerynth. A máquina virtual é então instalada no NINA W106 permitindo que o desenvolvedor comece a programar usando o Zerynth Studio. O recurso de atualização de firmware de dispositivo over-the-air (OTA-DFU) do Nordic SoC garante que a máquina virtual incorporada possa ser atualizada regularmente. Os serviços de nuvem com suporte - por exemplo, AWS, Google Cloud Platform e IBM Cloud - permitem ao desenvolvedor visualizar seus dados usando o aplicativo Zerynth ou um painel IoT de terceiros.

Python é uma linguagem de programação interpretada, orientada a objetos e de alto nível com semântica dinâmica. As estruturas de dados de alto nível da linguagem de programação, combinadas com tipagem dinâmica e vinculação dinâmica, tornam-na útil para o desenvolvimento rápido de aplicativos, bem como para uso como linguagem de script para conectar componentes existentes.

Stack Zerynth

Habilitando o uso de Python para microcontroladores e soluções incorporadas, Zerynth permite:

Redução do tempo de comercialização
Flexibilidade
Escalabilidade
Tudo isso é possível graças ao Zerynth Stack. Os principais componentes são:

MAIS SOBRE ZERYNTH STUDIO: um IDE multiplataforma para desenvolver seu código Python ou híbrido C / Python e gerenciar suas placas. Inclui um compilador, um depurador e um editor, além de tutoriais e projetos de exemplo para uma experiência de aprendizado fácil. Você pode baixar Zerynth Studio e começar com uma das placas suportadas gratuitamente!



MAIS SOBRE ZERYNTH VIRTUAL MACHINE: um sistema operacional multithread em tempo real que fornece independência de hardware real, permitindo a reutilização de código em um amplo conjunto de microcontroladores de 32 bits. A VM oferece suporte à maioria dos recursos de alto nível do Python, como módulos, classes, multithreading, callback, temporizadores e exceções. Além disso, permite o uso de recursos personalizados relacionados ao hardware, como interrupções, PWM, E / S digital e um grande número de bibliotecas: de conectividade a sensores e atuadores.

ZERYNTH ADVANCED DEVICE MANAGER: um gerenciador de dispositivos compatível com muitos provedores de nuvem (como Azure, Kinetis, Bluemix, Amazon), expondo uma interface simples baseada em API para coleta de dados, atuação e integração móvel.

ZERYNTH APP: uma interface de propósito geral para objetos movidos a Zerynth que transforma qualquer dispositivo móvel em controlador e display para objetos inteligentes e sistemas IoT. Você não precisa escrever nenhum código separado para Android ou iOS.


Do protótipo à produção

A versão gratuita do Zerynth Studio permite que você use todos os recursos necessários para criar um protótipo de suas soluções BLE, mas você pode programar gratuitamente até 5 unidades de cada placa suportada. Você pode desbloquear esse limite com a versão Zerynth Studio PRO (disponível a partir de 28 de junho de 2017), que também incluirá recursos de nível industrial como:

RTOS selecionável;
Desenvolvimento de atualização Over the Air;
Firmware protegido por hardware gravado no dispositivo em volumes industriais;
… e muito mais

O fluxo para criação de um projeto é o seguinte:

Crie um projeto;
Escolhe o hardware que será conectado;
Preparação do hardware para executar o código Zerynth carregando a máquina virtual nele, um processo chamado “virtualização”;
Adicione os arquivos Python ao projeto;
Compilação do projeto para o hardware em questão, obtendo o bytecode executável;
Uplink o bytecode para o device “virtualizado”;
Inspecione a saída do dispositivo pelo monitor serial.

Middleware Zerynth

O middleware Zerynth possibilita aos desenvolvedores programar microcontroladores 32 bits e poder conectá-los à nuvem (os que possuem hardware para isso, é claro). As principais características são:

Misturar Python 3 e C para um desenvolvimento eficiente;
Footprint pequeno: Zerynth requer apenas 60 à 80kB de memória Flash e de 3 à 5kB de memória RAM;
Integra um RTOS de sua escolha (FreeRTOS ou ChibiOS), pois isto é possível durante a virtualização do device. Com suporte a multithreading;
Conectividade: permite uma fácil integração com serviços de Cloud e Firmware Over the Air (FOTA).
Tudo isso é possível graças ao conjunto modular Zerynth de ferramenta de software que forma o ecossistema Zerynth:

Zerynth Virtual Machine;
Zerynth Studio;
Zerynth ADM;
Zerynth App.
O acesso a este middleware Zerynth é feito quando o kit / placa é virtualizado.

Bibliotecas

Zerynth Studio possui a própria biblioteca composta por vários módulos variando desde interrupções, PWM, GPIOs e característica de alto nível Python como: módulos, classes, multithreading, callbacks, timers e exceptions.

Adicionando, a IDE utiliza bibliotecas oficiais de parceiros / fabricantes. Ambas bibliotecas estão incluídas no Zerynth e possam ser utilizados conforme o hardware do projeto. Neste link, você tem acesso a todas bibliotecas possíveis.

Código fonte
################################################################################ # Eddystone Beacon # # Created by Zerynth Team 2019 CC # Author: G. Baldi ############################################################################### import streams import timers #import the ESP32 BLE driver: a BLE capable VM is also needed! from espressif.esp32ble import esp32ble as bledrv # then import the BLE module and beacons from wireless import ble from wireless import ble_beacons as bb streams.serial() adv_content = 0 battery_level = 40 temperature = 23.2 pdu_count = 0 uptime = timers.timer() uptime.start() # create payloads to cycle through payloads = [ bb.eddy_encode_uid("Zerynth","Python",-69), # UID Eddystone payload bb.eddy_encode_url("https://www.smartcore.com.br",-69), # URL Eddystone payload bb.eddy_encode_tlm(battery_level,temperature,pdu_count,uptime.get()/1000) # TLM Eddystone payload ] # this callback will be called at the end of an advertising cycle. # it is used to switch to the next content def adv_stop_cb(data): global pdu_count,adv_content print("Advertising stopped") adv_content = (adv_content+1)%3 if adv_content == 0: # advertise UID interval = 100 timeout = 10000 elif adv_content == 1: # advertise URL interval = 100 timeout = 15000 else: # advertise TLM interval = 100 timeout = 150 pdu_count+=1 payloads[2] = bb.eddy_encode_tlm(battery_level,temperature,pdu_count,uptime.get()/1000) # TLM Eddystone payload payload = payloads[adv_content] ble.advertising(interval,timeout=timeout,payload=payload,mode=ble.ADV_UNCN_UND) ble.start_advertising() print("Advertising restarted with",ble.btos(payload)) try: # initialize BLE driver bledrv.init() # Set GAP name and no security ble.gap("Zerynth",security=(ble.SECURITY_MODE_1,ble.SECURITY_LEVEL_1)) ble.add_callback(ble.EVT_ADV_STOPPED,adv_stop_cb) # set advertising options: advertise every second with custom payload in non connectable undirected mode # after 10 seconds, stop and change payload ble.advertising(100,timeout=10000,payload=payloads[adv_content],mode=ble.ADV_UNCN_UND) # Start the BLE stack ble.start() # Now start scanning for 30 seconds ble.start_advertising() except Exception as e: print(e) # loop forever while True: print(".") sleep(10000)

REGISTRANDO DISPOSITIVO

VIRTUALIZANDO

Loading settings... Switched to auto mode Ready! Checking for updates... Retrying authorization... Can't erase flash [info] Cloning from C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\examples\Eddystone_Beacon [info] Project Eddystone Beacon created with uid: PF6UmwkgQpmCgIVX7Kt2NQ [info] Downloading package sys.zerynth.esptool-windows64 [info] Downloading package sys.zerynth.xtensalx6-windows64 [info] Downloading package vhal.zerynth.xtensalx6_esp32 [info] Installing package sys.zerynth.esptool-windows64 [info] Installing package sys.zerynth.xtensalx6-windows64 [info] Installing package vhal.zerynth.xtensalx6_esp32 [info] All dependencies installed! Can't erase flash [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] ########## STEP 0 - first pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 0 - second pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 1 - C code compilation [info] Compiling C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 533 : passing argument 1 of 'esp_ble_gap_set_prefer_conn_params' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 547 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 604 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 650 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 654 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 669 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 691 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 768 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 796 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 1042 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 104 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 103 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 104 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 103 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\vhal\xtensa-lx6\esp32\ble/bt.h => line 2 : #warning "This header is deprecated, please use functions defined in esp_bt.h instead." [-Wcpp] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__cdefs/zerynth.h => line 33 : "printf" redefined [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\vhal\xtensa-lx6\esp32\ble\bluedroid\common\include/common/bt_trace.h => line 44 : "MAX" redefined [info] Linking... [info] ########## STEP 4 - generate binary [info] Resource table at 1360 0x550 [info] Saving to C:\Users\Usuario\zerynth2\tmp\zstudio.vbo [info] Compilation Ok Only devices supporting JTAG probes can be debugged! [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] ########## STEP 0 - first pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 0 - second pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 1 - C code compilation [info] Getting C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c from cache [info] Linking... [info] ########## STEP 4 - generate binary [info] Resource table at 1360 0x550 [info] Saving to C:\Users\Usuario\zerynth2\tmp\zstudio.vbo [info] Compilation Ok Switched to advanced mode Switched to auto mode Can't erase flash Only devices supporting JTAG probes can be debugged! [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] ########## STEP 0 - first pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 0 - second pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 1 - C code compilation [info] Compiling C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__cdefs/zerynth.h => line 33 : "printf" redefined [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 533 : passing argument 1 of 'esp_ble_gap_set_prefer_conn_params' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 547 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 604 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 650 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 654 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 669 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 691 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 768 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 796 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c => line 1042 : assignment from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 104 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 103 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 104 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [info] Linking... [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__lang/psequence.h => line 103 : initialization from incompatible pointer type [-Wincompatible-pointer-types] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\vhal\xtensa-lx6\esp32\ble/bt.h => line 2 : #warning "This header is deprecated, please use functions defined in esp_bt.h instead." [-Wcpp] [warning] C:\Users\Usuario\zerynth2\dist\r2.6.3\vhal\xtensa-lx6\esp32\ble\bluedroid\common\include/common/bt_trace.h => line 44 : "MAX" redefined [info] ########## STEP 4 - generate binary [info] Resource table at 1360 0x550 [info] Saving to C:\Users\Usuario\zerynth2\tmp\zstudio.vbo [info] Compilation Ok [info] Searching for device e7a4bc050dddcfcc95a52881d92f1d4634052f87 with alias zs:doit_esp32:e7a4bc050dddcfcc95a52881d92f1d4634052f87 [info] Checking layout... [info] No active layout found [info] Got header: Wversion: v7.0 [info] Got header: I (1411) wifi:config NVS flash: enabled [info] Got header: I (1411) wifi:config nano formating: disabled [info] Got header: I (1411) wifi:Init data frame dynamic rx buffer num: 16 [info] Got header: I (1421) wifi:Init management frame dynamic rx buffer num: 16 [info] Got header: I (1421) wifi:Init management short buffer num: 32 [info] Got header: I (1431) wifi:Init dynamic tx buffer num: 16 [info] Got header: I (1431) wifi:Init static rx buffer size: 1600 [info] Got header: I (1441) wifi:Init static rx buffer num: 4 [info] Got header: I (1441) wifi:Init dynamic rx buffer num: 16 [info] Got header: I (1451) wifi_init: rx ba win: 4 [info] Got header: I (1451) wifi_init: tcpip mbox: 32 [info] Got header: I (1451) wifi_init: udp mbox: 6 [info] Got header: I (1461) wifi_init: tcp mbox: 6 [info] Got header: I (1461) wifi_init: tcp tx win: 5744 [info] Got header: I (1471) wifi_init: tcp rx win: 5744 [info] Got header: I (1471) wifi_init: tcp mss: 1440 [info] Got header: I (1471) wifi_init: WiFi IRAM OP enabled [info] Got header: I (1481) wifi_init: WiFi RX IRAM OP enabled [info] Got header: esp32_wifi.c:670 WiFi STA: protocol BGN (0x7) [info] Got header: mgos_wifi.c:270 WiFi STA: Connecting to Andreia Oi Miguel 2.4G [info] Got header: I (1581) phy: phy_version: 4500, 0cd6843, Sep 17 2020, 15:37:07, 0, 0 [info] Got header: I (1581) wifi:mode : sta (f0:08:d1:c8:cf:98) [info] Got header: I (1591) wifi:Set ps type: 0 [info] Got header: mgos_http_server.c:368 HTTP server started on [80] [info] Got header: mgos_dash.c:203 Dash init ok, server: wss://mdash.net/api/v2/rpc) [info] Got header: mgos_provision_btn.c:90 Factory reset button: pin 0, pull up, hold_ms 0 (hold on boot) [info] Got header: mgos_provision_stat:120 Max state: 3 [info] Got header: mgos_rpc_channel_mq:203 0x3ffb3a80 esp32_C8CF98/rpc [info] Got header: mgos_rpc_channel_ua:313 0x3ffb3ea4 UART0 [info] Got header: mgos_init.c:36 Init done, RAM: 295400 total, 239068 free, 234500 min free [info] Got header: mgos_mongoose.c:66 New heap free LWM: 227708 [info] Got header: mgos_ota_core.c:1330 UID: 0fef52e4924af156, license: none [info] Got header: mgos_net.c:86 WiFi STA: connecting [info] Got header: mgos_provision_state:44 Current state: 0 -> 1 [info] Got header: Hello From Smartcore [info] Probe sent [info] Got header: I (3641) wifi:new:<6,0>, old:<1,0>, ap:<255,255>, sta:<6,0>, prof:1 [info] Got header: I (4161) wifi:state: init -> auth (b0) [info] Got header: Hello From Smartcore [info] Got header: mgos_mongoose.c:66 New heap free LWM: 223776 [info] Got header: I (4171) wifi:state: auth -> assoc (0) [info] Got header: I (4191) wifi:state: assoc -> run (10) [info] Got header: I (4221) wifi:connected with Andreia Oi Miguel 2.4G, aid = 1, channel 6, BW20, bssid = 9c:52:f8:43:7a:e0 [info] Got header: I (4231) wifi:security: WPA2-PSK, phy: bgn, rssi: -31 [info] Got header: I (4241) wifi:pm start, type: 0 [info] Got header: mgos_wifi.c:136 WiFi STA: Connected, BSSID 9c:52:f8:43:7a:e0 ch 6 RSSI -31 [info] Got header: mgos_net.c:90 WiFi STA: connected [info] Got header: I (4261) wifi:AP's beacon interval = 102400 us, DTIM period = 1 [info] Got header: Hello From Smartcore [info] Got header: Hello From Smartcore [info] Got header: I (6431) esp_netif_handlers: sta ip: 192.168.100.116, mask: 255.255.255.0, gw: 192.168.100.1 [error] No answer to probe [info] Writing C:\Users\Usuario\zerynth2\tmp\doit_esp32\main.py [info] Writing C:\Users\Usuario\zerynth2\tmp\doit_esp32\Makefile Project config file missing [info] Writing C:\Users\Usuario\zerynth2\tmp\doit_esp32\project.yml [warning] Trying to search attached device [info] Preparing doit_esp32 [info] Rewriting C:\Users\Usuario\zerynth2\tmp\doit_esp32\project.yml [warning] Trying to get latest available vm {'version': 'r20.09.17', 'xfeatures': [], 'target': 'doit_esp32', 'features': [], 'description': 'Standard', 'rtos': 'esp32-rtos'} [info] Rewriting C:\Users\Usuario\zerynth2\tmp\doit_esp32\project.yml [info] Burning bootloader... [info] Burning bin [info] esptool.py v2.0 [info] Connecting.... [info] Chip is ESP32D0WDQ6 (revision (unknown 0xa)) [info] Uploading stub... [info] Running stub... [info] Stub running... [info] Configuring flash size... [info] Auto-detected Flash size: 4MB [info] Compressed 19584 bytes to 12813... [info] [info] Writing at 0x00001000... (100 %) [info] Wrote 19584 bytes (12813 compressed) at 0x00001000 in 1.1 seconds (effective 137.6 kbit/s)... [info] Hash of data verified. [info] Compressed 305280 bytes to 181775... [info] [info] Writing at 0x00010000... (8 %) [info] Writing at 0x00014000... (16 %) [info] Writing at 0x00018000... (25 %) [info] Writing at 0x0001c000... (33 %) [info] Writing at 0x00020000... (41 %) [info] Writing at 0x00024000... (50 %) [info] Writing at 0x00028000... (58 %) [info] Writing at 0x0002c000... (66 %) [info] Writing at 0x00030000... (75 %) [info] Writing at 0x00034000... (83 %) [info] Writing at 0x00038000... (91 %) [info] Writing at 0x0003c000... (100 %) [info] Wrote 305280 bytes (181775 compressed) at 0x00010000 in 16.1 seconds (effective 151.8 kbit/s)... [info] Hash of data verified. [info] Compressed 3072 bytes to 156... [info] [info] Writing at 0x00008000... (100 %) [info] Wrote 3072 bytes (156 compressed) at 0x00008000 in 0.0 seconds (effective 999.5 kbit/s)... [info] Hash of data verified. [info] Compressed 1024 bytes to 32... [info] [info] Writing at 0x00390000... (100 %) [info] Wrote 1024 bytes (32 compressed) at 0x00390000 in 0.0 seconds (effective 605.7 kbit/s)... [info] Hash of data verified. [info] [info] Leaving... [info] Hard resetting... [info] Chip id retrieved: 0f801d8cfc89 [info] Device registered with uid: 5Xf25PtWReKw7NShBuDsfg [info] Creating vm for device 5Xf25PtWReKw7NShBuDsfg [info] VM DOIT Esp32 DevKit v1 r20.09.17 created with uid: QFKmjuQITPSPOGn4GFsG5A [info] Downloaded Virtual Machine in C:\Users\Usuario\zerynth2\vms\doit_esp32\0f801d8cfc89 with uid QFKmjuQITPSPOGn4GFsG5A [info] Starting Virtualization... [info] Burning bin [info] esptool.py v2.0 [info] Connecting........_____....._____....._____....._____....._ [info] Chip is ESP32D0WDQ6 (revision (unknown 0xa)) [info] Uploading stub... [info] Running stub... [info] Stub running... [info] Configuring flash size... [info] Auto-detected Flash size: 4MB [info] Compressed 19472 bytes to 12785... [info] [info] Writing at 0x00001000... (100 %) [info] Wrote 19472 bytes (12785 compressed) at 0x00001000 in 1.1 seconds (effective 136.9 kbit/s)... [info] Hash of data verified. [info] Compressed 800896 bytes to 517663... [info] [info] Writing at 0x00010000... (3 %) [info] Writing at 0x00014000... (6 %) [info] Writing at 0x00018000... (9 %) [info] Writing at 0x0001c000... (12 %) [info] Writing at 0x00020000... (15 %) [info] Writing at 0x00024000... (18 %) [info] Writing at 0x00028000... (21 %) [info] Writing at 0x0002c000... (25 %) [info] Writing at 0x00030000... (28 %) [info] Writing at 0x00034000... (31 %) [info] Writing at 0x00038000... (34 %) [info] Writing at 0x0003c000... (37 %) [info] Writing at 0x00040000... (40 %) [info] Writing at 0x00044000... (43 %) [info] Writing at 0x00048000... (46 %) [info] Writing at 0x0004c000... (50 %) [info] Writing at 0x00050000... (53 %) [info] Writing at 0x00054000... (56 %) [info] Writing at 0x00058000... (59 %) [info] Writing at 0x0005c000... (62 %) [info] Writing at 0x00060000... (65 %) [info] Writing at 0x00064000... (68 %) [info] Writing at 0x00068000... (71 %) [info] Writing at 0x0006c000... (75 %) [info] Writing at 0x00070000... (78 %) [info] Writing at 0x00074000... (81 %) [info] Writing at 0x00078000... (84 %) [info] Writing at 0x0007c000... (87 %) [info] Writing at 0x00080000... (90 %) [info] Writing at 0x00084000... (93 %) [info] Writing at 0x00088000... (96 %) [info] Writing at 0x0008c000... (100 %) [info] Wrote 800896 bytes (517663 compressed) at 0x00010000 in 45.8 seconds (effective 139.9 kbit/s)... [info] Hash of data verified. [info] Compressed 3072 bytes to 156... [info] [info] Writing at 0x00008000... (100 %) [info] Wrote 3072 bytes (156 compressed) at 0x00008000 in 0.0 seconds (effective 1009.9 kbit/s)... [info] Hash of data verified. [info] Compressed 1024 bytes to 1035... [info] [info] Writing at 0x00390000... (100 %) [info] Wrote 1024 bytes (1035 compressed) at 0x00390000 in 0.1 seconds (effective 80.2 kbit/s)... [info] Hash of data verified. [info] [info] Leaving... [info] Hard resetting... [info] Virtualization Ok Operation successful! Now you can Uplink your code into your doit_esp32

COMPILANDO

UPLOAD

Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 1 - C code compilation [info] Getting C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c from cache [info] Linking... [info] ########## STEP 4 - generate binary [info] Resource table at 1360 0x550 [info] Saving to C:\Users\Usuario\zerynth2\tmp\zstudio.vbo [info] Compilation Ok [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] ########## STEP 0 - first pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 0 - second pass [info] Compiling module: __main__ @ C:\Users\Usuario\Eddystone_Beacon\main.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\__builtins__.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Compiling module: __builtins__ @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\__builtins__.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\streams.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Compiling module: streams @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\streams.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\timers.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Compiling module: timers @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\timers.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Compiling module: espressif.esp32ble.esp32ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\libs\official\espressif\esp32ble\esp32ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Compiling module: wireless.ble @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Compiling module: wireless.ble_beacons @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\wireless\ble_beacons.py [info] Searching for C:\Users\Usuario\Eddystone_Beacon\urlparse.py [info] Searching for C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] Compiling module: urlparse @ C:\Users\Usuario\zerynth2\dist\r2.6.3\stdlib\urlparse.py [info] ########## STEP 1 - C code compilation [info] Getting C:/Users/Usuario/zerynth2/dist/r2.6.3/libs/official/espressif/esp32ble/csrc/ble_ifc.c from cache [info] Linking... [info] ########## STEP 4 - generate binary [info] Resource table at 1360 0x550 [info] Saving to C:\Users\Usuario\zerynth2\tmp\zstudio.vbo [info] Compilation Ok [info] Searching for device e7a4bc050dddcfcc95a52881d92f1d4634052f87 with alias zs:doit_esp32:e7a4bc050dddcfcc95a52881d92f1d4634052f87 [info] Checking layout... [info] No active layout found [info] Probe sent [info] Got header: r20.09.17 dst-1svXQ5CfqqVQDCEeCQ doit_esp32 0f801d8cfc89 ZERYNTH [info] Found VM dst-1svXQ5CfqqVQDCEeCQ for doit_esp32 [info] Handshake [info] membase @3FFD9CE8 [info] romstart @401B0000 [info] flash @00080000 [info] Erasing flash [info] Sending Bytecode: 24742 bytes ( available 524288 ) [info] Uplink done
   
Dicas importantes

-Foi utilizado como a opção ESP32 DEV KIT o qual é  similar ao NINA W106
-Foi utilizado o mapa de IOS do módulo U-blox NINA W106 para especificar os GPIOS do ESP32 

EXECUÇÃO
Utilizando BLE SCANNER - URL Smartcore


Resultado ao clicar na URL


Suporte: suporte@smartcore.com.br

Fontes:

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicaçã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

Nenhum comentário:

Postar um comentário