M5Stamp-C3をとりあえず使ってみる

電子工作
M5Stamp-C3

スイッチサイエンスさんからM5Stamp-C3を購入したので、早速プログラムを書き込み使ってみました。

購入したのはピンヘッダなどが同梱されたM5Stamp-C3 Mateで、本体、ステッカー、ピンヘッダ(6p、9p)、ピンソケット(6p、9p)、HY2.0-4Pコネクタ(90° Grove互換コネクタ)x2、六角レンチが入っています。
ステッカーには技適のマークが印刷されていますので、本体に貼るか大切に保管しておく必要があります。

binary comment

M5Stamp C3は、Wi-FiおよびBluetooth 5(LE)の機能が利用可能な、IoTエッジデバイス向けのEspressif ESP32-C3 RISC-V MCUを搭載した切手サイズのモジュールです(スイッチサイエンスHPより)。WiFi、Bluetooth® 5.0 long-range(LR)、UARTなどのインターフェイスを持っており、IOピンの数は少ないもののESP32の様に便利に使えると思います。

左がM5Stamp C-3、右がESP32-DevKitC

本体には、MACアドレスのシールが貼られており、これを剥がすと六角ネジが出てきます。付属の六角レンチでネジを外すと、カバーが外せます。

binary comment
binary comment

面白いのは、本体にフルカラーのLEDが実装されているところです。最初に電源を入れたとき青緑色に光り、すごく眩しくてびっくりしました。LEDは2番ピンに接続されているようで、Adafruit_NeoPixelのライブラリを使うと、色々な点灯を楽しめます。(何に使おうか・・・)


プログラムはArduino IDEから書き込みが出来ますが、M5Stamp-C3を認識してもらうため、ボードマネージャーでESP32関係のバージョンアップを行う必要があります。

Arduino IDEで、「ツール」-「ボード」-「ボードマネージャー」を選択します。

ボードマネージャーから「ESP32」で検索をかけて、ESP32 by Espressif Systemsのバージョン2.0.1(または、それ以上)をインストールします。

これで、M5Stamp-C3用に書き込みが出来るようになります。「ESP32C3 Dev Module」を選択します。

ブレッドボードに乗せて、キャラクタLCD(I2C接続)モジュールに時計を表示してみました。

binary comment

接続は、以下のとおりです。

M5Stamp-C3LCD
3.3VVDD
GNDGND
8SDA
9SCL

プログラムソースは以下のとおりです。WiFi接続し、NTPサーバーから時間を取得して、LCDに書いています。不要な、モジュールを呼んでいるかも知れません ^^;;

#include <ST7032.h>
#include <WiFi.h>
#include <time.h>
#include <WiFiClientSecure.h>
#include <WiFiUDP.h>

#define SSID "*********"        // 無線LANアクセスポイントのSSID
#define PASS "*********"        // 無線LANアクセスポイントのパスワード

ST7032 lcd(0x3E);

void setup() {
  
  Serial.begin(9600);

  lcd.begin(8, 2);
  lcd.setContrast(0x20);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Hello   ");
  lcd.setCursor(0, 1);
  lcd.print("   World");

  wifi_connect();
  delay(2000);
  configTime(9 * 3600L, 0, "ntp.nict.jp", "time.google.com", "ntp.jst.mfeed.ad.jp");
  delay(3000);
}

void loop() {
  char DATE[9];
  char TIME[9];
  int i;
  struct tm timeInfo;

  for ( i = 0 ; i < 9 ; i++ ){
    DATE[i] = 0;
    TIME[i] = 0;
  }

  getLocalTime(&timeInfo);
  sprintf(DATE, "%02u/%02u/%02u", timeInfo.tm_year - 100, timeInfo.tm_mon + 1, timeInfo.tm_mday);
  sprintf(TIME, "%02u:%02u:%02u", timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec);
  lcd.setCursor(0, 0);
  lcd.print(DATE);
  lcd.setCursor(0, 1);
  lcd.print(TIME);
}

// WiFi接続
void wifi_connect() {
  int icount;
  bool  FLG;

  icount = 0;
  FLG = true;

  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PASS);
  Serial.print(SSID);
  Serial.print(" ");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
    icount++;
    if ( icount > 20 ) {                     
      ESP.restart();
      break;
    }
  }
  Serial.println(" ");
  Serial.print("Connect Internet. IP Address:");
  Serial.println(WiFi.localIP());
}

ESP32の高機能が切手2枚程度の大きさに収められたモジュールで、色々なセンサなどと組み合わせて面白いものが出来そうです。引き続き色々やってみたいと思いますので、また情報をアップします。

コメント

PAGE TOP