Wio BG770Aは、LTE-Mモジュールを搭載した小型のマイコンでSORACOMから販売されています。 SORACOM SIM前提での記載が多いのですが、低コストでの運用(と技術的な興味)のためにこのデバイスを1NCEに接続してみました。
この記事では、1NCE SIMを挿してLTE-Mで接続し、掴んでいる周波数(Band)・オペレーター・電波品質(RSRP / SINR)を確認する方法を紹介します。
使用機材・環境
使用した機材は以下の通りで、Wio BG770Aと1NCE SIMだけです。
| 機材 | 詳細 |
|---|---|
| IoTデバイス | Wio BG770A(Seeed Studio) |
| SIM | 1NCE IoT SIM |
| 開発環境 | PlatformIO + VSCode |
Wio BG770AはQuectel製のLTE-Mモジュール(BG77xシリーズ)が内蔵されており、LTEアンテナとSIMを挿すだけで通信できます。LTEアンテナは本体に付属しています。

本記事で公開しているコード全体はGithubで公開しています。
wio-bg770a-1nce-connect — iotbuilds-samples
BG770A + 1NCE LTE-M 接続サンプル(PlatformIO)
1NCEとは
1NCEはドイツ発のIoT SIMサービスです。1枚あたり2,200円(サービス料2,000円 + SIMカード代200円)の買い切り型の料金体系が特徴で、月額費用や基本料金はありません。 SIM1枚あたり500MBまでの制限がありますが、データ量の小さなセンサーデータを扱う上では十分です。
Wio BG770Aを1NCEに接続する
全体の流れ
それでは、実際にWio BG770Aを1NCEに接続するコードを見ていきましょう。 以下の3ステップで1NCEに接続します。
- 1
APN・PDP認証を設定する
AT+CGAUTHで1NCEは認証なし(type=0)を指定します。 - 2
モジュールの電源を入れる
LTE-Mネットワークへの登録を待ちます。
- 3
接続状態を確認する
周波数帯(Band)・通信事業者(Operator)・電波品質(RSRP / SINR)を取得します。
ステップ1:APN・PDP認証を設定する
接続に必要な設定は通信方式・Band・APN・PDP認証の4点です。
通信方式 は LTEM を指定してLTE-Mに固定します。コード上では eMTC(enhanced Machine Type Communication)という名称が使われていますが、eMTCは3GPPが定めた技術規格の正式名称で、一般的にはLTE-Mと呼ばれています。同じ技術を指す2つの名前です。
Band はモバイル通信で使われる周波数帯の区分です。Bandごとに使用する周波数が異なり、カバーエリアや建物への電波の入りやすさが変わります。ALL_LTEM_BAND(全LTE-Mバンド)を指定すると、モジュールが自動で最も状態の良いBandを選んで接続します。Bandを特定のものに絞ると接続できる基地局が制限されるため、まず全バンドで試すのが無難です。
APN(Access Point Name) はモバイル回線でインターネットに出るための接続先名称で、SIMサービスごとに固有の値が決まっています。1NCEのAPNは iot.1nce.net です。これは日本・海外問わず共通の値で、国ごとに変える必要はありません。
PDP認証(AT+CGAUTH) は、APNへの接続時にユーザー名・パスワードで認証するかどうかを指定します。1NCEはtype=0(認証なし)を指定します。
認証なしで問題ないのか?と思うかもしれませんが、モバイル通信のセキュリティはSIMカード自体がネットワークと行う認証で担保されています。
// 通信方式:LTE-M(eMTC)に固定
static constexpr auto SEARCH_ACCESS_TECHNOLOGY = WioCellularNetwork::SearchAccessTechnology::LTEM;
// BAND:全LTE-Mバンドを許可
static constexpr const char* LTEM_BAND = WioCellularNetwork::ALL_LTEM_BAND;
// APN:1NCEは日本・海外共通
static constexpr const char* APN = "iot.1nce.net";
static constexpr int PDP_CONTEXT_ID = 1;
// PDP認証:1NCEは認証不要(type=0)
// SORACOMの場合は type=1(PAP)+ ID/PWが必要
static std::string BuildOneNcePdpAuthCommand() {
return "AT+CGAUTH=" + std::to_string(PDP_CONTEXT_ID) + ",0";
}ステップ2:モジュールの電源を入れてネットワークに登録する
WioCellular.powerOn() でLTE-Mモジュールの電源を入れ、WioNetwork.begin() でネットワーク登録を開始します。その後 AT+CGAUTH でPDP認証設定を適用し、AT+COPS=3,2 でオペレーター番号をMCC+MNC形式(5桁の数字)で返すよう指定します。この設定をしておくことで、ログの oper= フィールドから接続キャリアを特定できるようになります(ステップ3で値を見ていきます)。
WioCellular.powerOn(POWER_ON_TIMEOUT_MS);
WioNetwork.begin();
WioCellular.executeCommand(BuildOneNcePdpAuthCommand(), CGAUTH_TIMEOUT_MS); // AT+CGAUTH
WioCellular.executeCommand("AT+COPS=3,2", COPS_TIMEOUT_MS); // oper形式をMCC+MNCにステップ3:接続確認と電波品質の読み方
ATコマンドとは、セルラーモジュールに対してテキストで命令を送り、設定・情報取得を行う仕組みです。接続後、以下の3つのATコマンドでシグナル品質を取得しています。
| ATコマンド | 取得できる情報 |
|---|---|
AT+QNWINFO | RAT(通信方式)・Band・チャンネル番号 |
AT+COPS? | 接続中のオペレーター(MCC+MNC形式) |
AT+QCSQ | RSSI / RSRP / RSRQ / SINR |
AT+Q で始まるコマンドはQuectel独自の拡張コマンドです。他社製セルラーモジュールでは同等の情報を取得するコマンドが異なります。
LTE-Mの電波品質は RSRP(カバレッジの主指標)と SINR(実効品質の主指標)を中心に見ます。
| 指標 | 単位 | 見方 |
|---|---|---|
| RSSI | dBm | 受信電力の総量。干渉・雑音も含むため品質判断には単独で使わない |
| RSRP | dBm | 参照信号の受信強度。カバレッジの主指標。-100dBm以上が目安 |
| RSRQ | dB | 参照信号の品質。混雑・干渉の影響を補助的に確認する |
| SINR | dB | 信号対干渉雑音比。実効品質の主指標。値が高いほど良好 |
各ATコマンドを呼び出してレスポンスをパースする関数(GetServingCellInfo() / GetCopsInfo() / GetQcsqInfo())と、3つをまとめてシリアル出力する PrintRadioStatus() で構成されています。WioCellular.queryCommand() にATコマンドとレスポンスのコールバックを渡し、+QNWINFO: のようなプレフィックスを確認してフィールドを取り出しています。
実際の接続ログ
1NCEは、SoftBankとKDDIのどちらの基地局にも接続でき、接続するキャリアは自動で選択されます。 何度かWio BG770Aを起動しなおすことで両方のネットワークに繋ぐことができました。 その時のログと説明を以下に記載します。
SoftBank接続時
Radio t=28s net=Connected epsReg=5 ps=1 oper=44020 rat=eMTC band=LTE BAND 1 ch=500 rssi=-65 rsrp=-100 rsrq=-22 sinrDb=-9.0
Radio t=38s net=Connected epsReg=5 ps=1 oper=44020 rat=eMTC band=LTE BAND 1 ch=500 rssi=-66 rsrp=-96 rsrq=-18 sinrDb=-10.0
Radio t=48s net=Connected epsReg=5 ps=1 oper=44020 rat=eMTC band=LTE BAND 1 ch=500 rssi=-64 rsrp=-94 rsrq=-17 sinrDb=0.0
Radio t=58s net=Connected epsReg=5 ps=1 oper=44020 rat=eMTC band=LTE BAND 8 ch=3750 rssi=-63 rsrp=-87 rsrq=-11 sinrDb=1.0
Radio t=68s net=Connected epsReg=5 ps=1 oper=44020 rat=eMTC band=LTE BAND 8 ch=3750 rssi=-62 rsrp=-87 rsrq=-12 sinrDb=-2.0
oper= フィールドはPLMNコードを表します。PLMN(5桁)は、MCC(3桁)+MNC(2桁)で構成されるコードで、通信キャリアを特定できます。MCC(Mobile Country Code)は国ごとに割り当てられ、日本は 440 です。MNCの 20 はSoftBank、51 はKDDIを表します。これは総務省から電気通信番号として公表されています。
1NCEとSoftBankは提携しており、SoftBankの基地局を利用しています。後述のとおり、KDDIの基地局にも接続できることが確認できました。
また、上記ログでは接続直後はLTE BAND 1で接続し、t=58s以降にBAND 8へ切り替わっています。 Band1は2.1GHz帯であり、Band8は900MHz帯を表します。 これはBand1での電波品質が悪かったので、Band8での通信に切り替わったことを表しています。
SoftbankのLTE-Mでは、Band 1(2.1GHz帯)とBand 8(900MHz帯)に対応と書いてあるので、Band1か8にしかならないようです。
SoftBank 4G LTEのBand 1(2.1GHz帯)とBand 8(900MHz帯)の通信エリアに対応。 https://www.softbank.jp/corp/news/press/sbkk/2019/20190510_01/
BAND 8切り替え後には、RSRPが-87dBmで安定しました。 SINRは-2〜1dBとやや低めですが、自宅マンションでの接続のためやや電波状況が悪いのでしょう。
KDDI接続時
Waiting network... elapsed=10091/180000ms state=Searching
...
Attach OK: periodic status every 10s
Radio t=170s net=Connected epsReg=5 ps=1 oper=44051 rat=eMTC band=LTE BAND 18 ch=5900 rssi=-71 rsrp=-91 rsrq=-17 sinrDb=-5.0
Radio t=180s net=Connected epsReg=5 ps=1 oper=44051 rat=eMTC band=LTE BAND 18 ch=5900 rssi=-60 rsrp=-91 rsrq=-18 sinrDb=-7.0
Radio t=190s net=Connected epsReg=5 ps=1 oper=44051 rat=eMTC band=LTE BAND 18 ch=5900 rssi=-60 rsrp=-89 rsrq=-16 sinrDb=-3.0
このケースだとKDDIのネットワーク登録まで約170秒かかっています。
oper=44051 からKDDIに接続していることが分かります。
Band 18はauのプラチナバンド(800MHz帯)で、Band 1(2.1GHz帯)やBand 8(900MHz帯)より建物内への電波浸透性が高いのが特徴です。 RSRPは-91dBmで実用範囲内です。
SORACOMに接続する場合との違い
コードの差分はAPNとPDP認証の2点だけです。使い分けの実質的な判断軸は料金体系と接続キャリアになります。
| 項目 | 1NCE | SORACOM |
|---|---|---|
| APN | iot.1nce.net | soracom.io |
| PDP認証 | なし(type=0) | PAP(type=1 + ID/PW: sora/sora) |
| 接続キャリア | SoftBank または KDDI | KDDI・NTTドコモ・SoftBankの最大3キャリア(契約SIMによる) |
まとめ
この記事では、Wio BG770Aに1NCE SIMを挿してLTE-M接続、電波品質と接続先の情報を確認する手順を紹介しました。 1NCEを使用することで低コストでの運用ができるのは魅力的です。
ただし、Wio BG770Aを日本ではSORACOMが販売していることもあり、SORACOMの方が情報が多く、互換性も担保されているので、コストと安定性でどちらを使うかは判断するのが良いでしょう。


