Pico SIM7080G Cat-M/NB-IoT

From Waveshare Wiki
Jump to: navigation, search
Pico-SIM7080G-Cat-M-NB-IoT
Pico-SIM7080G-Cat-M-NB-IoT

SIM7080G NB-IoT / Cat-M(EMTC) / GNSS Module For Raspberry Pi Pico, Global Band Support
{{{name2}}}

{{{name3}}}

{{{name4}}}

{{{name5}}}

{{{name6}}}

Overview

Introduction

The Pico-SIM7080G-Cat-M/NB-IoT is an NB-IoT (NarrowBand-Internet of Things), Cat-M (aka eMTC, enhanced Machine Type Communication), and GNSS (Global Navigation Satellite System) module designed for Raspberry Pi Pico. It supports multiple NB-IoT frequency band, can be controlled via serial AT commands, and supports communication protocols like HTTP/MQTT/LWM2M/COAP, etc. Due to the advantages of low delay, low power, low cost, and wide coverage, it is the ideal choice for IoT applications such as intelligent instruments, asset tracking, remote monitoring, and so on.

Features

  • Standard Raspberry Pi Pico header, supports Raspberry Pi Pico series boards.
  • UART communication, serial AT commands control.
  • Communication protocol support: TCP/UDP/HTTP/HTTPS/TLS/DTLS/PING/LWM2M/COAP/MQTT...
  • GNSS positioning support: GPS, GLONASS, BeiDou, and Galileo.
  • Integrates 3.7V Li-po battery connector and recharge circuit, allowing being powered from external rechargeable Li-po battery, or recharge it in turn.
  • 2 x LED indicators, for monitoring the module operating status.
  • Onboard Nano SIM card slot, supports ONLY 1.8V SIM card (3V SIM card is not available).
  • Comes with online development resources and manuals (MicroPython examples).

Specifications

Product

SIM7080G

SIM7020C / SIM7020E

FREQUENCY BAND

NB-IoT

B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/
B20/B25/B26/B28/B66/B71/B85

SIM7020C:
LTE-FDD:B1/B3/B5/B8
SIM7020E: LTE-FDD:B1/B3/B5/B8/B20/B28

Cat-M

B1/B2/B3/B4/B5/B8/B12/B13/B14/B18/
B19/B20/B25/B26/B27/B28/B66/B85

-

GNSS

GPS, GLONASS, BeiDou, Galileo

-

Applicable region

global applicable

SIM7020C:China
SIM7020E:Asia, Europe, Africa, Australia

DATA RATE

NB-IoT (Kbps)

136 (DL)/150 (UL)

26.15 (DL)/62.5 (UL)

Cat-M (Kbps)

589 (DL)/1119 (UL)

-

OTHERS

Communication protocol

TCP/UDP/HTTP/HTTPS/TLS/DTLS/PING/LWM2M/COAP/MQTT

Power supply

External Li-po battery OR Raspberry Pi Pico USB port

Battery interface

3.7V ~ 4.2V

Logic level

3.3V

Module standalone current

Idle mode:10mA

Idle mode:5.6mA

Sleep mode:1.2mA

Sleep mode:0.4mA

PSM mode:3.2uA

PSM mode:3.4uA

Indicator

NET:NET: network indicator
Charge: recharge indicator

Switch

Li-po battery power supply switch

SIM card

NB-IoT / Cat-M card (1.8V ONLY)

NB card (1.8V / 3V)

Antenna connector

LTE, GNSS

LTE

Dimensions

73.5 × 24.00mm

Pinout Definition

Pico-SIM7080G-Cat-M-NB-IoT-details-inter.jpg

Outline Dimensions

Pico-SIM7080G-Cat-M-NB-IoT-details-size.jpg

Example

Python Demo

Use in Windows

  • 1. Press and hold the BOOTSET button on the Pico board, connect the Pico to the USB port of the computer through the Micro USB cable, and release the button after the computer recognizes a removable hard disk (RPI-RP2).
  • 2. Copy the pico_micropython_xxxxxxxx.uf2 file in the python directory to the recognized removable disk (RPI-RP2).
  • 3. Open Thonny IDE (note: use the latest version of Thonny, otherwise there is no Pico support package, the latest version under Windows is v3.3.3).
  • 4. Click Tools -> Settings -> Interpreter, select Pico and the corresponding port as shown in the figure:

