Graphics accelerators move operations to hardware, where they can be executed much faster. This is what allows your Raspberry Pi to display high definition video decently. [Andy]’s latest build is a 2D sprite engine, featuring hardware accelerated graphics on an FPGA.
In the simplest mode, the sprite engine just passes commands through to the LCD. This allows for basic control. The fun part sprite mode, which allows for sprites to be loaded onto the FPGA. At that point, you can show, hide, and move the sprite. By overlapping many sprites, you something like the demo shown above.
The FPGA is from Xilinx, and uses their Block RAM IP to store the state of the sprites. The actual sprite data is contained on a 128 Mb external flash chip, since they require significant space.
The game logic runs on a STM32 Cortex M4 microcontroller which communicates with the FPGA and orders the sprites around. The FPGA then deals with generating frames and sending them to the LCD screen, freeing up the microcontroller.
If you’re wondering about the LCD itself, it’s 3.2″, 640 x 360, and taken from a Ericsson U5 Vivaz cellphone. [Andy] has a detailed writeup on reverse engineering it. After the break, he gives us a video overview of the whole system.
Continue reading “Sprite Graphics Accelerator on an FPGA”
[Herp] just shared a nice 1MHz Arbitrary Waveform Generator (right click -> translate to English as google translation links don’t work) with a well designed user interface. His platform is based around a PIC32, a TFT module with its touchscreen and the 75MHz AD9834 Direct Digital Synthesizer (DDS). Of course the latter could generate signals with frequencies up to 37.5MHz… but that’s only if two output points are good enough for you.
As you can see in the video embedded below, the ‘tiny dds’ can generate many different kinds of periodic signals and even ones that are directly drawn on the touchscreen. The offset and signal amplitude can be adjusted using several operational amplifiers after the DDS ouput and a separate SMA TTL output is available to use a PIC32 PWM signal. The platform can read WAV audio files stored on microSD cards and also has an analog input for signal monitoring. Follow us after the break for the video.
Continue reading “An Open Source 1MHz Arbitrary Waveform Generator with an Awesome UI”
[Colin], AKA [Domipheus], was working on a project to monitor a thermostat with a wall mounted Raspberry Pi and a touchscreen. Simple enough, but the Pi has a problem: The plugs are all around the perimeter of the board, and with a TFT touch screen shield, it’s a bit too thick to be wall mounted. What followed is a hack in the purest sense: [Domipheus] removed and relocated components on the Pi until the entire Pi/display stack was just a hair over 10mm tall.
A Raspberry Pi Model A was used for this build, meaning the Ethernet jack was gone, and there was only a single USB port to deal with. Still, the highest components – the RCA and audio jacks – were too tall and needed to be removed; they weren’t going to be used anyway.
After these components were gone, [Domipheus] turned his attention to the next tallest parts on the board: fuses, caps, and the HDMI port. For fear of damaging the surrounding components when removing the HDMI connector the right way, this part was simply hacked off. The large tantalum cap near the USB power connector was removed (it’s just a filter cap) and the large protection diode was moved elsewhere.
Slimming down a Pi is no good without a display, and for that [Domipheus] used this touchscreen thing from Adafruit. Things got a little complicated when the project required the ability to remove the LCD, but you can do amazing things with a DIP socket and a file.
The end result is a Raspberry Pi with touchscreen display that’s just a smidgen thicker than a CD case. It’ll fit right up against a wall in its repurposed enclosure, and the end result looks very professional.
[Thanks Luke via reddit]
These days, it’s easy enough to play games on the go. If you have a smart phone, you are pretty much set. That doesn’t mean you can’t still have fun designing and building your own portable gaming system, though.
[randrews] did just that. He started out by purchasing a small memory LCD display from Adafruit. The screen he chose is low power as far as screens go, so it would be a good fit for this project. After testing the screen with a quick demo program, it was time to start designing the circuit board.
[randrews] used Eagle to design the circuit. He hand routed all of the traces to avoid any weird issues that the auto router can sometimes cause. He made an efficient use of the space on the board by mounting the screen over top of the ATMega chip and the other supporting components. The screen is designed to plug in and out of the socket, this way it can be removed to get to the chip. [randrews] needs to be able to reach the chip in order to reprogram it for different games.
Once the board design was finished, [randrews] used his Shapeoko CNC mill to cut it out of a copper clad board. He warns that you need to be careful doing this, since breathing fiberglass dust is detrimental to living a long and healthy life. Once the board was milled out, [randrews] used a small Dremel drill press to drill all of the holes.
The final piece of the puzzle was to figure out the power situation. [randrews] designed a second smaller PCB for this. The power board holds two 3V coin cell batteries. The Arduino expects 5V, so [randrews] had to use a voltage regulator. This power board also contains the power switch for the whole system.
The power board was milled and populated. Then it was time to do some measurements. [randrews] measured the current draw and calculates that he should be able to get around 15 hours of play time using the two 3V coin cell batteries. Not bad considering the size.
Over at DorkbotPDX in Portland, a member showed up with a stack of large LCD displays from point of sale terminals. [Paul] took it upon himself to reverse engineer the displays so that they can be recycled in future projects.
The control circuit for this LCD resides on a rather large PCB with quite a variety of components. The board was reduced to three main components: an MSM6255 display controller, a 32k RAM chip which is used as the framebuffer, and a tri-state driver.
With all the unneeded components out of the way, a custom board based around an ATmega88 MCU was added. This board was soldered in to interface with the LCD controller’s bus. This allows data to be written from the 128k flash ROM on the custom board into the frame buffer. Once this is done, the display controller will display the data on the LCD.
Now that data could be written, [Paul] figured out the correct configuration for the display controller. That was the final piece in getting images to show up correctly on the display. If you happen to find some old Micros 2700 POS terminals, [Paul]’s detailed write-up will help you scavenge the displays.
Last year, [Ben] found a good deal on iPad 3 LCD screens. He couldn’t resist buying a couple to play around with. It didn’t take him long to figure out that it’s actually quite simple to use these LCD screens with any computer. This is because the LCD panels have built-in Apple Display port interfaces. This means that you can add your own Display Port connector to the end of the LCD’s ribbon connector and just plug it into a computer. You’ll also need to hook up a back light driver, which [Ben] was able to find pre-made for around $35.
The hack doesn’t stop there, though. [Ben] wanted to have a nice, finished product. He laser cut an acrylic bezel for the LCD screen that was a perfect fit. He then milled out a space for the LCD to fit into. The acrylic was thick enough to accommodate the screen and all of the cables. To cover up the back, [Ben] chose to use the side panel of a PowerMac G5 computer case. He chose this mainly for aesthetics. He just couldn’t resist the nice brushed aluminum look with the giant Apple logo. It would be a perfect match to his Macbook.
Once the LCD panel was looking nice, [Ben] still needed a way to securely fasten it in the right place. He knew he’d want it next to his Macbook, so why not attach it directly to the Macbook? [Ben] got to work with his 3D printer and printed up some small plastic clips. The clips are glued to the iPad screen’s acrylic bezel and can be easily clipped on and off of the Macbook screen in seconds. This way his laptop is still portable, but he has the extra screen real estate when he needs it. [Ben] also printed up a plastic clip that turns the iPad’s USB power connector and the Display Port connector into one single connector. While this is obviously not required, it does effectively turn two separate plugs into one and makes the whole project that much more slick.
Sometimes you have to bust out the wayback machine to find a good hack. Back in 2008, [Brian] performed this awesome negative display hack on his classic Casio G-Shock watch. The G-Shock, like most digital watches, uses a twisted nematic LCD. All Liquid Crystal Displays are made up of a layer cake of polarizers, glass, and liquid crystal. In non touchscreen displays, the top layer is a sheet of polarizing film glued down with an optical quality adhesive.
[Brian] disassembled his watch to reveal the LCD panel. Removing the glued down polarizing film can be a difficult task. Pull too hard and the thin glass layers will crack, rendering the display useless. After some patient work with an X-acto knife [Brian] was able to remove the film.
Much like the privacy monitor hack, the naked watch appeared to be off. Holding a sheet of linear polarizing film between the watch and the viewer reveals the time. If the film is rotated 90 degrees, the entire screen is color inverted. [Brian] liked the aesthetics of the inverted screen, so he glued down his polarizing film in the offset position. After reassembly, [Brian’s] “customized” watch was ready to wear.
[Via Hacker News]