U-BLOX NINA B302 - LENDO SPI COM ESPRUINO JAVASCRIPT
O objetivo deste BLOG é demonstrar como é possível utilizar SPI (Serial Peripheral Interface) para realizar a leitura de sensores. Foi utilizado o BREAKOUT NINA B302.
SPI
O SPI (Serial Periférico Interface, interface periférica serial) é uma especificação de interface de comunicação serial síncronenta usada para comunicação de curta distância, principalmente em sistemas embarcados. A interface foi desenvolvida pela Motorola em meados da década de 1980 e tornou-se um padrão de fato. Aplicativos típicos incluem cartões Secure Digital e displays de cristal líquido.
Montagem
Adquirimos então os seguintes componentes
Montamos a BREAKOUT (B302)
O esquema elétrico é este
Algumas características do Kit
-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Plugável no PROTOBOARD;
-Acesso às várias GPIOS;
Pequena
Espruino é um intérprete de JavaScript para microcontroladores que torna o desenvolvimento de software embarcado rápido e fácil. O intérpretador Espruino é um firmware de código aberto que roda em uma variedade de microcontroladores diferentes.
O Espruino em si não é apenas o firmware ou hardware do interpretador - há também o IDE da Web, ferramentas de linha de comando, documentação, tutoriais e módulos que formam uma solução completa para desenvolvimento de software embarcado.Muitas LIBRARIES
Grave o código HEX do JAVASCRIPT usando o utility J-FLASH LITE ou NRFGO STUDIO no NINA B302Resete o NINA B302
Instale o ESPRUINO IDE (Native)
Instale o USB DONGLE CSR 4.0 (drivers)
Mas atenção!
Para o Windows 8.1 e posterior
O IDE é capaz de usar os drivers BLE do próprio Windows. A única configuração necessária é que você vá para as configurações de Bluetooth do seu sistema e clique em Conectar (Parear no Windows 10) no seu dispositivo NINA B302. Isso expõe ao sistema e garante que ele apareça no IDE da Web.
Para o Windows anterior ao 8.1
Como as versões do Windows anteriores à 8.1 não suportam Web Bluetooth no sistema operacional, o noble (que o Espruino IDE usa) precisa acessar diretamente o adaptador BLE - portanto, é necessário garantir que o driver WinUSB seja carregado para ele (como oposição a um driver específico do fabricante).
Baixe o Zadig e execute-o - é apenas um executável
Vá para Opções -> Listar todos os dispositivos
Escolha o seu adaptador BLE (o meu é CSR8510 A10)
Certifique-se de que o WinUSB esteja definido como o driver
Agora, quando você executar o IDE da Web nativo e clicar em "conectar" no canto superior esquerdo, deverá ver uma lista de dispositivos BLE conectáveis.
A Interface Periférica Serial é um BUS serial para periféricos que usa Clock, Data In e Data Out (e, muitas vezes, um pino Chip Select).
Para testes, foram utilizados os GPIOS do NINA B302
//D7 CLK//D32 MISO//D15 MOSI//D13 CS//D44 RST
e então configurada a SPI
SPI1.setup({ sck:D7, miso:D32, mosi:D15 });
Então foi instanciado um OBJETO
var sx = require("SX127x").connect({spi: SPI1, cs: D13, rst : D44 });
Neste exemplo, foi conectado no SPI um módulo SX1276
Transfira o SCRIPT JAVASCRIPT abaixo
No B302 transfira o seguinte código Javascript e execute
SPI1.setup({ sck:D7, miso:D32, mosi:D15 });
var sx = require("SX127x").connect({spi: SPI1, cs: D13, rst : D44 });
// Until DIO0 line irqs are implemented we need this:
setInterval(function() { sx.onIRQ(); }, 100);
var config = {
power : 14, // transmit power in dBm, allowed range: -4 to +17dBm or 20dBm. If you use Hope RF or TTGO module see the note below!
freq: 915000000, // frequency in MHz, by default 868MHz
bandwidth : 0, // 0: 125 kHz (default), 1: 250 kHz, 2: 500 kHz
datarate : 7, // spreading factor, 7(default)..12
coderate : 1, // [1: 4/5 (default), 2: 4/6, 3: 4/7, 4: 4/8]
preambleLen : 8, // preamble length, default: 8
fixLen : false, // fixed length? a boolean. If true, payloadLen needs specifying too
crcOn : false, // CRC enabled?
freqHopOn : false, // frequency hopping on? If true, hopPeriod should be set
iqInverted : false, // Inverts IQ signals
rxContinuous : true, // continuous reception? it's easiest to set this to true and manually cancel reception
symbTimeout : false, // RxSingle timeout value when rxContinuous = false
forcePaBoost : false // Required for HopeRF RFM9xW and TTGO LoRa32 modules
};
sx.setTxConfig(config);
sx.send("Hello", function() {
console.log("TX done");
});
Não havendo erro de comunicação via SPI, aparecerá a mensagem TX DONE
Abaixo alguns dispositivos que conversam via SPI
Questões: suporte@smartcore.com.br
FONTES:
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
Adquirimos então os seguintes componentes
-Botão de RESET;
-Botão de Modo BOOTLOADER (W102);
-Plugável no PROTOBOARD;
-Acesso às várias GPIOS;
Pequena
Espruino é um intérprete de JavaScript para microcontroladores que torna o desenvolvimento de software embarcado rápido e fácil. O intérpretador Espruino é um firmware de código aberto que roda em uma variedade de microcontroladores diferentes.
O Espruino em si não é apenas o firmware ou hardware do interpretador - há também o IDE da Web, ferramentas de linha de comando, documentação, tutoriais e módulos que formam uma solução completa para desenvolvimento de software embarcado.
Muitas LIBRARIES
A Interface Periférica Serial é um BUS serial para periféricos que usa Clock, Data In e Data Out (e, muitas vezes, um pino Chip Select).
Para testes, foram utilizados os GPIOS do NINA B302
//D7 CLK
//D32 MISO
//D15 MOSI
//D13 CS
//D44 RST
e então configurada a SPI
SPI1.setup({ sck:D7, miso:D32, mosi:D15 });
Então foi instanciado um OBJETO
var sx = require("SX127x").connect({spi: SPI1, cs: D13, rst : D44 });
Neste exemplo, foi conectado no SPI um módulo SX1276
No B302 transfira o seguinte código Javascript e execute
SPI1.setup({ sck:D7, miso:D32, mosi:D15 });
var sx = require("SX127x").connect({spi: SPI1, cs: D13, rst : D44 });
// Until DIO0 line irqs are implemented we need this:
setInterval(function() { sx.onIRQ(); }, 100);
var config = {
power : 14, // transmit power in dBm, allowed range: -4 to +17dBm or 20dBm. If you use Hope RF or TTGO module see the note below!
freq: 915000000, // frequency in MHz, by default 868MHz
bandwidth : 0, // 0: 125 kHz (default), 1: 250 kHz, 2: 500 kHz
datarate : 7, // spreading factor, 7(default)..12
coderate : 1, // [1: 4/5 (default), 2: 4/6, 3: 4/7, 4: 4/8]
preambleLen : 8, // preamble length, default: 8
fixLen : false, // fixed length? a boolean. If true, payloadLen needs specifying too
crcOn : false, // CRC enabled?
freqHopOn : false, // frequency hopping on? If true, hopPeriod should be set
iqInverted : false, // Inverts IQ signals
rxContinuous : true, // continuous reception? it's easiest to set this to true and manually cancel reception
symbTimeout : false, // RxSingle timeout value when rxContinuous = false
forcePaBoost : false // Required for HopeRF RFM9xW and TTGO LoRa32 modules
};
sx.setTxConfig(config);
sx.send("Hello", function() {
console.log("TX done");
});
Não havendo erro de comunicação via SPI, aparecerá a mensagem TX DONE
Abaixo alguns dispositivos que conversam via SPI
Questões: suporte@smartcore.com.br
FONTES:
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