chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

再度WioTerminalでWiFi接続

前回Wio TerminalでMQTT Postまでできたはずなのだが、改めてWiFi接続させようとすると、あれこれモジュールが足りないと怒られる。再度、SeeedStudioのWikiを読み返して、どのようにインストールするのが正しいのかを確認

  • Seeed_Arduino_rpcWiFi - search for "seeed rpcwifi"
  • Seeed_Arduino_rpcUnified - search for "seeed rpcunified"
  • Seeed_Arduino_mbedtls - search for "seeed mbedtls"
  • Seeed_Arduino_FS - search for "seeed fs"
  • Seeed_Arduino_SFUD - search for "seeed sfud"

Overview | Seeed Studio Wiki

エラーが発生

.pio/libdeps/seeed_wio_terminal/Seeed Arduino rpcUnified/src/erpc/erpc_threading.h:22:10: fatal error: FreeRTOS.h: No such file or directory
~/lang/platformIO/wioTerminal/wifi_test00$ platformio lib search "header:FreeRTOS.h"
                  *skip*
briscoetech/FreeRTOS_SAMD51
Library • 1.3.0 • Published on Tue Sep  1 05:13:37 2020
FreeRTOS ported for Arduino SAMD51 processors

workaround

briscoetech/FreeRTOS_SAMD51@^1.3.0
.pio/libdeps/seeed_wio_terminal/Seeed Arduino rpcUnified/src/esp/esp_event.h:19:10: fatal error: Seeed_Arduino_FreeRTOS.h: No such file or directory

Tutorial通りにいかないのは、バージョンが更新されている可能性と、Wio Terminalのデモでは、LCDに表示するルーチン込みで作られる場合が多くて、表示を全くしないプログラムにしてしまうと、暗黙的に呼び出されていたヘッダ類が不足するからではないかと推測

正常に動作したWiFi接続するだけの一番短いソース(rpcPing.hは不要だが・・・)

#include <Arduino.h>
#include <rpcWiFi.h>
#include <rpcPing.h>

#define SERIAL_SPEED 115200

const char *SSID = "xxxxxx";
const char *PWD = "xxxxxxxxx";

WiFiClient wioClient;

int wifi_setup(void);

void setup() {
  Serial.begin(SERIAL_SPEED);
  delay(10);

  // put your setup code here, to run once:
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    WiFi.begin(SSID, PWD);
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print("Connecting to ");
        Serial.println(SSID);
        WiFi.begin(SSID, PWD);
        delay(100);      // wait for 100msec
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());


}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("zz..");
  delay(1000);      // wait for 1000msec

}

file: platformio.ini の内容は以下。ポツンとSPIがあるのだけど、SPIのヘッダエラーが出て、検索すると、dependのリストに足したら治るとあったので加えた。根本原因まで調べておらず、場当たり的に対応

[env:seeed_wio_terminal]
platform = atmelsam
board = seeed_wio_terminal
framework = arduino
lib_deps = 
	seeed-studio/Seeed Arduino rpcWiFi@^1.0.6
	seeed-studio/Seeed Arduino FS@^2.1.1
	seeed-studio/Seeed Arduino rpcUnified@^2.1.4
	seeed-studio/Seeed_Arduino_mbedtls@^3.0.1
	seeed-studio/Seeed Arduino SFUD@^2.0.2
	adafruit/Adafruit Zero DMA Library@^1.1.1
	SPI

addition
file: main.cpp

#include <Arduino.h>
#include <rpcWiFi.h>
//#include <rpcPing.h>

#define SERIAL_SPEED 115200

const char *SSID = "upk_priv_24G";
const char *PWD = "1234?5Q63!";

WiFiClient wioClient;

int wifi_setup(void);

void setup() {
  Serial.begin(SERIAL_SPEED);
  delay(10);

  // put your setup code here, to run once:
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    WiFi.begin(SSID, PWD);
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print("Connecting to ");
        Serial.println(SSID);
        WiFi.begin(SSID, PWD);
        delay(800);      // wait for 800msec
    }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());


}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("zz..");
  Serial.println(WiFi.localIP());
  delay(1000);      // wait for 1000msec

}

file: platformio.ini

[env:seeed_wio_terminal]
platform = atmelsam
board = seeed_wio_terminal
framework = arduino
lib_deps = 
	seeed-studio/Seeed Arduino rpcWiFi@^1.0.6
	seeed-studio/Seeed Arduino FS@^2.1.1
    seeed-studio/Seeed_Arduino_mbedtls@^3.0.1
    adafruit/Adafruit Zero DMA Library@^1.1.1
    SPI