Difference between revisions of "S18: RGB LED Sound Behavior on a Skateboard"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Nordic/Wifi)
(Nordic/Wifi)
Line 328: Line 328:
 
The communication between Audio Analyzer module and LED Display module is done utilizing the on-board Nordic IC. The analog data collected from audio equalizer chip is converted to digital format using ADC peripherals on the board. The data is then processed to determine speed, intensity and frequency range of operation before formatting and storing this data in a data structure. To decrease the payload size of packets, all the aforementioned properties of a band of frequency range are coded in one byte. Data of all the bands is then transmitted in a single packet. At the LED Display module, similar Nordic IC receives the data and extracts band information from the packet and sends to the task that is reponsible for changing the behavior of LEDs in the strip.
 
The communication between Audio Analyzer module and LED Display module is done utilizing the on-board Nordic IC. The analog data collected from audio equalizer chip is converted to digital format using ADC peripherals on the board. The data is then processed to determine speed, intensity and frequency range of operation before formatting and storing this data in a data structure. To decrease the payload size of packets, all the aforementioned properties of a band of frequency range are coded in one byte. Data of all the bands is then transmitted in a single packet. At the LED Display module, similar Nordic IC receives the data and extracts band information from the packet and sends to the task that is reponsible for changing the behavior of LEDs in the strip.
  
[[File:Nordic_block_png.png |centre|'''Block diagram of Wireless communication''']]
+
[[File:Nordic_block_png.png |center|'''Block diagram of Wireless communication''']]
 +
[[File:LED_IC.jpg|300px|thumb|left|'''WS2801: LED Driver IC''']]
 +
 
  
  

Revision as of 04:51, 23 May 2018

Project Title

RGB LED Sound Behavior on a Skateboard

Abstract

Consumers are always looking to customize and decorate their belongings and clothes with lights and flamboyant colors. With music festivals, parties, and LEDs usage on the rise, we can design a behavioral system that influences the intensity and color of the RGB LEDs on products such as a skateboard, t-shirt, bike, or other countless products. The behavior LEDs can be a great attraction to music lovers and to other applications when Internet of Things (IoT) and groups of users are involved. Applications such as an echo or synchronized effect can be done and implemented using IoT.

Objectives & Introduction

The project focuses on the idea manipulating an array of LEDs based on sound input. The array of LEDs could mimic a sound equalizer, change colors based on the sound intensity, beat, or frequency of the music. This project would be placed on a transportation tool such as a bike or skateboard simply for the aesthetics. A microphone would feed the analog data, and then be converted to digital via an ADC IC that outputs frequency bands. A PCB board will be used to power all LEDs, have a display terminal for user input features, and microphone connection. The data fed into the SJone board will then be filtered, processed, then sent to display onto the LEDs according to the music.

Team Members & Responsibilities

  • Alan Chen
    • LED Driver & sound behavior mechanics, code integration for LED Design
  • Dhaval Raval
    • PCB design, Hardware Design
  • Sarvesh Harhare
    • Audio Signal Processing
  • Kathan Patel
    • Data logging, IoT
    • Audio Signal Processing
  • Niraj Surti
    • Availability of data collected over local network to be accessed by other modules.

Schedule

Week# Start Date Planned Work Actual Work Progress
1 4/10/18 Project Job Discussion/Parts List Project Division Discussion/Project Scope Completed
2 4/17/18 WikiPage/PCB Design/Parts Ordered/Coding Majority Parts Received/Drivers Written Complete
  • LED Driver
    • Write PWM Interrupt Driver and Test on LED Strip
  • PCB Design
    • Parts Buying/Designing
  • LED Driver
    • PWM Interrupt Driver (timing issues) Written and Debugging
  • Majority of Parts Ordered
  • Basic PCB Design for LED Strip
