Índice:

BLE de muito baixo consumo de energia no Arduino Parte 3 - Substituição Nano V2 - Rev 3: 7 etapas (com imagens)
BLE de muito baixo consumo de energia no Arduino Parte 3 - Substituição Nano V2 - Rev 3: 7 etapas (com imagens)

Vídeo: BLE de muito baixo consumo de energia no Arduino Parte 3 - Substituição Nano V2 - Rev 3: 7 etapas (com imagens)

Vídeo: BLE de muito baixo consumo de energia no Arduino Parte 3 - Substituição Nano V2 - Rev 3: 7 etapas (com imagens)
Vídeo: Policia brasileira x polícia Russa quem ganha #shorts 2024, Novembro
Anonim
Easy Very Low Power BLE no Arduino Parte 3 - Substituição Nano V2 - Rev 3
Easy Very Low Power BLE no Arduino Parte 3 - Substituição Nano V2 - Rev 3
Easy Very Low Power BLE no Arduino Parte 3 - Substituição Nano V2 - Rev 3
Easy Very Low Power BLE no Arduino Parte 3 - Substituição Nano V2 - Rev 3
Easy Very Low Power BLE no Arduino Parte 3 - Substituição Nano V2 - Rev 3
Easy Very Low Power BLE no Arduino Parte 3 - Substituição Nano V2 - Rev 3

Atualização: 7 de abril de 2019 - Rev 3 de lp_BLE_TempHumidity, adiciona gráficos de data / hora, usando pfodApp V3.0.362 + e aceleração automática ao enviar dados

Atualização: 24 de março de 2019 - Rev 2 de lp_BLE_TempHumidity, adiciona mais opções de plotagem e i2c_ClearBus, adiciona suporte GT832E_01

Introdução

Este tutorial, A substituição do Redbear Nano V2, é a parte 3 de 3. Esta é a revisão 2 deste projeto. A revisão 2 do PCB inclui a montagem da célula tipo moeda e do sensor, simplifica a construção e melhora o fluxo de ar ao redor do sensor enquanto o protege da luz solar direta. A revisão 1 está aqui.

Parte 1 - Construindo dispositivos BLE de baixíssima potência simplificados com o Arduino cobre a configuração do Arduino para codificar dispositivos de baixa potência nRF52, o módulo de programação e medição da corrente de alimentação. Ele também cobre cronômetros e comparadores especializados de baixa potência e entradas de depuração, além do uso de pfodApp para conectar e controlar o dispositivo nRF52.

Parte 2 - Um monitor de umidade de temperatura de muito baixa energia cobre usando um módulo Redbear Nano V2 e um sensor de temperatura / umidade Si7021 para construir uma bateria de baixa energia / monitor solar. Ele também abrange a modificação da biblioteca Si7021 para baixo consumo de energia, o ajuste do dispositivo BLE para reduzir seu consumo de corrente para <29uA e o design de um display personalizado de temperatura / umidade para o seu celular.

Parte 3 - Uma substituição Redbear Nano V2, este aqui, cobre o uso de outros módulos baseados em nRF52 em vez do Nano V2. Ele cobre a seleção de componentes de suprimentos, construção, remoção da proteção de programação do chip nRF52, uso de pinos NFC como GPIO normal e definição de uma nova placa nRF52 no Arduino.

Este instrutível é uma aplicação prática da Parte 1 - Construindo dispositivos BLE de Muito Baixo Consumo facilitado com o Arduino pela construção de um Monitor de Temperatura e Umidade BLE de Muito Baixo Consumo usando uma placa SKYLAB SBK369 como uma substituição Nano V2. Este tutorial cobre como criar uma nova definição de placa e como remover a proteção de programação nRF52 para permitir que seja reprogramada. Este tutorial usa o mesmo esboço da Parte 2 com os mesmos parâmetros BLE ajustados para baixo consumo de energia e pode ser alimentado por bateria OU bateria + solar OU apenas solar. O ajuste dos parâmetros BLE para baixa potência foi abordado na Parte 2

