The Greenhouse Project

Hello World.. Im new to the Arduino world and looking for advice for a project which I hope to solve by the use of the Arduino world. To introduce myself: Im a technician working in the industrial automation industry, managing customer support for one of the big solution provider. I have some knowledge in programming and general technical skills with electronics and mechanics. I have a fairly good equipped workshop.

My project: I want to build a XYZ picn place machine for a whole room 3,5 x 3,5 x 3m. I know, that there are several profession solutions around, but thats out of range of my hobby budget, so I want to build this from scratch. Something like a very big 3D printer or milling machine. Because I need to use 7 stepper motors to drive this monstrum I plan to use several small arduino boards to control this. Each motor will be controlled by it`s own arduino board and a dedicated stepper motor driver and will have a seperate power supply. Because missed steps are a big problem in my setup (X axis will be driven by 4 motors), I need to use optical encoder on every motor which must be read by an interrupt routine. The 7 arduino/motor boards should be controlled by a master device (possibly also an Arduino).

I`m looking for a communication solution to connect these 8 systems together which does not affect the generation of the stepping pulses and the encoder readout. The communication must be "by wire", I cannot use any wireless solution for this project!

I did several searches on this forum during the last days, but I did not find something which will match.

It would be nice if someone has some ideas to manage this.

Best Regards


Try a search using google instead. The forum's search function is not good.

Thank you for your answer. But isn`t the forum search based on Google ?


May I ask why you need 5 motors for the x-axis. I imagine you could use three motors for the xyz movement. And one for the grabber placer. You could have one Arduino in charge of the 3 axis motors, and one Arduino in charge of picking, placing, and sensing the load. One master Arduino would take care of any user interface needed as well as keeping track of where all the plants are.

The communication would be through serial. The master Arduino would communicate with the grabber, and mover. The grabber would be in the grabber arm. The mover and master would be in a control panel. Communication would be pretty light because the Master would give the 3Axis a set of coordinates, the 3Axis would tell the master it arrived, the Master would tell the grabber to grab...

The wire would be kept safe in a device resembling this.

If you need to stay precise you could have them home themselves every couple placements with three micro switches. I'm not a motor expert, but I imagine a sufficiently strong motor won't skip more than a step every few pick/place cycles.

This isn't something you asked about, but A raspberry pi and old monitor set up in a dry place may make a really cool user/machine interface, and the raspberry pi could run more advanced software such as a sql server for the location of the plants.


Hi Jon, and thanks for your detailed answer. Let me explain the project more precise, then I hope it should become clear why I need these numbers of stepper motors. The whole machine will be built into a room, the X-axis made of makerslide profiles, two on each sidewall, one at the floor, the other one at the ceiling. I have to keep the mass of the y- and z-axis as low as I can, so I plan to use aluminium truss which is used for lighting and stage to have a rigid but lightweight construction. In the room there are twelfe storage racks with 6 levels each. On these levels, the plants are stored in small vented plastic cups, 96 on every level. The small plants grow on a special sterile growing medium and are prone to being contaminated by bacteria or fungi. Every level will be lit by a full spectrum LED array to have the perfect lighting conditions for growing the plants. The whole room will be heated or cooled to a constant temperature and hermetically closed angainst the environment. The room will also have a controlled athmosphere with 4 times the carbon dioxid level as normal to speed up the grow rate. To keep the rate of infections low, no human presence is allowed in this room and there is only one exchange station with an air lock, where the plastic container are fed and removed from the climate room in special trays. Every plastic container will have a small RFID label, where the whole vita of that plant is stored. The room will carry up to 9K of these plants. To handle this number of plants without a huge manpower, I`m planning this system.

On the place of the picing arm, there is another XYZ system planned, which can handle the plants on each level and which will use a tray for commissioning batches of plants for rework or transport.

The whole system will be controlled by a software system written in Delphi running on three workstations and the information is stored on two redundant MySQL databases running on two Banana Pi server (as you assumed), which are already running on my desk :-)

Because there is this second pic n place machine inside the big one which covers the whole room, I have a mass of about 25 kg to be dynamically moved and I don`t think, that one motor on each axis will drive this system reliably. (Want to use tothed drive belts for the main three axis) I fear, that the belts will wear out in no time, because this system will run and move 24/7 because every plant will be stored and removed from the room 10 times during a 8 week long generation period. This adds to about 100 pic n place operations during an hour.

Your idea of using serial data exchange was my first idea also, but I think the cable length is the limiting factor, as the standard serial line is limited to abt. 15m.

I hope that is more info to chew on :-)

Br Dieter

@Greensprings, Thank you for you answer, but this is not a question of brainpower, but the usage of an arduino is limited by the number of ISR routines which can be handled with one board, (limited to two, which means, I can controll one optical encoder with one board without getting into trouble, messing the interrupts.) So my idea was, to use a dedicated Arduino for every motor drive and let them be controlled by a master brain... Also the code can be kept simple for every board, as the functions are split into handling the motor, communication and control. This makes debugging much more easier in a complex system.

Br Dieter

I suggest you use RS485 to connect everything up, will handle the distance you suggest easily.
Can have 1 master and a bunch of slave, master can poll them all, or you can set up a shared interrupt line so when a slave needs to get the master’s attention it can.
RS485 describes the electrical connections. The protocol you use to set up master/slave or whatever is a seperate software function.

Here’s a couple application notes to get you started.

AN763 RS485 termination.pdf (234 KB)

AN723 RS485 fail safe terminations.pdf (155 KB)

AN-960 Analog Devices RS485.pdf (246 KB)

Hello CrossRoads, thank you for your answer and the application notes. These small RS485 transceiver should find their place on a small prototyping area easily which is attached to an arduino Micro.

But is the Micro capable of handling the needed protocol together with the stepping driver as the RS485 Library is quite memory consuming ?

I found a forum thread dealing with the SIMPLE MODBUS library and hope to find more info there....

Br Dieter