Member Since: August 22, 2011

Country: United States



Engineer by day, bboy by night.


Worm Tank Crew

Blowup Kingz


Delta Chi Fraternity Inc.


Electrical & Computer Engineering, Dec. 2011

College of Engineering and Applied Science

University of Colorado at Boulder




  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    Serial Output Error?

    If you happen to see this output using the I2C example code [ https://github.com/garmin/LIDARLite_v3_Arduino_Library/blob/master/examples/GetDistanceI2c/GetDistanceI2c.ino ] with the decoupling capacitors connected to the Arduino:

    > nack
    > nack
    > nack

    you probably do not have a secure connection between the Lidar and the Arduino. I2C is sensitive to its connection. The cable wires are thin and can disconnect when in the Arduino Uno’s female header. For a secure connection, I recommend soldering header pins with some heat shrink or make sort of adapter when connecting it to an Arduino. Once disconnected, the Arduino might stop outputting sensor data. You can reset the Arduino for testing but to prevent the wires from disconneting, it would be better to solder the wires to header pins.

  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    Example Tutorial

    Standalone: Sharp Dust Sensor => [ http://arduinodev.woofex.net/2012/12/01/standalone-sharp-dust-sensor/ ]

    Air Quality Monitoring Tutorial and Calibration => [ http://www.howmuchsnow.com/arduino/airquality/ ]

    Other Examples of Calibrating Optical Dust Sensors and how Dust Sensors Work => [ http://publiclab.org/notes/mathew/05-05-2015/evaluating-low-cost-optical-dust-sensors ]

    Arduino Example Code

    There is some Arduino example code for the dust sensor here => https://github.com/PaulZC/GP2Y1010AU0F_Dust_Sensor

  • I’m sorry but technical support does not work off the comments. I just saw this when working on another case. The error output that you are seeing can be due to a number of reasons.

    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync resp=0xff"

    The value of the “sync resp” is different and not always the same, so it’s hard to say. It can be due to the FTDI drivers, USB cable, board selection in the Arduino IDE, the Arduino IDE version, bad solder joints, the Arduino is not being powered with a sufficient power supply, flux residue, etc. Besides checking some of those causes listed above, I sometimes use a search online with the error. Sometimes I find some solutions provided online through the Arduino.cc forums or other sources.

    If you are still having issues using our FTDI, you can try sending technical support an email for further assistance to see if we can help you with the problem => https://www.sparkfun.com/technical_assistance .

  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    Maximum Speed w/ Example Code

    Looks like the maximum stepper motor speed is about 240 RPM if you use it with an Arduino microcontroller and the EasyDriver. Check here for the example code that was used to test the stepper motor => https://github.com/bboyho/EasyDriver/blob/master/Firmware/Arduino/EasyDriver_StepperMotorWithCable/EasyDriver_StepperMotorWithCable.ino .

    The number of steps for a full revolution looks to be about 1600 microsteps since the stepper motor with cable has a step angle of 1.8 degrees (…360/1.8 = 200 step stepper ) and the EasyDriver has a range of 8 microsteps for a full step.

    Stepper Motor Mount

    The Actobotics Stepper Motor Mount - NEMA 17 [ https://www.sparkfun.com/products/12987 ] is compatible with the Stepper Motor with Cable. I was able to use 4x “M3 x 6mm x 0.5mm mounting screws” included in the Actobotics stepper motor mount to attach it to the Stepper motor with Cable. The mounting hole pattern on the Stepper Motor with Cable uses the NEMA 17’s hole pattern.

  • Audio Bridge: Configuring Two BC127s as Source and Sink using a Serial Terminal

    Below are the instructions configure the BC127 as source and sink. It also includes information about how to pair/connect the bluetooth and stream audio from the source to your sink.

    I recommend powering both bluetooths to easily configure, pair, and connect a BC127 source with a BC127 sink. This example uses the Purpletooth Jamboree development board because there is a connector that is broken out for the “MIC in/LINE in” pins and additional application circuits. You will need a 5V FTDI USB-to-serial converter [ https://www.sparkfun.com/products/9716 ], mini-B USB Cable [ https://www.sparkfun.com/products/11301 ], and a serial terminal [ like Tera Term - https://learn.sparkfun.com/tutorials/terminal-basics/tera-term-windows ]. Two FTDI’s and mini-b USB cables will make it easier to set up. The instructions below will assume that you are using two FTDIs and two mini-b USB cables.

    1.) Configuring Your BC127 as a Source

    1.1) First, solder the header pins to the FTDI->PC side to connect an FTDI to the two Purpletooth Jamboree development boards. This will provide a secure connection between the Purpletooth and the FTDI.

    1.2) Decide what BC127 to use as your Source . I recommend labeling the board as a source with a sticky note or Sharpie.

    1.3) Connect one FTDI to the Purpletooth Jamboree by aligning BLK and GRN silkscreens.

    1.4) Connect the FTDI to your computer with your USB cable. Take note of what COM port it enumerates to using your computer’s device manager.

    Note: This is assuming that you have installed the FTDI drivers. If you have not installed drivers before, try looking at this tutorial [ https://learn.sparkfun.com/tutorials/how-to-install-ftdi-drivers ] or FTDI for in-depth installation guides [ http://www.ftdichip.com/Support/Documents/InstallGuides.htm ].

    1.5) Open a serial terminal connected to the FTDI. Make sure the settings are (9600-8-none-1-none). I prefer using Tera Term.

    1.6) Type this sequence of commands in the serial terminal to restore the bluetooth to its default settings just in case:


    1.7) Use these sequence of commands to set the BC127 as a source:

    set classic_role=1

    1.8) Use this command to get the BC127’s address and take note of the bluetooth’s address:

    get local_addr

    The BC127 will respond in the serial terminal with its unique address. In my case, my BC127 responded with the address “ 20FABB018221 ”.

    1.9) This step is optional but it might help in identifying the bluetooth device in the future. I named my source as “ BC_018221_Source ” but you could use a different name if you prefer:

    set name=BC_018221_Source

    2.) Configuring Your BC127 as a Sink

    2.1) Assuming that you have soldered the header pins to the second Purpletooth, label the board as a sink with another sticky note or Sharpie.

    2.2) Connect the second FTDI and Purpletooth to your computer and take note of what COM port it enumerates to using the device manager.

    2.3) Open a second serial terminal on your computer configured to the second COM port and 9600-8-none-1-none.

    2.4) Type the sequence of commands to restore the bluetooth to its default settings like the source:


    2.5) Use this sequence of commands to set the BC127 as a sink this time:

    set classic_role=0

    2.6) Assuming that your Purpletooth labeled as “Source” is powered from your computer via FTDI, type this command to determine the bluetooths in range"

    inquiry 10

    This should output the bluetooths that are in range for a few seconds. You should notice the source bluetooth that is in range. As an alternative, you could use a LiPo battery to power the source bluetooth.

    2.7) With the bluetooth source’s unique address from earlier, you will connect to the Advanced Audio Distribution Profile (A2DP) like so:

    open 20FABB018221 a2dp

    Note: The bluetooth’s unique address is case sensitive. You need to make sure that you are entering the bluetooth’s address exactly as it was given from the first BC127. Make sure that both bluetooths are set to advertising/discover mode in order execute this command. If you had followed the steps to initiate the “restore” command earlier, the blue LED labeled “LED1” and red LED labeled “LED0” will be blinking rapidly back and forth.

    2.8) You will also need to connect to the Audio/Visual Remote Control Profile (AVRCP)

    open 20FABB018221 avrcp

    You will only need to do this once. If you have connected to the bluetooth previously and the bluetooth remembers the address with its history, you will just need to connect using the open command once. It will automatically open and connect the avrcp after initiating the command again.

    2.9) At this point, you will notice that your source’s green LED labeled “LED2” is ON

    2.10) Hit the play button on either the source or sink’s PCB labeled as “ PIO2 ” or the symbol for play/pause to send audio through the audio bridge from the sink to your source. You can also send the command:

    music play

    3.) Playing Audio from Source to Sink

    Assuming that you have male to male 3.5mm audio jack cable, connect an audio device to the audio jack on the source’s bluetooth labeled as “ MIC in/ LINE in ”. I just used the audio out from my computer for testing and decided to play a track from a web browser in SoundCloud [ https://soundcloud.com/foxxboogie/foxx-boogie-official-bnc-mixtape-2014 ]. I noticed that there was better audio quality with the BC127 source’s switch flipped to the “ LINE in ” side. This might be due to the microphone being disabled with the BC127’s configuration.

    Note: I recommend powering the BC127 Source separately with a LiPo battery. When connecting the FTDI from my computer, it created a ground loop which causes a noticeable hum or hiss in the audio signal. This can happen when handling audio applications.

    After a power cycle, the bluetooths will disconnect and you will need to connect using the “open” command again. To easily connect, I recommend using this command to have the sink auto connect to the source:

    set autoconn=1
  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–


    Limitations of PWM Output

    Not all of the Arduino Uno’s I/O pins are capable of PWM. Looking at the analogWrite() [ https://www.arduino.cc/en/Reference/analogWrite ], PWM can only work with “3, 5, 6, 9, 10, and 11”. If you are trying to use analogWrite() on certain pins in the “SparkFun_PWM_Demo.ino” , the LED will not have varying brightnesses because it is not capable of outputting PWM. You might want to adjust the pin definitions here = > [ https://github.com/sparkfun/Spectrum_Shield/blob/master/Firmware/SparkFun_PWM_Demo/SparkFun_PWM_Demo.ino#L27 ] due to the limitations of the Atmega328P. From my observations, the LEDs were mostly off where it was connected to pins that could not PWM.

    You might want to consider using using less LEDs for PWM, expanding the I/O using a MUX, or using an Arduino Mega 2560 with the PWM demo since it has more than one PWM pin. The pins do not have to be rerouted since PWM works on pins “2 - 13 and 44 - 46.”

    Constrain() Function

    You might want to use the constrain() function [ https://www.arduino.cc/en/Reference/Constrain ] since the output value for analogWrite() between 0 and 255. If the audio signal has the maximum volume, the analogWrite()’s value will be out of range.

    Buzzing or Humming Noises?

    Speaking from experience, there is some sort of buzzing noise if you listen to the audio signal from the audio jack labeled Output as the Arduino microcontroller turn on/off I/O pins. You will hear it when you turn your volume down really LOW. When the Arduino microcontroller has a certain I/O pin turned ON, the power output from the LEDs is coupled to the audio signal. You will hear more buzzing/humming when you have more LEDs that are turned ON.

    You might want to add a capacitor, blocking diode and splitter, or use a wireless audio bluetooth to send it out to the spectrum shield. By turning the volume close to the maximum, you will not hear the buzzing/humming as much. When testing the code with a digitalWrite() function on the pins, I was able reduce the buzzing/humming since the I/O pins were turned off more frequently.

  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    Bricked Qduino?

    If you have a Qduinio that is not being recognized by your computer and you are not able to upload new Arduino code, you might be able to recover the board using the double reset method. Try looking here for more information => [ https://learn.sparkfun.com/tutorials/pro-micro—fio-v3-hookup-guide/troubleshooting-and-faq#ts-revive ]. You can also try to look at my troubleshooting comment for the other ATmega32U4 development boards [ https://learn.sparkfun.com/tutorials/pro-micro—fio-v3-hookup-guide/discuss#comment-56aa5cabce395f9f2d8b456d ]. There is a list of detailed instructions on reviving each of the other SparkFun ATmega32U4 development boards in my troubleshooting comment.

    I had a case where a customer’s Qduino was not able to be recognized on their Windows computer. By following the double reset method and uploading Arduino code when the board was in bootloader mode, they were able to recover the Qduino.

  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    To reprogram the Atmega328P on the SparkFun Metro-Gnome, you would need an AVR Programmer to connect. There is no Arduino bootloader on the board so you would need the makefile to compile a .hex file from the code, flash the .hex file, and set the lock bits. This old tutorial might be of some use => [ https://www.sparkfun.com/tutorials/93 ].

    Note: The older versions of this kit used the Atmega168. The current builds are using the Atmega328P.

  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    Light/Dark Sensor

    Here are some low tech methods using a photocell that might be of some use. You do not need to use a microcontroller with these circuits. You would need some sort of transistor if your load is higher power. Keep in mind that you will not have as much control of your output if you do not use a microcontroller.

    Dark Sensor [ http://www.build-electronic-circuits.com/ldr-circuit-diagram/ ]

    Dark/Light Sensor [ http://www.buildcircuit.com/darklight-sensor-using-transistor/ ]

  • ——————– Tech Support Tips/Troubleshooting/Common Issues ——————–

    Range Tests

    The SM130 does not seem to have that much of a range with the associated RFID Evalulation shield’s trace antenna [ [https://www.sparkfun.com/products/10406(https://www.sparkfun.com/products/10406) ]. Here’s a demo [ https://youtu.be/FLjV5BT9slg?t=4m38s ] with one tag being read at a time. Depending on the RFID tag used, the read range is usually 1 inch or less.

    Other External Antennas

    Looking online, it appears that there are other antennas from the manufacturer that you can explore for options instead of using our RFID Evalulation Shield’s trace antenna => [ https://shop.sonmicro.com/Mifare/PcbAntennas ].

    Protocol Standards?

    The Mifare classic 13.56MHz RFID tags listed in our catalog [ https://www.sparkfun.com/search/results?term=MIFARE+Classic%C2%AE+1K+%2813.56+MHz%29 ] use the ISO/IEC14443 Type A standard protocol. As stated in the datasheet, this is compatible with Mifare Classic 1K, Mifare Classic 4K, Mifare Ultralight RFID tags. Theoretically, the 13.56MHz RFID reader should work if the RFID tags purchased outside of our storefront use the same protocol. There were a few comments below that indicated that it works well with NFC compatible-enabled devices.


    The datasheet for the SM130 [ https://www.sparkfun.com/datasheets/Sensors/ID/SM130.pdf ] provides information about anti-collision. I have not tested the SM130 but the SM130 can read multiple tags with the anti-collision feature. With some clever programming, you could read multiple tags with the SM130. Looking online, there was a customer that provided a demo with the SM130 and shield. They were able to read 5x RFID tags simultaneously => [ https://www.youtube.com/watch?v=nTI08vvN_I8 ]. They had to turn on/off the antenna to detect whether a tag has been taken off the reader. We do not have any information in our knowledge base about the maximum number of RFID tags that can be read with the SM130.

    Maximum Number of RFID Tags?

    We have not tested the maximum number of RFID tags with the MiFare SM130. I am not sure what the maximum number of RFID tags that can be read with SM130.