Self balancing wheeled robot with auto-righting arms lofted high

A Self Righting Balancing Robot Configured The Easy Way

Norwegian electronics hacker [Hans Jørgen] aka [time expander] on YouTube, has a clear interest in robotics, and for his latest effort, decided that it was time to build a custom controller platform. Since [Hans] had a pile of Dynamixel servo motors lying around to test it with, a good first project for the platform was a simple self-balancing wheeled robot. (Video, embedded below)

We say ‘simple’ but that isn’t really the case, as there is a fair bit going on to get this to work. The first problem, is sensing, which was quickly solved with the excellent BMO055 IMU chip. Next, what to do when it falls over? Simply adding some servo-controlled arms, allowed the robot to flip itself back upright. Control is covered with a ESP32-WROOM-32D module from our friends at Espressif, which enables remote firmware uploading over the air (OTA update) as well as parameter tuning. In order to implement the latter, [Hans] chose to use bonjour/mDNS which is an implementation of zero-configuration networking. This gets the ESP32 onto the WiFi, but it isn’t immediately obvious how to connect to it, without a little digging around. To simply connection, [Hans] implemented a dynamic QR code via the connected OLED. This is just one of the those tiny 0.96″ displays that you see touted all over our corners of the internet.

Simply by scanning the QR code with any compatible device to hand brings up a simple configuration web page, allowing one to tweak the PID controller parameters, and get that balancing robot into check. Great stuff!

The PCB was designed in Eagle, firmware for the ESP32 is available, 3D models for the plastic are designed with fusion 360, and [Hans] is even currently working on some preliminary Alexa integration. What a fun project!

All the above, albeit an early cut (look out for bugs!) is available on the project GitHub for your viewing pleasure.

We’re no stranger to self-balancing 3D-printed bots, whilst you’re here, why not checkout A problematic Self-Balancing Sonic the Hedgehog? If wheeled bots aren’t your cup-of-tea, there’s a not-at-all freaky one-legged bouncing bot that may be of interest.

Continue reading “A Self Righting Balancing Robot Configured The Easy Way”

An ESP32 Development Board For Sailors

[Matti Airas] wanted to have a better electronics platform for making his boat smarter, more connected, and safer. He found traditional marine electronics expensive and not suited for hacking and tinkering. There was also the issue of lack of interoperability between device generations from the same supplier and between different brands. This led him to design the Sailor Hat with ESP32 — a marine specific, open source hardware development board.

Applications include all kinds of sensor and control interfaces for the boat, such as measurement of fuel or water level, engine RPM, anchoring chain length counter, or setting up smart lighting or smart refrigeration control. The board is designed to work with the traditional NMEA 2000 standard, as well as with Signal K. NMEA 2000 is standardized as IEC 61162-3, but isn’t open source or free. Signal K, on the other hand, is free and open source, and can co-exist alongside NMEA 2000.

The marine environment can be pretty harsh with extremes of temperature, rain, humidity, condensation and vibration. Boats, just like automobiles, have a notoriously noisy electrical environment and [Matti] has paid special attention to noise and surge suppression throughout the board. The board can work with either 12 V or 24 V bus systems since the on board DC-DC converter is rated up to 32 V input. Connections between the board and the outside world need to be very robust, so it is designed to accept various types of connectors depending on how robust you want it to be.

The Sailor Hat is based around a standard ESP32-WROOM-32 module. Interfaces include a CAN bus transceiver, opto-coupled input and output, I2C, 1-wire and QWIIC interfaces, USB Micro-B programming conector, plus a couple of buttons and LEDs. All of the ESP32 GPIO pins are terminated on a GPIO header, with jumper options to disable terminations to the standard interfaces and instead route them to the GPIO header as needed. Additionally, there’s a generous prototyping area to add additional hardware to the board. Hardware design files are hosted on the project repository on GitHub.

On the software side, there are several frameworks that can be used, with PlatformIO, SensESP, ESPHome and Visual Studio Code being the recommended choices. Or you could use any of the widely available SDK’s for the ESP32 platform — Espressif SDK, Arduino Core for ESP32, MicroPython, NodeMCU or Rust.

[Matti]’s NMEA 2000 USB gateway example is a good way to get a grip on hardware assembly and software installation required to build a practical project using the Sailor Hat. The board is designed to withstand a harsh electrical environment. But it’s mechanical installation obviously requires greater care if it has to survive marine applications. The Sailor Hat can be installed in commonly available, 100x68x50 mm or larger plastic waterproof enclosures, rated for IP65 or higher. The bulkhead connectors and cable glands also need to be appropriately rated, and the enclosure may possibly need a IP68 rated ventilation plug to take care of environmental cycling within the enclosure.

Emulating OBD-II On The ESP32

It used to be that you could pop the hood and with nothing more than flat head screwdriver, some baling wire, and tongue held at the optimal angle, you could fix anything that ailed your car. But today, for better or for worse, the average automobile is a rolling computer that runs on gasoline and hope (if it even still has a gasoline engine, that is). DIY repairs and maintenance on a modern car is still possible of course, but the home mechanic’s toolbox has needed to evolve with the times. If you want to do anything more advanced than changing a tire, you’ll really want to have the gear to interface with the vehicle’s computer via the OBD-II port.

But for some, even that isn’t enough. [limiter121] recently wrote in to tell us of an interesting project which doesn’t read the OBD-II port in a vehicle, but actually emulates one. Like so many others this hack was born out of necessity, as a way to test an OBD-II project without having to sit out in the driveway all day. It allows you to create fictitious speed and engine RPM values for the OBD-II device or software under test to read, complete with a slick web interface to control the “car”.

So what makes it tick? Surprisingly little, actually. At the most basic level, an ESP32-WROOM-32 is connected up to a SN65HVD230 CAN transceiver chip. You’ll also need a 3.3V power supply, as well as a USB to serial adapter to do the initial programming on the ESP32. From there it’s just a matter of compiling and flashing the code [limiter121] has made available in the GitHub repo.

If you’re wondering if such products don’t already exist on the commercial market, they do. But like so many other niche projects, the price is a bit hard to swallow for the home hacker. Compared to the nearly $300 USD list price of commercial offerings such as the Freematics OBD-II Emulator, building one of these ESP32 based emulators should only cost you around $20.

Unless you’re developing an OBD-II reader, you probably don’t have much use for an OBD-II emulator. But this project could still be useful for anyone who wants to learn more about OBD from the comfort of their couch.