A. Final Project


Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License



What does it do?

I made the machine that makes the artworks automatically by dropping the liquid colored inks on the paper. I called it, Geodrop. The Drop position is controlled by using CoreXY platform which is the slider mechanism applying to 3D printer and Pen Plotter.
Because I’d like to confirm that the machine works simply, I’ve programed to control to start and stop dropping the colored ink. The end effector doesn’t move.

But if you’d like, you can customize its function by programming, driving the stepper motor, and changing the speed of DC motor pump.

Who’s done what beforehand?

Drawing Machine is also the drawing machine that draws the abstract artwork by using stepping motors. And Pen Plotter uses the same positioning technique, using CoreXY system. But I’ve never seen the example of applying the GPS data-based controlling system to those machine and it’s also one of the outstanding features for Geodrop.

Links - the outcomes that someone achieved beforehand
Drawing Machine
Pen Plotter

What did you design?

Firstly, here are all systems which I made for my final project:
Table / End Effector / CoreXY system / Computing Board / Programming / Logo

Design by Fusion360

Systems Parts Materials Process Week Data Files
Table All parts without a drawer Veneer Plywood CNC Router Computer Controlled Machine Parts_Table.f3z
Drawer MDF Laser Cutting Computer Controlled Cutting Drawer.dxf
End Effector Support parts Plastic 3D Printer 3D Scanning and Printing Pump Holder.stl
CoreXY System Outer frame MDF Laser Cutting Computer Controlled Cutting Frame_Side.dxf
Support parts Plastic 3D Printer 3D Scanning and Printing Corner1.stl
Y Parts.stl
Y Parts.f3d
Computing Board Main Board and others Cupper Board SRM-20 Electronics
Main: Line.rml, Out.rml, Main.sch, Main.brd
Power Supply: Line.rml, Out.rml, PS.sch, PS.brd
Motor Driver: Line.rml, Out.rml, MD.sch, MD.brd
Programming Program to control DC motor pump Arduino IDE - Embedded Programming Code - Light Sensor.ino
Logo All parts Seal paper Vinyl Cutting Computer Controlled Cutting Week3.ai

Computing Boards

① Motor Driver Module
To drive a DC motor pump and two stepper motors(BoM).

② Main Boards
To control motors(BoM).

③ Power Supply Module
To supply the power to the main board(BoM).

2020/10/21 Added the diagram of board connection

See the below diagram. Power supply board (PSB) supplies Vcc 12V and Vpullup 5V of Motor Driver Modules (MDMs) and I/O Pins of Satshakit are connected with MDMs to control I/O pins of MDMs with High and Low. Light sensor are connected with Satshakit and send the sensing data to Shatshakit.

2020/10/21 Added the appearance of my final product

Here is the appearance of my final product.
I’m surprised that it’s almost the same as the 3D design drawn by Fusion 360.

Core XY system are shown. Next time, I’d like to make a design considered the position of a tube.

Actually I was not considering where the light sensor should be put. So temporarily it is fitted with the shaft part of CoreXY…

2020/11/24 Put the light sensor on the table

To sense the light by the light sensor, the light sensor has to be put outside of the drawer. So to take the light sensor out of the drawer, I made a hole at the back of the drawer.

And then, I pulled around the light sensor and put it on the front of the drawer. The back surface of the light sensor is fixed by a tape.

2020/10/26 Programming

I’ll explain the programming code to control a DC motor pump according to the sensing value from the light sensor.

The code is below;

Code - Light Sensor

const int DriverA_1 = 14;
const int DriverA_2 = 15;
const int plus_sensor = 2;
const int sense_sensor = A2;
const int minus_sensor = 4;
//const int DriverB_1 = 10;
//const int DriverB_2 = 11;
char key;
char S = 's';
char B = 'b';
char C = 'c';

int value = 0;
int threshold = 100;

