The Arduino Button Box Project: Let’s get Soldering! Tips and advice…

Got Questions? Click here and post them in the Brainy-Bits Forum to get help!

OVERVIEW

If you’ve watched our last tutorial, “How to make a PCB using an Online service”, you will remember that we created a PCB using the online service “EasyEDA.com”.

Well since then, we received the boards from EasyEDA and I must be say they look great!  There is nothing quite like having a professionally made PCB.

EasyEDA PCB completed

Having solder mask makes soldering very easy for beginners since the solder will not bridge contacts.

Also having a 2 sided PCB, enables more connections between components while keeping the PCB size small.

And of course having silk screening (text, graphics…) makes the board and your project look even better.



THE RIGHT TOOLS FOR THE JOB

When it comes to soldering, the right tools will make the job less of a chore and might even make it fun. 

Unfortunately of course, the right tools cost more, but if you value your time, and will be doing soldering on a semi regular basis, then it ‘s money well spent.

From my experience, 2 tools that will make a big difference are,  a good soldering iron and a way to hold the PCB while soldering.

Since this is “not” a paid article I will not suggest a particular brand, but will instead tell you what I personally use day to day.

 

My Soldering station:

WELLER wes51 soldering station

I went with a Weller WES51, a 60w analog soldering station that comes with the PES51 soldering pencil.  No bells or whistle, it just works!

The best part of this system is the PES51 soldering pencil, it’s small, easy to hold and has a very precise tip, which in my mind is the most important thing when doing PCB soldering.

They’re are other models with digital temperature readout, but I find myself almost never adjusting the temperature once it has been set… So I would probably not use it much anyways.

So why did I go with the Weller brand?  Aside that they have been around forever and got a good track record, but for me the reason was that I could get replacement parts easily.

Soldering tips need to be changed at some point, and being able to find them locally or at least on Amazon was the main selling point for me.

WELLER PES51 Soldering pencil

 

They are other brand of course that are probably just as good and if you are shopping around for a new soldering iron, get at least a 60W and more importantly, get one that comes with a slim soldering iron, like the PES51 soldering pencil.

 

My PCB holder: 

If you have done some soldering before, you probably used one of those third hand with a magnifying glass.

Third Hand with magnifying glass

I’ve used this for a long time because I couldn’t really find anything else, and also it’s cheap :).

Once I started working on bigger PCB’s and doing more soldering, I needed something better.

Once again Weller had the thing I was looking for, the ESF-120 PCB holder.

WELLER ESF-120 PCB Holder

Again I would like to mention that I am not being compensated by Weller :).  I’m only mentioning what I use and not saying that they are better than others brands.

At first glance, the ESF-120 looks overpriced for what it is, that’s what I thought the first time I saw it. 

But I wanted something simple that just works and wouldn’t take time to set up.

Although it is mostly made of plastic, the two metal rods are heavy and small rubber feet keep it from moving around while you solder.

Just be careful with you iron around the plastic parts because they will melt if you touch them.

The first time I used it, I wondered why I waited so long to get one.  It a simple device that holds the PCB and the little adjustable arm holds the part to be soldered so it stays in place when you flip the PCB.

 

They are more advanced system available like the PCBGRIP, which offer a lot more (of course for more money…), but for my need the ESF-120 fit the bill, and I would not solder without it.

 

So there you have it, if you want to make soldering less of a chore, getting a good soldering iron and a better way to hold the PCB will be a great improvement and will make soldering less daunting.



THE CODE / SOLDERING

Of course since we are using a PCB, soldering the parts for our project was easy and fun. 

When I’m soldering a PCB I start from the inside moving out, I find that way gives me more room to work without having to be careful not to hit already soldered components.

So for this project I started with the resistors, then moved on to the headers for the DigiSpark and the CD4021 shift register.  Finally, I flipped the board around and soldered the MX switches.  Using the ESF-120 made this a breeze, thanks to the little arm to hold the parts while soldering.

Soldering PCB using the WELLER ESF-120

The headers are not needed of course, but I like to be able to remove the DigiSpark or the shift register if I ever need too.

 

Once everything was soldered, all that was left to do was to program the DigiSpark with the code needed.

 

As always please watch our YouTube video for more information.

#include "DigiKeyboard.h"  // Include Library for Keyboard Emulation

//Define pins
int dataPin = 0;   // Pin 0 of DigiSpark connected to Pin 3 of CD4021
int clockPin = 1;  // Pin 1 of DigiSpark connected to Pin 10 of CD4021
int latchPin = 2;  // Pin 2 of DigiSpark connected to Pin 9 of CD4021

//Define variable
byte RegisterValue = 0;  // Used to hold data from DC4021

void setup() {

//define pins used to connect to the CD4021 Shift Register
  pinMode(dataPin, INPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT); 

}

void loop() {

  DigiKeyboard.delay(1);
  //Set latch pin to 1 to get recent data into the CD4021
  digitalWrite(latchPin,1);
  
  delayMicroseconds(20);
  
  //Set latch pin to 0 to get data from the CD4021
  digitalWrite(latchPin,0);

  //Get CD4021 register data in byte variable
  RegisterValue = shiftIn(dataPin, clockPin, MSBFIRST);


  if (RegisterValue == B10) {
    DigiKeyboard.print("7");
    DigiKeyboard.delay(200);
//    DigiKeyboard.println(RegisterValue, BIN);
  }

  if (RegisterValue == B100) {
    DigiKeyboard.print("5");
    DigiKeyboard.delay(200);
//    DigiKeyboard.println(RegisterValue, BIN);
  }

  if (RegisterValue == B1000) {
    DigiKeyboard.print("1");
    DigiKeyboard.delay(200);
//    DigiKeyboard.println(RegisterValue, BIN);
  }

  if (RegisterValue == B10000) {
    DigiKeyboard.sendKeyStroke(KEY_SPACE);
    DigiKeyboard.delay(200);
//    DigiKeyboard.print("Cut Transition");
  }

  if (RegisterValue == B100000) {
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(200);
//    DigiKeyboard.print("Auto Transition");
  }

  if (RegisterValue == B1000000) {
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(200);
//    DigiKeyboard.print("Auto Transition");
  }

}


TUTORIAL VIDEO



DOWNLOAD

Copy the above Sketch code in your Arduino IDE software to program your Arduino.

 

Used Libraries:

Download The DigiKeyboard Library

created by DigiStump here:

https://github.com/digistump/DigisparkArduinoIntegration/tree/master/libraries/DigisparkKeyboard

 

Once downloaded, just extract the content of the zip files inside your “arduino/libraries” folder, and make sure to restart the Arduino IDE (Close and Reopen) software so it detect this newly installed library.

 

2 Comments

Janterra - Feb 03, 2017

By any chance do you happen to recall what resistance the resistors you used have?

Brainy-Bits - Feb 03, 2017

Janterra:
The resistors used for this project are 10K value. Thank you for your comment btw.

Got Questions? Click here and post them in the Brainy-Bits Forum to get help!

Leave a comment

Comments have to be approved before showing up