Hello, my name is Kai and I'm going to talk to you about Everest, AC and DC electric
vehicle charging with open source software and hardware.
First, a few words about myself.
I have a background in computer science and robotics and I've been working at Pyonix
on the Everest project since early 2021.
So how do you actually charge a car?
Most of you that have electric vehicles will probably be familiar with these methods but
I'm just going to recap them real quick so everybody is on the same baseline here.
You have your basic AC charging when you have a portable charger at home that you just plug
into a wall socket or maybe even have a wall mounted charging station that can charge your
car with up to 11 or 22 kilowatts.
In public, you sometimes still see these slow AC chargers where you maybe even have to bring
your own cable.
Just plug that one in, plug into your card and you authorize with an RFID card or maybe
even an app and then charging is properly built to your account.
There's an alternative to that which I would call the smart AC charging with ISO 15118
or maybe even plug and charge which is a much more secure way of authorizing your charging
session with a back end provider and what's probably for the crowd at this presentation
very interesting in the future is the possibility to have B-directional AC charging.
Think about vehicle to grid, vehicle to load scenarios where the car can be used maybe
as a solar battery for your home that you can charge when the sun is shining, when energy
is cheap and then you can use that energy in times where the grid is stressed a little
bit and you want to reduce your demand on the electricity grid and then you might be
able to just discharge your car and use your car as a battery for your home.
Also something that people will be most familiar with is the DC charging using the dinspec
and the ISO norm again.
These are usually the big highway fast chargers where you can charge up to like 200, 300 kilowatts
and but there's also smaller units for the home, think about like DC-DC solar systems
and things like that and also here what's probably very exciting for all of you is upcoming
like B-directional DC charging and yeah, taking energy back out of the car again.
What is Everest?
It's a complete software stack for EV Chargers, it runs on basically any embedded Linux platform
out there, it is released under the Apache 2.0 license and the aim is to support as
many different hardware platforms as possible.
In this talk we're going to mostly focus on building our own charger with an open hardware
design that I will present later on.
So some of the features that Everest has, it's built on a very modular architecture
where different modules can do very specific things and then they can communicate over
MQTT with each other.
There is also a graphical setup web interface that you can use to configure different topologies
of charges, you can see some examples here on the slides and you can also use the same
web interface to do energy management configuration as well.
Next I'm going to quickly go through the steps that you would have to take to use this graphical
web interface to configure your own charging station.
First we start with an EVSE manager, this is a module that owns a charging connector and
takes care of the charging logic and the whole charging session handling and it orchestrates
all the other modules access to this one connector.
Now we add a board support package which in this case is the EET driver module which will
handle all the control pilot handling the access to the relays and the reading of for
example the RCD currents.
Now we add an energy manager, this can be just a very simple configuration, a more advanced
one I will show you in a few slides.
Following that we need an authentication mechanism, here we add an authentication manager as well
as two token providers that will be able to authenticate our charging session with.
In the next step we can add some cloud connectivity, in this example we add a OCVP 1.6 JSON module
as well as a power meter via Modbus and a system module that supports the rebooting
and firmware update of the charging station via OCVP.
And in the last step we add an API module so that external applications can talk to
the Everest system and read out some pedmetry but also control the charging session.
As I mentioned before you can use the same graphical configuration interface to also
configure the energy management.
Here you can see a more complex energy distribution tree to be able to load panels multiple charging
stations.
Here we add an energy manager as a root node, add a 22 amp fuse to our grid connection and
then as children of that fuse we can add smaller fuses that then connect to the EVSE managers
underneath it and these EVSE managers now have different cars connected with different
charging goals and the energy management system is able to schedule charging by a global optimizer
so that every car gets the most optimal charging schedule assigned to it.
Everest also comes with software and hardware in the loop simulation facilities and it implements
a lot of protocols that are relevant in the EV charging space at the moment like OCVP
2.6 with 2.0.1 support coming very soon.
We have support for ISO 15118 AC and DC, for the Dinspec, for the basic PWM charging.
We also have the possibility to do communication with Modbus devices, think about external
power meters for example and also an API over MQTT where you can get some data about the
charging session to maybe integrate into your home automation system.
Everest itself is written in C++17 but there's also language bindings for Python and JavaScript
available so you can write modules in all of these three languages whichever suits your
needs the most.
So, let's talk about the basic PWM charging.
The car and the charging station can communicate over the so-called control pilot signal.
This is just a plus minus 12 volt signal where the car can lower the positive part of the
signal by adding load resistors and a diode to lower this voltage to a specific voltage.
For example, 9 volt signals that the car is connected, 6 volt means that the car actually
wants to charge.
And the charging station then can use a PWM duty cycle to encode the available current
for the car to draw.
This is typically between 6 and 32 amps.
So, how do you actually build one of these AC chargers?
The good news is an AC charger is not a complicated battery charger.
This part happens on the onboard charger in the car.
The AC charger is just a smart relay.
So what you typically only need is a power path, so a mains connection, some relays,
an RCD for safety, optionally maybe a power meter if you want to know how far your car
has charged already plus a microcontroller to interface with this control pilot signal.
If you want to do some more advanced things, Linux port is usually a good idea to have
as well.
I'm now going to talk about our open hardware design that we've released, the Yeti and
the YAK boards.
They are available under this Github repository and are released under the CERN open hardware
license version 2 in the permissive flavor.
This hardware design has been developed to be as developer-friendly as possible, so it
includes a lot of features.
But it's obviously not optimized for cost savings or ease of manufacturing in mind,
but it has a lot of very exciting features, so you can build all kinds of charging stations
on top of these designs.
It's been designed in Keycard 6 and case design files for 3D printing are also available.
So let's talk about the first of these hardware designs, which is the Yeti power board.
It is a 22kW AC free-phase power board.
Here on the low left you can see a block diagram of this power board and on the right some pictures
of the upper and the lower side of the board.
Let's talk about the features that the Yeti board has.
It is capable of doing the control pilot signal generation as well as the control pilot signal
sampling in sync with the PWM signal.
It also has onboard relays for free-phase power switching with welding detection and
a free-phase power metering support with up to 8kHz of sampling.
There is the possibility to measure voltages, currents, power, frequencies of all phases
plus the neutral.
There is an RCD module integrated which can detect DC ground faults as well as AC faults
and it can output the measured leakage current as telemetry.
There is also a 10 pin connector for a high-level board to control the Yeti board over UART.
This is also used to connect the Yeti to our YAK high-level board design which I will talk
about later.
If you want to use the Yeti as a stand-alone charger which is totally possible, there is
also an external connector for a small LCD.
You can also add modbus devices for external power meters, we have some external GPIOs
on this board and the board itself can be powered just by the 110V or 230V mains connection
with an internal power supply which is also capable of supplying the YAK board.
But you can also connect an external 12V supply if you so choose.
This board is also a lot of more features which you can then just look up under this
link.
The Yeti comes with an STM32 microcontroller on board and the firmware for this microcontroller
is also available on our Github page.
It's licensed under Apache 2.0 license and the purpose of this microcontroller firmware
is that it can control all the devices on the Yeti board and all the electrical safety
relevant code is encapsulated into that firmware.
On top of that it also does all of the communication of the Yeti board over the UART using protobuf
with a high level communication board and then with the Everest software.
How do you use this Yeti board?
You can either use it as a stand-alone charger or you can use it as a power path for a smart
charger.
You can also configure it to do automatic switching between these modes in case like
the higher level Linux board fails for some reason.
You can still continue as a stand-alone charger.
If you want to use the Yeti board as a stand-alone charger it is a complete AC charger for electric
vehicles supporting the basic charging I talked about earlier.
This means it contains the complete charging logic that you need and a car will charge
immediately when you connect it to the board.
There is also some UART connection that you can use to observe the status of the charging
session and also to have limited control over the charging system such as pausing and resuming
charging.
This mode is what we call the high level control mode of the firmware.
But you can also use the Yeti board as a power path for a smart charger.
Here you would then switch it into the so-called low level control mode just with a UART command
and here you must provide the charging logic externally.
Only the basic state machine remains in the microcontroller which is essential for electrical
safety.
An external board is then capable to set the PWM in duty cycle and is able to read back
the control pilot events.
This is also the mode that Everest then uses to enable the so-called high level charging
using ISO 15118 or the DeanSpec.
I will now explain what this high level charging mode is.
It uses a power line communication on top of the control pilot PWM signal.
It literally uses the same wire using the home plug green fire standard and the following
steps need to be done to create a successful high level charging session.
First, a logical network between the charger and the car is set up using Slack.
Then IPv6 link local addresses are set up on both sides.
The car will then send a UDP broadcast to find the charger and the charger replies with
its IP address and port number.
A TCP TLS connection is then created from the car to the charger and over that the ISO
15118 protocol is then spoken which is encoded in some XML data in a binary XML representation
called XE.
Now I am going to talk to you about the YAK high level control board.
Here on the right side you can see a few photos of one of these boards assembled and on the
left side you see a block diagram of this high level control board.
This is used to run Everest on an embedded Linux system.
Some of the features of this YAK control board is that it can receive a Raspberry Pi compute
module 4.
This is basically your system where you run your Linux on.
It has a 10 pin connector for a direct connection to the motherboard, a real time clock with
a backup battery, a power line communications green fire modem for doing the high level
charging communication with the car that I just talked about.
There is also a UART and power connector populated for popular RFID modules and there
is also RS485 modbus connectivity, you have a CANBUS available, you have Ethernet, wireless
LAN, you have Bluetooth, USB ports, there is even a USB client port to be able to flash
the flash storage of the compute module 4 and of course you have lots of external GPIOs
to play with.
Now we have everything that we need to put together a basic but also smart charging station.
So from right to left you just need a mains freeface power in plug, you need one of these
GTE power boards, plug that in, on the other side you plug in a type 2 connector to your
car, if you then plug this into your car you are already good to go and you will be able
to charge your electric vehicle with up to 22kW if the vehicle supports it.
If you want to do some more interesting things like try out some of the smart charging protocols
and maybe develop some interesting solutions on top of that you can add this high level
control board and then just start working on some interesting implementations.
Another exciting project that we are working on right now is a DIY B-directional DC charger.
If you paid attention over the last couple of minutes you will have noticed that the
jack board already comes prepared with everything that you would need for proper DC communication
because the DC communication is done over the same control pilot wire using the high
level charging protocols and the only things you really just need to build a proper DC
charger is some power electronics and an isolation monitor and then they are pretty much good
to go.
Obviously this is a lot more complicated and we are still hard at work for creating a good
design here but you can definitely stay tuned for more coming in the spring or summer from
us.
If this was interesting for you here is how you can get involved with the Evers project.
You can check out our code on the GitHub organization.
You can also check out the hardware designs and microcontroller firmware.
We do have a mailing list if you want to ask some questions.
There is the project page on the Linux Foundation Energy website.
We do have a quick start guide to help you get started with development and on every
fourth first day of the month there is a technical steering committee meeting where we talk about
what we implemented in the last weeks leading up to this technical steering committee meeting.
It's always being announced via the mailing list and recordings are made available shortly
after on YouTube.
There is also a weekly developer sync meeting where you can join Evers developers, ask questions
and start contributing.
This meeting happens every Tuesday between 10 and 11 am Central European time and the
meeting link for that is sent out via our mailing list.
Thank you very much for listening and I am open to receiving questions now.
Hello, I see there is at least one question right now that you can purchase these boards
pre-made somewhere right now.
I think not yet at the moment and I also don't know if I want to do too much advertising
here but yeah I think something will be available at least from our company at some point but
you can also totally build your own here.
So Nico is asking how many of these boards have been produced or tested yet?
So like a few of our developers have had charging stations based on these boards at their home
for way over a year now so they've been tested quite heavily.
I'm charging my own electric vehicle basically every day with a charging station based on
this design here and yeah so they are already well tested.
Probably if you would want to build a product with these boards you would have to go through
the certification processes because your designs might differ a bit but yeah they functionality
wise they've been tested quite heavily.
So Thomas is asking if there are any plans on scaling up production?
Well I guess that kind of depends on the demand.
Right now this kit is thought of as a basis for development especially doing Everest development
but I could imagine if the demand is like crazy high that some scaling up of production
would occur at some point in the future.
See some people typing questions so erdjonker asks if the DC will be CCS yes for now the
DC would be based on the CCS connector but that's just because we're based in Europe
and that's the common plug here.
I've heard of some people working on something with Tademo at the moment but I'm not completely
sure what the status there is.
So yeah Thomas is asking if there's already an idea how competitive this could be with
regards to commercial charges.
I guess this also kind of aligns with the next question from Wookie that the boards have
a lot of functionality on top so I guess a run would come off as quite an expensive
charger and that's true like I said in the presentation the boards are definitely not
designed with cost saving and as less features that you need to build a charging station
in there but it's more like a development kit that probably costs much more than like
off the shelf mass produced charging station would cost but that's also not really the
goal of this of this board is to enable development and to have as many things to play with as
possible like think of the in the SDR space you have these boards where you also have
a lot of features in them but they're not as cheap as like your typical cheap television
receiving stick that you plug into your laptop I still see some typing going on so maybe there's
some more questions coming up yes as Wookie is saying there that's also our
feeling that especially he said that there's a terrible shortage of open EVSE kits out
there and we think so too there are some projects like you mentioned but definitely a fully
featured project especially with a nice open hardware design that you can just play around
with and integrate into your own designs and maybe even like strip out half of the functionality
that you don't need I think is a good thing especially if ever is being released under
such a permissive license of the Apache 2.0 and the hardware designs themselves being
under the certain open hardware license this could definitely open up a lot of possibilities
for people to play with their own charging station hardware this is asking if this is
targeted more towards commercial vendors or more towards hobbyists I personally would
say it's targeted towards both groups like of course commercial vendors for the big DC
charging stations you probably don't want to build something like that in your garage
at home but you can use the same software stack and like I mentioned also parts of the
hardware stack for that but for hobbyists as well like if you want to integrate it into
your home automation system or if you want to dig in deeper in communication with the
car especially with the ISO 15118 coming up and the B-directional charging possibilities
that will soon open up to many vehicles out there and as Marco also mentioned obviously
academia is also an interesting part there so you can imagine yeah like students working
on EV charging there and things like that alright looks looks like normal questions I will definitely
be around for a few more minutes in the public room afterwards and yeah looking forward to
some more questions.