A Rev 3 de lp_BLE_TempHumidity plota os dados em relação à data e hora usando apenas o Arduino millis (). Consulte Data e hora do Arduino usando millis () e pfodApp usando a versão mais recente do pfodApp (V3.0.362 +).

A Rev 4 de pfod_lp_nrf52.zip também suporta o módulo GT832E_01 e este tutorial cobre o uso dos pinos NFC nRF52 como GPIOs padrão.

O monitor construído aqui funcionará por anos com célula tipo moeda ou 2 pilhas AAA, ainda mais com assistência solar. Além de exibir a temperatura e a umidade atuais, o monitor armazena as últimas 36 horas de leituras de 10 minutos e os últimos 10 dias de leituras de hora em hora. Eles podem ser mapeados em seu celular Android e os valores salvos em um arquivo de log. Nenhuma programação Android é necessária, pfodApp lida com tudo isso. A exibição e os gráficos do Android são totalmente controlados pelo esboço do Arduino, para que você possa personalizá-lo conforme necessário.

A Parte 2 usou uma placa Redbear Nano V2 para o componente nRF52832 BLE. Este projeto substitui isso por uma placa SKYLAB SKB369 mais barata. Como na Parte 2, uma placa de breakout Sparkfun Si7021 é usada para o Sensor de Temperatura / Umidade. Uma biblioteca modificada de baixa potência é usada com o Si7021.

Etapa 1: Por que uma substituição Nano V2?

i) O Nano V2 ficou fora de produção por vários meses e não parece se encaixar na linha do Particle.io, então não está claro por quanto tempo estará disponível.

ii) O Nano V2 é mais caro. No entanto, também possui recursos extras. Veja abaixo.

iii) O Nano V2 possui componentes em ambos os lados o que lhe confere um perfil mais alto e torna mais difícil de montar.

iv) O Nano V2 tem pinos de E / S limitados disponíveis e o uso de D6 a D10 requer cabos suspensos.

Embora a placa Nano V2 seja mais cara que a placa SKYLAB SKB369, ~ US17 versus ~ US5, o Nano V2 tem mais recursos. O Nano V2 inclui um regulador de 3,3 V e capacitores de alimentação, componentes extras para usar a opção de conversor nRF52 DC / DC, uma antena de chip e um conector de antena uFL SMT.

Outra alternativa é o módulo GT832E_01 usado por www.homesmartmesh.com. A Rev 4 de pfod_lp_nrf52.zip também suporta a programação do módulo GT832E_01. O SKYLAB SKB369 e o GT832E_01 estão disponíveis em

Redbear (Particle.io) também tem um módulo simples sem regulador 3V3, componentes DC / DC ou componentes de cristal de 32Khz.

Contorno

Este projeto tem 4 partes independentes relativas: -

Seleção e construção de componentes Remoção do sinalizador de proteção de codificação nRF52 e programação do esboço Criação de um novo Arduino Definição de placa nRF52 Reconfigurando pinos NFC nRF52 como GPIOs

Etapa 2: Seleção e construção de componentes

Seleção de Componente

Além dos componentes nRF52832 e Si7021 selecionados na Parte 2, este projeto adiciona um regulador de 3,3 V e capacitores de alimentação.

O componente Regulador de Tensão

O regulador usado aqui é o MC87LC33-NRT. Ele pode suportar entradas de até 12 V e tem uma corrente quiescente de <3,6 uA, normalmente 1,1 uA. O Nano V2 usado um regulador TLV704 tem uma corrente quiesent ligeiramente mais alta, normalmente 3.4uA e pode lidar com tensões de entrada mais altas, até 24V. O MC87LC33-NRT foi escolhido porque sua folha de dados especifica como ele responde quando a tensão de entrada cai abaixo de 3,3 V, enquanto a folha de dados TLV704 não.

