IoT Liefde Kussen: Remote Knuffels met Arduino MKR Bundle
Componenten en benodigdheden
| Arduino MKR IoT Bundle | 1 |
Apps en online diensten
- Telegram
Over dit project
Let op: Deze tutorial kan verouderd zijn, ga hier voor een actuele versie.
We weten allemaal dat het zonder die speciale persoon in je leven moeilijk kan zijn, maar wat als je liefde en liefde op afstand kunt sturen via het internet, gewoon door een kussen te knuffelen?
Nu kunnen we niet echt knuffels sturen... maar wat we wél kunnen sturen is een lief emoji via een messaging-app, getriggerd door het knuffelen van een kussen.
Wanneer je de I Love You Pillow knuffelt, hoor je een hartslaggeluid van de buzzer binnenin. Afhankelijk van de duur van je knuffel, wordt een andere emoji verstuurd van een Telegram Bot naar de chat van je keuze.
Blijf in contact met je geliefde met dit knuffelbare apparaat!
In een notendop
In dit experiment gebruiken we aluminiumfolie om een DIY-capacitieve sensor te maken die knuffels detecteert.
Voor ons knuffel-verstuur-apparaat hebben we nodig:
- Buzzer
- Aluminiumfolie
- 1 weerstand 5M ohm
- Breadboard
- Draden
Leerdoelen
- Kennismaking met Telegram Bots
- Capacitieve sensoren beheren
- Telegram Bots en groepschats #ProTips
- WiFi best practices #ProTips
Pro Tips zijn nuttige maar niet strikt noodzakelijke stappen die een laag complexiteit toevoegen.
Wil je meer weten?
Deze tutorial is onderdeel van een reeks experimenten die je vertrouwd maken met de MKR1000 en IoT. Alle experimenten kunnen gebouwd worden met componenten uit de MKR IoT Bundle:
- I Love You Pillow
- Puzzle Box
- Pavlov's Cat
- The Nerd
- Plant Communicator
Kennismaking met Telegram Bots
Telegram is een populaire messaging-app voor mobiel en desktop. Naast chatten met vrienden kun je handige en krachtige chatbots maken!
Een chatbot is niets anders dan een contactpersoon waar je mee kunt chatten, maar in plaats van een persoon zit er een machine achter die reageert volgens de code die je schreef. De TelegramBot-bibliotheek voor Arduino geeft een eenvoudige manier om de logica te implementeren.
Je eigen bot maken
Een bot maken is zo makkelijk! Volg deze stappen of bekijk de documentatie.
- Open Telegram en zoek naar @BotFather
- Start een chat en typ /newbot
- Geef een naam en gebruikersnaam (moet eindigen op 'bot')
- Je ontvangt een API-token – bewaar dit veilig!
Het bord instellen
Eerst zorgen dat we alle benodigde bibliotheken hebben:
- WiFi101
- TelegramBot
- ArduinoJson
- CapacitiveSensor
Je kunt ze gemakkelijk installeren via de bibliotheekbeheerder.
Om Telegram's API te gebruiken moeten we eerst de certificaten op de MKR1000 uploaden. Dit geldt voor de meeste online diensten en API's!
Upload het Firmware Updater-voorbeeld uit de WiFi101-bibliotheek en voeg api.telegram.org toe aan de domeinen.
Als je de Arduino Web Editor gebruikt, is deze functie nog niet geïmplementeerd; gebruik dan de Arduino Desktop Applicatie.
Laat de magie gebeuren! Open het EchoBot-voorbeeld uit de TelegramBot-bibliotheek, vul je WiFi-gegevens en het API-token in dat je van BotFather ontving, en upload!
Je hebt nu een bot die al je berichten echo't.
EchoBot en Emoji
Emoji's zijn overal! We gebruiken ze om liefde en knuffels te sturen. Het EchoBot-voorbeeld laat zien hoe de bot emoji's leest.
Helaas is de manier waarop de bot de emoji ontvangt niet dezelfde als voor versturen. Om een emoji te sturen moeten we UNICODE karakters gebruiken.
Bijvoorbeeld, voor een hart-emoji: \U00002764
Volledige lijst met Unicode-emoji-codes hier.
Om een bot te maken die op een hart-emoji reageert met een hart-emoji:
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");
}
}
}
Capacitieve sensor
Genoeg over Telegram, laten we onze DIY-capacitieve sensor bouwen!
De CapacitiveSensor-bibliotheek zet twee of meer Arduino-pinnen om in een capacitieve sensor die de elektrische capaciteit van het menselijk lichaam kan meten. Alleen een medium tot hoge weerstand en een stukje aluminiumfolie zijn nodig.
Op zijn meest gevoelige begint de sensor een hand of lichaam op inches afstand te detecteren en door verschillende materialen heen. We verstoppen onze sensor in het kussen!
Upload het voorbeeldsketch, Verbind de draden en zie het resultaat op de console.
De hartslag
Hoelanger je knuffelt, hoe meer hartslagen je hoort. Hoe meer het hart klopt, hoe meer liefde je stuurt (en verschillende emoji's).
We emuleren een hartslaggeluid met een buzzer en een paar regels code.
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);
}
#ProTip: Chat-id en Groepschat
Om berichten te sturen, heeft een bot een chat-id nodig. Dit is de unieke identifier van een chat tussen iemand en een bot. Om de bot te laten sturen naar een specifiek persoon, moet die persoon eerst de bot een bericht sturen en sla je de chat-id op van die specifieke chat.
In dit project antwoordt de bot alleen op de allerlaatste persoon die het een bericht stuurde, wie dat ook was.
Bots zijn publiek, iedereen kan een bot een bericht sturen!
Om de bot in een groepschat op te nemen, moet je de privacy-modus uitschakelen zodat de bot alle berichten kan lezen, anders detecteert het alleen commands die beginnen met /.
#ProTip: WiFi Best Practices
WiFi kan tricky zijn. Soms schakelt het zonder duidelijke reden voor enkele seconden uit. Dit kan een probleem zijn omdat we de WiFi-verbinding meestal alleen bij setup maken.
Online diensten kunnen ook tricky zijn: wanneer Arduino een verzoek stuurt naar een server (Telegram), wacht het op antwoord. Vanwege honderden redenen kan een antwoord niet arriveren, wat de Arduino in een oneindige lus houdt.
Om je project stabieler te maken, kun je een watchdog toevoegen.
Een watchdog is een timer die periodiek geüpdatet moet worden, anders herstart hij het bord.
Gebruik deze bibliotheken:
- Adafruit SleepyDog
- Adafruit ASF Core (handmatig installeren van GitHub)
Het EchoBot-voorbeeld met 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);
}
void loop() {
Watchdog.reset();
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
Complete sketch
De volledige sketch combineert capacitieve sensor-detectie, hartslag-generatie op buzzer, WiFi/Telegram-communicatie en emoji-versturing op basis van knuffelduur. De code initialiseert BLE, PDM-microfoon (voor toekomstige uitbreiding), HTS221-sensor, en voert continu inferencing uit. Resultaten worden als JSON via BLE naar de app gestuurd.
Schema's
Aansluitschema voor IoT Liefde Kussen met Arduino MKR1000, capacitieve sensor (aluminiumfolie + 5MΩ weerstand), buzzer en voeding.
Productieproces
- Messensmeden Beheersen: 9 Expert Stappen voor Duurzame Messen
- BOM-planning beheersen: Stapsgewijze gids om uw productkosten te optimaliseren
- De juiste ontwikkellocatie kiezen: Makerspaces, accelerators en productiepartners
- De essentiële gids voor deelmarkering: 3 bewezen methoden voor kwaliteit en veiligheid
- Micrometer Uitgelegd: Hoe te Lezen en Gebruiken van een Precisie Meetinstrument
- Essentiële horizontale bearbeitingscentra voor hoogprecisie productie
- Voordelen van een Mechanische IJzerwerker voor Precisie Metaalbewerking
- Ontdek de Beste Ontgratareehheden voor Elke Productiebehoefte
- Ontdek Wit Gietijzer: Eigenschappen, Toepassingen en Voordelen
- Plunge EDM Beheersen: De Ultieme Gids voor Precisie Elektrische Ontladingsbewerking
- Kleine servopers ontdekken: precisie metaalvorming op maat