I contrast to the very timing-sensitive one-wire protocol of the WS2812, the APA102 uses a standard two wire SPI protocol – one clock line and one data line. Each LED has two inputs and two outputs which can be daisy chained. At the first sight this may seem wasteful, but it has the advantage of being supported by standard microcontroller periphery and it is insensitive to timing variations. Due to the critical timing requirement it is not possible to control the WS2812 from SOCs with multitasking operating systems, such as the Raspberry Pi. This should not be an issue with the APA102. Furthermore, the data can be transferred at an almost arbitrary clock rate. I was able to control the LEDs with 4 MHz SPI clock without any hitch. It appears that the maximum speed is mainly limited by the parasitics of the wiring.
APA102 aka “Superled” - [Link]
Spacewrench over at Dorkbotpdx writes:
I had some spare 4-digit 7-segment LED displays and some AT90USB82s, and I’d always intended to do something with them. This was probably the easiest thing! It’s just the AT90 driving the display, with a(t least) 4 wires controlling it: Vcc, GND, MOSI and SCK. (I haven’t written the code yet, but my plan is to make the display accepts characters via SPI and then spends the rest of the time displaying them).
The board has footprints for a 16MHz crystal and USB connector, so you could make it a USB-enabled 7-segment display as well. I stuffed those parts on my test board, but I’m not sure whether the USB actually works. You can power the display from USB, at least, although the video shows it being powered over SPI (which is the same connection I use to flash code).
Standalone SPI 7-segment display - [Link]
Paul over at DorkbotPDX writes:
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!
Without transactions, the wireless lib interrupt would immediately assert (active low) the yellow chip select while the green is still active low, then begin sending its data with both devices listening!
SPI Transactions in Arduino - [Link]
by Kalle Hyvönen:
I saw a cool app-note from Maxim that described a gamma-photon detector which used a regular PIN-diode as a sensor. The actual circuit looked simple enough so I decided build it, you can never have too many measurement instruments right?
The detector in itself is pretty simple, just some op-amps and a comparator. I decided to build it with all the bells and whistles so I included a digital potentiometer so you can adjust the reference voltage to the comparator via an SPI-bus. I also used a 5V reference shunt as the reference for the op-amps and the comparator to keep the circuits behaviour more consistent. I didn’t have any adjustable capacitors with an SPI bus so I decided against using one (instead of C4, changing the capacitance changes the gain).
A radiation detector with a solid-state PIN-diode sensor - [Link]
Nich Fugalfrom @ Makeatronics is working on a BLDC motor controller.
Icall it a smart BLDC commutator. In a nutshell it’s a dedicated atmega328 that monitors the hall effect sensors on a brushless DC motor and takes care of the commutating and driver circuitry.
It’s smart because it has the ability to extract and keep track of motor position while monitoring the hall sensors. There’s also an option to plug in a quadrature encoder for higher resolution. The position can be sampled via a sample and hold input and communicated to a host controller via SPI.
I designed it to be an easy to use black box for interfacing with BLDC motors. All the host controller has to do is feed it direction (high/low) and PWM and the rest is done for you.
BLDC motor control using Atmega328 - [Link]
Digispark Pro – The tiny Arduino IDE ready, usb and mobile dev board and ecosystem – cheap enough to leave in any project! Wi-fi, BLE, and 25+ shields!
Serial over USB debugging, USB programmable, 14 i/o, SPI, I2C, UART, USB Device Emulation, Mobile Development Ready, Optional BT, BLE, Mesh, and Wi-Fi.
The super small, dirt cheap, always open source, Arduino compatible, USB (and Mobile and Wireless!) development (and production) platform, and follow-up to the original Digispark.
Easier to use, more pins, more program space, more features, more reliable – supporting the entire existing Digispark ecosystem of 25+ shields and adding Wi-Fi, Bluetooth, BLE shields and more! Ready for all your projects – including mobile hardware development! All still super affordable!
The Digispark Pro Ecosystem is the cheapest, Arduino compatible development platform for Mobile and Wireless hardware development.
Digispark Pro – tiny, Arduino ready, mobile & usb dev board! - [Link]
by Kalle Hyvönen:
I bought a small aquarium (54l) as an impulse buy and I needed some lights for it, so naturally I wanted to use LEDs. I also needed a timer for the lights. I also wanted the lights to fade in and out when they were going on or off as a cool effect.
I ordered four Cree XP-G R5 LEDs (cool white, apparently too warm of a light will cause algae growth) and a one amp (switching) constant current supply (with PWM support) from LED-tech.de. I had some Maxim DS3234 real-time clocks with a serial bus (SPI) which looked easy to implement so I decided to use one. I also had one spare Arduino board so that was going to be my microcontroller of choice. I used a laptop power supply as the power source.
LED aquarium lighting with an Arduino based PWM timer - [Link]
This project is a 7 segment LED display module that can be driven using SPI protocol, so it needs only 3 pins of your mcu to drive 4 x LED displays. It’s based on MAX7219 LED display driver.
Seven segment LED displays are very popular for displaying numeric information because they are very attractive and readable from a far distance and wider viewing angle.
The downside is they are resource-hungry. For example, it requires 12 I/O pins of a MCU to drive a 4-digit seven segment display using a standard time-division multiplexing technique.
Here I present a serial seven segment LED display module that can be used with any MCU using a 3-wire SPI interface. This particular display has four digits (0.40 size) and two colon segments (to support time display) display.
Serial 4-digit seven segment LED display - [Link]
Microchip’s ENC28J60 is a 28-pin, 10BASE-T stand alone Ethernet Controller with on board MAC & PHY, 8 Kbytes of Buffer RAM and an SPI serial interface.
It takes just few components to get the ENC28J60 up and running and connected to a host microprocessor or microcontroller which support the standard SPI interface. Below I have designed a small ENC28J60 module. The ENC28J60 has a operating voltageof 3.3V, but the board is designed to run with 5V supply voltage, i.e. inculdes a 3.3 voltage regulator for the power supply and a 74ACT125 used as level shifter for the control lines. So it can be directly connected to any 5V microcontroller system. Optionally, an I2C EEPROM can be assembled on the board which can be used e.g. to store websites if the board is used in an embedded webserver environment.
ENC28J60 Ethernet Module - [Link]
DM&P has been producing low-power, x86-based Vortex processors for the embedded market for over ten years. Now in a nod to the Arduino market they have released the 86Duino Zero, a low-cost Arduino Leonardo sized board powered by their latest 300 MHz SoC Vortex86EX Processor.
This is a fully static 32-bit x86 processor board compatible with Windows OS, Linux and most other popular 32-bit RTOS. It integrates a PCIE bus, DDR3, ROM controller, xISA, I2C, SPI, IPC (Internal Peripheral Controllers with DMA and interrupt timer/counter included). The 86Duino Zero’s ports include USB 2.0 host and device coastline ports, a 10/100 Ethernet port and a microSD slot on the bottom of the board. The Zero’s baseboard also provides a 7-12V power jack, a reset button and a PCIe expansion connector.
The Zero supplies 14 digital I/O pins, half of which can provide 32-bit resolution PWM outputs and six 11-bit analog input pins. Each standard I/O pin supplies 16 mA while the 3.3 V pins can supply up to 400 mA. Like the Intel Galileo development board announced several weeks ago the 86Duino Zero marries Intel architecture to the Arduino platform. Its $39 price tag makes it an attractive proposition. [via]
The 86Duino Zero Runs Linux on x86 - [Link]