Reflective Questions:
What brainstorming or idea generations techniques did I/we use to help define possible solutions and how can we show that I/we kept all of the design requirements in mind throughout the entire process?
What was the best solution to try and why was it the best solution to try?
Include:
Multiple design solutions.
Detailed concept sketches, schematics, annotated drawings
A discussion of the brainstorming process and how it you narrowed it down to your final selection
Detailed and prioritized list of all design goals and requirements.
Features desired in final design
Specifications
Constraints
Parameters
Reflection and analysis of design goals and requirements identified and prioritization.
A decision matrix.
A final design with justification for selection.
Your team’s Gantt chart to detail all tasks, responsible parties, and due dates. Clearly define the entire scope of work in the task list. Be sure to consider the Rule of Thirds when making scheduling projections.
Possible solutions:
A Distributed IOT sensor/controller network. (work on)
Mobile platform for sensing and controlling. (work on)
Software for mapping farms and predicting changes in nutrients and moisture.
Hardware for automating certain aspects of a farm, IE solar nutrient distributor
Hardware for autonomously doing monotonous precise tasks IE, AI Produce picker
Criteria
Construction cost
How expensive is it to construct
How much of that construction cost is passed onto the consumer
Lowest required tolerances
Retrofit Ability
How easy is it to fit into existing gardens
How easily can the product be upgraded, rather than fully superceded
Profile
How large and heavy is it physically
How easy is it to fit into existing gardens not initially designed for it
Easy of use
How difficult is it for someone new to
Program
Deploy
Monitor
Aesthetics
Can it fit into flower gardens seamlessly?
What color is least obtrusive
Material finish/tolerances to look acceptable
Is it heavy enough to not feel “cheap”
Ability
How accurately can it measure/control
How many different things can it interface with seamlessly
Modularity/flexibility
How much of the software is controllable through plugins
How easily can the system be rearranged
How can the system integrate with existing infrastructure
Repairability
How easily can the product be repaired, if at all
Power efficiency
How power efficient are the circuits used
Important in off grid applications
Protoypeable
How easily and cheaply can the product be prototyped vs produced
3d printing vs injection molding
Constraints
Off grid capable
Cant require mains power
Cant require hard data lines
Many greenhouses and gardens in small farms have no access to AC power or Data.
Reliable under inclement conditions
Temperature stable from −40f to 107f
Water/dust proof - ipx7
Reliably transmit/receive during rain
If these products are used outside they have to be able to endure harsh new england weather conditions.
Comply with regulations
FDA
Food safe plastic
FCC
Comply with radio regulations
Cant require HAM license to operate
EPA
Internal components cant contact soil
Interface with both Analog and Digital peripherals
Off the shelf components/ solutions
Cheap proven components for PCB design
USB - C for data/power
Lora for radio
Off the shelf components reduce cost and development time.
Plan of action:
The two big parts of this project are the hardware and the software
I plan for the software stack to run python and C/rust. This code will store the data the bot collects and execute functions to control the robot itself. In addition python will give me the ability to easily integrate machine learning into the robot, allowing for it to navigate semi autonomously, or preform other “intelligent” functions otherwise not possible through C/Rust alone. C/Rust were selected due to the fact that they are a fast, reliable, and efficient language.
Coding is also necessary for the web interface. To control the robot, see data, and other functions I plan to use the LAMP web stack, meaning coding the server backend in python/PHP. I could use a more modern programming language like Javascript, web assembly or CSS for managing frontend. Likewise the robot will have to interact very closely and reliably with the server database. I will probably use a separate computer for the web interface, or use a cloud interface (that being said for now it would almost definitely be self hosted because I hate software as a service).
For hardware, most of the components are off the shelf meaning they will be easy to assemble together. Had I used a different design for the power system it would be significantly more complicated (using DC-DC converters for various voltages). This means the assembly of the actual hardware should be fairly trivial.
This would include affixing the main control board to the chassis, wiring the dc motors to the motor control board, wiring the power supply to the motor control board, etc. I plan to eventually 3d print a cover for the whole assembly, which will make it more reliable in inclement weather. If I have the time, building the individual modules will be more work, but still fairly easy. Coding the modules should be easy enough through integrating LUA into the main rust/C code for the robot, allowing me to easily integrate new functionality through simply using unused IO and adding pass throughs for controlling I2C components. Likewise, the hardware should be fairly simple as well, the robot already has fairly standard control voltages available.
The first two modules I want to build (provided I have time) are the IR spectrometer, and the dispenser.
The IR spectrometer will be fairly simple to implement mechanically since it uses an I2C connection, which is natively supported by the control board (raspberry pi). This means that implementation is as simple as wiring the board up, mounting it to the chassis, and coding its functions(and interpreting the data). I think interpreting the data from these measurements will be the difficult aspect of this part of the project. The solutions I foresee are implementing machine learning to interpret results without directly coding the solutions.
For the dispenser module I plan to set up an array of small 5v solenoids and small air pump. The air pump will pressurize bottles of liquid fertilizers (standard cap size seltzer bottles, held on top of the robot), or weed killers and dispense them when needed. This would allow machine vision to detect weeds, and spray weed killer directly on them. Removing weeds through mechanical means is simply not feasible on the time scale and power budget provided, as it would require significant torque to pull the weed itself out of the grount, in addition to dragging it all the way out of the farmland (leaving it on the ground would allow it to simply re-root itself). This would also allow for the robot to adjust PH/nutrients in real time as it detects deficiencies in certain areas.
This module is significantly more mechanically complex to implement, and honestly I probably wont have the time to finish. It would require building a separate sub chassis and probably adding either separate IO to the raspberry pi or implementing some type of 5v shift register to multiplex the individual solenoids using the IO from the raspberry pi.