受信器の検討

はじめに

400MHz付近で使えるRFICを調査している. 10kHz幅電力を測定出来れば良いのだが1ppmの周波数精度(誤差4kHz以内程)で測りたい. 今は1ppm局発と急峻なアナログLPFを使う方式か,アナログは簡素にして10sps以上のADCとDigital Filterで10kHz切り出すか どちらかにする予定で検討している

RFIC

VHF/UHFダイレクトコンバージョンIC SL6609

SL6609は 470MHzまでのダイレクトコンバージョン FSK復調器として利用できるIC.

SL6609を使ってみた方が少しいるようで21MHz CW受信はできているようです. SL6609

400MHz付近で使ってみたく,またGtrator Filterの幅が気になる所.
400MHz局発を入手次第,pin1 / pin15の周波数特性を測ってみたい.

R820T

R820TのSpecを載せる.

特徴として下記がある.
・ESD(Electic static discharge)保護機能付きノッチフィルタ
・20MHz程度のオシレータで動作
・Fc4MHz 6~8MHz幅のLow-IF FIlterを備える

Low-IF FIlterのFcとBW

RTLSDR RTL2832U V3

RTLSDR V3は0.5M-24MHzまでDIRECT SAMPLING出来たり,Expansion PORTSがあるので拡張ができそうだ.

RFM22B

源振や設定変更すれば400MHzで使えそうな感じがするのでとりあえず購入して試してみる. https://www.sparkfun.com/datasheets/Wireless/General/RFM22B.pdf

アンチエリアシングフィルタ

 LPFも検討中.ArduinoやESP32のADCが数10kHz出せるなら良いが...

 8次スイッチトキャパシタフィルタ MAX294

ESP32 ADC Speed

ESP32 ADC Speed | LabFruits によると 27.1739spsは達成できている.

ソースコードを拝借し貼り付けておく.

28
#include <chrono>
#include <Arduino.h>
#include <driver/adc.h>
 
void setup() {
  Serial.begin(115200);
  adc1_config_width(ADC_WIDTH_BIT_12);
  adc1_config_channel_atten(ADC1_CHANNEL_0, ADC_ATTEN_DB_11);
}
 
void loop() {
  const uint16_t samples = 10000;
 
  auto t1 = std::chrono::system_clock::now();
 
  for (uint32_t i=0; i<samples; i++) {
    adc1_get_raw(ADC1_CHANNEL_4); // GPIO32
  }
 
  auto t2 = std::chrono::system_clock::now();
 
  std::chrono::duration<double> diff = t2 - t1;
  auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(diff).count();
 
  Serial.printf("Samples: %u\n", samples);
  Serial.printf("Duration: %llums\n", ms);
  Serial.printf("KSPS: %0.4f", static_cast<double>(samples) / ms);
}

ポスト5G情報通信システム基盤強化研究開発事業

ポスト5G情報通信システム基盤強化研究開発事業

令和3年6月30日に公開された「https://www.meti.go.jp/press/2021/06/20210630001/20210630001-1.pdf:ポスト5G情報通信システム基盤強化研究開発事業 研究開発計画 」の目次を一部まとめる。 詳細はリンク先を参照。

既に採択されたものは下記スライドに記載されている。 https://www.meti.go.jp/press/2021/10/20211019004/20211019004-3.pdf

研究開発内容

コアネットワーク

  1. クラウド型コアの高度化技術の開発【システム技術開発】

  2. クラウド型ネットワーク統合管理・自動最適化技術の開発【システム技術開発】

伝送路

  1. 光伝送システムの高速化技術の開発【システム技術開発】

  2. 光伝送用DSPの高速化技術の開発

  3. 微細化の進展に対応した高速不揮発性メモリ技術の開発

  4. 固定無線伝送システム大容量化技術の開発【システム技術開発】

  5. バス型伝送高度化技術の開発【システム技術開発】

  6. 超高速光リンク技術の開発

  7. 光スイッチ高度化技術の開発

基地局

  1. 仮想化基地局制御部の高性能化技術の開発【システム技術開発】

  2. 基地局無線部の高性能化技術の開発【システム技術開発】

  3. 基地局装置間の相互接続性等の評価・検証技術の開発

  4. 高周波デバイスの高出力・小型化技術の開発

  5. 高温動作可能な光接続技術の開発

  6. 高周波帯アンプ一体型アレイアンテナ実装技術の開発

  7. RAN制御高度化技術の開発【システム技術開発】

