Monthly Archives: September 2020

Got Technical Support?

via SparkFun: Commerce Blog

Our Technical Support forum moderators are here to support SparkFun customers, and customers who have purchased SparkFun products from our official distributors. We are here to troubleshoot product issues and test both hardware and software problems against SparkFun's internal and external documentation to resolve issues for our customers. Technical Support moderators have the ability to issue tickets associated with refunds and replacements in addition to performing repairs and conducting tests on returned products.

Once you have created your topic on the SparkFun forums, a moderator will review the topic shortly and will respond to the post in about three business days if it fits our criteria for eligibility. Keep in mind: We like to build robots, but we aren't robots – we have a limited staff of technical assistance professionals so mistakes may happen. Please be kind.

The SparkFun Forums

In some instances where a moderator cannot answer your question we may redirect you to other resources not associated with SparkFun to try and point you in the right direction.

Hardware testing on returns takes up to 10 business days after the product(s) have been received into SparkFun's facility. Due to COVID-19, several SparkFun policies have changed as a result and hardware testing may take up to 15 business days at this time.

When working on issues within a specific tutorial, we encourage you to review the “troubleshooting” section for quick pointers on how to overcome some common issues. There is also a quick link to the appropriate forum category to post topics associated with the product, in most cases.

If you are working with a code issue while using code written by a SparkFun employee within a SparkFun product tutorial, please consider submitting a GitHub issue ticket associated with that product, including the problem you are running into. SparkFun does not offer assistance on custom modifications to our existing code, nor does SparkFun offer assistance for code that was not written by a current SparkFun employee. Consider posting in the General Development Platforms discussion category if you would like to see if the community can assist you under these circumstances, or consider posting on other forums such as the Arduino forums if the code is Arduino IDE related.

There are three primary categories that topics fall into on the SparkFun forums:

Topics moderators can assist with (response time - three estimated business days)

  • Product(s) appear to have a defect in hardware.
  • Product(s) do not work as advertised per our hook-up guide or other documentation on the SparkFun website product page.
  • Code written by a SparkFun employee and published in an official SparkFun product tutorial or hook-up guide is throwing compile errors.
  • Simple questions about a SparkFun product that are re-searchable using information available on the SparkFun website.
  • Simple questions about the compatibility of several SparkFun products for a project (be sure to post in the projects category).

Topics with issues which may require an electrical engineer to review and reply (esponse time is dependent on issue - some topics may not receive a response)

  • Topics that state a specific fundamental advertised feature of a product is not working, indicating a design flaw or issue in software.
  • Topics that ask about features of a chip not mentioned within the hook-up guide of the product.
  • Topics that discuss discrepancies in electrical characteristics associated with components or PCB design related issues within a SparkFun product.

Topics that require no response from a SparkFun employee

  • Topics where a customer's question(s) or issues(s) were answered correctly by another forum user within the community.
  • All topics within any forum category other than "SparkFun products" or "SparkFun Education."
  • Topics that are not relevant to the forum category (these topics will be moved to the appropriate category in most cases).
  • Topics that pertain specifically to a third party IDE, SDK, or other environments not owned or developed by SparkFun.
  • Topics that specifically pertain to code not written by SparkFun.

Keep in mind that there are exceptions, which are handled on a case-by-case basis and may fall into or deviate from the above examples.

Moderators may need some personal information to assist further in some circumstances, such as Return Merchandise Authorization (RMA) processes, and we may ask for this information via private messages. A technical support representative will never ask you to share personal information publicly on the SparkFun forums. Always double check and make sure the individual who is private messaging you is a verified SparkFun moderator or employee. The best way to tell is by the red coloring in the name and the "SFE-TS-Moderator" title underneath.

If you have feedback on anything associated with the forums including functionality, spelling errors, response time from moderators, etc., please private message TS-Feedback and we will look into it as soon as possible.

For more information on how to use phpBB3 and the SparkFun forums, check out the phpBB3 user guide.

Thank you for taking the time to read through this blog. We look forward to assisting you on the SparkFun forums soon!

comments | comment feed

Raspberry Pi reaches more schools in rural Togo

via Raspberry Pi

We’ve been following the work of Dominique Laloux since he first got in touch with us in May 2013 ahead of leaving to spend a year in Togo. 75% of teachers in the region where he would be working had never used a computer before 2012, so he saw an opportunity to introduce Raspberry Pi and get some training set up.

