Interactive LED Touch Screen Using the Raspberry Pi
by tmckay1.jackson in Circuits > Raspberry Pi
3532 Views, 19 Favorites, 0 Comments
Interactive LED Touch Screen Using the Raspberry Pi
Today we made an interactive LED touch screen controlled by the raspberry pi. This gadget uses a touch screen sensor which is meant to be added to computers to enable touch screen functionality. The touch screen uses a series of IR emitters and receivers to identify the location of the finger in relation to the screen and it transmits the location of the finger in coordinates to the Pi similar to a mouse would. We then use these coordinates to draw out patterns and shapes in the leds
Supplies
- Plywood - Home Depot
- Touch Screen - https://amzn.to/3gbxoAZ
- ws2811 leds - https://amzn.to/3cmZKXR
- 5V power supply - https://amzn.to/3ih6OJq
- Raspberry Pi 4 (that's what I used but you could use any, just need to accept USB input and drive ws281x leds) - https://amzn.to/3ujCdOE
- SN74HCT125 Integrated Circuit - jumps voltage from raspberry pi signal to have proper voltage for led strip (I usually get my circuit parts from Digikey)
Create the Sides of the Box
First you'll need to create the sides of the box. We are using a 32" touchscreen and for the box we are mitering the edges, so we made 2 pieces 29.25" long and 2 pieces 17.25" long. The pieces were made from plywood and were about 4 inches deep. The screen we are going to add to the box later is from 1/8" paper composite board, so we cleared out about that much space to form a dado about 1 inch from the top of the boards. The dado was about half the thickness of the plywood, 3/8", deep. The plywood is 3/4" thick, and the touch screen is about that thick as well, so the edges of the plywood will be hidden.
Create the LED Screen and Form the Box
Now we moved on to adding the leds to a screen which we insert into the box. The board we used was some paper composite board from Home Depot and is about 1/8" thick. We drew out the grid of the leds and separated them 3 inches apart, but you can choose any distance you want to get the desired density. We used ws2811 leds but you could also use ws2812b leds if you wanted or any in the ws281x protocol. After drilling 1/2" holes for the leds we secured them to the back with hot glue and made them in a serpentine pattern. We then glued the box and the led screen together with wood glue.
Attach the Touch Screen and Finish the Box
Once the glue dried we finished up the box by sanding it and applying Mahoney's walnut oil as the finish. Then we attached the touch screen with CA glue. I'm not sure if the frame was magnetic, in which case I'd prefer magnets, but we didn't have any on hand to test it out so we just used CA glue. Shouldn't be a problem to disconnect if we wanted to, but adds enough strength to keep it attached.
Create the Circuit
Now we can create the circuit that powers the entire thing. The data signal coming from the raspberry pi to the leds is a 3.3V signal, but the leds require a 5V signal, so we use a step up voltage circuit and a 5V power supply to power the LEDs. It's a very simple circuit that I've made plenty of times, including a previous build: https://www.instructables.com/LED-Message-Board/ . After the circuit was in, we drilled holes on the side of the box to feed in the cords for the power supply, Raspberry Pi power cord, and touch screen USB cord. We then secured them to the back of the screen with hot glue. We secured the Pi and circuit with standoffs on the back and screwed the power supply to the side of the box to give it a clean look.
Install the Code
GitHub Repository: https://github.com/tmckay1/led_touch_screen
The very last step :). Now that the circuit is made and ready to go we can start testing out the screen by installing the code. You'll first want to calibrate the code so that it can properly map the coordinates of the touch screen to where each individual LED is. This process is described in the README of the repo. After that, you need to install the rpi_ws281x driver and the BiblioPixel library. After this you can run the code following the instructions in the Repo and Enjoy!