亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

便携式 GSM 投票箱:基于 Hologram + IFTTT 实现云端数据采集

项目背景

作者想探索群体匿名投票在无同辈压力环境下的真实表现,于是设计了这款 "Mobile Vote Box"(移动投票箱)。设备投放于芝加哥和拉斯维加斯的随机公共场所,收集路人对 "Chicago 风味披萨 vs New York 风味披萨" 的偏好。整机由电池供电,通过蜂窝网络上传数据,部署极其简单——放下即走。

成本与连接方案

系统架构与数据流向

每次投票 → 设备发送字符串到 Hologram Data Router → Router 解析为 JSON → 转发至 IFTTT Webhook → IFTTT 追加行到 Google Sheets。各环节职责:

分步搭建指南

1. 创建 IFTTT Applet

  1. 登录 IFTTT,新建 Applet。
  2. 触发器:Webhooks → Receive a web request,事件名设为 vote。
  3. 动作:Google Drive → Add row to spreadsheet,配置字段 (可参考原文图示)。
  4. 完成后,在 https://ifttt.com/services/maker_webhooks/settings 复制 Webhook Key (URL 最后一段)。

2. 配置 Hologram Data Route

  1. Hologram 控制台激活 SIM 或选中现有设备,命名如 "Vote Btn #1"。
  2. 左侧 Routes → New Route:
  3. IN (Topic):vote
  4. OUT:IFTTT Maker Webhook
  5. Webhook Key:粘贴上一步复制的 Key
  6. Event:vote
  7. Data (JSON 模板):
    {"value1": "Pizza: Chicago or New York Style?", "value2": "<>"}
    
  8. 创建路由。

3. 测试路由与 Webhook

  1. 控制台 Devices → 选中设备 → Messaging → Simulate from Device。
  2. Topic 填 vote,Data 填 chicago 发送。
  3. 控制台应显示路由成功,打开 Google Sheets 应见新行数据。
  4. 若失败,核对 Key、Topic、JSON 格式;或至 Hologram 社区求助。

4. 硬件接线与烧录

设备端代码 (关键部分)

#include <HologramSIMCOM.h>

#define RX_PIN 2       // FONA TX → MCU RX
#define TX_PIN 3       // FONA RX → MCU TX
#define RESET_PIN 4    // FONA RST
#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 cellConnected = Hologram.begin(19200, 8888);
  if (cellConnected) 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)) {
    // 成功闪烁 3 次
    for (int i=0; i<3; i++) {
      digitalWrite(ledPin, LOW); delay(100);
      digitalWrite(ledPin, HIGH); delay(100);
    }
    digitalWrite(ledPin, LOW);
  } else {
    digitalWrite(ledPin, LOW); // 发送失败熄灭
  }
}

原理图与外壳

原文提供原理图 PNG 及激光切割外壳 CAD 文件 (drawing_lasser_cutting_lvvsN9X9Xg.dwg),可直接用于制作。

未来展望

作者设想在全球部署数百个投票箱,每天发布一个新问题,数据公开共享,构建大规模匿名民意采集网络。项目完全开源,欢迎二次开发。

关键提示

制造工艺

  1. 果汁盒革命:历史、设计与环境影响
  2. 黑匣子飞行记录仪:从早期原型到未来一体化设计
  3. DIY仿Wall-E树莓派CD盒机器人
  4. DIY 低成本 UVC 紫外线消毒盒:医疗与个人物品快速杀菌方案
  5. UnifiedWater v1 — 基于 Arduino MKR GSM 1400 的完整水质监测套件
  6. Really Smart Box:基于 Sigfox 的物联网智能储物箱平台
  7. 紧凑型气象站:Arduino Nano + ESP8266 双核方案 (BMP280 + OLED/Nokia 双屏)
  8. DIY 打地鼠街机游戏(按键版)——Arduino Mega 2560 实现
  9. 现代复古点唱机:Raspberry Pi + Arduino NeoPixel 声控灯光音乐播放器
  10. 箱式开采法:定义、流程与应用场景
  11. C# 类完全指南:定义、封装、构造函数、析构函数与静态成员
  12. C# 运算符重载完全指南:自定义类型的运算符行为定义