Contact
Home Electronics Software Miscellaneous
µServer
AIR
BluePrint
16x16 Matrix
µTetris MSP430
USB Power Monitor
WeatherDisplay
Winamp Control
CPC
AVR ISP Insulator
Logic Insulator
USB Insulator
USB UART Insulator
AVR: LCD Driver
AVR: USB Stuff
AVR: De-Bricker
Temp-O-Clock
Touch-O-Clock
Digital Analog Clock
Block Clock
Binary Clock
Module: Rambo-S
Module: INA226
current sensor
Module: Nokia LCD
Module: misc
voltage modules
Module: DS3231
RTC
Module: VS1011e
MP3 decoder
Module: OSD
Module: SD-Card
Module: USB<->UART
Auto Video Switch
Enctest
GB Camera
Robot: Gizmo
IR Remote Control
Keyboard Extender
Laser Tagger
UV Timer
Thermometer
Telephone Control
Telephone Spy
Games
Blinking Hearts
EGG Timer



There are many universal remote controls out on the market. None of them have the style of a GameBoy Advance fitted with a little infrared transceiver and a functional C++ programm. The name AIR comes from Advanced IR. It was published in the Make blog.
It features a graphical interface with customizable buttons. The signal information can be sampled from the original remote control. One key feature is that it is possible to programm up to two commands on one button. So if your favorite TV station is channel '13' you can sample a '1' and a '3' on one button and A.I.R. will send both commands at once. This functionality is also required for the RC5 protocol which has a toggle bit.
picture
The .gba ROM file is loaded onto a SD-card and then inserted into a SuperCard.
picture
The GameBoy no longer has an infrared port. But it does have a user port similar to the RS232 port on the PC. A little IR module is inserted in the user port.
picture
In SIO general purpose mode (bit 15 of RCNT set) of the GBA link port it is possible to access the ports directly. I decided to emulate a sort of SPI interface for the communication with the AVR module because it is a synchronous protocol that makes the timing uncritical. But this SPI has an SIR (slave initiated read) function that I had to develop for this system. The SPI has a data rate of 5K bytes which is more than enough for this purpose.
picture
picture
Command reference between AVR and GBA:

Echo:
GBA 0xEE
AVR 0xEE
end

Sample to buffer:
GBA 0xA1
AVR samples
AVR 0xAA - succsess
0xFF - error
end

Transmit buffer:
GBA 0xA2
AVR transmitts
AVR 0xAA
end

Download buffer to GBA:
GBA 0xB1
AVR 0xAA
AVR sends 200 bytes
end

Upload buffer to AVR:
GBA 0xB2
GBA sends 200 bytes
AVR 0xAA
end

Sample for transmitting a button:
GBA 0xB2
GBA sends 200 bytes
AVR 0xAA
GBA 0xA2
AVR transmitts
AVR 0xAA
end

The pin layout.
picture
The ATtiny44 converts the received IR data into serial data that can be read by the GameBoy Advance. Vice versa the GameBoy can send data to the module. The data is converted into pulses and modulated to the carrier frequency of 37KHz. This is compatible with all 38 and 36 KHz devices.
picture
picture The GUI with buttons. To the left is a list of the currently available icons with a few TV station logos.
picture Dialogue for sampling a signal and choosing an icon for a button. It is possible to scan two signals and choose if they should be sent after each other or alternating.
The buttons have the following functions:

A: sample signal into the AVR
B: send the signal that is currently in the AVR's buffer for test
L: upload the AVR buffer into signal 1 in the GBA array
R: upload the AVR buffer into signal 2 in the GBA array
Select: mode selection
Start: enter and save to cartridge nonvolatile RAM
picture The GUI for placing a folder with icon. The little screen to the left shows the position to which the icon is being placed and what fields are already ocupied. The folder method will not be supported in the end version but rather the ability to scroll the screen to a screen on each of the four sides (that gives you 5 times 24 buttons).
Here is the little module mounted on the GBA. I took a multiplayer cable and connected a little socket to it. It was then coated with Plasti Dip(blue).
picture

LAST
NEXT