The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Breakout boards, sensors, Drawdio, Game of Life, other Adafruit kits, etc.

Moderators: adafruit_support_bill, adafruit

The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby hackerman336 » Sat Apr 28, 2012 11:30 am

>
> Message:
> ------------------------------------------------------
>
> with the gps u said it had •Position Accuracy: 1.8 meters when i looked at
> the data i have asumed that / Loctation by 10 but i collected the data from
> more then 20 miles away Heres some sample data
> $GPGGA,021640.000,4738.7837,N,12221.1925,W,2,10,0.91,27.3,M,-17.3,M,0000,0000*65
> $GPRMC,021640.000,A,4738.7837,N,12221.1925,W,0.30,194.33,280412,,,D*74
> $GPGGA,021641.000,4738.7837,N,12221.1924,W,2,10,0.91,27.3,M,-17.3,M,0000,0000*65
> $GPRMC,021641.000,A,4738.7837,N,12221.1924,W,0.26,194.33,280412,,,D*73
>
> Time: 2:16:41.0
> Date: 28/4/2012
> Fix: 1 quality: 0
> Location: 4738.7836N, 12221.1914W
> Speed (knots): 0.26
> Angle: 194.33
> Altitude: 0.00
>
> :!: :?: :?: :?: :?: :!: :!: :!: :!: :!:
> ------------------------------------------------------
>
hackerman336
 
Posts: 6
Joined: Sat Mar 10, 2012 11:23 pm

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby franklin97355 » Sat Apr 28, 2012 11:51 am

So, where are you? How do you have things connected? Are you outside and have a lock? What are the exact descrepencies? GPS's will sometimes give you the last info they have in their memory even if it is invalid.
User avatar
franklin97355
 
Posts: 1706
Joined: Mon Apr 21, 2008 1:33 pm

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby adafruit_support_bill » Sat Apr 28, 2012 1:46 pm

> Fix: 1 quality: 0

It says that the quality is zero - you probably don't have enough satellites locked to get a good reading.
User avatar
adafruit_support_bill
 
Posts: 15962
Joined: Sat Feb 07, 2009 9:11 am

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby adafruit » Sun Apr 29, 2012 11:45 pm

GPS modules rarely emit incorrect data (unless you are in a valley or cave)

its more likely that he does not know his exact GPS coordinates

hackerman336, it would be more useful to us if you could post WHERE YOU THINK YOU ARE - saying "20 miles off" doesnt really mean anything if we dont know where its "off" from. According to google maps, +47° 38.7836' -122° 21.1914' is here:

http://maps.google.com/maps?f=q&source= ... 8&t=m&z=16

please spend time with the ultimate GPS tutorial, this and more is covered in depth!

http://ladyada.net/products/ultimategps/
User avatar
adafruit
 
Posts: 10485
Joined: Thu Apr 06, 2006 3:21 pm
Location: nyc

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby hou » Tue May 08, 2012 3:50 am

Hello. I am having a similar issue with Ultimate GPS breakout board that I purchased -- producing location results that are ~30 miles from my present location.

I am new to Arduino projects and have a basic understaning of the IDE. But, I am an engineer with familiarity with electronics projects.

Here's the key information regarding my project set up and results:

1) I have a Duemilanove and running Arduino IDE v1.0.

2) I have followed the Adafruit Ultimate GPS tutorial, as the previous post suggested to original post owner. I downloaded the Adafruit_GPS library from github that is referenced in the tutorial and installed it in my Arduino IDE library.

3) I initially followed the "Direct Computer Wiring" instructions in the tutorial -- connecting GPS-to-Arduino as follows: VIn to +5V, GNC to Ground, RX to Digital 0, and TX to Digital 1. I re-checked these jumper pin connections several times. In this configuration, I loaded and ran the Adafruit example GPS sketch "blank" to allow me to watch the NMEA output on the Arduino Serial Monitor output. Upon connecting the GPS to 5V pin, the red status LED blinks for 2-5 min and then goes off. I observe the transition from bogus NMEA data to what appears to be "real" location output data on the Serial monitor. I initially tried this indoors with GPS next to a window just to get familiar with wiring and sketches, then moved to outdoors w/a laptop in clear skies and open ground. I verified and set in the Arduino IDE the correct Duemilanove + COM port combination before running a test. Regardless of whether indoors or outdoors and after 20-25 minutes of running the sketch on several attempts, I acquire this example NMEA output (I've #'ed out the output GPS location for privacy):

