Draagbaar stemstysteem met GSM-connectiviteit
Onderdelen en benodigdheden
- Arduino UNO (1x)
- Adafruit FONA mini GSM breakout (1x)
- Solderloos breadboard full-size (1x)
- Ronde tastschakelaars (Adafruit Colorful) (2x)
- LED's (3x)
Apps en online diensten
- Hologram Data Router (gratis developer plan)
- IFTTT Maker service
Over dit project
Achtergrond
Hoe beïnvloedt groepsdruk ons stemgedrag? Ik wilde een machine bouwen die anonieme, willekeurige groepen vragen kan stellen – zonder sociale druk, simpel en batterijgevoed. Zo ontstond de Mobile Vote Box.
Ik plaatste dozen in Chicago en Las Vegas met de vraag: "Pizza: Chicago or New York Style?". De doos werkt op batterij, stuurt elke stem via GSM door, en kost ongeveer $50 (of $6 via AliExpress).
Gratis GSM-data met Hologram.io
Hologram biedt een gratis Developer Plan: wereldwijde SIM-kaart + 1MB gratis data/maand (≈2000 stemmen). Gebruik promotiecode BUDS-WITH-BENSTR voor gratis verzending en extra tegoed.
Openbaarheid: Ik werk bij Hologram, dus verwacht meer IoT-tutorials over cellulair.
Doel
Uiteindelijk honderden dozen wereldwijd, elke dag een nieuwe vraag, data publiek beschikbaar.
Hoe we de Mobile Vote Box bouwen
We werken achterstevoren: van data-egress naar hardware.
- IFTTT-applet maken om data in Google Sheets te zetten
- SIM activeren, data route instellen, testen met mock data
- Hardware bekabelen en code flashen
- Een boeiende vraag bedenken en de doos in het openbaar plaatsen
Dataflow begrijpen
Elke stem → Hologram Data Router → JSON → IFTTT Webhook → Google Sheets.
- Hologram Data Store: Vereenvoudigt versturen van SIMCom-module naar cloud
- Hologram Data Router: Zet minimale string-data om naar JSON voor IFTTT, flexibel voor extra integraties
- IFTTT: Abstraceert complexe cloud-integraties (Google Sheets)
- Google Sheets: Simpele opslag en visualisatie
Stap 1: IFTTT instellen
- Ga naar IFTTT, maak account aan
- Nieuw Applet → Webhooks service → "Receive a web request" → Event naam:
vote - Actie: Google Drive → "Add row to spreadsheet"
- Velden invullen (zie afbeeldingen in originele handleiding)
- Kopieer je Webhook Key:
https://ifttt.com/services/maker_webhooks/settings
Stap 2: Hologram instellen
- Ga naar Hologram.io, activeer SIM of selecteer device
- Routes → New Route
- IN: topic
vote - OUT: IFTTT Maker Webhook
- Webhook Key: plak je IFTTT key
- Event:
vote - Data (JSON):
{"value1": "Pizza: Chicago or New York Style?", "value2": "<>"} - Create Route
Stap 3: Testen
- Devices → jouw device → Messaging → Simulate from Device
- Stuur data
chicagonaar topicvote - Controleer Hologram console (succes) en Google Sheets (nieuwe rij)
- Problemen? Hologram Community
Stap 4: Hardware
- Haal je Device Key op: Devices → Configure → Show CSR Credentials
- Vervang
HOLO_KEYin de code met je eigen key - Bekabel volgens schema (zie afbeelding)
Code
Installeer de HologramSIMCOM-bibliotheek handmatig: GitHub
#include <HologramSIMCOM.h>
#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 "########" // VERVANG MET JOUW 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);
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)) {
// Knipper bij succes
for(int i=0; i<4; i++) {
digitalWrite(VOTE_LED, LOW); delay(100);
digitalWrite(VOTE_LED, HIGH); delay(100);
}
digitalWrite(VOTE_LED, LOW);
} else {
digitalWrite(VOTE_LED, LOW);
}
}
Schema
Zie afbeelding in de originele projectpagina voor het bekabelingsschema.
Uitbreidingen
- Meer knoppen/opties toevoegen
- OLED-scherm voor feedback
- Zonnepaneel + lader voor langdurige autonomie
- Verschillende vragen per locatie via configuratie
Productieproces
- De Sapdoos Revolutie: Geschiedenis, Ontwerp en Milieueffect
- Black Box Vluchtrecorders: Van Vroege Prototypen tot Toekomstige Geïntegrerde Ontwerpen
- DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
- Zelfbouw UVC-sterilisatiedoos – Goedkope, makkelijke UV-box voor medische en persoonlijke items
- UnifiedWater v1 – Complete Arduino Waterkwaliteit Sensor Kit
- Really Smart Box: IoT-ingeschakelde slimme opslagoplossing
- Compact Weerstation: Arduino Nano & ESP8266 Met BMP280 Barometrische Sensor & OLED/Nokia LCD Display
- DIY Whac-A-Mole Arcade Spel (Knoppen Editie) – Arduino Project
- Box cut mijnbouw: definitie en toepassingen
- C# Klassen Beheersen: Blauwprint voor Krachtig Objectgeoriënteerd Programmeren
- Operator Overloading in C# Beheersen voor Aangepaste Typen