Zalmotek
Published © CC BY

Soldering Station for Humans

A soldering station for simple soldering irons, portable, smart, built by robots.

IntermediateWork in progress8 hours667
Soldering Station for Humans

Things used in this project

Hardware components

Orion Development board (Makeblock)
https://www.makeblock.com/project/makeblock-orion
×1
2 Relay Module
https://www.amazon.co.uk/2-Channel-Optical-Coupling-Protection-Expansion/dp/B01DM8N4A4
×1
Fumes absorption fan and filter
https://www.tme.eu/en/details/dp200a2123xst/ac230v-fans/sunon/dp200a2123xst-gn/
×1
Me touch sensor
https://www.makeblock.com/project/me-touch-sensor
×1
Audio module (Makeblock)
https://www.makeblock.com/project/me-audio-player
×1
Soldering iron
take your pick or use existing one
×1
5v Power supply
×1
Outlet
Based on where you live it looks more or less like a piggy snout
×1
Led Light strip (neopixel based)
https://www.seeedstudio.com/Grove-WS2813-RGB-LED-Strip-Waterproof-60-LED-m-1m.html
×1
CNC cut MDF
×1

Story

Read more

Custom parts and enclosures

Enclosure CAD files

Code

Arduino Main code

C/C++
You will need this library for the main ino to compile https://github.com/Makeblock-official/Makeblock-Libraries
#include "MeOrion.h"
#include "MeAudioPlayer.h"
#include "Wire.h"
#include <SimpleTimer.h>

MeRGBLed rgb(60);
MeAudioPlayer AudioPlayer(PORT_4);
MeTouchSensor MeTouchSensor(PORT_7);
MePort output(PORT_6);

SimpleTimer timer;
int timerId;
unsigned long time;

int ledState = LOW;         // the current state of the output pin
int buttonState;             // the current reading from the input pin
int lastButtonState = LOW;   // the previous reading from the input pin

// the following variables are unsigned longs because the time, measured in
// milliseconds, will quickly become a bigger number than can be stored in an int.
unsigned long lastDebounceTime = 0;  // the last time the output pin was toggled
unsigned long debounceDelay = 50;    // the debounce time; increase if the output flickers

/*
  Sounds
  1 - soldering station online
  2 - heating up the soldering iron
  3 - soldering iron at optimal temperature
  4 - dont forget to put the heathsrink first
  5 - hey you forgot the soldering iron on
  6 - dont forget to hidrate: you not the soldering iron
  7 - bye! go outside and play now
*/

boolean started = false;

long soldering_iron_heat_time = 120000;

void setup() {
  rgb.setNumber(60);
  rgb.setpin(13);
  rgb.setColor(0, 0, 0);
  rgb.show();
  MeTouchSensor.SetTogMode(0);
  AudioPlayer.PlayerInit();
  AudioPlayer.setMusicVolume(100);
  delay(100);
  AudioPlayer.stopMusic();
  delay(100);
  Serial.begin(9600);
  Serial.println("Started");
}

void loop() {
  timer.run();
  checkButton();
}

void checkButton() {
  int reading = MeTouchSensor.touched();
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }
  if (ledState == true) {
    if(started == false){
      started = true;
      start_station();
    }  
  }else{
    stop_station();
  }
  lastButtonState = reading;
}

void start_station() {
  rgb.setColor(255, 255, 255);
  rgb.show();
  AudioPlayer.playMusicFileIndex(1);
  timerId = timer.setTimeout(5000, soldering_station_online);
  timerId = timer.setTimeout(soldering_iron_heat_time, solder_iron_optimal_temp);
}

void soldering_station_online() {
  AudioPlayer.playMusicFileIndex(2);
  output.dWrite1(LOW); // turn soldering iron on
}

void solder_iron_optimal_temp() {
  AudioPlayer.playMusicFileIndex(3);
  timerId = timer.setTimeout(7000, start_fan);
}

void start_fan() {
  output.dWrite2(LOW); // turn fan on
}

void stop_station() {
  timer.deleteTimer(timerId);
  output.dWrite1(HIGH);
  output.dWrite2(HIGH);
  rgb.setColor(0, 0, 0);
  rgb.show();
  AudioPlayer.playMusicFileIndex(7);
  started = false;
}

Credits

Zalmotek
26 projects • 50 followers
#totallynotrobots doing prototyping

Comments