

SPRESENSEで取得した画像をパソコンに送りたいと思っています。  
その際にWiFiは使用したくなく、LTEボードを使用しています。  
SPRESENSEの公式のチュートリアルを参考に行ったところ  
pc同士では通信ができたのですが、SPRESENSEとpc間では文字の通信すらできませんでした。  
エラーなども出ていないため、どこが悪いかわかりません。  
ご教授お願いします。

サブスクライバ側は以下のコマンドを実行しています。

[code]

    mosquitto_sub -d -h broker.emqx.io -t spresense/mqtt
    
[/code]

パブリッシャー側のコードは以下のものを使用しています。

[code]

    #include <LTE.h>
    #include <ArduinoMqttClient.h>
    // APN name
    #define APP_LTE_APN "iijmio.jp" // replace your APN
    /* APN authentication settings
     * Ignore these parameters when setting LTE_NET_AUTHTYPE_NONE.
     */
    #define APP_LTE_USER_NAME "mio@iij"     // replace with your username
    #define APP_LTE_PASSWORD  "iij" // replace with your password
    // APN IP type
    #define APP_LTE_IP_TYPE (LTE_NET_IPTYPE_V4V6) // IP : IPv4v6
    // #define APP_LTE_IP_TYPE (LTE_NET_IPTYPE_V4) // IP : IPv4
    // #define APP_LTE_IP_TYPE (LTE_NET_IPTYPE_V6) // IP : IPv6
    // APN authentication type
    #define APP_LTE_AUTH_TYPE (LTE_NET_AUTHTYPE_CHAP) // Authentication : CHAP
    // #define APP_LTE_AUTH_TYPE (LTE_NET_AUTHTYPE_PAP) // Authentication : PAP
    // #define APP_LTE_AUTH_TYPE (LTE_NET_AUTHTYPE_NONE) // Authentication : NONE
    /* RAT to use
     * Refer to the cellular carriers information
     * to find out which RAT your SIM supports.
     * The RAT set on the modem can be checked with LTEModemVerification::getRAT().
     */
    #define APP_LTE_RAT (LTE_NET_RAT_CATM) // RAT : LTE-M (LTE Cat-M1)
    // #define APP_LTE_RAT (LTE_NET_RAT_NBIOT) // RAT : NB-IoT
    // MQTT broker
    #define BROKER_NAME "broker.emqx.io"   // replace with your broker
    #define BROKER_PORT 1883                   // port 8883 is the default for MQTT over TLS.
                                               // for this client, if required by the server.
    // MQTT topic
    #define MQTT_TOPIC "spresense/mqtt"        // replace with your topic
    // MQTT publish interval settings
    #define PUBLISH_INTERVAL_SEC   1           // MQTT publish interval in sec
    #define MAX_NUMBER_OF_PUBLISH  100          // Maximum number of publish
    LTE lteAccess;
    LTEClient client;
    MqttClient mqttClient(client);
    int numOfPubs = 0;
    unsigned long lastPubSec = 0;
    char broker[] = BROKER_NAME;
    int port = BROKER_PORT;
    char topic[]  = MQTT_TOPIC;
    void doAttach()
    {
      while (true) {
        /* Power on the modem and Enable the radio function. */
        if (lteAccess.begin() != LTE_SEARCHING) {
          Serial.println("Could not transition to LTE_SEARCHING.");
          Serial.println("Please check the status of the LTE board.");
          for (;;) {
            sleep(1);
          }
        }
        /* The connection process to the APN will start.
         * If the synchronous parameter is false,
         * the return value will be returned when the connection process is started.
         */
        if (lteAccess.attach(APP_LTE_RAT,
                             APP_LTE_APN,
                             APP_LTE_USER_NAME,
                             APP_LTE_PASSWORD,
                             APP_LTE_AUTH_TYPE,
                             APP_LTE_IP_TYPE,
                             false) == LTE_CONNECTING) {
          Serial.println("Attempting to connect to network.");
          break;
        }
        /* If the following logs occur frequently, one of the following might be a cause:
         * - APN settings are incorrect
         * - SIM is not inserted correctly
         * - If you have specified LTE_NET_RAT_NBIOT for APP_LTE_RAT,
         *   your LTE board may not support it.
         */
        Serial.println("An error has occurred. Shutdown and retry the network attach preparation process after 1 second.");
        lteAccess.shutdown();
        sleep(1);
      }
    }
    void setup()
    {
      // Open serial communications and wait for port to open
      Serial.begin(115200);
      while (!Serial) {
          ; // wait for serial port to connect. Needed for native USB port only
      }
      Serial.println("Starting .");
      /* Connect LTE network */
      doAttach();
      int result;
      // Wait for the modem to connect to the LTE network.
      Serial.println("Waiting for successful attach.");
      LTEModemStatus modemStatus = lteAccess.getStatus();
      while(LTE_READY != modemStatus) {
        if (LTE_ERROR == modemStatus) {
          /* If the following logs occur frequently, one of the following might be a cause:
           * - Reject from LTE network
           */
          Serial.println("An error has occurred. Shutdown and retry the network attach process after 1 second.");
          lteAccess.shutdown();
          sleep(1);
          doAttach();
        }
        sleep(1);
        modemStatus = lteAccess.getStatus();
      }
      Serial.println("attach succeeded.");
      Serial.print("Attempting to connect to the MQTT broker: ");
      Serial.println(broker);
      if (!mqttClient.connect(broker, port)) {
        Serial.print("MQTT connection failed! Error code = ");
        Serial.println(mqttClient.connectError());
        // do nothing forevermore:
        for (;;)
          sleep(1);
      }
      Serial.println("You're connected to the MQTT broker!");
    }
    void loop()
    {
      String testString = "test" + String(numOfPubs) + "!";
      unsigned long currentTime = lteAccess.getTime();
      if (currentTime >= lastPubSec + PUBLISH_INTERVAL_SEC) {
        // Publish to broker
        Serial.print("Sending message to topic: ");
        Serial.println(topic);
        Serial.print("Publish: ");
        Serial.println(testString);
        // send message, the Print interface can be used to set the message contents
        mqttClient.beginMessage(topic);
        mqttClient.print(testString);
        mqttClient.endMessage();
        lastPubSec = currentTime;
        numOfPubs++;
      }
      if (numOfPubs >= MAX_NUMBER_OF_PUBLISH) {
        Serial.println("Publish end");
        // do nothing forevermore:
        for (;;)
          sleep(1);
      }
    }
    
