Show Posts
Pages: [1] 2 3 4
1  Forum 2005-2010 (read only) / Troubleshooting / Re: XBee Shield strange on: June 30, 2008, 12:34:55 pm
I'm guessing that maybe you are using the XBee Series 2.5 instead of the older XBees (you can't set the destination in the Series 2.5). If that's the case, you'll need to change the firmware for one of your XBees to be a Coordinator and the code you write for the XBees will be a little different. I wrote a little tutorial about these in this post/thread. Hope that helps!
2  Forum 2005-2010 (read only) / Troubleshooting / Re: I have this arduino project that is due soon, on: April 02, 2008, 02:12:21 pm
What is the code you're trying to load and what is the error message you're receiving?

You might look at some troubleshooting tips here.

Oh, and what operating system is on your PC and what version of the Arduino IDE are you using?
3  Forum 2005-2010 (read only) / Development / Re: Yet another small size Arduino clone with XBee on: December 20, 2008, 02:58:11 am

I just received my Funnel I/O in the mail today; what an elegant design! Very nice work. I have one small suggestion for a future revision and that would be to add an out line or some kind of marker in the silkscreen to remind the user which way the XBee module gets plugged in. I notice you had that on your prototypes, but it's been removed from v1.3.

Unfortunately, I had to re-solder one of the 2mm XBee sockets because one pin was filled with solder when it arrived, but that's no big deal, I know that's hard to avoid with these sockets. Once again, thanks for the great design with lots of possibilities!
4  Forum 2005-2010 (read only) / Development / Re: Skinny from SparkFun on: June 02, 2008, 01:01:23 pm
Finally since this seems to be about options, I would add 2 pins at .1" spacing for + and - at the power connector to allow for some male pin headers to be soldered by the user instead of a barrel connector. This could be under the barrel connector or to its side somehow. If done well, the large holes for the bigger connector could be used as strain relief if soldering in wires.

I like this idea. Sparkfun already does this on their breadboard power supply. I soldered both a power jack and header pins on mine which makes it very versatile.
5  Forum 2005-2010 (read only) / Development / Re: Looking for XBee Arduino Shield on: April 14, 2008, 12:21:08 pm
You can buy the shield new for a few bucks at
6  Forum 2005-2010 (read only) / Development / Re: Need a name for this new shield... on: February 08, 2008, 01:57:15 pm
How about "BatShield"? It refers to the shield's birth as a battery shield and sounds kind of like something Batman would have (your shield reminds me of Batman's gadget belt - no matter what the situation, the needed gadget was always available).

BTW, this is an awesome shield and I look forward to being able to order one!
7  Forum 2005-2010 (read only) / Interfacing / Re: Playstation Controller on: February 25, 2008, 06:44:04 pm
I haven't tried interfacing with a Playstation Controller yet, but it's on my todo list since I just picked up a AH3-R Hexapod from Lynxmotion and I'll be having the Arduino handle communication and sensor data.

I looked at your code and some of the links you provided. It looks like the controller communicates with something kind of resembling SPI. I found this simple BS2 program on the Lynxmotion site which looks like it would be really easy to port over to Arduino with shiftOut and shiftIn. Might be worth a try if you're not getting anywhere with the code you posted before.

What's your application and/or what other hardware are you using?
8  Forum 2005-2010 (read only) / Interfacing / Re: Interfacing NS73M FM Transmitter Module on: November 24, 2008, 01:15:14 pm
Hi qwerty-

The amplifier from QKits will increase the broadcast range from the NS73M module.  It's really easy to use; you just connect the "RF out" on the NS73M module to the "RF In" on the QKits amplifier and then connect your antenna to the "RF out" on the amplifier. There's no additional programming or set-up required. I hope that answers your question.

Also, after posting the code above, Mike Yancey and I collaborated on many improvements for using the NS73M module. He made a really great web page that explains how to use the module along with how to include an LCD and rotary encoder/switch for selecting the broadcast frequency. The code is available on his page and it's been updated to use I2C instead of SPI which made things simpler.
9  Forum 2005-2010 (read only) / Interfacing / Re: Interfacing NS73M FM Transmitter Module on: July 06, 2008, 03:41:33 pm
Four meters might be about right, depending on your environment and antenna placement. The NS73M only puts out 2mW at full power (make sure register 2 is set for 2mW out) which isn't much; it's about the same as you might expect from one of those mp3 player broadcasters that are sold for use in cars. I've used the FM amplifier kit from QKits with the NS73M for more power. If you google for "Part 15 broadcasting" you'll find all kinds of info for making the most out of micro-power transmitters - is a good place to start.
10  Forum 2005-2010 (read only) / Interfacing / Re: Interfacing NS73M FM Transmitter Module on: July 05, 2008, 09:50:55 pm

I finaly succed with the programming of the synthetizer but the range of the transmitter is only a few meter. And there is also a lot of hissss.... May be i have a problem with the antenna coupling?