We were so pleased to receive another update this year about Dominique and his Togolese team’s work. This has grown to become INITIC, a non-profit organisation that works to install low cost, low power consumption, low maintenance computer rooms in rural schools in Togo. The idea for the acronym came from the organisation’s focus on the INItiation of young people to ICT (TIC in French).

Visit the INTIC website to learn more

The story so far

INITIC’s first computer room was installed in Tokpli, Togo, way back in 2012. It was a small room (see the photo on the left below) donated by an agricultural association and renovated by a team of villagers.

Fast forward to 2018, and INTIC had secured its own building (photo on the right above). It has a dedicated a Raspberry Pi Room, as well as a multipurpose room and another small technical room. Young people from local schools, as well as those in neighbouring villages, have access to the facilities.

The first dedicated Raspberry Pi Room in Togo was at the Collège (secondary school) in the town of Kuma Adamé. It was equipped with 21 first-generation Raspberry Pis, which stood up impressively against humid and dusty conditions.

In 2019, Kpodzi High School also got its own Raspberry Pi Room, equipped with 22 Raspberry Pi workstations. Once the projector, laser printer, and scanners are in place, the space will also be used for electronics, Arduino, and programming workshops.

What’s the latest?

Ready for the unveiling…

Now we find ourselves in 2020 and INTIC is still growing. Young people in the bountiful, but inaccessible, village of Danyi Dzogbégan now have access to 20 Raspberry Pi workstations (plus one for the teacher). They have been using them for learning since January this year.

We can’t wait to see what Dominique and his team have up their sleeve next. You can help INTIC reach more young people in rural Togo by donating computer equipment, by helping teachers get lesson materials together, or through a volunteer stay at one of their facilities. Find out more here.

The post Raspberry Pi reaches more schools in rural Togo appeared first on Raspberry Pi.

Watch your houseplant’s growth really take off in this Saturn V planter

via Arduino Blog

As first reported by Technabob, almost two years after he made a rather stunning Saturn V lamp, SimonRob decided to create something a bit different in the form of his Saturn V planter.

The device is based on the lower section portion of a 3D-printable rocket model, which is modified and sealed to hold dirt and water. A succulent now pops out where the rest of the rocket should be, and when combined with a 30mm thick wood plank, gives it a very unique and polished look.

A switch on the front lights up the printed flame assemblies emanating from the engines, using a trio of SMD LEDs on each exhaust. These LEDs are controlled by an Arduino Nano nestled inside the wooden base to produce random lighting effects when an activation button is pressed.

Touchless light show with the Qwiic Dual Solid State Relay

via SparkFun: Commerce Blog

Last week we released the SparkFun Qwiic Dual Solid State Relay, and as is usually the case, I was tasked with learning about it, then scripting and filming a video to tell all of you about it. This happens pretty much every week, and while the varying technologies of each new product come with their own learning curves, recent wrinkles like supply chain issues and the limited time I can spend at SparkFun (for employee safety) have added new wrinkles into the timeline of releasing a new product.

SparkFun Qwiic Dual Solid State Relay

SparkFun Qwiic Dual Solid State Relay


Naturally we keep a schedule of what products we’re expecting to release in the coming weeks. I pore over datasheets, read through the libraries our engineers are building, and try to come up with ideas that might make for an interesting demo build. Of course, working from home is not the same as heading into SFHQ every day. The ideas that race through my mind haven’t changed, but the inventory on hand certainly has. There have been times over the past six months when I have come up with a build idea, only to have my dreams dashed when I dig through my parts drawer and find that I don’t possess the component around which I was planning my build. This week was a good example of that. I knew that I had multiple VL53L1X Distance Sensors on hand, but knowing that they have a hardware defined I2C address, I knew that I would need a Qwiic MUX Breakout to use more than one of these sensors. And it turned out that I didn't have a MUX on hand. So I pulled the Qwiic VCNL4040 Proximity Sensor off of a previous project, and proceeded forward.

Proximity sensors
VL53L1X Proximity sensors aplenty, but without a MUX, I'm limited to using only one

Sometimes this theoretical portion of my work week ("this should work...theoretically") leads me right up the moment when I have to start filming the new video. Such was the case this week. I didn’t get my hands on the Qwiic Dual SSR until I arrived at SFHQ to do the filming. Luckily I had completed the outline for the video, as well as the sketch for the demo build, so I figured it would be as simple as connecting the relay board via its Qwiic connector, wiring the load side and watching it work.

That’s not exactly how it happened.

