If you want to mess around with your Xbox 360 controllers on a computer Microsoft would be happy to sell you a USB dongle to do so. But [Tino] went a different route. The board that drives the Xbox 360’s status light ring also includes the RF module that wirelessly connects the controllers. He wired this up to his Raspberry Pi using the GPIO header.
The module connects via an internal cable and is treated much like a USB device by the Xbox motherboard. The problem is that it won’t actually handle the 5V rail found on a USB connector; it wants 3.3V. But this is no problem for the RPi’s pin header. Once a few connections have been made the lights are controlled via
SPI I2C and [Tino] posted some example code up on Github to work with the RF module. He plans to post a follow-up that interfaces the module with a simple microcontroller rather than an RPi board. If you can’t wait for that we’re sure you can figure out the details you need by digging through his example code.
The advent of the Arduino brought the world of microcontrollers to hobbyists, students, and artist the world over. Right now we’re in the midst of a new expansion in hobbyist electronics with the Raspberry Pi, but we can’t expect everyone to stay in the comfortable, complex, and power-hungry world of Linux forever, can we? Eventually all those tinkerers will want to program a microcontroller, and if they already have a Raspberry Pi, why not use that?
[Kevin] wanted to turn his Raspi into an AVR development workstation, without using any external programmers. He decided to use the Raspi’s SPI port to talk to an AVR microcontroller and was able to make the electrical connections with just a few bits of wire an a handful of resistors.
For the software, [Kevin] added support for SPI to avrdude, available on his git. Theoretically, this should work with any AVR microcontroller with the most popular ATMegas and ATtinys we’ve come to love. It doesn’t support the very weird chips that use TPI programming, but it’s still extremely useful.
Often the true key to success is persistence and that holds true for this project which dumped the ROM from the current generation of Tamagotchi toys. If you’re a fan of learning the secrets built into consumer electronics — and you know we are — you’ll want to go back and watch the 24-minute lecture on Tamagotchi hacking which [Natalie Silvanovich] gave a 29C3 last year. She had made quite a bit of headway hacking the playable pods, but wasn’t able to get her hands on a full ROM dump from the General Plus chip on board processor. This update heralds her success and shares the details of how it was done.
As we learned form the video lecture it was a huge chore just to figure out what processor this uses. It turned out to be a 6502 core with a few other things built in. After prowling the manufacturer’s website she found example code for writing to Port A. She was then able to execute her own code which was designed to dump one byte of ROM at a time using the SPI protocol.
[Natalie] posted her code dump if you’re interested in digging through it. But as usual we think the journey is the most interesting part.
[Ken Olsen] needed a bunch of analog inputs for his model railroad project. He wanted to use the Raspberry Pi board, but alas there are no analog inputs available on the GPIO header. But there is SPI. So he used an online service to design his on Analog input expansion boards.
He mentions that Eagle can be a bit of a pain to work with. For this project he decided to give circuits.io a try. This is an in-browser PCB layout tool which we looked at in a links post some time ago. The service lets you order directly from your in-browser design without the need to run gerber files or the like (boards are made using the OSH Park service). He’s very happy with the boards he got back. They feature a footprint for a connector to interface with the RPi.
The design uses MCP3008 Analog to SPI chips. Each has eight channels but [Ken] needed more than that. Since the service provides three copies of the board he made them modular by adding end connectors which chain the SPI and power rails from one board to the next. Don’t miss his full demo in the video after the break.
Continue reading “Analog input expansion boards for Raspberry Pi”
While the Raspberry Pi has very good support for an I2C bus, a lot of very cool chips – including the in system programmer for just about every ATtiny and ATmega microcontroller – use an SPI bus. [Louis] sent in a tutorial for getting hardware SPI on his Raspi, and even though it’s rather limited right now, it’s a step in the right direction.
Previously, [Brian Hensley] put up a tutorial for using the Linux SPI drivers with the Raspi. [Louis] wanted to play with SPI in Python, so he added a C extension to the spidev.c file (available here) that allows him to open an SPI connection, initialize, transfer, and close the connection.
After connecting an Arduino to the MOSI, MISO and SCK pins of his Arduino, [Louis] was able to transfer data from his Raspi over an SPI bus. It should be noted that a level shifter would be a really good idea here, but this is an excellent project if anyone would ever want to port AVRDude to Python.
A few of [michu]’s friends formed a band named Kalikut Now and needed an awesome stage show. The band made a few 80cm-high letters of their band name, cut a few pieces of acrylic, and wired them up with a few LED modules. The work of connecting these letters to a computer and programming them fell on [michu], and we’ve got to say he did a pretty good job.
You may remember [michu] from his StripInvaders and PixelInvaders projects, basically a few RGB LED modules that can communicate with an Arduino over an SPI interface. With these huge letters, [michu] ran into a problem: he had 11 meters of cabling between the clock and data lines, far beyond the maximum recommended length for any datasheet.
[michu] looked around the Internet for common problems with SPI interfaces and found a lot of good advice from a lot of very smart people. The issue with the SPI bus was eventually solved by correctly wiring the grounds of his LED modules, building a few dead-simple SPI buffers, and reducing the clock speed of the SPI bus.
After countless hours, the band’s name is in lights, and RGB LEDs to boot. Everything can be controlled with Abelton Live, and looks absolutely fantastic as seen in the video after the break.
Continue reading “The band’s name in lights, RGB LEDs to be exact.”
Imagine you’re stuck on a desert island, hundreds of miles away from the nearest person, and you finally have time to finish that project you’re working on. You have a single microcontroller, but you’re lacking a computer and you need to program an ATtiny13. How do you do it? [androidruberoid] figured out how to manually flash a microcontroller (Russian, surprisingly good translation) using just three switches and a lot of patience.
[androidruberoid]’s ATtiny13 – like nearly all Atmel microcontrollers – are programmed using an SPI interface. This interface requires four signals: SCK, a data clock, MOSI, the data line from master to slave, MISO, data from slave to master, and RESET. By connecting these data lines to buttons, [androidruberoid] is able to manually key in new firmware one byte at a time.
This technique of manually programming bits relies on the fact that there is no minimum speed for an SPI interface. In the video after the break, you can see [androidruberoid] manually programming an ATtiny13 with a simple program. It only lights up an LED, but with enough patience he could key in a simple ‘blink a LED’ program.
Continue reading “Programming a microcontroller one bit at a time”