$GPGSV,4,1,13,12,82,306,39,02,72,141,40,04,49,062,39,25,35,307,18*74
$GPGSV,4,2,13,51,35,158,31,09,30,207,34,10,24,102,36,27,21,198,26*7A
$GPGSV,4,3,13,29,15,264,,05,07,153,28,17,06,076,13,14,02,295,*76
$GPGSV,4,4,13,31,01,335,*4D
$GPRMC,060254.000,A,####.####,N,#####.####,W,0.03,329.81,080512,,,D*7B
$GPVTG,329.81,T,,M,0.03,N,0.05,K,D*3F
$GPGGA,060255.000,####.####,N,#####.####,W,2,7,1.17,65.2,M,-19.6,M,0000,0000*50
$GPGSA,A,3,04,12,02,25,09,10,27,,,,,,2.15,1.17,1.81*04
$GPRMC,060255.000,A,####.####,N,#####.####,W,0.02,329.81,080512,,,D*7B
$GPVTG,329.81,T,,M,0.02,N,0.04,K,D*3F
$GPGGA,060256.000,####.####,N,#####.####,W,2,7,1.17,65.2,M,-19.6,M,0000,0000*53
$GPGSA,A,3,04,12,02,25,09,10,27,,,,,,2.15,1.17,1.81*04
$GPRMC,060256.000,A,####.####,N,#####.####,W,0.02,329.81,080512,,,D*78
$GPVTG,329.81,T,,M,0.02,N,0.04,K,D*3F
$GPGGA,060257.000,####.####,N,#####.####,W,2,7,1.17,65.2,M,-19.6,M,0000,0000*52
$GPGSA,A,3,04,12,02,25,09,10,27,,,,,,2.15,1.17,1.80*05
$GPRMC,060257.000,A,####.####,N,#####.####,W,0.02,329.81,080512,,,D*79
$GPVTG,329.81,T,,M,0.02,N,0.03,K,D*38
$GPGGA,060258.000,,####.####,N,#####.####,W,2,7,1.17,65.2,M,-19.6,M,0000,0000*5D
$GPGSA,A,3,04,12,02,25,09,10,27,,,,,,2.15,1.17,1.81*04
$GPRMC,060258.000,A,####.####,N,#####.####,W,0.02,329.81,080512,,,D*76
$GPVTG,329.81,T,,M,0.02,N,0.04,K,D*3F
$GPGGA,060259.000,####.####,N,#####.####,W,2,7,1.17,65.2,M,-19.6,M,0000,0000*5C
$GPGSA,A,3,04,12,02,25,09,10,27,,,,,,2.15,1.17,1.81*04


I enter the GPS long/lat output in Google maps, and I get a location readout that is ~30 miles away from my current position. To confirm what my current GPS long/lat location should read, I enter the street address at http://www.gpsvisualizer.com/geocode to get the GPS location. I have received pretty steady output with the basically the same Ultimate GPS reported fix location with the unit on for 20-25 minute stretches on multiple tries. I know that it's been previously posted that it could take 30min to get a position lock, and that the NMEA sentences will indicate the integrity of the location detection (I think the above example looks OK for that).

4) I next tried to follow the Adafruit tutorial and perform the "Arduino Wiring" connection method, with only change GPS-to-Arduino switched to TX to Digital 3 and RX to Digital 2. I loaded the example "parsing" sketch from the tutorial in attempt to get more easily readable GPS output on the Serial Monitor; however, when I do this all I get are special characters being written to the Serial Monitor every second or so. Example:

ùÿvtpü$ìpttpdäp?04üdp¸p4¨üdp¸ 4
?þ¤dø¸ 4
?þttpè(¨üìR¨h4
¨þ?VRè4vtð ð4¨tdðº(ì(¨üdìRè ì(¨ü´tp°4¨üVrèà<(¨ü´dp¸ 4¶ìp04
?ddpø 4


To verify my GPS doesn't have a baud issue I both set the GPS update rate to 1kHz in the sketch, and I also tried to toggle the "GPS.begin(9600)" to "GPS.begin(4800)". I see no change in output. This same type of special character output occurs when I load and run any of the Arduino-connection Adafruit GPS sketches (i.e. "locus", "echo", etc).

5) As a final troubleshooting step, I connected the GPS in the Direct connection method again on my Duemilanove (TX-to-TX pin 1, RX-to-RX pin 0) connected to USB port and ran both the "GlobalTop MT3339 PC Tool v1.3 without F2.0&I3.1" and the "MiniGPS_v1.7.1" applications on my laptop. Both tools fail to auto-detect the connected GPS unit hooked via Arduino USB connection. I verified what COM port of my Arduino was selected in each tool for the connection attempts.

6) As a gross reality check that my Duemilanove was OK -- I hooked up both a DHT22 temp/humidity sensor and a BMP085 barometric pressure/temp sensor and ran the Adafruit tutorial sketches for each. Each test produced expected results without issues.

This is the first time I've followed a typical well written Adafruit tutorial and not produced the expected results. I'd appreciate any troubleshooting feedback -- hopefully I'm not wasting readers' time with my post due to a simple mistake.

Thanks
hou
 
Posts: 6
Joined: Sat Apr 07, 2012 2:19 am

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby adafruit_support_bill » Tue May 08, 2012 5:18 am

Do you have another GPS unit or gps-equipped phone to compare with? I just typed my current location into GPS visualizer and it was off by about a mile and a half.
If you post the code you are using we can look into the strange character issue.
User avatar
adafruit_support_bill
 
Posts: 15962
Joined: Sat Feb 07, 2009 9:11 am

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby hou » Tue May 08, 2012 3:53 pm

In response to your questions:
1) No -- I don't readily have available a GPS. I have a Blackberry that says it has GPS tracking, but I checked with my service provider and it may in fact just be using cellphone signal triangulation to get a location fix. It certainly works to show my correct current location. I will borrow a GPS from someone to verify its output vs. the MTK3339 output.

However, in my experience using a GPS they are typically dead-on to within normal accuracy specs for civilian use, not miles off. I'm surprised that you just measured a GPS fix on your location was over a mile off-target. The MTK3339 accuracy specs listed on Adafruit product page is certainly not that loose nor at 20-30miles offset as myself and this post's originator have reported.

I did some research before purchasing the Ultimate GPS breakout from Adafruit to help select a good starter module for DIY projects. Sparkfun's demo comparison of several different GPS sensor modules relative accuracy (see http://www.sparkfun.com/tutorials/169) certainly didn't produce miles of fixed position error, thus I assumed the MTK3339 sensor breakout given its specs and in "good" conditions would perform similarly.

I performed an experiment this morning and need to summarize it for a follow-up post. I placed Ultimate GPS breakout board on dash board of my car w/Arduino hooked to laptop in the "direct connection" configuration and monitored the NMEA sentence output on the Serial Monitor as I drove from 3 fixed locations -- between 0.5 to 2-3 miles apart between the 3 points. I have the measured MTK3339 output lock at those 3 coordinates and the actual GPS coordinates (from Google Maps address --> GPS converter), and I will difference those to see if there is a constant vector offset between my Measured vs. Real GPS location. From what I see so far entering measured locations into Google Maps, the 3 measured points may be holding a near constant offset from the real 3 sites' location. I would not think that would occur with a GPS -- the MTK3339 should work to get an actual position fix by orbiting satellites calculation and not have a relative offset to calibrate out, shouldn't it?

2) As for the sketch I used, in my earlier post I used as-is the Adafruit GPS libray example sketches "blank" = direct connection configuration of MTK3339 and the "parsing" sketch for Arduino connection method. Those are pasted below.

The Arduino method and "parsing" sketch produces the weird character output. I only tried to modify the "GPS.begin(9600)" to "GPS.begin(4800)" to try a lower baud rate. Maybe there is something else that needs a tweak?

Thank you for your quick response and assistance.

-hou

[Edit - moderator - use 'code' button when submitting code.]

"Blank" sketch -- direct connection method
Code: Select all
// this sketch will allow you to bypass the Atmega chip
// and connect the GPS sensor directly to the USB/Serial
// chip converter.

// Connect VIN to +5V
// Connect GND to Ground
// Connect GPS RX (data into GPS) to Digital 0
// Connect GPS TX (data out from GPS) to Digital 1

void setup() {}
void loop() {}



"parsing" sketch -- Arduion connection method

Code: Select all
//Test code for Adafruit GPS modules using MTK3329/MTK3339 driver
//
// This code shows how to listen to the GPS module in an interrupt
// which allows the program to have more 'freedom' - just parse
// when a new NMEA sentence is available! Then access data when
// desired.
//
// Tested and works great with the Adafruit Ultimate GPS module
// using MTK33x9 chipset
//    ------> http://www.adafruit.com/products/746
// Pick one up today at the Adafruit electronics shop
// and help support open source hardware & software! -ada

#include <Adafruit_GPS.h>
#if ARDUINO >= 100
#include <SoftwareSerial.h>
#else
  // Older Arduino IDE requires NewSoftSerial, download from:
  // http://arduiniana.org/libraries/newsoftserial/
#include <NewSoftSerial.h>
// DO NOT install NewSoftSerial if using Arduino 1.0 or later!
#endif

// Connect the GPS Power pin to 5V
// Connect the GPS Ground pin to ground
// If using software serial (sketch example default):
//   Connect the GPS TX (transmit) pin to Digital 3
//   Connect the GPS RX (receive) pin to Digital 2
// If using hardware serial (e.g. Arduino Mega):
//   Connect the GPS TX (transmit) pin to Arduino RX1, RX2 or RX3
//   Connect the GPS RX (receive) pin to matching TX1, TX2 or TX3

// If using software serial, keep these lines enabled
// (you can change the pin numbers to match your wiring):
#if ARDUINO >= 100
  SoftwareSerial mySerial(3, 2);
#else
  NewSoftSerial mySerial(3, 2);
#endif
Adafruit_GPS GPS(&mySerial);
// If using hardware serial (e.g. Arduino Mega), comment
// out the above six lines and enable this line instead:
//Adafruit_GPS GPS(&Serial1);


// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console
// Set to 'true' if you want to debug and listen to the raw GPS sentences
#define GPSECHO  true

// this keeps track of whether we're using the interrupt
// off by default!
boolean usingInterrupt = false;
void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy

void setup() 
{
   
  // connect at 115200 so we can read the GPS fast enough and echo without dropping chars
  // also spit it out
  Serial.begin(115200);
  Serial.println("Adafruit GPS library basic test!");

  // 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800
  GPS.begin(9600);
 
  // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  // uncomment this line to turn on only the "minimum recommended" data
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
  // For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since
  // the parser doesn't care about other sentences at this time
 
  // Set the update rate
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);   // 1 Hz update rate
  // For the parsing code to work nicely and have time to sort thru the data, and
  // print it out we don't suggest using anything higher than 1 Hz

  // the nice thing about this code is you can have a timer0 interrupt go off
  // every 1 millisecond, and read data from the GPS for you. that makes the
  // loop code a heck of a lot easier!
  useInterrupt(true);

  delay(1000);
}


