Monthly Archives: July 2019

Expanded Options for 3D Printing

via SparkFun: Commerce Blog

We recently expanded our catalog of 3D printers, filament colors and accessories (and overhauled some of our in-house 3D printers with new print surface beds, tool heads and a rainbow of filament colors, so keep an eye out in future projects and videos).

If you have never 3D printed anything before, check out our past tutorial on Getting Started with 3D Printing Using Tinkercad. You can build your own 3D model in a program like TinkerCad and then set up the Lulzbot Cura edition to match any new hardware you may pick up! Lulzbot has also created lots of great tutorials that our team members use when they are getting started with 3D printing.

If creating your own 3D model is outside your scope, feel free to skip to the section on Using The Slicer, and head on over to Thingiverse to find a file you would like to start with.

Happy printing!

Getting Started with 3D Printing Using Tinkercad

April 30, 2018

Tinkercad is a great, easy-to-use online modeling software that can have you 3D printing quickly. This tutorial will walk you through designing a simple project enclosure.

comments | comment feed

Hosting a Booth at a STEM Event or Maker Faire

via SparkFun: Commerce Blog

Jesse Brockmann is a senior software engineer with over 20 years of experience. Jesse works for a large corporation designing real-time simulation software, started programming on an Apple IIe at the age of six and has won several AVC event over the years. Jesse is also a SparkFun Ambassador so make sure your read down today's post to find out where he'll be next!


I’ve been doing various STEAM/STEM events for years to promote my JRover/DIYRovers project. I recently had a booth at the Kansas City Maker Faire to promote SparkFun and my latest project BotzFight (more on that at a later date). I thought I would share my experiences and maybe convince you to host your own booth.

This is a picture of my booth at the Kansas City Maker Faire

My booth at the Kansas City Maker Faire.

Hosting a booth is a lot of fun but it can be tiring. You will get a lot of the same questions over and over, but once in a while you will get a truly brilliant question that really makes you think. The more events you do, the more you’ll realize a lot of people will look at your display and not ask any questions. Try to engage them by talking to them. Ask them questions, like what their favorite booth is, or whether they are working on a project – anything to get them talking and try to see where it goes. Kids are the hardest and you have to realize you just won’t get through to some of them. Your best bet is to have something interactive they can move, touch or play with. I used a plasma globe to do this for the last year and so many kids just want to touch it, which gives you a chance to interact with them.

Rover booth

If you decide to host a booth, look for local STEM groups or maker spaces. Where I’m at in Iowa, the local region has a group specifically to promote STEM. I signed up to get notices of all upcoming events. I also go to https://makerfaire.com/map/ and look for possible events that are close enough to attend.

Things to think about before you apply: Will you need to bring your own table or chairs? If provided, what size are the tables? Will power and wifi be provided? There are also safety considerations if you have fire or anything that could be dangerous as part of your display. Once you find an interesting event, apply for it sooner rather than later, in case the number of spots is limited.

You often can get a booth for free if you are just promoting STEM and not trying to sell product or promoting a business. Selling your product is a whole other ballgame which I won’t cover, but if you do decide to sell keep in mind sales taxes and other permits you might need.

Rover booth

Before you go to an event, figure out how long you think it will take to set up, and double it. The more events you do, the more you can refine this. I’ve found a cart or wagon is a great way to reduce the number of trips for loading in or out. For Maker Faires I try to get set up early, then visit the other booths before the event starts. You will have very little time during an event to step away from your booth. I often get a lot of enjoyment out of talking to the other makers at these events.

cart full of booth supplies

Small things like a tablecloth, banners and some display stands can go a long way to making your booth look more professional. I suggest having some type of business card or email address easily visible for those that are really interested in what you are doing. Having free swag is always a bonus as well!

people interacting at the booth

Keep a drink nearby, and bring some snacks to eat during the down time. You might also want to bring a small paper bag or something for your trash. It’s generally fine if you need to step away from your booth for a bit for a restroom break or something, but if you have anything valuable make sure someone else is watching your booth or put it out of sight. If you can, having two people run a booth will really optimize this situation and you will be able to enjoy doing things at a bit of a slower pace. It really improves the set-up and teardown time as well.

