Electric Vehicles

Prototype IEC61851 / J1772 EVSE Interface

This is a prototype IEC61851 / J1772 EVSE (Electric Vehicle Supply Equipment) Interface intended to connect to a 3.3V micro-controller of your choice. It was originally designed to piggyback on the Electric Vehicle Charge Controller PCB (shown above) and utilise the on-board Microchip dsPIC33 MCU. Firmware for the dsPIC33 is

Electronics Hardware

INA226 DC Voltage/Current/Power Monitor

A breakout board for a DC Voltage/Current/Power Meter based on the popular INA226 36-V, Bi-Directional, Ultra-High Accuracy, I2C Current/Power Monitor with Alert.  While many INA226 breakout boards are available from eBay/Banggood/AliExpress (e.g. CJMCU-226) they do not allow for easy connection of the bus voltage. In addition, we list different shunt resistor values

Software

What is MQTT?

MQTT stands for Message Queuing Telemetry Transport. It is a lightweight protocol designed for efficiently transporting messages between M2M or IoT devices. It uses a publish-subscribe model where devices publish information to a broker, and any number of clients can subscribe to them. For example, a temperature sensor device in

Electric Vehicles

ESP32 DIN Rail Module

I’ve been wanting to automate my EV (Electric Vehicle) charging. It’s a long story for another day. I had started out with a high level RS485 interface into my EVSE (Electric Vehicle Supply Equipment) and hit some ‘bugs’. A month later, it turned out much easier to fall back to

ESP32

ESP32-WROOM-32 Breakout Board

Featured here is a breakout board for the Espressif Systems ESP32-WROOM modules incorporating a MCU with WiFi and Bluetooth connectivity. The board is designed to be minimalist and targeted towards battery operated devices. As such, no voltage regulator is included. For those not already familiar with the ESP32, this SoC

Electronics Hardware

Primer: The USB-C Connector

Anyone who has used a USB Type-A plug will know the fact that it takes three attempts to successfully insert. The USB Type-C connector sets out to solve this life’s little annoyance. But it doesn’t just stop there, it also offers many other advantages: Reversible plug. No upstream/downstream facing connector.

Embedded Linux

ANSI C Basic Lightweight NMEA Parser for GPS

For a recent OBD2 (vehicle/fleet data-logging) project running on a Raspberry PI Zero, I needed access to GPS data – both position/speed and time. The Raspberry PI doesn’t include a Real Time Clock (RTC). Upon boot, it doesn’t know what the actual time it is, unless it has access to

CAN - Controller Area Network

SWCAN Single Wire CAN Transceiver Breakout Board

Single Wire CAN (SAE J2411) is commonly used in cost-sensitive Automotive applications where speed and cable length is not as onerous. It is also useful in applications were a traditional CAN differential pair is physically not possible. For example, on Type 2 Mennekes connectors used for Electric Vehicle (EV) charging, the

CAN - Controller Area Network

Adding CAN to the BeagleBone (Black)

The CAN bus (Controller Area Network) was originally designed by Bosch for the automotive market to connect ECUs (Engine/Electronic Control Units) together. Today, this robust communications bus is commonly found, not only in vehicles, but also on the factory floor in automation (e.g. CANOpen) and other applications such as PV solar inverter/battery Energy

CAN - Controller Area Network

Example C SocketCAN Code

Writing user space C code to talk to CAN devices via the Linux SocketCAN interface is relatively simple and efficient. SocketCAN uses the Berkeley socket API and hence is very similar to communicating with other network socket devices. Below is a simple guide to get you started reading, writing and

CAN - Controller Area Network

Adding CAN to the Raspberry PI

The CAN bus (Controller Area Network) was originally designed by Bosch for the automotive market to connect ECUs (Engine/Electronic Control Units) together. Today, this robust communications bus is commonly found, not only in vehicles, but also on the factory floor in automation (e.g. CANOpen) and other applications such as PV