A Usable Arduino Debugging Tool

For as popular as the Arduino platform is, it’s not without its problems. Among those is the fact that most practical debugging is often done by placing various print statements throughout the code and watching for them in the serial monitor. There’s not really a great way of placing breakpoints or stepping through code, either. But this project, known as eye2see, hopes to change that by using the i2c bus found in most Arduinos to provide a more robust set of debugging tools.

The eye2see software is set up to run on an Arduino or other compatible microcontroller, called the “probe”, which is connected to the i2c bus on another Arduino whose code needs to be debugged. Code running on this Arduino, which is part of the eye2see library, allows it to send debugging information to the eye2see probe. With a screen, the probe can act as a much more powerful debugger than would otherwise typically be available, being able to keep track of variables in the main program, setting up breakpoints, and outputting various messages on its screen.

The tool is not without its downsides, though. The library that needs to run on the host Arduino slows down the original program significantly. But for more complex programs, the tradeoff with powerful debugging tools may be worth it until these pieces of code can be removed and the program allowed to run unencumbered. If you’d like to skip needing to use a second Arduino, we’ve seen some other tools available for debugging Arduino code that can run straight from a connected PC instead.

Learn To Optimize Code In Assembly… For Android

When programming a microcontroller, there are some physical limitations that you’ll come across much earlier than programming a modern computer, whether that’s program size or even processor speed. To make the most use of a small chip, we can easily dig into the assembly language to optimize our code. On the other hand, modern processors in everyday computers and smartphones are so fast and have so much memory compared to microcontrollers that this is rarely necessary, but on the off-chance that you really want to dig into the assembly language for ARM, [Uri Shaked] has a tutorial to get you started.

The tutorial starts with a “hello, world” program for Android written entirely in assembly. [Uri] goes into detail on every line of the program, since it looks a little confusing if you’ve never dealt with assembly before. The second half of the program is a walkthrough on how to actually execute this program on your device by using the Android Native Deveolpment Kit (NDK) and using ADB to communicate with the phone. This might be second nature for some of us already, but for those who have never programmed on a handheld device before, it’s worthwhile to notice that there are a lot more steps to go through than you might have on a regular computer.

If you want to skip the assembly language part of all of this and just get started writing programs for Android, you can download an IDE and get started pretty easily, but there’s a huge advantage to knowing assembly once you get deep in the weeds especially if you want to start reverse engineering software or bitbanging communications protocols. And if you don’t have an Android device handy to learn on, you can still learn assembly just by playing a game.

Unlocking Drones With Go

Looking for a first project in a relatively new language that’ll stretch your abilities? [Ron] was, so he hacked a commercially available drone and opened up a lot of its functionality, while writing the client software in Go.

The drone is a DJI Tello, which has some impressive hardware like a 14-core Intel processor and excellent video processing abilities. There’s also a vibrant community and a lot of support, making it the ideal platform for a project like this. It communicates to a base station via WiFi, and using some tools like the Wireshark [Rob] was able to decipher a lot of the communications and create a whole new driver for the drone. While the drone can be controlled in the traditional way, users can also write programs to control the drone as well.

The project is both an impressive feat in reverse engineering an inexpensive drone, and a fun example of programming in the Go language. Because of the fun and excitement of drones, they have become a popular platform on which to hack, from increasing their range to becoming a platform for developing AI.

Kerbal Space Program For The Apple II

[Vince Weaver] tried to use his time machine to jump a few years in the future to get a less buggy version of Kerbal Space Program, but as usual with time travel, nothing went right and he ended up heading to 1987. Finding himself in an alternate timeline where KSP had been released for the Apple II, he brought back a copy.

Well, that’s the narrative proposed by [Vince Weaver] on his YouTube channel. The real story, and hack, being that he wrote a version of KSP for the Apple II in Applesoft Basic. He has used the language for the ridiculous before. You can build a rocket, select a pilot, launch, and if you’re lucky (or skilled), reach orbit.

We loaded up his disk image on an Apple II emulator and gave it a try. We managed to murde—lose a few pilots, but that was about it.  It was hard not to get distracted by the graphics and remember to point the rocket the right direction. Either way, it was a neat bit of fun in retro computing. Video after the break.

Continue reading “Kerbal Space Program For The Apple II”

Minions Turn Your Keyboard Into A Bluetooth Keyboard

Evil geniuses usually have the help of some anonymous henchmen or other accomplices, but for the rest of us these resources are usually out of reach. [Evan], on the other hand, is on his way to a helpful army of minions that will do his bidding: he recently built a USB-powered minion that turns a regular PS/2 mouse and keyboard into a Bluetooth mouse and keyboard.

[Evan] found his minion at a McDonald’s and took out essentially everything inside of it, using the minion as a case for all of the interesting bits. First he scavenged a PS/2 port from an old motherboard. An Arduino Nano is wired to an HC-05 Bluetooth chip to translate the signals from the PS/2 peripherals into Bluetooth. The HC-05 chip is a cheaper alternative to most other Bluetooth chips at around $3 vs. $40 for more traditional ones. The programming here is worth mentioning: [Evan] wrote a non-interrupt based and non-blocking PS/2 library for the Arduino that he open sourced which is the real jewel of this project.

Once all the wiring and programming is done [Evan] can turn essentially any old keyboard and mouse into something that’ll work on any modern device. He also put an NFC tag into the minion’s head so that all he has to do to connect the keyboard and mouse is to swipe his tablet or phone past the minion.

If you’re looking for an interesting case for your next project, this McDonald’s Minion toy seems to be pretty popular. PS/2 keyboards are apparently still everywhere, too, despite their obsolescence due to USB. But there are lots of other ways to get more use out of those, too.

Continue reading “Minions Turn Your Keyboard Into A Bluetooth Keyboard”

Automatic Bluetooth Module Programmer

automatic-bluetooth-programming

Before we dive in don’t be confused by the title. This doesn’t flash firmware to the device. But it does automate the process of setting up the Bluetooth to serial module for use in your projects.

We’re often confused by the lack of a standard way of describing these inexpensive modules. We would look at this can call it an HC-05, but we’re not sure if that’s right or not. [James Daniel] calls it a JY-MCU board. If you have a handle on the differences (or lack of) please let us know in the comments. Either way we know that these boards can be frustrating to work with. They can be found with a wide variety of different firmwares, which can make the configuration process a bit different for each.

[James’] solution connects the device to an Arduino running a sketch that he wrote. Connect the device, launch the terminal monitor in the Arduino IDE, then give it your desired settings. The sketch will poll the Bluetooth module to see what speed it is set to run at. It will then establish which firmware version the board is running, displaying this info in the terminal. It then uses that information to program the board with your desired settings.

In this case [James] is using one of the modules to drive his 3D printer without being tethered to his laptop.

Continue reading “Automatic Bluetooth Module Programmer”

New Dynamic Duo, Arduino And Eclipse

There are a lot of solutions to programing an Arduino: the default avr-g++, Studio, etc. But [Sandeep] let us know about using one of the more powerful IDEs out there, Eclipse, to do the same. We’ve already outlined why Eclipse is a great IDE but now the fact that you can use it in your MCU based projects adds to its usefulness and already large feature list. However, don’t be turned off by [Sandeep’s] tutorial. While it is aimed at people who are completely new to setting up an IDE and working with an AVR, the tips certainly can benefit even the most experienced hacker.