Please, do not pack up until the time the event is over – it’s rude to pack up early. Otherwise try to leave the place as clean or cleaner than when you got there. Do your part to help, and double check you have everything before you leave. Try to find the organizer, and thank them for letting you participate if you didn’t run into them already.

tank maze table

I really enjoyed hosting a booth at the Kansas City Maker Faire and plan on doing many more STEM events this year. I hope to have a booth at the Milwaukee Maker Faire in September. If you are in the area then please stop in and say hi and try driving the tanks!

tank maze table

comments | comment feed

October is Open Hardware Month.

via Open Source Hardware Association

October is Open Hardware Month! Check out the Open Hardware Month website. Host an event, find a local event, or certify your hardware to support Open Source Hardware.

We are providing resources and asking you, the community, to host small, local events in the name of open source hardware. Tell us about your October event by filling out the form below. Your event will be featured on OSHWA’s Open Hardware Month page (provided you have followed OSHWA’s rules listed on the “Do’s and Don’ts” page).

Friday Product Post: Look at the Silver Lightning

via SparkFun: Commerce Blog

Hello and welcome, everyone! We have another short product post this week, but only because of all the hard work we've been putting into Artemis, our two robotics platforms and a special product update you'll see in the next few weeks! This week, we have a revised version of our AS3935 Lightning Detector and a new Level Translator Breakout using the PCA9306. Let's take a closer look!

Flash! Thunder!

SparkFun Lightning Detector - AS3935

SparkFun Lightning Detector - AS3935

SEN-15441
$24.95

The revised SparkFun Lightning Detector adds lightning detection to your next weather station to make sure you're aware of any potential hazardous weather heading your way. The AS3935 is capable of detecting lightning up to 40km away, with an accuracy of 1km to the storm front, and has a sensitive antenna tuned to pick up lightning events in the 500kHz band.


Hola, ¿cómo estás? ¡Cuéntame todo!

SparkFun Level Translator Breakout - PCA9306

SparkFun Level Translator Breakout - PCA9306

BOB-15439
$3.95

There are a couple must-have boards that every engineer and hobbyist should have on their desk, and this PCA9306 dual, bidirectional voltage-level translator breakout is one of them! Because different parts sometimes use different voltage levels to communicate, voltage level translators can be the key to making different parts play nice.


That's it for this week! As always, we can't wait to see what you make! Shoot us a tweet @sparkfun, or let us know on Instagram or Facebook. We’d love to see what projects you’ve made!

comments | comment feed

Enginursday: Lightning Detector for the Trail

via SparkFun: Commerce Blog

The Idea ⚡

I feel quite lucky to live and work so close to the Rocky Mountains here in Colorado, and it’s a common hobby among us at SparkFun to be out hiking/biking/kayaking or climbing. The mountains contain numerous hazards, not the least of which is lighting strikes. The weather can change suddenly and drastically around these parts. There is a common Colorado saying, “If you don’t like the weather, wait 5 minutes." Unfortunately, this also applies to weather you are enjoying and it can be easy to find yourself suddenly looking at a stormfront that the weather station has assured you would pass to the south. Prevention is always ideal, but even a small amount of lightning prescience can allow you to find cover or start that rappel sooner.

Rooftop View from SparkFUn

View from the rooftop lunch table at SparkFun

SparkFun is releasing an updated version of our AS3935 Lightning Detector this week. We have had fun using it around the office to confirm that indeed it is raining, and there was strong desire to see this outdoors where it belongs. I decided to start something and get this idea into the prototype phase.

The Make ⚡

My goals for the outdoor detector were:

  • portable and sturdy enough it could be clipped onto a harness
  • report out how close the approaching lighting is
  • give easy-to-understand indicators of a nearby strike

The new Lightning Detector goes live tomorrow, and luckily I have one that "fell off" the initial run.

To start, I wanted to pick a microcontroller that fit my needs: the RedBoard Turbo. This was an easy choice. It is battery powered, can communicate over SPI to the AS3935 Lightning Detector, uses 3.3V for its I/O, and even has a Qwiic connector! This is my go-to prototyping with a battery board.

SparkFun RedBoard Turbo - SAMD21 Development Board

SparkFun RedBoard Turbo - SAMD21 Development Board

DEV-14812
$24.95
2

Enter the Qwiic Micro OLED