O TLV704 especifica uma tensão de entrada de no mínimo 2,5 V e não está claro na ficha técnica o que acontecerá abaixo disso. O nRF52832 irá operar até 1,7 V e o Si7023 irá operar até 1,9 V. O MC87LC33-NRT, por outro lado, especifica as diferenças de tensão de entrada / saída até 0 V para correntes baixas (Fig. 18 da folha de dados). Portanto, dada a escolha dos componentes, o MC87LC33-NRT foi escolhido porque tem o desempenho especificado.

Capacitores de alimentação

O regulador MC87LC33-NRT precisa de alguns capacitores de alimentação para estabilidade e resposta. Um capacitor de saída> 0,1uF é recomendado na folha de dados. O SKYLAB SBK369 também especifica capacitores de 10uF / 0,1uF na fonte próxima à placa. Capacitores maiores auxiliam no fornecimento de picos de corrente do nRF52 TX. Aqui foram usados 4 x 22uF 25V e 3 x 0,1uF 50V capacitores de cerâmica. Um capacitor de 22uF e 0,1uF foi colocado perto do SKYLAB SBK369, um 0,1uF foi colocado perto da saída do MC87LC33-NRT para garantir a estabilidade e um 22uF e 0,1uF foram colocados na entrada do MC87LC33-NRT e um outros capacitores de 2 x 22 uF foram soldados nos pinos Vin / GND como um reservatório de corrente adicional. Para comparação, a placa NanoV2 tem 22uF / 0,1uF na entrada do regulador TLV704 e 0,1uF na saída.

Os capacitores do reservatório de corrente extra foram instalados na entrada do regulador de 3,3 V para que carregassem com uma tensão mais alta ao operar com células solares. Carregar para uma tensão mais alta equivale a armazenar mais corrente para fornecer os picos de Tx.

Os capacitores de cerâmica X5R são usados porque têm baixa resistência em série e baixa corrente de fuga. A resistência é normalmente 100, 000MΩ ou 1000MΩ - µF, o que for menor. Portanto, para 22uF temos 22000MΩ, ou seja, vazamento de 0,15nA em 3,3V ou 0,6nA para os quatro capacitores de 22uF. Isso é insignificante. Para fins de comparação, Low ESR e Low Leakage Os capacitores eletrolíticos Panasonic têm correntes de fuga de <0,01CV. Portanto, para um capacitor de 22uF 16V o vazamento é <10uA. Nota: Este é o vazamento na tensão nominal, 16 V neste caso. O vazamento é menor em tensões mais baixas, ou seja, <2,2uA em 3,3V.

Lista de Peças

Custo aproximado por unidade em dezembro de 2018, ~ US $ 61, excluindo frete e o programador da Parte 1

  • SKYLAB SKB369 ~ US $ 5 por exemplo, Aliexpress
  • Placa de apoio Sparkfun Si7021 ~ US $ 8
  • 2 x 53 mm x 30 mm células solares 0,15 W 5 V, por ex. Sobrevoar ~ US $ 1,10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ US $ 25 por 5 de desconto em www.pcbcart.com
  • 1 x regulador de 3,3 V MC78LC33, por ex. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0,1uF 50V de cerâmica C1608X5R1H104K080A, por exemplo Digikey 445-7456-1-ND ~ US $ 0,3
  • 4 x 22uF 16V de cerâmica GRM21BR61C226ME44L, por exemplo Digikey 490-10747-1-ND ~ US $ 2
  • 1 x BAT54CW, por exemplo Digikey 497-12749-1-ND ~ US $ 0,5
  • 1 x 470R resistor de 0,5 W 1%, por ex. Digikey 541-470TCT-ND ~ US $ 0,25
  • 1 x 10V 1W zener SMAZ10-13-F, por exemplo Digikey SMAZ10-FDICT-ND ~ US $ 0,5
  • Parafusos de náilon de 3 mm x 12 mm, por ex. Jaycar HP0140 ~ AUD $ 3
  • Porcas de náilon de 3 mm x 12 mm, por ex. Jaycar HP0146 ~ AUD $ 3
  • Fita de montagem permanente Scotch Cat 4010, por ex. da Amazon ~ US $ 6,6
  • Suporte de bateria CR2032, por ex. HU2032-LF ~ US $ 1,5
  • Bateria CR2032 ~ US $ 1
  • Folha de perspex, 3,5 mm e 8 mm
  • pfodApp ~ US $ 10
  • Pasta de solda, por exemplo Jaycar NS-3046 ~ AUD $ 13