MEC

  1. MEC向け大規模先端ロジックチップ設計技術の開発

  2. MECサーバー向け広帯域・大容量メモリモジュール設計技術の開発

端末

  1. 端末通信機能構成技術の開発

先端半導体製造技術の開発

  1. 先端半導体の前工程技術(More Moore 技術)の開発

  2. 先端半導体の後工程技術(More than Moore 技術)の開発

...略

ThinkCentre M72eへESXi6.7のInstall(失敗)

結果

ThinkCentre M72eへESXi6.7のInstallを試みたが、No system foundと表示されSSD boot出来ない。 BIOSで色々設定を変えたが出来ない。 このマシンは、Ubuntu20.04を入れる事とする...。

手順

1.ESXi6.7のオフラインバンドルのダウンロード VMware vSphere Hypervisor (ESXi) Offline Bundle https://customerconnect.vmware.com/jp/downloads/details?downloadGroup=ESXI67U3B&productId=742&rPId=81450#product_downloads

2.Realtek Driver Net55-r8168のダウンロード

VIB File of version 8.045a Offline Bundle of version 8.045a https://vibsdepot.v-front.de/wiki/index.php/Net55-r8168

3.VMware Power CLIのインストール Install-Module -Name VMware.PowerCLI

4.PowerShellのセキュリティの無効化 PS D:\Download\ESXi-Customizer-PS-master> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

5 .オフラインバンドルにカスタムパッケージ(NIC Driver)を追加 PS D:\Download\ESXi-Customizer-PS-master> .\ESXi-Customizer-PS.ps1 -v67 -pkgDir .\pkg\ .\ESXi670-201912001.zip

Reference: Install ESXi 7 on Zotac CI660 https://communities.vmware.com/t5/ESXi-Discussions/Install-ESXi-7-on-Zotac-CI660/m-p/2829736#M274559

VMware ESXi 7.0 で No Network Adapters | 解決 https://yvernis.blog.fc2.com/blog-entry-234.html

RealtekDriverを入れたカスタムESXi6.7 OSの作成 https://enk2x.ru/2020/07/04/esxirealtek/

M5Stackの電池延命化と低電力化

目次

チャージコントローラによる充電量の制限

M5Stackの充電制御IC IP5306のネット上に分散していたレジスタ情報をまとめる 様によると、「M5Stack BASICのボトム(LiPo:110mAh)を使うときは、スケッチのsetup()の最初に以下のように記載してやることで、充電電流オーバーによるLiPoの劣化をある程度防げるはず」との記載。

