Tabla de contenido:

BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3: 7 pasos (con imágenes)
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3: 7 pasos (con imágenes)

Video: BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3: 7 pasos (con imágenes)

Video: BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3: 7 pasos (con imágenes)
Video: Cuando el copiloto me ensucia el sillín 👀😅 #humor #eli #motos 2024, Diciembre
Anonim
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3
BLE fácil de muy baja potencia en Arduino Parte 3 - Reemplazo de Nano V2 - Rev 3

Actualización: 7 de abril de 2019 - Rev 3 de lp_BLE_TempHumidity, agrega gráficos de fecha / hora, usando pfodApp V3.0.362 + y aceleración automática al enviar datos

Actualización: 24 de marzo de 2019 - Rev 2 de lp_BLE_TempHumidity, agrega más opciones de trazado e i2c_ClearBus, agrega compatibilidad con GT832E_01

Introducción

Este tutorial, Reemplazo de Redbear Nano V2, es la Parte 3 de 3. Esta es la Revisión 2 de este proyecto. La PCB de la revisión 2 incluye el montaje para la celda de moneda y el sensor, simplifica la construcción y mejora el flujo de aire alrededor del sensor mientras lo protege de la luz solar directa. La revisión 1 está aquí.

Parte 1 - Construcción de dispositivos BLE de muy baja potencia de forma fácil con las cubiertas de Arduino que configuran Arduino para codificar dispositivos de baja potencia nRF52, el módulo de programación y la medición de la corriente de suministro. También cubre temporizadores y comparadores especializados de baja potencia y entradas antirrebote y el uso de pfodApp para conectarse y controlar el dispositivo nRF52.

Parte 2: un monitor de temperatura y humedad de muy baja potencia utiliza un módulo Redbear Nano V2 y un sensor de temperatura / humedad Si7021 para construir una batería de baja potencia / monitor solar. También cubre la modificación de la biblioteca Si7021 para que sea de bajo consumo, el ajuste del dispositivo BLE para reducir su consumo de corriente a <29uA y el diseño de una pantalla personalizada de temperatura / humedad para su móvil.

Parte 3: un reemplazo de Redbear Nano V2, este cubre el uso de otros módulos basados en nRF52 en lugar del Nano V2. Cubre la selección de los componentes de suministro, la construcción, la eliminación de la protección de programación del chip nRF52, el uso de pines NFC como GPIO normal y la definición de una nueva placa nRF52 en Arduino.

Este instructivo es una aplicación práctica de la Parte 1: Construcción de dispositivos BLE de muy baja potencia facilitada con Arduino al construir un monitor de temperatura y humedad BLE de muy baja potencia utilizando una placa SKYLAB SBK369 como reemplazo de Nano V2. Este tutorial cubre cómo crear una nueva definición de placa y cómo quitar la protección de programación nRF52 para permitir su reprogramación. Este tutorial utiliza el mismo boceto que la Parte 2 con los mismos parámetros BLE ajustados para un bajo consumo de energía y se puede alimentar con batería O batería + solar O solo con energía solar. El ajuste de los parámetros BLE para baja potencia se cubrió en la Parte 2

Rev 3 de lp_BLE_TempHumidity traza los datos contra la fecha y la hora usando solo Arduino millis (). Vea la fecha y hora de Arduino usando millis () y pfodApp usando la última versión de pfodApp (V3.0.362 +).

Rev 4 de pfod_lp_nrf52.zip también es compatible con el módulo GT832E_01 y este tutorial cubre el uso de los pines NFC nRF52 como GPIO estándar.

El monitor construido aquí funcionará durante años con Coin Cell o 2 pilas AAA, incluso más con asistencia solar. Además de mostrar la temperatura y la humedad actuales, el monitor almacena las últimas 36 horas de lecturas de 10 minutos y los últimos 10 días de lecturas por hora. Estos se pueden graficar en su dispositivo móvil Android y los valores se pueden guardar en un archivo de registro. No se requiere programación de Android, pfodApp se encarga de todo eso. La pantalla y los gráficos de Android están completamente controlados por su boceto de Arduino, por lo que puede personalizarlo según sea necesario.