Etapa 3: construção

Construção
Construção
Construção
Construção
Construção
Construção

O projeto é construído em um pequeno PCB. O PCB foi fabricado por pcbcart.com a partir desses arquivos Gerber, SKYLAB_TempHumiditySensor_R2.zip O PCB imita a pinagem do Nano V2 e é de uso geral o suficiente para ser usado em outros projetos BLE.

Este é o esquema (versão pdf)

Solde primeiro os componentes SMD e, em seguida, monte a placa SKYLAB SKB369

Quase todos os componentes são dispositivos de montagem em superfície (SMD). Os capacitores e ICs podem ser difíceis de soldar manualmente. O método sugerido é segurar o PCB em um torno e aplicar uma pequena quantidade de pasta de solda nas almofadas e colocar os componentes SMD, exceto a placa SKB369 no PCB. Em seguida, usando uma pistola de ar quente, aplique calor na parte inferior do PCB até que a pasta de solda derreta e, em seguida, faça uma passagem rápida por cima da placa, tomando cuidado para não explodir os componentes. Finalmente retocar os componentes com um ferro de soldar de ponta pequena. Tenha cuidado com os capacitores e o resistor, pois é fácil derreter ambas as extremidades e fazer com que o componente se solte durante a soldagem de uma extremidade.

Esta revisão adiciona capacitores de cerâmica 22uF 16V extras. Esses capacitores extras reduzem os picos de corrente extraídos da bateria e também reduzem as quedas de tensão ao serem alimentados por células solares. Enquanto a voltagem das células solares permanecer acima da voltagem da bateria, nenhuma corrente será consumida da bateria.

Depois que os componentes SMD foram montados, você pode soldar na placa SKYLAB SKB369. Existem dois orifícios de ponto de teste em um lado das guias SKB369. Use dois pinos em uma base de papelão para posicionar a placa SKB369 e alinhe cuidadosamente os pinos. (Veja a foto de exemplo acima usando a revisão 1 PCB) Em seguida, solde um pino do lado oposto para segurar a placa no lugar antes de soldar os outros pinos.

Observe o fio do link Gnd do CLK ao GND na peça acabada. Ele é instalado APÓS a programação para evitar que ruído na entrada CLK acione o chip nRF52 em um modo de depuração de alta corrente

Caixa de Montagem

A caixa de montagem foi feita de duas peças de perspex, 110 mm x 35 mm, 3 mm de espessura. A peça de 3,5 mm sob as células solares foi batida para retirar os parafusos de náilon de 3 mm. Esta construção revisada é simplificadora do Rev 1 e melhora o fluxo de ar ao redor do sensor. Os furos extras em cada extremidade são para montagem, usando braçadeiras de cabo, por exemplo.

Etapa 4: Remover o sinalizador de proteção de codificação NRF52

Removendo o Sinalizador de Proteção de Codificação NRF52
Removendo o Sinalizador de Proteção de Codificação NRF52
Removendo o Sinalizador de Proteção de Codificação NRF52
Removendo o Sinalizador de Proteção de Codificação NRF52
Removendo o Sinalizador de Proteção de Codificação NRF52
Removendo o Sinalizador de Proteção de Codificação NRF52

Conecte a placa de Temperatura / Umidade ao Programador descrito na Parte 1 conforme mostrado acima.