Pico-lcd-0.96-img-config.png

  • 5. File -> Open -> main.py, click to run, as shown below:

Main.png
This demo provides a simple program.

Use in Raspberry Pi Environment

  • 1. The process of flashing the firmware is the same as that on Windows, you can choose to copy the pico_micropython_xxxxxxxx.uf2 file into pico on PC or Raspberry Pi.
  • 2. Open Thonny IDE on the Raspberry Pi Mountain (click the Raspberry logo -> Programming -> Thonny Python IDE ), you can check the version information in Help -> About Thonny.

To make sure your version has a Pico support package, you can also click Tools -> Options... -> Interpreter to select MicroPython (Raspberry Pi Pico and ttyACM0 port.
as the picture shows:
Inter.png
If your current Thonny version does not have the pico support package, enter the following command to update the Thonny IDE.

sudo apt upgrade thonny
  • 3. Click File -> Open... -> python/main.py to run the script.

AT Test

Example description

This demo is mainly to facilitate the user to directly test the AT command transmission and reception of the verification module through the Thony software. The main program will first power on the module directly, and then check the network condition, then it will loop to detect the AT command input by the user, send it to the module through the serial port, and then return the AT command of the module to the Pico serial port for printing.
For the detailed AT command set, please see: SIM7080_Series_AT_Command_Manual_V1.02.pdf

Expected result

SIM7080G-AT-TEST.png

HTTP

With this example, The Raspberry Pico can connect to the network by NB-IoT. You can use HTTP GET to get the weather information from weather websites and post the temperature of Pico to the server by HTTP POST .
You can access the webpage and check the real-time data posted.
Pico-SIM7020-HTTP-demo-diagram.png

Setup Hardware

Solder female/male pin headers to Pico-SIM7080G and connect the NB-IoT board to Pico. Connect the battery, Antenna and Insert the NB-IoT card.
Pico-SIM7020X-NB-IoT-connection.png

Setup Server

Use http://pico.wiki/esp-chart.php as an example, we set up the webpage of the server for testing.
Pico-SIM7020-HTTP-Demo-2.png
1. Build environments like php and mysql, etc. Create database file, for example:

  • Database:example_esp_data
  • Password:your_password
  • User Name:your_username
  • Create database table:
CREATE TABLE Sensor (
   id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
   value1 VARCHAR(10),
   value2 VARCHAR(10),
   value3 VARCHAR(10),
   reading_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

2. Two example files are provided for the server. they are post-data.php and esp-chart.php.

  • post-data.php:API of HTTP POST (server). SIM7080G module can POST data to the server by using this API.
  • esp-chart.php:Webpage of Client. You can get the newest data that SIM7080G uploaded by this webpage and show it with the chart.

Software setup in Pico

Reference tutorial: Template:Raspberry Pi Pico Quick Start Choose to run the MicroPython development environment under Windows or Raspberry Pi system
(Windows development environment is recommended, and the Windows development environment is used as an example below).
Download the Python example: HTTP.py, the preview of the code is as follows:

  • HTTP GET:
# HTTP GET TEST
def http_get():
  send_at('AT+SHDISC', 'OK')
  send_at('AT+SHCONF="URL",\"'+http_get_server[0]+'\"', 'OK')
  set_http_length()
  send_at('AT+SHCONN', 'OK', 3000)
  if send_at('AT+SHSTATE?', '1'):
      set_http_content()
      resp = str(send_at_wait_resp('AT+SHREQ=\"'+http_get_server[1]+'\",1', 'OK',8000))
      # print("resp is :", resp)
      try:
          get_pack_len = int(resp[resp.rfind(',')+1:-5])
          if get_pack_len > 0:
              send_at_wait_resp('AT+SHREAD=0,'+str(get_pack_len), 'OK', 5000)
              send_at('AT+SHDISC', 'OK')
          else:
              print("HTTP Get failed!\n")
      except ValueError:
          print("ValueError!\n")
  else:
      print("HTTP connection disconnected, please check and try again\n")
  • HTTP POST:
def http_post():
  send_at('AT+SHDISC', 'OK')
  send_at('AT+SHCONF="URL",\"' + http_post_server[0] + '\"', 'OK')
  set_http_length()
  send_at('AT+SHCONN', 'OK', 3000)
  if send_at('AT+SHSTATE?', '1'):
      set_http_content()
      send_at('AT+SHCPARA', 'OK')
      if send_at('AT+SHBOD=62,10000', '>', 1000) :
          send_at(http_post_tmp, 'OK')
          resp = str(send_at_wait_resp('AT+SHREQ=\"/'+http_post_server[1]+'\",3','OK', 8000))
          # print("resp is :", resp)
          try:
              get_pack = int(resp[resp.rfind(',')+1:-5])
              print(get_pack)
              if get_pack > 0:
                  send_at_wait_resp('AT+SHREAD=0,' + str(get_pack), 'OK', 3000)
                  send_at('AT+SHDISC', 'OK')
              else:
                  print("HTTP Post failed!\n")
          except ValueError:
              print("ValueError!\n")
      else:
          print("Send failed\n")
  else:
      print("HTTP connection disconnected, please check and try again\n")

For more information about the HTTP function of SIM7080G module, please refer to SIM7070/SIM7080_Series_HTTP_Application_Note_V1.02.pdf

3. Connect the Pico-SIM7080G to Pico and connect the Pico to Raspberry Pi or PC by USB cable.

  • Open the Thonny software, Choose MicroPython(Raspberry Pi Pico), and open the sample codes.
  • Please first click Stop(No.1), and then click the Run(No.2) buttons to run the demo codes. You can check the status by the Shell window(No. 3) for example:
Pico-SIM7020X-NB-IoT-Run-Code.png

4. You can check, modify or run/debug the sample code with the Thonny software.

  • If you want to make the codes auto-run, please choose File -> Save as -> Raspberry Pi Pico, and save it as main.py.
Pico-Save-as-main py.png

Expected Result

With the HTTP.py example, Pico can get the weather information from the weather website by HTTP GET and post the temperature of Puco to pico.wiki by HTTP POST.
At the same time, users can go to the http://pico.wiki/esp-chart.php webpage to check the uploaded data which are showed by charts. For example:
SIM7080G-HTTP-GET.png
SIM7080G-HTTP-POST.png
Pico-SIM7020X-NB-IoT-HTTP-POST-Result.png

MQTT

Software Download

Operating Phenomenon

Run MQTT.py, then Pico controls Pico-SIM7080G-Cat-M/NB-IoT for initial configuration, and then subscribes to MQTT and sends "on".
Pico2.png

GPS

Example
This example mainly demonstrates related tests about GPS. Before testing, the receiver head of the GPS antenna must be placed outdoors (or on a window, where the sky can be seen), and the GPS cannot be obtained in rainy weather.
Operating Phenomenon
Gps.png

C Demo

Environment Setup

【C/C++】 Windows Tutorial 1——Environment Setup
【C/C++】 Windows Tutorial 2——New project

Demo

1. Open the C program folder.
Demo.png
2. Open the demo through Vs coed, select the corresponding compilation tool and the demo to be run (annotate the demo you don't use, delete annotation in the demo you need and run one demo each time).
C.png
Demo2.png
3. Click compile.
Demo3.png
4. Press and hold the BOOT button of Pico and then power it on, and enable Pico to enter the disk mode. Drag the UF2 file under the build file to the RPI-RP2 drive letter.
Boot.png
5. At this point, Pico starts to run the corresponding program, and you can check the running status through the serial port assistant.

Resources

Document

Demo

Tools

Datasheets

Development Software

Pico Getting Started

Firmware Download

  • MicroPython Firmware Download

MicroPython Firmware Download.gif

  • C_Blink Firmware Download

C Blink Download.gif

Introduction

Raspberry Pi Pico Basics

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

Pico-R3-Tonny1.png

  • 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

700px-Raspberry-Pi-Pico-Basic-Kit-M-2.png
700px-Raspberry-Pi-Pico-Basic-Kit-M-3.png

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)

Raspberry-Pi-Pico2-Python.png

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 Windows11. For other environments, please refer to the official tutorial for installation

Install VSCode

  1. First, click to download pico-vscode package, unzip and open the package, double-click to install VSCode
    Pico-vscode-1.JPG
    Note: If vscode is installed, check if the version is v1.87.0 or later
    Pico-vscode-2.JPG
    Pico-vscode-3.JPG

Install Extension

  1. Click Extensions and select Install from VSIX
    Pico-vscode-4.JPG
  2. Select the package with the vsix suffix and click Install
    Pico-vscode-5.JPG
  3. Then vscode will automatically install raspberry-pi-pico and its dependency extensions, you can click Refresh to check the installation progress
    Pico-vscode-6.JPG
  4. The text in the right lower corner shows that the installation is complete. Close VSCode
    Pico-vscode-7.JPG

Configure Extension

  1. Open directory C:\Users\username and copy the entire .pico-sdk to that directory
    Pico-vscode-8.JPG
  2. The Copy is completed
    Pico-vscode-9.JPG
  3. Open vscode and configure the paths for the Raspberry Pi Pico extensions
    Pico-vscode-10.JPG
    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

  1. 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
    Pico-vscode-11.JPG
  2. The project is created successfully
    Pico-vscode-12.JPG
  3. Select the SDK version
    Pico-vscode-13.JPG
  4. Select Yes for advanced configuration
    Pico-vscode-14.JPG
  5. 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
    Pico-vscode-15.JPG
  6. Select default for CMake version (the path configured earlier)
    Pico-vscode-16.JPG
  7. Select default for Ninjaversion
    Pico-vscode-17.JPG
  8. Select the development board
    Pico-vscode-18.JPG
  9. Click Complie to compile
    Pico-vscode-19.JPG
  10. The uf2 format file is successfully compiled
    Pico-vscode-20.JPG

Import Project

  1. The Cmake file of the imported project cannot have Chinese (including comments), otherwise the import may fail
  2. 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
    Pico-vscode-21.JPG set(PICO_BOARD pico CACHE STRING "Board type")

Update Extension

  1. 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
    Pico-vscode-22.JPG

Arduino IDE Series

Install Arduino IDE

  1. First, go to Arduino official website to download the installation package of the Arduino IDE.
    600px-Arduino下载2.0版本.jpg
  2. Here, you can select Just Download.
    仅下载不捐赠.png
  3. Once the download is complete, click Install.
    IDE安装水印-1.gif
    Notice: During the installation process, it will prompt you to install the driver, just click Install
    600px

Arduino IDE Interface

  1. 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.
    首选项-简体中文.jpg
  2. In the Language field, select the language you want to switch to, and click OK.
    600px-首选项-简体中文ok.jpg

Install Arduino-Pico Core in the Arduino IDE

  1. Open the Arduino IDE, click on the file in the top left corner, and select Preferences
    RoArm-M1 Tutorial04.jpg
  2. 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

    RoArm-M1 Tutorial II05.jpg
    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
  3. Click Tools > Development Board > Board Manager > Search pico, as my computer has already been installed, it shows that it is installed
    Pico Get Start 05.png
    Pico Get Start 06.png

Upload Demo at the First Time

  1. 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).
    Pico Get Start.gif
  2. Download the program and open D1-LED.ino under the arduino\PWM\D1-LED path
  3. 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)
    UGV1 doenload02EN.png
  4. 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
    UGV1 doenload03EN.png
  5. Click Tools > Development Board > Raspberry Pi Pico > Raspberry Pi Pico or Raspberry Pi Pico 2
    Pico Get Start02.png
  6. After setting it up, click the right arrow to upload the program
    Pico Get Start03.png
  • 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)


FAQ

 Answer:

This is an NB module, which only supports NB SIM cards in China.


 Answer:

SIM7080X and SIM7070X series cannot connect to cellular networks and GPS positioning at the same time.


 Answer:
  • Fixed NB-IOT or CAT-M to get the signal easier.
AT+CMNB=2 //Fix NB-IOT
AT+CMNB=1 //fix CAT-M
  • Fixed LTE mode can register to the network faster
AT+CNMP=38

For specific instructions, please refer to the following manuals:
SIM7070_SIM7080_SIM7090_Series_AT_Command_Manual_V1.03.pdf


 Answer:
AT+CPSMS=1    //Open PSM mode 
AT+CPSMS=0   //Close PSM mode

{{{5}}}


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)