工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

GSM接続対応ポータブル投票システム「Mobile Vote Box」

必要な部品と材料

部品数量備考
Arduino UNO1
Adafruit FONA mini GSMブレークアウト1SIMComモジュール搭載
フルサイズブレッドボード1
タクトスイッチ (カラフル)2投票ボタン用 (選択肢A/B)
LED3接続表示・投票確認用

使用サービス・アプリ

プロジェクト背景

「匿名・ランダムな群衆に質問し、ピアプレッシャーなしで本音を集められないか?」という着想から生まれたのが「Mobile Vote Box」です。電池駆動・セルラー通信でどこでも置くだけ運用可能。部品代約$50 (AliExpress調達なら$6程度)。

初回実験では「ピザはシカゴ風かニューヨーク風か?」という問いを、シカゴとラスベガスの随所に設置して回収しました。

データフロー全体像

  1. 投票ボタン押下 → ArduinoがHologram Data Routerへトピック「vote」でデータ送信 (例: "chicago" / "newYork")
  2. Hologram Data RouterがJSONに整形し、IFTTT WebhookへPOST
  3. IFTTTがGoogleスプレッドシートに行追加 (タイムスタンプ付き)

各レイヤーの役割: Hologram Store (デバイス通信抽象化) → Router (データ変換・マルチ連携) → IFTTT (クラウド連携抽象化) → Sheets (蓄積・可視化)

セットアップ手順

1. IFTTT Applet作成

  1. IFTTTで新規Applet → Trigger: Webhooks「Receive a web request」、イベント名「vote」
  2. Action: Google Drive「Add row to spreadsheet」
  3. スプレッドシート名・フォルダ・列フォーマット設定 (Value1=質問, Value2=投票内容)
  4. Webhookキーをコピー (https://ifttt.com/services/maker_webhooks/settings のURL末尾)

2. Hologram設定

  1. Hologram.ioでSIMアクティベート → デバイス作成 (例: "Vote Btn #1")
  2. Routesで新規ルート: IN トピック「vote」、OUT「IFTTT Maker Webhook」
  3. Webhookキー貼付け、Event「vote」、Data: {"value1": "Pizza: Chicago or New York Style?", "value2": "<>"}

3. 動作テスト

  1. Hologramコンソールのデバイス→Messaging→「Simulate from Device」
  2. トピック「vote」にデータ「chicago」送信
  3. ルート成功表示 → Googleスプレッドシートに行追加確認

4. ハードウェア組み立て

サンプルコード

#include 

#define RX_PIN 2       // FONA RX ← Arduino TX
#define TX_PIN 3       // FONA TX → Arduino RX
#define RESET_PIN 4    // FONA RESET
#define HOLO_KEY "########"  // ここにDevice Keyを設定

#define CONNECT_LED 12
#define VOTE1_BTN_PIN 6
#define VOTE1_LED_PIN 7
#define VOTE2_BTN_PIN 9
#define VOTE2_LED_PIN 10

HologramSIMCOM Hologram(TX_PIN, RX_PIN, RESET_PIN, HOLO_KEY);

String VOTE1_VALUE = "chicago";
String VOTE2_VALUE = "newYork";
String HOLOGRAM_TOPIC = "vote";

void setup() {
  Serial.begin(19200);
  while(!Serial);
  
  pinMode(CONNECT_LED, OUTPUT);
  pinMode(VOTE1_BTN_PIN, INPUT);
  pinMode(VOTE1_LED_PIN, OUTPUT);
  pinMode(VOTE2_BTN_PIN, INPUT);
  pinMode(VOTE2_LED_PIN, OUTPUT);
  
  bool connected = Hologram.begin(19200, 8888); // ボーレート19200、サーバーport 8888
  if (connected) digitalWrite(CONNECT_LED, HIGH);
}

void loop() {
  Hologram.debug(); // 内部処理
  
  if (digitalRead(VOTE1_BTN_PIN) == HIGH) {
    sendVote(VOTE1_VALUE, VOTE1_LED_PIN);
  }
  if (digitalRead(VOTE2_BTN_PIN) == HIGH) {
    sendVote(VOTE2_VALUE, VOTE2_LED_PIN);
  }
}

void sendVote(String value, int ledPin) {
  digitalWrite(ledPin, HIGH);
  if (Hologram.send(value, HOLOGRAM_TOPIC)) {
    // 成功時: LED点滅
    for (int i=0; i<3; i++) {
      digitalWrite(ledPin, LOW); delay(100);
      digitalWrite(ledPin, HIGH); delay(100);
    }
    digitalWrite(ledPin, LOW);
  } else {
    digitalWrite(ledPin, LOW); // 失敗時は消灯
  }
}

回路図

添付画像を参照。FONAのTX/RX/RESET、各ボタン・LEDのプルダウン/プルアップ抵抗込みで配線。

発展アイデア

注意点

製造プロセス

  1. ジュースボックスの革命:歴史、設計、環境への影響
  2. ブラックボックス飛行記録装置:初期試作から将来の統合設計まで
  3. DIY Wall-E 風 Raspberry Pi CD ボックスロボット
  4. DIY UVC滅菌ボックスキット:低コスト・簡単自作の医療・日用品用紫外線殺菌器
  5. UnifiedWater v1 - 完全なArduino水質センサーキット
  6. Really Smart Box: IoT対応スマート収納ボックス – 重量・温湿度をSigfoxで送信
  7. コンパクト気象ステーション:Arduino Nano & ESP8266 + BMP280 + OLED/Nokia LCD
  8. Arduino Portenta H7で作る高性能エッジAIカメラ:OpenMV + TensorFlow Lite
  9. ボックスカット採掘:定義、工法、リスク管理
  10. C#のクラス完全ガイド:定義・カプセル化・コンストラクタ・デストラクタ・静的メンバー
  11. C#の演算子オーバーロード:カスタム型で演算子を再定義する