Posts | Comments

Planet Arduino

Archive for the ‘STM32’ Category

Here at Hackaday, we love a good art piece, whether that involves light or sound. Combining both is a sure-fire way to get our attention, and [Eirik Brandal] did just that with his Void Extrusion piece.

The project is built around the Daisy Seed from Electrosmith. It’s an embedded platform designed for musical purposes, which made it perfect for [Eirik]’s project. Based on an STM32 chip, it’s very capable when it comes to DSP tasks. In this role, it’s charged with algorithmic music composition, providing the captivating soundtrack that emanates from the sculpture.

The sculpture itself looks almost like a fancy mid-century home from the Hollywood Hills, but it’s fundamentally a little more abstract than that. [Eirik] built it as an opportunity to experiment with using 3D printed forms in his work. To that end, it features a beautiful diffused LED wall and a speaker enclosure as an integral part of the build. The LEDs are run from an Arduino Nano Every.

[Eirik’s] work shows us that “generative” music can be intoxicating and compelling with a real sense of feeling and mood. The sculpture is a visually-capable pairing that works with the soundscape. It recalls us of some other great artworks we’ve featured from [Eirik] before, too.

[Fearless Night]’s optical theremin project takes advantage of the kind of highly-integrated parts that are available to the modern hacker and hobbyist in all the right ways. The result is a compact instrument with software that can be modified using the Arduino IDE to take it places the original Theremin design could never go.

The design is based on a ‘Blue Pill’ STM32 MCU development board and two Avago APDS-9960 gesture sensor breakout boards, along with a few other supporting components. Where the original Theremin sensed hand proximity using two antenna-like capacitive sensors to control note frequency and volume, this design relies on two optical sensors to do the same job.

[Fearless Night] provides downloads for the schematic, code, parts list, and even 3D models for the enclosure. PCB files are also included for a convenient assembly, but since the component count is fairly low, a patient hacker should be able to get away with soldering it up by hand without much trouble.

This project creates the audio using the STM32’s Direct Digital Synthesis (DDS) capability and a simple low-pass filter, and has several ways to fine-tune the output. What’s DDS? Our own Elliot Williams explains it in terms of audio output for microcontrollers, and if you’d like a more comprehensive overview, Bil Herd will happily tell you all about it.

You really should learn to read Morse code. But if you can’t — or even if you can, and just want a break — you can always get a computer to do it. For example, [jmharvey1] has a decoder that runs on a cheap Bluepill dev board.

The device uses a touchscreen and a few common components. The whole thing cost about $16. You can see it at work along with a description of the project in the video below.

The code uses the Arduino-style setup for the Blue pill — something we’ve talked about before. As for the decoding method, the software employs the Goertzel algorithm which is akin to a single frequency Fourier transform. That is, while a full transform gives you information about the frequency component of a signal across a wide range, the Goertzel algorithm probes the signal for one or a small number of distinct frequencies.

The decoder table looks confusing at first until you realize that each “decode” value consists of a 1 as a start bit followed by a 1 for a dash and a zero for a dot. All bits to the left of the start bit don’t count. So an “E” codes as 02 hex — a start bit followed by a single zero or dot. A “C” is 1A hex (1 + -.-.). Once you find the matching code, you apply the same index to another table to look up the actual letter or string of letters.

If you buy a Bluepill to make one of these, you might as well get two and build something to send code, too.

[W8BH] attended a talk by another ham, [W8TEE] that showed a microcontroller sending and receiving Morse code. He decided to build his own, and documented his results in an 8 part tutorial. He’s using the Blue Pill board and the resulting device sends code with paddles, sends canned text, provides an LCD with a rotary knob menu interface, and even has an SD card for data storage.

All the code is on GitHub. If you are interested in Morse code or in learning how to write a pretty substantial application using the Blue Pill and the Arduino IDE (or any other similar processor), this is a great exposition that is also a practical tool.

[W8BH] takes good advantage of breakout boards with things such as the displays and jacks on them. Of course, you don’t absolutely have to use those, but it does make life easier. You can see [W8TEE’s] version posted in an online forum.

The parts of the tutorial all build on each other, so you start out simple and get deeper and deeper. The tutorials are PDF files, but they are well organized and easy to read.

We’ve done our tutorials and videos on the Blue Pill. If you don’t want to rely on the Arduino IDE, there are ways around that, too.

Blue Pill header pic: Popolon [CC BY-SA 4.0]

In a recent post, I talked about using the “Blue Pill” STM32 module with the Arduino IDE. I’m not a big fan of the Arduino IDE, but I will admit it is simple to use which makes it good for simple things.

I’m not a big fan of integrated development environments (IDE), in general. I’ve used plenty of them, especially when they are tightly tied to the tool I’m trying to use at the time. But when I’m not doing anything special, I tend to just write my code in emacs. Thinking about it, I suppose I really don’t mind an IDE if it has tools that actually help me. But if it is just a text editor and launches a few commands, I can do that from emacs or another editor of my choice. The chances that your favorite IDE is going to have as much editing capability and customization as emacs are close to zero. Even if you don’t like emacs, why learn another editor if there isn’t a clear benefit in doing so?

There are ways, of course, to use other tools with the Arduino and other frameworks and I decided to start looking at them. After all, how hard can it be to build Arduino code? If you want to jump straight to the punch line, you can check out the video, below.

Turns Out…

It turns out, the Arduino IDE does a lot more than providing a bare-bones editor and launching a few command line tools. It also manages a very convoluted build process. The build process joins a lot of your files together, adds headers based on what it thinks you are doing, and generally compiles one big file, unless you’ve expressly included .cpp or .c files in your build.