// Interrupt is called once a millisecond, looks for any new GPS data, and stores it
SIGNAL(TIMER0_COMPA_vect) {
  char c = GPS.read();
  // if you want to debug, this is a good time to do it!
  if (GPSECHO)
    if (c) UDR0 = c; 
    // writing direct to UDR0 is much much faster than Serial.print
    // but only one character can be written at a time.
}

void useInterrupt(boolean v) {
  if (v) {
    // Timer0 is already used for millis() - we'll just interrupt somewhere
    // in the middle and call the "Compare A" function above
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
    usingInterrupt = true;
  } else {
    // do not call the interrupt function COMPA anymore
    TIMSK0 &= ~_BV(OCIE0A);
    usingInterrupt = false;
  }
}

uint32_t timer = millis();
void loop()                     // run over and over again
{
  // in case you are not using the interrupt above, you'll
  // need to 'hand query' the GPS, not suggested :(
  if (! usingInterrupt) {
    // read data from the GPS in the 'main loop'
    char c = GPS.read();
    // if you want to debug, this is a good time to do it!
    if (GPSECHO)
      if (c) UDR0 = c;
      // writing direct to UDR0 is much much faster than Serial.print
      // but only one character can be written at a time.
  }
 
  // if a sentence is received, we can check the checksum, parse it...
  if (GPS.newNMEAreceived()) {
    // a tricky thing here is if we print the NMEA sentence, or data
    // we end up not listening and catching other sentences!
    // so be very wary if using OUTPUT_ALLDATA and trytng to print out data
    //Serial.println(GPS.lastNMEA());   // this also sets the newNMEAreceived() flag to false
 
    if (!GPS.parse(GPS.lastNMEA()))   // this also sets the newNMEAreceived() flag to false
      return;  // we can fail to parse a sentence in which case we should just wait for another
  }

  // if millis() or timer wraps around, we'll just reset it
  if (timer > millis())  timer = millis();

  // approximately every 2 seconds or so, print out the current stats
  if (millis() - timer > 2000) {
    timer = millis(); // reset the timer
   
    Serial.print("\nTime: ");
    Serial.print(GPS.hour, DEC); Serial.print(':');
    Serial.print(GPS.minute, DEC); Serial.print(':');
    Serial.print(GPS.seconds, DEC); Serial.print('.');
    Serial.println(GPS.milliseconds);
    Serial.print("Date: ");
    Serial.print(GPS.day, DEC); Serial.print('/');
    Serial.print(GPS.month, DEC); Serial.print("/20");
    Serial.println(GPS.year, DEC);
    Serial.print("Fix: "); Serial.print((int)GPS.fix);
    Serial.print(" quality: "); Serial.println((int)GPS.fixquality);
    if (GPS.fix) {
      Serial.print("Location: ");
      Serial.print(GPS.latitude, 4); Serial.print(GPS.lat);
      Serial.print(", ");
      Serial.print(GPS.longitude, 4); Serial.println(GPS.lon);
     
      Serial.print("Speed (knots): "); Serial.println(GPS.speed);
      Serial.print("Angle: "); Serial.println(GPS.angle);
      Serial.print("Altitude: "); Serial.println(GPS.altitude);
      Serial.print("Satellites: "); Serial.println((int)GPS.satellites);
    }
  }
}
hou
 
Posts: 6
Joined: Sat Apr 07, 2012 2:19 am

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby adafruit_support_bill » Tue May 08, 2012 6:34 pm

I'm surprised that you just measured a GPS fix on your location was over a mile off-target.

No. My GPS fix was spot-on. I have three units and a USGS map that all agree. It is the GPS Visualizer data that is wrong.

I only tried to modify the "GPS.begin(9600)" to "GPS.begin(4800)" to try a lower baud rate.

This is more likely a mismatch in baud rate between the Arduino and your serial monitor. As written the sketch is communicating at 115200 baud. Make sure that it and the Serial Monitor are at the same speed.
In Setup():
Code: Select all
  Serial.begin(115200);
User avatar
adafruit_support_bill
 
Posts: 15962
Joined: Sat Feb 07, 2009 9:11 am

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby hou » Wed May 09, 2012 1:36 am

OK, a couple of realizations that I've made mistakes:

1) Yes, you were right that I needed to adjust my Arduino IDE Serial Monitor's baud rate to 11520 to match this part of the GPS sketches: "Serial.begin(115200);". As I mentioned previously, I was more focused on the a baud mismatch issue with the "GPS.begin(9600)", which was incorrect. Thanks for pointing out this mistake.

With the Serial Monitor set to 115200 baud to match the Serial.begin statement in the sketch, the "parse" sketch output now looks like this:

Time: 2:22:7.0
Date: 9/5/2012
Fix: 1 quality: 1
Location: ####.####N, #####.####W
Speed (knots): 0.34
Angle: 321.86
Altitude: 98.10
Satellites: 5
$GPGGA,022208.000,####.####,N,#####.####,W,2,5,1.56,97.6,M,-19.6,M,0000,0000*55
$GPRMC,022208.000,A,####.####,N,#####.####,W,0.31,321.86,090512,,,D*7E
$GPGGA,022209.000,####.####,N,#####.####,W,2,5,1.56,97.2,M,-19.6,M,0000,0000*5E
$GPRMC,022209.000,A,####.####,N,#####.####,W,0.30,321.86,090512,,,D*70


