Monthly Archives: October 2021

Name that Ware, October 2021

via Hacking – bunnie's blog

The Ware for October 2021 is shown below:

This one should be much easier to guess than last month’s ware; it’s strategically cropped to add a tiny bit of challenge to it. I’ll add some more views of the ware once we’ve got a correct answer.

I was really struck by the quality of the photography of this ware. jackw01 submitted a series of wares (this one included), which I’ll be sharing over the coming months. I have a lot to learn about photography, and I thought it might be of general interest to hear his answer on how this ware was photographed:

[The ware] was shot with a Fujifilm X-T30 using a 40-year-old Canon FD mount 50mm prime lens with a set of 10+16mm macro extension tubes. If you’re unfamiliar, extension tubes are basically a way of achieving macro photography without having a dedicated macro lens. They decrease the minimum focusing distance and increase the magnification of a lens according to the ratio between the length of the extension tube and the focal length of the lens, producing 1:1 magnification when the extension tube length equals the focal length. When using both the 10 and 16mm extension tubes together with the 18-55mm lens, my usable field of view is anywhere from 25-50mm wide depending on the focal length and focus distance with the subject ~0-20mm away from the lens, and with the 50mm prime, the field of view is 30-45mm wide with the subject 70-90mm away from the lens. When using extension tubes, I would highly recommend using manual focus, even though most extension tubes have the electrical connections to support autofocus – the autofocus algorithms on most cameras are just not tuned to work with extension tubes and often won’t focus at all or won’t produce as sharp of an image.

Thanks again to jackw01 for sharing this ware, and for sharing your know-how on photographing them!

Smôl Packages; Big Power

via SparkFun: Commerce Blog

Happy Halloween weekend, everyone! It's Friday, once again, and that means more new products for you to check out. We start off with the new Raspberry Pi Zero 2 W pre-order that dropped yesterday, as well as two new versions of the Alphanumeric Displays that we showcased last week. Following that we are going to be taking a look at SparkX's new product line: smôl! These are super small boards that offer a new way to control projects with space and weight constraints. To wrap up the week, we are happy to show off some new solar options from Voltaic Systems. Now, let's jump in and take a closer look at all of these new products!

More processing power and more capabilities!

Raspberry Pi Zero 2 W

Raspberry Pi Zero 2 W

DEV-18713
$15.00

The Raspberry Pi Zero 2 W (now available for pre-order) is the next iteration in the Pi Zero line that remains one of the most affordable single-board computers on the market. The successor to the breakthrough Raspberry Pi Zero W, Raspberry Pi Zero 2 W is a form factor–compatible, drop-in replacement for the original board.

The board incorporates a quad-core 64-bit Arm Cortex-A53 CPU, clocked at 1GHz. At its heart is a Raspberry Pi RP3A0 system-in-package (SiP), integrating a Broadcom BCM2710A1 die with 512MB of LPDDR2 SDRAM. The upgraded processor provides the Raspberry Pi Zero 2 W with 40 percent more single-threaded performance, and five times more multi-threaded performance, than the original single-core Raspberry Pi Zero.


Double your segment game with these new Qwiic Alphanumeric Displays

SparkFun Qwiic Alphanumeric Display - Red

SparkFun Qwiic Alphanumeric Display - Red

COM-16916
$9.95
SparkFun Qwiic Alphanumeric Display - Blue

SparkFun Qwiic Alphanumeric Display - Blue

COM-16917
$9.95

We are quite familiar with 7-segment displays; we see them on our alarm clocks, ovens and microwaves. By adding more segments to each digit you can display more than just numbers! Introducing the brand new SparkFun Qwiic Alphanumeric Display. These red and blue 14-segment digits allow you to display all sorts of numbers, characters, and symbols. With Qwiic, simply plug it in and go. No soldering, no figuring out which is SDA or SCL, and no voltage regulation or translation required!


smôl ARTIC R2

smôl ARTIC R2

SPX-18618
$199.95

Our RedBoards are great. But don't they sometimes seem a little BIG?! Enter smôl, a new range of boards which are both small in size and small on current draw. It's a smôl world!