La parte 2 utilizó una placa Redbear Nano V2 para el componente nRF52832 BLE. Este proyecto lo reemplaza con una placa SKYLAB SKB369 más barata. Como en la Parte 2, se utiliza una placa de conexión Sparkfun Si7021 para el sensor de temperatura / humedad. Se utiliza una biblioteca de baja potencia modificada con el Si7021.

Paso 1: ¿Por qué un reemplazo Nano V2?

i) El Nano V2 estuvo fuera de producción durante varios meses y no parece encajar en la línea Particle.io, por lo que no está claro durante cuánto tiempo estará disponible.

ii) El Nano V2 es más caro. Sin embargo, también tiene características adicionales. Vea abajo.

iii) El Nano V2 tiene componentes en ambos lados que le dan un perfil más alto y lo hacen más difícil de montar.

iv) El Nano V2 tiene pines de E / S limitados disponibles y el uso de D6 a D10 requiere cables voladores.

Aunque la placa Nano V2 es más cara que la placa SKYLAB SKB369, ~ US17 frente a ~ US5, la Nano V2 tiene más funciones. El Nano V2 incluye un regulador de 3.3V y capacitores de suministro, componentes adicionales para usar la opción de convertidor CC / CC nRF52, una antena de chip y un conector de antena uFL SMT.

Otra alternativa es el módulo GT832E_01 utilizado por www.homesmartmesh.com. Rev 4 de pfod_lp_nrf52.zip también admite la programación del módulo GT832E_01. El SKYLAB SKB369 y el GT832E_01 están disponibles en

Redbear (Particle.io) también tiene un módulo desnudo sin regulador 3V3, componentes DC / DC o componentes de cristal de 32Khz.

Esquema

Este proyecto tiene 4 partes relativamente independientes: -

Selección y construcción de componentes Eliminación del indicador de protección de codificación nRF52 y programación del boceto Creación de una nueva definición de placa Arduino nRF52 Reconfiguración de pines NFC nRF52 como GPIO

Paso 2: Selección y construcción de componentes

Selección de componentes

Además de los componentes nRF52832 y Si7021 seleccionados en la Parte 2, este proyecto agrega un regulador de 3.3V y capacitores de suministro.

El componente regulador de voltaje

El regulador utilizado aquí es MC87LC33-NRT. Puede manejar entradas de hasta 12V y tiene una corriente de reposo de <3.6uA, típicamente 1.1uA. El Nano V2 usó un regulador TLV704 que tiene una corriente silenciosa ligeramente más alta, típicamente 3.4uA y puede manejar voltajes de entrada más altos, hasta 24V. En su lugar, se eligió el MC87LC33-NRT porque su hoja de datos especifica cómo responde cuando el voltaje de entrada cae por debajo de 3.3V, mientras que la hoja de datos TLV704 no lo hace.

El TLV704 especifica un voltaje de entrada de 2.5V mínimo y no está claro en la hoja de datos qué sucederá debajo de eso. El nRF52832 se reducirá a 1,7 V y el Si7023 se reducirá a 1,9 V. El MC87LC33-NRT, por otro lado, especifica diferencias de voltaje de entrada / salida hasta 0 V para corrientes bajas (Fig 18 de la hoja de datos). Entonces, dada la elección de componentes, se eligió el MC87LC33-NRT porque tiene el rendimiento especificado.

Condensadores de suministro

El regulador MC87LC33-NRT necesita algunos capacitores de suministro para estabilidad y respuesta. Se recomienda un capacitor de salida> 0.1uF en la hoja de datos. El SKYLAB SBK369 también especifica condensadores de 10uF / 0.1uF en el suministro cerca de la placa. Los condensadores más grandes ayudan a suministrar los picos de corriente TX del nRF52. Aquí se utilizaron condensadores cerámicos 4 x 22uF 25V y 3 x 0.1uF 50V. Se colocó un condensador de 22uF y 0.1uF cerca del SKYLAB SBK369, se colocó un condensador de 0.1uF cerca de la salida del MC87LC33-NRT para asegurar la estabilidad y se colocaron 22uF y 0.1uF en la entrada del MC87LC33-NRT y un otros 2 condensadores de 22 uF se soldaron a través de los pines Vin / GND como un depósito de corriente adicional. A modo de comparación, la placa NanoV2 tiene 22uF / 0.1uF en la entrada al regulador TLV704 y 0.1uF en su salida.

