あっきーの教材工房 あっきーの教材工房
サイトバナー

たっち&びーぷとATOM LiteでLチカ💡

公開日: 2026/01/04

iPad/iPhoneアプリ『たっち&びーぷ Connect』のBLEコネクトセンターを使ってみよう!のシリーズ、ATOM Lite編です。
今回の目標は「iPadの画面をタッチして無線接続したATOM LiteのLEDが点灯させる」です。

ATOM Liteと1円玉
超小型マイコンボード ATOM Lite

検証環境

動作検証の環境は以下の通り。

  • PC: Windowsのパソコン(Windows11)
  • 開発用ソフト: Arduino IDE 2.3.7
  • BLEデバイス: ATOM Lite
m5-docs
The reference docs for M5Stack products. Quick start, get the detailed information or instructions such as IDE,UIFLOW,Arduino. The tutorials for M5Burner, Firmware, Burning, programming. ESP32,M5StickC,StickV, StickT,M5ATOM.
favicon docs.m5stack.com
m5-docs

作業の全体像

Arduinoが初めて・・・という方にはややハードルが高いかもしれません。
概要としては以下のような流れです。

  1. Arduino IDEのインストール
  2. ボードマネージャーのインストール
  3. ライブラリのインストール
  4. プログラムの編集
  5. デバイスを接続してプログラムを流し込む

Arduino IDEのインストール

以下のページからインストールしてください。

https://www.arduino.cc/en/software/
<iframe src="https://www.googletagmanager.com/ns.h...
favicon www.arduino.cc
https://www.arduino.cc/en/software/

ボードマネージャーのインストール

Atom Liteの公式ドキュメントに沿って作業を進めます。
以下のページの、「2.開発ボードの選択」まで行なってください。

m5-docs
The reference docs for M5Stack products. Quick start, get the detailed information or instructions such as IDE,UIFLOW,Arduino. The tutorials for M5Burner, Firmware, Burning, programming. ESP32,M5StickC,StickV, StickT,M5ATOM.
favicon docs.m5stack.com
m5-docs

M5StackのボードマネージャーをインストールできればOKです。

ライブラリのインスール

今回のプログラムでは3つのライブラリが必要となります。

  • M5Atom by M5Stack
  • FastLED by Daniel Garcia
  • NimBLE-Arduino byh2zero

Arduino環境の場合、FastLEDはM5Atomと一緒にインストールされます。
そのため、作業が必要なのは2つだけ。

まずはM5Atom。

M5Atomのインストール
m5atom で検索

インストールのボタンをクリックしたら、次に出てくる画面で「全てインストール」をクリックしてください。
これで上述の2番目、FastLEDも一緒にインストールされるはずです。

次にNimBLE-Arduino。

NimBLE-Arduinoのインストール
nimble で検索

これでライブラリのインストールは完了です。

プログラムの編集

以下、サンプルのプログラムです。

#include <M5Atom.h>
#include <NimBLEDevice.h>

// 説明を簡単にするため、固定 UUID を使用しています。
// 実際のアプリケーションでは、独自に生成した UUID を使用してください。
#define SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CHARACTERISTIC_UUID "12345678-1234-5678-1234-56789abcdef1"

bool isConnected = false;

class BleServerCallbacks : public NimBLEServerCallbacks
{
  void onConnect(NimBLEServer *pServer, NimBLEConnInfo &connInfo)
  {
    isConnected = true;
    Serial.printf("Client connected: %s\n", connInfo.getAddress().toString().c_str());
    M5.dis.drawpix(0, CRGB::Blue); // 接続時に青色に点灯
  }

  void onDisconnect(NimBLEServer *pServer, NimBLEConnInfo &connInfo, int reason)
  {
    isConnected = false;
    Serial.println("Client disconnected, restarting advertising");
    NimBLEDevice::getAdvertising()->start();
  }
};

class LEDCallback : public NimBLECharacteristicCallbacks
{
  void onWrite(NimBLECharacteristic *pChar, NimBLEConnInfo &connInfo) override
  {
    std::string value = pChar->getValue();
    if (value.length() > 0)
    {
      uint8_t cmd = value[0];
      Serial.printf("Received: %d\n", cmd);

    // ここで指定したコマンドをアプリ『たっち&びーぷ Connect』側で指定(Hexモード)
      if (cmd == 0x01) // 01というコマンドを受信した場合
      {
        M5.dis.drawpix(0, CRGB::Red); // 赤く点灯
      }
      else // その他のコマンドを受信した場合
      {
        M5.dis.clear(); // 消灯
      }
    }
  }
};

