Difference between revisions of "ECE497 Car CANBUS"

From eLinux.org
Jump to: navigation, search
(Packaging)
(Packaging)
Line 42: Line 42:
 
However, here is my current debug setup:
 
However, here is my current debug setup:
  
[[File:CANBUS Setup.jpeg|CAN Bus Wiring to my Beaglebone Blue]]
+
[[File:CANBUS Setup.jpeg| thumbnail |CAN Bus Wiring to my Beaglebone Blue]]
  
 
I have attached a photo that shows my current setup. The beaglebone has a CAN port. In the picture, there is a jumper wire that connects to the CAN port and extends to the breadboard. The breadboard has a 16-pin OBDII wire to connect to my car. Most cars have a male OBDII 16-pin port. The wire connecting to the breadboard is a male to female OBDII 16-pin port.
 
I have attached a photo that shows my current setup. The beaglebone has a CAN port. In the picture, there is a jumper wire that connects to the CAN port and extends to the breadboard. The breadboard has a 16-pin OBDII wire to connect to my car. Most cars have a male OBDII 16-pin port. The wire connecting to the breadboard is a male to female OBDII 16-pin port.

Revision as of 20:54, 13 November 2017

thumb‎ Embedded Linux Class by Mark A. Yoder


Team members: Daniel Neelappa,

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  10/100

(Inline Comment)

Executive Summary

Intro: This project is designed to integrate the Beaglebone Blue with the network within a car. The Beaglebone Blue has a built-in transmitter and receiver for CAN messages. All vehicles in the U.S. manufactured after 2008 have CAN bus networks, and this provides an excellent opportunity to take advantage of the Beaglebone Blue's hardware. While cars have the same CAN protocol, they differ drastically in the messages that send. Each manufacture has their own message encoding, which makes it difficult to decipher what a message does.

Currently, I have the Beaglebone Blue's transmitter and receiver successfully reading my car's messages. I can even send messages through my Beaglebone Blue to my car. My host computer has successfully compiled can-utils. Can-utils is mentioned more below.

While, my Beaglebone blue can communicate with my car, my car is not currently responding to my requests. This is most likely an issue with not knowing the codes laid out by the manufacturer of my car. This has caused a hold on my progress, yet I mention below on some ideas I have moving forward.

It is unfortunate that each car has its own set of codes for diagnostics and normal functions. The upside is that car manufacturers can protect their end users from harm by obscuring the true functionality of each code. This deters hackers from easily sending viruses through multiple cars using a static attach type. Below, I mention some vulnerabilities with this CAN setup. Overall, once I deduce a few commands in my car, I can add new functionalities such as automatic windshield wipers or a diagnostic logger that resides within my vehicle.

Packaging

My project is still in the design and testing phase. As a result, the packaging isn't ready for a final product quality state.

However, here is my current debug setup:

CAN Bus Wiring to my Beaglebone Blue

I have attached a photo that shows my current setup. The beaglebone has a CAN port. In the picture, there is a jumper wire that connects to the CAN port and extends to the breadboard. The breadboard has a 16-pin OBDII wire to connect to my car. Most cars have a male OBDII 16-pin port. The wire connecting to the breadboard is a male to female OBDII 16-pin port.

Standard OBDII Pin-out
Beaglebone Blue Pin layout

CAN is a 2-wire differential voltage transition protocol. Vehicles are mandated to have a standard OBDII connector. While many pins are left open to the manufacturer to choose their intended purpose, there are a few that are standard. For my project, I connected to pins:

CAR OBDII WIRE

CAR OBDII WIRE BEAGLEBONE
Pin 14 CAN Low Jumper
Pin 6 CAN High Jumper
Pin 5 GND of Beaglebone

Installation Instructions

Give step by step instructions on how to install your project.

  • Include your github path as a link like this to the read-only git site: https://github.com/MarkAYoder/gitLearn.
  • Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
  • Include a Makefile for you code.
  • Include any additional packages installed via apt.
  • Include kernel mods.
  • If there is extra hardware needed, include links to where it can be obtained.

User Instructions

Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.

Highlights

Here is where you brag about what your project can do.

Include a YouTube demo.

Theory of Operation

In a high level overview, I am using my beaglebone blue's CAN communicator to talk to my car. The board is running a kernel module that loads on boot time. The OS loads a network profile "can0" as an interface to use in the user mode. Once this is configured, I am ready to read and send CAN messages. I am using a software bundle called "can-utils." This is downloaded and compiled on the bone through the Debian distribution. I use commands like "./candump can0" to list all messages on the can interface or "./cansend" to send a message.

Work Breakdown

For all the tasks below, I (Daniel Neelappa) was working alone. From time to time, I would talk to Dr. Yoder to gain feedback and insight on the project. Most of my knowledge and a large part of this project was directed through research from online sites.

Also list here what doesn't work yet and when you think it will be finished and who is finishing it.

Future Work

Suggest addition things that could be done with this project.

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.




thumb‎ Embedded Linux Class by Mark A. Yoder