Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Système de vote portable avec connectivité GSM

Composants et fournitures

Composant Quantité
Arduino UNO 1
Module GSM Adafruit FONA mini (breakout) 1
Plaque d'essai sans soudure (full size) 1
Boutons poussoirs tactiles ronds colorés (Adafruit) 2
LEDs (génériques) 3

Applications et services en ligne

Contexte du projet

L'auteur, fasciné par la dynamique de groupe et l'influence sociale sur les réponses, a voulu créer une "urne mobile" permettant de poser des questions à des groupes anonymes, sans pression sociale. Ce MVP, nommé Mobile Vote Box, a été testé à Chicago et Las Vegas avec une question simple mais clivante : "Pizza : style Chicago ou style New York ?".

L'appareil fonctionne sur batterie et transmet chaque vote via le réseau cellulaire, le rendant très facile à déployer ("set-and-forget"). Coût ~50 $ (peut descendre à ~6 $ en sourçant via AliExpress). La connectivité cellulaire est gratuite via le plan Developer de Hologram.io : carte SIM mondiale gratuite + 1 Mo/mois (≈ 2000 votes/mois). Code promo BUDS-WITH-BENSTR pour livraison gratuite et crédit.

Note : l'auteur travaille pour Hologram, d'où l'orientation tutoriels IoT cellulaires.

Architecture des données

Chaque vote génère une chaîne de données envoyée au Hologram Data Router. Ce dernier la transforme en objet JSON et la transmet à un Webhook IFTTT, qui ajoute une ligne dans un Google Sheet. Chaque élément a son rôle :

Système de vote portable avec connectivité GSM

Étape 1 : Configuration IFTTT

  1. Créez un compte IFTTT et un nouvel Applet.
  2. Service déclencheur : Webhooks → Receive a web request → nom d'événement : vote.
  3. Service d'action : Google Drive → Add row to spreadsheet.
  4. Remplissez les champs (feuille, dossier, valeurs : {{Value1}}, {{Value2}}, {{OccurredAt}}).
  5. Finalisez et copiez votre clé Webhook (dernière partie de l'URL sur cette page).

Étape 2 : Configuration Hologram

  1. Créez un device sur Hologram.io (activez une nouvelle SIM ou sélectionnez un device existant). Nommez-le ex: "Vote Btn #1".
  2. Créez une Data Route :
    • IN (topic) : vote
    • OUT : IFTTT Maker Webhook
    • Webhook Key : votre clé IFTTT
    • Event : vote
    • Data (JSON) : {"value1": "Pizza: Chicago or New York Style?", "value2": "<<decdata>>"}

Étape 3 : Test de la route

  1. Dans la console Hologram : Devices → votre device → Messaging → Simulate from Device.
  2. Envoyez la donnée chicago sur le topic vote.
  3. Vérifiez le routage réussi dans la console Hologram.
  4. Ouvrez le Google Sheet : une nouvelle ligne doit apparaître.
  5. En cas d'erreur, revérifiez les étapes ou demandez aide sur community.hologram.io.

Étape 4 : Matériel et code

Récupérez la Device Key du Data Router depuis le dashboard Hologram (Devices → Configure → Show CSR Credentials). Remplacez la valeur HOLO_KEY dans le sketch.

Schéma de câblage

Système de vote portable avec connectivité GSM

Code Arduino (Mobile Vote Box v1)

Nécessite la bibliothèque HologramSIMCOM (installation manuelle depuis 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 "########" // REMPLACEZ par votre 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); // baud 19200, serveur port 8888
  if(cellConnected) digitalWrite(CONNECT_LED, HIGH);
}

void loop() {
  Hologram.debug(); // gestion interne bibliothèque

  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)) {
    // Clignotement LED confirmation envoi réussi
    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); // Échec envoi
  }
}

Idées d'amélioration

Processus de fabrication

  1. La révolution de la brique de jus : histoire, conception et impact environnemental
  2. Enregistreurs de Vol « Boîte Noire » : Des Premiers Prototypes aux Conceptions Intégrées Futures
  3. Robot DIY inspiré de Wall‑E : Raspberry Pi dans une boîte de CD recyclée
  4. Maîtriser les classes C# : blueprint pour la programmation orientée objet
  5. Maîtriser la surcharge d'opérateurs en C# pour types personnalisés
  6. Kit Stérilisateur UVC DIY – Boîte UV Faible Coût, Facile à Construire pour Objets Médicaux et Personnels
  7. UnifiedWater v1 – Kit complet de capteur de qualité d'eau Arduino
  8. Really Smart Box : Solution de Stockage Intelligente Connectée IoT
  9. Coupe en Boîte (Box Cut) : Définition et Applications Minières