That means just copying your normal Arduino code (I hate to say sketch) doesn’t give you anything you can build with a normal compiler. While there are plenty of makefile-based solutions, there’s also a tool called PlatformIO that purports to be a general-purpose solution for building on lots of embedded platforms, including Arduino.

About PlatformIO

Although PlatformIO claims to be an IDE, it really is a plugin for the open source Atom editor. However, it also has plugins for a lot of other IDEs. Interestingly enough, it even supports emacs. I know not everyone appreciates emacs, so I decided to investigate some of the other options. I’m not talking about VIM, either.

I wound up experimenting with two IDEs: Atom and Microsoft Visual Studio Code. Since PlatformIO has their 2.0 version in preview, I decided to try it. You might be surprised that I’m using Microsoft’s Code tool. Surprisingly, it runs on Linux and supports many things through plugins, including an Arduino module and, of course, PlatformIO. It is even available as source under an MIT license. The two editors actually look a lot alike, as you can see.

PlatformIO supports a staggering number of boards ranging from Arduino to ESP82666 to mBed boards to Raspberry Pi. It also supports different frameworks and IDEs. If you are like me and just like to be at the command line, you can use PlatformIO Core which is command line-driven.

In fact, that’s one of the things you first notice about PlatformIO is that it can’t decide if it is a GUI tool or a command line tool. I suspect some of that is in the IDE choice, too. For example, with Code, you have to run the projection initialization tool in a shell prompt. Granted, you can open a shell inside Code, but it is still a command line. Even on the PlatformIO IDE (actually, Atom), changing the Blue Pill framework from Arduino to mBed requires opening an INI file and changing it. Setting the upload path for an FRDM-KL46 required the same sort of change.

Is it Easy?

Don’t get me wrong. I personally don’t mind editing a file or issuing a command from a prompt. However, it seems like this kind of tool will mostly appeal to someone who does. I like that the command line tools exist. But it does make it seem odd when some changes are done in a GUI and some are done from the command line.

That’s fixable, of course. However, I do have another complaint that I feel bad for voicing because I don’t have a better solution. PlatformIO does too much. In theory, that’s the strength of it. I can write my code and not care how the mBed libraries or written or the Arduino tools munge my source code. I don’t even have to set up a tool chain because PlatformIO downloads everything I need the first time I use it.

When that works it is really great. The problem is when it doesn’t. For example, on the older version of PlatformIO, I had trouble getting the mBed libraries to build for a different target. I dug around and found the issue but it wasn’t easy. Had I built the toolchain and been in control of the process, I would have known better how to troubleshoot.

In the end, too, you will have to troubleshoot. PlatformIO aims at moving targets. Every time the Arduino IDE or the mBed frameworks or anything else changes, there is a good chance it will break something. When it does, you are going to have to work to fix it until the developers fix it for you. If you can do that, it is a cost in time. But I suspect the people who will be most interested in PlatformIO will be least able to fix it when it breaks.

Bottom Line

If you want to experiment with a different way of building programs — and more importantly, a single way to create and build — you should give PlatformIO a spin. When it works, it works well. Here are a few links to get you started:

Bottom line, when it works, it works great. When it doesn’t it is painful. Should you use it? It is handy, there’s no doubt about that. The integration with Code is pretty minimal. The Atom integration — while not perfect — is much more seamless. However, if you learn to use the command line tools, it almost doesn’t matter. Use whatever editor you like, and I do like that. If you do use it, just hope it doesn’t break and maybe have a backup plan if it does.


Filed under: Arduino Hacks, ARM, Hackaday Columns, reviews, Skills
Set
29

Microduino-Joypad: an open source 8-bit game console & more!

arduino, AVR, Joypad, Microduino, MSP430, STM32 Commenti disabilitati su Microduino-Joypad: an open source 8-bit game console & more! 

94174be2ccad26a7f0caaff399007b25_large

Microduino-Joypad is … an 8-bit game console + open source + UPin27 + AVR,STM32,MSP430,51 compatible + smart controller == Awesome!  by Microduino Studio:

Microduino studio launched the first kickstarter in September 2013, introducing the brand new Arduino-compatible development board—Microduino. We achieved success with the unique Upin27 interface, compact size, rich expansion boards as well as many applications. Over the past year, Microduino community has been growing rapidly. Now we have nearly 10,000 players worldwide.

At the 25th anniversary of the Gameboy console, we are now releasing Joypad – 8-bit multi-functional game console to show our respects to Gameboy–the most classic game console in the history.

With this elegantly designed little Joypad, we are hoping to bring you the greatest joy from your childhood memory. The best thing is it’s completely open source and you can even create and develop your own game to inspire your imagination. Moreover, it’s not only a game console, it’s also a remote controller for other devices, such as Quadcopter, robot and cell phone, etc.

Microduino-Joypad: an open source 8-bit game console & more! - [Link]

Giu
19

Arduino GPS GSM AnyTracer

AnyTracer, arduino, gps, gsm, STM32 Commenti disabilitati su Arduino GPS GSM AnyTracer 

20140518091311-AnyTracerGPS

Track and Trace anything with the Arduino AnyTracer of only 25 x 25 mm! It is the smallest, complete GPS GSM tracker in the entire world.

A movie is not necessary here! The photos speak for itself. Together with the best Italian and Russian GPS specialists we managed to make the smallest complete GPS GSM tracker in the world. This tracker is only 25 x 25 mm! With the onboard STM32 microcontroller you can program it yourself with Arduino or online (!) with Mbed.org or in C using Keil or the opensource CooCox IDE. Almost anybody can do the programming with their own beloved platform.

Arduino GPS GSM AnyTracer - [Link]



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook