Skip to main content

Raspberry Pi based Monochrome Video Playback in Nokia 2760 caller ID LCD

Previously, I was successful in interfacing a  Nokia caller ID LCD using MSP430 microcontroller. This time I wanted to drive it using the $35 single board computer - Raspberry Pi to display vital information like CPU temperature, IP address or any notifications. This idea then turned into something fun and better. I thought why not we try to play a simple video on the LCD driven by Raspberry Pi?

Components used :

  • Raspberry- Pi  - ARM 11 Soc based Single board comp @700MHz.
  • Nokia 2760 Caller ID LCD
  • Hirose connector for LCD
  • Connecting Wires 

PROJECT:

The first step is to display a static image on the LCD. I ported the code which I wrote for MSP430 microcontroller to Raspberry Pi in python language. The code worked well displaying a monochrome image on LCD. However, the display rate is not at all satisfactory. This was no surprise to me since python was very slow in execution and GPIO driving. Then I went back to good old C++ and ported the code and tried sending the image to LCD. The transfer was almost instantaneous and extremely satisfactory.

RASPBERRY PI:

It is a single board computer with BCM-2835, ARM-11 System on Chip running at 700Mhz with 512MB RAM and few other peripherals like USB, Ethernet jack, HDMI, RCA video out, GPIO, SD card interface etc. More details can be found at Raspberry-Pi wikipedia page.


VIDEO GENERATION:

The aim was to display video in the LCD; which means that atleast 25 images have to be displayed one after another in the LCD within one second (25 frames/second). Now that the setup and the driver code is ready, we need images to pump into the LCD.
  • Convert any video(preferrable b/w) to 96x65 resolution(LCD) using Any video converter
  • Extract image frames from this video using video- image converter software
  • Convert these images into bitmap(raw)images 
All the above could be done using OpenCv library though I didn't use it this time.

BLOCK DIAGRAM:




LCD DRIVING:

So now that I got around 1800 bitmap images from the video, its time to burst them into LCD at 25 images per second. All the driver code is written in plain C++ so it doesn't require other libraries to work except the Broadcom GPIO C library. 
More details of interfacing can be found in my other post here.


DEMO:

A pivot animation is being played here( it starts at 0:26) with a simple background music for fun. Enjoy!! :)


Comments

Popular posts from this blog

Shell Scripting to Display Bar Graphs in Linux Terminal

 This week was quite hectic for me with course assignments and their merciless deadlines. One such assignment in Advanced Computer Architecture  was simulation of various benchmarks in alpha architecture in simplescalar , a well-known computer architecture simulator. I was supposed to run a total of 4 benchmarks with different configurations of cache memory, instruction issue widths, commit widths, in-order execution modes, etc and I had to plot the required performance parameters for every benchmark. A conservative estimate would be around 40 plots!  Since the simulation platform was Linux, I could breathe a sigh of relief since most things can be automated using a powerful tool called shell. Scripting made my life easier here since I can automate a bunch of simulations without having to keep an eye on each and every simulation which would take anywhere from 20 minutes to 20 hours.  The problem arose when it came to plotting the performance results. Becau...

Programming STM32 ARM microcontrollers in Arch Linux

Once upon a time, not so long ago, the 8-bit microcontrollers were ruling the hobbyist embedded world. But today, the 32-bit ARM Cortex Microcontrollers are so inexpensive and power efficient that there is no good reason to ignore them. Here, let us see how to program a STM32 ARM cortex Microcontroller in Linux environment. The specific microcontroller used here is an STM32F103C8 (ARM cortex M3) programmed in Arch linux. Components Generic STM32F103 board (blue pill) STLINK-V2 (STM32 programmer) Female-Female connectors All the above components can be bought from ebay for less than $10 total. The STLINK-V2 is optional since you can use any of USB-SERIAL converters like FT232, CP2102, PL2303, CH340 and the built-in UART bootloader of STM32 chip to program. So if you already have any of the above serial converters, you don't really need STLINK to program the STM32F103 microcontroller. But STLINK helps if you plan to use in circuit debugging functionalities. Software The...

JTAG - Test Access Port (TAP)Controller based Xilinx FPGA configuration using Raspberry Pi

JTAG - Joint Test Action Group is an IEEE 1149.1 standard used in many silicon devices for programming and debugging purposes. Xilinx FPGAs support this JTAG protocol for their configuration. Here I have designed a JTAG FPGA bitstream programmer using Raspberry Pi which programs the bit file into FPGA in fraction of seconds!  JTAG physical bus has four lines: TMS (Test Mode Select) TDI (Test Data In) TDO (Test Data Out) TCK (Test Clock) Components Used:  Raspberry-Pi Xilinx Spartan 3E FPGA (XC3S250E in Papilio One) Jumper wires BLOCK DIAGRAM: TAP CONTROLLER: The TAP(Test Access Port) controller is a state machine inside the FPGA which changes it's state based on TMS input. For instance, let us assume that the state machine is in " Test-Logic-Reset " state. Now if I drive the TMS pin low and toggle the TCK pin, the state machine will go to " Run-Test/ Idle " state. This is how we move to different states.  Note ...