Monthly Archives: August 2020

OpenBot leverages smartphones as brains for low-cost robots

via Arduino Blog

High-end robotic systems are still out of price range of most individuals, and even many research labs. Smartphones, however, with an astonishing array of computing power, sensors, and networking capabilities, are commonplace and becoming more powerful every day. To leverage these abilities, Intel researchers Matthias Müller and Vladlen Koltun have come up with OpenBot, which uses an Android smartphone as the brains, and otherwise costs about $50 to construct.

The OpenBot software stack consists of a custom Android app, along with code for an Arduino Nano that connects to the phone over USB serial. The mobile device takes care of higher level processing, while the Nano handles lower level tasks, such as motor control.

So far the OpenBot design has been able to follow a human and navigate autonomously. As experimentation, plus phone technology progresses, it could potentially do even more in the future!

This work aims to address two key challenges in robotics: accessibility and scalability. Smartphones are ubiquitous and are becoming more powerful by the year. We have developed a combination of hardware and software that turns smartphones into robots. The resulting robots are inexpensive but capable. Our experiments have shown that a $50 robot body powered by a smartphone is capable of person following and real-time autonomous navigation. We hope that the presented work will open new opportunities for education and large-scale learning via thousands of low-cost robots deployed around the world.

Smartphones point to many possibilities for robotics that we have not yet exploited. For example, smartphones also provide a microphone, speaker, and screen, which are not commonly found on existing navigation robots. These may enable research and applications at the confluence of human-robot interaction and natural language processing. We also expect the basic ideas presented in this work to extend to other forms of robot embodiment, such as manipulators, aerial vehicles, and watercraft.

MIDI-controlled slide whistle made with an Arduino Due

via Arduino Blog

Slide whistles and recorders can be great for learning music, and perhaps a bit of fun, but what about teaching a robot to play such a wind instrument? The Mixed Signal’s MIDI-controlled system could be used for just that.

The project is comprised of a 3D-printed fipple and piston that go into a PVC tube, while air input is via a centrifugal blower fan. A plunger with a rack-and-pinion gear are used to move the piston back and forth, changing the note being played.

A keyboard provides the user interface here, though any number of digital audio workstation devices should be able to duplicate this human task if needed. It’s hooked up to an Arduino Due with a CNC shield, which controls the single stepper motor.

You can find more details on the fipple flute on Hackster and Hackaday, and see a demo of it in action below.

The BallCuber is a robotic device capable of solving a 4x4x4 Rubik’s cube

via Arduino Blog

Rubik’s cubes are traditionally 3x3x3, and have been solved by robotic systems in a variety of different ways. But what about a 4x4x4 variant? Such a device presents expanded solving challenges, which creators Thibault and Florent were able to address with their BallCuber contraption.

The BallCuber utilizes an independent camera unit to obtain the cube’s initial state, after which it’s placed in a spherical solving chamber ringed by nine NEMA 17 stepper motors.

Software running on a PC processes the scanned pattern and an algorithm works out the movements needed to complete the puzzle. Two Arduino Mega boards, each with a RAMPS 1.4 shield, and stepper drivers rotate the cube in the proper sequence.

The device can solve the colorful toy in around three minutes and 20 seconds, but Thibault and Florent hope to eventually rework it to beat the world record of 1:18! More details can be found on their page here.

CLI and IDE get better together

via Arduino Blog

This article was written by Silvano Cerza and Ubi de Feo from the Arduino Tooling team.

Over the past two months our newly established Tooling Team has taken over operations concerning the Arduino CLI and Pro IDE.

We’ve been silent at work in our little rooms, striving to come up with solutions to reported issues and feature requests.

As time went on, the development of the CLI and Pro IDE has been moving forward in a parallel fashion, so here we bring you new versions of both applications for you to play with and build your workflows around.

arduino-cli 0.12.0

The new Arduino CLI is alive and kicking!

Highlights for this release include:

  • We introduced high-level update, outdated, upgrade commands to make arduino-cli more package manager like
  • Package index is now downloaded automatically at first run
  • Custom post-installation scripts can now be executed safely (3rd party cores will issue non blocking warnings)
  • Slight but useful UX improvements
  • Bugfixes
  • Security bugfixes

Remember, we have CLI nightly builds if you want to stay updated on the latest features!

Release link

Arduino Pro IDE

The Arduino Pro IDE is now better than ever! The team squeezed out a very juicy release, enough to skip ahead in the version numbers and jump from 0.0.6 to 0.1.0.

Highlights for this release include:

  • Updated the bundled CLI version to ‘0.12.0’
  • Reworked the menu organization
  • Added support for upload using external programmers
  • UI bugfixes aplenty

We are pleased to announce that from now on we have nightly builds available if you want to try out the latest features (and bugfixes). They can be found at the links below depending on your preferred operating System:

Release link

