Gas station without pumps

2016 August 1

STM32F103C8T6 development board

Filed under: Circuits course — gasstationwithoutpumps @ 15:06
Tags: , , ,

My son and I are planning to use an STM32F103C8T6 minimum development board for a USB-to-DMX converter, as part of the theater-light project. We chose this board because it is one of the cheapest ARM development boards available (about $1.80 on AliExpress, with free shipping).

We’ve designed a USB-to-DMX converter to fit in a moderately small project box, with a USB connector on a cable at one end and a DMX connector on a cable on the other end (I say “we”, but my son did most of the work, with me making suggestions and doing design reviews). We decided to go with connectors on cables rather than panel-mount connectors, because that allowed us to use a smaller project box and provided more flexibility in connection to a laptop. We were originally planning to use the USB connector on the development board, but decided that it would be too fragile for theater tech booth use. We’re hoping that the pigtail connections will be more reliable, especially with good strain relief.  We’re using waterproof strain reliefs, so the project box should provide pretty good protection against spills.

My son finished the board design for the USB-to-DMX connector over the weekend, and we did one board design review to make several minor improvements. This is the first board design either of us has done with an isolated power supply and signal isolators (required for the DMX standard), so we spent some time making sure we got that part right. We’ll do the final design review this evening and order the board (probably from Smart Prototyping, as they will do a 5cm×10cm board for only $9.90, and we’ve had good service from them in the past).

He’s started on the programming of the STM32F103C8T6 board, using the libopencm3 software as a base. He’s gotten USB communication with his Ubuntu laptop working, but we’ve not tested it yet with a Mac. The approach he’s using for the GUI development is very different from what he did in PteroDAQ—instead of using Python, he’s using JavaScript to write a Chrome App. The Chrome App takes care of machine dependencies a bit better than Python (discovering and opening USB serial ports with Python was very platform-specific), and JavaScript now runs faster than Python. Another advantage is that somewhat less installation is needed to run a ChromeApp than installing Python and a Python program, though it is unlikely that we’ll ever get this to the point of appearing in the Google App Store.  We’ll be lucky if we get one theater group (WEST) to use the app!

It is beginning to look like the USB-to-DMX adapter and the DMX controller software may be the only part of the theater-light project we’ll get done this summer, because he has an intensive theater workshop for the next two weeks and then is going to the Oregon Shakespeare Festival for almost a week. He’ll only have about 4 weeks after that before going back to college, which is enough time to do the board designs for the lumière, but not to get them back, populate them, and install them—especially as there are some mechanical and thermal design challenges that I’m not sure our current ideas are adequate for.  We’re both better at programming and electrical design than at mechanical design. (He’s also working on new products for Futuristic Lights, which takes priority over the hobby project of designing theater lights.)

If we were starting the PteroDAQ project from scratch, we might make the GUI for it a Chrome App, also, rather than a Python program, and talk directly to the USB device in a raw format, rather than using USB serial. That is unlikely to happen in the next several years, unless some eager-beaver programmer joins the team, as I don’t particularly want to learn JavaScript or (re)write GUIs.

I have been thinking of supporting the STM32F103C8T6 minimum development board as an alternative front-end for PteroDAQ, despite the board’s somewhat mediocre analog-to-digital converter, because the board is so cheap. I have to decide whether to go with libopencm3, as my son is doing for the USB-to-DMX converter, or the Arduino environment for the STM32.

I’m already using the Teensyduino environment for the Teensy LC and Teensy 3.1/3.2 boards, so it might be simplest not to add another toolchain, but I don’t know how good the stm32duino environment is, so I’ll probably have to play around with it. This is not a high priority for me, as I still prefer the Teensy LC boards for my applied electronics course—the extra few bits of ADC resolution is useful in that course, and worth an extra $10.


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a free website or blog at

%d bloggers like this: