mcpField
E
embedded-c

embedded-c

github.com/alphaonedev開発142 回インストール
リポジトリ

embedded-c について

マイクロコントローラーやIoTデバイスを対象とする、組み込みシステム開発向けのC/C++スキルです。ハードウェア制御、通信プロトコル、制約のある環境でのメモリと消費電力の最適化を扱います。

主な機能

  1. 01GPIO、タイマー、割り込みコードの生成
  2. 02メモリとフラッシュ使用量の最適化
  3. 03I2C、SPI、UART通信への対応
  4. 04ファームウェアとハードウェア制御ロジックの開発
  5. 05低レベルコードの実践指針

活用シーン

  1. 01マイクロコントローラー向けセンサー読み取りコードの作成
  2. 02ボタンやLEDなどのハードウェア制御の実装
  3. 03IoTデバイスのリソース使用量の最適化
  4. 04リアルタイムシステムや通信コードのデバッグ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill embedded-c

インストール後、Claude Code で/embedded-cを入力して読み込まれたか確認します。

詳細

embedded-c

目的

このスキルは、マイクロコントローラー(Arduino、STM32 など)や IoT デバイスを中心に、組み込みシステム向けの C/C++ プログラミングに関する専門知識を提供します。メモリ使用量の削減や電力効率など、リソースの最適化に重点を置いています。

使用する場面

ファームウェアの開発、ハードウェアとのやり取り(センサー、アクチュエーターなど)、または制約のある環境向けのコードの最適化に使用します。IoT のプロトタイプを構築する場合、リアルタイムシステムをデバッグする場合、または無線接続のために ESP8266 などのハードウェアと統合する場合に適用してください。

主な機能

  • GPIO 制御、タイマー、割り込みのための C/C++ コードを生成します。たとえば、マイクロコントローラーで PWM 信号を設定します。
  • スタック使用量の削減やフラッシュメモリの使用量の最小化など、リソースの制約に合わせてコードを最適化します。
  • 組み込み環境で I2C、SPI、UART などの通信プロトコルを扱います。
  • ハードウェアレジスターでの volatile キーワードの使用など、低レベル環境でエラーのないコードを書くためのベストプラクティスを提供します。

使用パターン

具体的で実行可能なリクエストを AI にプロンプトとして入力します。「AVR マイクロコントローラーで LM35 センサーから温度を読み取る C 関数を書いてください。」のように、ハードウェアの詳細を含めるようにプロンプトを構成します。たとえば、「ESP32 向けに、WiFi に接続して HTTP リクエストを送信するコードを生成してください。」と指定します。「コードが 1KB 未満の RAM を使用するようにしてください。」のように、最適化の目標を必ず指定します。プロンプトを連続して使用し、まずコードを生成してから、バグを修正するように改善します。

一般的なコマンド/API

GCC を使用してコンパイルします。最適化には -Os、AVR ターゲットには -mmcu=atmega328p などのフラグを指定します。API の例:

  • ヘッダーをインクルードします:AVR マイクロコントローラーの場合は #include <avr/io.h>。
  • LED を点滅させるコードスニペット:
    DDRB |= (1 << PB5);  // Set PB5 as output
    while(1) { PORTB ^= (1 << PB5); _delay_ms(1000); }
    
  • IoT では ESP-IDF API を使用します:Wi-Fi を初期化するには esp_wifi_init(&config); を使用します。
  • 設定形式:IoT デバイスの設定には JSON を使用します。たとえば、{"ssid": "myNetwork", "password": "$WIFI_PASSWORD"} を ESP32 コードで nvs_set_str() を使って読み込みます。
  • API キー(クラウドサービス用など)が必要な場合は、$AWS_IOT_KEY などの環境変数を設定し、コード内で getenv("AWS_IOT_KEY") を使ってアクセスします。

統合に関する注意事項

環境を設定して、このスキルを開発ツールと統合します。GCC や、フラッシュ書き込み用の avrdude などのツールをインストールします。IoT では PlatformIO または Arduino IDE を使用します。Azure との統合では、export $AZURE_IOT_HUB_KEY などの環境変数を使ってサービスの認証を行います。#pragma once ガードまたは CMake を使ってライブラリとコードをリンクし、クロスコンパイルを行います。ハードウェアにデプロイする前に、ARM 用 QEMU などのエミュレーターでテストします。「このコードを STM32F4 向けに調整してください。」のように、プロンプトでボードの種類を指定して互換性を確保します。

エラー処理

組み込みコードでは常に戻り値を確認します。たとえば、if (i2c_read() != 0) { handle_error(); } のようにします。デバッグにはアサーションを使用します:#include <assert.h> および assert(pin >= 0);。C++ では、メインループ内で例外を捕捉します:try { setup_hardware(); } catch (...) { reset_device(); }。AVR で wdt_enable(WDTO_8S); を使用するなど、ウォッチドッグを実装してハードウェアの障害に対処します。printf("Error: Sensor timeout\n"); で UART 経由のエラーログを記録し、有限状態機械を使って障害から復旧します。

具体的な使用例

  1. 例:Arduino Uno 用に、ボタンを読み取って LED を切り替えるコードを書きます。プロンプト:「Arduino Uno 用の C++ コードを生成してください。ピン 2 のデジタル入力を読み取り、ピン 13 の LED を切り替えます。」結果:pinMode(2, INPUT); を使い、ループ内に if (digitalRead(2) == HIGH) { digitalWrite(13, !digitalRead(13)); delay(50); } を記述します。
  2. 例:ESP32 用の IoT コードを最適化し、センサーデータをサーバーに送信します。プロンプト:「ESP32 向けに、DHT11 センサーを読み取り、WiFi 経由で http://example.com にデータを POST する、RAM 使用量が 10KB 未満の効率的な C コードを書いてください。」結果:dht.h をインクルードし、esp_http_client_init() を使用します。スニペット:float temp = dht_readTemperature(); http_post_data(temp);

グラフの関係

  • 関連クラスター:iot
  • 共有タグ:iot、embedded
  • 関連スキル:共通タグに基づき、「wireless-protocols」や「sensor-integration」など、iot クラスター内のほかのスキルと関連する可能性があります。

コメント