void setup() {
  pinMode(DriverA_1, OUTPUT);
  pinMode(DriverA_2, OUTPUT);
  pinMode(plus_sensor, OUTPUT);
  pinMode(sense_sensor, INPUT);
  pinMode(minus_sensor, OUTPUT);

  digitalWrite(plus_sensor, HIGH);
  digitalWrite(minus_sensor, LOW);
  //pinMode(DriverB_1, OUTPUT);
  //pinMode(DriverB_2, OUTPUT);

void loop() {  
  if (Serial.available()) {
    key = Serial.read(); 
    if(key == S){
      while (Serial.read()) {
        value = analogRead(sense_sensor);
        if (value < threshold){
          motor(HIGH, LOW, 150);
        } else {
          motor(HIGH, LOW, 10);
    } else if (key == B){
      motor(LOW, HIGH, 3000);

    } else if (key == C){
      motor(LOW, LOW, 3000);


void motor(int a1, int a2, int d){    
  digitalWrite(DriverA_1, a1);
  digitalWrite(DriverA_2, a2);
  digitalWrite(DriverA_1, a2);
  digitalWrite(DriverA_2, a2);

When the value given from the sensor is higher than the threshold value (= 100 in above code), the motor pump drives quickly whereas it is lower than the threshold value, the pump drives intermittently.

So the speed of the motor could be changed with the value from the sensor.
Click the below link to the video!

Video1 - Drive a motor without Ink

I also tried drive the motor with blue ink.

Video2 - Drive a motor with Ink

What materials and components were used?

End Effector

Parts Spec. Buy or Make Cost (JPY) Amount (PCS) Total Cost (JPY)
Syringe support parts Plastic by 3D printing Make - 1 -
Colored liquid ink Watercolors
12 colors
Buy 645 1 645

CoreXY System

Parts Spec. Buy or Make Cost (JPY) Amount (PCS) Total Cost (JPY)
Stepper motor NEMA-17 Buy 2883 2 5766
Shaft SUJ2
φ 4.0 x 400 mm
Buy 1390 4 5560
Timing belt pulley φ 5 mm, 16 Gears Buy 135.8 10 1358
Linear Bush LM-8UU
φ 8 mm, H = 24 mm
Buy 279 8 2232
Collar φ 5 mm, L = 5mm Buy 86 10 860
Belt 3m Buy 1260 1 1260
Screw M3 x 40
15 pcs
Buy 549 1 549
Nut M3
110 pcs
Buy 429 1 429
Washer M3
34 pcs
Buy 399 1 399
Spring Washer M3
610 pcs
Buy 419 1 419
Support parts at side slider Plastic Make
3D printing
- 2 -
Support parts at corner Plastic Make
3D printing
- 4 -
Outer frame MDF Make
Laser cutting
150 3 450

Computing Board

Systems Parts Buy or Make Cost (JPY) Amount (PCS) Total Cost (JPY) BoM
Main Controller Satshakit cnc Make
1826 1 1826 MB.csv
Power Supply Modules Make
499 1 499 PS.csv
Motor driver modules Make
1556 3 4668 MDM.csv


System Parts Spec. Buy or Make Cost (JPY) Amount (PCS) Total Cost (JPY)
Table Veneer Plywood Processed by CNC Router Buy 3000 2 6000
Top board Make 1
Leg1 Make 2
Leg2 Make 2
Circle_Handling Make 2
Circle_Support Make 2
Pole_Handling Make 2
Pole_Support Make 2
Pole_Rolling Make 2
Support Part Make 2
Support Block Make 4
Drawer MDF Make
Laser cutting
150 1 150


Systems Parts Spec. Buy or Make Cost (JPY) Amount (PCS) Total Cost (JPY)
Logo seal Processed by Vinyl Cutting Make 1
Seal paper 100 x 50cm Buy 540 1 540
Laminator 100 x 50cm Buy 540 1 540

Total Cost = 27157 yen

Mmh, too much cost…

*Exchange rate: 1 USD = 108.620 JPY (2020/4/3 23:44 Ref.)

Where did they come from?

Please see What materials and components will be used? part.

How much did they cost?

Please see What materials and components will be used? part.

What parts and systems were made?

Please see What will you design? part.

What processes were used?

Please see What materials and components will be used? part.

What questions were answered?

Q. Did you make a pump to extrude the ink by 3D printing?

A. No. I bought DC motor pump due to the time saving.

How was it evaluated?

  • What percentage did I complete to make my final project?

WiFi Communication: 0 %

I wanted to add the WiFi function to the machine, but I couldn’t because I had no time to do that. As I talked to my instructor, I decided to focus on finishing making a table first.

Data Conversion: 0 %

I planed to convert GPS data to XY coordinate data, but I couldn’t due to the same reason as WiFi communication.

Output control (CoreXY, Pump): 30 %

The pump could be worked properly. But the coreXY doesn’t work because the program that I was tried to use is for the other motor driver.
For the next step, I’d like to work coreXY platform by revising and embedding a program.

Table: 100 %

Completed to make a table. For the next step, I’d like to design the deferent shape of the legs of the table. They would be unique ones!

  • Beauty of appearance of my final project

The appearance of the ink drop machine was very good. Table’s appearance was perfect. I was impressed that it’s completely the same with its 3D design made on the computer. The drawer on the table has the functional design thanks to the idea of all the instructors and students in Kamakura.
But the design of core XY need to improve more because the rail shafts should be covered and hidden by the materials made by wood like MDF. I wanted to harmonize the design of core XY with that of the table.

What worked? What didn’t?

The machine can only extrude the ink and control its amount by clicking ‘s’ (means to start extruding) and ‘f’ (finish extruding) on the keyboard, but don’t move around the extruder. WiFi communication also does not work.
In the future, I’d like to sense the GPS data like longitude and latitude by the other devices like smartphone and send it to this ink drop machine, and draw the artworks based on the geometrical data by using this machine.

What are the implications?

As an pen plotter is used by the artist to make an art, this machine would collaborate with the artist. Its artwork would be more generative, complex, random like the abstract art and the generative art.

  • What if WiFi connection could be added?
    People around the world could participate to make an artwork. It needs to think the application which they can take part in.