Difference between revisions of "ECE434 Project-Infinity Mirror"

From eLinux.org
Jump to: navigation, search
(Created page with "PT PT {{YoderHead}} Team members: Tyler Thenell, Aidan Moss == Grading Template == I'm using the following...")
 
(Executive Summary)
 
(37 intermediate revisions by the same user not shown)
Line 27: Line 27:
 
== Executive Summary ==
 
== Executive Summary ==
  
Picture that summarizes the project.
+
Our ECE 434 we are using the Beagle Bone we are writing audio controlled python code that can then change the brightness and color of a LED strip to change in sync with music. The LEDs are encased in a decahedron of acrylic that has been treated with a one way mirror film to create an optical illusion that makes it appear the lights are going on forever. This control is achieved by using a kernel driver that communicates with the Beagle Bones PRU to relay data to the LEDs. Example picture of what the completed system looks like:
  
[[File:DIT-Infinity-Mirrors.jpg|800px]]
 
  
https://www.twowaymirrors.com/wp-content/uploads/2020/11/DIY-Infinity-Mirrors.jpg
+
[[File:InfMirror2.jpeg|400px]]
  
Using the Beagle Bone we are bouncing and changing the brightness and color of a LED strip that is also attached to the Bone. We are then encasing this system in a physical system of mirrors to create a optical illusion that makes it appear the moving lights go on forever.
+
== Packaging ==
We are very early on in this project still, as we are still gathering the physical parts needed to construct it. We have found a dedicated library for the LED strips
+
·Acrylic sheets
as well.
+
 
 +
·Strip of SK6812 LEDS
 +
 
 +
·Adhesive (we used hot glue)
 +
 
 +
·KY037 Microphone
 +
 
 +
·One way mirror film
 +
 
 +
·Wire
 +
 
 +
Pinout:
 +
 
 +
[[File:BBPinoutInfMirror.PNG|400px]]
  
== Packaging ==
 
8 sections of plexiglass, 5m strip of LEDS, adhesive
 
 
== Installation Instructions ==
 
== Installation Instructions ==
  
Run "git clone https://github.com/mossac/InfMirror.git" in your command line to import the software needed to run the project
+
Clone repo located here:
 +
https://github.com/mossac/InfMirror
 +
 
 +
This repo contains all the code needed to run the SK6812 LED strands to begin running the PRU driver simply:
 +
 
 +
·cd down into InfMirror/LEDStatic/
 +
 
 +
·run $source setup.sh
 +
 
 +
·run $make
 +
 
 +
The kernel driver should be active, to test you can run commands in ExampleCommand.sh which will turn the first LED in your strip white if it is running correctly if not follow the commands in '''section 1.16 of the link below''' as you may not have the rpmsg.pru driver installed that the kernel driver requires:
 +
 
 +
https://markayoder.github.io/PRUCookbook/05blocks/blocks.html
 +
 
 +
Physical Pinout:
 +
 
 +
·P9_29 → LED Strip data line
 +
 
 +
·P9_40 → Microphone Digital Output
  
 
== User Instructions ==
 
== User Instructions ==
  
Simply run "python3 main.py" in the directory you downloaded to run the program.
+
·After restart, start the PRU driver using the installation instructions used above.
 +
 
 +
·Run any python file using $./filename.py
 +
 
 +
·neo-gpio.py and neo-gpioFlip.py are the python files with integrated support for microphone input
 +
 
 +
·Interact with the driver and change induvial lights using the commands explained below
 +
 
 +
== Driver Commands Explained ==
 +
Set up the data you want to send using the command below, replace values in quotes with desired values:
  
== Highlights ==
+
·$ echo "Led position in strip" "Red led" "Green led"  "Blue led" "White led" > /dev/rpmsg_pru30 
  
 +
Send the data to the strip:
  
 +
·$ echo -1 > /dev/rpmsg_pru30
  
== Theory of Operation ==
+
== Highlights ==
 +
[[File:FinishedDodec.jpg|400px]]
  
 +
Demo video: https://www.youtube.com/watch?v=3I1u_4W5rN4
  
 +
== Theory of Operation ==
 +
The software for this project uses a kernel driver that is coded in C to talk directly with the PRU that then relays info to the SK6812 LED strip that uses RGBW LEDs. Using this driver there is then python programs that can be written to communicate with driver. This is super nice because it allows the software and coding of new light shows to be easy using a high level language but also we maintain a lot of the advantages of using something that's low level like C.
  
 
== Work Breakdown ==
 
== Work Breakdown ==
 +
 +