Is your project linked to environmental protection, awareness or study, or to protecting human life? Perhaps you are developing a wildlife tracker, ocean buoy, environmental monitoring system or need to transfer emergency medical information? Do you need to be able to transmit and receive data anywhere? If so, this is the smôl product for you! Our smôl ARTIC R2 allows you to send and receive short bursts of data via the ARGOS satellite network anywhere on Earth, including the polar regions.


smôl ESP32

smôl ESP32

SPX-18619
$17.95

The smôl ESP32 Processor Board combines Espressif's ESP32 (ESP32-D0WDQ6-V3) with our smôl FPC interconnect to bring a processor board with reliable wireless capabilities into our smôl ecosystem.


smôl Header

smôl Header

SPX-18620
$2.95

Smôl boards are designed to stack one on top of the other, using 16-way 0.5mm-pitch Flexible Printed Circuits (FPCs). We really like FPCs and we're using them on more and more of our products. But they can be a bit tricky when it comes to prototyping or if you want to connect other devices to your smôl stack. The smôl Header is here to help!


smôl Power Board AAA

smôl Power Board AAA

SPX-18621
$17.95

The smôl Power Board AAA is an intelligent power board for the smôl ecosystem. Designed to boost the voltage from one or two AAA or AA cells up to 3.3V, you would expect this board to have a TPS61200 regulator on it, and indeed it does (that's the same regulator we use on our LiPower - Boost Converter).


smôl Power Board LiPo

smôl Power Board LiPo

SPX-18622
$17.95

The smôl Power Board LiPo is another intelligent power board for the smôl ecosystem. You would expect this board to have an MCP73831 Li-Ion and Li-Polymer charger on it, and indeed it does, as well as a MAX17048 I2C fuel gauge.


smôl ZOE-M8Q

smôl ZOE-M8Q

SPX-18623
$39.95

The smôl ZOE-M8Q is a high accuracy, miniaturized GNSS board perfect for applications that don't possess a lot of space. The on-board ZOE-M8Q is a 72-channel GNSS receiver, meaning it can receive signals from the GPS, GLONASS, BeiDou and Galileo constellations. This increases precision and decreases lock time.


smôl 36mm 16-way Flexible Printed Circuit

smôl 36mm 16-way Flexible Printed Circuit

CAB-18731
$0.95

This is the 36mm 16-way 0.5mm-pitch Flexible Printed Circuit (FPC) used to interconnect smôl boards.


Mini Solar Panel - 0.3 Watt, 2 Volt (ETFE)

Mini Solar Panel - 0.3 Watt, 2 Volt (ETFE)

PRT-18723
$5.50
Mini Solar Panel - 0.3 Watt, 6 Volt (ETFE)

Mini Solar Panel - 0.3 Watt, 6 Volt (ETFE)

PRT-18724
$5.95
Small Solar Panel - 0.6 Watt, 6 Volt (ETFE)

Small Solar Panel - 0.6 Watt, 6 Volt (ETFE)

PRT-18725
$8.95
Small Solar Panel - 1.2 Watt, 6 Volt (ETFE)

Small Solar Panel - 1.2 Watt, 6 Volt (ETFE)

PRT-18726
$13.95

These small solar panels are a lightweight, waterproof, solar panel produced by Voltaic Systems that have been designed for five to seven year outdoor applications. Each panel features high-efficiency SunPower solar cells mounted to a PCB using an SMT Process, UV- and scratch-resistant ETFE coating with UV-resistant EVA, and two solder pads.

We even carry VHB Gaskets to attach these solar panels to an enclosure or other flat surface.


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! Please be safe out there (especially this weekend), be kind to one another, and we'll see you next week with even more new products!

Never miss a new product!

comments | comment feed

Raspberry Pi Zero W: Part Deux

via SparkFun: Commerce Blog

Here we are, two weeks in a row with another brand new Raspberry Pi Board, but it isn't a HAT this time, it's a brand new development board! Introducing, the Raspberry Pi Zero 2 W, the latest in the small footprint, but hugely capable Raspberry Pi Zero line. Avra has taken some time out of her schedule to tell you all the cool new features with the Zero 2 W so let's see what she has to teach us.

More processing power and more capabilities!

Raspberry Pi Zero 2 W

Raspberry Pi Zero 2 W

DEV-18713
$15.00

While the footprint and connectors remain the same to keep most accessories and enclosures still relevant, the processing power and capabilities of the Raspberry Pi Zero 2 W have increased. Using a Raspberry Pi-designed System-in-Package, which integrates the BCM2710A1 die used in Raspberry Pi 3 with 512MB of RAM. Another new addition is the inclusion of a VideoCore IV GPU making for a better picture when using this board with a monitor. The combo WiFi/BLE radio brings upgraded 802.11b/g/n WiFi and Bluetooth 4.2 to the platform as well.

Aside from the updates, the Raspberry Pi Zero 2 W has a lot of the same great features from the original Zero W. Connectors are still a Mini HDMI, USB 2.0 OTG (2), and Micro USB for power. It still has the 40 pin header and CSI camera connector as well. New for the board is all surface mount components which allows the board to sit flat on a surface.


We're pretty excited to carry this new board from Raspberry Pi! Please keep in mind that both of these products are available for pre-order. Orders will be fulfilled in the order they are received. If you are ordering these products alongside "Live/in-stock" products and want to receive these products ASAP, be sure to designate your order for split shipments in checkout.


Let us know what you are going to build with the new Raspberry Pi Zero 2 W, and we'll see you back here tomorrow!

comments | comment feed

DIY Halloween Candy Launcher, Part 2

via SparkFun: Commerce Blog

A couple weeks ago, I started working on a project that would allow me to pass candy out to kids this Halloween without ever actually having to get too close to them. I chronicled my thoughts and initial design ideas in a previous blog post, and wanted to follow up, in case anyone was wondering how it's coming together.

alt text

Considering it's not 2 p.m. on Halloween and it already does what it's supposed to, it's coming together great!

From the initial design concept, first testing proved that I needed to make a couple of changes. The big design flaw was my chosen stepper motor. At first I thought that using a 68 oz.in stepper motor would probably work fine. However, with the amount of spring tension I had set for initial testing, that stepper was unable to do the job. I then moved up to the next option in our catalog, the 125 oz.in stepper motor. Since neither the Arduino code not the SparkFun ProDriver care which stepper motor is being used, swapping this out was fast and easy. The only stumbling block here for me was the motor mount. While the smaller stepper motor was a NEMA 17, this larger one is a NEMA 23, and not only do I not have a motor mount of that form factor, neither SparkFun nor Servo City, my usual go-to, had any on hand. In fact, the website indicated that they had been discontinued. Thankfully they still have the technical drawing on the product page, so I was able to design and 3D print a suitable replacement part.

I also moved the chain drive components to the inside of the frame. This just seemed like a good idea safety-wise, and gave a cleaner look to the build.

3D printed motor mount

A solid base in any 3D software program will help you get the most from your 3D printer.

I wanted to keep the code as simple as possible. Since I was using a pair of SparkFun Thing Plus ESP32 boards, utilizing Esspressif's ESP-NOW protocol seemed to offer me the most options in combination with the greatest ease of use. It allowed me low-power 2.4GHz wireless connectivity between multiple boards without the need for a router, so if perhaps I decided at the last minute to spend Halloween at my friends' place, I could bring the entire setup there without having to worry about about last minute code changes to access new networks.

As this was my first foray into ESP-NOW, I relied heavily on the information offered over at Random Nerd Tutorials. They have a great breakdown of what ESP-NOW does and how it works, with several examples. They even have the simple yet compulsory sketch needed to get the MAC address from your board(s). I just went with the most basic Send and Receive sketches. For the Send sketch, the only adjustment I had to make to the example code was to replace the continuous timed data transmission with an if() loop, so that data would only be sent when the button is pushed.

/*
 * Halloween Candy Throwing Robot Button Code
 * Created by Rob Reynolds, SparkFun Electronics, Oct 2021
 * 
 * This sketch is only a slight variation of Rui Santos's original sketch.
 * I simply added a button to send that data packet, instead of having it
 * repeat at a fixed interval. The message send doesn't matter, the receiver
 * only looks for whether or not it received a message.
 * 
 *Rui Santos
 *Complete project details at https://RandomNerdTutorials.com/esp-now-esp32-arduino-ide/
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files.
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
*/

#include <esp_now.h>
#include <WiFi.h>

// REPLACE WITH YOUR RECEIVER MAC Address
uint8_t broadcastAddress[] = {0x94, 0xB9, 0x7E, 0x79, 0xC5, 0xA4};

// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
  char a[32];
  int b;
  float c;
  bool d;
} struct_message;