Com as células solares e baterias desconectadas, Vin e Gnd são conectados ao Vdd e Gnd do programador (os fios amarelo e verde) e o SWCLK e SWDIO são conectados ao Clk e SIO da placa do cabeçalho do programador (os fios branco e cinza)

Removendo a proteção do programa nRF52

Da página Nordic Semi - Debug and Trace DAP - Debug Access Port. Um depurador externo pode acessar o dispositivo por meio do DAP. O DAP implementa uma porta de depuração de fio serial ARM® CoreSight ™ padrão (SW-DP). O SW-DP implementa o protocolo Serial Wire Debug (SWD) que é uma interface serial de dois pinos, SWDCLK e SWDIO

Importante: A linha SWDIO possui um resistor pull-up interno. A linha SWDCLK possui um resistor pull-down interno.

CTRL-AP - Porta de Acesso de Controle. A porta de acesso de controle (CTRL-AP) é uma porta de acesso personalizada que permite o controle do dispositivo mesmo se as outras portas de acesso no DAP estiverem sendo desabilitadas pela proteção da porta de acesso. A proteção da porta de acesso bloqueia o depurador de acesso de leitura e gravação a todos os registros da CPU e endereços mapeados na memória. Desative a proteção da porta de acesso. A proteção da porta de acesso só pode ser desabilitada emitindo um comando ERASEALL via CTRL-AP. Este comando apagará o Flash, UICR e RAM.

Selecione CMSIS-DAP como o programador para o Depurador de Partículas e selecione nRF5 Flash SoftDevice

Se o flash funcionar, está tudo bem, mas frequentemente os módulos estarão protegidos contra reprogramação e você obterá esta saída de erro na janela do Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licenciado sob GNU GPL v2 Para relatórios de bugs, leia https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: apenas uma opção de transporte; seleção automática de velocidade do adaptador 'swd': 10000 kHz cortex_m reset_config sysresetreq Informações: CMSIS-DAP: SWD Informações com suporte: CMSIS-DAP: Interface inicializada (SWD) Informações: CMSIS-DAP: FW Versão = 1.10 Informações: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Informação: CMSIS-DAP: Interface pronta Informação: redução da velocidade de solicitação: 10000kHz a 5000kHz máximo Informação: velocidade do relógio 10000 kHz Informação: SWD IDCODE 0x2ba01477 Erro: Não foi possível encontrar MEM -AP para controlar o erro principal: Alvo ainda não examinado Erro ao piscar o SoftDevice.

Nesse caso, você precisa definir o registro do comando ERASEALL no nRF52 para limpar a memória e tornar o dispositivo programável novamente. A versão do openOCD fornecida com o sandeepmistry nRF52 não inclui o comando apreg necessário para gravar no registro do comando ERASEALL, portanto, é necessário instalar uma versão posterior.

Instale o OpenOCD versão OpenOCD-20181130 ou superior. A versão pré-compilada do Windows está disponível em https://gnutoolchains.com/arm-eabi/openocd/ O código mais recente está disponível em

Abra um prompt de comando e mude o dir para o diretório de instalação do OpenOCD e digite o comando

bin / openocd.exe -d2 -f interface / cmsis-dap.cfg -f target / nrf52.cfg

A resposta é

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]Licensed under GNU GPL v2 Para relatórios de bug, leia https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Informações: seleção automática do primeiro transporte de sessão disponível "swd". Para substituir, use 'selecionar transporte'. velocidade do adaptador: 1000 kHz cortex_m reset_config sysresetreq Info: Ouvindo na porta 6666 para conexões tcl Info: Ouvindo na porta 4444 para conexões telnet Info: CMSIS-DAP: SWD Suportado Informações: CMSIS-DAP: FW Versão = 1,10 Info: CMSIS-DAP: Interface inicializada (SWD) Informação: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Informação: CMSIS-DAP: Interface pronta Informação: velocidade do relógio 1000 kHz Informação: SWD DPIDR 0x2ba01477 Erro: Não foi possível encontrar o MEM-AP para controlar as informações principais: ouvindo na porta 3333 para conexões gdb