2) And, I now realize that I misread/misinterpreted the NMEA GPS location fix longitude/lattitude output units of measure.

Given the MTK3339 NMEA output example that I show above is listed in a decimal-like format, I assumed that the output position-fix was being provided in decimal format longitude/lattitude units. After re-reading the NMEA sentence manual description and seeing mention of minutes being specified in the output format, and then re-reading the Adafruit Ultimate GPS tutorial example which did specify modifying the NMEA output sentence to enter it in Google Maps in the format of +/-##° ##.####', +/-###° ##.####' (i.e. integer degrees then minutes in decimal format), I re-entered my MTK3339 fix locations in this format in Google Maps and viola I am looking at where I was standing with my breakout board. It has been working properly, just not me.

When I originally assumed that the NMEA sentence were already in decimal Long/Lat format, I got an approx position offset of 36.696km (22.802mi) from my actual location
when I entered incorrectly formatted GPS data in Google Maps. I bet this is also what hackerman336 did with his MTK3339 location fix output to give him a similar large ~20 mile position offset.

There's a good on-line tool to convert Degrees, Minutes, Seconds between Decimal Degrees Latitude/Longitude here for reference: http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html. And, NMEA sentence reference here: http://www.gpsinformation.org/dale/nmea.htm#GSV

So, this is solved. If I can determine the syntax, it would be good to re-parse the NMEA output coordinates to display them in a sketch's output as either a Degree/Minute/Second output format or purely decimal Long/Lat output format rather than the odd NMEA output syntax.

3) I was able to get the both the "GlobalTop MT3339 PC Tool v1.3 without F2.0&I3.1" and the "MiniGPS_v1.7.1" applications to run by setting the baud rate also at 115200 for those tools as well (not 9600).


I think this post can be closed. It was a good 1st-time GPS learning experience. Thanks for your help and patience.
hou
 
Posts: 6
Joined: Sat Apr 07, 2012 2:19 am

Re: The Newish Gps Mtk 3339 not find location ( put N,W ) data over 20 miles away

Postby hackerman336 » Wed May 09, 2012 6:33 pm

thanks hou i just used a different service to find my location srry i had been bissy for a while
service i used was http://www.geocaching.com if hit geocaching locations near u it seem good
thanks :roll: :D
hackerman336
 
Posts: 6
Joined: Sat Mar 10, 2012 11:23 pm


Return to Other Adafruit products

Who is online

Users browsing this forum: No registered users and 3 guests

Stuff to buy from the Adafruit store and links to product documentation!


New Products [100]

Raspberry Pi[80]
 
FLORA[23]
 
Bunnie Studios[9]
 
FPGA[1]
 
mbed[11]
Arduino[60]
 
NETduino[14]
 
BeagleBone[24]
 
Android[6]
 
XBee[10]
More Dev Boards[30]


 
BoArduino[8]
 
SpokePOV[4]
 
TV-B-Gone[4]
 
MiniPOV[3]
 
SIM reader[3]
 
Microtouch[5]
 
Clocks & Watches[18]
 
Drawdio[4]
 
Brain Machine[1]
 
Game of Life[2]
 
MintyBoost[2]
More DIY Kits[16]


 
MaKey MaKey[3]
 
Tweet-a-Watt[5]
 
Young Engineers[33]
 
Discover Electronics[2]
 
Snap Circuits[4]
 
littleBits[3]
 
Project packs[8]


 
Breakout Boards[33]
LCDs & Displays[48]
Components & Parts[69]
Batteries & Power[49]
EL Wire/Tape/Panel[52]
LEDs[108]
 
Wireless[14]
Cables[60]
 
Lasers[6]
Sensors/Parts[145]
 
Enclosures/Cases[11]
 
Solar[11]
 
RFID / NFC[13]
Prototyping[69]
 
iDevices[13]
Tools[71]
 
Wearables[39]
 
CNC[37]
 
Robotics[29]
 
3D printing[1]
 
Materials[24]


 
Stickers[41]
 
Skill badges[55]
 
Books[25]
 
Circuit Playground[7]
 
Gift Certificates[4]