Los condensadores del depósito de corriente adicional se instalaron en la entrada del regulador de 3,3 V para que se cargaran a un voltaje más alto cuando funcionaban con células solares. Cargar a un voltaje más alto equivale a almacenar más corriente para suministrar los picos de Tx.

Los condensadores cerámicos X5R se utilizan porque tienen una resistencia en serie baja y una corriente de fuga baja. La resistencia es típicamente de 100, 000MΩ o 1000MΩ - µF, lo que sea menor. Entonces, para 22uF tenemos 22000MΩ, es decir, una fuga de 0.15nA a 3.3V o 0.6nA para los cuatro capacitores de 22uF. Eso es insignificante. A modo de comparación, los condensadores electrolíticos Panasonic de baja ESR y baja fuga tienen corrientes de fuga de <0,01CV. Entonces, para un capacitor de 22uF 16V, la fuga es <10uA. Nota: Esta es la fuga a la tensión nominal, 16 V en este caso. La fuga es menor a voltajes más bajos, es decir, <2.2uA a 3.3V.

Lista de partes

Costo aproximado por unidad a diciembre de 2018, ~ US $ 61, excluyendo el envío y el programador de la Parte 1

  • SKYLAB SKB369 ~ US $ 5, por ejemplo, Aliexpress
  • Tablero de ruptura Sparkfun Si7021 ~ US $ 8
  • 2 x 53 mm x 30 mm 0,15 W 5 V células solares, p. Ej. Sobrevuelo ~ US $ 1.10
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ US $ 25 por 5 de descuento www.pcbcart.com
  • 1 x regulador MC78LC33 3.3V, p. Ej. Digikey MC78LC33NTRGOSCT-ND ~ US $ 1
  • 2 x 0.1uF 50V cerámica C1608X5R1H104K080A p. Ej. Digikey 445-7456-1-ND ~ Nosotros $ 0,3
  • 4 x 22uF 16V cerámica GRM21BR61C226ME44L p. Ej. Digikey 490-10747-1-ND ~ US $ 2
  • 1 x BAT54CW, p. Ej. Digikey 497-12749-1-ND ~ Nosotros $ 0,5
  • 1 x resistencia 470R 0.5W 1% p. Ej. Digikey 541-470TCT-ND ~ Nosotros $ 0,25
  • 1 x Zener 10V 1W SMAZ10-13-F p. Ej. Digikey SMAZ10-FDICT-ND ~ US $ 0.5
  • Tornillos de nailon de 3 mm x 12 mm, p. Ej. Jaycar HP0140 ~ AUD $ 3
  • Tuercas de nailon de 3 mm x 12 mm, p. Ej. Jaycar HP0146 ~ 3 AUD
  • Cinta de montaje permanente Scotch Cat 4010 p. Ej. desde Amazon ~ US $ 6.6
  • Soporte de batería CR2032, p. Ej. HU2032-LF ~ US $ 1.5
  • Batería CR2032 ~ US $ 1
  • Lámina de metacrilato, 3,5 mm y 8 mm
  • pfodApp ~ US $ 10
  • Pasta de soldadura, p. Ej. Jaycar NS-3046 ~ 13 AUD

Paso 3: construcción

Construcción
Construcción
Construcción
Construcción
Construcción
Construcción

El proyecto está construido sobre una pequeña placa de circuito impreso. El PCB fue fabricado por pcbcart.com a partir de estos archivos Gerber, SKYLAB_TempHumiditySensor_R2.zip El PCB imita el pin out del Nano V2 y es lo suficientemente general como para usarse en otros proyectos BLE.

Este es el esquema (versión pdf)

Primero suelde los componentes SMD, luego monte la placa SKYLAB SKB369

Casi todos los componentes son dispositivos de montaje en superficie (SMD). Los condensadores y los circuitos integrados pueden ser difíciles de soldar a mano. El método sugerido es sujetar la PCB en un tornillo de banco y aplicar una pequeña cantidad de pasta de soldadura a las almohadillas y colocar los componentes SMD, excepto la placa SKB369 en la PCB. Luego, con una pistola de calor, aplique calor en la parte inferior de la PCB hasta que la pasta de soldadura se derrita y luego haga una pasada rápida sobre la parte superior de la placa con cuidado de no soplar los componentes. Finalmente, retoque los componentes con un soldador de punta pequeña. Tenga cuidado con los condensadores y la resistencia, ya que es fácil fundir ambos extremos y hacer que el componente se suelte mientras suelda un extremo.

