最近発売されたコインサイズの小型arduino互換機 Seeeduino XIAO でLチカやLCD表示などを試してみました。
Seeeduino XIAO
先月に発売されました。秋月やSwitchScienceで買えます。
公式doc
https://wiki.seeedstudio.com/Seeeduino-XIAO/
動画にありますが、ウェアラブルにも良さそう。
シールが白紙を含めて4種類添付されています。薄緑色を貼ってみました。
Arduino IDEの設定
[環境設定]-[設定]-[追加のボードマネージャのURL:] に以下を追加。
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
[ボードマネージャ]から Seeed SAND Boards by Seeed Studio (現時点で v1.7.2)をインストールして
ボードで “Seeeduino XIAO” を選択すればOK。
基本的にArduinoのコードが動く様です。
Lチカ
Blinkサンプルはそのまま動作しました。オンボードLEDがUSBコネクタ近くにあります。
サンプルに外部LEDをpin1に追加してLチカしてみました。
#define LED_1 1
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(LED_1, OUTPUT);
}
void loop() {
// LED Off
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED_1, LOW);
delay(500);
// LED On
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(LED_1, HIGH);
delay(100);
}
調光Lチカ
analogWrite()を使うとPWM出力によるLEDの調光ができます。pin8にトランジスタ 2SC2120 を接続してLEDをスイッチングしてみました。
Seeeduino XIAO でゆるく調光Lチカ
小さくて良いね。#seeeduino pic.twitter.com/RcufK1jGIv— 山添 知久(zoe)/IoT (@zoe6120) May 5, 2020
#define LED_2 8
void setup() {
pinMode(LED_2, OUTPUT);
}
void loop() {
int i=0;
while (i <= 255){
analogWrite(LED_2, i);
delay(20);
i += 5;
}
i=255;
while (i >= 0){
analogWrite(LED_2, i);
delay(20);
i -= 5;
}
analogWrite(LED_2, 0);
delay(500);
}
I2CでLCD接続
手元にあるこちらのLCD AQM1602 を接続しました。Seeeduino XIAO のI2Cは SDA:A4, SCL:A5 です。
I2C接続小型キャラクタLCDモジュール(16X2行・3.3V/5V)ピッチ変換キット
データシートに書かれているあるarduino用サンプルコードがそのまま動作します。
#include <Wire.h>
#define LCD_ADRS 0x3E
char moji[] ="AQM1602XA-RN-GBW";
void setup() {
Wire.begin();
init_LCD();
}
void loop() {
for(int i=0; i<16; i++) {
writeData(moji[i]);
}
writeCommand(0x40+0x80); // 2LINE TOP
for(int i=0; i<16; i++) {
writeData(i+0xb1);
}
delay(1000);
writeCommand(0x01); // Clear Display
delay(1000);
}
void writeData(byte t_data) {
Wire.beginTransmission(LCD_ADRS);
Wire.write(0x40);
Wire.write(t_data);
Wire.endTransmission();
delay(1);
}
void writeCommand(byte t_command) {
Wire.beginTransmission(LCD_ADRS);
Wire.write(0x00);
Wire.write(t_command);
Wire.endTransmission();
delay(10);
}
void init_LCD() {
delay(100);
writeCommand(0x38);
delay(20);
writeCommand(0x39);
delay(20);
writeCommand(0x14);
delay(20);
writeCommand(0x73);
delay(20);
writeCommand(0x56);
delay(20);
writeCommand(0x6C);
delay(20);
writeCommand(0x38);
delay(20);
writeCommand(0x01);
delay(20);
writeCommand(0x0C);
delay(20);
}
Duty可変の調光とLCD表示
pin1に可変抵抗を接続してanalogRead()でLED調光のDutyとしてみました。DutyをLCDへ表示しています。
Duty 0-49% 可変調光。ついでにI2CでLCD表示 #seeeduino pic.twitter.com/SwektgtGc9
— 山添 知久(zoe)/IoT (@zoe6120) May 5, 2020
Duty 10%
オシロの測定値で 周波数: 752Hz Duty: 13%
Duty 25%
Duty 49%
まとめ
WiFiが必要ならばESP32、そうでない用途ならばXIAOで十分と思いました。Serial UART出力を使ってラズパイに出力してもよさそうです。
何より小さいので組み込んだりウェアラブルにも色々用途がありそうです。