3 4/24/18 PCB Design/IoT/LED PCB Design/Start IoT/Testing LED Drivers Complete
  • LED Driver
    • Write Color Algorithm to change Colors on LED strip.
  • I2C Driver for 16 bit ADC
    • Achieve basic communication with ADS1115 and SJONE using I2C bus
  • PCB Design
    • Circuit Design and simulation
  • LED Driver
    • Write TC Interrupt Driver instead of PWM
    • Discover TC Interrupt can't achieve 800KHz also
    • Bought LED strip utilizing SPI and change LED strip colors
  • PCB Design
    • Microphone circuit design completed
    • Change in circuit as LED Strip is also changed
4 5/1/18 Implementation/Testing PCB/Coding Ordered PCB/LED Behavior Modes/Debugging Complete
  • LED Driver
    • Integrate ADC/Equalizer Reading with LED color algorithm
    • Discuss Protocol and Driver for LED on Wiki
  • ADC/Equalizer
    • Interface ADC with SJOne board for Microphone circuit
  • IoT Communication
    • Send a byte of data using Nordic Wireless Module between SJones
  • PCB Design
    • Schematic Design
  • LED Driver
    • Achieve SPI LED Communication
    • Discuss Technical Challenge of LED strip using 800KHz PWM on Wiki
  • IoT Communication
    • Data exchange between two SJone-boards using Nordic - Completed
  • PCB Design
    • Schematic has to changed according to the MSGEQ7 Chip
5 5/8/18 Testing/Debugging/Hardware Design LED Mode Input/IoT Integration/Freq Analysis Complete
  • LED Driver
    • Develop more different LED Display Modes i.e. color/sound behavior
    • Update Wiki on Communication and LED Behavior based on Sound
  • PCB Designing
    • PCB Design and sending for fabrication
  • IoT Communication
    • Wireless Communication integration with System
  • LED Driver
    • Developing more LED Strip Modes (equalizer, pulse, sound input)
    • Make Code more Modular and Consumer Friendly
  • PCB Design
    • PCB Ordered
  • IoT Communication
    • Debugging crashing issue
6 5/15/18 Debugging/Mounting/Finalizing Mounting and Testing in-progress
  • LED Driver
    • Troubleshoot and Make sure LED Strip works on IoT platform/Update Wiki
  • PCB Soldering
    • Mounting and Soldering the PCB
  • IoT Communication
    • Integration and Testing
  • LED Driver
    • LED Strips working on Audio Signals
  • PCB Soldering
    • Mounting components on the PCB
  • IoT Communication
    • Integration with System as whole
7 5/22/18 Final Exam/Writing Report TBA TBA
8 5/23/18 Demo/Presentation TBA TBA

Parts List & Cost

Part Name Cost Qty Comments
SJone Board 3 LED behavior & IoT hub (send & receive)
Raspberry Pi 1 IoT communication
Skateboard 1 Project Mount
LEDs strips 2 1 Meter RGB LED strips
PCB 2 One for each SJone Board
Microphone 1 Receiver of Music
ADC Chip 1 Converter
ESP WiFi module 1

Design & Implementation

The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.

Hardware Design

Audio Analyzer

picture
icLayout
multiplexerOperation
timingDiagram

Introduction:

This Audio Analyzer module features the MSGEQ7 graphic equalizer display filter. Sound is broken down into seven frequency bands and the peak level for each band can be read. The seven frequencies measured are as follows: 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz and 16kHz.

This Audio Analyzer module can be used to create sound visualizers, detect patterns in music or add sound activation to the microcontroller.

Description:

The seven band graphic equalizer IC is a CMOS chip that divides the audio spectrum into seven bands, 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz and 16kHz. The seven frequencies are peak detected and multiplexed to the output to provide a DC representation of the amplitude of each band. No external components are needed to select the filter responses. Only an off chip resistor and capacitor are needed to select the on chip clock oscillator frequency. The filter center frequencies track this frequency. Other than coupling and decoupling capacitors, no other external components are needed. The chip supply can be between 2.7 and 5.5 volts with 5 volts providing the best performance. The device has very low quiescent current (less than 1mA typical) for portable audio devices. The multiplexer is controlled by a reset and a strobe, permitting multiplexer readout with only two pins. The multiplexer readout rate also controls the decay time (10% decay per read), so no external pins are needed for this function.

Multiplexer Operation:

The DC peak output for measurement is selected using the reset and strobe pins. Reset high resets the multiplexer. Reset low enables the strobe pin. After the first strobe leading edge, 63Hz output is on OUT. Each additional strobe leading edge advances the multiplexer one channel (63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz, 16kHz etc.) and this will repeat indefinitely. The multiplexer read rate is also the output decay time control. Each read decays that channel approximately 10%.

RGB LED Strips

LED Strip Circuit
The WS2801 IC is a LED driver designed for RGB LED displays and lighting systems. In the project, the WS2801 is utilized in a cascading RGB LED strip. The WS2801 adopts a two-wire input control scheme, consisting of a data and clock input. The WS2801 will either output a PWM waveform (out of Bout, Gout, Rout) or send the data and clock to the following WS2081 using serial shift registers. In order to communicate and manipulate the RGB LED's, SPI is suggested in order to drive the clock and specified data waveform into the WS2801 (refer to software section). In order to latch the data fed into the WS2801, a 500 micro-second period (where the clock input is set low) is required in order shift the data into the next cascading WS2801. The following images below and table will give a diagram of the WS2081 pinout and basic circuit diagram of the LED strip. Since the WS2801 echos the data to the next WS2801, users will be able to address to each individual LED and set the color upon latch.
WS2801: LED Driver IC
Specifications Min Max Units
Input Clock Freq 25 MHz
Power Supply Volt 3.3 5.5 V
Latch Time 500 us
Input Current -1 1 uA
Constant Output Current 5 30 mA
Output Pin Voltage -0.3 7 V
Power Dissipation 600 mW

Hardware Interface

General Purpose Input Output (GPIO)

There are four switches (SW0-3) existing on the SJone board. Each switch is treated as an input pin. Each input pin symbolizes a feature for the LED strip (Mode, Color, Mode Behavior, Speed/Color Difference). In order to make sure the button was treated once for a single press, a basic de-bouncing check was done.

Serial Peripheral Interface (SPI)

The SJone board utilizes SPI in order to communicate to the WS2801 IC (RGB LED strip). In the datasheet, the WS2801 takes in a CLK and DATA (MOSI) Input from the SJone. The SJone board has two available SPI pins. However since SPI0 was utilized by the Nordic, SPI1 was the only SPI pin used to run a single LED strip consisting of 32 single bit RGB LEDs.
Nordic/Wifi

Analog to Digital (ADC)

Software Design

Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.

SPI

LED's


Nordic/Wifi

The communication between Audio Analyzer module and LED Display module is done utilizing the on-board Nordic IC. The analog data collected from audio equalizer chip is converted to digital format using ADC peripherals on the board. The data is then processed to determine speed, intensity and frequency range of operation before formatting and storing this data in a data structure. To decrease the payload size of packets, all the aforementioned properties of a band of frequency range are coded in one byte. Data of all the bands is then transmitted in a single packet. At the LED Display module, similar Nordic IC receives the data and extracts band information from the packet and sends to the task that is reponsible for changing the behavior of LEDs in the strip.

Block diagram of Wireless communication
WS2801: LED Driver IC



Figure: Block diagram of Wireless communication

SERCOM

IoT (Rasberry Pi)

ADC Readings

LED Display

LED algorithm- light change

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

RGB LED STRIP

Steps
WS2801 Input Data Frame

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

<Bug/issue name>

Attaining 800 kHz on a PWM LED Strip

Goal: Achieve 800kHz PWM on a LED strip (WS2812B).
Issue: Barely Reach 800kHz PWM using PWM Interrupt Driver and/or TC Interrupt Driver
Background TBA
Conclusion: Hardware can barely obtain ~800kHz waveform at the cost of RTOS performance and requires speed of a PLL CPU speed of 100MHz on SJone.

Utilize Different LED strip and change protocol to SPI.

Conclusion

Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?

Project Video

Upload a video of your project and post the link here.

Project Source Code

References

Acknowledgement

Any acknowledgement that you may wish to provide can be included here.

References Used

List any references used in project.

Appendix

You can list the references you used.