quarta-feira, 7 de abril de 2021

U-BLOX NINA W106 SENDO PROGRAMADO EM BASIC ANNEX RDS - MANDANDO E RECEBENDO TEXTO

U-BLOX NINA W106 SENDO PROGRAMADO EM BASIC ANNEX RDS  - MANDANDO E RECEBENDO TEXTO


O objetivo deste BLOG é demonstrar como é possível utilizar programar o módulo u-BLOX NINA W106 (ESP32) no starter kit EVK-NINA-W1 com a linguagem BASIC ANNEX WiFi RDS (1.43 Beta) e para enviar e receber dados via BLE.
UBLOX NINA W106

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, com 4MB FLASH

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

SOBRE A LINGUAGEM BASIC

BASIC (acrônimo para Beginner's All-purpose Symbolic Instruction Code; em português: Código de Instruções Simbólicas de Uso Geral para Principiantes) é uma linguagem de programação, criada com fins didáticos, pelos professores John George Kemeny, Thomas Eugene Kurtz e Mary Kenneth Keller em 1964 no Dartmouth College.

Basic pode ser uma opção de linguagem para se aprender lógica, uma vez que foi desenvolvida em alto nível (próxima da linguagem humana). Além da sua relativa facilidade de criar aplicações de forma simples e rápida.

BASIC também é o nome genérico dado a uma grande família de linguagens de programação derivadas do BASIC original. Provavelmente existem mais variações de BASIC do que de qualquer outra linguagem de programação.

BASIC ANNEX RDS

ESP-NOW, BLE, MQTT...ÓTIMO PARA IoT

Veja o HELP  do BASIC ANNEX RDS

Veja também FAQ


SOBRE BLE

Esta é uma breve introdução ao BLE e não chega perto de toda a história.

O BLE não é uma atualização para o Bluetooth Classic, é um sistema diferente com diferentes usos pretendidos. O BLE funciona de uma maneira muito diferente do Bluetooth anterior. O BLE foi projetado para aplicações de baixa consumo e consegue isso usando pacotes de dados pequenos e pouco frequentes. Na verdade, ele não foi projetado para conexões contínuas e grandes quantidades de dados. Para isso, o Bluetooth Classic é uma escolha melhor. Em essência, o BLE atinge seu baixo consumo de energia por não estar conectado com muita frequência, ao contrário do Bluetooth Classic, que mantém uma conexão constante.

Existem duas maneiras pelas quais os dispositivos BLE podem se comunicar; Emissora + Observadora e Central + Periférica.

Com o Broadcaster + Observer, não há uma conexão padrão, o Broadcaster, geralmente algum tipo de sensor, envia sinais periódicos (pacotes de publicidade) que o Observer escuta. O radiodifusor normalmente não sabe se algo está escutando ou não.
O cenário Central + Periférico é mais parecido (mas não exatamente o mesmo) que a conexão clássica. Quando o dispositivo central (mestre) encontra um dispositivo periférico (escravo) ao qual deseja se conectar, inicia uma conexão e assume a função principal de gerenciar a conexão e os tempos.
Como o Bluetooth Classic pressupõe que você usará uma única conexão, a conexão será estabelecida por um tempo e não precisará ser particularmente rápida na conexão. O BLE, por outro lado, foi projetado para fazer muitas conexões de curto prazo e, portanto, foi projetado para conectar e desconectar muito rapidamente.

BLE é tudo sobre serviços e características. Um serviço é uma coleção de características relacionadas e uma característica é onde os dados estão. Em um dispositivo BLE típico, você pode ter um serviço que contém características relacionadas às propriedades dos módulos, como; o nome do fabricante, o nome do dispositivo, o ID do firmware e / ou o número da versão. Também pode ter um segundo serviço que agrupa as características que mantêm os dados reais. Podem ser coisas como temperatura, umidade, brilho. Isso significa que, para usar o BLE, você geralmente precisa conhecer as características que deseja usar (mais especificamente os UUIDs para as características).

Com o BLE, os valores dessas propriedades estão disponíveis o tempo todo. Se você quiser saber o nome do fabricante, leia a válvula na característica do nome do fabricante. Se você quiser saber a temperatura, leia o valor da característica de temperatura. Isso é muito diferente de como o Bluetooth clássico funciona. Com o Bluetooth clássico, você tem apenas um canal de comunicação e todos os dados são enviados por um canal.

BLE NO BASIC Annex RDS

O BLE funciona em paralelo com o Wi-Fi. É possível ligar dispositivos móveis (como smartphones, tablets, computadores) ao ESP32.

O acesso gratuito e protegido por palavra-chave é suportado (PIN).
  • O modo servidor significa que um dispositivo pode ligar-se ao módulo.
  • O modo cliente significa que o ESP32 pode ligar-se por si só a outro dispositivo de servidor.
  • Scan significa que é possível pesquisar todos os dispositivos BLE presentes em torno do ESP32
O modo cliente não é suportado.

INTERPRETADOR ?

O interpretador básico funciona através da leitura de um arquivo de script salvo no sistema de arquivamento em disco local esp.

Este é o modo padrão se nenhum SDcard externo estiver conectado ao u-BLOX NINA W106.

Além disso, o Annex32 pode usar um SDcard externo como sistema de arquivos, permitindo até 16 Gbytes de espaço em disco.

Durante a inicialização, se um SDcard externo for detectado, ele será conectado automaticamente e usado como o sistema de arquivos padrão, caso em que o sistema de arquivo interno não será usado.

Como o u-BLOX NINA W106 contém uma boa quantidade de RAM, o script do usuário é copiado do disco para uma área dedicada na memória RAM onde é executado, junto com a lista das linhas do programa, os rótulos dos ramos e a lista do usuário definido sub-rotinas ..

Isso usa mais RAM em comparação com outras abordagens, mas permite uma execução mais rápida do programa.

Outra consideração de desempenho é que o u-BLOX NINA W106 deve ser capaz de executar várias atividades em segundo plano (servidor web, servidor de arquivos, etc.), portanto, precisa de memória livre suficiente para executar tais tarefas, e essas tarefas paralelas obviamente terão um impacto no desempenho do script ..

Portanto, em termos de desempenho, o interpretador não é particularmente rápido, mas deve ser rápido o suficiente para a maioria das tarefas que você pode exigir. 


Comandos/Eventos BLE do BASIC Annex RDS


Comandos

BLUETOOTH. CONFIGURAÇÃO "nome de dispositivo" [, código] ' definir o nome do dispositivo BLE e opcionalmente o código pin

Atenção: o pino é um número de 6 dígitos e até mesmo a definição 1 será necessária para introduzir 000001 como código pin.

O u-BLOX NINA W106 é visto como um dispositivo UART NORDIC com os seguintes UUIDs:

SERVICE_UUID 6E400001-B5A3-F393-E0A9-E50E24DCCA9E CHARACTERISTIC_UUID_RX 6E400002-B5A3-F393-E0A9-E50E24DCCA9E
CHARACTERISTIC_UUID_TX 6E400003-B5A3-F393-E0A9-E50E24DCCA9E

BLUETOOTH.CLEAR ' limpar o BLE libertando cerca de 20KB de RAM ' há uma mensagem de erro que aparece no console mas está OK 

BLUETOOTH.DELETE ' eliminar o BLE liberando em torno de 40KB de RAM; após este comando o BLE não pode ser usado novamente e requer um reinício do módulo

BLUETOOTH.POWER ' definir a potência de saída de 0 a 7 -> -12dmb para +9dbm

BLUETOOTH.PRINT "texto" ' escrever uma mensagem de texto para o dispositivo conectado

BLUETOOTH.WRITE "texto" escreva uma mensagem de texto para o dispositivo conectado

A$ = BLUETOOTH.READ$ ' devolve uma mensagem de texto do BUFFER DE IO em A$

a = BLUETOOTH.LEN ' devolve o tamanho da mensagem recebida do dispositivo conectado

a = BLUETOOTH.CONNECTED' devolve 1 se houver um dispositivo conectado ou 0 se não

BLUETOOTH.STATUS ' útil para o evento (ver abaixo); devolve o tipo de evento gerado: 0= nenhum, 1 = dispositivo conectado, 2= dispositivo desconectado, 3=mensagem recebida, 4=Scan finalizado

BLUETOOTH.WRITE_IOBUFF(buff_num [, iniciar [, tamanho]] ' escrever no BUFFER DE IO para o dispositivo conectado

BLUETOOTH.READ_IOBUFF(buff_num) lê dentro do BUFFER DE IO do dispositivo ligado 

A$ = BLUETOOTH.SCANRESULT$ ' devolve a lista dos dispositivos encontrados durante um SCAN em formato json

Eventos

ONBLUETOOTH Label' define a rotina do evento para o bluetooth (BLE);  BLUETOOTH.STATUS é muito útil aqui

Obtendo MAC ADDRESS

Print MAC$

Exemplo

O exemplo abaixo:
  • Define Label a ser chamado quando o Peripheral detectar algum Evento (conexão, desconexão,etc);
  • Cria um Cliente BLE (Peripheral) chamado SmartCore;
  • Define tamanho do IOBUFF (BUFFER DE IO) para 10 bytes;
  • Programa o TIMER para enviar a cada 500ms para a Central, um número Randômico seguido de LINE FEED;
  • No Label é analizado se o evento é mensagem recebida e então é impressa.

onbluetooth ble_receive

'Atenção : o pino é um número de 6 dígitos e até mesmo a configuração 1 será necessária para inserir 000001 como código de pino.

bluetooth.setup "SmartCore"000001

 

IOBUFF.DIM(1, 10) = 65, 66, 67, 68, 69, 70, 71, 72, 73, 74

 

timer0 500, send_msg

 

wait

 

send_msg:

  bluetooth.write "_" + str$(rnd(1000)) + chr$(10)

return

   

ble_receive:

  print bluetooth.len, bluetooth.status

  if bluetooth.status = 3 then

    bluetooth.read_iobuff(0)

    for z = 1 to iobuff.len(0)

      print iobuff.read(0, z-1),

    next z

    print

  end if

return


Execução


APP detectando Smartcore

Descobrindo que é um serviço - "BLE SERIAL"
É o pin 000001 quando pedir

Conectando ao Servidor e Recebendo os números Random

Mandando um "Ola" para a Central

Mensagem "Ola" recebida

DÚVIDAS

suporte@smartcore.com.br

REFERÊNCIAS

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfó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