Переносная система голосования с GSM-связью
Компоненты и материалы
- Arduino UNO – 1 шт.
- Adafruit FONA mini GSM breakout – 1 шт.
- Беспаяльная макетная плата (полноразмерная) – 1 шт.
- Тактильные кнопки (круглые, цветные) – 2 шт.
- Светодиоды (общего назначения) – 3 шт.
Приложения и онлайн-сервисы
- Hologram Data Router – маршрутизация данных через сеть Hologram.
- IFTTT Maker service – интеграция с Google Таблицами.
О проекте
Предыстория
Автор хотел создать устройство для анонимного опроса случайных людей в публичных местах, свободное от группового давления. Так родился «Mobile Vote Box» (Переносная коробка для голосования). Устройство работает от батареи, передает каждый голос через сотовую сеть, что позволяет просто установить его и забыть. Стоимость деталей ~$50 (можно снизить до $6 при заказе в AliExpress).
Сотовая связь бесплатна от Hologram.io (Developer Plan: бесплатная глобальная SIM-карта + 1 МБ в месяц, около 2000 голосов). Промокод BUDS-WITH-BENSTR дает бесплатную доставку и кредит. Раскрытие: автор работает в Hologram.
Архитектура передачи данных
При голосовании устройство отправляет строку в Hologram Data Router. Router преобразует её в JSON и отправляет на вебхук IFTTT, который дописывает строку в Google Таблицу.
- Hologram Data Store — абстрагирует сложность отправки данных с SIMCom-модуля в облако.
- Hologram Data Router — преобразует минимальную строку в JSON для IFTTT, позволяет добавлять интеграции без изменения прошивки.
- IFTTT — упрощает интеграцию с Google Sheets.
- Google Sheets — хранение результатов.
Пошаговая инструкция
1. Настройка IFTTT
- Зарегистрируйтесь/войдите в IFTTT, создайте новый Applet.
- Выберите сервис Webhooks, триггер Receive a web request, имя события —
vote. - Действие: сервис Google Drive, действие Add row to spreadsheet.
- Заполните поля (можно оставить по умолчанию).
- Скопируйте ваш Webhook Key (последняя часть URL):
https://ifttt.com/services/maker_webhooks/settings.
2. Настройка Hologram
- Создайте устройство в Hologram.io (активируйте SIM). Назовите, например, Vote Btn #1.
- Создайте Data Route: IN — топик
vote, OUT — IFTTT Maker Webhook. - Вставьте Webhook Key, Event:
vote, Data:{"value1": "Pizza: Chicago or New York Style?", "value2": "<.>"}
3. Тестирование маршрута
- В консоли Hologram: Devices → ваше устройство → Messaging → Simulate from Device.
- Отправьте данные
chicagoв топикvote. - Проверьте успешность маршрута и появление строки в Google Таблице.
4. Аппаратная часть
- Получите Device Key в Hologram Dashboard (Devices → Configure → Show CSR Credentials).
- Соберите схему (см. ниже) и загрузите скетч, заменив
HOLO_KEYна свой ключ.
Код (Arduino)
Требуется библиотека HologramSIMCOM (установить вручную из GitHub).
#include
#define RX_PIN 2 // SIMCom RX -> MCU TX
#define TX_PIN 3 // SIMCom TX -> MCU RX
#define RESET_PIN 4 // SIMCom reset
#define HOLO_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);
Hologram.debug();
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 VOTE_VALUE, const int VOTE_LED) {
digitalWrite(VOTE_LED, HIGH);
if (Hologram.send(VOTE_VALUE, HOLOGRAM_TOPIC)) {
// Мигание при успехе
digitalWrite(VOTE_LED, LOW); delay(100);
digitalWrite(VOTE_LED, HIGH); delay(100);
digitalWrite(VOTE_LED, LOW); delay(100);
digitalWrite(VOTE_LED, HIGH); delay(100);
digitalWrite(VOTE_LED, LOW);
} else {
digitalWrite(VOTE_LED, LOW);
}
}
Схема подключения
Производственный процесс
- Революция соковых коробок: история, дизайн и экологический след
- Черные ящики самолетов: от ранних прототипов к будущим интегрированным дизайнам
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- Классы в C#: определение, конструкторы, деструкторы, статические члены
- Перегрузка операторов в C#: пользовательские типы и кастомная логика
- DIY UVC-стерулизатор: бюджетный UV-коробок для медицинских и бытовых предметов
- UnifiedWater v1: полный набор датчиков качества воды на Arduino MKR GSM
- Really Smart Box: умная коробка для IoT-мониторинга запасов
- Компактная метеостанция: Arduino Nano + ESP8266, BMP280, OLED / Nokia 5110 LCD
- Ящурная разработка (Box Cut): определение и применение в горном деле