Both members helped on both sections but each member researched and was a expert on their specific part. 
  
 
Tyler:
 
Tyler:
  Hardware assembly - Nov 12th
+
  Hardware assembly  
Circuit analysis on the system - TBD
 
 
Aidan:
 
Aidan:
  LED library integration - Nov 5th
+
  LED library integration
+
 
 
== Future Work ==
 
== Future Work ==
  
Add a microphone input to the system to change the leds based off music played around it.
+
·Startup driver on boot sequence
 +
 
 +
·Add Blynk integration so you can control what sequence you are running from a smart phone
 +
 
 +
·Refine the beat detection and add a more sensitive microphone input
  
 
== Conclusions ==
 
== Conclusions ==
  
Fun project that we will be using later on as a totem at music festivals or just as a cool decoration item to use in our rooms.  
+
Fun project that we will be using later on as a cool decoration item to use in our rooms.  
 
Has its own unique challenges but its also very expandable as you could add control from your phone, or a microphone input or sever different types of light shows.
 
Has its own unique challenges but its also very expandable as you could add control from your phone, or a microphone input or sever different types of light shows.
  
 
{{YoderFoot}}
 
{{YoderFoot}}

Latest revision as of 19:55, 16 November 2021

thumb‎ Embedded Linux Class by Mark A. Yoder


Team members: Tyler Thenell, Aidan Moss

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

09 Executive Summary
09 Packaging
09 Installation Instructions 
09 User Instructions
09 Highlights
09 Theory of Operation
09 Work Breakdown
09 Future Work/Conclusions
09 Hackster.io
09 Demo/Poster
00 Not Late

Score:  90/100

Executive Summary

Our ECE 434 we are using the Beagle Bone we are writing audio controlled python code that can then change the brightness and color of a LED strip to change in sync with music. The LEDs are encased in a decahedron of acrylic that has been treated with a one way mirror film to create an optical illusion that makes it appear the lights are going on forever. This control is achieved by using a kernel driver that communicates with the Beagle Bones PRU to relay data to the LEDs. Example picture of what the completed system looks like:


InfMirror2.jpeg

Packaging

·Acrylic sheets

·Strip of SK6812 LEDS

·Adhesive (we used hot glue)

·KY037 Microphone

·One way mirror film

·Wire

Pinout:

BBPinoutInfMirror.PNG

Installation Instructions

Clone repo located here: → https://github.com/mossac/InfMirror

This repo contains all the code needed to run the SK6812 LED strands to begin running the PRU driver simply:

·cd down into InfMirror/LEDStatic/

·run $source setup.sh

·run $make

The kernel driver should be active, to test you can run commands in ExampleCommand.sh which will turn the first LED in your strip white if it is running correctly if not follow the commands in section 1.16 of the link below as you may not have the rpmsg.pru driver installed that the kernel driver requires:

https://markayoder.github.io/PRUCookbook/05blocks/blocks.html

Physical Pinout:

·P9_29 → LED Strip data line

·P9_40 → Microphone Digital Output

User Instructions

·After restart, start the PRU driver using the installation instructions used above.

·Run any python file using $./filename.py

·neo-gpio.py and neo-gpioFlip.py are the python files with integrated support for microphone input

·Interact with the driver and change induvial lights using the commands explained below

Driver Commands Explained

Set up the data you want to send using the command below, replace values in quotes with desired values:

·$ echo "Led position in strip" "Red led" "Green led" "Blue led" "White led" > /dev/rpmsg_pru30

Send the data to the strip:

·$ echo -1 > /dev/rpmsg_pru30

Highlights

FinishedDodec.jpg

Demo video: https://www.youtube.com/watch?v=3I1u_4W5rN4

Theory of Operation

The software for this project uses a kernel driver that is coded in C to talk directly with the PRU that then relays info to the SK6812 LED strip that uses RGBW LEDs. Using this driver there is then python programs that can be written to communicate with driver. This is super nice because it allows the software and coding of new light shows to be easy using a high level language but also we maintain a lot of the advantages of using something that's low level like C.

Work Breakdown

Both members helped on both sections but each member researched and was a expert on their specific part.

Tyler:

Hardware assembly 

Aidan:

LED library integration

Future Work

·Startup driver on boot sequence

·Add Blynk integration so you can control what sequence you are running from a smart phone

·Refine the beat detection and add a more sensitive microphone input

Conclusions

Fun project that we will be using later on as a cool decoration item to use in our rooms. Has its own unique challenges but its also very expandable as you could add control from your phone, or a microphone input or sever different types of light shows.




thumb‎ Embedded Linux Class by Mark A. Yoder