151
edits
(add text) |
(add todos and pseudocodes) |
||
Line 14: | Line 14: | ||
* Power supply 12 volts | * Power supply 12 volts | ||
* Lots of cables... | * Lots of cables... | ||
== To-Do List == | |||
* Implement stepper motor speed with AccelStepper library (based on category (CO<sub>2</sub> value)) (s. Pseudocode below) | |||
* Stabilize bubble rings holder to the stepper motor | |||
* For better and more directed air flow: add nozzle/funnel? | |||
* Make wiring diagram | |||
* Documentation | |||
== Pseudocode == | |||
Idea: assign CO<sub>2</sub> value into 3 categories; '''Low, Medium, High''' and adjust the stepper motor speed based on the category.<syntaxhighlight lang="arduino"> | |||
DEFINE constants for CO2 thresholds: | |||
LOW_MEDIUM_THRESHOLD = 500 //to be determined via trials | |||
MEDIUM_HIGH_THRESHOLD = 700 //to be determined via trials | |||
DEFINE speed settings for each category: | |||
LOW_SPEED = 400 // Steps per second | |||
MEDIUM_SPEED = 800 // Steps per second | |||
HIGH_SPEED = 1200 // Steps per second | |||
INITIALIZE variable currentCategory to -1 | |||
INITIALIZE variable lastCategory to -1 | |||
FUNCTION setup(): | |||
BEGIN | |||
SET maximum speed for stepper motor (e.g., 1200 steps/sec) | |||
SET acceleration for smoother operation (e.g., 500 steps/sec^2) | |||
START serial communication for debugging | |||
END | |||
FUNCTION loop(): | |||
BEGIN | |||
READ CO2 value from the sensor (variable CO2) | |||
DETERMINE currentCategory: | |||
IF CO2 < LOW_MEDIUM_THRESHOLD: | |||
SET currentCategory to LOW | |||
ELSE IF CO2 < MEDIUM_HIGH_THRESHOLD: | |||
SET currentCategory to MEDIUM | |||
ELSE: | |||
SET currentCategory to HIGH | |||
IF currentCategory is different from lastCategory: | |||
BEGIN | |||
SWITCH currentCategory: | |||
CASE LOW: | |||
SET stepper motor speed to LOW_SPEED | |||
CASE MEDIUM: | |||
SET stepper motor speed to MEDIUM_SPEED | |||
CASE HIGH: | |||
SET stepper motor speed to HIGH_SPEED | |||
UPDATE lastCategory to currentCategory | |||
END | |||
RUN stepper motor at the current speed (use AccelStepper's runSpeed() function) | |||
END | |||
</syntaxhighlight>Idea to determine thresholds: run trials on plants enclosed environment.<syntaxhighlight lang="arduino"> | |||
DEFINE variables: | |||
minCO2 = Infinity // Initialize to a very high value | |||
maxCO2 = -Infinity // Initialize to a very low value | |||
startTime = CURRENT_TIME | |||
trialDuration = 30 minutes (in milliseconds, e.g., 30 * 60 * 1000) | |||
FUNCTION setup(): | |||
BEGIN | |||
INITIALIZE serial communication for debugging | |||
INITIALIZE CO2 sensor | |||
PRINT "Starting 30-minute CO2 trial..." | |||
END | |||
FUNCTION loop(): | |||
BEGIN | |||
WHILE (CURRENT_TIME - startTime) < trialDuration: | |||
BEGIN | |||
READ current CO2 value from sensor (variable currentCO2) | |||
IF currentCO2 < minCO2: | |||
UPDATE minCO2 to currentCO2 | |||
IF currentCO2 > maxCO2: | |||
UPDATE maxCO2 to currentCO2 | |||
PRINT currentCO2, minCO2, and maxCO2 to serial monitor | |||
WAIT for 1 second //reduce sampling frequency | |||
END | |||
PRINT "Trial Complete." | |||
PRINT minCO2 and maxCO2 to serial monitor | |||
CALCULATE range = maxCO2 - minCO2 | |||
CALCULATE lowMediumThreshold = minCO2 + (range / 3) | |||
CALCULATE mediumHighThreshold = minCO2 + (2 * range / 3) | |||
PRINT "Thresholds:" | |||
PRINT "Low-Medium Threshold: " + lowMediumThreshold | |||
PRINT "Medium-High Threshold: " + mediumHighThreshold | |||
END | |||
</syntaxhighlight> | |||
== Gallery == | == Gallery == |
edits