Jump to content

Want to check if its possible to do something with arduinos

cadabri

Hey guys, I am looking to make a custom camera slider using stepper motors and Arduinos, but I wanted to see if it is possible to do what I want. Most of the ones I see online, use a system where the motor and its controller directly connect to a controller. I was wondering if it would be possible to instead, connect them to a wireless card or something, which then connect back to the controller, so the controller can connect to different accessories as I build my own ecosystem (Such as motorized turntables). The video below I roughly what I am basing my design off of, but I would like the pan tilt head to be removable, to put on a tripod independently, and so I would like it to be individually powered by a battery. So the slider would be one unit, and the pan tilt another. 

 

Would this be possible with a multiple wireless cards connecting to some sort of remote?

 

Also, he has it where he hand controls the slider, and can set a start and stop point. How difficult / possible would it be to make it where I can set key points to make movements? Thanks!

 

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

41 minutes ago, cadabri said:

I was wondering if it would be possible to instead, connect them to a wireless card or something, which then connect back to the controller, so the controller can connect to different accessories as I build my own ecosystem (Such as motorized turntables).

You could use multiple arduinos. I don't think a motor driver/controller can start a wireless connection. But arduinos can using a WLAN shield. There are also smaller and faster alternatives to arduino like the "Teensy 3.2" for example. 
 

So you could make one arduino (or other controller) for each stepper motor as slaves.
And one master arduino/raspberry pi/pc to control them all.

 

The slave arduinos can act as webservers which have their own IP in your network.
The master is a network client, which calls the IP and sends data using the GET method.

The called slave can then receive this GET data and do something.

My build:

CPU

Intel Core i7 9700 8x 3.00GHz So.1151

 

CPU cooler

be quiet! Shadow Rock Slim

 

Motherboard

MSI B360-A PRO Intel B360 So.1151 Dual Channel DDR4 ATX

 

RAM

16GB (4x 4096MB) HyperX FURY black DDR4-2666

 

GPU

8GB Gigabyte GeForce RTX2070 WindForce 2X 3xDP/HDMI

 

SSD

500GB Samsung 970 Evo Plus M.2 2280

 

HDD

4000GB WD Red WD40EFRX Intellipower 64MB 3.5" (8.9cm) SATA 6Gb/s

 

Power Supply

bequiet! Straight Power 750W Platinum

 

Case

Fractal Design Define R6
3x bequiet! Silent Wings 3 PWM

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, suedseefrucht said:

You could use multiple arduinos. I don't think a motor driver/controller can start a wireless connection. But arduinos can using a WLAN shield. There are also smaller and faster alternatives to arduino like the "Teensy 3.2" for an example. 
 

So you could make one arduino (or other controller) for each stepper motor as slaves.
And one master arduino/raspberry pi/pc to control them all.

 

The slave arduinos can act as webservers which have their own IP in your network.
The master is a network client, which calls the IP and sends data using the GET method.

The called slave can then receive this GET data and do something.

That was kinda what I was getting towards, with each "Module" (The pan/tilt head, or the slider) having its own little cluster of electronics to talk to one master. I wasn't sure exactly what wireless card to get. I have seen some wireless cards being directly coded to, such as in the video attatched, so I'm not sure if something like that would be best or whatever. I just wasn't sure if a master arduino or pi would be able to pick them all up and talk to them at the same time or not. 

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

53 minutes ago, cadabri said:

I just wasn't sure if a master arduino or pi would be able to pick them all up and talk to them at the same time or not. 

 

I rethought my idea and it could be pretty slow to send to call an URL every time you want to send data.

But you can use the slave arduinos as webservers.

Then the master arduino/rpi/pc connects to the servers and can send data using TCP.

Arduino master:

setup:

EthernetClient slave1;

EthernetClient slave2;

Ethernet.begin(...);

slave1.connect(slave1_ip, 80);

slave2.connect(slave2_ip, 80);

loop:

slave1.println("Your message to slave1");

slave2.println("Your message to slave2");

 

Arduino slave:

setup:

Ethernet.begin(...);

EthernetServer slave_server = EthernetServer(80);

slave_server.begin();

loop:

EthernetClient client = slave_server.available();

if(client)

{

while(client.available())

{

char mychar = client.read();

// receive your command here

}

}

My build:

CPU

Intel Core i7 9700 8x 3.00GHz So.1151

 

CPU cooler

be quiet! Shadow Rock Slim

 

Motherboard

MSI B360-A PRO Intel B360 So.1151 Dual Channel DDR4 ATX

 

RAM

16GB (4x 4096MB) HyperX FURY black DDR4-2666

 

