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

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

公開日: 2026/01/04 更新日: 2026/04/08
たっち&びーぷとAtom LiteでLチカ💡

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

作業の全体像

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

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

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

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 を使用しています。
// 実際のアプリケーションでは、独自に生成した UUID を使用してください。
// Webアプリでも生成できます⬇
// https://aki-ict.com/app/ble-uuid-generator/
const char* service_uuid = "00000001-0123-4567-1234-56789abcdef0";
const char* characteristic_uuid = "00000002-0123-4567-1234-56789abcdef0";

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

bool isConnected = false;

class ServerCallbacks : 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();

  NimBLEDevice::init(deice_name);

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

  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(); NimBLE-Arduinoのライブラリv4.0以降ではこの行は不要
  NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(service_uuid);
  pAdvertising->enableScanResponse(true);
  pAdvertising->setName(deice_name);
  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

たっち&びーぷ 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 | あっきーの教材工房