Git Product home page Git Product logo

Comments (37)

Pwdr avatar Pwdr commented on August 9, 2024

Hi there,

Great to hear there is a lot of interest in the Pwdr project for
educational purposes! I'm pretty confident that together, we'll be able to
fix your problems.

  1. Normally, it shouldn't bee too much of a hustle to get the serial
    communication. Maybe you can give me some details what you had to fiddle
    with? But back to your question. This error pops up more often, I'm still
    not sure what is the root cause, but it has to too with the STL file. Some
    files just don't work. This teapot (https://www.thingiverse.com/thing:852078)
    should work.
  2. Yep, the SD card should be connected to the Arduino, at least to print
    something. You can still jog the axes when the SD Initialisation Failed
    pops up (well, I think so, have to check the source code)
  3. I got my belts and pulleys from SPD-SI (http://www.sdp-si.com), as shown
    in the BOM, but there should be plenty of similar options around, for
    example McCaster-Carr (http://www.mcmaster.com/). You mention some measures
    (40-50mm and 60mm), but I'm not really sure what you mean, can you explain?

On Thu, Jun 25, 2015 at 9:52 PM, KH-Xavier [email protected] wrote:

Hello!

I am from the University of Alberta and we are excited to be building not
only one, but several of these machines for research if the first one
works. However, I am having some difficulty...

  1. After much fiddling, Processor now will talk the Arduino (I
    believe), however, whenever I try to "Convert Model" I receive the error
    "ArrayIndexOutOfBoundsException:521216"

[image: image]
https://cloud.githubusercontent.com/assets/13054695/8364153/3eb2531e-1b41-11e5-9408-7ab0f89948aa.png

Also, after selecting the right COM, I receive "SD Initialization Failed."
Does the SD card need to be hard-wired in before the program will work? I
am trying to program the Arduino while I wait for parts to come in the
mail...

  1. Any suggestions on where to get the small belts for the gears? I
    can't find much smaller than 60 mm and some require 40-50 mm on the
    carriages.

Thanks!


Reply to this email directly or view it on GitHub
#35.

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Thanks for the quick response.

  1. I changed the serial communication to the correct COM port (next time I am in the lab I can provide which lines I changed), but the Processing window allowed me to select Serial #2 (COM6) with ease. However, I then received an "RXTX version mismatch" error, so a quick Google led me to

http://forum.processing.org/one/topic/how-do-i-install-rxtx-2-2pre1-jar-on-windows-7.html#25080000000981023.html

I followed the instructions and the error disappeared.

I will try to convert the teapot file when I'm in the lab and let you know if it works.

  1. Great. Once the hardware arrives I will try to jog the axes without printing. I see an Eagle schematic, but is there an Eagle .brd file that is successful? I am trying to make my own PCB board for elegance, but I'm worried something will cross incorrectly and cause hours of frustration...
  2. I ordered the belts from SDP-SI as per the BOM in the documentation, but I see that there is a huge belt that looks too large for the printer (2218mm)? In terms of the small belts, here's a screen shot of what I mean by the small belts.

image

I looked again and found small belts that will work.. guess I didn't look hard enough. I will order the correct sizes as I build the printer.

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

COM port behavior on windows is a bit quirky. I'll add some information
about the RXTX upgrade.

There is no .brd available. Currently there is a error in the schematics,
I'll update is asap. Could you share the design of the PCB when it's
finished?

The huge belt isn't used as such, it has to be cut to length and tensioned
using the clamping parts. The smallest belt should fit. The chassis has
slotted holes to make it fit.

On Friday, June 26, 2015, KH-Xavier [email protected] wrote:

Thanks for the quick response.

  1. I changed the serial communication to the correct COM port (next
    time I am in the lab I can provide which lines I changed), but the
    Processing window allowed me to select Serial #2
    #2 (COM6) with ease.
    However, I then received an "RXTX version mismatch" error, so a quick
    Google led me to

http://forum.processing.org/one/topic/how-do-i-install-rxtx-2-2pre1-jar-on-windows-7.html#25080000000981023.html

I followed the instructions and the error disappeared.

I will try to convert the teapot file when I'm in the lab and let you know
if it works.

Great. Once the hardware arrives I will try to jog the axes without
printing. I see an Eagle schematic, but is there an Eagle .brd file that is
successful? I am trying to make my own PCB board for elegance, but I'm
worried something will cross incorrectly and cause hours of frustration...
2.

I ordered the belts from SDP-SI as per the BOM in the documentation,
but I see that there is a huge belt that looks too large for the printer
(2218mm)? In terms of the small belts, here's a screen shot of what I mean
by the small belts.

[image: image]
https://cloud.githubusercontent.com/assets/13054695/8382341/64ffac3e-1bef-11e5-9db4-5adb85e2b054.png

I looked again and found small belts that will work.. guess I didn't look
hard enough. I will order the correct sizes as I build the printer.


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

The diagram has been updated!

On Sat, Jun 27, 2015 at 12:53 PM, Alex Budding [email protected]
wrote:

COM port behavior on windows is a bit quirky. I'll add some information
about the RXTX upgrade.

There is no .brd available. Currently there is a error in the schematics,
I'll update is asap. Could you share the design of the PCB when it's
finished?

The huge belt isn't used as such, it has to be cut to length and tensioned
using the clamping parts. The smallest belt should fit. The chassis has
slotted holes to make it fit.

On Friday, June 26, 2015, KH-Xavier [email protected] wrote:

Thanks for the quick response.

  1. I changed the serial communication to the correct COM port (next
    time I am in the lab I can provide which lines I changed), but the
    Processing window allowed me to select Serial #2
    #2 (COM6) with ease.
    However, I then received an "RXTX version mismatch" error, so a quick
    Google led me to

http://forum.processing.org/one/topic/how-do-i-install-rxtx-2-2pre1-jar-on-windows-7.html#25080000000981023.html

I followed the instructions and the error disappeared.

I will try to convert the teapot file when I'm in the lab and let you
know if it works.

Great. Once the hardware arrives I will try to jog the axes without
printing. I see an Eagle schematic, but is there an Eagle .brd file that is
successful? I am trying to make my own PCB board for elegance, but I'm
worried something will cross incorrectly and cause hours of frustration...
2.

I ordered the belts from SDP-SI as per the BOM in the documentation,
but I see that there is a huge belt that looks too large for the printer
(2218mm)? In terms of the small belts, here's a screen shot of what I mean
by the small belts.

[image: image]
https://cloud.githubusercontent.com/assets/13054695/8382341/64ffac3e-1bef-11e5-9db4-5adb85e2b054.png

I looked again and found small belts that will work.. guess I didn't look
hard enough. I will order the correct sizes as I build the printer.


Reply to this email directly or view it on GitHub
#35 (comment)
.

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Thanks for that.

It looks like the only change is the HP connector? Can you confirm that Output 5 of U6 is disconnected?

Also, as an aside, I understand the reset button, but what is the A0(RX) button for..?

image

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

No, that's not correct, thanks for checking out the complete diagram. This
is how the wiring should be. I've commited the update.

[image: Inline image 1]

The only change (prior this hickup) was in this area:

[image: Inline image 2]

On Sat, Jun 27, 2015 at 7:10 PM, Kevin [email protected] wrote:

Thanks for that.

It looks like the only change is the HP connector? Can you confirm that
Output 5 of U6 is disconnected?

[image: image]
https://cloud.githubusercontent.com/assets/13054695/8393098/2024fffa-1cbd-11e5-8ce8-7259dc13086d.png


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

For some reason your images aren't showing. I'll work on a .brd from your new .sch file.

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

I made it to the lab today and as promised, this is what I changed in the code...

Under PWDR_GUI_V0_3.pde > Serial

String[] comList;
int selectPort;
boolean serialSet = false;
Serial arduinoSerial;

String serialString = "Choose the correct Arduino COM port...";

void startSerial(){
arduinoSerial = new Serial(this, "COM6", 9600);
arduinoSerial.bufferUntil(10);
serialSet = true;
serialString = "Serial port #"+selectPort+" connected";

The only thing I changed was to hard code "COM6", rather than selecting it.

I tried converting the Utah Teapot and it worked flawlessly.... I didn't bother trying to send the data because there are no electronics yet.

I will be uploading the .brd shortly.

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Also, Boreaz published a different schematic for the HP Connector in Issue #22. What's the difference between that and the one you published a few days ago?

Which end of the connector is labelled 16? On my cable, two pins on the end are connected as below, which pin does this correspond to? Are they labelled 1 to 16 or 16 to 1?

image

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Hi there,

I've been working on Pwdr again and the PCB has been hooked up, along with the motor drivers.

When I use the Processor program, it won't let me select the correct COM. I see the available COM ports, but when I click the box nothing happens. Even after I changed the code above, it still says Arduino not connected. This is with or without the PCB...

EDIT:

I noticed that selecting the wrong COM worked (processing would let me select COM 3, followed by crashing), so I disabled COM3 in the device manager. I'm not even sure what it was for. After I did that, I was able to select COM6 with a Serial Connection established.

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Could I please get an update?

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

Sorry, I returned from vacation this week, your message was quite down the
large pile of to-do's.

Here is an image of the numbering on the ribbon, print head and catridge
holder:
printer head pin layout

I'm quite puzzled now about the schematics. Currently, I don't have
physical access to my Pwdr machine in order to check it. Maybe Boraz can
confirm his design works? Or maybe it might even be safer to check on the
old layout (
https://github.com/Pwdr/Pwdr-Model-0.1/blob/6084e1437b6733d2ed041ac12901771d7d181411/Electronics/Pwdr-Circuit-0.1.pdf
)

Concerning the COM issue: can you connect to the Arduino using a simple
Processing sketch? On what platform are you? Have you installed the RTRX
update?

Alex

On Thu, Aug 6, 2015 at 6:22 PM, Kevin [email protected] wrote:

Could I please get an update?


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

No worries.. you're just my only savior at this point!

For some reason the image won't show.. can you hotlink it?

The COM issue has been sorted out. I can connect now... but now the Utah Teapot is giving me the Array Index Out of Bounds error... I'm going to try and get some coding colleagues to look at it if possible. I haven't touched the code and it was working before.

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

I fixed the image in my previous post.

I'm not 100% sure the teapot I linked does work, here is a link to the teapot I always use: http://wetterhorn.nl/teapot.stl

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

My schematics was based on this:

image

Coming from DYI Inkjet Printer (http://www.thingiverse.com/thing:8542)

But that doesn't match with the numbering of the ribbon cable. Vaguely, I remember the connector Conn_16_hp_q2347A to be the socket for the ribbon. So the numbering in the schematic should be like in the picture of the ribbon (NC/NC/COM/3/4/5/2/1/12/11/10/9/6/7/8)

Numbering from the right sight of the Darlington array goes from 1 to 16. Would you manage to put together the scheme? Otherwise, I'll try to arrange it in a few days.

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Thanks for that. I'll put the schematic together for you in the next day or so and post it here for you to check. Right now I'm trying to get the files to send to the SD card... I'll keep you posted.

Thanks again.

from pwdr-model-0.1.

Boreaz avatar Boreaz commented on August 9, 2024

Hi, I confirm that this scheme https://cloud.githubusercontent.com/assets/1730691/9117835/f5ef99c8-3c6c-11e5-9318-7f5fb3c0e319.jpg is correct, I don't remember now but you may need to change only the numbering of the nozzles in the firmware in the reverse order.

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

No problem, I'm pleased I could help you.

BTW: the send button in the GUI doesn't work. You have to manually copy the
files to the SD card (sending them over the serial connection would take
ages
). Maybe I should fix that...

On Thu, Aug 6, 2015 at 8:35 PM, Kevin [email protected] wrote:

Thanks for that. I'll put the schematic together for you in the next day
or so and post it here for you to check. Right now I'm trying to get the
files to send to the SD card... I'll keep you posted.

Thanks again.


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Here's the sketch I made with the array connected to a pin connector. The connector is labelled as the ribbon cable. The sketch is based off of Boreaz's setup.

image

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Hi there,

Do you know what current the ink cartridge draws? There was no specification on the 24V power supply, so I found one laying around the lab. It was rated for 4.5A. I powered it up and the Arduino exploded haha.

I thought the inkjet would have internal resistors, but I guess not...

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

The inkjet draws a real minimum of power. Did you separate the inkjet
circuit from the Arduino circuit?

On Mon, Aug 10, 2015 at 6:35 PM, Kevin [email protected] wrote:

Hi there,

Do you know what current the ink cartridge draws? There was no
specification on the 24V power supply, so I found one laying around the
lab. It was rated for 4.5A. I powered it up and the Arduino exploded haha.

I thought the inkjet would have internal resistors, but I guess not...


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

I had a PCB printed and I think there was a common connection somewhere,
otherwise it doesn't make sense.

I'll redo it the old fashioned way with a protoboard and see what happens
then.
On Aug 10, 2015 11:50 AM, "Pwdr" [email protected] wrote:

The inkjet draws a real minimum of power. Did you separate the inkjet
circuit from the Arduino circuit?

On Mon, Aug 10, 2015 at 6:35 PM, Kevin [email protected] wrote:

Hi there,

Do you know what current the ink cartridge draws? There was no
specification on the 24V power supply, so I found one laying around the
lab. It was rated for 4.5A. I powered it up and the Arduino exploded
haha.

I thought the inkjet would have internal resistors, but I guess not...


Reply to this email directly or view it on GitHub
<#35 (comment)
.


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

I'm planning on attending MS&T in Ohio; I was too late to submit a paper, but I was accepted for a poster. I'd like to highlight my work on various printers (Pwdr being one of them). Could you give me the names of the people responsible? I found a paper by Alex Budding, would that be yourself?

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

Yep, that's me. Please cite to that paper. Could you provide a link to your
poster?

On Tuesday, August 11, 2015, Kevin <[email protected]
javascript:_e(%7B%7D,'cvml','[email protected]');> wrote:

I'm planning on attending MS&T in Ohio; I was too late to submit a paper,
but I was accepted for a poster. I'd like to highlight my work on various
printers (Pwdr being one of them). Could you give me the names of the
people responsible? I found a paper by Alex Budding, would that be yourself?


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

Sure thing, once the poster is drafted..

Everything is working now.. kind of. The ink cartridge smokes when it's ejecting ink. Not sure if that's normal. I lowered the voltage down to 20V and it still does the same thing. Also, the jets release into a spray, is that normal as well? See below. Is there a way to test each nozzle separately?

I realized my problem was a bad PCB. Everything was crossed and messed up, even though the sketch looks good... who knows. I hard-wired everything by hand.

20150814_120901

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

What's the distance between the nozzles and the paper? When it's more than
(roughly) one centimeter, it sprays.

But! The cartridge definitely shouldn't smoke, were is the smoke coming
from?

On Fri, Aug 14, 2015 at 8:10 PM, Kevin [email protected] wrote:

Sure thing, once the poster is drafted..

Everything is working now.. kind of. The ink cartridge smokes when it's
ejecting ink. Not sure if that's normal. I lowered the voltage down to 20V
and it still does the same thing. Also, the jets release into a spray, is
that normal as well? See below. Is there a way to test each nozzle
separately?

I realized my problem was a bad PCB. Everything was crossed and messed up,
even though the sketch looks good... who knows. I hard-wired everything by
hand.

[image: 20150814_120901]
https://cloud.githubusercontent.com/assets/13054695/9280708/61aaade0-427d-11e5-82e5-c4b78365af96.jpg


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

I moved the paper closer by hand and it was a stream... that was an easy fix, thanks.

As for the smoke, it's coming from the nozzles. Here's a picture, you can see the smoke, slightly, against the black plastic near the nozzles. It's only when ink is being jetted. No clue. I'm tempted to just leave it, but I don't want a colleague to be subjected to an ink grenade.

Again, I raised the voltage slightly to see what would happen and ink jets at ~20V instantly, but smoke still happens. Maybe the current is too high? Not sure what throwing resistors down would do.

image

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

Looks pretty cool, but indeed, you might not want to risk redecorating your
office.

Couple of things to try: to lower the voltage or even adjusting the timing
in the Arduino program. Measure the resistance and compare with a pristine
cartridge.

PS: Have a look at this: microwavecam.com/Videos/Misc/color ink cartridge
211b.wmv :-)

On Mon, Aug 17, 2015 at 5:41 PM, Kevin [email protected] wrote:

I moved the paper closer by hand and it was a stream... that was an easy
fix, thanks.

As for the smoke, it's coming from the nozzles. Here's a picture, you can
see the smoke, slightly, against the black plastic near the nozzles. It's
only when ink is being jetted. No clue. I'm tempted to just leave it, but I
don't want a colleague to be subjected to an ink grenade.

Again, I raised the voltage slightly to see what would happen and ink jets
at ~20V instantly, but smoke still happens. Maybe the current is too high?
Not sure what throwing resistors down would do.

[image: image]
https://cloud.githubusercontent.com/assets/13054695/9308964/1e653e44-44c4-11e5-98b7-45db06713435.png


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

Boreaz avatar Boreaz commented on August 9, 2024

@KH-Xavier Wow this is scary, try to increase this https://github.com/Pwdr/Pwdr-Model-0.1/blob/master/Arduino/PwdrFirmware2_0/voidsController.ino#L69

from pwdr-model-0.1.

KH-Xavier avatar KH-Xavier commented on August 9, 2024

@Pwdr - your video would definitely be what our lab would have looked like if I let this cartridge run...

@Boreaz - I increased the value, but anything higher than 1000 and the ink just turns into big droplets and makes a mess; the smoke is also still there... I think it might be a damaged cartridge from all the smoke earlier. I ordered new ones, let us see what happens then.

from pwdr-model-0.1.

soulkiller2001 avatar soulkiller2001 commented on August 9, 2024

Hello!I just met some problem.When I try to convert my model,it just show error as~~~Can you tell me how to solve this problem?
qq 20151224142710

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

It has got something to do with different STLs. Unfortunately, I haven't
been able to fix it... :-(

Please try another STL and see whether it works

On Thursday, 24 December 2015, soulkiller2001 [email protected]
wrote:

Hello!I just met some problem.When I try to convert my model,it just show
error as~~~Can you tell me how to solve this problem?
[image: qq 20151224142710]
https://cloud.githubusercontent.com/assets/16148100/11990589/c6741560-aa4a-11e5-9b59-97f06bac6b19.png


Reply to this email directly or view it on GitHub
#35 (comment).

from pwdr-model-0.1.

kelyaman avatar kelyaman commented on August 9, 2024

hi guys,

can anyone explain this lines, i have got a Problem to adjust my Steppers

// Size of steps for stepper motors ( steps pro revolution
const int stepX = 21; //21; // 0.09433962264 mm per step (59.6mmPI/1600)
const int stepY = 250; //500; // 0.09433962264 mm per step (59.6mmPI/1600)
const int stepZ = 120; //120; // 0.1mm per full stap (10*0.01)

// Size of steps when jogging
const int jogStepY = 1000;
const int jogStepX = 500;
const int jogStepZ = 250;

// Size of machine in steps. Type long because number of steps > int (2^15)
const long build_piston_width = 11000/stepX; //11000/stepX; //2000/stepX total width: 14800
const long build_piston_length =28000/stepY; // 28000/stepY; // total length 76000
const long distance_roller_nozzle = 30000; //30000;
const long piston_depth = pwdrconfig[3]; // The depth of the part is defined by the preprocessor
const long build_piston_end_stop = 76000; //76000; // Absolute end of the machine

from pwdr-model-0.1.

Pwdr avatar Pwdr commented on August 9, 2024

from pwdr-model-0.1.

kelyaman avatar kelyaman commented on August 9, 2024

from pwdr-model-0.1.

kelyaman avatar kelyaman commented on August 9, 2024

pleez I have a question, do I need a Library to control my Ink,

whats mean those lines:

void spray_ink( byte lower_nozzles, byte upper_nozzles) {
//lower_nozzles = 1-8 - PORTA
for(int i = 0; i <= 7; i++){
byte mask = 1<<i;
if(lower_nozzles & mask){
PORTA |= mask; delayMicroseconds(5);
PORTA &= ~mask; delayMicroseconds(1);
}
}
//upper_nozzles = 9-12 - PORTC using pins 4,5,6,7 so 4-7 not 0-3
for(int i = 4; i <= 7; i++){
byte mask = 1<<i;
if(upper_nozzles<<3 & mask){
PORTC |= mask; delayMicroseconds(5);
PORTC &= ~mask; delayMicroseconds(1);
}
}

from pwdr-model-0.1.

bazrabazara avatar bazrabazara commented on August 9, 2024

i have problem with convert stl file. I also tried teapot.stl file. and which CAD program did you draw?.are there any solutions?.

from pwdr-model-0.1.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.