alt text
Even though the ranges of the two sensors differ, for this build they were both perfectly suited

I connected everything together and powered it up, and nothing happened. Since I had written and tested the sketch on a different Qwiic relay board, I figured that since our Qwiic Relay Library for Arduino is universal across all of our Qwiic Relay boards, all I’d need to do would be to change the I2C address, and everything would work perfectly – but it didn’t. I checked all of the connections, examined my sketch, looked at the library to make sure I was using the correct I2C address for the new Dual Solid State Relay board, and all of it checked out.

I ran an I2C sniffer, and voila! Even though the board powered up, and I got the status light, I was not receiving an I2C address from the board. With the timeline we impose on ourselves for many of our boards, there will be times when a board will come up to the Marketing department hot off the reflow oven so that our (amazing) photographer Juan can get images of the component and get them to the folks who are putting together the product web page. Sometimes in the process, the components accidentally bypass the firmware flash stage. I simply took the board down to production, they flashed it, I plugged it back into my setup, and everything was Jake!

The code for the project was just a very basic amalgamation of the first examples of each of the VL53L1X distance sensor, the VCNL4040 Proximity Sensor, and the Qwiic Dual Solid State Relay. I added a delay in the void loop so I could watch the proximity digits for each sensor, then used those to set the limits to trigger each of the two relays.

 * Dual Solid State Relay Demo
 * Rob Reynolds, SparkFun Electronics, September 2020
 * Using two separate sensors, this demo
 * toggles the two relays of the SparkFun Qwiic
 * Dual Solid State Relay on and off as you
 * hold your hands over the sensors.
 * SparkFun labored with love to create this code. Feel like supporting open source hardware?
 * Buy a board or two from SparkFun!
 * SparkFun Qwiic Dual Solid State Relay - (
 * SparkFun Distance Sensor Breakout VL53L1X - (
 * SparkFun Proximity Sensor Breakout VCNL4040 - (
 * License: This code is public domain but you buy me a beer if you use 
 * this and we meet someday (Beerware license).

#include <Wire.h>

//**********VCNL4040 Setup here***************
//Click here to get the library: http://librarymanager/All#SparkFun_VCNL4040
#include "SparkFun_VCNL4040_Arduino_Library.h"
VCNL4040 proximitySensor;

//*********VL53L1X Setup here***************
#include <ComponentObject.h>
#include <RangeSensor.h>
#include <SparkFun_VL53L1X.h>
#include <vl53l1x_class.h>
#include <vl53l1_error_codes.h>
#include "SparkFun_VL53L1X.h" //Click here to get the library: http://librarymanager/All#SparkFun_VL53L1X

SFEVL53L1X distanceSensor;

//************Here's the Dual SSR section***********
#include "SparkFun_Qwiic_Relay.h"
#define RELAY_ADDR 0x0A // Alternate address 0x6C
Qwiic_Relay dualRelay(RELAY_ADDR); 

void setup()
  Serial.println("SparkFun VCNL4040 Example");

  Wire.begin(); //Join i2c bus

  if (proximitySensor.begin() == false)
    Serial.println("Device not found. Please check wiring.");
    while (1); //Freeze!

    Serial.println("Check connections to Qwiic Relay.");
    Serial.println("Dual Relay Light Show!!");

  Serial.println("VL53L1X Qwiic Test");

  if (distanceSensor.begin() != 0) //Begin returns 0 on a good init
    Serial.println("Sensor failed to begin. Please check wiring. Freezing...");
    while (1)
  Serial.println("Sensor online!");



void loop()
  //Get proximity value. The value ranges from 0 to 65535
  //so we need an unsigned integer or a long.
  unsigned int proxValue = proximitySensor.getProximity(); 

  Serial.print("Proximity Value: ");


  if (proxValue > 12){

  else if (proxValue < 12){

  //********VL53L1X section*************
  distanceSensor.startRanging(); //Write configuration bytes to initiate measurement
  while (!distanceSensor.checkForDataReady())

  int distance = distanceSensor.getDistance(); //Get the result of the measurement from the sensor

  Serial.print("Distance: ");

  if (distance < 400){
    Serial.println("Relay 4 is hot.");

  else if (distance > 400){

  //delay(500); //uncomment this delay for testing

Again, when working on the high voltage side, make sure that you are knowledgeable and comfortable with that level of potentially lethal voltage. Even though we have built safety measures into this board, like ground isolation between the relay and control circuitry and a milled out area isolating each side of the AC, without proper attention to detail this can be a dangerous product. If you're not quite ready to wire up your own AC lines, the IoT Power Relay is a good solution while you increase your knowledge of high voltage circuits.

If you are planning on creating your own light show, or any other relay-driven project, don't forget that you're not limited to a pair of relays on a single board. Since the ATTiny84A on the Dual Solid State Relay is software configurable, and communicates over I2C, you can daisy-chain over one hundred boards together, allowing you to create an entire light wall that you control by waving your arms around. Yeah, now who's DJ GOAT?!

Evil genius at work

Choosing the proper music is paramount to feeling like you might actually be able to take over the world

comments | comment feed

“Tinkering is an equity issue” | Hello World #14

via Raspberry Pi

In the brand-new issue of Hello World magazine, Shuchi Grover tells us about the limits of constructionism, the value of formative assessment, and why programming can be a source of both joy and angst.

How much open-ended exploration should there be in computing lessons?

This is a question at the heart of computer science education and one which Shuchi Grover is delicately diplomatic about in the preface to her new book, Computer Science in K-12: An A-to-Z Handbook on Teaching Programming. The book’s chapters are written by 40 teachers and researchers in computing pedagogy, and Grover openly acknowledges the varying views around discovery-based learning among her diverse range of international authors.

“I wonder if I want to wade there,” she laughs. “The act of creating a program is in itself an act of creation. So there is hands-on learning quite naturally in the computer science classroom, and mistakes are made quite naturally. There are some things that are so great about computer science education. It lends itself so easily to being hands-on and to celebrating mistakes; debugging is par for the course, and that’s not the way it is in other subjects. The kids can actually develop some very nice mindsets that they can take to other classrooms.”

Shuchi Grover showing children something on a laptop screen

Grover is a software engineer by training, turned researcher in computer science education. She holds a PhD in learning sciences and technology design from Stanford University, where she remains a visiting scholar. She explains how the beginning of her research career coincided with the advent of the block-based programming language Scratch, now widely used as an introductory programming language for children.

“Almost two decades ago, I went to Harvard to study for a master’s called technology innovation and education, and it was around that time that I volunteered for robotics workshops at the MIT Media Lab and MIT Museum. Those were pretty transformative for me: I started after-school clubs and facilitated robotics and digital storytelling clubs. In the early 2000s, I was an educational technology consultant, working with teachers on integrating technology. Then Scratch came out, and I started working with teachers on integrating Scratch into languages, arts, and science, all the things that we are doing today.”

A girl with her Scratch project
Student Joyce codes in Scratch at her Code Club in Nunavut

Do her formative experiences at MIT, the birthplace of constructionist theory of student-centred, discovery-based learning, lead her to lean one way or another in the tinkering versus direct instruction debate? “The learning in informal spaces is, of course, very interest-driven. There is no measurement. Children are invited to a space to spend some time after school and do whatever they feel like. There would be kids who would be chatting away while a couple of them designed a robot, and then they would hand over the robot to some others and say, ‘OK, now you go ahead and program it,’ and there were some kids who would just like to hang about.

“When it comes to formal education, there needs to be more accountability, you want to do right by every child. You have to be more intentional. I do feel that while tinkering and constructionism was a great way to introduce interest-driven projects for informal learning, and there’s a lot to learn from there and bring to the formal learning context, I don’t think it can only be tinkering.”

“There needs to be more accountability to do right by every child.”

“Everybody knows that engagement is very important for learning — and this is something that we are learning more about: it’s not just interest, it’s also culture, communities, and backgrounds — but all of this is to say that there is a personal element to the learning process and so engagement is necessary, but it’s not a sufficient condition. You have to go beyond engagement, to also make sure that they are also engaging with the concepts. You want at some point for students to engage with the concept in a way that reveals what their misconceptions might be, and then they end up learning and understanding these things more deeply.

“You want a robust foundation — after all, our goal for teaching children anything at school is to build a foundation on which they build their college education and career and anything beyond that. If we take programming as a skill, you want them to have a good understanding of it, and so the personal connections are important, but so is the scaffolding.

“How much scaffolding needs to be done varies from context to context. Even in the same classroom, children may need different levels of scaffolding. It’s a sweet spot; within a classroom a teacher has to juggle so much. And therein lies the challenge of teaching: 30 kids at a time, and every child is different and every child is unique.

“It’s an equity issue. Some children don’t have the prior experience that sets them up to tinker constructively. After all, tinkering is meant to be purposeful exploration. And so it becomes an issue of who are you privileging with the pedagogy.”

She points out that each chapter in her book that comes from a more constructionist viewpoint clearly speaks of the need for scaffolding. And conversely, the chapters that take a more structured approach to computing education include elements of student engagement and children creating their own programs. “Frameworks such as Use-Modify-Create and PRIMM just push that open-ended creation a little farther down, making sure that the initial experiences have more guide rails.”

Approaches to assessment

Grover is a senior research scientist at Looking Glass Ventures, which in 2018 received a National Science Foundation grant to create Edfinity, a tool to enable affordable access to high-quality assessments for schools and universities.

In her book, she argues that asking students to write programs as a means of formative assessment has several pitfalls. It is time-consuming for both students and teachers, scoring is subjective, and it’s difficult to get a picture of how much understanding a student has of their code. Did they get their program to work through trial and error? Did they lift code from another student?

“Formative assessments that give quick feedback are much better. They focus on aspects of the conceptual learning that you want children to have. Multiple-choice questions on code force both the teachers and the children to experience code reading and code comprehension, which are just so important. Just giving children a snippet of code and saying: ‘What does this do? What will be the value of the variable? How many times will this be executed?’ — it goes down to the idea of code tracing and program comprehension.

“Research has also shown that anything you do in a classroom, the children take as a signal. Going back to the constructionist thing, when you foreground personal interest, there’s a different kind of environment in the classroom, where they’re able to have a voice, they have agency. That’s one of the good things about constructionism.

“Formative assessment signals to the student what it is that you’re valuing in the learning process. They don’t always understand what it is that they’re expected to learn in programming. Is the goal creating a program that runs? Or is it something else? And so when you administer these little check-ins, they bring more alignment between a teacher’s goals for the learners and the learners’ understanding of those goals. That alignment is important and it can get lost.”

Grover will present her latest research into assessment at our research seminar series next Tuesday 6 October — sign up to attend and join the discussion.

The joy and angst of programming

The title of Grover’s book, which could be thought to imply that computer science education consists solely of teaching students to program, may cause some raised eyebrows.

What about building robots or devices that interact with the world, computing topics like binary, or the societal impacts of technology? “I completely agree with the statement and the belief that computer science is not just about programming. I myself have been a proponent of this. But in this book I wanted to focus on programming for a couple of reasons. Programming is a central part of the computer science curriculum, at least here in the US, and it is also the part that teachers struggle with the most.

“I want to show where children struggle and how to help them.”

“As topics go, programming carries a lot of joy and angst. There is joy in computing, joy when you get it. But when a teacher is encountering this topic for the first time there is a lot of angst, because they themselves may not be understanding things, and they don’t know what it is that the children are not understanding. And there is this entire body of research on novice programming. There are the concepts, the practices, the pedagogies, and the issues of assessment. So I wanted to give the teachers all of that: everything we know about children and programming, the topics to be learnt, where they struggle, how to help them.”

Computer Science in K-12: An A-to-Z Handbook on Teaching Programming (reviewed in this issue of Hello World) is edited by Shuchi Grover and available now.

Hear more from Shuchi Grover, and subscribe to Hello World

We will host Grover at our next research seminar, Tuesday 6 October at 17:00–18:30 BST, where she will present her work on formative assessment.

Hello World is our magazine about all things computing education. It is free to download in PDF format, or you can subscribe and we will send you each new issue straight to your home.

In issue 14 of Hello World, we have gathered some inspiring stories to help your learners connect with nature. From counting penguins in Antarctica to orienteering with a GPS twist, great things can happen when young people get creative with technology outdoors. You’ll find all this and more in the new issue!

Educators based in the UK can subscribe to receive print copies for free!

The post “Tinkering is an equity issue” | Hello World #14 appeared first on Raspberry Pi.

This interactive screen slides smoothly from side to side

via Arduino Blog

When you need to grab someone’s attention at an event, an interactive screen is a good idea. MakerMan, however, went several steps beyond this, creating an installation with a bank of static screens that depict the Moscow skyline. In front of this, a single touch-enabled display moves back and forth automatically to present information on various points of interest.

Sliding action is handled by a large stepper motor, which pulls the screen along on a carriage assembly. The motor, in turn, is controlled via an Arduino Uno and a stepper driver. All of these electronics are hidden behind a nicely painted wooden facade, letting the technology driving it fade elegantly into the background.