[/code]


CC BY-SA 4.0
2022-11-22T02:54:50.990
92367
2022-11-25T01:29:15.090
2022-11-22T04:13:26.750
3060
54897
question
spresense mqtt
spresenseとパソコンのLTE通信


こんにちは。

提示されているコードを私のSpresense LTEボードで動作確認してみた結果、問題なく動作するようです。期待通り、Spresense
LTEからPublishされた文字「test00!」がPC側で受信することができました。

実行した際のログがないので正しいことは言えませんが、以下の内容を確認してみると解決するかもしれません。

  * 使用しているSIMカードのAPN情報が正しいかを確認する 
    * 記載されているコードでは以下の情報になっています。 
      * APN名 : iijmio.jp
      * ユーザ名 : mio@iij
      * パスワード : iij
  * SIMカードが正しく挿入されているかを確認する 
    * SIMカードの挿入方法は以下に画像付きで説明があります。  
[2.2.3.1. Spresense
LTE拡張ボードへのSIMカード挿入方法](https://developer.sony.com/develop/spresense/docs/introduction_ja.html#_spresense_lte%E6%8B%A1%E5%BC%B5%E3%83%9C%E3%83%BC%E3%83%89%E3%81%B8%E3%81%AEsim%E3%82%AB%E3%83%BC%E3%83%89%E6%8C%BF%E5%85%A5%E6%96%B9%E6%B3%95)

ご参考になれば幸いです。


CC BY-SA 4.0
2022-11-25T01:29:15.090
92419
2022-11-25T01:29:15.090
32034
92367
answer