void setup()
{
  Serial.begin(115200);
  M5.begin(true, false, true);
  M5.dis.clear();

// ここでデバイス名を指定します。任意です。
// アプリ『たっち&びーぷ Connect』側からはこの名称で検索できます。
  NimBLEDevice::init("AtomLite-LED");

  NimBLEServer *pServer = NimBLEDevice::createServer();
  pServer->setCallbacks(new BleServerCallbacks());

  NimBLEService *pService = pServer->createService(SERVICE_UUID);

  NimBLECharacteristic *pCharacteristic = pService->createCharacteristic(
      CHARACTERISTIC_UUID,
      NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::WRITE_NR);
  pCharacteristic->setCallbacks(new LEDCallback());

  pService->start();
  NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->start();

  Serial.println("Advertising started");
}

void loop()
{
  if (!isConnected)
  {
    // 接続待機中は緑点滅
    uint32_t now = millis();
    if (now % 1000 < 500)
    {
      M5.dis.drawpix(0, CRGB::Green);
    }
    else
    {
      M5.dis.clear();
    }
  }
  M5.update();
}

詳しくはコード内のコメントをご確認ください。

  • UUIDやデバイス名は任意のものに変えてください。趣味・実験用途でしたらこのままでも差し支えないと思います。
  • 途中の if (cmd == 0x01) の部分が大事です。「0x」の後の数字がアプリ側から送信されるコマンドとなります。
  • 詳しく知りたい方は生成AIに聞いてください!

ここまでできたら、Arduino IDEの画面左上のチェックマークのボタンを押して、「検証」してみましょう。

デバイスを接続してプログラムを流し込む

デバイス(ATOM Lite)をパソコンをUSBケーブルで接続し、プログラムを送ります。

ポートを選択してアップロード、という流れです。

困った時は公式ページの情報を参考にしましょう。
USBドライバのことなどが書かれていますが、私の環境ではこれといった特別な操作は必要なく、接続したらすぐにアップロードできました。

m5-docs
The reference docs for M5Stack products. Quick start, get the detailed information or instructions such as IDE,UIFLOW,Arduino. The tutorials for M5Burner, Firmware, Burning, programming. ESP32,M5StickC,StickV, StickT,M5ATOM.
favicon docs.m5stack.com
m5-docs

たっち&びーぷ Connectと接続して動作確認

ここからは別記事たっち&びーぷとmicro:bitでLチカ💡と同じ流れです。

周辺のデバイスのスキャンする

『たっち&びーぷ Connect』を開き、[Connect]セクションの外部デバイス設定を開きます。

[その他のBLEデバイスに接続] - [周辺のデバイスを探す] と操作していくと、近くにあるBLEデバイスの一覧が表示されます。

AtomLite-LED という名称(Arduinoのプログラム内で指定した名称)のデバイスを探してください。

接続してサービス/キャラクタリスティックを選択する

デバイス名をタップして接続が成功すると、次の画面に遷移します。

Arduinoのプログラム内で指定した SERVICE_UUID と CHARACTERISTIC_UUID が記されているはず。
[Select]ボタンをタップしてください。

たっち&びーぷでの表示
Arduinoでプログラムした名称が表示される

送信するコマンドを設定する

ATOM Liteに送信するコマンドを編集します。
設定内容は以下の通りです。

Aコマンド

// Hexモード
01
// 1 でもOK
// Arduinoのプログラムで指定したコマンド

Bコマンド

// Hexモード
00
// 今回は01以外ならなんでもOK

TextからHexに切り替えるのをお忘れなく!

コマンド設定画面
コマンド設定画面
iPadに合わせてATOM LiteのLEDが点いたり消えたりします
iPadに合わせてATOM LiteのLEDが点いたり消えたりします

おまけ

Windowsで動作確認しましたが、Macでも大丈夫です!

私は

  • Mac
  • VSCode + PlatformIO(Arduino IDEの代わり)

という環境を使っています。

PlatformIOの方がビルド時間が短いのが嬉しいですね。
Web関係の開発に使っているVSCodeを使えるというのもポイントとして大きいです。

ただ、Arduinoに比べるとVSCodeそのものの知識が必要だったりするので、初心者にはお勧めできません。
Arduino環境では気にしなくてよかったFastLEDのライブラリは手動で追加する必要があるなど、細かなトラップがあります。
自力で解決できるよ〜という方は既に使っているかもしれませんが、試したことがなければ是非。
ビルド時間はけっこう差があると思います。


たっち&びーぷ Connect | あっきーの教材工房
画面タッチで音を鳴らせるアプリです。タッチ以外にも様々な入力方法に対応しています。
favicon あっきーの教材工房
たっち&びーぷ Connect | あっきーの教材工房