Telefonanrufe auf Arduino UNO mit Twilio & Yaler ermöglichen – Call My Arduino Projekt
Komponenten und Zubehör
| Arduino UNO | × | 1 |
| Arduino Ethernet Shield | × | 1 |
| Analoger Temperatursensor (z.B. TMP36) | × | 1 |
Über dieses Projekt
Wie Sie Telefonanrufe auf Ihrem Arduino ermöglichen, باستخدام Twilio und Yaler.net
Twilio ist ein Webdienst, der alles in ein Telefon verwandelt. Es ist eine REST-API für Telefonie, gehostet in der Cloud. In diesem Fall fragt Twilio den Arduino nach einer neuen voice.xml-Datei, wann immer jemand die vordefinierte Telefonnummer des Arduinos anruft. Der Inhalt der Antwort wird dem Anrufer von Alice, einer Stimme von Twilios Text-to-Speech-Engine, vorgelesen.
Yaler.net ermöglicht Webzugriff auf eingebettete Geräte hinter einer Firewall, NAT oder einem Mobilfunkrouter. Hier ermöglicht es Twilio, auf die voice.xml-Datei auf dem Arduino zuzugreifen, die sich in einem lokalen Netzwerk befindet und daher keine eigene öffentliche IP-Adresse hat (Offenlegung: Ich bin Gründer von Yaler).
Diese Demo verwendet einen Temperatursensor, aber jeder andere Sensor würde genauso funktionieren. Ein reales Produktbeispiel wäre der Canary (jetzt Birdi) Rauchmelder, der besorgten Hausbesitzern erlaubt, ihn anzurufen, um zu fragen, ob die Batterie noch in Ordnung ist.
Auf einer abstrakteren Ebene versucht diese Anleitung zu zeigen, wie in einem offenen Internet der Dinge modulare Cloud-Dienste frei kombiniert werden können, um neue, einfache und zuverlässige Lösungen zu bauen. HTTP und Webhooks FTW! Aber fangen wir an...
Schritt 1: Sensor verdrahten
Setzen Sie das Ethernet Shield auf den Arduino und schließen Sie den Temperatursensor wie gezeigt an. Für Details zur Temperaturmessung mit dem TMP36-Sensor siehe z.B. Adafruit Learning System.
Falls Sie andere (digitale) Sensoren hinzufügen möchten, beachten Sie, dass einige Pins vom Ethernet Shield belegt sind.
Schritt 2: Yaler-Bibliothek installieren
Folgen Sie den drei Schritten für Installing the library unter yaler.net/arduino. Falls noch nicht geschehen, registrieren Sie sich unter yaler.net für ein kostenloses Testkonto und notieren Sie die Relay-Domain (der geheime Schlüssel wird nicht benötigt).
Schritt 3: Arduino programmieren
Laden Sie den TwilioYalerWebService Arduino-Quellcode herunter:
Öffnen Sie den Arduino-Code:
Das Programm implementiert einen sehr einfachen Webserver, der auf eingehende HTTP-Anfragen lauscht. Sobald eine Anfrage eingeht, antwortet das Programm mit einem XML-Dokument. Der Server kümmert sich nicht darum, ob der URL-Pfad / oder /voice.xml ist.
MAC-Adresse ändern: Stellen Sie sicher, dass die MAC-Adresse im Arduino-Code eindeutig ist. Dies ist besonders wichtig, wenn sich mehrere Arduinos im selben lokalen Netzwerk befinden. Ein einfacher Weg zu einer (hoffentlich) eindeutigen Adresse ist, die MAC-Adresse Ihres Computers nachzuschlagen und dann 1 zur letzten Ziffer zu addieren.
Ihre Relay-Domain eintragen: Anstatt einen lokalen Server mit EthernetServer server(80); zu erstellen, erstellen wir einen, der über den Yaler-Relay try.yaler.net erreichbar ist:
YalerEthernetServer server("try.yaler.net", 80, "RELAY_DOMAIN");
Ersetzen Sie RELAY_DOMAIN durch Ihre Relay-Domain, z.B. für gsiot-ffmq-ttd5:
YalerEthernetServer server("try.yaler.net", 80, "gsiot-ffmq-ttd5");
Sie können auch den lokalen Server verwenden, wenn Sie wissen, wie Sie Port Forwarding konfigurieren, um ein Loch für eingehende HTTP-Anfragen in Ihrer lokalen Firewall zu öffnen. Wichtig ist, dass Twilio den Arduino aus der Cloud erreichen kann.
Änderungen speichern und hochladen: Speichern Sie alle Änderungen und laden Sie das Programm auf Ihren Arduino. Behalten Sie das USB-Kabel an Ihrem Entwicklungscomputer angeschlossen und öffnen Sie die serielle Konsole, um Debugging-Ausgaben zu sehen.
Schritt 4: Auf den Arduino zugreifen
Greifen Sie von jedem Browser auf Ihren Arduino zu:
Die Yaler-Bibliothek macht Ihren Arduino (und damit das XML-Dokument) vom öffentlichen Internet aus erreichbar unter https://RELAY_DOMAIN.try.yaler.net/, z.B. für die Relay-Domain gsiot-ffmq-ttd5 ist die URL https://gsiot-ffmq-ttd5.try.yaler.net/. Oder, um es für Twilio schöner zu machen: https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml.
XML-Dokument prüfen: Der Inhalt des XML-Dokuments sagt Twilio, was es auf einen eingehenden Anruf antworten soll. Sie können sogar die Text-to-Speech-Stimme wählen. Hier ist es Alice. Twilios XML-Format heißt TwiML. Details unter twilio.com/docs/api/twiml. Beachten Sie, dass der Antworttext die aktuelle Temperatur enthält. Erwärmen Sie Ihren Sensor und aktualisieren Sie das Dokument in Ihrem Browser mit F5, um die Änderung zu sehen.
Fehlerbehebung: Falls Sie eine leere Seite oder einen Fehler erhalten, stellen Sie sicher, dass Ihr Ethernet-Kabel eingesteckt ist und prüfen Sie yaler.net/browser für browser-spezifisches Debugging.
Schritt 5: Twilio-Nummer einrichten
Registrieren: Zuerst müssen Sie sich unter twilio.com für einen Twilio-Account registrieren.
Telefonnummer kaufen: Um Anrufe zu empfangen, benötigen Sie eine Nummer, die (klein) kostet. Loggen Sie sich ein, navigieren Sie zu Numbers und wählen Sie den Twilio Numbers Untermenü, um den Manage Numbers Tab zu sehen. Klicken Sie auf Buy a number, wählen Sie die Voice Checkbox und klicken Sie Search, dann wählen Sie eine Nummer und klicken Sie Buy.
Voice.xml Webhook-URL konfigurieren: Im Manage Numbers Tab klicken Sie auf die gerade gekaufte Nummer. Setzen Sie die Response URL auf https://RELAY_DOMAIN.try.yaler.net/voice.xml und stellen Sie sicher, dass POST ausgewählt ist.
Schritt 6: Testanruf tätigen
Sobald der Arduino eingerichtet ist, können Sie ihn von jedem Telefon anrufen – sogar von Opas.
Das war's, danke fürs Lesen. @tamberg
Code
Der Code ist auf Bitbucket verfügbar: TwilioYalerWebService.ino
Schaltplan
Schaltplan-Bild verfügbar im Originalprojekt.
Herstellungsprozess
- Antitranspirant/Deodorant-Sticks: Wissenschaft, Geschichte und Fertigungs-Einblicke
- Raspberry Pi Garagentor-Öffner mit Live-Video-Streaming – Schritt-für-Schritt-Anleitung
- Hochauflösende 3D-Bildgebung von bleistiftförmigen GaN/(In,Ga)N Kern-Schale-Nanodrähten durch Elektronentomografie
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Telefonanrufe auf Arduino UNO mit Twilio & Yaler ermöglichen – Call My Arduino Projekt
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Business Case für CMMS aufbauen: Instandhaltungseffizienz & ROI steigern