Difference between revisions of "Pico-SIM7080G-Cat-M/NB-IoT"

From Waveshare Wiki
Jump to: navigation, search
Line 24: Line 24:
  
 
<div class="tabbertab" title="Resources">
 
<div class="tabbertab" title="Resources">
 +
==MQTT==
 +
'''Software Download'''
 +
*
 
==Resources==
 
==Resources==
 
*[[:File:Pico-SIM7080G-Cat-M-NB-IoT-GNSS-Schematic.pdf|Schematic]]
 
*[[:File:Pico-SIM7080G-Cat-M-NB-IoT-GNSS-Schematic.pdf|Schematic]]

Revision as of 08:29, 5 May 2022

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}}}

Introductions

Features

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.

  • 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, allows being powered from external rechargeable Li-po battery, or recharging it in turn
  • 2x 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 development resources and manual (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

Pythonwin.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 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 example, we setup the webpage of server for testing.
Pico-SIM7020-HTTP-Demo-2.png
1、Build envrionments 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 by 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