Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging

Onderdelen en benodigdheden

Onderdeel Aantal
Arduino MKR Fox 1200 1

Apps en online diensten

  • Sigfox
  • Twilio SMS Messaging API

Over dit project

Inleiding

We hebben allemaal gehoord over de knop die Trump gebruikte om een Diet Coke te bestellen, toch? (https://time.com/4758059/donald-trump-coke-nuclear-button/)

We dachten dat we een betere versie konden bouwen met het Sigfox-netwerk. Alles wat je nodig hebt is een grote knop, een Arduino MKRFox1200 board en een Twilio-account om de tekstbericht te sturen.

Wat is Sigfox?

Sigfox biedt een wereldwijd, simpel en energiezuinig netwerk voor het Internet of Things. Het Sigfox-netwerk is momenteel beschikbaar of wordt uitgevoerd in 32 landen. Het netwerk aanvult bestaande systemen met hoge bandbreedte door economische, laag-energetische, tweerichtings-transmissie van kleine hoeveelheden data over lange afstanden. Sigfox-technologie wordt ondersteund door honderden hardware- en oplossingspartners.

1. Hardware vereisten

  • Arduino MKRFox1200
  • Een grote knop
  • LiPo-batterij of 2x AA/AAA batterijen
  • Een drukknopschakelaar
  • thethings.io sticker
  • En natuurlijk een Trump-masker

We gebruiken een drukknopschakelaar verbonden met pinnen 7 en GND van de Arduino. In ruststand is de schakelaar gesloten. Bij indrukken opent de schakelaar. De schakelaarstaat kan eenvoudig omgekeerd worden in de Arduino-code.

Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging

2. Arduino-code

Je kunt de Arduino-code op GitHub ophalen: https://github.com/aureleq/TrumpButton

We gebruiken de low-power bibliotheek om het board in diepe slaap te zetten. Een interrupt wekt het board op om een Sigfox-bericht te sturen:

// Schakelaarpin koppelen en interrupt inschakelen op stijgende flank
pinMode(SWITCH_PIN, INPUT_PULLUP);
LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING);
// Schakelaar is standaard gesloten, open bij indrukken

void loop() {
  // Slaap tot een evenement herkend wordt
  LowPower.sleep();
  
  // Als we hier komen, is er een evenement ontvangen
  Serial.println("Knop ingedrukt!");
  delay(100);
  sendString(payload);
}

3. Twilio

  • Registreer gratis hier
  • Voeg een nieuw nummer toe in "Verified Caller IDs" (telefoonnummer om notificatie te ontvangen)
  • Noteer je gegenereerde Twilio Telefoonnummer, ACCOUNT SID en Auth TOKEN:
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging

4. Sigfox callback configuratie

  • Log in op je Sigfox backend-account. Als je je Arduino-board nog niet geregistreerd hebt, activeer het hier: https://backend.sigfox.com/activate/
  • Selecteer het Device Type van je Arduino-apparaat. Link naar Device Type vind je onder de categorie Informatie.

Maak een nieuwe custom callback met deze parameters:

  • Type: DATA UPLINK
  • Channel: URL
  • URL patroon: https://[AccountSID]:[AuthToken]@api.twilio.com/2010-04-01/Accounts/[AccountSID]/Messages.json
  • HTTP Method: POST
  • Content-Type: application/x-www-form-urlencoded
  • Body: From=[JouwTwilioTelefoonnummer]&To=[TelefoonNummer]&Body= covfefe!
Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging

De tekst covfefe! wordt elke keer verstuurd wanneer de knop ingedrukt wordt.

5. Validatie

Druk stevig op de knop en wacht tot de butler je een drankje brengt!

Bouw Een Externe Tekstknop Met Sigfox & Twilio Voor Remote Messaging

Code

Arduino broncode (Arduino)

/* 
 * @aureleq
 * Beschrijving: Stuurt een Sigfox-bericht bij indrukken op een knop
 * Knop moet bedraad zijn tussen GND en pin 7 (standaard)
 * Interrupts worden gebruikt voor lage stroommodus.
 * Omdat het board meestal in slaapmodus zit, is een board-reset nodig 
 * om een nieuwe sketch te uploaden (dubbel tikken op reset-knop)
 */
#include <SigFox.h>
#include <ArduinoLowPower.h>

const uint8_t SWITCH_PIN = 7;
const String payload = "COKE NOW!";
const uint8_t debug = false;

void setup() {
  if (debug == true) {
    Serial.begin(9600);
    while (!Serial) {};
  }
  
  if (!SigFox.begin()) {
    Serial.println("Shield fout of niet aanwezig!");
    return;
  }
  
  // Debug LED inschakelen en automatische diepe slaap uitschakelen
  // Commentaar deze regel bij productie :)
  // SigFox.debug();
  
  Serial.println("Sigfox shield gedetecteerd");
  String ID = SigFox.ID();
  Serial.println("ID = " + ID);
  delay(100);
  
  // Module in diepste slaap zetten
  SigFox.end();
  
  // Schakelaarpin koppelen en interrupt inschakelen op stijgende spanning
  pinMode(SWITCH_PIN, INPUT_PULLUP);
  LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING);
  // Schakelaar is standaard gesloten, open bij indrukken
}

void loop() {
  // Slaap tot een evenement herkend wordt
  LowPower.sleep();
  
  // Als we hier komen, is er een evenement ontvangen
  Serial.println("Knop ingedrukt!");
  delay(100);
  sendString(payload);
}

void sendString(String str) {
  // Module starten
  SigFox.begin();
  
  // Wacht minstens 30ms na eerste configuratie (100ms voor zekerheid)
  delay(100);
  
  // Wis alle pending interrupts
  SigFox.status();
  delay(1);
  
  SigFox.beginPacket();
  SigFox.print(str);
  int ret = SigFox.endPacket(); // Stuur buffer naar SIGFOX-netwerk
  
  if (ret > 0) {
    Serial.println("Geen transmissie");
  } else {
    Serial.println("Transmissie OK");
  }
  
  Serial.println(SigFox.status(SIGFOX));
  Serial.println(SigFox.status(ATMEL));
  SigFox.end();
}

void buttonPressed() {
  // Interrupt handler - leeg, want we waken op via LowPower.sleep()
}

GitHub

https://github.com/aureleq/TrumpButton

Productieproces

  1. De Knop: Van Oude Sluiting tot Moderne Innovatie
  2. LED helderheid regelen met PWM via drukknop op Arduino Mega
  3. Waterdruppels vastleggen met Arduino Nano – DIY High-Speed Fotografie
  4. Giftduino: De Ultieme Arduino Cadeau-set voor Hobbyisten en Docenten
  5. Maak een Aangepaste 'Punchable' Toetsenbordknop met Arduino: Stap-voor-Stap Handleiding
  6. De massa van de aarde meten met Arduino: een stapsgewijze DIY-gids
  7. MAX30100 hartslagsensor integreren met Arduino: Stapsgewijze handleiding
  8. De Fridgeye-app bouwen met een Nextion-display: stapsgewijze handleiding
  9. Stapsgewijze handleiding: YL-39/YL-69 bodemvochtigheidsensor aan Arduino UNO koppelen
  10. Health Band: slimme weerebare assistant voor senioren
  11. Sigfox lanceert Private Area Network, verbetert geolocatie en breidt IoT-oplossingen uit