// Create a struct_message called myData
struct_message myData;

int redButton = 14;         // input pin for big red button

// callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("\r\nLast Packet Send Status:\t");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}

void setup() {
  // Init Serial Monitor
  Serial.begin(115200);

  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  // Once ESPNow is successfully Init, we will register for Send CB to
  // get the status of Trasnmitted packet
  esp_now_register_send_cb(OnDataSent);

  // Register peer
  esp_now_peer_info_t peerInfo;
  memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  peerInfo.channel = 0;  
  peerInfo.encrypt = false;

  // Add peer        
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(redButton, INPUT_PULLUP);
}

void loop() {

  int redButtonState = digitalRead(redButton);  
  strcpy(myData.a, "THIS IS A CHAR");
  myData.b = random(1,20);
  myData.c = 1.2;
  myData.d = false;

  // Send message via ESP-NOW
  if (redButtonState == LOW) {
    esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
    if (result == ESP_OK) {
      Serial.println("Sent with success");
    }
    else {
      Serial.println("Error sending the data");
    }
    delay(8000); // Basically just like a long debounce so hits don't get backed up whilst the robot is executing a throw    
  }
}

The Receive sketch is where I made my changes, without getting too carried away. I kept the basics of Rui Dantos's code, since for my purposes, the receiving board doesn't care what message it receives, only whether or not it has received any message at all. So it sits there listening. Then, once it receives something from the sending ESP32, it spins the stepper motor the throw the candy bar, tilts the servo to load a new candy bar, then settles back down to listen for the incoming message from the next eager trick-or-treater.

