スイッチサイエンスさんからM5Stamp-C3を購入したので、早速プログラムを書き込み使ってみました。
購入したのはピンヘッダなどが同梱されたM5Stamp-C3 Mateで、本体、ステッカー、ピンヘッダ(6p、9p)、ピンソケット(6p、9p)、HY2.0-4Pコネクタ(90° Grove互換コネクタ)x2、六角レンチが入っています。
ステッカーには技適のマークが印刷されていますので、本体に貼るか大切に保管しておく必要があります。
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の様に便利に使えると思います。
本体には、MACアドレスのシールが貼られており、これを剥がすと六角ネジが出てきます。付属の六角レンチでネジを外すと、カバーが外せます。
面白いのは、本体にフルカラーの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接続)モジュールに時計を表示してみました。
接続は、以下のとおりです。
M5Stamp-C3 | LCD | |
3.3V | ↔ | VDD |
GND | ↔ | GND |
8 | ↔ | SDA |
9 | ↔ | SCL |
プログラムソースは以下のとおりです。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枚程度の大きさに収められたモジュールで、色々なセンサなどと組み合わせて面白いものが出来そうです。引き続き色々やってみたいと思いますので、また情報をアップします。
コメント