If anayone have succed with this module, do you have a longer range of transmission than a few meter? And what kind of antenna do you use? And how does it connected with the Sparkfun board? Any coupling? As i said, directly connected, a 31 inch wire antenna have only a few meters range, with a lot of hissss....

I have the ns73m working great with just a ~31" wire directly to the rfo pin, no decoupling. I don't know what frequency your broadcasting at, but try changing the oscilator band up or down by one, I'd bet that makes the wierd hiss go away (assuming your audio input is clean).
11  Forum 2005-2010 (read only) / Interfacing / ARRRduino! on: December 04, 2007, 04:28:03 pm
I'm cross-posting this on the Sparkfun forums, but I wanted to have an Arduino-specific explanation here. I created some code that allows the Arduino to control the NS73M FM transmitter (available on a breakout board from Sparkfun). The biggest problem I faced in making this work was that the NS73M communicates over SPI, but it needs a 4 bit register address and then 8 bits of data for that register. The Arduino SPI implementation (as well as the ShiftOut command) seem to be hard coded to send 8 bit data which wouldn't work. I had to do a little bit of bit-math to try to fake SPI. This is based very much on the example code provided by Sparkfun.

This is my first real Arduino project, so if anyone has any suggestions or improvements, I'd love to hear about them. I used the schematic above for hooking up the Arduino to the NS73M except that I connected the clock line to pin 12 instead of pin 13 to avoid any issues with the LED on pin 13.

