M5StackでUnit NB-IoT2 (SIM7028) を使う

Using the Unit NB-IoT2 (SIM7028) ・ 使用 Unit NB-IoT2 (SIM7028)

M5StackのUnit NB-IoT2 (SIM7028)をコントローラーに接続する最小構成。配線とBOMつき。

この構成をエディタで開く・編集する →

部品リスト(BOM)

部品役割ポートリンク・価格
AtomS3 LiteControllergrove_i2c, gpio, usb_cofficial page — $7.5
Unit NB-IoT2 (SIM7028)unitgrove_uart, antenna_smaofficial page — $6.5

配線

作り方

M5Stack AtomS3 LiteとUnit NB-IoT2 (SIM7028)で作る、NB-IoT通信のテスト用セットアップです。AtomS3 LiteからUART経由でSIM7028にATコマンドを送り、ネットワークに接続してデータを送受信できます。

  1. 部品を用意する — 用意するもの:M5Stack AtomS3 Lite本体、Unit NB-IoT2 (SIM7028)、Groveケーブル(UART用、青いコネクタのもの)、SIM7028用のアンテナ(SMAコネクタ)、AtomS3 LiteとパソコンをつなぐUSB-Cケーブル。
  2. アンテナを取り付ける — Unit NB-IoT2のSMAアンテナコネクタに付属のアンテナをしっかりとねじ込みます。アンテナがないと通信できません。
  3. Groveケーブルでつなぐ — Unit NB-IoT2はUART(青)接続です。Groveケーブルの一端をユニットのGroveポートに、もう一端をAtomS3 LiteのGroveポート(Port.C、青いコネクタ)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでAtomS3 Liteをパソコンにつなぎます。UIFlowやThonnyなどのツールで、AtomS3 LiteにMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. 動作を確認する — コードを実行すると、AtomS3 LiteのRGB LEDが青く点灯し、シリアルモニタにATコマンドの応答が表示されます。SIM7028がネットワークに接続されると、LEDが緑に変わります。

サンプルコード(micropython)

# M5Stack AtomS3 Lite + Unit NB-IoT2 (SIM7028)
# Wiring: Unit NB-IoT2 (UART) -> AtomS3 Lite Grove Port.C (UART)
# AtomS3 Lite Grove Port.C: TX=GPIO1, RX=GPIO2
import time
from machine import Pin, UART

# Initialize UART on Port.C (TX=1, RX=2, baudrate=115200)
uart = UART(1, baudrate=115200, tx=1, rx=2)

# Initialize built-in RGB LED (GPIO35 on AtomS3 Lite)
from neopixel import NeoPixel
led = NeoPixel(Pin(35), 1)

def send_at(cmd, timeout=2000):
    uart.write(cmd + '\r\n')
    time.sleep_ms(100)
    response = b''
    start = time.ticks_ms()
    while time.ticks_diff(time.ticks_ms(), start) < timeout:
        if uart.any():
            response += uart.read()
        time.sleep_ms(10)
    return response.decode(errors='ignore')

# Set LED to blue during initialization
led[0] = (0, 0, 50)
led.write()

# Basic AT test
print("Testing AT...")
resp = send_at('AT')
print(resp)

# Check SIM status
print("Checking SIM...")
resp = send_at('AT+CPIN?')
print(resp)

# Check network registration
print("Checking network...")
resp = send_at('AT+CREG?')
print(resp)

# If registered, set LED to green
if '+CREG: 0,1' in resp or '+CREG: 0,5' in resp:
    led[0] = (0, 50, 0)
    led.write()
    print("Network registered!")
else:
    print("Not registered yet.")

# Main loop: send AT every 10 seconds
while True:
    resp = send_at('AT+CSQ')  # signal quality
    print('Signal:', resp)
    time.sleep(10)

コツ・安全上の注意

この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。

この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。

エディタで開く →

UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。