Em seguida, abra uma janela de terminal, por exemplo TeraTerm (Windows) ou CoolTerm (Mac) e conectar à porta 127.0.0.1 4444

A janela telnet mostrará um> e o prompt de comando mostrará Info: aceitando conexão 'telnet' em tcp / 4444

Na janela telnet (ou seja, TeraTerm) typenrf52.dap apreg 1 0x04 isso retorna 0x00000000 mostrando que o chip está protegido. Então typenrf52.dap apreg 1 0x04 0x01 e thennrf52.dap apreg 1 0x04 isso retorna 0x00000001 mostrando que o chip está agora configurado para ERASEALL na próxima reinicialização.

Feche a conexão telnet e também use Ctrl-C para sair do programa openOCD no prompt de comando e, em seguida, desligue e ligue o módulo nRF52 e ele estará pronto para ser programado.

Agora tente atualizar o dispositivo de software novamente.

Agora você pode programar o módulo nRF52 do Arduino.

Etapa 5: Programação do SKYLAB SKB369

Programando o SKYLAB SKB369
Programando o SKYLAB SKB369
Programando o SKYLAB SKB369
Programando o SKYLAB SKB369
Programando o SKYLAB SKB369
Programando o SKYLAB SKB369

Feche o Arduino e reinstale a versão mais recente do suporte pfod_lp_nrf52 seguindo as instruções de instalação do suporte de hardware pfod_lp_nrf52. O pfod_lp_nrf52 mais recente inclui a placa de substituição SKYLAB SKB369 Nano2. Selecione-o como o cartão e você pode programá-lo com a Revisão 3 de lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, conforme descrito na Parte 2.

Se a programação falhar. Feche todas as janelas do Arduino, remova os cabos USB, reinicie o Arduino e conecte o cabo USB do programador novamente e conecte a fonte USB do módulo nRF52 e tente novamente.

Em seguida, conecte-se via pfodApp para exibir a temperatura e umidade atuais e históricas. Depois de ter exibido o gráfico histórico, as leituras, com carimbos de data e hora em milissegundos, são salvas no arquivo de log do seu celular e também disponíveis na tela de dados brutos.

O arquivo de registro também contém os dados extras necessários para recriar os gráficos de data e hora em uma planilha. Veja Arduino Date and Time using millis () e pfodApp para os detalhes

Etapa 6: Criando uma nova definição de placa Arduino NRF52

Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52
Criando uma nova definição de placa Arduino NRF52

Para suportar uma nova placa nRF52, você precisa a) adicionar um novo diretório no diretório de variantes com os arquivos da placa eb) editar o arquivo boards.txt para adicionar a nova placa ao Arduino.

Adicionando uma nova variante da placa nRF52

Conforme descrito na Parte 1, Instalando o suporte de hardware pfod_lp_nrf52, localize o subdiretório de hardware do pacote sandeepmistry que você atualizou com o suporte pfod_lp_nrf52. Abra o subdiretório / hardware / nRF5 / 0.6.0 / variantes e crie um novo diretório para sua nova placa, por exemplo,SKYLAB_SKB369_Nano2replacement No novo diretório / hardware / nRF5 / 0.6.0 / variantes / SKYLAB_SKB369_Nano2replacement crie três arquivos variant.h, variant.cpp e pins_arduino.h Você pode copiá-los de um dos outros diretórios de variantes de placa. Para SKYLAB_SKB369_Nano2replacement, inicialmente copiei os arquivos da variante RedBear_BLENano2.

arquivo pins_arduino.h

O arquivo pins_arduino.h não precisa ser alterado. Inclui apenas o arquivo variant.h

arquivo variant.h

Edite o arquivo variant.h para definir o número total de pinos que sua placa terá, PINS_COUNT

