dinolight
play

DINOLIGHT Will Gowell, Zack Teasdale, Spencer Dennis 2 CUSTOMER - PowerPoint PPT Presentation

1 DINOLIGHT Will Gowell, Zack Teasdale, Spencer Dennis 2 CUSTOMER NEEDS The System Must: mirror colors on screen using rear LEDs in real time accept and output HD digital video signal have a plug and play setup be controllable


  1. 1 DINOLIGHT Will Gowell, Zack Teasdale, Spencer Dennis

  2. 2 CUSTOMER NEEDS The System Must: • mirror colors on screen using rear LEDs in real time • accept and output HD digital video signal • have a plug and play setup • be controllable and configurable from web app • integrate with existing smart lighting • have an all-in-one enclosure and modular light strips • fit any size screen • have a simple user interface

  3. 3 ENGINEERING REQUIREMENTS Table 2: Engineering Requirements Marketing Engineering Marketing Engineering Justification Justification Requirements Requirements Requirements Requirements A. Should accept and E. Must have delay output up to 1080p, A 1080p video signal at 60 Hz is a This is the maximum rate of the 2, 7 1 under 16 ms (60Hz 60Hz standard video standard high definition signal. input signal. refresh) signal formats The FPGA must have sufficient B. Must accept and F. Must contain enough logic units to implement the Creates ease of use for the user, 2, 3, 6 output using the same 1, 2, 7 logic units to implement color algorithms as well as only plugging in the cables. standard interface the desired algorithms registers to map super pixels to the LEDs User will only need to plug in G. Must be C. Must have under 15 The FPGA must be programmed cables and place strips, and automatically 3 minute average 3 by either a support chip or the setup and control via web programmed by the installation time Raspberry Pi on boot. application. system H. Must have backlight The backlight LEDs must have an 802.11 is the standard wireless D. Must be compatible color be within 5% of the RGB value that is within 5% in 4, 5 communication interface used 1 with 802.11 average RGB value of order to mirror the colors closely for wireless networks. the TV pixels enough.

  4. 4 TERMINOLOGY Pixel: an individual source pixel Pixel Block: a block of pixels that are used to calculate average color LED: what is on the back of the screen

  5. 5 IMAGE CONCEPT

  6. LEVEL 0 BLOCK DIAGRAM 6 Serial NeoPixels UART FPGA Raspberry Pi HDMI USB HDMI Down Sampler HDMI Web HTTP HTTP Client HDMI Hue Source Screen HDMI HDMI Duplicator

  7. 7 BOM Part Cost Our Cost Availability Lead Time miniSpartan6+ $105.00 $105.00 In Stock 7 Days HDMI Scaler $39.92 $39.92 In Stock 4 Weeks NeoPixels $16.95* $16.95* In Stock 5 Days HDMI Splitter $21.99 $21.99 In Stock 2 Days Raspberry Pi 3 $39.95 $39.95 In Stock 2 Days 150W PSU $35.10 $35.10 In Stock 1 Week HDMI Connectors $20.00 $20.00 In Stock 2 Days HUE System $199.99 $0 TV $175.00 $0 Enclosure ? ? Total Cost $653.90 $278.91

  8. 8 POWER • .32 Watts/ RGB LED • 18 Watts/meter @ 60 • 3.5 Amps/meter • 9.6 Watts/Meter @ 30 • ~2Amps/meter • Pi: 5v @ 0.58A • FPGA: 5v @ ?A • Downscaler: 5v @ 1A • Duplicator: 5v @ 1A Mean Well 5v 150W PSU

  9. 9 FPGA INTERNAL ARCHITECTURE

  10. 10 DEVICE CHOICE • miniSpartan6+25lx • 3,758 slices (15,032 LUTs and 30,064 FFs) • Small form factor • HDMI ports and plenty GPIO • Virtix-5 Development Kit • 17,280 slices (69,120 LUTs and FFs) • Massive form factor • Saturn Spartan6 Dev Board • 6,822 slices (27,288 LUTs and 54,576 FFs) • Small form factor • Large amount of GPIO miniSpartin6+

  11. 11 MINISPARTAN6+ • Xilinx Spartan6LX25 • 2 HDMI Ports • USB-FTI Chip • Program through USB • xc3sprog software from Pi • Load .bit file from SPI flash miniSpartin6+

  12. 12 FPGA LEVEL 1 BLOCK DIAGRAM Pi Communication FPGA Registers UART Neopixel Pixel Neopixel Driver Mapper HDMI HDMI AVG DVI

  13. 13 HDMI TO DVI STANDING ON THE SHOULDERS OF HAMSTERS • Using open source HDMI-DVI designed for miniSpartin6+ • Protocol not that complicated, • would require a lot of work • The FPGA can only accept 720p signal • Support < 1050 Mbs • 720p & 1080i are 742.5 Mbs TMDS Receiver Block

  14. 14 COLOR AVERAGING • Pixel Block is 2 𝑜 by 2 𝑙 pixels Accumulators • Removes need for divider Red • Can change size for different Green experience Pixel 1 2 3 4 5 6 7 8 Block Blue • Resolutions are not a power of 2 10 9 • Overlapping windows Screen • Hard-coded start coordinate for 11 12 each block 14 13 • Average screen color will use a large 2 𝑜 by 2 𝑙 box 15 16 17 18 19 20 21 22 23 Color Averaging Block Concept

  15. 15 COLOR MAPPING Generate 1 for each LED reg: selectReg • Pixel-block averages pass though mux and go to LED register RGB RGB RGB • Select is programmed by pi From Averager • “LED0, look at zone 0” Neopixel 0 - n • Allows for blocks to go to multiple LEDs RGB RGB n=numBlocks

  16. 16 UART • Easy to implement • Use command-payload structure • Both FPGA and Server side • 0x01: powerLED • Quick enough • 1 byte payload • Pi GPIO natively supports it • 0x02: Color Map • numLED*2 byte payload

  17. 17 RISKS Color Averaging Color Mapping • Locations become difficult to calculate • High fanout of averager output during development registers • Script can be made to generate • One going to each led mux locations • Can be stage registered HDMI to DVI • Add few clocks to delay • Cant control EDID • Large amount of muxes • Only working with 720p video to • Reduce neopixel color depth accommodate multiple input resolutions • Can use different .bit files

  18. 18 LEDS

  19. 19 ADAFRUIT NEOPIXEL STRAND • Individually addressable RGB-LED • Different Configurations • 30, 60, 144 LED/meter • Black, White Strip • 3-pin JTS SM Connection Black 30 LED/Meter Neopixel Strand

  20. 20 Neopixel (WS2812B) Neopixel Serial Chain

  21. 21 PIXEL MATH • Neopixel pixel driver • Real-Time Protocol • NRZ Serial in-out 1 𝑔 𝑠𝑓𝑔𝑠𝑓𝑡ℎ = 𝑂𝑣𝑛 𝑞 ∗ 1.25𝜈𝑇 + 50𝜈𝑇 • ~60Hz at 500 LED chain • Multiple Chains • Driven by VHDL State Machine • Counter: T0H, T0L, T1H, T1L, and RET Neopixel Protocol Timing 𝑈𝑦𝐼 + 𝑈𝑦𝑀 = 1.25𝜈𝑇 𝑈𝑠𝑓𝑡𝑓𝑢 = 50𝜈𝑇

  22. 22 RISK • Refresh rate • Power Consumption • Must keep LED chain count low • Must keep Neopixel strip short enough to keep refresh rate under enough to avoid excessive power 16 ms consumption • Heat generated by power supply • Pixel Density • As the pixel density increases, the covered length decreases

  23. 23 FRONTEND/BACKEND

  24. 24 DEVICE CHOICE • Raspberry pi 3 • Built in Wi-Fi • High Powered • Developer Friendly • Raspberry pi zero • Low power • Cheep cheep cheep • Small • Need Extras (Wi- Fi, Ethernet, USB…) • Beagle Bone Black • Offers GPMC • Memory Map FPGA Registers

  25. 25 OVERVIEW AngularJS Frontend Flask Backend • AngularJS app running on python • Control system state HTTP server • Retrieve HTTP POST requests • All user input • Makes UART calls to FPGA • Buttons/Fields for input • Phillips Hue interaction • Mobile friendly • Program FPGA • Hosted using python’s SimpleHTTPserver module • Bootstrap for css styling

  26. 26 ANGULARJS, $SCOPE AND HTML JS: • AngularJS provides an easy way to var dinoapp = angular.module('dinolightApp',[]); manipulate the DOM dinoapp.controller (‘ dinoController ’, • (document object model) function($scope){ • Model View Whatever $scope.value = “ CE SD Rocks ” }); • Angular controller controls a section -------------------------------------------------- of HTML HTML • ng- controller=“ dinoController ” <div ng- app=“' dinolightApp ”> <div ng- controller=“ dinoController ”> • Change values on $scope reflect in “My value is {{ value }}” the DOM <input ng- value=“value”> </div> </div>

  27. 27 FRONTEND CODE • All controlled by 1 ng-controller • Each option is tied to a ng-value/ng-click • Responsible for syncing with backend • Gets the current system state on load • POSTs any changes to the backend • Different template for initial setup • Hue Bridge authorization • Connecting to Wi-Fi Frontend Webapp

  28. 28 CLIENT-SERVER MESSAGING • JSON based Turn on power • Dictionary based command routing {op: ‘set’, what: ‘power’, to: 1} • OP • Program Set hue IP • Set {op: ‘set’, what: ‘ hueIP ’, to: ‘10.0.1.7’} • Get • Only have 1 POST endpoint to hit Program FPGA • Easily converted to web socket {op: ‘program’} • Easily expanded

  29. 29 BACKEND OVERVIEW • Flask App running on a Raspberry Pi • Programs and Configures the FPGA • Calculates required values • Single POST endpoint • Communicates with Hue System • HTTP Post Requests to Hue • Saves config in .json file

  30. 30 SERVER MESSAGE HANDLING {op: ’set’, what: ‘power’, to: 1} def init_command_router (self): def set (self, command): return {'set': self.set, if not 'what' in command: 'program': self.program} return 'Key "what" not found in command:'+ str(command) if not 'to' in command: @app.route('/c', methods=['POST']) return 'key "to" not found in command: ' + str(command) def command (): what = command['what'] return str(system.processCommand(request.json)) to = command['to'] if what == 'power': self.power = to def process_command (self, command): elif what == 'horzLeds': if 'op' in command: self.numHorzLED = to return self.commandRouter[command['op']](command) elif what == 'vertLeds': return 'Op not found‘ self.numVertLED = to return 'Set Success'

Recommend


More recommend