This is a programmable WIFI connected control knob that will be capable of connecting to some host device and controlling whatever the user wants. For example in my case I want to use this to adjust the volume on my apartments media center PC. It will also be capable of other functions through user programming capabilities.
We have many TV shows and Movies that vary in noise level. We have to constantly turn the volume up or down through a VNC app on our phones. I realize this could probably be fixed with a simple script or program to automatically detect noise level and adjust volume but that is boring. So that is why I decided to completely over engineer a solution to our problem.
- Adjustable knob sensitivity
- LED level indication
- WIFI Connectivity
- JSON parsing/formatting interface
- Battery Operated
- Inductive Charging
- Motor for preset positions. Completely pointless because quad encoder. More for theatrical effects.
- Fingerprint Security Maybe Possibly? I don't know I have a free fingerprint reader.
- Microcontroller: The uC I chose is the Teensy 3.1 (MK20 Freescale).
- WIFI: ESP8266 from seeed studio. Simple choice because of price.
- Quadrature Encoder: The quad encoders being used are illuminated RGB quad encoders from sparkfun. They also double as a push button. I used a quad encoder so I could handle sensitivity in software and it's more fun to be able to spin a knob infinitely.
- Level Shifting: A bi-directional level shifter is used for the Adafruit NeoPixel ring's data signal. This signal is a 5V logic signal.
- Indicators: For level indication a Adafruit NeoPixel ring is used.
- This project will severely limit the use of Arduino functions in the near future.I want to be as generic as possible with my code. I want to be able to port this project to another microprocessor for the final version.
- When I think of Arduino functions I see it as a level of abstraction above a HAL(hardware abstraction layer). Currently I am using the higher level functions to get my system up and running (digitalRead/write etc...). I would like to remove those high level functions and only use a provided HAL which will give me a much larger range and control of the hardware in my system. Doing this in conjunction with hardware interfaces into my higher level code will give me a level of abstraction and portability I am looking for.
More details later...
24 LED NEO Pixel Ring
Illuminated Quadrature Encoder
Quad Encoder with RGB LED and button
SparkFun Logic Level Converter - Bi-Directional
Used for neo pixel signal
10/22/2015 at 19:16 •
So I have been focused recently on just writing the necessary code to get the base system up and running. Every now and then I run into a future feature that will at some point become critical. This post is about one of those ideas.
How does a user select a WIFI network? What is the interface going to look like?
- Simple and quick connection to network
- Standard Protocol / don't need to maintain.
- Little to no extra software.
- Router must be available to user.
- Some known security flaws.
- Might take some work to get this feature up and running with the ESP8266.
- Host a mini webpage
- Have the ESP8266 host a network and webpage. Connect from phone or computer and enter the credentials of network you would like to connect to.
- Don't need physical access to router.
- Customization for the webpage.
- Valid documentation on how to do this already out there.
- Maybe too many steps to set device up.
- Possible security issues?(Need to do more research)
- Software Intensive.
- Select WIFI network on your phone and tap it to the knob.
- No fussing around with a web interface probably.
- Hardware Intensive. This will add an extra probably unnecessary feature
From my solutions list I am probably going to host a mini webpage at first. This is probably my best bet since I won't have to pull any unknown features out of the ESP8266 module and it doesn't add any extra hardware.
If anyone has better or different ideas I would love to hear them.
View project log
Enjoy this project?