GPU

8GB Gigabyte GeForce RTX2070 WindForce 2X 3xDP/HDMI

 

SSD

500GB Samsung 970 Evo Plus M.2 2280

 

HDD

4000GB WD Red WD40EFRX Intellipower 64MB 3.5" (8.9cm) SATA 6Gb/s

 

Power Supply

bequiet! Straight Power 750W Platinum

 

Case

Fractal Design Define R6
3x bequiet! Silent Wings 3 PWM

Link to comment
Share on other sites

Link to post
Share on other sites

24 minutes ago, suedseefrucht said:

 

I rethought my idea and it could be pretty slow to send to call an URL every time you want to send data.

But you can use the slave arduinos as webservers.

Then the master arduino/rpi/pc connects to the servers and can send data using TCP.

Arduino master:

setup:

EthernetClient slave1;

EthernetClient slave2;

Ethernet.begin(...);

slave1.connect(slave1_ip, 80);

slave2.connect(slave2_ip, 80);

loop:

slave1.println("Your message to slave1");

slave2.println("Your message to slave2");

 

Arduino slave:

setup:

Ethernet.begin(...);

EthernetServer slave_server = EthernetServer(80);

slave_server.begin();

loop:

EthernetClient client = slave_server.available();

if(client)

{

while(client.available())

{

char mychar = client.read();

// receive your command here

}

}

Is there a faster way?

Link to comment
Share on other sites

Link to post
Share on other sites

5 minutes ago, cadabri said:

Is there a faster way?

This is the faster way:
 

 

30 minutes ago, suedseefrucht said:

Then the master arduino/rpi/pc connects to the servers and can send data using TCP.

Arduino master:

setup:

EthernetClient slave1;

EthernetClient slave2;

Ethernet.begin(...);

slave1.connect(slave1_ip, 80);

slave2.connect(slave2_ip, 80);

loop:

slave1.println("Your message to slave1");

slave2.println("Your message to slave2");

 

Arduino slave:

setup:

Ethernet.begin(...);

EthernetServer slave_server = EthernetServer(80);

slave_server.begin();

loop:

EthernetClient client = slave_server.available();

if(client)

{

while(client.available())

{

char mychar = client.read();

// receive your command here

}

}

 

If you transfer data using the URL GET method, you would have to start a new connection every time you send data. That's slow.
The TCP method is faster because you only connect once and then send data through your network using TCP.
One TCP command like "slave1.println("Your message to slave1");" takes like 1 ms to be sent.

My build:

CPU

Intel Core i7 9700 8x 3.00GHz So.1151

 

CPU cooler

be quiet! Shadow Rock Slim

 

Motherboard

MSI B360-A PRO Intel B360 So.1151 Dual Channel DDR4 ATX

 

RAM

16GB (4x 4096MB) HyperX FURY black DDR4-2666

 

GPU

8GB Gigabyte GeForce RTX2070 WindForce 2X 3xDP/HDMI

 

SSD

500GB Samsung 970 Evo Plus M.2 2280

 

HDD

4000GB WD Red WD40EFRX Intellipower 64MB 3.5" (8.9cm) SATA 6Gb/s

 

Power Supply

bequiet! Straight Power 750W Platinum

 

Case

Fractal Design Define R6
3x bequiet! Silent Wings 3 PWM

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, suedseefrucht said:

This is the faster way:
 

 

 

If you transfer data using the URL GET method, you would have to start a new connection every time you send data. That's slow.
The TCP method is faster because you only connect once and then send data through your network using TCP.
One TCP command like "slave1.println("Your message to slave1");" takes like 1 ms to be sent.

Ohh okay, so basically with that code it will just operate the slaves that just run whatever the master tells them to?

Link to comment
Share on other sites

Link to post
Share on other sites

I would worry more about the mechanical aspects of this; it's quite hard to get the smoothness of a professional slider with a DIY solution. Same goes for other camera positioning systems like tripods, cranes etc. even the tiniest vibration is visible on camera.

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, akio123008 said:

I would worry more about the mechanical aspects of this; it's quite hard to get the smoothness of a professional slider with a DIY solution. Same goes for other camera positioning systems like tripods, cranes etc. even the tiniest vibration is visible on camera.

Well, my other camera slider is extremely simple, just four wheels on carbon fiber rods. I actually know a photographer who makes all his stuff, in a manor very similar way to this to shoot commercials, and sells a kit to do it (Though he uses an acme leading screw instead of the timing belt I am planning on using) and a few other minor things. I don't think the mechanical is the main issue, I think the coding is by far going to be the hardest part. 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×