This is only the first part of my project which I'll probably post in the "Exhibition" forum once it's complete. I'm calling it ARRRduino! smiley

    Cai Maver, caimaver(at)
    ARRRduino+NS73M v0.3
    This code allows an Arduino Diecimila to control an NS73M FM Transmitter Module (Arrr matey!)
    This sets the NS73M (available from Sparkfun, SKU#: WRL-08482) to transmit
    at 2mW with 75us pre-emphasis (the standard for North America) on 97.3 MHz.
    Use this formula to determine the register values for a new transmitting frequency (f):
    (f + 0.304)/0.008192 <-- use only the whole number and convert the result to
                           16-bit binary where the lower byte goes in register 3
                           and the upper byte goes in register 4
                           ex.: for 97.3 MHz, (97.3 + 0.304)/0.008192 = 11914.55...
                                11914 = B0010111010001010 so Reg 3=B10001010 and Reg 4=B00101110
    A future version of this code will allow for on-the-fly frequency changes
    Thanks to Nathan Seidle at Sparkfun and Jim "ZAPNSPARK" G. for sharing their NS73M code!

int CK = 12;  //clock pin
int DA = 11;  //data pin
int LA = 10;  //latch pin

void setup(){
  Serial.begin(9600);  //begin Serial connection for debugging
  pinMode(CK, OUTPUT);
  pinMode(DA, OUTPUT);
  pinMode(LA, OUTPUT);
  digitalWrite(LA, LOW); //unlatch transmitter
  delay(100);            //Wait for VDD to settle
  spi_send(0x0E, B00000101); //Software reset

  spi_send(0x01, B10110100); //Register 1: forced subcarrier, pilot tone on
  spi_send(0x02, B00000011); //Register 2: Unlock detect off, 2mW Tx Power

  spi_send(0x03, B10001010); //Register 3: Set broadcast freq to 97.3, lower byte
  spi_send(0x04, B00101110); //Register 4: Set broadcast freq to 97.3, upper byte

  spi_send(0x08, B00011010); //Register 8: set Osc on band 2

  spi_send(0x00, B10100001); //Register 0: 200mV audio input, 75us pre-emphasis on, crystal off, power on
  spi_send(0x0E, B00000101); //Software reset
  spi_send(0x06, B00011110); //Register 6: charge pumps at 320uA and 80 uA
  Serial.print("Transmitting");  //for debugging


void loop(){


void spi_send(byte reg, byte data)  //routine to send Register Address and Data as LSB-first SPI
    int x;
    int n;
    digitalWrite(LA, LOW);
    for(x = 0 ; x < 4 ; x++)           //send four-bit register address
        digitalWrite(CK, LOW);         //Toggle the SPI clock
        n = (reg >> x) & 1;            //n is the xth bit of the register byte
        if (n == 1){
            digitalWrite(DA, HIGH);    //Put high bit on SPI data bus
        else {
            digitalWrite(DA, LOW);     //Put low bit on SPI data bus
        Serial.print(n);               //send bit to serial connection for debugging
        digitalWrite(CK, HIGH);        //Toggle the SPI clock

    for(x = 0 ; x < 8 ; x++)           //send eight-bit register data
        digitalWrite(CK, LOW);         //Toggle the SPI clock
        n = (data >> x) & 1;
        if (n == 1){
            digitalWrite(DA, HIGH);    //Put high bit on SPI data bus
        else {
            digitalWrite(DA, LOW);    //Put low bit on SPI data bus
        Serial.print(n);              //send bit to serial connection for debugging
        digitalWrite(CK, HIGH);       //Toggle the SPI clock
    delayMicroseconds(1);             //might not be needed, supposedly unstable command anyway
    digitalWrite(LA, HIGH);           //Latch this transfer
    digitalWrite(LA, LOW);
    digitalWrite(CK, LOW);            //This is to keep CK pin at 0V at end of data transfer
    Serial.print("\n");               // send new-line to serial for debugging
12  Forum 2005-2010 (read only) / Interfacing / Re: Interfacing NS73M FM Transmitter Module on: October 26, 2007, 10:36:37 am
Thanks for making the template Phil, it's come in useful! I did notice that I can get data from the device in IIC mode, but I don't have any experience with either IIC or SPI and the example code (as well as several tutorials I've found for other devices) is for SPI. If I can figure out IIC, I'll probably go with that instead.

I don't think I'll have time to finish this project before Halloween, but my idea is to have a bunch of small FM radios hidden throughout a 'haunted' house with each one set to a different frequency (I have a handful of these from Electronics Goldmine). Then I would broadcast pre-recorded voices and change the broadcast frequency with the Arduino so that the voices move around the room or lead people to different places. I could even mount a transmitter on a simple robot or RC car to have a voice move through the room.

The nice thing about the transmitter module is that it's a very small, low-power PLL transmitter so it will be frequency-stable. I work at a university and my office overlooks the main bus stop on campus. I'm also considering broadcasting some sort of random looping weird message each day and putting the frequency on a sign in my window for people to tune to as they come on to campus.

There's probably all kinds of fun you can have with a programmable FM transmitter! I'm going to try out this circuit tonight and see how it goes...
13  Forum 2005-2010 (read only) / Interfacing / Interfacing NS73M FM Transmitter Module on: October 25, 2007, 01:25:44 pm
I am going to make a project to interface the NS73M FM Transmitter module from SparkFun with the Arduino. I haven't attempted a project like this before so I'd like to get an idea of whether or not I'm going in the right direction. I am going to communicate with the module over SPI, but it operates at 3 volts so here's what I have planned for the hardware hookup.

I based this off of the SparkFun sensor interfacing tutorial. I didn't bother to show the IIC/SPI select pin or PLL-lock (TEB) pin hook-up; I'll just put those on digital-out pins 8 and 9. Does this look ok? How much current is safe to pull through the 3V3 pin on the Arduino?

Once I'm certain I have the hardware interface set-up correctly, I'm going to attempt to modify the example PIC code from SparkFun for the Arduino. I appreciate any feedback!

14  Forum 2005-2010 (read only) / Interfacing / Re: FM transmitter for senior project on: December 20, 2008, 05:32:20 am
My understanding of this student's project is that he wants an emergency vehicle to have the ability to interrupt the regular broadcasts on the FM band (87.8 - 108 assuming the original poster is in the United States)  for other vehicles in the immediate vicinity. This is certainly possible and - off the top of my head - here's how I would approach it.

There are only 101 channels in the "FM band" and due to FCC channel spacing, a maximum of only about 50 channels could be in use at any given location (assuming the local FM market were saturated and ignoring the possibility of pirate broadcasters or private vehicles using mp3 player FM modules). In reality, many areas of the United States have fewer than 50 FM stations available in the area.

I would set-up a unit in the emergency vehicle with a digital FM receiver (like the AR1000 module from Sparkfun) that would scan for all broadcast stations available in the area in question. An Arduino would record every broadcast station picked-up by the digital receiver. The Arduino would then control and array of, oh, let's say 10 digital FM transmitters such as the NS73M (also available from Sparkfun). The Arduino would set each of the 10 Transmitters to one of the frequencies picked-up by the FM receiver and broadcast a 3 second message, "Warning, Emergency Vehicle approaching!". Then the Arduino would set the transmitters to the next 10 frequencies recorded by the FM receiver and repeat the message. If we assume a saturated market of 50 FM stations and 10 transmitters broadcasting a 3 second message, the entire transmit operation would take about 15 seconds plus let's say about 5 seconds to scan the FM band for broadcast frequencies. That's not too bad and it could go faster if you make the emergency message shorter or add more transmitters.

It's perfectly legal to broadcast on the FM band in the US under the FCCs part 15 rules; that means that your power level must be below 250uV/Meter at 3 Meters. Most people don't bother to measure that and just try to keep the transmitter output to 7mW or so (and really probably less than that - the NS73M modules output 2mW max). That's enough to drown out full-power broadcast stations if you're really close to the receiver as you might be in an approaching vehicle on the highway - especially if your transmitting antenna is outside of your vehicle. This is certainly an aspect to thoroughly test though.

This approach is not very elegant (imagine 10 separate 30 inch antennas sitting on top of an ambulance - and who knows what it would do to the other emergency services equipment on-board the vehicle), but that's how I might start investigating a project like this. It's a neat project idea.
15  Forum 2005-2010 (read only) / Interfacing / Re: Interfacing the XPort Direct on: September 29, 2008, 12:19:39 pm
It's well hidden on their website (it's under "Surface Mount Proto Boards for some reason), but NKC Electronics sells a simple breakout board for the XPort Direct.
Pages: [1] 2 3 4