Esta revisión agrega condensadores cerámicos adicionales de 22uF 16V. Estos condensadores adicionales reducen los picos de corriente extraídos de la batería y también reducen las caídas de voltaje cuando se alimentan desde las células solares. Mientras el voltaje de las células solares permanezca por encima del voltaje de la batería, no se extrae corriente de la batería.

Una vez montados los componentes SMD, puede soldar en la placa SKYLAB SKB369. Hay dos orificios de punto de prueba en un lado de las pestañas SKB369. Utilice dos pines en una base de cartón para colocar la placa SKB369 y alinee con cuidado los pines. (Vea la foto de ejemplo anterior usando el PCB de revisión 1) Luego suelde un pin del lado opuesto para mantener la placa en su lugar antes de soldar los otros pines.

Tenga en cuenta el cable de enlace de tierra desde CLK a GND en la pieza terminada. Esto se instala DESPUÉS de la programación para evitar que el ruido en la entrada CLK active el chip nRF52 en un modo de depuración de alta corriente

Caja de montaje

La caja de montaje estaba hecha de dos piezas de metacrilato, 110 mm x 35 mm, 3 mm de espesor. La pieza de 3,5 mm debajo de las células solares se golpeó para tomar los tornillos de nailon de 3 mm. Esta construcción revisada simplifica la Rev 1 y mejora el flujo de aire alrededor del sensor. Los orificios adicionales en cada extremo son para el montaje, usando bridas para cables, por ejemplo.

Paso 4: Eliminación del indicador de protección de codificación NRF52

Eliminación del indicador de protección de codificación NRF52
Eliminación del indicador de protección de codificación NRF52
Eliminación del indicador de protección de codificación NRF52
Eliminación del indicador de protección de codificación NRF52
Eliminación del indicador de protección de codificación NRF52
Eliminación del indicador de protección de codificación NRF52

Conecte la placa de Temperatura / Humedad al Programador descrito en la Parte 1 como se muestra arriba.

Con las células solares y las baterías desconectadas, Vin y Gnd se conectan al Vdd y Gnd del programador (los cables amarillo y verde) y el SWCLK y SWDIO se conectan al Clk y SIO de la placa de cabecera del programador (los cables blanco y gris)

Eliminar la protección del programa nRF52

Desde la página Nordic Semi - Debug and Trace DAP - Debug Access Port. Un depurador externo puede acceder al dispositivo a través del DAP. El DAP implementa un puerto de depuración de cables en serie ARM® CoreSight ™ estándar (SW-DP). El SW-DP implementa el protocolo Serial Wire Debug (SWD) que es una interfaz serial de dos pines, SWDCLK y SWDIO

Importante: La línea SWDIO tiene una resistencia pull-up interna. La línea SWDCLK tiene una resistencia pull-down interna.

CTRL-AP - Puerto de acceso de control. El puerto de acceso de control (CTRL-AP) es un puerto de acceso personalizado que permite el control del dispositivo incluso si los otros puertos de acceso en el DAP están desactivados por la protección del puerto de acceso. La protección del puerto de acceso bloquea al depurador el acceso de lectura y escritura a todos los registros de CPU y direcciones asignadas en memoria. Desactive la protección del puerto de acceso. La protección del puerto de acceso solo se puede desactivar emitiendo un comando BORRAR TODO a través de CTRL-AP. Este comando borrará Flash, UICR y RAM.

Seleccione CMSIS-DAP como programador para el depurador de partículas y seleccione nRF5 Flash SoftDevice

Si el flash funciona, entonces está bien, pero a menudo los módulos estarán protegidos contra la reprogramación y obtendrá esta salida de error en la ventana de Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) Licencia bajo GNU GPL v2 Para informes de errores, lea https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Información: solo una opción de transporte; selección automática 'swd' velocidad del adaptador: 10000 kHz cortex_m reset_config sysresetreq Información: CMSIS-DAP: SWD Información admitida: CMSIS-DAP: Interfaz inicializada (SWD) Información: CMSIS-DAP: FW Versión = 1.10 Información: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Información: CMSIS-DAP: Interfaz lista Información: solicitud de reducción de velocidad: 10000 kHz a 5000 kHz máximo Información: velocidad de reloj 10000 kHz Información: SWD IDCODE 0x2ba01477 Error: No se pudo encontrar MEM -AP para controlar el error del núcleo: el objetivo aún no se ha examinado Error al flashear SoftDevice.

