ATOM S3 Lite を購入しました ~ ATOM Liteとの違い
ATOMシリーズにも、ESP32-S3版のATOM S3とATOM S3 Liteが登場しました。ATOM S3は液晶を搭載した製品ですが、今回は、液晶が付かないATOM S3 Liteの方を購入しました。ATOM S3 Liteは実質的にATOM Liteの後継製品と思われます。
ATOM S3 Liteは、白色の筐体になりました。それ以外、見た目は変わらないですね。ほぼ、同サイズです。
1. ATOM S3 Lite と ATOM Liteの違い
ATOM LiteとATOM 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を使っていきます
私はM5StickCとATOM Lite、そしてATOM S3 LiteとM5Stackシリーズを購入してきました。まだ、本家のM5Stackを購入していませんが、ATOM シリーズがお気に入りです。それは、使い勝手がとても良いからです。GPIO/Grove、ボタン、Wi-Fiなど、欲しいものがコンパクトに収まっていて、電源も小さくて済み、丁度良いスペックなところが気に入っています。
これから、いろいろな電子工作に使って行こうと思います。