CRITICAL KNOWLEDGE ALERT!

The servo library that we all know and love is not compatible with the ESP32. There are a few different ways to deal with this, but I found that the quickest and easiest was to use the ESP32Servo library by John K. Bennett and Kevin Harrington. It can be installed directly from the library manager, it just takes a little bit more work in the setup() loop, but once that's done it codes pretty much just like the original servo library.

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp-now-esp32-arduino-ide/

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.

  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

#include "SparkFun_ProDriver_TC78H670FTG_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_ProDriver
PRODRIVER myProDriver; //Create instance of this object

#include <esp_now.h>
#include <WiFi.h>

#include <ESP32Servo.h>
Servo feederServo;  // create servo object to control a servo
int servoPin = 23;

int pos = 90;    // variable to store the servo position

// Structure example to receive data
// Must match the sender structure
typedef struct struct_message {
    char a[32];
    int b;
    float c;
    bool d;
} struct_message;

// Create a struct_message called myData
struct_message myData;



void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);

  myProDriver.settings.stepResolutionMode = PRODRIVER_STEP_RESOLUTION_FIXED_1_4; // Sets resolution to 1/4
  myProDriver.begin(); // adjust custom settings before calling this

  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);

  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  // Once ESPNow is successfully Init, we will register for recv CB to
  // get recv packer info
  esp_now_register_recv_cb(OnDataRecv);


  feederServo.setPeriodHertz(50);    // standard 50 hz servo
  //feederServo.attach(servoPin, 1000, 2000); // attaches the servo on pin 18 to the servo object
  //***NOTE: Usually the servo would be attached here, but I'm isolating it to attach only
  //during the time it's needed, to avoid jitter and interference, then detaching it until needed
  // using default min/max of 1000us and 2000us
  // different servos may require different min/max settings
  // for an accurate 0 to 180 sweep

}

void loop() {

}


// callback function that will be executed when data is received
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("Bytes received: ");
  Serial.println(len);
  Serial.println();

  if (len > 0){
    digitalWrite(LED_BUILTIN, HIGH);
    myProDriver.step(1600, 0); // turn 1600 steps, CW direction
    //delay(1000);
    delay(500);
    len = 0; // Reset incoming data length

    //Here we'll tilt the servo to pick up another candy bar
    feederServo.attach(servoPin, 1000, 2000);
    for (pos = 90; pos <= 135; pos += 1) { // goes from 90 degrees to 135 degrees
    // in steps of 1 degree
    feederServo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 193; pos >= 90; pos -= 1) { // goes from 180 degrees to 0 degrees
    feederServo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  feederServo.detach();

    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
  }

}

