Pico-LoRa-SX1262-868M
| ||
Overview
The Pico-LoRa-SX1262-868M is a LoRa node expansion module designed for Raspberry Pi Pico based on SX1262, which supports LoRaWAN protocol and EU868 band. It is allowed to connect the TTN, TTS servers through a LoRa gateway to use LoRa Cloud service fast and easily.
Features
- Onboard Raspberry Pi Pico interface for Raspberry Pi Pico series boards.
- Support LoRa and (G) FSK modulation, suitable for EU433, EU868, AS923, US915, etc.
- Onboard PH1.25 battery holder and charging IC, which can be connected to a lithium battery for charging and discharging.
- On-board 2 LED indicators for module operating status.
- Provide online supporting information manuals (C sample program and user manual, etc.)
Specifications
Electrical | Parameters |
RF Chip | SX1262 |
Working Band | EU433 EU868 (863~870MHz) AS923 (915~928MHz) US915(902~928MHz) |
Signal Modulation | LoRa/(G)FSK |
Transmit Power | MAX@22dBm(adjustable)@3.3V |
Working Voltage | 5V |
Module Consumption | Transmit current: 45mA@14dBm Receive current: 5.3mA@125KHz |
Communication Interface | SPI |
Working Temperature | -40 ~ 85℃ |
Size | 21.00 × 52.00mm |
Hardware Description
- Pico-LoRa-SX1262-868M x 1 (included)
- Raspberry Pi Pico x 1 (not included)
- Micro USB cable x 1 (not included)
LoRa | Pico | Features |
VCC | VSYS | Power Input |
GND | GND | Ground |
BAT_AD | GP26 | Onboard battery ADC pin |
LoRa_DIO1 | GP20 | SX1262 interrupt output pin or special function pin |
LoRa_RESET | GP15 | Reset pin (low active) |
LoRa_MISO | GP12 | SPI communication MISO pin, data output from the device |
LoRa_MOSI | GP11 | SPI communication MOSI pin, data input from the device |
LoRa_CLK | GP10 | SPI communication SCK pin, slave device clock input |
LoRa_CS | GP3 | SPI chip selection pin (low active) |
LoRa_BUSY | GP2 | Busy status output pin |
Pinout
Communication Timing
- The Raspberry Pi Pico uses the SPI bus to read and write the 36 registers of the SX1262 to complete LoRa wireless data transmission. The SPI bus frequency should be less than 18MHz. For specific SPI Timing Requires, see Chapter 8 Digital Interface and Control of the datasheet.
- The SPI bus writing a command to the LoRa chip will trigger the switching of the internal state machine mode. It should be noted that the low level of the BUSY pin indicates that the internal idle is allowed to receive commands, and the high level indicates that the internal occupied cannot accept the SPI command. The SPI bus needs to wait for the BUSY pin Pull low again to continue reading and writing operations, TswMode is up to 3.5ms.
Dimension
LoRa & LoRaWAN
What is LoRa ?
[Semtech]'s LoRa is a long-distance, low-power wireless platform for the Internet of Things (IoT), which generally refers to radio frequency chips using LoRa technology. The main features are as follows:
- The spread spectrum modulation technology used by LoRa (abbreviation of long range) is derived from chirp spread spectrum (CSS) technology, which is one of long-distance wireless transmission technology and LPWAN communication technology. At present, LoRa mainly operates in the ISM frequency band, mainly including 433 , 868, 915 MHz, etc.
- LoRa technology integrates technologies such as digital spread spectrum, digital signal processing and forward error correction coding, which greatly improves the performance of long-distance communication. LoRa's link budget is better than any other standardized communication technology. The main factors that determine distance in a given environment
- LoRa RF chips mainly include SX127X series, SX126X series, SX130X series, of which SX127X, SX126X series are used for LoRa nodes, and SX130X is used for LoRa gateways. For details, please refer to [Semtech]'s product list.
What is LoRaWAN ?
- [LoRaWAN] is a low-power wide area network open protocol based on LoRa radio modulation technology. Aims to wirelessly connect battery-powered "things" to the Internet in a regional, national or global network and targets key Internet of Things (IoT) requirements such as bi-directional communications, end-to-end security, mobility and localized services. Node wireless connection to the Internet has access authentication, which is equivalent to the establishment of encrypted communication channel between node and server. Access details refer to [document] and [source code]. LoRaWAN protocol level is shown in the figure below.
- The Class A/B/C node devices in the MAC layer basically cover all the application scenarios of the Internet of Things. The differences among the three nodes lie in the different time slots for receiving and receiving nodes
- EU868 and AS430 in the Modulation layer show that frequency band parameters are different in different countries. Please click the reference [link] for regional parameters
To achieve LoRaWAN network coverage in cities or other areas, it needs to be composed of four parts: node (LoRa node radio frequency chip), gateway (or base station, LoRa gateway radio frequency chip), server and cloud, as shown in the following figure
- The DEVICE (node device) needs to initiate a network access request packet to the GATEWAY (gateway) and then to the server. After the authentication is passed, it can send and receive application data with the server normally.
- GATEWAY (gateway) can communicate with the server through a wired network, 3/4/5G wireless network
- The main operators on the server side are [TTN], etc. For building cloud services by yourself, please refer to [lorawan-stack], [chirpstack]
- There are two methods for Raspberry Pico and Pico-LoRa-SX1262 to connect to the network via LoRaWAN: OTAA (Over-The-Air-Activation) and ABP (Activation By Personalization). Here we use OTAA, as shown below. Also you can refer to link 1, link 2 and source code.
- Step 1: Please send the "Join-Request" message to the network to be added, and note that the adding process is always initiated by the end device. The join-Request message can be transmitted at any rate and in one of the region-specific join channels. For example: in Europe, the end device can send the join-Request message at 868.10 MHz, 868.30MHz or 838.50MHz. Also, the message can send to the network server by one or more gateway. In addition, you need to pay attention to choosing the applicable frequency band according to the local radio management regulations. You can refer to link and LoRa Alliance for the frequency distribution table. The Join-Request message is combined by the following field, AppEUI, and DevEUI are generated by the server end.
- AppEUI: A 64-bit globally unique application identifier in the IEEE EUI64 address space that uniquely identifies an entity capable of processing Join-Request frames.
- DevEUI: A 64-bit globally unique device identifier that uniquely identifies an end device in the IEEE EUI64 address space.
- DevNonce: A unique random 2-byte value generated by the end device. The web server uses each end device's DevNonce to keep track of their join requests. If the end device sends a join request with the previously used DevNonce (this case is called a replay attack), the network server will reject the join request and will not allow the end device to register with the network.
- Step 2: The web server handles the Join-Request-Message. If the end device is allowed to join the network, the web server will generate two session keys (NwkSKey and AppSKey) and the Join-accept message. The Join-accept message itself is then encrypted using AppKey. The web server uses AES decryption operation in ECB mode to encrypt Join-accept messages.
- Step 3: The network server sends the encrypted join to accept the message back to the end device as a normal downlink.
- Step 4: The end device uses AES to decrypt Join-Accept. And uses AppKey and AppNonce to generate two session keys NwkSKey and AppSKey for subsequent communication with the Networking server. Network Server also saves kSKey, Join server distributes AppSKey to Application Server.
- The DevEUI and AppEUI parameters used as terminal devices to access the Internet need to be registered and generated by the server. The specific process is as follows:
- Register an account in TTS and log in. Create an Application.
- Add an End Device
- Configure the End Device as in the picture. Please save the DevEUI and the AppKey for further use.
Application
LoRa devices and networks such as LoRaWAN enable smart IoT applications to help solve the planet's formidable challenges in energy management, natural resource reduction, pollution control, infrastructure efficiency, disaster prevention, and more. Semtech's LoRa devices have achieved hundreds of successful use cases in smart cities, homes and buildings, communities, metrology, supply chain and logistics, agriculture, and more. LoRa networks have covered hundreds of millions of devices in more than 100 countries and are committed to a smarter planet.
Setup Environment
- This tutorial uses VScode (Cmake) to develop in the Windows 10 compilation environment, click to download the relevant IDE and install it and open it.
- Please refer to The C/C++ SDK, 9.2. Building on MS Windows in GET-START document for the compilation environment of VScode(Cmake).
Demo Download
Run the Demo
- Unzip the program or use git to download the program to the same level directory as pico-sdk. For the compilation environment installation, refer to the Pico environment setting chapter.
- Open VScode, choose to open the pico-lorawan folder in VScode, and fill in the DevEUI and AppKey values just saved in the example\otaa_temperature_led\config.h document.
- If the environment settings are correct, click the Build button of VScode to wait for the compilation to end, download the compiled file to the RaspberryPi Pico that enters the Boot mode, and open the serial port to view the log information.
About the Demo codes
- The demo codes are based on the pico-lorawan project, and updated to compatible the Pico-LoRa-SX1262-868M module.
- For more details about the LoRaWAN protocol, please refer to LoRa Allicance.
- If you want to create your own cloud server, please refer to lorawan-stack,chrpstack.
Resources
Development Software
- Zimo221.7z
- Image2Lcd.7z
- Font Library Tutorial
- Image Extraction Tutorial
- Thonny Python IDE (Windows V3.3.3)
Pico Getting Started
Firmware Download
Introduction
MicroPython Series
Install Thonny IDE
In order to facilitate the development of Pico/Pico2 boards using MicroPython on a computer, it is recommended to download the Thonny IDE
- Download Thonny IDE and follow the steps to install, the installation packages are all Windows versions, please refer to Thonny's official website for other versions
- After installation, the language and motherboard environment need to be configured for the first use. Since we are using Pico/Pico2, pay attention to selecting the Raspberry Pi option for the motherboard environment
- Configure MicroPython environment and choose Pico/Pico2 port
- Connect Pico/Pico2 to your computer first, and in the lower right corner of Thonny left-click on the configuration environment option --> select Configture interpreter
- In the pop-up window, select MicroPython (Raspberry Pi Pico), and choose the corresponding port
Flash Firmware
- Click OK to return to the Thonny main interface, download the corresponding firmware library and burn it to the device, and then click the Stop button to display the current environment in the Shell window
- Note: Flashing the Pico2 firmware provided by Micropython may cause the device to be unrecognized, please use the firmware below or in the package
- How to download the firmware library for Pico/Pico2 in windows: After holding down the BOOT button and connecting to the computer, release the BOOT button, a removable disk will appear on the computer, copy the firmware library into it
- How to download the firmware library for RP2040/RP2350 in windows: After connecting to the computer, press the BOOT key and the RESET key at the same time, release the RESET key first and then release the BOOT key, a removable disk will appear on the computer, copy the firmware library into it (you can also use the Pico/Pico2 method)
MicroPython Series
【MicroPython】 machine.Pin class function details
【MicroPython】machine.PWM class function details
【MicroPython】machine.ADC class function details
【MicroPython】machine.UART class function details
【MicroPython】machine.I2C class function details
【MicroPython】machine.SPI class function details
【MicroPython】rp2.StateMachine class function details
C/C++ Series
For C/C++, it is recommended to use Pico VS Code for development. This is a Microsoft Visual Studio Code extension designed to make it easier for you to create, develop, and debug projects for the Raspberry Pi Pico series development boards. No matter if you are a beginner or an experienced professional, this tool can assist you in developing Pico with confidence and ease. Here's how to install and use the extension.
- Official website tutorial: https://www.raspberrypi.com/news/pico-vscode-extension/
- This tutorial is suitable for Raspberry Pi Pico, Pico2 and the RP2040 and RP2350 series development boards developed by Waveshare
- The development environment defaults to Windows. For other environments, please refer to the official tutorial for installation
Install VSCode
-
First, click to download pico-vscode package, unzip and open the package, double-click to install VSCode
Note: If vscode is installed, check if the version is v1.87.0 or later
Install Extension
-
Click Extensions and select Install from VSIX
-
Select the package with the vsix suffix and click Install
-
Then vscode will automatically install raspberry-pi-pico and its dependency extensions, you can click Refresh to check the installation progress
-
The text in the right lower corner shows that the installation is complete. Close VSCode
Configure Extension
-
Open directory C:\Users\username and copy the entire .pico-sdk to that directory
-
The Copy is completed
-
Open vscode and configure the paths for the Raspberry Pi Pico extensions
The configuration is as follows:Cmake Path: ${HOME}/.pico-sdk/cmake/v3.28.6/bin/cmake.exe Git Path: ${HOME}/.pico-sdk/git/cmd/git.exe Ninja Path: ${HOME}/.pico-sdk/ninja/v1.12.1/ninja.exe Python3 Path: ${HOME}/.pico-sdk/python/3.12.1/python.exe
New Project
-
The configuration is complete, create a new project, enter the project name, select the path, and click Create to create the project
To test the official example, you can click on the Example next to the project name to select
-
The project is created successfully
-
Select the SDK version
-
Select Yes for advanced configuration
-
Choose the cross-compilation chain, 13.2.Rel1 is applicable for ARM cores, RISCV.13.3 is applicable for RISCV cores. You can select either based on your requirements
-
Select default for CMake version (the path configured earlier)
-
Select default for Ninjaversion
-
Select the development board
-
Click Complie to compile
-
The uf2 format file is successfully compiled
Import Project
- The Cmake file of the imported project cannot have Chinese (including comments), otherwise the import may fail
-
To import your own project, you need to add a line of code to the Cmake file to switch between pico and pico2 normally, otherwise even if pico2 is selected, the compiled firmware will still be suitable for pico
set(PICO_BOARD pico CACHE STRING "Board type")
Update Extension
-
The extension version in the offline package is 0.15.2, and you can also choose to update to the latest version after the installation is complete
Arduino IDE Series
Install Arduino IDE
-
First, go to Arduino official website to download the installation package of the Arduino IDE.
-
Here, you can select Just Download.
-
Once the download is complete, click Install.
Notice: During the installation process, it will prompt you to install the driver, just click Install
600px
Arduino IDE Interface
-
After the first installation, when you open the Arduino IDE, it will be in English. You can switch to other languages in File --> Preferences, or continue using the English interface.
-
In the Language field, select the language you want to switch to, and click OK.
Install Arduino-Pico Core in the Arduino IDE
-
Open the Arduino IDE, click on the file in the top left corner, and select Preferences
-
Add the following link to the attached board manager URL, and then click OK
https://github.com/earlephilhower/arduino-pico/releases/download/4.0.2/package_rp2040_index.json
Note: If you already have an ESP32 board URL, you can use a comma to separate the URLs as follows:https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/4.0.2/package_rp2040_index.json
-
Click Tools > Development Board > Board Manager > Search pico, as my computer has already been installed, it shows that it is installed
Upload Demo at the First Time
-
Press and hold the BOOTSET button on the Pico board, connect the pico to the USB port of the computer via the Micro USB cable, and release the button after the computer recognizes a removable hard disk (RPI-RP2).
- Download the program and open D1-LED.ino under the arduino\PWM\D1-LED path
-
Click Tools --> Port, remember the existing COM, do not click this COM (the COM displayed is different on different computers, remember the COM on your own computer)
-
Connect the driver board to the computer using a USB cable. Then, go to Tools > Port. For the first connection, select uf2 Board. After uploading, when you connect again, an additional COM port will appear
-
Click Tools > Development Board > Raspberry Pi Pico > Raspberry Pi Pico or Raspberry Pi Pico 2
- After setting it up, click the right arrow to upload the program
- If issues arise during this period, and if you need to reinstall or update the Arduino IDE version, it is necessary to uninstall the Arduino IDE completely. After uninstalling the software, you need to manually delete all contents within the C:\Users\[name]\AppData\Local\Arduino15 folder (you need to show hidden files to see this folder). Then, proceed with a fresh installation.
Open Source Demos
MircoPython video demo (github)
MicroPython firmware/Blink demos (C)
Raspberry Pi official C/C++ demo (github)
Raspberry Pi official micropython demo (github)
Arduino official C/C++ demo (github)
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)