Harin De Mel, a mechanical engineering technologist currently studying for his bachelor’s degree in Thunder Bay, Ontario, wrote in about his recent hacking adventure. He’s been learning to use the CAN bus network in his car, a Hyundai Genesis Coupe. Although these are certainly nice cars, he tells us that “I hated that stupid little blue LCD. It would just sit there staring at me brightly with the words ‘AUX.’ It was an absolute waste of space 90% of the time and I wanted to make use of it instead of having it show a static screen.”
He notes that he could have started out by displaying the temperature inside his car, or perhaps the boost pressure, or anything else really other than “AUX.” In true hardware hacker fashion, however, he decided to instead start out with something more challenging and display a top “shower thought” from Reddit on the screen. The idea was that this could then be used to implement a more useful alternative to what is normally displayed.
The Genesis, as well as most modern cars in North America, uses a standard called CAN bus to communicate between internal devices. To implement this hack, he decided to use this bus, and went to work “sniffing out” the control signals with an Arduino from his “pile” and a CAN bus board from Aliexpress. The results of a few seconds of CAN bus data can be found here.
The board required swapping crystals from 8MHz to 16MHz to allow it to work with the Seeedstudio CAN bus library. There is supposedly an 8MHz library available, but he didn’t try that method. Hyundai provided a connector diagram for the wiring harness, and after some experimentation, he was able to get the LCD to respond. Unfortunately, messages from the original system were still being sent. His new messages were then being overridden and had to be present every 10 milliseconds.
To combat this, he isolated the LCD from the rest of the network, then used a Raspberry Pi board to get the hottest post of the hour from the Shower Thoughts subreddit. An Arduino was used to receive signals from the original network, while the Raspberry Pi board transmitted signals to the LCD. This allowed him to use two MCP2515 boards and keep the networks separate. De Mel wasn’t sure if he could use two of these devices simultaneously with the Raspberry Pi. Communication between the Arduino and the Raspberry Pi was accomplished serially
To get the actual “thoughts,” an Internet connection is provided through an iPhone acting as a hotspot. He currently uses a WiFi dongle on the Raspberry Pi, but is considering putting a router in the car in order to use a wired connection with this, as well as another project he’s planning.
The last challenge of this project (is a project like this ever really done?) was to make the thought text scroll, which he was able to accomplish through the CAN bus. Using Python script on the Raspberry Pi, however, allowed for much more control over the scrolling characteristics. Code for this project is listed here, and you can see it in action in the video below.
According to De Mel in his latest post on this subject, “Now that I have a better understanding of how the LCD is controlled, I want to use the screen for more useful information.” This could include information on the track playing from his in-dash Android tablet (another slick mod shown below) to the Car’s stereo system as if it was an iPod, or perhaps other pertinent information as required.
As with all car-mounted technology, we recommend using it only when you’re stopped!