paul's blog

SPI Transactions in Arduino

For the last several weeks, I've been working on SPI transactions for Arduino's SPI library, to solve conflicts that sometimes occur between multiple SPI devices when using SPI from interrupts and/or different SPI settings.

To explain, a picture is worth 1000 works.  In this screenshot, loop() repetitively sends 2 bytes, where green is its chip select and red is the SPI clock.  Blue is the interrupt signal (rising edge) from a wireless module.  In this test, the interrupt happens at just the worst moment, during the first byte while loop() is using the SPI bus!

Click "Read mode" for lots more detail.....

RFM69 Wireless & SPI Bus Sharing (feedback wanted...)

Recently I've been working to improve the Arduino SPI library, to better support multiple SPI devices with different settings, and SPI devices requiring interrupts.

Today I discovered a new problem while testing the HopeRF RFM69 wireless module.

Click "Read more" for details and the workaround I found....

Large LCD Reverse Engineering

Years ago, around the time DorkbotPDX's meetup moved from Vendetta to NW Lucky Lab, Ben Bleything brought LCDs from decommissioned point-of-sale terminals to the meetup.  I did some reverse engineering to get them working!

At the time, I wrote 3 blog articles aboug the reverse engineering effort.  Only one of them survived from the early days of this website.  Recently, I found the original text those old 3 articles, and also a small pile of the LCDs... which I'll be giving away at upcoming meetings!

Click "Read more" for those 3 original articles with the fine details of reverse engineering (and source code) for these old LCDs....

Maker Faire 2014

Maker Faire went really well.  I had a booth about the new audio library, and we also built a OctoWS2811 LED display for Freescale's booth.

Click "Read more" for more photos...

Battery Pack Load

I purchased a cheap USB power pack, thinking it would be ideal for powering small projects.  But it automatically shuts off if the device isn't drawing a lot of power, since it's meant for charging cell phones.

Here's a 2 transistor circuit I built this morning that keeps it on with very little battery drain by using brief pulses.

Click "Read more" for the schematic, design details, and a PCB.....

Encoder Library Testing

In a recent forum conversation, it was suggested my Encoder library has only been tested with rotary knobs and "lab" signals, not a high-res encoder turned by a motor, implying it might not work "in the real world".  So I build this little test board and made a quick YouTube video!

Quality Audio on Teensy3 with Arduino

Over the last couple weeks I've been working on supporting quality audio (44.1 kHz, 16 bit) on Teensy3 using very simple Arduino style programming.  This weekend I added buttons and knobs to control parameters....

This work is still at an early stage.  I hope to publish a first alpha test version in about 1 month...

Edit: just a bit more info: The library manipulates audio with a collection of input, synthesis, processing and output objects that can be connected together in almost any way.  Audio connection objects automatically move the 16 bit data and run the synthesis and processing algorithms in the background, so the user's sketch isn't burdened with high bandwidth, real-time data manipulation.  The objects provide functions that can modify their behavior (volume, oscillator frequency, note on/off, modulation, etc) which can be used with extremely simple Arduino-style sketches, because the objects automatically handle all high speed data computation and movement in the background, triggered by interrupts and DMA transfers.

Designing a sytem to make excellent quality audio on Arduino with powerful features but also extremely easy has definitely turned out to be quite a challenge.  I'm still redesning the connection object's base class.  Much work remains, but now with I2S and PWM output working, .wav file playing and DDS sine wave generation all working, it really feels like it's starting to come together.  I hope to have the API stable enough (stable = unlikely to incompatibly change) for a first releast by October.

Audio clip player

Yesterday I made a little audio clip player for a Monty Python Flying Circus theme party.  It plays the 3 second dramatic sound for the unexpected Spanish Inquisition entrance.

Click "Read more" for the schematic, source code and sound file....

Measuring microamps & milliamps at 3 MHz bandwidth

Recently I needed to actually "see" a current waveform in the 100 uA to 5 mA range with at least a couple MHz bandwidth.  This extremely expensive probe would have been perfect, but instead I built something similar for about $30 using the amazing Analog Devices AD8428 amplifier.

Click "Read more" for details and a scope screenshot....

DMX Lighting Sequence Player

Portland CORE effigy at Burning Man will be using DMX controlled lighting this year.  At least that's the plan, but a low-cost and low-power way to automatically play the lighting sequence (without a PC) is needed.  Here's a little board I made for the purpose.

Click "Read more" for source code and other technical details.

Syndicate content