ATOM S3 Lite を購入しました ~ ATOM Liteとの違い

2024年1月17日

ATOMシリーズにも、ESP32-S3版のATOM S3ATOM S3 Liteが登場しました。ATOM S3は液晶を搭載した製品ですが、今回は、液晶が付かないATOM S3 Liteの方を購入しました。ATOM S3 Liteは実質的にATOM Liteの後継製品と思われます。

ATOM S3 Liteは、白色の筐体になりました。それ以外、見た目は変わらないですね。ほぼ、同サイズです。

1. ATOM S3 Lite と ATOM Liteの違い

ATOM LiteATOM S3 Liteの違いは、搭載されるマイクロコントローラです。前者はESP32-PICOで、後者はESP32-S3です。その他、メモリの量などに違いはありますが、使用感で変わってくる部分はないと思います。

ただし、マイクロコントローラの変更により、GPIOの番号が変わっています。そのため、ATOM Liteで動かしていたプログラムを変更する必要があります。

GROVE

ATOM Lite GND 5V G26 G32
ATOM S3 Lite GND 5V G2 G1

PIN

ATOM Lite GND 5V G25(SCL) G21(SDA)
ATOM S3 Lite GND 5V G38(SDA) G39(SCL)

I2Cを使う時のピンが変わってます。ATOM S3 Liteは、SDAとSCLの配置が反対になってます。そのため、最近よく使っている0.96インチOLEDが直刺しできなくなってしまう残念な仕様です。

ATOM Lite G33 G23 G19 G22 3V
ATOM S3 Lite G8 G7 G6 G5 3V

2. Arduino IDEのセットアップ

Arduino IDEセットアップについては、専用の記事を用意しました。そちらを参考にセットアップしてください。

FastLEDライブラリのインストール

本体付属のLEDは良く使いますから、FastLED」ライブラリをインストールします。そのFastLED用のライブラリですが、数種類確認できます。一般的なのは、上記のライブラリです。

3. 気温測定プログラムを動作させてみる

以前、ATOM Liteで紹介した気温測定プログラムを、ATOM S3 Liteで動作させてみます。そのままでも動くのかなと思っていましたが、思ったよりも変更点がありました。

#include <M5AtomS3.h>
#include <Wire.h>
#include "Adafruit_Sensor.h"
#include <Adafruit_BME280.h>
#include <math.h>

Adafruit_BME280 bme;

#include "Ambient.h"

// Wi-Fi環境
const char* ssid = "XXXXXXXXXX";
const char* password = "XXXXXXXXXX";

WiFiClient client;

Ambient ambient;
unsigned int channelId = 7XXXX ; // AmbientのチャネルID
const char* writeKey = "0dXXXXXXXXXXXXXX"; // ライトキー

void Wifi_connect() {
  WiFi.begin(ssid, password);

  while(WiFi.status() != WL_CONNECTED){
    Serial.print('.');
    delay(500);
  }
  Serial.println("\nWi-Fi connected");
  AtomS3.dis.drawpix(0x0000ff);
  AtomS3.update();

}

void setup() {
  // put your setup code here, to run once:
  AtomS3.begin(true);
  AtomS3.dis.setBrightness(100);

  Wire.begin(1,2); // SCL / SDA
  
  AtomS3.dis.drawpix(0x00ff00);
  AtomS3.update();

  if (!bme.begin(0x76)){  
      Serial.println("Could not find a valid BME280 sensor, check wiring!");
      while (1);
  }

  // Wi-Fiの接続
  Wifi_connect() ;

  ambient.begin(channelId, writeKey, &client);

}

void loop() {
  // put your main code here, to run repeatedly:
  float temp;
  float pressure;
  float humid;

  if (WiFi.status() != WL_CONNECTED) {
    // 接続が切れた
    AtomS3.dis.drawpix(0x00ff00);
    AtomS3.update();

    WiFi.disconnect();
    WiFi.reconnect();
 
    while(WiFi.status() != WL_CONNECTED){
      Serial.print('R');
      delay(500);
    }
    Serial.println("\nWi-Fi connected");
    AtomS3.dis.drawpix(0x0000ff);

    AtomS3.update();
  }

  temp = (float)bme.readTemperature();

  Serial.print("\nTemp = ");
  Serial.print(temp);

  pressure = (float)bme.readPressure() / 100;
  humid = (float)bme.readHumidity() ;

  // Ambient
  ambient.set(1, String(temp).c_str());
  ambient.set(2, String(pressure).c_str());
  ambient.set(3, String(humid).c_str());
  ambient.send();

  delay(60000); // 1分毎

}

インクルードライブラリが、「M5AtomS3.h」になりました。

また、ATOM Liteで使っていた「M5」インスタンスが、「AtomS3」に変更されています。そして、drawpixの引数が1つの設定になりました。drawpixの後にupdateしないと変更が有効になりませんでした。
※show関数を使う例もありました。

さらに、ビルドしてアップロードする時ですが、ATOM S3 Lite内蔵の緑色のLEDが点灯するまでリセットボタンを長押しし、離すと書き込み待機状態になります。この操作はATOM Liteの時にはしませんでしたが(必要だった?)、ATOM S3 Liteでは必要なようです。

ビルドすると、FastLED関連の警告が出てきます。これはSPI接続絡みの警告のようで、無視しても良いようです。プログラムが動作すると、前と同じようにセンサーから値を取得し、Ambientにデータを送信できました。

このように変更はありますが、基本的な組み方に違いはありません。

4. ATOM S3 Liteを使っていきます

先ほどの気温測定プログラム

私はM5StickCATOM Lite、そしてATOM S3 LiteM5Stackシリーズを購入してきました。まだ、本家のM5Stackを購入していませんが、ATOM シリーズがお気に入りです。それは、使い勝手がとても良いからです。GPIO/Grove、ボタン、Wi-Fiなど、欲しいものがコンパクトに収まっていて、電源も小さくて済み、丁度良いスペックなところが気に入っています。

これから、いろいろな電子工作に使って行こうと思います。