Experimenting PCB rendering using KiCad, FreeCAD and Blender

via WyoLum Blog


I’ve been putting off using Blender since over 5 years, being intimidated by the complex UI and workflow, until this month when I mustered courage to go through Andrew Price’s Doughnut tutorials. My aim was to learn how to do photo-realistic renders of KiCad boards.

Within a week of dipping my feet in the shallow end, I made these few renders.

Blender render #1
Blender render #2
Blender render #3
Blender render #4
Blender render #5

I started off with the Open Hardware Summit 2020 badge (which I had a bit role in designing). KiCad’s in-built ray-tracer does a decent job, but there is no way to adjust lighting, background and other parameters. This is what it looks like in KiCad.

Normal 3D view from KiCad
Ray traced render from KiCad – bottom side

This is the bottom of the PCB, so the “floor” is not visible, and the overall render looks darker than expected. 

Ray traced render from KiCad – top side

As a comparison, here’s what the top view looks like. You can see shadows on the floor. There are multiple light sources (multiple shadows), and the scene looks washed out due to excess light.

Unfortunately, KiCad raytrace option does not allow us to set lighting, floor and other scene parameters, hence Blender. So my next step was to export VRML and STEP file models from KiCad.

The STEP export from KiCad is useful in MCAD for designing enclosures and such, but it doesn’t have copper and silk layers, and no material textures too. So it isn’t much use for realistic renders.

STEP import in FreeCAD
VRML import in FreeCAD

One important difference between the raytrace render as seen in KiCad v/s the exported VRML is the “MASK” layer. Look at the “W” in the OSHW logo and the “quiic” logo. In the KiCad design, there’s a mask opening over these elements so that the underlying Copper/Gold is visible in KiCad 3D. In the VRML export, this mask window gets covered over. So the VRML export from KiCad is not a faithful representation of the board.

I ran another test by using KiCad StepUp Tools workbench in FreeCAD to import the Board with parts and Copper + Silk layers. Once again, the result was the same – the mask openings do not show up as in the pic below.

KSU Tools import in FreeCAD with Copper and Silk

At this moment, I not sure how to resolve this – so anyone have suggestions, please comment away.

Anyway, next step was to move to Blender and try getting better renders. Here’s what the KiCad VRML import looks like in Blender.

VRML import in Blender

According to @maui in this thread on the KiCad forum, from Blender ver 2.8 onward, the WRL/X3D importer has been changed causing the lack of color/texture import.

Opening the KiCad VRML file in Meshlab produces expected results.

VRML import in Meshlab

A workaround to this that I stumbled upon is to use the online 3D file format converter at CADexchanger and convert the KiCad VRML file to Collada DAE format. Importing the DAE format in Blender results in glorious color renders.

COLLADA DAE import in Blender

And now we can fine tune the colors, roughness (shininess), subsurface (internal reflectance / translucency ?) for the PCB fibreglass material (PCB edge), mask, copper, silk, adjust the lighting, change the background etc.

So the workflow looks good now, and it’s possible to get nice renders using Blender. At the moment, render quality is only hampered by my very limited knowledge of Blender (about 2 weeks old) – so more experienced Blender power users will be able to do much better.

Also, FreeCAD ver 0.19 Render workbench has a Blender option now, with Cycles rendering, but I haven’t yet got around to figuring out how to use it.

Render workbench in FreeCAD 0.19 with Blender/Cycles

The one issue which needs to be resolved is the inaccurate “mask” layer export from KiCad and I’m hoping anyone with more insight on this can tell us how to get it right.

Next up, i’m going to try making the initial footprint models more realistic by adding device information on the packages and such.

In Part 2 of this blog post, we’ll look at the Blender workflow needed to get :
– Colors for the various PCB elements – fibreglass body, solder mask, copper, silk legend
– Adjusting light and camera (although there are a lot more better, detailed tutorials on this that you can find)
– Background planes and effects.

Automated lawn irrigation with some valves and an Arduino Nano 33 IoT

via Arduino Blog

Automatic lawn watering normally means a system that turns on the sprinklers — all the sprinklers — at one time. Due to an irregularly shaped yard and a limited water supply, Sebastian Staacks wanted a bit more granular control.

Staacks’ setup consists of a half dozen Gardena valves, which are housed in underground boxes, while the brains and power supply are screwed to a wooden board on a wall in his garage. An Arduino Nano 33 IoT is employed to activate the sprinklers in six zones with an eight-channel relay bank. Relay channels 1 to 6 correspond to the valves controlling the sprinklers, the seventh is used to trigger the main valve, and the eighth is is not related to this project.

The device operates over WiFi using MQTT via an OpenHAB installation. It also features a pair of buttons and a small OLED screen for manual interface, especially useful when he’s on vacation and someone else is taking care of the house.

Code for the build can be found on GitHub, and more details are available in Staacks’ blog post.