======n-PN LoRaWAN====== ~~CLOSETOC~~ //**n-Pn**// {{:nblocks:n-pn-09.jpg}} n-PN V4 | License | GPL 2.0 | | Status | Tested | | Buy at: | | | Categories | | | Hardware repo | [[https://bitbucket.org/nimbus_it/n-pro-00|Bitbucket]] | | Firmware repo | [[https://bitbucket.org/nimbus_it/n-pro-00|Bitbucket]] | n-PN LoRaWAN has been designed to offer a practical and cost effective solution for users seeking to add LoRa connectivity to their projects with minimal previous experience in networking. The form factor is based on n-Blocks and is customized for [[http://www.nimbus.cit.ie/project/pervasive-nation/|Pervasive Nation]]. {{:nblocks:n-pn-01.jpg?300|}} ===== Overview===== [[nblocks:n-pn|n-PN LoRaWAN]] board is a low-cost and easy-to-use development kit to quickly evaluate and start some development with LoRaWAN protocol using an ARM® 32-bit Cortex™-M and totally compatible with n-Best ecosystem. It is based on Murata CMWX1ZZABZ LoRa module and also features STM32L082 microcontroller. The exclusive combination of an Arm® Cortex®-M0+ core and STM32 ultra-low-power features, makes the STM32L082 the best fit for applications operating on batteries or supplied by energy harvesting. It is the ideal solution for users looking to design IoT projects with minimal previous experience in networking having a low power device. Communication with the module can be achieved via UART, SPI, or I2C peripheral interfaces. GPIOs provide plenty of flexibility for connecting sensors, switches and status LEDs, and the module is powered from a 1.6 to 3.6 VDC supply. \\ ===== Murata CMWX1ZZABZ Features ===== * Integrated TCXO with robust low-drift thermal characteristics provides an accurate clock source for the RF transceiver * Pre-certified radio regulatory approvals for operating in the 868 and 915MHz industrial, scientific and medical (ISM) spectrum in most geographical regions of the world * MCU includes 192kB Flash and 20kB RAM * Normal output power is +14dBm but a PA boost function can be selected to increase RF output to + 20dBm for long-range applications * Operating temperature: -40 + 85°C * Typical applications: smart metering, wearables, tracking, M2M and internet of things (IoT) edge nodes \\ ===== STM32L082 MCU Features ==== * Up to 192 KB Flash, 20KB RAM * Low voltage 1.65 to 3.6 V * Dynamic Voltage Scaling * 5 clock sources * Advanced RTC w/ calibration * Multiple USART, SPI, I2C * Multiple 16-bit timers * 2 watchdogs * Program Voltage Detector * Reset circuitry POR/PDR * 16-bit ADC (hardware oversampling) * Ultra-safe, low-power BOR (brownout reset) with 5 selectable thresholds * LCD interface, comparator, DAC * Hardware Encryption Engine AES 128-bit \\ ===== SX1276 Features ==== * LoRa Modem * 168dB maximum link budget * +20dBm - 100 mW constant RF output vs. V supply * +14dBm high efficiency PA * Programmable bit rate up to 300kbps * High sensitivity: down to -148dBm * Excellent blocking immunity * Low RX current of 9.9mA, 200nA register retention * Fully integrated synthesizer with a resolution of 61Hz * FSK, GFSK, MSK, GMSK, LoRa and OOK modulation * Built-in bit synchronizer for clock recovery * Preamble detection * 127dB Dynamic Range RSSI * Automatic RF Sense and CAD with ultra-fast AFC * Packet engine up to 256 bytes with CRC * Built-in temperature sensor and low battery indicator \\ ===== Main Features of the Board ==== * CMWX1ZZABZ Murata LoRaWAN module with Semtech (SX1276) + STM (STM32L0) * 2 user LEDs * 1 user and 1 reset push-buttons * Board expansion connectors: * 15 GPIOs with alternative functionality * 4 ADC channels * NFC antenna capability. * SPI capability * I2C capability * UART capability * Power supply and JTAG connections * Different LoRaWAN antenna choices * Si7006 Silabs Relative Humidity and Temperature Sensor with I2C Interface * LSM303AHTR STM 3D digital linear acceleration sensor and a 3D digital magnetic sensor with I2C Interface * M24LR64E-R STM dynamic NFC/RFID tag IC with a dual-interface, electrically erasable programmable memory (EEPROM) with I2C Interface * AN48836B Panasonic Hall sensor * Support of a wide choice of Integrated Development Environments (IDEs) including IAR™, Keil®, GCC-based IDEs, Arm® Mbed™ * Full compatibility with n-Best Studio * Dimensions: 25x38mm \\ \\ =====Board Pinout===== \\ {{nblocks:n-pn-02.jpg?300|}} \\ \\ \\ ===== Getting started===== To configure all the necessary tools to start working with the n-PN board, two main elements need to be downloaded by the user. * An **Integrated development environment (IDE)**. Although the n-PN board can support a wide variety of IDEs to work with, KEIL environment can be chosen for two main reasons: - STM provides all the necessary LoRaWAN protocol drivers for the microcontroller embedded in the n-PN board for this IDE. - KEIL IDE (MDK Version 5) is free for STM32F0 and STM32L0 microcontrollers and due to the n-PN board has an STM32L0 microcontroller, we are allowed to activate the license for this software environment (follow the instructions[[http://www2.keil.com/stmicroelectronics-stm32/mdk|here]]). * The **Nimbus SDK** which contains the minimum files to start working with the n-PN board as well as some basic examples that the user can use as templates (Nimbus SDK is based on STM32CubeExpansion_LRWAN_V1.1.4 and can be found in the next repository: https://bitbucket.org/nimbus_it/pn_lora_node). * After installing KEIL (MDK) IDE(and the license activated) and downloading the Nimbus SDK, there are several basics examples (using LoRaWAN technology) which the user can start working with. The examples can be found following the path: **LoRaWAN_Examples / STM32CubeExpansion_LRWAN_V1.1.4 / Projects / Multi / Applications / LoRa /**. * Open Any Example folder (Button folder for this example) and open MDK-ARM folder.\\ {{:nblocks:n-pn_gs1.png?700|}} * Open N-PN folder.\\ {{:nblocks:n-pn_gs2.png?700|}} * Open Button project (Double click on **Button.uvprojx**).\\ {{:nblocks:n-pn_gs3.png?700|}} * The project is ready to be tested.\\ {{:nblocks:n-pn_gs4.png?700|}} **NOTES:** - KEIL IDE (MDK) may not have the libraries installed for the microcontroller embedded in the n-PN board, so a pop-up window will appear asking us to install those libraries. Just follow the instructions to install them up. You may reset your computer after the installation. - If we double click on Button.uvprojx (a project file) and Windows does not recognise the extension file, just choose KEIL (MDK). ===Integrated Development Environment (IDE)=== As stated, KEIL IDE (MDK) was chosen, this section explains the minimum configuration to improve our work flow. * Click on Options for Target… * In Debug tab, make sure to use the right programmer (mostly ST-Link Debugger).\\ {{:nblocks:n-pn_ide1.png?700|}} * In Debug tab, Click on Settings * Make sure under Reset is chosen in Connect (Debug tab).\\ {{:nblocks:n-pn_ide2.png?700|}} * In Flash Download tab, make sure that Program, Verify and Reset and Run are selected.\\ {{:nblocks:n-pn_ide3.png?700|}} \\ ===Firmware Structure=== * In Keil a project is structured as shown below:\\ {{:nblocks:n-pn_ide4.png?700|}} * The main folders are explained below: * **n-PN_Board:** The b-l072z-lrwan1.c file defines all the pinout of the n-PN board. * **Projects/Application:** The main.c file for the application is placed into this folder. * **N-PN/Sensors:** The drivers for the external sensors embedded on n-PN board are placed in this folder. * Keil IDE does not show the header files until the project is compiled, once the project is compiled, the header files can be found under the function files (clicking on the cross sign next to the function file). * Another important file is the header file called **Commissioning.h** which can be found under the main.c file. This header file contains the necessary parameters to configure your own LoRaWAN network: LORAWAN_DEVICE_EUI, LORAWAN_APPLICATION_EUI and LORAWAN_APPLICATION_KEY. \\ **NOTE: A wire or U.FL-R antenna must be connected.** \\ =====Examples===== * Open Temperature_Humidity example folder and open MDK-ARM folder inside it * Open N-PN folder * Open Temperature_Humidity project (Double click on **Temperature_Humidity.uvprojx**) This simple example shows how to transmit a package using LoRaWAN protocol. A new relative humidity and temperature value will be read every one minute and its value will be stored in a package which it will be sent to the Pervasive Nation LoRaWAN server. The counter will be incremented as well.\\ {{:nblocks:n-pn_ex.png?500|}} \\ \\ =====Gallery===== =====Related articles in this Wiki===== *[[ ]] {{tag> RF CPU nblock BLE nsensorRF}}