setup(){
  M5.begin();
  M5.Power.begin();
  M5.Power.setVinMaxCurrent(CURRENT_100MA) ;

一つの可能性に行きついたが、太陽光パネルをM5Stackに接続した場合、チャージコントローラであるIP5306が過充電・放電を防いでくれるのではないか。 つまり、外部にチャージコントローラは不要になるのではないか

M5StickCのAXP192の電源周りを調べる | Lang-ship によると、M5StickCのチャージコントロータAXP192では、

  • USB INはデフォルトで500mAに制限されている(レジスタ値変更により、更に制限できる可能性もある)

  • AXP192経由での過放電は禁止されている(と推測されている)

  • 過電圧保護回路が入っている。

    外部電源電圧が6.3Vを超えると、APX19xはIRQ1 / 4を送信し、外部電源が過電圧であることを示します。外部電源が7Vを超えると、AXP192は自動的にシャットダウンします。 M5-Schematic/AXP192 Datasheet v1.13_cn.pdf at master · m5stack/M5-Schematic · GitHub

低電力化

M5StickCでの省電力ノウハウ | Lang-ship によると、画面有り・WiFiありで消費電力を最小にするには、

  1. ESP32 80MHz(無線利用) で15.4mA
  2. 画面8以下で 1.0mA

の電流設定が良いと想定する。更にWiFiの消費電力を下げるには、下記が必要。

  • 無線送信電力を100mW(20dBm)から50mW(17dBm)、10mW(10dBm)へ下げる
  • APモードの場合、ビーコン間隔を最長

esp-idf/esp_wifi.h at 1c7a8b3b712c4020562551f692d0ced8f7470d2c · espressif/esp-idf · GitHubより、 ESP32のソースコードで電力や通信レート・距離、チャネルに関連する関数を抜粋しておく。

WiFiの場合

esp_err_t esp_wifi_set_ps(wifi_ps_type_t type);
esp_err_t esp_wifi_get_ps(wifi_ps_type_t *type);
//The default protocol is (WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G|WIFI_PROTOCOL_11N)
esp_err_t esp_wifi_set_bandwidth(wifi_interface_t ifx, wifi_bandwidth_t bw);
//@attention 2. WIFI_BW_HT40 is supported only when the interface support 11N
esp_err_t esp_wifi_set_vendor_ie_cb(esp_vendor_ie_cb_t cb, void *ctx);
  *            Level0 represents highest transmiting power and level5 represents lowest
  *            transmiting power. 
  *            levels as follows:
  *            - [78, 127]: level0 //20dBm??
  *            - [76, 77]: level1
  *            - [74, 75]: level2
  *            - [68, 73]: level3
  *            - [60, 67]: level4
  *            - [52, 59]: level5
  *            - [44, 51]: level5 - 2dBm
  *            - [34, 43]: level5 - 4.5dBm
  *            - [28, 33]: level5 - 6dBm
  *            - [20, 27]: level5 - 8dBm
  *            - [8, 19]: level5 - 11dBm
  *            - [-128, 7]: level5 - 14dBm

esp_err_t esp_wifi_set_ant_gpio(const wifi_ant_gpio_config_t *config);

/**
  * @brief     Set primary/secondary channel of ESP32
  *
  * @attention 1. This API should be called after esp_wifi_start()
  * @attention 2. When ESP32 is in STA mode, this API should not be called when STA is scanning or connecting to an external AP
  * @attention 3. When ESP32 is in softAP mode, this API should not be called when softAP has connected to external STAs
  * @attention 4. When ESP32 is in STA+softAP mode, this API should not be called when in the scenarios described above
  *
  * @param     primary  for HT20, primary is the channel number, for HT40, primary is the primary channel
  * @param     second   for HT20, second is ignored, for HT40, second is the second channel
  *
  * @return
  *    - ESP_OK: succeed
  *    - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
  *    - ESP_ERR_WIFI_IF: invalid interface
  *    - ESP_ERR_INVALID_ARG: invalid argument
  */
esp_err_t esp_wifi_set_channel(uint8_t primary, wifi_second_chan_t second);



/**
  * @brief     configure country info
  *
  * @attention 1. It is discouraged to call this API since this doesn't validate the per-country rules,
  *               it's up to the user to fill in all fields according to local regulations.
  *               Please use esp_wifi_set_country_code instead.
  * @attention 2. The default country is CHINA {.cc="CN", .schan=1, .nchan=13, policy=WIFI_COUNTRY_POLICY_AUTO}
  * @attention 3. When the country policy is WIFI_COUNTRY_POLICY_AUTO, the country info of the AP to which
  *               the station is connected is used. E.g. if the configured country info is {.cc="USA", .schan=1, .nchan=11}
  *               and the country info of the AP to which the station is connected is {.cc="JP", .schan=1, .nchan=14}
  *               then the country info that will be used is {.cc="JP", .schan=1, .nchan=14}. If the station disconnected
  *               from the AP the country info is set back to the country info of the station automatically,
  *               {.cc="US", .schan=1, .nchan=11} in the example.
  * @attention 4. When the country policy is WIFI_COUNTRY_POLICY_MANUAL, then the configured country info is used always.
  * @attention 5. When the country info is changed because of configuration or because the station connects to a different
  *               external AP, the country IE in probe response/beacon of the soft-AP is also changed.
  * @attention 6. The country configuration is stored into flash.
  * @attention 7. When this API is called, the PHY init data will switch to the PHY init data type corresponding to the
  *               country info.
  *
  * @param     country   the configured country info
  *
  * @return
  *    - ESP_OK: succeed
  *    - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
  *    - ESP_ERR_INVALID_ARG: invalid argument
  */
esp_err_t esp_wifi_set_country(const wifi_country_t *country);


/**
  * @brief     Set maximum transmitting power after WiFi start.
  *
  * @attention 1. Maximum power before wifi startup is limited by PHY init data bin.
  * @attention 2. The value set by this API will be mapped to the max_tx_power of the structure wifi_country_t variable.
  * @attention 3. Mapping Table {Power, max_tx_power} = {{8,   2}, {20,  5}, {28,  7}, {34,  8}, {44, 11},
  *                                                      {52, 13}, {56, 14}, {60, 15}, {66, 16}, {72, 18}, {80, 20}}.
  * @attention 4. Param power unit is 0.25dBm, range is [8, 84] corresponding to 2dBm - 20dBm.
  * @attention 5. Relationship between set value and actual value. As follows: {set value range, actual value} = {{[8,  19],8}, {[20, 27],20}, {[28, 33],28}, {[34, 43],34}, {[44, 51],44}, {[52, 55],52}, {[56, 59],56}, {[60, 65],60}, {[66, 71],66}, {[72, 79],72}, {[80, 84],80}}.
  *
  * @param     power  Maximum WiFi transmitting power.
  *
  * @return
  *    - ESP_OK: succeed
  *    - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
  *    - ESP_ERR_WIFI_NOT_START: WiFi is not started by esp_wifi_start
  *    - ESP_ERR_WIFI_ARG: invalid argument, e.g. parameter is out of range
  */
esp_err_t esp_wifi_set_max_tx_power(int8_t power);


/**
 * @brief      Get the TSF time
 *             In Station mode or SoftAP+Station mode if station is not connected or station doesn't receive at least
 *             one beacon after connected, will return 0
 *
 * @attention  Enabling power save may cause the return value inaccurate, except WiFi modem sleep
 *
 * @param      interface The interface whose tsf_time is to be retrieved.
 *
 * @return     0 or the TSF time
 */
int64_t esp_wifi_get_tsf_time(wifi_interface_t interface);


/**
  * @brief     Set the inactive time of the ESP32 STA or AP
  *
  * @attention 1. For Station, If the station does not receive a beacon frame from the connected SoftAP during the inactive time,
  *               disconnect from SoftAP. Default 6s.
  * @attention 2. For SoftAP, If the softAP doesn't receive any data from the connected STA during inactive time,
  *               the softAP will force deauth the STA. Default is 300s.
  * @attention 3. The inactive time configuration is not stored into flash
  *
  * @param     ifx  interface to be configured.
  * @param     sec  Inactive time. Unit seconds.
  *
  * @return
  *    - ESP_OK: succeed
  *    - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
  *    - ESP_ERR_WIFI_NOT_STARTED: WiFi is not started by esp_wifi_start
  *    - ESP_ERR_WIFI_ARG: invalid argument, For Station, if sec is less than 3. For SoftAP, if sec is less than 10.
  */
esp_err_t esp_wifi_set_inactive_time(wifi_interface_t ifx, uint16_t sec);


/**
  * @brief      Enable or disable 11b rate of specified interface
  *
  * @attention  1. This API should be called after esp_wifi_init() and before esp_wifi_start().
  * @attention  2. Only when really need to disable 11b rate call this API otherwise don't call this.
  *
  * @param      ifx  Interface to be configured.
  * @param      disable true means disable 11b rate while false means enable 11b rate.
  *
  * @return
  *    - ESP_OK: succeed
  *    - others: failed
  */
esp_err_t esp_wifi_config_11b_rate(wifi_interface_t ifx, bool disable);

/**
  * @brief      Config ESPNOW rate of specified interface
  *
  * @attention  1. This API should be called after esp_wifi_init() and before esp_wifi_start().
  *
  * @param      ifx  Interface to be configured.
  * @param      rate Phy rate to be configured.
  *
  * @return
  *    - ESP_OK: succeed
  *    - others: failed
  */
esp_err_t esp_wifi_config_espnow_rate(wifi_interface_t ifx, wifi_phy_rate_t rate);

/**
  * @brief      Set interval for station to wake up periodically at disconnected.
  *
  * @attention 1. Only when ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is enabled, this configuration could work
  * @attention 2. This configuration only work for station mode and disconnected status
  * @attention 3. This configuration would influence nothing until some module configure wake_window
  * @attention 4. A sensible interval which is not too small is recommended (e.g. 100ms)
  *
  * @param      interval  how much micriosecond would the chip wake up, from 1 to 65535.
  */
esp_err_t esp_wifi_set_connectionless_wake_interval(uint16_t interval);


**
  * @brief WiFi PHY rate encodings
  *
  */
typedef enum {
    WIFI_PHY_RATE_1M_L      = 0x00, /**< 1 Mbps with long preamble */
    WIFI_PHY_RATE_2M_L      = 0x01, /**< 2 Mbps with long preamble */
    WIFI_PHY_RATE_5M_L      = 0x02, /**< 5.5 Mbps with long preamble */
    WIFI_PHY_RATE_11M_L     = 0x03, /**< 11 Mbps with long preamble */
    WIFI_PHY_RATE_2M_S      = 0x05, /**< 2 Mbps with short preamble */
    WIFI_PHY_RATE_5M_S      = 0x06, /**< 5.5 Mbps with short preamble */
    WIFI_PHY_RATE_11M_S     = 0x07, /**< 11 Mbps with short preamble */
    WIFI_PHY_RATE_48M       = 0x08, /**< 48 Mbps */
    WIFI_PHY_RATE_24M       = 0x09, /**< 24 Mbps */
    WIFI_PHY_RATE_12M       = 0x0A, /**< 12 Mbps */
    WIFI_PHY_RATE_6M        = 0x0B, /**< 6 Mbps */
    WIFI_PHY_RATE_54M       = 0x0C, /**< 54 Mbps */
    WIFI_PHY_RATE_36M       = 0x0D, /**< 36 Mbps */
    WIFI_PHY_RATE_18M       = 0x0E, /**< 18 Mbps */
    WIFI_PHY_RATE_9M        = 0x0F, /**< 9 Mbps */
    WIFI_PHY_RATE_MCS0_LGI  = 0x10, /**< MCS0 with long GI, 6.5 Mbps for 20MHz, 13.5 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS1_LGI  = 0x11, /**< MCS1 with long GI, 13 Mbps for 20MHz, 27 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS2_LGI  = 0x12, /**< MCS2 with long GI, 19.5 Mbps for 20MHz, 40.5 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS3_LGI  = 0x13, /**< MCS3 with long GI, 26 Mbps for 20MHz, 54 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS4_LGI  = 0x14, /**< MCS4 with long GI, 39 Mbps for 20MHz, 81 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS5_LGI  = 0x15, /**< MCS5 with long GI, 52 Mbps for 20MHz, 108 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS6_LGI  = 0x16, /**< MCS6 with long GI, 58.5 Mbps for 20MHz, 121.5 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS7_LGI  = 0x17, /**< MCS7 with long GI, 65 Mbps for 20MHz, 135 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS0_SGI  = 0x18, /**< MCS0 with short GI, 7.2 Mbps for 20MHz, 15 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS1_SGI  = 0x19, /**< MCS1 with short GI, 14.4 Mbps for 20MHz, 30 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS2_SGI  = 0x1A, /**< MCS2 with short GI, 21.7 Mbps for 20MHz, 45 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS3_SGI  = 0x1B, /**< MCS3 with short GI, 28.9 Mbps for 20MHz, 60 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS4_SGI  = 0x1C, /**< MCS4 with short GI, 43.3 Mbps for 20MHz, 90 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS5_SGI  = 0x1D, /**< MCS5 with short GI, 57.8 Mbps for 20MHz, 120 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS6_SGI  = 0x1E, /**< MCS6 with short GI, 65 Mbps for 20MHz, 135 Mbps for 40MHz */
    WIFI_PHY_RATE_MCS7_SGI  = 0x1F, /**< MCS7 with short GI, 72.2 Mbps for 20MHz, 150 Mbps for 40MHz */
    WIFI_PHY_RATE_LORA_250K = 0x29, /**< 250 Kbps */
    WIFI_PHY_RATE_LORA_500K = 0x2A, /**< 500 Kbps */
    WIFI_PHY_RATE_MAX,
} wifi_phy_rate_t;


/** Argument structure for WIFI_EVENT_FTM_REPORT event */
typedef struct {
    uint8_t peer_mac[6];                        /**< MAC address of the FTM Peer */
    wifi_ftm_status_t status;                   /**< Status of the FTM operation */
    uint32_t rtt_raw;                           /**< Raw average Round-Trip-Time with peer in Nano-Seconds */
    uint32_t rtt_est;                           /**< Estimated Round-Trip-Time with peer in Nano-Seconds */
    uint32_t dist_est;                          /**< Estimated one-way distance in Centi-Meters */
    wifi_ftm_report_entry_t *ftm_report_data;   /**< Pointer to FTM Report with multiple entries, should be freed after use */
    uint8_t ftm_report_num_entries;             /**< Number of entries in the FTM Report data */
} wifi_event_ftm_report_t;

余談

送信ダイバーシティ

送信ダイバーシティ

WiFiLTE/5G等に広く利用されている送信ダイバーシティ技術を概説する。

参考論文

Comparative Study of Open-loop Transmit Diversity Schemes for Four Transmit Antennas in Coded OFDM Systems

CSD/CDD (Cyclic Shift Diversity, Cyclic Delay Diversity )

 CSD/CDDは、1受信/n送信の場合に効果があるダイバーシティである。  原理として、送信アンテナそれぞれに対して任意の遅延を加える事により受信側で同位相合成する事で受信SNを向上する手法となる。  但し、チャネルが既知である事が前提となるため、TDD等の時分割復信において受信側からの信号から推定したチャネル情報を利用し、各送信アンテナへ重みをかけて送信する必要がある。WiFiやTD-LTEで利用されている方式となる。  尚、遅延量はシンボル間干渉を起さない程度の遅延とする必要がある。

Alamouti STBC

STBCは http://www.radio3.ee.uec.ac.jp/D_ronbun/sasaki@.pdf 3.3に詳しい。

参考

  • 送信ダイバーシティはCDD(Cyclic Delay Diversity,=Cyclic Shift Diversity )が2000年に特許出願され11aと11gに導入され、次いでSTBCが11nに導入された。
  • 過度の符号間干渉(ISI)を引き起こさないように、ガードインターバル(GI)の制限内に収まるように選択される。

STBC

WiFiの新しい道

気になる会社(下記) が目に留まり、Mesh WiFi Networkを追憶していた。
どこでもWi-Fi化 置くだけ基地局で簡単拡張! | 古川 浩 | TEDxFukuoka - YouTube

思い出せるWiFiの狙いは3つ。

  1. ESP32の独自規格である802.11 LR
  2. ESP-Mesh によるメッシュネットワーク
  3. 干渉除去による全二重WiFi通信

Pixel3aもESP32と同様なSoftAP(親機 兼 子機)が使えるため、スマートフォンを繋ぎMesh化する事もできる。 チャネルは制御プロトコルで各機器毎に設定し、同一干渉は勿論、近接機器ではチャネル間隔を離すのだ。

M5StackとSIM7080GでHTTP通信

ATコマンドで通信

LTE CAT-M接続とPing

SIMCOM社のSIM7080Gでさくらセキュアモバイルの通信テスト | Next Step SIM7080G Cat-M/NB-IoT HAT - Waveshare Wiki

の記事を参考とさせて頂きました。

MQTT通信

 次回記載します。

TCPとHTTP通信

TCP通信のATコマンドは TCP/IP testing with Simcom SIM7070/SIM7080 Modules | M2MSupport.net のソースを参考とした。

大まかに下記を行う。

  1. TCP接続
  2. HTTP GETコマンドを送信
  3. HTTP結果を受け取り
  4. TCPをクローズする

HTTP通信を行うATコマンドを記載しておく。

直接HTTP通信

M5Stack UnitCatM を Seeeduino XIAO で制御 - IoT - HomeMadeGarbage 様が参考になります。

ATコマンド一覧

AT+CPSI Inquiring UE System Information

+CPSI: Systemmode,OperationMode,MCC-MNC,TAC,SCellID,PCellID,FrequencyBand,earfcn,dlbw,ulbw,RSRQ,RSRP,RSSI,RSSNR
//一例  +CPSI: LTE CAT-M1,Online,440-10,0x9000,152121616,78,EUTRAN-BAND1,276,4,4,-15,-109,-80,10

f:id:jijiken0417:20211128215522p:plain

Power Saving Mode

マシンコム端末向けに消費電力を低減する技術としてPSM(Power Saving Mode)がRelease 12仕様で策定された。PSMは、間欠受信を行わず、無線の機能をほぼOFFにすることで消費電力を大幅に削減できる。一方で、端末向けの着信は周期的に行われる位置登録の契機(通常54分)でしか行えないという課題があった。そこで、着信間隔を短くすることも実現する技術として、待受け中の間欠受信周期を既存の最大2.56秒よりさらに大きくし、最大43分の間欠受信周期を設定できるextended DRX(Discontinuous Reception)※10が策定された。 3.1 新サービス創造のための新技術 | 企業情報 | NTTドコモ

間欠受信はAT+CPSMS (Power Saving Mode Setting) で行える。 詳しい設定方法は次回調査する。

f:id:jijiken0417:20211128214924p:plain https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/datasheet/unit/sim7080g/en/SIM7070_SIM7080_SIM7090%20Series_AT%20Command%20Manual_V1.04.pdf

Extender DRX

無線品質

SNR

RSRP-99dBmだが、SNRが4dB(12*2 - 20)とかなり低い。 環境雑音が高い、またはモジュールの内部雑音が高いせいか? 後者だと問題。

+CPSI: LTE CAT-M1,Online,440-10,0x176F,43981314,152,EUTRAN-BAND1,276,4,4,-10,-99,-75,12