En ese caso, debe configurar el registro de comando BORRAR TODO en el nRF52 para borrar la memoria y hacer que el dispositivo sea programable nuevamente. La versión de openOCD suministrada con sandeepmistry nRF52 no incluye el comando apreg necesario para escribir en el registro de comandos ERASEALL, por lo que debe instalar una versión posterior.

Instale la versión OpenOCD OpenOCD-20181130 o superior. La versión precompilada de Windows está disponible en https://gnutoolchains.com/arm-eabi/openocd/ El último código está disponible en

Abra un símbolo del sistema y cambie dir al directorio de instalación de OpenOCD e ingrese el comando

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

La respuesta es

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Con licencia bajo GNU GPL v2 Para informes de errores, lea https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Información: selección automática del primer transporte de sesión disponible "swd". Para anular use 'transporte seleccionar'. velocidad del adaptador: 1000 kHz cortex_m reset_config sysresetreq Información: Escucha en el puerto 6666 para conexiones tcl Información: Escucha en el puerto 4444 para conexiones telnet Información: CMSIS-DAP: SWD Información compatible: CMSIS-DAP: Versión FW = 1.10 Información: CMSIS-DAP: Interfaz inicializada (SWD) Información: SWCLK / TCK = 1 SWDIO / TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Información: CMSIS-DAP: Interfaz lista Información: velocidad de reloj 1000 kHz Información: SWD DPIDR 0x2ba01477 Error: No se pudo encontrar MEM-AP para controlar el núcleo Información: escuchando en el puerto 3333 para conexiones gdb

Luego abra una ventana de terminal, p. Ej. TeraTerm (Windows) o CoolTerm (Mac) y conéctese al puerto 127.0.0.1 4444

La ventana de telnet mostrará un> y el símbolo del sistema mostrará Información: aceptando la conexión 'telnet' en tcp / 4444

En la ventana de telnet (es decir, TeraTerm), escriba nrf52.dap apreg 1 0x04this devuelve 0x00000000 que muestra que el chip está protegido. Luego escriba nrf52.dap apreg 1 0x04 0x01 y luego nrf52.dap apreg 1 0x04this devuelve 0x00000001 mostrando que el chip ahora está configurado en ERASEALL en el próximo reinicio.

Cierre la conexión telnet y también use Ctrl-C para salir del programa openOCD en el símbolo del sistema y luego apague y encienda el módulo nRF52 y ahora estará listo para programar.

Ahora vuelva a intentar hacer parpadear el dispositivo de software.

Ahora puede programar el módulo nRF52 desde Arduino.

Paso 5: Programación del SKYLAB SKB369

Programación del SKYLAB SKB369
Programación del SKYLAB SKB369
Programación del SKYLAB SKB369
Programación del SKYLAB SKB369
Programación del SKYLAB SKB369
Programación del SKYLAB SKB369

Cierre Arduino y vuelva a instalar la última versión del soporte de pfod_lp_nrf52 siguiendo las instrucciones de instalación de soporte de hardware de pfod_lp_nrf52. El último pfod_lp_nrf52 incluye la placa de repuesto SKYLAB SKB369 Nano2. Seleccione eso como el tablero y luego puede programarlo con la Revisión 3 de lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, como se describe en la Parte 2.

Si la programación falla. Cierre todas las ventanas de Arduino, retire los cables USB, reinicie Arduino y vuelva a conectar el cable USB del programador y vuelva a conectar el suministro USB del módulo nRF52 e intente nuevamente.

Luego, conéctese a través de pfodApp para mostrar la temperatura y la humedad actual e histórica. Una vez que haya mostrado el gráfico histórico, las lecturas, con marcas de tiempo de milisegundos, se guardan en el archivo de registro de su móvil y también están disponibles en la pantalla de datos sin procesar.

El archivo de registro también contiene los datos adicionales necesarios para volver a crear los gráficos de fecha y hora en una hoja de cálculo. Consulte Fecha y hora de Arduino usando millis () y pfodApp para obtener más detalles

