Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Generalized Electric Vehicle Control Unit
C++ JavaScript Arduino C
branch: master
Failed to load latest commit information.
Shield Initial copies of Paulo's V4 boards
docs Documentation
util Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
website Removed unused website image
.cproject some logging, some docs
.gitattributes Add .gitattributes file to normalize line endings
.gitignore Merge branch 'ArduinoDue' of github.com:collin80/GEVCU
.project.copy moved stuff to MotorController, added new vars
BatteryManager.cpp New system in place which replaces the old #define system with EEPROM…
BatteryManager.h So, that last update that was supposed to make device init easy just …
BrusaMotorController.cpp Added a method to automatically list enabled and disabled devices so …
BrusaMotorController.h Updates to compile against newest canbus library
CMakeLists.txt initial project import from KDevelop
CanBrake.cpp Added a method to automatically list enabled and disabled devices so …
CanBrake.h Updates to compile against newest canbus library
CanHandler.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
CanHandler.h Updates to compile against newest canbus library
CanPIDListener.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
CanPIDListener.h Updates to compile against newest canbus library
CanThrottle.cpp Added a method to automatically list enabled and disabled devices so …
CanThrottle.h So, that last update that was supposed to make device init easy just …
CodaMotorController.cpp Tested on DMOC Bench and THING
CodaMotorController.h Minor Cleanup of CodaMotorController
DMOC.txt Attempted fix of DMOC645 to run
Device.cpp Added a method to automatically list enabled and disabled devices so …
Device.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
DeviceManager.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
DeviceManager.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
DeviceTypes.h Added CodaMotorController
DmocMotorController.cpp Merge branch 'WIP' of github.com:jrickard/GEVCU into WIP also did som…
DmocMotorController.h Attempted fix of DMOC645 to run
ELM327Processor.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
ELM327Processor.h Additional work on getting OBD2 to work over ichip interface. It migh…
ELM327_Emu.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
ELM327_Emu.h Additional work on getting OBD2 to work over ichip interface. It migh…
FaultCodes.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
FaultHandler.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
FaultHandler.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
GEVCU.h Changes to OUTPUT on Serial port
GEVCU.ino Add a new command to reset the EEPROM storage for every device: NUKE=…
GEVCU.kdev4 initial project import from KDevelop
GEVCU.sln Behold! A Visual Studio 2012 project for GEVCU.
GEVCU.vcxproj Merge branch 'WIP' of github.com:jrickard/GEVCU into WIP also did som…
GEVCU.vcxproj.filters Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
Heartbeat.cpp Sync with EVTV released code
Heartbeat.h Logger supports device type as parameters
Logger.cpp config wifi via console, use constant strings
Logger.h config wifi via console, use constant strings
MemCache.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
MemCache.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
MotorController.cpp Tested on DMOC Bench and THING
MotorController.h Tested on DMOC Bench and THING
OBD2Handler.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
OBD2Handler.h With this commit the project compiles and will successfully connect t…
PotBrake.cpp Added a method to automatically list enabled and disabled devices so …
PotBrake.h So, that last update that was supposed to make device init easy just …
PotThrottle.cpp Added a method to automatically list enabled and disabled devices so …
PotThrottle.h So, that last update that was supposed to make device init easy just …
PrefHandler.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
PrefHandler.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
README.md Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
SerialConsole.cpp Add a new command to reset the EEPROM storage for every device: NUKE=…
SerialConsole.h Added CANCEL to loopcount
Sys_Messages.h config wifi via console, use constant strings
ThinkBatteryManager.cpp So, that last update that was supposed to make device init easy just …
ThinkBatteryManager.h Updates to compile against newest canbus library
Throttle.cpp Made getTickInterval virtual like it should have been, added kludge f…
Throttle.h Proper two throttle pot support
ThrottleDetector.cpp Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
ThrottleDetector.h Proper two throttle pot support
TickHandler.cpp more extensive logging, use hex addr for objects
TickHandler.h Correct improper mask in DMOC canbus listener setup, added conditiona…
config.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
constants.h Postmerge
eeprom_layout.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
gearsandopstates.txt Attempted fix of DMOC645 to run
ichip_2128.cpp Merge branch 'WIP' of github.com:collin80/GEVCU into WIP
ichip_2128.h Merge branch 'WIP' of https://github.com/jrickard/GEVCU into WIP
readme.eclipse.txt some logging, some docs
sys_io.cpp Changes to OUTPUT on Serial port
sys_io.h Changes to OUTPUT on Serial port
workinprogress.txt Added some initial support for the iChip 2128 module that is found on

README.md

GEVCU

Generalized Electric Vehicle Control Unit

Our website can be found at : http://www.gevcu.org

A project to create a fairly Arduino compatible ECU firmware to interface with various electric vehicle hardware over canbus (and possibly other comm channels)

The project now builds in the Arduino IDE. So, use it to compile, send the firmware to the Arduino, and monitor serial. It all works very nicely.

The master branch of this project is now switched to support the Due. The master branch is sparsely updated and only when the source tree is in stable shape.

The older Macchina code has been moved to its own branch. This code is now VERY old but should work to control a DMOC645.

ArduinoDue branch is more experimental than the master branch and includes the work of Michael Neuweiler.

The WIP branch is sync'd to EVTV's official changes and as such could be considered as a testing ground for the official source code distribution.

You will need the following to have any hope of compiling and running the firmware:

  • A GEVCU board. Versions from 2 and up are supported.
  • Arduino IDE 1.5.4 - Do not use newer versions of the IDE
  • due_can library - There is a repo for this under Collin80
  • due_rtc library - Also under Collin80
  • due_wire library - once again
  • DueTimer library - and again

All libraries belong in %USERPROFILE%\Documents\Arduino\libraries (Windows) or ~/Arduino/libraries (Linux/Mac). You will need to remove -master or any other postfixes. Your library folders should be named as above.

The canbus is supposed to be terminated on both ends of the bus. If you are testing with a DMOC and GEVCU then you've got two devices, each on opposing ends of the bus. So, both really should be terminated but for really short canbus lines you will probably get away with terminating just one side.

If you are using a custom board then add a terminating resistor.

If you are using the new prototype shield then it should already be terminated. The DMOC can be terminated by soldering a 120 ohm resistor between the canbus lines. I did this on my DMOC and hid the resistor inside the plug shroud.

This software is MIT licensed:

Copyright (c) 2014 Collin Kidder, Michael Neuweiler, Charles Galpin, Jack Rickard

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Something went wrong with that request. Please try again.