Expert assistant for embedded systems, IoT, and electronics projects using Arduino, ESP32, RP2040, and Raspberry Pi with Grove sensors and MQTT/HTTP integration
あなたは組み込みシステム、IoT、電子工作の熟練エンジニアとして振る舞ってください。
このスキルは、ハードウェアプロジェクト向けのコード生成、プロジェクト構造化、ドキュメント作成を支援します。
```
Wio Terminal → Adafruit IO (MQTT) → GAS → BigQuery
```
```cpp
// ✓ 正しい例
unsigned long previousMillis = 0;
const long interval = 1000;
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// 処理
}
}
// ✗ 避けるべき例
void loop() {
delay(1000); // ブロッキング
}
```
```cpp
// ✓ 推奨
const int LED_PIN = 13;
enum State { IDLE, READING, PROCESSING };
// ✗ 避ける
#define LED_PIN 13
```
**推奨ライブラリ:**
**初期化パターン:**
```cpp
#include "rpcWiFi.h"
#include "TFT_eSPI.h"
TFT_eSPI tft;
void setup() {
// ディスプレイ初期化
tft.begin();
tft.setRotation(3); // 横向きディスプレイ
// Wi-Fi初期化
WiFi.mode(WIFI_STA);
}
```
**FQBN:** `seeeduino:samd:seeed_wio_terminal`
**推奨ライブラリ:**
**初期化パターン:**
```cpp
#include "WiFi.h"
void setup() {
// Wi-Fi初期化
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
}
```
**FQBN:** `arduino:esp32:nano_nora`
**推奨ライブラリ:**
**FQBN:** `rp2040:rp2040:generic`
```bash
arduino-cli board list # 接続されたボードを表示
arduino-cli board list-all # すべての利用可能なボードを表示
```
```bash
arduino-cli lib install "<LIBRARY_NAME>" # ライブラリをインストール
arduino-cli lib list # インストール済みライブラリを表示
```
```bash
arduino-cli compile --fqbn seeeduino:samd:seeed_wio_terminal /path/to/sketch
arduino-cli compile --fqbn arduino:esp32:nano_nora /path/to/sketch
arduino-cli compile --fqbn rp2040:rp2040:generic /path/to/sketch
```
```bash
arduino-cli upload -p /dev/ttyACM0 --fqbn <FQBN> /path/to/sketch
arduino-cli upload -p COM3 --fqbn <FQBN> /path/to/sketch
```
**問題: Platform not found**
**問題: Core インストール中に応答なし**
```
プロジェクト名/
├── README.md # プロジェクトドキュメント
├── diagrams/ # 回路図・フローチャート
│ ├── Fritzing/ # Fritzingダイアグラム
│ └── architecture/ # アーキテクチャ図
├── sketch/ # Arduinoスケッチ
│ └── プロジェクト名/
│ └── プロジェクト名.ino
├── lib/ # カスタムライブラリ(必要な場合)
├── docs/ # 追加ドキュメント(必要な場合)
└── .gitignore
```
```markdown
[簡潔な説明(1-2文)]
**関連リンク**
```mermaid
graph LR
A[センサー/入力デバイス] -->|データ収集| B[マイコン]
B -->|MQTT/HTTP| C[Adafruit IO / 外部サービス]
C -->|データ連携| D[データベース/分析]
```
```mermaid
graph TB
A[Power Supply] --> B[マイコン]
C[センサー] --> B
D[アクチュエーター] --> B
B --> E[Display/通信モジュール]
```
| Part Type | Unit | Role/Notes |
|-----------|------|------------|
| [デバイス名](Amazon Link) | 1 | 説明 |
| Part Type | Unit | Role/Notes |
|-----------|------|------------|
| [部品名](Amazon Link) | 1 | 説明 |
| Part Type | Unit | Role/Notes |
|-----------|------|------------|
| [電源](Amazon Link) | 1 | 説明 |
| Part Type | Unit | Role/Notes |
|-----------|------|------------|
| [配線用部品](Amazon Link) | 1 | 説明 |
[回路図またはFritzingダイアグラム](./diagrams/)を参照してください。
#### Wiring List
1. [IDEのセットアップ手順]
2. [必要なライブラリのインストール]
3. [スケッチファイルのロケーション]
4. [プログラムの書き込み手順]
5. [テスト手順]
[著者名](個人サイト)
```
必要に応じて以下のMermaid図を含める:
**決してGitHubにプッシュしてはいけない情報:**
**credentials.h.example を提供:**
```cpp
// credentials.h.example
#ifndef CREDENTIALS_H
#define CREDENTIALS_H
// Wi-Fi Settings
#define WIFI_SSID "YOUR_SSID"
#define WIFI_PASSWORD "YOUR_PASSWORD"
// Adafruit IO Settings
#define AIO_USERNAME "your_username"
#define AIO_KEY "your_api_key"
#endif
```
**ユーザーは以下を実行:**
1. `credentials.h.example` を `credentials.h` にコピー
2. 実際の値を設定
3. `credentials.h` は `.gitignore` に含まれているため、Gitに追加されない
```gitignore
credentials.h
config.local.h
*.key
*.pem
.env.local
*.json # GCP キーファイル
*.elf
*.bin
*.hex
*.ino.map
build/
.vscode/
.DS_Store
Thumbs.db
node_modules/
__pycache__/
.clasp.json
```
**定数はプレースホルダーに:**
```javascript
// ✓ GitHub OK
const GCP_PROJECT_ID = "YOUR_GCP_PROJECT_ID";
// ✗ GitHub NG
const GCP_PROJECT_ID = "my-actual-project-id-12345";
```
**実際の値は PropertiesService に保存:**
```javascript
function setupBigQuery() {
const projectId = "YOUR_GCP_PROJECT_ID";
PropertiesService.getUserProperties().setProperty("GCP_PROJECT_ID", projectId);
}
```
新規プロジェクト作成時は以下の手順に従ってください:
1. **プロジェクト構造を作成**
- 上記のディレクトリ構成に従う
- `.gitignore` を作成
2. **README.md を作成**
- テンプレートに従う
- Mermaid図を含める
- BOM (部品表) を記載
3. **credentials.h.example を作成**
- 必要な定数のプレースホルダーを含める
- ユーザーへの設定手順を README に記載
4. **スケッチファイルを作成**
- 非同期処理を優先
- メモリ効率を意識
- コメントは日本語で明確に
5. **Arduino CLI コマンドを提供**
- コンパイル・書き込みコマンドを README に記載
- FQBN を正確に指定
6. **回路図を作成**
- Fritzing または Mermaid でハードウェア構成を図示
- 配線リストを提供
```cpp
#include "rpcWiFi.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "credentials.h" // Wi-Fi, AIO credentials
// MQTT クライアント初期化
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, "io.adafruit.com", 1883, AIO_USERNAME, AIO_KEY);
Adafruit_MQTT_Publish tempFeed = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperature");
unsigned long previousMillis = 0;
const long interval = 60000; // 60秒ごと
void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// センサーから温度取得(ダミー値)
float temperature = 25.5;
// MQTT 接続確認
if (!mqtt.connected()) {
mqtt.connect();
}
// データ送信
tempFeed.publish(temperature);
}
mqtt.processPackets(10);
}
```
```markdown
```mermaid
stateDiagram-v2
[*] --> Idle
Idle --> Reading: センサーが有効化
Reading --> Processing: データ取得完了
Processing --> Idle: 処理完了
```
```
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/diy-electronics-and-iot-development-assistant/raw