IoT Liebeskissen: Ferne Umarmungen mit Arduino MKR Bundle
Komponenten und Zubehör
| Komponente | Beschreibung | Anzahl |
|---|---|---|
| Arduino MKR IoT Bundle | Enthält MKR1000, Sensoren, Aktoren, Breadboard, Kabel | 1 |
Apps und Online-Dienste
- Telegram (Messaging-App für Bot-Kommunikation)
Über dieses Projekt
Hinweis: Dieses Tutorial könnte veraltet sein. Aktuellere Version hier.
Getrennt von einem geliebten Menschen zu sein ist schwer. Was, wenn man Liebe und Zuneigung per Internet senden könnte, indem man einfach ein Kissen umarmt? Echte Umarmungen lassen sich nicht übertragen, aber man kann ein süßes Emoji per Messaging-App senden, ausgelöst durch das Umarmens des Kissens.
Beim Umarmen des I Love You Pillow ertönt ein Herzschlag-Sound vom Summer im Inneren. Je nach Umarmungsdauer sendet ein Telegram-Bot ein anderes Emoji an einen gewählten Chat.
Bleiben Sie mit Ihrem Lieblingsmenschen in Kontakt durch dieses umarmbare Gerät!
Kurzfassung
Wir nutzen Alufolie als DIY-kapazitiven Sensor zur Umarmungserkennung.
Benötigte Komponenten:
- Summer
- Alufolie
- 1 Widerstand 5M Ohm
- Steckbrett
- Kabel
Animationen und Schaltbilder sind im Originalprojekt enthalten.
Lernziele
- Telegram Bots kennenlernen
- Kapazitive Sensoren verwalten
- Telegram Bots und Gruppenchats #ProTips
- WLAN Best Practices #ProTips
Pro Tips sind nützlich, aber nicht zwingend nötige Schritte, die Komplexität hinzufügen.
Mehr erfahren?
Dieses Tutorial ist Teil einer Experimentreihe zum Kennenlernen von MKR1000 und IoT. Alle Experimente lassen sich mit dem MKR IoT Bundle bauen:
- I Love You Pillow
- Puzzle Box
- Pavlov's Cat
- The Nerd
- Plant Communicator
Telegram Bots einführen
Telegram ist eine beliebte Messaging-App für Mobil und Desktop. Neben Chats mit Freunden erlaubt es leistungsstarke Chat-Bots! Ein Bot ist ein Kontakt, der statt einer Person maschinell per Code antwortet. Die TelegramBot-Bibliothek für Arduino erleichtert die Logik-Implementierung.
Eigenen Bot erstellen
Bot-Erstellung ist einfach:
- Mit @BotFather chatten
- /newbot Befehl senden
- Namen und Benutzernamen vergeben
- API-Token erhalten und sicher aufbewahren
Screenshots der BotFather-Schritte sind im Originalprojekt enthalten.
Board einrichten
Zuerst alle nötigen Bibliotheken installieren:
- WiFi101
- TelegramBot
- ArduinoJson
- CapacitiveSensor
Installation per Bibliotheksverwalter. Für Telegram API müssen Zertifikate auf MKR1000 hochgeladen werden (gilt für die meisten Online-Dienste/APIs). Firmware Updater Beispiel aus WiFi101 Bibliothek öffnen, api.telegram.org zu Domains hinzufügen. Im Arduino Web Editor noch nicht implementiert → Desktop-App nutzen.
Bilder zum Zertifikat-Upload sind im Originalprojekt enthalten.
EchoBot-Beispiel aus TelegramBot-Bibliothek öffnen, WLAN-Zugangsdaten und API-Token eintragen, hochladen! Bot erstellt, der alle Nachrichten echo-t.
EchoBot und Emojis
Emojis überall! Wir nutzen sie für Liebe und Umarmungen. EchoBot-Beispiel zeigt, wie Bots Emojis empfangen.
Screenshot der Emoji-Empfang ist im Originalprojekt enthalten.
Wichtig: Empfang und Senden von Emojis unterscheiden sich. Zum Senden Unicode-Zeichen nutzen. Herz-Emoji: \U00002764. Vollständige Liste: Unicode Emoji Codes.
Beispiel für Bot, der auf Herz-Emoji mit Herz antwortet:
void loop() {
message m = bot.getUpdates();
if (m.chat_id != 0) {
Serial.println(m.text);
if(m.text == "u2764ufe0f") {
bot.sendMessage(m.chat_id, "\U00002764");
}
}
}
Kapazitiver Sensor
Die CapacitiveSensor-Bibliothek macht zwei Arduino-Pins zu einem kapazitiven Sensor, der die elektrische Kapazität des menschlichen Körpers erfasst. Benötigt: mittelgroßer bis großer Widerstand und Alufolie. Bei maximaler Empfindlichkeit erkennt der Sensor Hand/Körper in Zentimeter-Distanz und durch Materialien hindurch. Sensor wird im Kissen versteckt!
Beispiel-Sketch hochladen, verdrahten, Serielle Ausgabe beobachten:
#include <CapacitiveSensor.h>
CapacitiveSensor foil = CapacitiveSensor(5,4); // 10M Widerstand zwischen Pin 5 & 4, Pin 4 ist Sensor
void setup() {
foil.set_CS_AutocaL_Millis(0xFFFFFFFF);
Serial.begin(9600);
}
void loop() {
long start = millis();
long sensor_value = foil.capacitiveSensor(30);
Serial.print(millis() - start);
Serial.print("\t");
Serial.print(sensor_value);
Serial.println("\t");
delay(500);
}
Verdrahtung und Serielle Ausgabe sind im Originalprojekt als Bilder enthalten.
sensor_value als Schwellenwert für Umarmungserkennung nutzen.
Der Herzschlag
Länger umarmen → mehr Herzschläge hören → mehr Liebe senden (verschiedene Emojis). Herzschlag-Sound per Summer emulieren:
int Buzzer = 8;
void setup(){}
void loop(){ HeartBeat(); delay(1000); }
void HeartBeat(){
tone(Buzzer, 31, 200); delay(200);
tone(Buzzer, 31, 400); delay(200);
noTone(Buzzer); delay(1000);
}
Für komplexere Buzzer-Nutzung: Beispiele → Digital → ToneMelody.
#ProTip: Chat-ID und Gruppenchat
Bot benötigt Chat-ID zum Senden. Eindeutiger Bezeichner eines Chats zwischen Person und Bot. Person muss Bot zuerst anschreiben, dann Chat-ID speichern. In diesem Projekt antwortet Bot nur der letzten Person, die ihn angeschrieben hat. Bots sind öffentlich – jeder kann sie anschreiben!
Für Gruppenchat: Privacy Mode deaktivieren, damit Bot alle Nachrichten liest (nicht nur /-Befehle).
Screenshots zur BotFather-Konfiguration sind im Originalprojekt enthalten.
#ProTip: WLAN Best Practices
WLAN kann tricky sein – kurzzeitige Ausfälle ohne Grund. Problem: WLAN-Verbindung oft nur im Setup hergestellt. Online-Dienste können antworten nicht liefern → Arduino in Endlosschleife.
Lösung: Watchdog-Timer. Muss periodisch zurückgesetzt werden, sonst Board-Reset. Bibliotheken:
- Adafruit SleepyDog
- Adafruit ASF Core (manuell von GitHub installieren)
EchoBot mit Watchdog:
#include <WiFi101.h> #include <SPI.h> #include <TelegramBot.h> #include <Adafruit_SleepyDog.h>
char ssid[] = "xxxx"; char pass[] = "yyyy"; const char BotToken[] = "xxxx";
WiFiSSLClient client; TelegramBot bot(BotToken, client);
void setup() {
Serial.begin(115200); while (!Serial) {} delay(3000);
Serial.print("Connecting Wifi: "); Serial.println(ssid);
while (WiFi.begin(ssid, pass) != WL_CONNECTED) { Serial.print("."); delay(500); }
Serial.println(""); Serial.println("WiFi connected"); bot.begin();
Watchdog.enable(10000); // 10 Sek. Timer
}
void loop() {
Watchdog.reset(); // Nicht aufrufen → Reset nach 10 Sek.
message m = bot.getUpdates();
if (m.chat_id != 0) {
Serial.println(m.text);
bot.sendMessage(m.chat_id, m.text);
} else { Serial.println("no new message"); }
}
Code
Vollständiger Sketch
Der vollständige Sketch ist im Originalprojekt als Datei enthalten.
Schaltplan
Schaltplan-Bild ist im Originalprojekt enthalten.
Herstellungsprozess
- Messerschmieden meistern: 9 Experten-Schritte für langlebige Klingen
- BOM-Planung meistern: Schritt-für-Schritt zur Optimierung Ihrer Produktkosten
- Den richtigen Entwicklungsstandort wählen: Makerspaces, Acceleratoren, Fertigungspartner
- Mikrometer: Aufbau, Typen, Anwendung & Ablesen erklärt
- Unverzichtbare Horizontalbearbeitungszentren für hochpräzise Fertigung
- Vorteile mechanischer Eisenarbeiter für präzise Metallbearbeitung
- Entgratungsanlagen: Technologien, Auswahl & Effizienz im Fertigungsprozess
- Weißguss (White Cast Iron): Eigenschaften, Gefüge, Anwendungen & Herstellung
- Senkerodieren (Plunge EDM) meistern: Der ultimative Leitfaden zur präzisen Elektroerosion
- Vorteile kleiner Servopressen für präzises Metallumformen entdecken