Next, I needed a way to display the data the detector was receiving and sending back to the RedBoard Turbo. The Qwiic Micro OLED was a perfect choice.

SparkFun Micro OLED Breakout (Qwiic)

SparkFun Micro OLED Breakout (Qwiic)

LCD-14532
$16.95
2

With a simple Qwiic Cable, this board connected over I2C and, using example code from the hookup guide, it was displaying data in minutes.

Data Displayed via the Qwiic micro OLED screen

I used a small buzzer from the SIK, some jumper cables for hookup and a lipo battery for power.

Code ⚡

Below is the code used with the SAMD21 RedBoard Turbo, Lightning Detector and Qwiic Micro OLED.

/*
This example demonstrates the code used on the Outdoor Lighting Warning Prototype
License: This code is public domain

*/


#include <SPI.h>
#include <Wire.h>
#include "SparkFun_AS3935.h"
#include <SFE_MicroOLED.h>  // Include the SFE_MicroOLED library
#define INDOOR 0x12
#define OUTDOOR 0xE
#define LIGHTNING_INT 0x08
#define DISTURBER_INT 0x04
#define NOISE_INT 0x01

SparkFun_AS3935 lightning;


const int lightningInt = 3;// Interrupt pin for lightning detection
int spiCS = 4; //SPI chip select pin

// This variable holds the number representing the lightning or non-lightning
// event issued by the lightning detector.
int intVal = 0;
int noise = 2; // Value between 1-7
int disturber = 2; // Value between 1-10

//The library assumes a reset pin is necessary. The Qwiic OLED has RST hard-wired, so pick an arbitrarty IO pin that is not     being used
#define PIN_RESET 9
//The DC_JUMPER is the I2C Address Select jumper. Set to 1 if the jumper is open (Default), or set to 0 if it's closed.
#define DC_JUMPER 1

bool warmedup = false;
int distanceview = 3;
const int buzzerPin = 9;
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // a space represents a rest
int beats[] = {1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 1, 1, 1, 1, 1, 4, 4, 2};
int tempo = 113;


//////////////////////////////////
// MicroOLED Object Declaration //
//////////////////////////////////
MicroOLED oled(PIN_RESET, DC_JUMPER);    // I2C declaration


void setup()
{
// When lightning is detected the interrupt pin goes HIGH.
 pinMode(lightningInt, INPUT);

SerialUSB.begin(9600);
 delay(50);
 SerialUSB.println("AS3935 Franklin Lightning Detector");

 pinMode(buzzerPin, OUTPUT);



}

void loop()
{

if (warmedup == false)
{
 warmup();
 }
SPI.begin();


if (digitalRead(lightningInt) == HIGH)
{

intVal = lightning.readInterruptReg();
SerialUSB.print("intvalis");
SerialUSB.println(intVal);



if (intVal == NOISE_INT) {
  SerialUSB.println("Noise.");
  // Too much noise? Uncomment the code below, a higher number means better
  // noise rejection.
  lightning.setNoiseLevel(noise);
}
else if (intVal == DISTURBER_INT) {
  SerialUSB.println("Disturber.");
  // Too many disturbers? Uncomment the code below, a higher number means better
  // disturber rejection.
  lightning.watchdogThreshold(disturber);
}
else if (intVal == LIGHTNING_INT) {
  SerialUSB.println("Lightning Strike Detected!");
  // Lightning! Now how far away is it? Distance estimation takes into
  // account any previously seen events in the last 15 seconds.
  byte distance = lightning.distanceToStorm();
  SerialUSB.print("Approximately: ");
  SerialUSB.print(distance);
  SerialUSB.println("km away!");
  distanceview = distance;
  lightningData();
  buzzing();
}

delay(100); // Slow it down.
}

}

void warmup()
{
 SPI.begin();

if ( !lightning.beginSPI(spiCS, 2000000) ) {
    SerialUSB.println ("Lightning Detector did not start up, freezing!");
 while (1);
 }
else
    SerialUSB.println("Schmow-ZoW, Lightning Detector Ready!");
 warmedup = true;

 lightning.setIndoorOutdoor(OUTDOOR);

int enviVal = lightning.readIndoorOutdoor();
SerialUSB.print("Are we set for indoor or outdoor: ");
if ( enviVal == INDOOR )
 SerialUSB.println("Indoor.");
else if ( enviVal == OUTDOOR )
    SerialUSB.println("Outdoor.");
 else
    SerialUSB.println(enviVal, BIN);

}

