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.

Teardown: “The Oregon Trail” Handheld

If you were a school-age child in the 1980’s or 1990’s, you almost certainly played The Oregon Trail. Thanks to its vaguely educational nature, it was a staple of school computers until the early 2000’s, creating generations of fans. Now that those fans are old enough to have disposable incomes, we are naturally seeing a resurgence of The Oregon Trail merchandise to capitalize on one of humanity’s greatest weaknesses: nostalgia.

Enter the Target-exclusive The Oregon Trail handheld game. Priced at $24.99 USD and designed to look like the classic beige-box computers that everyone of a certain age remembers from “Computer Class”, it allows you to experience all the thrills of dying from dysentery on the go. Naturally there have been versions of the game for mobile devices in the past, but how is that going to help you when you want to make your peers at the coffee shop jealous?

But we’re not here to pass judgement on those who hold a special place for The Oregon Trail in their hearts. Surely, there’s worse things you could geek-out on than interactive early American history. No, you’re reading this post because somebody has put out a handheld PC-looking game system, complete with a simplified keyboard and you want to know what’s inside it. If there was ever a cheap game system that was begging to be infused with a Raspberry Pi and some retro PC games, this thing is it. Continue reading “Teardown: “The Oregon Trail” Handheld”

PC-XT Emulator On ESP8266

Do you remember the simpler times when you had a DOS command line, a handful of commands, and you talked to the hardware through a few BIOS and DOS interrupts? Okay, maybe it was a little limited, but nostalgia doesn’t care. Now [mcuhacker] is working on bringing some of those memories back by getting a PC-XT emulator running on an ESP8266.

For the x86 CPU emulator, he ported Fake86 which is written in C, and created an Arduino IDE environment for it. The MS-DOS 3.3 bootdisk image is stored in flash and is accessed as the A: drive. There’s no keyboard yet but he has 640×200 CGA working with 80×25 characters on a 3.5″ TFT display with the help of a low pass filter circuit. In the video below he shows it booting to the point where it asks for the date.

Continue reading “PC-XT Emulator On ESP8266”

Espple: A Wireless Apple 1 on an ESP8266

The Apple 1 was one of the three big hobbyist computers that burst onto the scene in 1977. Unlike the PET 2001 and the TRS-80, only a couple hundred Apple 1s were ever produced, and with only a handful in existence today, you’ll have to fork out some serious money to get a Wozniak original for yourself.

The Apple 1 experience is easily emulated, of course, but this ESP8266 emulates the Apple 1 on hard mode. Dubbed the Espple by its creator [Hrvoje Cavrak], it emulates the 6502-based original in all its 1-MHz glory, while providing 20-kB of RAM, a considerable upgrade over the 4-kB standard. The complete original character set is provided for that old-timey feel, and there’s a BASIC interpreter ready to go. The kicker here, though, is that the emulator is completely wireless. You telnet into the 8266 rather than connecting a keyboard directly, and video is transmitted over-the-air using a GPIO pin as a 60-MHz PAL transmitter. A short length of wire is all you need to transmit to an analog PAL TV on channel 4; the video below shows a little BASIC code running and a low-res version of Woz himself.

You’ll find Apple emulators aplenty around these parts, everything from an Apple ][ on an Arduino Uno to a tiny Mac on an ESP32. There hasn’t been much in the way of Apple 1 emulations, though, at least until now.

Continue reading “Espple: A Wireless Apple 1 on an ESP8266”

Learning ARM assembly with visUAL

Learning assembly is very important if you want to get a grasp of how a computer truly works under the hood. VisUAL is a very capable ARM emulator for those interested in learning the ARM assembly.

The GUI: A simply program to ADD two numbers

In addition to supporting a large subset of ARM instructions, the CPU is emulated via a series of elaborate and instructive animations that help visualise the flow of data to/from registers, any changes made to flags, and any branches taken. It also packs very useful animations to help grasp some of the more tricky instruction such as shifts and stack manipulations.

As it is was designed specifically to be used as teaching tool at Imperial College London, the GUI is very friendly, all the syntax errors are highlighted, and an example of the correct syntax is also shown.

Branch visualisation, credits: VisUAL homepage

You can also do the usual things you would expect from any emulator, such as single step through execution, set breakpoints, and view data in different bases. It even warns you of any possible infinite loops!

That being said, lugging such an extravagant GUI comes at a price; programs that consume a few hundred thousand cycles hog far too much RAM should be run in the supported headless mode.


Pi Handheld With a Mindblowing Enclosure

The Raspberry Pi is possibly the world’s most popular emulation platform these days. While it was never intended to serve this purpose, the fact remains that a small, compact computer with flexible I/O is ideally suited to it. We’ve featured a multitude of builds over the years using a Pi in a mobile form factor to take games on the go. [Michael]’s build, however, offers a lot more than a few Nintendo ROMs and some buttons from eBay. It’s a tour de force in enclosure design.

The build starts with the electronics. In 2017 it’s no longer necessary to cobble together five different accessory boards to handle the controls, battery charging, and display. Boards like Kite’s Super All In One exist, handling everything necessary for a handheld game console. With this as a starting point, he then set out to recreate Nintendo’s classic Game Boy, with a few tweaks to form and function.

It’s a textbook example of smart planning, design, and execution. We are taken through the process of creating the initial CAD drawings, then combining 3D printed parts with wood and carbon fibre for a look that is more akin to a high-end piece of hi-fi gear than anything related to gaming. The attention to detail is superb and the write-up makes it look easy, while [Michael] shares tips on how to safely cut carbon fibre to make your own buttons.

The final results are stunning, and it’s a great example of why a fine piece of wood is always a classy way to go for an enclosure. For another great example, try this walnut keyboard, or check out the roots of the Raspberry Pi Game Boy movement.

Amiga Gets a PS/2 Keyboard Port

Name any retrocomputer — Apple II, Sinclair, even TRS-80s — and you’ll find a community that’s deeply committed to keeping it alive and kicking. It’s hard to say which platform has the most rabid fans, but we’d guess Commodore is right up there, and the Amiga aficionados seem particularly devoted. Which is where this Amiga PS/2 mouse port comes from.

The Amiga was a machine that was so far ahead of its time that people just didn’t get it. It was a true multimedia machine before multimedia was even a thing, capable of sound and graphics that hold up pretty well to this day. From the looks of [jtsiomb]’s workstation, he’s still putting his Amiga to good use, albeit with an inconvenient amount of cable-swapping each time he needs to use it. The remedy this, [jtsiomb] put together an emulator that translates scancodes from an external PS/2 keyboard into Amiga keyboard signals. Embedded inside the Amiga case where it can intercept the internal keyboard connector, the emulator is an ATmega168 that does a brute-force translation by way of lookup tables. A switch on the back allows him to choose the internal keyboard or his PS/2 keyboard via a KVM switch.

Are Amigas really still relevant? As of two years ago, one was still running an HVAC system for a school. We’re not sure that’s a testament to the machine or more a case of bureaucratic inertia, but it’s pretty impressive either way.

[via r/electronics]