Abstract
The Modular Automated Crop Array Online System (MACARONS) is a scalable, customisable and open-sourced platform designed for plant care, monitoring, and transportation. It offers specific dosing for individual plants, automated data logging of temperature, humidity, and images, and custom behaviours programmable in Python. Monitoring and control of the system is achieved through a web-interface. The system was validated by autonomously caring for five lettuce plants over a five-week period. This was done indoors under artificial lighting and uncontrolled ambient conditions. The system is estimated to perform the tasks required 30% faster than a human operator and can handle payloads of up to 5 kg with a maximum footprint of 750 mm × 500 mm. The validated system supports 12 payloads and can be easily scaled to accommodate more. The designs are released and meets the requirements of CERN-OSH-W, which includes step-by-step graphical build instructions and can be built at a cost of GBP 2241.72 (USD 2793.82). The system aims to provide cost-effective automation to reduce labour costs and provide precise control of irrigation and nutrients. The current system is limited by the dosing time and the space-use efficiency. We provided future directions and modifications that can be made to address this.
Keywords: Vertical farming, Automation, Ambient condition monitoring
Graphical abstract
Specifications table
| Hardware name | MACARONS-2 |
|---|---|
| Subject area | |
| Robotics | |
| Plant Sciences | |
| Agricultural Sciences | |
| Hardware type | |
| Plant Imaging | |
| Ambient Condition Sensing | |
| Plant Transport and Monitoring | |
| Precision Nutrient Dosing | |
| Closest commercial analog | No commercial analog is available. |
| Open source license | CERN-OHL-W: Hardware, GPL-3: Software, CC-BY4: Documentation |
| Cost of hardware | GBP 2241.72 (USD 2793.82) |
| Source file repository | http://doi.org/10.17632/2p7mbbhn47.1 |
1. Hardware in context
1.1. Context
The global population is rapidly growing, with projections indicating it will reach 9.7 billion by 2050. Around 70% of which will be concentrated in urban areas. Meeting the increase in food demand requires an estimated 70% increase in overall food production, particularly in developing nations [1]. Farmland however, is diminishing due to urban expansion and modern farming practices which leads to soil degradation and water contamination [2], [3]. Traditional agriculture’s heavy reliance on freshwater resources exacerbates water scarcity [4], and climate change poses additional challenges with unpredictable weather patterns [3], [5]. To address these issues and ensure food security, research and development of resource-efficient, productive, and climate-resilient agricultural practices are necessary. Controlled environment vertical farming holds promise as a solution that allows farming to be practised year-round anywhere, even in urban areas where the demand is highest.
Vertical farming is an approach to agriculture which maximises space utilisation by expanding cultivation in the vertical direction [5]. This is often done in a controlled environment agriculture (CEA) settings indoors, where environmental factors are controlled. This includes temperature, humidity, and air circulation, which are precisely regulated using HVAC (Heating, ventilation, and air conditioning) systems. Artificial lighting is also provided by LEDs [6], [7]. In general, plants are cultivated without soil, and nutrient solutions are delivered to the roots through various means. This method of cultivation is termed hydroponics. While improving nutrient uptake and overall crop yield, this method utilises around 2%–10% of water resources compared to conventional agricultural practices [8]. This type of controlled environment vertical farm will be referred to collectively as vertical farms for simplicity.
Despite its potential, vertical farming faces significant challenges particularly in operating expenses, which have led to downsizing and bankruptcies of several well-capitalised vertical farms [9], [10], [11], [12], [13]. Energy contributes significantly to the operating expenses in vertical farms with the most significant contributions coming from artificial lightning, humidity, ventilation and air-conditioning [14]. Labour also poses a significant challenge, often representing the highest operational expense [15]. There is therefore a demand for a system that reduces labour and accelerates research and development into optimising vertical farm’s energy usage.
Another significant challenge in the sector is the high capital expenditure when compared to traditional agriculture [3], [15], [16], [17]. This substantial initial investment is primarily associated with the development of infrastructure, including lighting, racking, grow systems, and buildings [18]. The sector is also characterised by a general lack of collaboration and data sharing among its players [19]. The industry’s secretive nature, coupled with a focus on proprietary technologies, inhibits interoperability and discourages standardisation. This leads to bespoke and custom solutions for each farm, which keeps costs high.
1.2. Related systems
Currently, most vertical farming systems focus on environmental control and monitoring, while the transport, loading, and unloading of crops into the vertical farm infrastructure are carried out manually or with large human-operated machines for assistance [12], [20], [21], [22]. These systems lack flexibility and are not open-sourced. Container box farms also fall under this category, but offers a fast and convenient deployment option in open areas [3]. They are however not flexible, making them challenging to incorporate into existing structures [23], [24], [25]. Similarly, these systems are not open-sourced. It is estimated that labour makes up around 56% of the operational costs in farms like these, 15% of which is associated with plant transportation [26]. Automating these tasks could therefore save around 8.4% of operational costs.
Large-scale vertical farms, on the other hand, generally automate transporting, loading, and unloading of crops, utilising dedicated conveyor belts and robotic systems [27], [28]. This level of automation requires specialised hardware similar to those used in warehouses and is therefore very costly. A typical automated solution can cost in excess of GBP 1,000,000 (USD 1,246,285) [29] with a typical industrial robot costing over GBP 30,000 (USD 37,388) [30]. Furthermore, automation systems used in large warehouse type farms are often not feasible in smaller scale facilities due to space constraints. Automated seeding and harvesting are also common practices in such large-scale operations. Another setting where large scale automation is employed is in dedicated plant phenotyping facilities [31]. Facilities at this scale are expensive to build and bespoke.
An example of indoor farming automation technology is the Iron Ox [32] system where multiple mobile robots move under crop platforms, picking them up and moving them to the watering and harvesting stations. Automation at smaller scales include the FarmBot [33], an open-sourced project where a fixed size area houses soil for crops to be seeded, watered, weeded and monitored by a robot above it. The FarmBot is controlled and monitored wirelessly. It is however not designed for vertical farming or to scale. Area2Farms [34] has constructed a system that automates plant transportation using elevators and trays that are pushed on rollers. The system is designed to be easily retrofitted into unused urban spaces. The system is however not open-sourced.
In smaller R&D experiments, vertical farming systems from commercial settings [35] are not well suited as they are designed to keep large numbers of plants under the same conditions, and cannot be easily customised/reprogrammed. Experiments are inherently bespoke and an automated vertical farming system that is easily modified and programmed to execute custom behaviours would accelerate R&D in precision farming. These systems should also automatically log data, which is an important aspect of experiments. Automated data collection also facilitates better data curation as well as the adoption of data-driven technologies. In summary, there is demand for an open-sourced, standardised and cost-effective automation platform for the vertical farming sector. The system should be highly flexible and can be scaled/retrofitted/reprogrammed without redesign. Our previous work, MACARONS1, aims to address this [26]. MACARONS1 is an open-sourced automated plant transportation system that is wirelessly controlled and programmed through a web-browser. It is made out of cheap readily available components and can be easily scaled and retrofitted. The previous system however does not support plant-specific dosing and monitoring.
2. Hardware description
The modular automated crop array online system (MACARONS) is designed to be a modular, cost-effective and open-sourced platform for plant care, monitoring and transportation. It can be built to have any selected capacity, scaling up to a variety of sizes as required. It is also designed to be easily customised and upgraded, and is built out of easily sourced components. The system’s software is written in Python and MicroPython. It is designed for new devices and behaviours to be added through upgrades and modifications. The system offers a web-interface that can be accessed through any web-browser connected to the same wifi-network, allowing for convenient wireless control and monitoring.
MACARONS2 was developed, building upon the philosophy of its predecessor [26]: scalability, customisability, and open-sourced. MACARONS1 is a sequential access system, which means carriages must be accessed one at a time in a sequential order. This can however be inconvenient in a research environment. MACARONS2 is a random access system which allows access to every carriage at any time, providing greater flexibility in managing plants when running experiments. Similar to MACARONS1, the system comprises a mover, frames, and an elevator, which work together to automate plant transportation. Due to the different geometry, these components have been redesigned. Improvements were also made with regards to the overall robustness of the system in loading/unloading carriages. The system also includes additional features not present in MACARONS1, such as lights, cameras, and an irrigation system, making it a fully functional farm setup. A temperature and humidity sensor, and a webcam is also integrated. An overview diagram of the system is shown in Fig. 1. A schematic representation of how the different components of the system interact with each other is shown in Fig. 2.
Fig. 1.
CAD overview image of MACARONS2. Each component is separated by colour for clarity. The orange components include the mover (left), elevator-carriage (back) and carriage (right). The grey components include the shelves (left and right) and elevator (back). For clarity only one carriage is included. (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
Fig. 2.
Schematic representation of how the components of the system interact with each other. The Web Interface sends commands to the server which is then processed. The server communicates with the relevant device, which then notifies the server of its progress. The interaction between the different hardware for each command is also shown.
2.1. Frames
The frames design allows for duplication in two dimensions, as demonstrated in Fig. 3. In the system that was built and tested, the design was scaled to two floors and three horizontal units, which is shown in Fig. 1. This results in 12 available compartments for payloads. All aluminium extrusions used in the frames are of standard lengths (250 mm, 500 mm, 750 mm, etc.). The frames comprises two sides: left and right, with a gap between them. The gap allows for access of each carriage and is spaced such that the space efficiency is approximately 66%, the maximum space efficiency for a random access system. This space efficiency is defined as the ratio between the footprint that is available to grow crops and the total available footprint. A value of 66% is typical for vertical farms using shelves and racks [35]. Note however that if the allocated space per carriage is not completely filled with plants, the effective space efficiency can be much lower than this. Adjustments to the lengths of the aluminium extrusion on the carriages can be made to accommodate for this. The aluminium extrusions serve as both structural support and as the guide rails for the mover and carriages. The mover fits between the two sides of the frames, and its wheels engage with the V-slots of the aluminium extrusions. The mover fits below the carriage.
Fig. 3.
Diagram showing MACARONS2 scaling directions. Front (left) and side (right) view of the MACARONS2 built with two floors and three horizontal unit. The arrows indicate scaling directions along the vertical and horizontal direction.
The elevator design in MACARONS2 has been significantly improved to offer more stability. To allow the mover to move from the frames to the elevator-carriage, the extrusions on the elevator-carriage and the shelves align to form a continuous rail. The vertical structural support aluminium extrusions of the frames serve as the guide rail for the elevator carriage. The elevator top is adjustable to accommodate alternative electric winches with different specifications. A single infrared sensor (TCRT5000) is positioned on the elevator-carriage. By placing the sensor here, only one sensor is required and it only has to be calibrated once. This infrared sensor activates when it detects the edge of the platform that corresponds to each floor of the system. Controlling the elevator to go to a particular position is achieved by counting the number of detections given by the infrared sensor.
2.2. Carriage
The design of the carriage is shown in Fig. 4. Being constructed out of aluminium extrusion, it is simple to mount different payloads onto the carriage. Multiple end-stops have been placed in the frames to physically prevent carriages from going out of bounds, improving the robustness of the system. Additionally, rail funnels which are placed on the carriage rails and the mover improves the robustness carriage loading/unloading. These are shown in Fig. 5, Fig. 8.
Fig. 4.
CAD image of the MACARONS2 carriage. Annotated components are highlighted in orange which includes the V-wheel (1) and potential payload mount area (2). (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
Fig. 5.
CAD image of the MACARONS2 mover. Annotated components are highlighted in orange which includes the infrared sensor (1), rail funnel (2), O-ring wheel (3), ESP32CAM case (4), carriage lock (5), camera arm (6), arm pulley (7), belt tensioner (8), carriage hook (9) and the arm (10). (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
Fig. 8.

CAD image of the rail funnel. The component includes a front plate (1), an wheel gap (2) and guides (3).
2.3. Mover
The mover was designed to avoid the need for vertical lifting of the payload. This lowers the specifications required by the mover for the transportation of the payload. This increases the mover’s cost-effectiveness, compactness and ease of material sourcing. The mover is equipped with an arm that moves under the carriage and grabs onto it. The arm then moves to pull the engaged carriage onto the mover for transportation. The mover’s aluminium extrusions that are used for structural support are also used as the guide rails for the carriage. The mover has a carriage lock that then engages with the carriage, preventing movement of the carriage while on the mover. This removes the risk that the carriage may drift during movement of the mover or the elevator, which may introduce some vibrations. A similar process is followed during unloading, where the carriage lock is disengaged and the arm grabs the carriage on the mover. It then pushes the carriage onto the frames. This involves horizontal movement of the carriage and payload only. The mover is powered by a 12 V power supply which can easily be replaced with a battery pack, which is useful if multiple movers will be used within a single MACARONS2.
Moving the arms for loading/unloading the carriage requires knowing where the arms are and stepper motors seem like the natural choice for this. Standard stepper motors available (NEMA14) however has lower torque than comparable geared brushed DC motors. They also require more complex control, are more expensive and has overheating issues. 12 V geared brushed DC motors (120 RPM) were therefore used instead. An infrared sensor (TCRT5000) with markers were used under the arm to localise the position of the arms. Limit switches were also used to detect when the arms have reached their maximum limit. The arm is driven by a standard open-ended 2GT belt. A laser-cut part added at the end of the arm is used for belt tensioning. This part also serves as the physical limits for the limit switch. Castor wheels were introduced to provide support and ensure that the arms remain at the correct height during the loading/unloading operation, improving the reliability and robustness. Grabbing the carriage and locking it in place is achieved using standard SG90 servos.
3D printed wheels which includes grooves to accommodate common O-rings were used. This design choice allows for good traction, and for custom wheel sizes to be used without requiring specialised parts. The wheels were also designed to fit into the V-slot in a similar manner as V-wheels. These wheels engage directly with 12 V geared brushed DC motors (62 RPM). Note that the RPM can be chosen to fit the speed and torque requirements. Infrared sensors (TCRT5000) are used to localise the mover against the rail funnels (Fig. 8) on the frames. Controlling the mover to go to a particular position is achieved by counting the number of detections given by the infrared sensor. The mover is also equipped with an ESP32CAM. This camera can be tucked away for loading and unloading of the carriage, and can be lifted up to take side-view images of the payload using SG90 servos.
2.4. Doser
Traditional closed-loop recirculating irrigation systems generally used in vertical farms is complex and can facilitate the spread of pathogens within the system. Setting up a network of drains that collect and treat water involves multiple steps, including UV sterilisation, ozone treatment, hydrogen peroxide dosing, and various filtration processes. Moreover, maintaining water quality requires monitoring with multiple probes to detect factors such as electrical conductivity, pH levels, turbidity, and potentially specific nutrient presence. Nutrient solutions, nitric acid, and hydrogen peroxide are then precisely added based on these measurements. Furthermore, the water within the closed-loop system needs to be replaced with fresh water every 2–3 weeks [36]. This requires access to a drain to remove the water, which within the MACARONS2 build will either have to be done manually or through additional automation, adding further complexity and cost. The buildup of algae and biofilms could also interfere with crop growth and potentially clog the system, increasing the risk of failure.
In contrast, open-loop dosing provides a simpler and more reliable solution at this scale, avoiding the complications and maintenance issues associated with closed-loop systems. This involves dosing the plants with exactly the amount required according to some configuration without recirculation. By sidestepping the need for continuous water recirculation and treatment, open-loop dosing offers a simpler approach both in terms of the hardware required and the system operation. This also opens up the opportunity for plant-specific dosing, which is useful for optimising the nutrient recipes and for increasing crop uniformity through variable rate application [37]. In the open-loop dosing setup, the mover brings the plants to a doser which combines solutions from three different reservoirs: A nutrient, B nutrient and water. The concentration and volume of the desired solution can be controlled through the web interface. Peristaltic pumps are used to dose the nutrients such that the pumps do not have to directly be in contact with the solutions.
2.5. Sensor
The humidity and temperature sensors used in MACARONS2 (DHT22) are highly cost-effective, providing an affordable and fully programmable solution for data collection. This is in contrast to commercial products that generally have a lock-in effect, making it difficult to operate outside of the product’s ecosystem. These also come at a higher cost [38]. MACARONS2 also incorporates a top-down webcam (Logitech BRIO-4K) above the doser for image logging during dosing.
2.6. Custom components
The design choice for some of the custom components that may be useful in other similar builds is discussed in this section.
The MACARONS2 mover utilises multiple servos and a single servo mount was designed to be reused in all instances. This is shown in Fig. 6. The SG90 servo motors are locked into the mount using M3 bolts which also engage with M3 drop-in tee nuts that is used to mount the servo to aluminium extrusions. There is also a gap in the servo mount for the servo wires. The servo mount is 3D printed without support materials.
Fig. 6.

CAD image of the servo mount. The component includes an M3 bolt (1) and an M3 drop-in Tee nut (2). The annotated gap at the top accommodates the servo wires.
The MACARONS2 mover driven wheels require traction. This is provided by the O-ring wheel shown in Fig. 7. Two O-rings are inserted in the grooves of the O-ring wheel to provide traction. The wheel’s shape mirrors the V-wheel shape and engages with the V-slots in aluminium extrusions. The wheel size can be customised as required for different applications. The O-ring wheel is printed such that the motor shaft inserts into it and engages tightly. This component is printed without support materials.
Fig. 7.

CAD image of the O-ring wheel. The component includes a slot that engages with the motor (1) and grooves for two O-rings (2, 3).
The rail funnel shown in Fig. 8 is used to terminate carriage rails. They are also placed at the ends of the mover’s carriage rails as shown in Fig. 5. The rail funnels facilitate smooth transfer of the carriage between the carriage rails and improves robustness to potential misalignment of the rails. The front plate of the rail funnels also provide a consistent surface that interacts with the movers infrared sensors for localisation. The rail funnel also has a wheel gap that allows for V-wheels to roll pass it without obstruction by the front plates. The rail funnel is also 3D printed without support material.
2.7. Use
Potential use-cases of the system are given below.
-
•
Automated nutrient dosing experiments.
-
•
Automated data-logging of humidity, temperature and images.
-
•
Automated plant care, monitoring and transport.
-
•
Automated fetching of payloads which could be used for other forms of logistics and inventory management.
3. Design files summary
3.1. Custom parts - Fabrication
| Design filename | File type | Open source license | Location of the file |
|---|---|---|---|
| base_doser.dxf | DXF | CERN-OHL-W | Mendeley Link |
| belt_tensioner.dxf | DXF | CERN-OHL-W | Mendeley Link |
| cam_arm.dxf | DXF | CERN-OHL-W | Mendeley Link |
| mount_mover_bottom.dxf | DXF | CERN-OHL-W | Mendeley Link |
| mount_mover_top.dxf | DXF | CERN-OHL-W | Mendeley Link |
| mount_spout.dxf | DXF | CERN-OHL-W | Mendeley Link |
| bracket_mover.stl | STL | CERN-OHL-W | Mendeley Link |
| carriage_hook.stl | STL | CERN-OHL-W | Mendeley Link |
| carriage_lock.stl | STL | CERN-OHL-W | Mendeley Link |
| esp32cam_case_lower.stl | STL | CERN-OHL-W | Mendeley Link |
| esp32cam_case_upper.stl | STL | CERN-OHL-W | Mendeley Link |
| joining_plate_elevator.stl | STL | CERN-OHL-W | Mendeley Link |
| marker_elevator.stl | STL | CERN-OHL-W | Mendeley Link |
| mount_ir_sensor_elevator.stl | STL | CERN-OHL-W | Mendeley Link |
| mount_ir_sensor_mover.stl | STL | CERN-OHL-W | Mendeley Link |
| mount_motor.stl | STL | CERN-OHL-W | Mendeley Link |
| mount_peristaltic_pump.stl | STL | CERN-OHL-W | Mendeley Link |
| mount_servo_sg90.stl | STL | CERN-OHL-W | Mendeley Link |
| rail_funnel.stl | STL | CERN-OHL-W | Mendeley Link |
| servo_coupling_cam_arm.stl | STL | CERN-OHL-W | Mendeley Link |
| space_castor_wheel.stl | STL | CERN-OHL-W | Mendeley Link |
| spout.stl | STL | CERN-OHL-W | Mendeley Link |
| wheel_o_ring.stl | STL | CERN-OHL-W | Mendeley Link |
Base_doser.dxf.
File type used for laser cutting. This component is used to mount the electronics of the doser. It also provides holes for mounting to aluminium extrusions.
Belt_tensioner.dxf.
File type used for laser cutting. This component is used to put the timing belts in the mover’s arm under tension.
Cam_arm.dxf.
File type used for laser cutting. This component attaches the ESP32CAM to the mover.
Mount_mover_bottom.dxf.
File type used for laser cutting. This component is the bottom mount of the mover that holds the majority of the mover’s electronic components.
Mount_mover_top.dxf.
File type used for laser cutting. This component is the top mount of the mover which holds the arms and limit switches. It also protects the mover electronics from water.
Mount_spout.dxf.
File type used for laser cutting. This component is used to mount the spout in the doser.
Bracket_mover.stl.
File type used for 3D printing. This component is used to mount the mover mounts (top and bottom) to the aluminium extrusion frames.
Carriage_hook.stl.
File type used for 3D printing. This component is attached to the mover arms and is used to hook the carriages for loading/unloading operations.
Carriage_lock.stl.
File type used for 3D printing. This component is attached to the mover and is used to lock the carriage in place when it has been pulled onto the mover. This prevents the carriage from moving when the mover is in motion.
Esp32cam_case_lower.stl.
File type used for 3D printing. This component is the lower case of the ESP32CAM.
Esp32cam_case_upper.stl.
File type used for 3D printing. This component is the upper case of the ESP32CAM.
Joining_plate_elevator.stl.
File type used for 3D printing. This component is used to mount V-wheels to the elevator-carriage.
Marker_elevator.stl.
File type used for 3D printing. This component is used for triggering the navigation sensors on the mover (when on the elevator) and for providing the physical limits of where the mover can move to.
Mount_ir_sensor_elevator.stl.
File type used for 3D printing. This component is used to mount the infrared sensor to the elevator.
Mount_ir_sensor_mover.stl.
File type used for 3D printing. This component is used to mount the infrared sensor to the mover.
Mount_motor.stl.
File type used for 3D printing. This component is used to mount the wheel motors to the mover.
Mount_peristaltic_pump.stl.
File type used for 3D printing. This component is used to mount the peristaltic pump to the doser.
Mount_servo_sg90.stl.
File type used for 3D printing. This component is used to mount the sg90 servo to the mover. These are used for the carriage hooks and carriage locks.
Rail_funnel.stl.
File type used for 3D printing. This component is attached to the carriage rails and allows for more robust movement when transferring between the mover and the frames. It is also used the navigation sensor on the mover.
Servo_coupling_cam_arm.stl.
File type used for 3D printing. This component is used to couple the cam_arm with the servo.
Space_castor_wheel.stl.
File type used for 3D printing. This component is used as a spacer for the mover’s castor wheels.
Spout.stl.
File type used for 3D printing. This component is used for delivering the nutrient in the doser.
Wheel_o_ring.stl.
File type used for 3D printing. This component is used as the driven wheel for the mover. The grooves in the wheel hold O-rings which are easily to source. This component allows custom V-wheels with good traction to be customised.
3.2. Custom parts - Editable CAD files
| Design filename | File type | Open source license | Location of the file |
|---|---|---|---|
| base_doser.ipt | IPT | CERN-OHL-W | Mendeley Link |
| belt_tensioner.ipt | IPT | CERN-OHL-W | Mendeley Link |
| cam_arm.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_mover_bottom.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_mover_top.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_spout.ipt | IPT | CERN-OHL-W | Mendeley Link |
| bracket_mover.ipt | IPT | CERN-OHL-W | Mendeley Link |
| carriage_hook.ipt | IPT | CERN-OHL-W | Mendeley Link |
| carriage_lock.ipt | IPT | CERN-OHL-W | Mendeley Link |
| esp32cam_case_lower.ipt | IPT | CERN-OHL-W | Mendeley Link |
| esp32cam_case_upper.ipt | IPT | CERN-OHL-W | Mendeley Link |
| joining_plate_elevator.ipt | IPT | CERN-OHL-W | Mendeley Link |
| marker_elevator.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_ir_sensor_elevator.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_ir_sensor_mover.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_motor.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_peristaltic_pump.ipt | IPT | CERN-OHL-W | Mendeley Link |
| mount_servo_sg90.ipt | IPT | CERN-OHL-W | Mendeley Link |
| rail_funnel.ipt | IPT | CERN-OHL-W | Mendeley Link |
| servo_coupling_cam_arm.ipt | IPT | CERN-OHL-W | Mendeley Link |
| space_castor_wheel.ipt | IPT | CERN-OHL-W | Mendeley Link |
| spout.ipt | IPT | CERN-OHL-W | Mendeley Link |
| wheel_o_ring.ipt | IPT | CERN-OHL-W | Mendeley Link |
These files are editable CAD file versions of the files that are used for fabrication.
3.3. Assembly schematics
| Design filename | File type | Open source license | Location of the file |
|---|---|---|---|
| carriage.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame1.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame2.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame3.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame4.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame5.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame6.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame7.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame8.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame9.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame10.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame11.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame12.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame13.dwg | DWG | CERN-OHL-W | Mendeley Link |
| frame14.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover1.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover2.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover3.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover4.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover5.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover6.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover7.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover8.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover9.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover10.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover11.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover12.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover13.dwg | DWG | CERN-OHL-W | Mendeley Link |
| mover14.dwg | DWG | CERN-OHL-W | Mendeley Link |
| small_assemblies.dwg | DWG | CERN-OHL-W | Mendeley Link |
The assembly schematics accompany each step of the build instructions from the text. Points of interest (POI) are labelled with ‘(!)’ in the schematics and expanded upon in the build instructions in Section 5.
3.4. Assembly images
| Design filename | File type | Open source license | Location of the file |
|---|---|---|---|
| 1.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 2.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 3.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 4.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 5.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 6.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 7.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 8.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 9.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 10.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 11.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 12.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 13.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 14.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 15.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 16.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 17.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 18.jpg | JPG | CERN-OHL-W | Mendeley Link |
| 19.jpg | JPG | CERN-OHL-W | Mendeley Link |
The assembly images used in the build instructions in Section 5.
3.5. Circuit diagrams
| Design filename | File type | Open source license | Location of the file |
|---|---|---|---|
| doser.jpg | JPG | CERN-OHL-W | Mendeley Link |
| elevator.jpg | JPG | CERN-OHL-W | Mendeley Link |
| mover.jpg | JPG | CERN-OHL-W | Mendeley Link |
| sensor.jpg | JPG | CERN-OHL-W | Mendeley Link |
The circuit diagrams used to wire the electronic components used in the build instructions in Section 5
4. Bill of materials summary
The bill of materials for this project can be found in the project repository [39].
5. Build instructions
This section provides the step-by-step assembly instructions. Points of interest (POI) are labelled with ‘(!)’ in the schematics and expanded upon in the instructions below.
5.1. Carriage
Assemble the carriage as shown in carriage.dwg.
5.2. Frames
The assembly of the frames will begin by first assembling the two shelves, then the elevator-carriage. The two frames will then be joined together and the elevator added. The elevator-carriage will then be added to the elevator which will then be adjusted to constrain the elevator-carriage.
Start by assembling the shelves.
-
1.
Assemble the frame platform as shown in frame1.dwg. Optional washers can be placed at the POI to lift the 20 × 20 ×750 aluminium extrusion slightly. This improves the smoothness of the carriage’s movement when handled by the mover. The dimension (20 mm) adjacent to the POI can also be adjusted.
-
2.
Test that the carriage rolls smoothly along all the rails. This guarantees that the rail spacings are correct.
-
3.
Add the vertical supports for the frames as shown in frame2.dwg.
-
4.
Repeat step 1 and add the second layer to the frame as shown in frame3.dwg.
-
5.
Add the top of the frame as shown in frame4.dwg. This can be used to mount lights or sensors.
-
6.
Build another copy of the frame built in the previous steps.
Assemble the elevator-carriage.
-
1.
Assemble the elevator-carriage’s platform as shown in frame5.dwg.
-
2.
Add the vertical support as shown in frame6.dwg. The POI shows that the placement of the vertical supports are not symmetrical. The side with the 14 mm offset will be the side adjacent to the vertical support of the shelves.
-
3.
Assemble the elevator-carriage’s top as shown in frame7.dwg and frame8.dwg.
-
4.
Add the elevator-carriage’s top as shown in frame9.dwg.
-
5.
Add the elevator markers and the V-wheels to the elevator’s carriage as shown in frame10.dwg.
Integrate the elevator into the previous assembly.
-
1.
Assemble the top of the elevator as shown in frame10.dwg. Note that the offset (455 mm) of the central support is for centring the electric winch. This can be adjusted accordingly if a different electric winch is used.
-
2.
Connect the two shelves as shown in frame11.dwg. The POI show where brackets should be added for the next assembly step.
-
3.
Add the vertical supports for the elevator and the previously assembled elevator top as shown in frame12.dwg.
-
4.
Put the elevator-carriage in the elevator as shown in frame13.dwg.
-
5.
Adjust the elevator frames to constrain the elevator-carriage as shown in frame14.dwg.
-
6.
Test that the elevator-carriage moves up and down smoothly by lifting it manually.
Assemble the electronics and peripheral components.
-
1.
Prepare the sensor wires by soldering female jumper terminals to the end of 18AWG wires (3 m). Prepare three such wires.
-
2.
Prepare 18AWG wires (3.5 m) for the electric winch. Prepare two such wires.
-
3.
Mount the elevator infrared sensor using the elevator infrared sensor mount (mount_ir_sensor_elevator) as shown in 1.jpeg and 2.jpeg. This is shown in Fig. 9 on the left and right, respectively.
-
4.
Tidy up the wires using V-slot covers and drag chains as shown in 3.jpeg and 4.jpeg. This is shown in Fig. 10 on the left and right, respectively
-
5.
Test the mobility of the drag chain by moving the elevator up and down manually. This ensures that the drag chain is attached correctly
-
6.
Connect the elevator motor driver as shown elevator.jpg circuit diagram. This is shown in Fig. 11.
-
7.
Connect the fuse box as shown in the elevator.jpg circuit diagram and add a fuse (20 A) to the fuse box. This is shown in Fig. 11
-
8.
Connect the infrared sensor to the other components as shown in the elevator.jpg circuit diagram. This is shown in Fig. 11.
-
9.
Mount the power supply, motor driver, fuse box and ESP32 in to the enclosure as shown in 5.jpg. This is shown in Fig. 12.
DO NOT PLUG IN THE MAINS CABLE UNTIL THE ENCLOSURE IS CLOSED. MAKE SURE THAT THE POWER SUPPLY COVER IS SHUT.
-
10.
Power the ESP32 using the micro-usb power supply.
-
11.
There are two green lights on the sensor one indicating that power is on and the other indicating that a reflection is detected. Check that the sensor is operational. The detection light should turn on when the sensor is obstructed by an aluminium profile. The sensitivity of the sensor can be adjusted by tightening/loosening the screw on the sensor.
-
12.
Close the enclosure lid.
-
13.
Attach a webcam to the Raspberry Pi using one of the USB ports.
-
14.
Mount the webcam and adjust accordingly as shown in 6.jpeg. This is shown in Fig. 13
-
15.
Attach the electric winch as shown 7.jpeg. This is shown in Fig. 14 on the left.
-
16.
Tidy up the electric winch cables using V-slot covers as shown in 8.jpeg and 9.jpeg. This is shown in Fig. 14 in the middle and on the right, respectively.
-
17.
Attach the cable to the elevator-carriage using the hammock fixing as shown 10.jpeg. This is shown in Fig. 15.
-
18.
Make sure that the cable is vertical, adjust the top of the elevator accordingly.
-
19.
Make sure that all tee nuts are locked-in securely.
Fig. 9.
Image showing infrared sensor mounting location. The sensor is located on the top of the elevator-carriage (left) and is mounted as shown (right).
Fig. 10.
Image showing elevator wire management. The wires are held in a drag chain and tucked away in the aluminium extrusion using V-slot covers.
Fig. 11.
Circuit diagram of the elevator’s electronics.
Fig. 12.

Image of the elevator enclosure. It shows the fuse box (top left), elevator motor driver (middle left), ESP32 (bottom left) and the power supply (right).
Fig. 13.

Image of showing where the webcam is mounted. The red arrow points to the top-down webcam. (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
Fig. 14.
Image of the electric winch (left) and the wire management (middle and right). The red box highlights where the electric winch is mounted and the red arrows shows the wire management using V-slot covers. (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
Fig. 15.

Image showing how the electric winch is attached to the elevator-carriage. The red circle shows the hammock fixing mounted onto the elevator-carriage’s extrusion. This fixing is attached to the cable of the electric winch. (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
5.3. Mover
-
1.
Assemble the mover base as shown in mover1.dwg.
-
2.
Test that the carriage rolls smoothly along all the rails. This guarantees that the rail spacing are correct.
-
3.
Add the rail funnels as shown mover2.dwg.
-
4.
Add the motor mount to as shown in mover3.dwg.
-
5.
Add the motor to the motor mount as shown mover4.dwg.
-
6.
Add the O-ring wheels to the motor as shown mover5.dwg. The O-rings should also be added to the O-ring wheels for traction.
-
7.
Add the castor wheels to the mover as shown mover6.dwg. The castors as shown by the POI should be adjusted for smooth rolling along the rails.
-
8.
Add the infrared sensor, the carriage lock, the mover bracket and the V-wheels as shown in mover7.dwg.
-
9.
Add the mover bottom mount and the ESP32-CAM arm as shown in mover8.dwg.
-
10.
Calibrate Buck Converter such that a 12 V input is converted into a 5 V output.
-
11.
Prepare the signal wires to the left and right hook servos. Cut 18AWG wires (90 cm) and solder male and female jumper connections to the opposite ends of the wire. Prepare two of these wires.
-
12.
Prepare two power wires to the left and right hook servos. Cut three 18AWG wires (30 cm, 30 cm, 60 cm) and solder a T-connection. The shorter wires will connect to the hook servos and the longer wire will connect to the connector blocks (see later). Solder male jumper connections to the ends that will attach to the hook servos. Prepare two of such wires.
-
13.
Attach these to the left and right hook servos and loop the remaining wire through the drag chain (60 cm).
-
14.
Connect an unterminated micro-USB to the ESP32CAM this will be treated as the 5 V and GND terminals of the ESP32CAM.
-
15.
Connect the electronic components according to the mover.jpg circuit diagram. This is shown in Fig. 16.
-
16.
Add the electronic components to the mover as shown in mover9.dwg.
-
17.
Attach the drag chain to the bottom mover mount as shown 11.jpeg and 12.jpeg. This is shown in Fig. 17 on the left and right, respectively.
-
18.
Assemble the mover top mount as shown in mover10.dwg.
-
19.
Add female jumper connections to the C-terminals of both the limit switches then add a connection between the two switches via the NC-terminals. the jumper connections should be looped into the holes of the mover top mount as shown 13.jpeg. This is shown in Fig. 18 on the left.
-
20.
Add the mover top mount as shown in mover11.dwg.
-
21.
Add the mover arm as shown in mover12.dwg.
-
22.
Add the belt tensioner as shown in mover13.dwg. The belts should be tied using a zip-tie as shown in 14.jpeg. This is shown in Fig. 18 in the middle.
-
23.
Add the carriage hooks as shown in mover14.dwg.
-
24.
Add V-slot covers to the mover arm as shown in 15.jpeg. This is shown in Fig. 18 on the right.
-
25.
Add V-slot covers to the bottom of the mover arms as shown in 16.jpeg, 17.jpeg and 18.jpeg. This is shown in Fig. 19 on the left, middle and right, respectively.
-
26.
Power the ESP32 using the micro-USB port. There are two green lights on the infrared sensor one indicating that power is on and the other indicating that a reflection is detected. Check that the sensor is operational. The detection light should turn on when the sensor is obstructed by an aluminium profile. The sensitivity of the sensor can be adjusted by tightening/loosening the screw on the sensor.
Fig. 16.
Circuit diagram of the mover’s electronics.
Fig. 17.
Image showing drag chain mounting points on the mover. The red arrow points to the drag chain viewed from the top (left) and where it is mounted to the bottom of the mover (right). (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
Fig. 18.
Image showing the mover arm components. The limit switches (left), belt tensioner (middle) and V-slot cover (right) is shown using red annotations.
Fig. 19.
Image showing V-slot covers in the mover arm that is used to localise the arm positions. This is annotated in red. An overview is shown on the left and the zoomed in view is shown in the middle and on the right. There are three V-slot cover markers in total. (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)
5.4. Doser
-
1.
Connect the doser electronics as shown in the doser.jpg circuit diagram. This is shown in Fig. 20.
-
2.
Mount the electronics onto the doser base.
-
3.
Mount the doser base, the spout mount, the spout and the tubing as 19.jpeg. This is shown in Fig. 21.
Fig. 20.
Circuit diagram of the doser’s electronics.
Fig. 21.

Image of the doser. The bottom two containers are reservoirs for nutrient A and nutrient B. The water reservoir is out of sight. The tubing delivers the contents of the reservoir to the spout via the three peristaltic pumps.
5.5. Sensor
-
1.
Connect the electronics together as shown the sensor.jpg circuit diagram. This is shown in Fig. 22.
-
2.
Power the ESP32 board using the micro-USB port.
Fig. 22.
Circuit diagram of the sensor’s electronics.
6. Operation instructions
Before using the system, follow the instructions in the project repository [39] to setup the software and go through the compulsory validation tests.
The system consists of the devices, scripts and the server. The devices include the mover, elevator, doser and sensor. The scripts include the dose, mover_center_arm, mover_go_to_do and run_selected. More details about how to use each of these components are given below.
In order to use the system, start up the Raspberry Pi server and obtain the <server_ip_address> (see the project repository [39]). The system is controlled via the web browser of any device that is connected to the same wifi network and is accessed using the following:
The web-interface allows all the parameters associated with the system to be adjusted as shown in Fig. 23 on the right. Examples include the dosing recipe, sensor logging frequency, mover location, etc. The web-interface also allows for the execution of scripts, which coordinates the system to execute more complex behaviours. An example is taking a plant from a specified position to the doser, dosing it with a specified recipe and then putting the plant back. Readings can also be accessed directly from the web-interface such as the current progress of scripts, temperature, mover location, etc. Information about the pre-programmed functionalities of each device and script is provided below. The web-interface is easy to use, and does not require programming expertise.
Fig. 23.
Examples of the web-interface. This shows the home screen with navigation bar (top-left), device list (bottom-left) and configuration form (right).
6.1. Devices
Each device is controlled in their details page, which is accessed by navigating to the Device List tab in the navigation bar. This will list all the connected devices. To control each device the configurations are edited and saved. This will immediately be reflected in the device if it is awake. Sections of the relevant web-interface are shown in Fig. 23.
Elevator configurations are given below:
-
•
The awake flag is used to set the elevator to awake mode, allowing for control manually or using scripts.
-
•
The grace_time is the amount of time (seconds) the elevator ignores any readings once a movement starts. This prevents the elevator from stopping immediately when detecting the current floor’s shelf edge.
-
•
v_target is used with the go_to_target flag. The elevator will move to this target value (0 or 1 for bottom and top floor, respectively) when the go_to_target flag is set.
-
•
The go_to_target flag is used to send the elevator to the v_target.
-
•
The t_load is the amount of time (seconds) used to correct the alignment of the elevator floors. This is use to calibrate for the smooth transfer of the mover between the elevator and the frames.
Mover configurations are given below:
-
•
The awake flag is used to set the mover to awake mode, allowing for control manually or using scripts.
-
•
correct_forward is the amount of time (seconds) used to correct the overshoot for the mover’s forward motion.
-
•
correct_backward is the amount of time (seconds) used to correct the overshoot for the mover’s forward motion.
-
•
The grace_time is the amount of time (seconds) the mover ignores any readings once a movement starts. This prevents the mover from stopping immediately when detecting the gap corresponding to the current position.
-
•
The move flag is set to start the mover’s motion.
-
•
The forward flag is used to set the direction the mover will move in.
-
•
h_target is used with the go_to_target flag. The mover will move to this target value (0 or 1 for elevator and shelf, respectively) when the go_to_target flag is set.
-
•
The go_to_target flag is used to send the mover to the h_target.
-
•
The up flag sets the camera arm to the up position.
-
•
The left flag makes the camera look to the left.
-
•
The lock flag engages the carriage lock.
-
•
The hook_left_on flag engages the left arm hook.
-
•
The hook_right_on flag engages the right arm hook.
Doser configurations are given below:
-
•
The awake flag is used to set the doser to awake mode, allowing for control manually or using scripts.
-
•
one_ml_delay_1 (seconds) is used to calibrate the time it takes for pump 1 to dose 1 ml.
-
•
one_ml_delay_2 (seconds) is used to calibrate the time it takes for pump 2 to dose 1 ml.
-
•
one_ml_delay_3 (seconds) is used to calibrate the time it takes for pump 3 to dose 1 ml.
-
•
freq is used to set the frequency for PWM control of the pumps.
-
•
dose_conc_A is used to set the target dosing concentration of nutrient A.
-
•
dose_conc_B is used to set the target dosing concentration of nutrient B.
-
•
reservoir_conc_A is used to set the concentration of nutrient A in the reservoir.
-
•
reservoir_conc_B is used to set the concentration of nutrient B in the reservoir.
-
•
dose_vol is used to set the volume (ml) for dosing.
Sensor configurations are given below.
-
•
t_read (seconds) is used to set the time between each reading.
Note that the sensor is always on and will continue to take readings at the rate specified.
6.2. Scripts
Scripts provide a button that begins a sequence of events. These can be used to control single devices or coordinate the behaviour of multiple devices. Similar to devices, scripts are also controlled by configurations and can be accessed by navigating to the Script List tab in the navigation bar.
The dose script tells the doser to use a particular pump to dose a particular volume. These are set by pump (1, 2 or 3) and dose_vol (ml).
The mover_center_arm script is used to centre the mover’s arm.
The mover_go_to_do script is used to coordinate the mover and the elevator to send the mover to the set position and do an action. This action can be do nothing, pick up a carriage or drop off a carriage.
-
•
The target_h_position sets the target horizontal position for the mover to go to (−1, 0, 1, 2, where −1 is on the elevator).
-
•
The target_v_position sets the target vertical position for the mover to go to (0, 1).
-
•
The arm_interact flag determines whether to use the arm to interact with the carriages or not.
-
•
The left flag tells the mover’s arm to interact with the left carriage.
-
•
The get flag tells the mover to get the carriage and put it on the mover, otherwise it will put the carriage on the mover back onto the frame.
The run_selected script is used to coordinate the mover, the elevator, the doser and the webcam to loop through the selected carriage positions taking them to the logging station, dosing them with the specified amount of nutrients, taking a picture and putting the carriages back.
-
•
loc_list is a string that is delimited by ‘_‘ to set the list of locations to loop through. The locations follow the convention: <side>h<h_pos>v<v_pos>
-
•
<side> is either ‘l‘ or ‘r‘ for left and right, respectively.
-
•
<h_pos> is the horizontal position (0, 1, 2).
-
•
<v_pos> is the horizontal position (0, 1). The logging station is at ‘h2v0‘ following the convention above. This can also be changed by changing log_station.
6.3. Putting it together
Device can be manually operated by putting the devices into awake mode and then editing the configurations for example to test the mover’s carriage lock set the carriage_lock flag to True. To achieve higher level commands which requires the coordination of both the elevator and mover, use the mover_go_to_do script. Example of such tasks are ‘go to this location and pick up the carriage’, or ‘go to this location and drop of the carriage’. To run a full automated experiment the run_selected script should be used.
6.4. Safety
Operators should be made aware of the following safety considerations. Note that these are guidelines and not an exhaustive list
-
•
The mains cable must not be plugged in until the enclosure is closed and the power supply cover is shut (Fig. 12).
-
•
Avoid handling of the electric winch if the mains cable is plugged in.
-
•
Cut-resistant gloves must be worn when handling the electric winch cables.
-
•
Operators should not be inside the system when the system is powered.
-
•
When operating inside the system, it is recommended that long sleeves and protective eye-wear are worn.
7. Validation and characterisation
7.1. Description
In this section we validate the system by setting up MACARONS2 to care for five lettuce plants, capturing top-down images and time-series of temperature and humidity over a five week period. The system was set up indoors under ambient conditions without direct control of the temperature and humidity. The system was fitted with LEDs (Lumatek Attis 300 W) on a timer, with 12 h on and 12 h off cycle. The LEDs were placed around 30 cm away from the plant pot. Each carriage was fitted with a plant pot filled with coco-coir, and lettuce seedlings were transplanted into them. These plant pots, at maximum weight, could reach up to 1.5 kg. The system was operated completely remotely from a different city using a third-party remote desktop software. Over the validation period, the core operation sequence was repeated 80 times. This includes taking each plant to the logging station, capturing a top-down picture, dosing it with nutrients, and returning the plant to its original location.
The doser reservoirs were set up as follows, with the total dosing volume set to 150 ml. Dosing and image logging was done every other day.
-
•
Pump1: Water
-
•
Pump2: Nutrient A [40] diluted to 2 ml/L concentration
-
•
Pump3: Nutrient B [40] diluted to 2 ml/L concentration
The data collected can be found in the project repository [39]. A sample of images for a particular plant is shown in Fig. 24.
Fig. 24.
Example image data of a single lettuce plant. The images are taken in order from top left to the bottom right over four weeks.
7.2. Characterisation
The core operation sequence is completed within approximately 25 min. On average it takes around 4 min and 45 s to complete a sequence for each carriage. In comparison, a human experimenter requires approximately 10 min to prepare the solutions and an additional 2 min to dose each plant. The process of moving the plants to a standard location and capturing an accurate top-down picture takes roughly 1 min per plant. Setting up the process requires approximately 5 min, and after completion, the cleanup process also takes approximately 5 min. Altogether, when performed manually by a human, this entire procedure would take around 35 min to complete. These numbers are estimated based on actual human operations from similar lettuce growing experiments. MACARONS2 is therefore approximately 30% faster than a human operator.
A bulleted list of the tested specifications of the build is given below:
-
•
Approximate Dose rate: 1.8 ml/s
-
•
Mover speed: 12.5 cm/s
-
•
Elevator speed: 4.2 cm/s
-
•
Carriage load/unload duration: 33 s
-
•
Run time for five plants: 25 min
-
•
Maximum payload footprint: 750 mm 500 mm
-
•
Maximum tested payload weight: 5 kg
-
•
Pump error: 0.5 ml
7.3. Limitations
A current limitation of the system is the long dosing time — approximately 50% of the total duration. This is due to the use of small peristaltic pumps. Larger pumps can be used to reduce the overall duration of the sequence in future works. In the current set-up, only one sensor was used to measure the temperature and humidity. For higher spatial resolutions, which will allow for closer monitoring of each plant, a sensor array can be deployed in the system. More sensor types can also be included in future iterations of the system such as hyper-spectral and thermal cameras, which could provide on plant stresses. Currently there is no means to track energy use in the system. Future works will aim to address this. Another limitation is the current effective space efficiency. Currently one carriage carries one lettuce and the space available per carriage is larger than the space used by one lettuce. There is therefore wasted space. To address this, the lengths of aluminium extrusions used can be adjusted. Alternatively, custom fittings could be made for the carriage such that multiple lettuces can be carried by one carriage. Doing this would allow the current system to potentially hold 72 lettuces at one time. Currently the software does not support cloud control and streaming of the image data. Third party software was used to access a laptop with a webcam, which was used to stream a video of the system during operation for real-time remote monitoring. Logged data also has to be retrieved manually from the server and cannot be downloaded from the web-interface. Future development will include implementing these features.
7.4. Conclusion
This work presents an open-sourced vertical farming platform for automated plant care which is scalable, customisable and is built on easily sourced and cost-effective components. It features plant specific dosing, transportation and automated logging of temperature, humidity and images. The system provides a web-interface for monitoring, control and programming of custom behaviours. As estimated from [26], automating all plant transportation tasks in a vertical farm could save around 8.4% of the operating costs. This system offers an open-sourced and cost-effective alternative to industrial scale automation used in large scale commercial vertical farms to achieve these savings. The system was successfully validated against a typical use case by autonomously caring for lettuce plants. This includes transporting the plants from their compartments to a dosing/logging station where a top-down image is taken and the plant is dosed with the programmed nutrition recipe. The plant is then taken back to its compartment. The system is estimated to autonomously carry out this task 30% faster than a human operator. Coupled with autonomous operation, this has the potential to accelerate research in this sector by automating R&D experiments and collecting data.
Future directions for research and development include iterating the design to address the current limitations. Additional modules that integrate with MACARONS will also be developed, for instance a harvesting or automated seeding module. These will be designed such that the mover can transport plants to/from these different modules. Development of a programmable interface to control other hardware components will also be developed. This will allow for the integration of components like LEDs, humidifiers, heaters, fans and air-conditioners directly with MACARONS. Software modules for tasks such as automatic image processing is also a promising direction for future development.
CRediT authorship contribution statement
Vijja Wichitwechkarn: Conceptualisation, Methodology, Software, Investigation, Writing, Visualisation. William Rohde: Validation. Ruchi Choudhary: Supervision.
Declaration of competing interest
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.
Acknowledgements
Thanks to Fulvio Forni for providing access to the 3D printer and laser cutter used. This work was supported by the Engineering and Physical Sciences Research Council, United Kingdom [EP/S023917/1]
Biographies

Vijja Wichitwechkarn is currently a Ph.D. student at the University of Cambridge. He holds an MSci in Natural Sciences (Physics) form the University of Cambridge (2020), M.Sc. in Computing (Artificial Intelligence and Machine Learning) from Imperial College London (2021) and M.Sc. in Robotics and Autonomous Systems from the University of Lincoln (2022). His main research interest includes developing open-source hardware and software for controlled environment agriculture.

William Rohde is an Agricultural Robotics Ph.D. student at the University of Cambridge based in the Engineering Department’s control group. His research focuses on modelling and control for precision agriculture. He has an M.Sc. in Robotics and Autonomous Systems from the University of Lincoln (2021) and a BEng in Mechanical Engineering from the University of Leeds (2017).

Ruchi Choudhary is Professor of Architectural Engineering in the Engineering Department at University of Cambridge. Her research spans Digital Twins of Urban-integrated farms, simulation-based methodologies for the decarbonisation of buildings, uncertainty quantification in building simulation models, and the integration of novel building technologies and renewable energy supply systems.
References
- 1.Fischer G., Hizsnyik E., Prieler S., Wiberg D. FAO and IIASA; 2011. Scarcity and Abundance of Land Resources: Competing Uses and the Shrinking Land Resource Base: SOLAW Background Thematic Report-TR02. [Google Scholar]
- 2.Lotze-Campen Hermann, Müller Christoph, Bondeau Alberte, Rost Stefanie, Popp Alexander, Lucht Wolfgang. Global food demand, productivity growth, and the scarcity of land and water resources: a spatially explicit mathematical programming approach. Agric. Econ. 2008;39(3):325–338. [Google Scholar]
- 3.Benis Khadija, Ferrão Paulo. Commercial farming within the urban built environment–taking stock of an evolving field in northern countries. Glob. Food Secur. 2018;17:30–37. [Google Scholar]
- 4.Khokhar Tariq. Chart: Globally, 70% of freshwater is used for agriculture. World Bank Data Blog. 2017 [Google Scholar]
- 5.Mir Mohd Salim, Naikoo Nasir Bashir, Kanth Raihana Habib, Bahar FA, Bhat M Anwar, Nazir Aijaz, Mahdi S Sheraz, Amin Zakir, Singh Lal, Raja Waseem, et al. Vertical farming: The future of agriculture: A review. Pharm. Innov. J. 2022;11:1175–1195. [Google Scholar]
- 6.Graamans Luuk, Baeza Esteban, Van Den Dobbelsteen Andy, Tsafaras Ilias, Stanghellini Cecilia. Plant factories versus greenhouses: Comparison of resource use efficiency. Agric. Syst. 2018;160:31–43. [Google Scholar]
- 7.Beacham Andrew M., Vickers Laura H., Monaghan James M. Vertical farming: a summary of approaches to growing skywards. J. Hortic. Sci. Biotechnol. 2019;94(3):277–283. [Google Scholar]
- 8.AlShrouf Ali, et al. Hydroponics, aeroponic and aquaponic as compared with conventional farming. Am. Sci. Res. J. Eng. Technol. Sci. 2017;27(1):247–255. [Google Scholar]
- 9.The Packer Vertical farmer Kalera files chapter 11 bankruptcy. Packer. 2023 URL https://www.thepacker.com/news/packer-tech/vertical-farmer-kalera-files-chapter-11-bankruptcy. [Google Scholar]
- 10.TechCrunch Iron Ox lays off 50, amounting to nearly half its staff. TechCrunch. 2022 URL https://techcrunch.com/2022/11/03/iron-ox-lays-off-50-amounting-to-nearly-half-its-staff/ [Google Scholar]
- 11.AgFunderNews . 2022. Infarm to lay off more than half of its workforce. AgFunderNews, URL https://agfundernews.com/infarm-to-lay-off-more-than-half-of-its-workforce. [Google Scholar]
- 12.2022. AeroFarms. https://www.aerofarms.com/. (Accessed 10 May 2022) [Google Scholar]
- 13.AgFunderNews . 2022. Robotic vertical farming startup fifth season shuts down. AgFunderNews, URL https://agfundernews.com/robotic-vertical-farming-startup-fifth-season-shuts-down. [Google Scholar]
- 14.Graamans Luuk, Baeza Esteban, Van Den Dobbelsteen Andy, Tsafaras Ilias, Stanghellini Cecilia. Plant factories versus greenhouses: Comparison of resource use efficiency. Agric. Syst. 2018;160:31–43. [Google Scholar]
- 15.Moghimi Faraz. Vertical farming economics in 10 minutes. Rutgers Bus. Rev. 2021;6(1):122–131. [Google Scholar]
- 16.Van Delden SH, SharathKumar M, Butturini M, Graamans LJA, Heuvelink E, Kacira M, Kaiser E, Klamer RS, Klerkx L, Kootstra G, et al. Current status and future challenges in implementing and upscaling vertical farming systems. Nat. Food. 2021;2(12):944–956. doi: 10.1038/s43016-021-00402-w. [DOI] [PubMed] [Google Scholar]
- 17.Ojo Mike O., Zahid Azlan. Deep learning in controlled environment agriculture: A review of recent advancements, challenges and prospects. Sensors. 2022;22(20):7965. doi: 10.3390/s22207965. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 18.Baumont de Oliveira Francis J, Ferson Scott, Dyer Ronald AD, Thomas Jens MH, Myers Paul D, Gray Nicholas G. How high is high enough? Assessing financial risk for vertical farms using imprecise probability. Sustainability. 2022;14(9):5676. [Google Scholar]
- 19.Lubna Farzana A, Lewus David C, Shelford Timothy J, Both Arend-Jan. What you may not realize about vertical farming. Horticulturae. 2022;8(4):322. [Google Scholar]
- 20.2022. Zero Carbon Farms, https://zerocarbonfarms.co.uk/. (Accessed 10 May 2022) [Google Scholar]
- 21.2022. Artesian farm. https://www.artesianfarms.com/. (Accessed 10 May 2022) [Google Scholar]
- 22.2022. Bowery Farming, https://boweryfarming.com/. (Accessed 10 May 2022) [Google Scholar]
- 23.2022. Grow Pod Solutions, https://www.growpodsolutions.com/. (Accessed 10 May 2022) [Google Scholar]
- 24.2022. Freight farms. https://www.freightfarms.com/. (Accessed 10 May 2022) [Google Scholar]
- 25.2022. Lettus grow. https://www.lettusgrow.com/. (Accessed 10 May 2022) [Google Scholar]
- 26.Wichitwechkarn Vijja, Fox Charles, et al. MACARONS: A modular and open-sourced automation system for vertical farming. J. Open Hardw. 2023;7(1) doi: 10.1016/j.ohx.2023.e00497. [DOI] [PMC free article] [PubMed] [Google Scholar]
- 27.2022. Plenty. https://www.plenty.ag/. (Accessed 10 May 2022) [Google Scholar]
- 28.2022. Techno farm. https://technofarm.com/en/. (Accessed 10 May 2022) [Google Scholar]
- 29.2023. How much do warehouse robotics cost? https://roboticproducts.co.uk/how-much-do-warehouse-robotics-cost/. (Accessed 12 October 2023) [Google Scholar]
- 30.2023. Make way for the machines – warehouse robots. https://www.bse-uk.co.uk/blog/make-way-machines-warehouse-robots/. (Accessed 12 October 2023) [Google Scholar]
- 31.2023. Automated plant phenotyping. https://www.wur.nl/en/newsarticle/new-automated-plant-phenotyping-device-at-wur.htm. (Accessed 30 July 2023) [Google Scholar]
- 32.2022. Iron Ox. https://ironox.com/. (Accessed 1 September 2022) [Google Scholar]
- 33.2022. Farm bot. https://farm.bot/. (Accessed 1 September 2022) [Google Scholar]
- 34.2023. Area2Farms. https://www.area2farms.com/. (Accessed 28 June 2023) [Google Scholar]
- 35.2023. Baby leafy vegetable cultivation module grow rack. https://www.sananbiofarm.com/product/vertical-hydroponic-baby-leaf-seedling-grow-rack. (Accessed 12 October 2023) [Google Scholar]
- 36.2023. How often you should change water for hydroponics. https://floraflex.com/default/blog/post/how-often-you-should-change-water-for-hydroponics. Accessed 28 June 2023. [Google Scholar]
- 37.Rohde William, Forni Fulvio. Lettuce modelling for growth control in precision agriculture. Eur. J. Control. 2023 [Google Scholar]
- 38.2023. OpenGrow air temperature and humidity sensor. https://www.londongrow.com/products/opengrow-airtemperatureandhumiditysensor. (Accessed 28 June 2023) [Google Scholar]
- 39.2023. MACARONS2 project repository. Accessed: 01-08-2023. [DOI] [Google Scholar]
- 40.2023. Nutrient A&B. https://www.londongrow.com/products/shogunsamuraicocoab?variant=31892744536148. (Accessed 30 July 2023) [Google Scholar]



