void lightningData()
{
delay(100);
Wire.begin();
oled.begin();    // Initialize the OLED
oled.clear(ALL); // Clear the display's internal memory
oled.display();  // Display what's in the buffer (splashscreen)
delay(1000);     // Delay 1000 ms
oled.clear(PAGE); // Clear the buffer.

  printTitle("Storm!", 0);


  oled.clear(PAGE);     // Clear the screen
  oled.setFontType(0);  // Set font to type 0
  oled.setCursor(0, 0); // Set cursor to top-left

  delay(50);  // Wait 500ms before next example

  oled.clear(PAGE);            // Clear the display
  oled.setCursor(0, 0);        // Set cursor to top-left
  oled.setFontType(0);         // Smallest font
  oled.print("Distance: ");
  oled.setCursor(16, 12);// Print "A0"
  oled.setFontType(2);
  oled.print(distanceview);
  oled.setCursor(0, 34);
  oled.setFontType(0);
  oled.print("Km Away!");
  oled.display();


  Wire.end();
}

void printTitle(String title, int font)
{
  int middleX = oled.getLCDWidth() / 2;
  int middleY = oled.getLCDHeight() / 2;

  oled.clear(PAGE);
  oled.setFontType(font);
  // Try to set the cursor in the middle of the screen
  oled.setCursor(middleX - (oled.getFontWidth() * (title.length() / 2)),
                 middleY - (oled.getFontHeight() / 2));
  // Print the title:
  oled.print(title);
  oled.display();
  delay(1500);
  oled.clear(PAGE);
}

int frequency(char note)
{
  // This function takes a note character (a-g), and returns the
  // corresponding frequency in Hz for the tone() function.

int i;
const int numNotes = 8;  // number of notes we're storing

// The following arrays hold the note characters and their
 // corresponding frequencies. The last "C" note is uppercase
// to separate it from the first lowercase "c". If you want to
// add more notes, you'll need to use unique characters.

// For the "char" (character) type, we put single characters
// in single quotes.

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};

  // Now we'll search through the letters in the array, and if
  // we find it, we'll return the frequency for that note.

  for (i = 0; i < numNotes; i++)  // Step through the notes
  {
    if (names[i] == note)         // Is this the one?
    {
      return (frequencies[i]);    // Yes! Return the frequency
    }
  }
  return (0); // We looked through everything and didn't find it,
  // but we still need to return a value, so return 0.
}

void buzzing()
{
  int i, duration;

  for (i = 0; i < songLength; i++) // step through the song arrays
{
 duration = beats[i] * tempo;  // length of note/rest in ms

if (notes[i] == ' ')          // is this a rest?
{
  delay(duration);            // then pause for a moment
}
else                          // otherwise, play the note
{
  tone(buzzerPin, frequency(notes[i]), duration);
  delay(duration);            // wait for tone to finish
}
delay(tempo / 10);            // brief pause between notes
}


}

Enclosure

Next was to create an enclosure for the project. Luckily we have a CO2 laser cutter and plenty of clear acrylic! I tossed together a box design with some 0.8-inch spaced standoff holes to mount the sensor, display and microcontroller.

Enclosure Design

Time to put the assembly together in the enclosure.

I later added large 0.75-inch holes to pass a sling through.

Laser Cut Enclosure

And Finally, Does It Fit on a Harness?

Here are a few pictures of the enclosure being used with a harness.

Harness View 1

Harness View 2 Harness View 3

Click on the images for a closer view.

Final Thoughts ⚡ ⚡ ⚡

I had a lightning emulator, which helped greatly in the development process, but there was a large amount of disturbance events here at SparkFun and the real test will be bringing it outside with me. With everything hooked up, we get both a auditory indication of a lightning strike being detected and a display of distance on the OLED. When all the screws, standoffs, lipo battery and sling were added, the total enclosure weighed about 5 oz or 0.3 lbs. Although this a tolerable weight to bring backpacking or climbing, I feel like there is a lot of room to decrease the weight of the project. I am very excited to bring this into the woods and the on the rocks with me, update the design and report back to you all with my findings.

comments | comment feed