alt text

With the chain drive tucked safely inside and the candy feeder working, this rookie phenom is ready to go up to the show!

The only thing I still need to finish up is the hopper. Ideally I would like to be able to simply dump a bag of candy bars into a hopper and let it do its thing. However, candy bars can be disagreeable when it comes to lining up, so I may need to resort to more of a chute than a hopper. Whatever way I wind up going, even if it's hand-feeding the bars into the holder, I know that because of the consistently repeatable movement and tension, those candy bars will all be landing in the same spot.

While I'm extremely happy with the way this build turned out, I'm already working on notes and sketches for version 2.0 next year. By using the ESP-NOW protocol for wireless communication, I can easily expand outward, as this protocol will allow my ESP32 boards to communicate with up to ten encrypted peers. And even if, twelve months from now, social distancing is no more than a fading memory, I think I'll always be able to come up with a good reason to build a robot that throws candy at to children.

comments | comment feed

2021-2023 New Board Members

via Open Source Hardware Association

Welcome to the following 2021-2023 board members! Congrats to Nadya Peek, Katherine Scott, Wendy Ju and Mirela Alistar. Thank you to all OSHWA members who voted, your vote is important – we had quorum! Here are the results:

Read more about our election process here.

The post 2021-2023 New Board Members appeared first on Open Source Hardware Association.

A Patent Troll Backs Off

via SparkFun: Commerce Blog

tldr; The patent troll Jason Nguyen of Altair Logix couldn’t shake us down so he dropped the case. It cost us $12,645.

You can read our first post about this troll and other forms of extortion here.

Lesson #1) Find an attorney that’s as pissed about this as you are. We originally started with an IP firm recommended from our primary attorney. This firm was a poor fit for our case. At the same time, I had emailed the EFF on a Hail Mary and to my surprise, got a response! EFF FTW! They passed our case on to Joe Mullin who recommended we talk to Rachael Lamkin. After a few discussions with Rachael, it was an obvious fit and we were off to the races again. We should have done more homework rather than just hoping our local counsel, while excellent at solving day-to-day issues, could take care of a patent issue.

Lesson #2) Fight like hell. Every time a company settles it just funds the trolls to wreak more havoc. This is especially true for companies larger than $100 million in revenue. I’m looking at you Texas Instruments, VIA Technologies, Renesas, ASUS, Caterpillar, Nuvision International, and Netgear, just to name a few of the companies that have dealt with Jason Nguyen’s Altair Logix. When you roll over and pay the trolls it hurts smaller companies terribly. Fight to get the patent invalidated. Fight to hook the troll into the risk of paying legal fees. Use your settlements budgets to fight because the rest of us don’t have settlement budgets.

A good attorney will be able to dig up all sorts of patents that pre-date the troll’s patent. Here is our counterclaim response and affirmative defense to the original lawsuit. Things of note in the affirmative defense is the provenance of the patent ownership in Counterclaim 3: Failure to Mark. Here we can see the patent being purchased and sold through the two decades of its life:

  • Rupan Roy
  • Cognigine Corporation
  • Future Engine
  • Futurewei Technologies
  • Huawei Technologies
  • Altair Logix

Here you can view Altair Logix’ answers to our counterclaims. The highlighting is ours. Things of note: Altair Logix was formed June 12, 2018, or three months after the patent expired on February 27th, 2018. Patents are really screwed up investment vehicles that change value over time. In this case, Jason, smelling potential money, purchased an expired patent ‘434 from Huawei and then formed a shell company to start suing people.

alt text

When my kids ask what I am working on, I show them cool pictures of glacier tracking devices in the northern Yukon built with some of the products SparkFun invented. Do you ever wonder what parent trolls tell their children they do for a job?

Lesson #3) Anyone can sign up for Public Access to Court Electronic Records (PACER) to search and retrieve your own legal documents. While I was not privy to the phone calls between attorneys and the assigned Judge Jackson, we can read through the scheduling order to get a sense of the judge’s style. If you’re being sued, don’t feel obligated to get documents from your attorney. Save time and money by getting them yourself at $0.10 a page.

I hope you never get sued by a troll but if you do, take a deep breath. Realize you're not powerless. The more we all realize that and the more we band together, the more they go away.

comments | comment feed