Paso 6: Creación de una nueva definición de placa Arduino NRF52

Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52
Creación de una nueva definición de placa Arduino NRF52

Para admitir una nueva placa nRF52, debe a) agregar un nuevo directorio en el directorio de variantes con los archivos de la placa yb) editar el archivo boards.txt para agregar la nueva placa a Arduino.

Adición de una nueva variante de placa nRF52

Como se describe en la Parte 1, Instalación del soporte de hardware pfod_lp_nrf52, busque el subdirectorio de hardware del paquete sandeepmistry que ha actualizado con el soporte pfod_lp_nrf52. Abra el subdirectorio / hardware / nRF5 / 0.6.0 / variantes y cree un nuevo directorio para su nueva placa, por ejemplo, SKYLAB_SKB369_Nano2replacement En el nuevo / hardware / nRF5 / 0.6.0 / variantes / SKYLAB_SKB369_Nano2replacement directorio cree tres archivos variant.h, variant.cpp y pins_arduino.h Puede copiarlos desde uno de los otros directorios de variantes de placa. Para el reemplazo de SKYLAB_SKB369_Nano2, inicialmente copié los archivos de la variante RedBear_BLENano2.

archivo pins_arduino.h

No es necesario cambiar el archivo pins_arduino.h. Solo incluye el archivo variant.h

archivo variant.h

Edite el archivo variant.h para definir el número total de pines que tendrá su placa, PINS_COUNT

NOTA: En el paquete sandeepmistry, se ignoran NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS y NUM_ANALOG_OUTPUTS configuraciones

Si su placa tiene más o menos pines analógicos disponibles, actualice la sección / * Pines analógicos * / del archivo variantes.h.

NOTA: Para las placas NanoV2 y SKYLAB, los pines analógicos se asignan a los pines digitales A0 == D0, etc

Esto no es esencial. Puede asignar las entradas analógicas a cualquier pin Arduino conveniente. Consulte los archivos blue / variant.hy blue / variant.cpp para ver un ejemplo.

El chip nRF52832 tiene 8 pines de entrada analógica, pero la placa de reemplazo SKYLAB_SKB369_Nano2 solo hace que 6 de ellos estén disponibles para coincidir con el Nano2.

Todos los números de pin, excepto RESET_PIN, en el archivo variant.h son números de pin de Arduino. Eso es #define PIN_A0 (0) implica que D0 en el boceto de arduino es el mismo pin que A0. RESET_PIN es la excepción. Ese número es el número de pin del chip nRF52823 y 21 es la única opción válida. Sin embargo, el soporte pfod_lp_nrf52 no habilita el pin de reinicio en el nRF52832

archivo variant.cpp

Solo hay una entrada en el archivo variant.cpp, la matriz g_ADigitalPinMap que asigna los números de pin de Arduino al chip nRF52832 P0.. pines

NOTA: En las placas NanoV2 y SKYLAB, los pines analógicos Arduino A0, A1 … son los mismos que los pines digitales Arduino D0, D1 … por lo que las primeras entradas en g_ADigitalPinMap DEBEN asignarse a los números de pines AINx en el chip nRF52832

Para las Entradas Analógicas que su tablero pone a disposición, esas entradas en g_ADigitalPinMap deben mapear números de pines nRF52832 AIN0, AIN1, AIN2, etc. es decir, AIN0 es el pin de chip P0.02, AIN1 es el pin de chip P0.03, etc.ver el diseño de pines nRF52832 arriba.

Utilice (uint32_t) -1 para asignaciones no válidas. Por ejemplo, la placa de reemplazo SKYLAB_SKB369_Nano2 no tiene un LED integrado, D13, por lo que su posición se asigna a (uint32_t) -1

En pfod_lp_nrf52.zip, los subdirectorios de variantes Redbear NanoV2, SKYLAB SKB369 y GT832E_01 tienen imágenes que muestran las asignaciones configuradas por variant.cpp. (Vea las imágenes de arriba)

En el caso del SKYLAB SKB369, hay muchos pines para elegir. Solo se asignan suficientes para que coincida con el NanoV2. En el caso del GT832E_01, es necesario mapear todos los pines disponibles. Incluso entonces solo hay tres (3) entradas analógicas disponibles en lugar de las seis (6) en el NanoV2. Además de esto, los dos pines NFC, P0.09 y P0.10, deben reconfigurarse como GPIO. Consulte Reconfiguración de pines NFC nRF52 como GPIO a continuación.

