This project uses a camera to project an image across multiple Kindle displays. You can move each Kindle to show different parts of a larger image.
Any image can be used, but this particular setup displays sections of "A Sunday Afternoon on the Island of La Grande Jatte"- the painting's texture shows very well on the e-ink display.
Every few seconds, a controller (consisting of a raspberry pi zero and a camera) instructs a Kindle to black out the display, then illuminate each of its four corners. The controller records these five images and subtracts the black base image from the corner image to get a difference:
Result of "corner - base" image
Output to the Kindle
Points on the screen recognized by the controller and camera
I recently found out that the going price for a working used Kindle Touch is about $20, and that they are remarkably easy to jailbreak. Using a controller with SSH permissions, you can update the Kindle display to show any image through the eips command.
I wanted to be able to control my coffee machine using voice, and more importantly, be able to start the brew process as soon as I wake up. Of course, I still have to grind the beans and load up my coffee machine, so it's not fully automatic.
This is just a simple relay, powered by a Raspberry Pi and a custom Alexa Smart Home skill.
The SmartHome skill invokes an AWS Lambda hosted on my AWS account to control the device. That lambda drops a message in an SQS queue, and my Pi watches the queue for updates. When it sees an update, it toggles the GPIO pin connected to the relay, toggling power to the coffee maker.
One interesting hack is that the Smart Home skill requires integration with some OAuth provider. If you're developing your own skill for your own home, you can just use Login with Amazon as the OAuth provider and disregard the identity in your skill. This guide explains how to enable Login with Amazon for your skill: https://www.jovo.tech/tutorials/alexa-login-with-amazon-email
The AWS IoT button is a few years old now. This is one of many gadgets I bought before knowing its use. Today it's glued to my washer/dryer and notifies me when my laundry has finished. Just tap once for the washer or twice for the dryer.
The code is very simple. A Lambda function is invoked, which starts a StepFunctions workflow execution. The workflow waits a specified duration of time (37 minutes for my washer, 107 minutes for my dryer) before sending an SNS message. My cell phone is subscribed to the SNS topic.
I successfully made the trip all the way down to Santa Monica (KSMO) and back to Seattle. Rather than journaling in two places, I ended up keeping track of the trip on my Instagram: https://www.instagram.com/dylanhrush/