NOTA: No pacote sandeepmistry, as configurações NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS e NUM_ANALOG_OUTPUTS são ignoradas

Se sua placa disponibiliza mais ou menos pinos analógicos, atualize a seção / * Pinos analógicos * / do arquivo variantes.h.

NOTA: Para as placas NanoV2 e SKYLAB, os pinos analógicos são mapeados para os pinos digitais A0 == D0 etc

Isso não é essencial. Você pode atribuir as entradas analógicas a qualquer pino Arduino conveniente. Veja então os arquivos blue / variant.he blue / variant.cpp para um exemplo.

O chip nRF52832 tem 8 pinos de entrada analógica, mas a placa SKYLAB_SKB369_Nano2replacement disponibiliza apenas 6 deles para corresponder ao Nano2.

Todos os números de pinos, exceto RESET_PIN, no arquivo variant.h são números de pinos do Arduino. Isto é, #define PIN_A0 (0) implica que D0 no esboço do Arduino é o mesmo pino que A0. O RESET_PIN é a exceção. Esse número é o número do pino do chip nRF52823 e 21 é a única escolha válida. No entanto, o suporte pfod_lp_nrf52 não habilita o pino de redefinição no nRF52832

arquivo variant.cpp

Há apenas uma entrada no arquivo variant.cpp, a matriz g_ADigitalPinMap que mapeia os números dos pinos do Arduino para o chip nRF52832 P0.. pinos

NOTA: Nas placas NanoV2 e SKYLAB, os pinos analógicos do Arduino A0, A1 … são iguais aos pinos digitais do Arduino D0, D1 … portanto, as primeiras entradas em g_ADigitalPinMap DEVEM ser mapeadas para os números dos pinos AINx no chip nRF52832

Para as entradas analógicas que sua placa disponibiliza, essas entradas em g_ADigitalPinMap devem mapear os números de pinos nRF52832 AIN0, AIN1, AIN2, etc. ou seja, AIN0 é o pino P0.02 do chip, AIN1 é o pino P0.03 do chip, etc., consulte o layout do pino nRF52832 acima.

Use (uint32_t) -1 para mapeamentos inválidos. Por exemplo, a placa SKYLAB_SKB369_Nano2replacement não tem um LED integrado, D13, então sua posição é mapeada para (uint32_t) -1

Em pfod_lp_nrf52.zip, os subdiretórios de variantes Redbear NanoV2, SKYLAB SKB369 e GT832E_01 têm imagens que mostram os mapeamentos configurados por variant.cpp. (Veja as imagens acima)

No caso do SKYLAB SKB369, há uma abundância de pinos para escolher. Apenas o suficiente é mapeado para corresponder ao NanoV2. No caso do GT832E_01, todos os pinos disponíveis precisam ser mapeados. Mesmo assim, existem apenas três (3) entradas analógicas disponíveis em vez das seis (6) no NanoV2. Além disso, os dois pinos NFC, P0.09 e P0.10, precisam ser reconfigurados como GPIOs. Consulte Reconfigurando os pinos NFC nRF52 como GPIO abaixo.

Atualizando o arquivo boards.txt

Aqui está a entrada SKYLAB_SKB369_Nano2replacement no arquivo boards.txt.

## SKYLAB_SKB369 Nano2 ReplacementSKYLAB_SKB369_NANO2_REPLACEMENT.name = * SKYLAB SKB369 Nano2 Replacement

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol = cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target = nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maxd_swy_setup.upload.target = nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maxd_sweet_arquivo_arquivo_arquivo_autor_autor_a_autor_a_a_a_a_a_a_a_vs_arg_a_a_a_d. SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb = false

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu = cortex-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 = SKYLAB_SKB369_NANO2_REPLACEMENT.build.board SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi = difícil -mfpu = fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript = nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags = -DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132 = S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

Configurações do board.txt

Comentários - as linhas que começam com # são comentários.