Actualización del archivo boards.txt

Aquí está la entrada SKYLAB_SKB369_Nano2replacement en el archivo boards.txt.

## SKYLAB_SKB369 Reemplazo Nano2SKYLAB_SKB369_NANO2_REPLACEMENT.name = * Reemplazo SKYLAB SKB369 Nano2

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. 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 = duro -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

Configuración de board.txt

Comentarios: las líneas que comienzan con # son comentarios.

Prefijo: cada placa necesita un prefijo único para identificar sus valores. Aquí el prefijo esSKYLAB_SKB369_NANO2_REPLACEMENT.

Nombre: la línea SKYLAB_SKB369_NANO2_REPLACEMENT.name especifica el nombre de esta placa para mostrar en el menú de la placa de Arduino.

Herramienta de carga: el bloque SKYLAB_SKB369_NANO2_REPLACEMENT.upload especifica qué herramienta usar para cargar. Si está utilizando el depurador de partículas, utilice protocol = cmsis-dap como se muestra arriba.

Bootloader: esta línea es la misma para todas las placas de este boards.txt

Construir: solo es necesario actualizar dos líneas en este bloque. La línea SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant especifica el nombre del directorio de esta placa en el subdirectorio de variantes. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board es el valor agregado a ARDUINO_ y luego definido al compilar el código. p.ej. -DARDUINO_SKYLAB_SKB369_Nano2replacement Esto le permite habilitar / deshabilitar partes del código para placas específicas.

Low Freq Clock: esta línea, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, especifica la fuente del reloj de baja frecuencia, utilizada para lp_timer. Hay tres opciones, -DUSE_LFXO, -DUSE_LFRC y -DUSE_LFSYNT. La mejor opción es -DUSE_LFXO, si la placa tiene un cristal externo de 32Khz. De lo contrario, use -DUSE_LFRC, que usa un oscilador RC interno y consume un poco más de corriente, ~ 10uA más, y es mucho menos veces menos preciso. No use el -DUSE_LFSYNT ya que esto mantiene el chip funcionando todo el tiempo resultando en un consumo de corriente de mAs.

Softdevice: pfod_lp_nrf52 solo admite chips nRF52 y softdevice s132, por lo que no se necesitan cambios para este bloque, aparte del prefijo.

Reconfiguración de pines NFC nRF52 como GPIO

Sea predeterminado en los pines nRF52, P0.09 y P0.10 están configurados para su uso como NFC y se espera que estén conectados a una antena NFC. Si necesita usarlos como pines de E / S de propósito general (GPIO), entonces debe agregar una definición, -DCONFIG_NFCT_PINS_AS_GPIOS, a la configuración de compilación menu.softdevice.s132.build.extra_flags de esa placa en el archivo boards.txt.

Por ejemplo, pfod_lp_nrf52.zip, reconfigura los pines GT832E_01 para usarlos como E / S. La sección GT832E_01 para esta placa, en el archivo boards.txt, tiene la siguiente definición agregada

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

La secuencia de comandos del vinculador en pfod_lp_nrf52.zip también se ha modificado para conservar esta configuración y no es necesario cambiarla.

Paso 7: Conclusión

Este tutorial ha presentado un reemplazo para Redbear NanoV2 usando un módulo SKYLAB SKB369. Se utilizó un monitor de temperatura y humedad alimentado por batería / energía solar como ejemplo de proyecto BLE de muy baja potencia en Arduino para el módulo SKYLAB. Las corrientes de suministro de ~ 29uA se logran ajustando los parámetros de conexión. Esto resultó en una duración de la batería de celda de moneda CR2032 de ~ 10 meses. Más largo para pilas de botón y baterías de mayor capacidad. Agregar dos celdas solares baratas extendió fácilmente la vida útil de la batería en un 50% o más. Una luz brillante en la habitación o una lámpara de escritorio es suficiente para alimentar el monitor con las células solares.

Este tutorial también cubrió la eliminación de la protección de chip de un nRF52 preprogramado y cómo configurar una nueva definición de placa para que coincida con su propia PCB / circuito

No se requiere programación de Android. pfodApp maneja todo eso.

Recomendado: