A small proof of concept project to connect the Arduino to Alexa audio commands.
See this link for outcome of this project, which is aimed at helping you kickstart your own project. https://www.youtube.com/watch?v=M7Y7hVBxCtM&t=2s
Alexa Lambda API Gateway IAM Permissions / Roles Arduino UNO USB serial communication for initial app NODE JS as middleware from AWS to Serial
A: Alexa + Lamda (receive intents and request to update database)
e.g.
Emit from Alexa's Lambda function:
{ light: 'on' }
B: Middleware node js server to send information to serial.
e.g.
Send serial data to Arduino: '1' or '0'
C: Handle serial data inside arduino program.
e.g.
if (Serial.read() == '1') { digitalWrite(led, HIGH); }
This project will demonstrate how an arduino can be connected to Alexa and the related AWS services to provide a way to control electronic components.
- Build an interface with Alexa and services
- Create a method to send Serial data to Arduino (Lambda enpoint to serial data)
- Seamlessly interact with Alexa to control the component using ON / OFF as commands to control the light
- Use Websockets and AWS IOT service
- Using WIFI or Bluetooth Arduino components
- Create a way to allow for the application to become smarter
- Include a light sensor
- Add logic to turn the light on and off when light / dark
- Apply the users perferences to override the initial settings
Diagram to illustrate the technology parts needed to replicate this project, also providing and overview of the applications system flow.
- Alexa device (Echo Dot, or another Alexa enabled hardware device)
- Alexa Led Test skill (this is the skill created to understand the intents and slot in this demo)
- Lambda instance A is responsible for connecting to Alexa, interpreting (json inputs) and writting them to the db.
- A Dynamo DB instance is used to store the data from the input
- Lambda instance B is responsible for reading the database (trimming the instance id from its data output)
- The API Gateway provides a get method to read from Lambda instance B's output
- A Node Application is used as a headless API to receive, transform and send data to the arduino via the serial
- Arduino is programmed to recieve data from the serial port and control the Led as per user request.
Screen can be used to talk to the serial port via the terminal - screen /dev/ttyS0 19200 https://www.npmjs.com/package/serialport - popular serial port node library