Prefixo - cada placa precisa de um prefixo exclusivo para identificar seus valores. Aqui, o prefixo éSKYLAB_SKB369_NANO2_REPLACEMENT.

Nome - A linha SKYLAB_SKB369_NANO2_REPLACEMENT.name especifica o nome desta placa para mostrar no menu da placa do Arduino.

Ferramenta de upload - O bloco SKYLAB_SKB369_NANO2_REPLACEMENT.upload especifica qual ferramenta usar para fazer upload. Se você estiver usando o Depurador de partículas, use protocol = cmsis-dap conforme mostrado acima.

Bootloader - Esta linha é a mesma para todas as placas neste boards.txt

Build - Apenas duas linhas precisam ser atualizadas neste bloco. A linha SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant especifica o nome do diretório desta placa no subdiretório variant. O SKYLAB_SKB369_NANO2_REPLACEMENT.build.board é o valor anexado a ARDUINO_ e então definido durante a compilação do código. por exemplo. -DARDUINO_SKYLAB_SKB369_Nano2replacement Isso permite ativar / desativar partes do código para placas específicas.

Low Freq Clock - Esta linha, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, especifica a fonte do clock de baixa frequência, usado para o lp_timer. Existem três opções, -DUSE_LFXO, -DUSE_LFRC e -DUSE_LFSYNT. A melhor escolha é -DUSE_LFXO, se a placa tiver um cristal externo de 32Khz. Caso contrário, use -DUSE_LFRC, que usa um oscilador RC interno e consome um pouco mais de corrente, ~ 10uA a mais e é muito menos vezes menos preciso. Não use o -DUSE_LFSYNT, pois isso mantém o chip funcionando o tempo todo, resultando em consumo de corrente de mAs.

Softdevice - pfod_lp_nrf52 suporta apenas chips nRF52 e softdevice s132, portanto, nenhuma alteração precisa para este bloco, exceto o prefixo.

Reconfigurando pinos NFC nRF52 como GPIO's

Ser padrão nos pinos nRF52, P0.09 e P0.10 são configurados para uso como NFC e esperam ser conectados a uma antena NFC. Se você precisar usá-los como pinos de E / S de uso geral (GPIO), será necessário adicionar um define, -DCONFIG_NFCT_PINS_AS_GPIOS, às configurações de compilação do… menu.softdevice.s132.build.extra_flags no arquivo boards.txt.

Por exemplo, pfod_lp_nrf52.zip, reconfigura os pinos GT832E_01 para uso como E / S. A seção GT832E_01 para esta placa, no arquivo boards.txt, tem a seguinte definição adicionada

GT832E_01.menu.softdevice.s132.build.extra_flags = -DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

O script do vinculador em pfod_lp_nrf52.zip também foi modificado para preservar essa configuração e não precisa ser alterado.

Etapa 7: Conclusão

Este tutorial apresentou uma substituição para o Redbear NanoV2 usando um módulo SKYLAB SKB369. Um Monitor de Umidade de Temperatura alimentado por bateria / solar foi usado como um exemplo de projeto BLE de energia muito baixa no Arduino para o módulo SKYLAB. Correntes de alimentação de ~ 29uA foram obtidas ajustando-se os parâmetros de conexão. Isso resultou em uma vida útil da bateria de célula tipo moeda CR2032 de aproximadamente 10 meses. Mais longo para pilhas e baterias tipo moeda de maior capacidade. Adicionar duas células solares baratas estendeu facilmente a vida útil da bateria em 50% ou mais. Uma luz de ambiente forte ou uma lâmpada de mesa é suficiente para alimentar o monitor a partir das células solares.

Este tutorial também cobriu a remoção da proteção do chip de um nRF52 pré-programado e como configurar uma nova definição de placa para corresponder ao seu próprio PCB / circuito

Nenhuma programação Android é necessária. pfodApp trata de tudo isso.

Recomendado: