Telefoongesprekken inschakelen op Arduino UNO met Twilio en Yaler – Bel Mijn Arduino Project
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Arduino Ethernet Shield | 1 |
| Analoge temperatuursensor (bijv. TMP36) | 1 |
| Breadboard en jumper-draden | 1 set |
Over dit project
(Van https://www.instructables.com/id/Call-my-Arduino/)
Hoe je telefoongesprekken naar je Arduino mogelijk maakt
Twilio is een webservice die alles in een telefoon verandert. Het is een REST API voor telefonie, gehost in de cloud. In dit geval vraagt Twilio de Arduino om een nieuw voice.xml-bestand wanneer iemand het vooraf gedefinieerde telefoonnummer van de Arduino belt. De inhoud van het antwoord wordt door Alice, een stem van Twilio's text-to-speech-engine, voorgelezen aan de beller.
Yaler.net maakt webtoegang mogelijk tot ingesloten apparaten achter een firewall, NAT of een mobiele netwerkrouter. Hier stelt het Twilio in staat om toegang te krijgen tot het voice.xml-bestand op de Arduino, dat zich in een lokaal netwerk bevindt en daarom geen publiek IP-adres heeft (openbaarmaking: ik ben oprichter van Yaler).
Deze demo gebruikt een temperatuursensor, maar elke andere sensor zou ook werken. Een voorbeeld uit de praktijk zou de Canary (nu Birdi) rookmelder zijn die bezorgde eigenaren in staat stelt er op te bellen om te vragen of de batterij nog goed is.
Op een abstractere probeert deze Instructable te tonen hoe, in een open Internet of Things, modulaire cloud-services vrij gecombineerd kunnen worden om nieuwe, eenvoudige en betrouwbare oplossingen te bouwen. HTTP en Webhooks FTW! Maar laten we beginnen...
(Hier is een video die dit project uitlegt van IoTLive, onderdeel van IoTDay 2014)
Materiaal
- Arduino Uno (bijv. https://www.adafruit.com/products/50)
- USB-kabel Standaard A-B (bijv. https://www.adafruit.com/products/62)
- Arduino Ethernet Shield (bijv. https://www.adafruit.com/products/201)
- Ethernetkabel (bijv. https://www.adafruit.com/products/995)
- Analoge temperatuursensor (bijv. https://www.adafruit.com/products/165)
- Breadboard-draden (bijv. https://www.adafruit.com/products/153)
- Breadboard (bijv. https://www.adafruit.com/products/64)
Stap 1: De sensor aansluiten
Plaats de Ethernet-shield op de Arduino en sluit de temperatuursensor aan zoals getoond. Voor details over temperatuurmeting met de TMP36-sensor, zie bijv. https://learn.adafruit.com/tmp36-temperature-sensor/using-a-temp-sensor
Als je andere (digitale) sensoren wilt toevoegen, houd er rekening mee dat sommige pinnen worden gebruikt door de Ethernet-shield.
Stap 2: De Yaler-bibliotheek installeren
Volg de drie stappen voor Installing the library op https://yaler.net/arduino. Als je dat nog niet gedaan hebt, registreer je op https://yaler.net/ voor een gratis proefaccount en noteer het relay-domein (de geheime sleutel is niet nodig).
Stap 3: De Arduino programmeren
Download de TwilioYalerWebService Arduino-broncode
https://bitbucket.org/tamberg/iotworkshop/raw/default/Arduino/TwilioYalerWebService/TwilioYalerWebService.ino?at=default
Open de Arduino-code
Het programma implementeert een heel simpele webserver die luistert naar binnenkomende HTTP-verzoeken. Zodra een verzoek binnenkomt, reageert het programma met een XML-document. De server maakt niet uit of de URL-pad / of /voice.xml is.
Wijzig het MAC-adres
Zorg dat het MAC-adres in de Arduino-code uniek is. Dit is vooral belangrijk als er meerdere Arduinos in hetzelfde lokale netwerk zitten. Een eenvoudige manier om een (hopelijk) uniek adres te krijgen is om het MAC-adres van je computer op te zoeken en dan 1 toe te voegen aan het laatste cijfer.
Voer je relay-domein in
In plaats van een lokale server te maken met EthernetServer server(80); maken we er een die bereikbaar is via de Yaler-relay try.yaler.net, in de volgende regel:
YalerEthernetServer server("try.yaler.net", 80, "RELAY_DOMAIN");
Vervang RELAY_DOMAIN door je relay-domein, bijv. voor gsiot-ffmq-ttd5 typ:
YalerEthernetServer server("try.yaler.net", 80, "gsiot-ffmq-ttd5");
Je kunt ook de lokale server gebruiken, als je weet hoe je port forwarding configureert om een gat voor binnenkomende HTTP-verzoeken in je lokale firewall open te maken. Het belangvolle is dat Twilio de Arduino vanuit de cloud kan bereiken.
Wijzigingen opslaan en uploaden
Sla alle wijzigingen op en upload het programma naar je Arduino. Houd de USB-kabel verbonden met je ontwikkelcomputer, en open de seriële monitor om debug-output te zien.
Stap 4: De Arduino benaderen
Benader je Arduino vanuit elke browser
De Yaler-bibliotheek maakt je Arduino (en daarmee het XML-document) bereikbaar vanaf het publieke internet op https://RELAY_DOMAIN.try.yaler.net/, bijv. voor het relay-domein gsiot-ffmq-ttd5 is de URL https://gsiot-ffmq-ttd5.try.yaler.net/ Of, om het er netter voor Twilio uit te laten zien: https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml
Controleer het XML-document
De inhoud van het XML-document vertelt Twilio wat het moet antwoorden op een binnenkomend telefoongesprek. Je kunt zelfs de text-to-speech-stem kiezen. Hier is dat Alice. Twilio's XML-formaat heet TwiML. Zie https://www.twilio.com/docs/api/twiml voor details. Let op dat de antwoordtekst de actuele temperatuur bevat. Verwarm je sensor en vernieuw het document in je webbrowser met F5 om te zien hoe het verandert.
Probleemoplossing
Als je een lege pagina of een fout krijgt, controleer of je Ethernet-kabel zit en check https://yaler.net/browser voor browser-specifieke debugging.
Stap 5: Een Twilio-nummer instellen
Registreren
Eerst, om een Twilio-account te krijgen, moet je je registreren op https://www.twilio.com/
Een telefoonnummer kopen
Om gesprekken te ontvangen heb je een nummer nodig, wat een (klein) bedrag kost. Log in, navigeer naar Numbers en selecteer de Twilio Numbers submenu, om het Manage Numbers tabblad te zien.
Klik op de Buy a number knop, vink het Voice vakje aan en klik op Search, kies dan een nummer en klik op Buy om het te kopen.
De voice.xml Webhook URL configureren
In het Manage Numbers tabblad, klik op het nummer dat je net gekocht hebt. Stel de Response URL in op https://RELAY_DOMAIN.try.yaler.net/voice.xml en zorg dat POST geselecteerd is, bijv. voor het Yaler relay-domein gsiot-ffmq-ttd5 stel de Response URL in op https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml
Stap 6: Een testgesprek plaatsen
Zodra de Arduino is ingesteld, kun je hem vanaf elke telefoon bellen - zelfs vanaf die van je opa.
Dat is het, dank voor het lezen. @tamberg
Code
De code is beschikbaar op Bitbucket:
https://bitbucket.org/tamberg/iotworkshop/raw/default/Arduino/TwilioYalerWebService/TwilioYalerWebService.ino?at=default
Schema
Zie het bijgevoegde schema voor de bedrading.
Productieproces
- Een sterke business case voor CMMS bouwen: Onderhoudsefficiëntie en ROI verhogen
- Antitranspirant/Deodorant Staven: Wetenschap, Geschiedenis en Productie-inzichten
- Raspberry Pi Garagedeuropener met Live Videostreaming – Stapsgewijze Handleiding
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
- Telefoongesprekken inschakelen op Arduino UNO met Twilio en Yaler – Bel Mijn Arduino Project
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
- Hoog-resolutie 3D imaging van potloodvormige GaN/(In,Ga)N kern-schil nanodraden via elektronen tomografie