Having issues with your GrowMax system? This guide covers the most common problems and their solutions.
Immediate Action:
- Disconnect power to stop pumping
- Check
PUMP_CYCLE_DURATION- reduce to 5-10 seconds - Increase
SOIL_WET_THRESHOLD- higher numbers = drier soil needed before watering - Verify sensor placement - sensors should be in root zone, not too deep
Immediate Action:
- Disconnect power immediately
- Check water level sensor connections
- Verify
WATER_SENSOR_LOW_ENABLED = True - Never set
PUMP_WHEN_DRY = Trueunless you have unlimited water supply
Symptoms: Thonny can't find device, no serial connection
Solutions:
- Try different USB cable - data cables, not just charging cables
- Check Device Manager (Windows):
- Look for "USB Serial Device" or "Raspberry Pi Pico"
- If missing, try different USB port
- Reinstall firmware:
- Hold BOOTSEL button while connecting
- Flash firmware again
- Driver issues:
- Windows: Install Raspberry Pi Pico drivers
- Mac/Linux: Usually work automatically
Symptoms: All readings show 0 or very high numbers
Solutions:
- Check sensor connections:
- Ensure sensors are properly seated in board
- Look for loose connections
- Verify sensor placement:
- Insert sensors 2-3 inches into soil
- Avoid touching metal parts with fingers
- Keep sensors away from fertilizer deposits
- Test individual sensors:
from growmax.moisture import Moisture sensor = Moisture(channel=1) # Test channel 1 print(sensor.moisture)
- Clean sensors:
- Gently clean metal probes with soft cloth
- Remove any corrosion or buildup
Symptoms: Always shows "has water False" or "has water True"
Solutions:
- Check GPIO pin configuration:
WATER_SENSOR_LOW_ENABLED = True WATER_SENSOR_LOW = 22 # Use GPIO 21 or 22
- Verify sensor type:
- Use Optomax liquid level sensors
- Other sensors may need different GPIO pins
- Test sensor manually:
from machine import Pin sensor = Pin(22, Pin.IN, Pin.PULL_DOWN) print(sensor.value()) # Should change when sensor touches water
- Check wiring:
- Ensure proper connections to GPIO 21 or 22
- These pins have built-in voltage dividers
Symptoms: No pumping action, or pumps run but no water flows
Solutions:
- Check power requirements:
- Use 5V pumps only
- Ensure pump draws <200mA
- Check pump specifications
- Verify pump connections:
- Ensure proper wiring to pump ports
- Check for loose connections
- Test pump manually:
from growmax.pump import Pump pump = Pump(channel=1) pump.dose(1, 5) # Run for 5 seconds
- Check tubing:
- Ensure no kinks or blockages
- Prime pump if needed
- Check that intake is submerged
Symptoms: Error installing from PyPI in Thonny
Solutions:
- Check internet connection:
- Ensure computer has internet access
- Try different network if needed
- Restart Thonny:
- Close and reopen Thonny IDE
- Try installation again
- Manual installation:
- Download package manually from PyPI
- Install using Thonny's file manager
- Clear package cache:
- Tools → Manage packages → Clear cache
Symptoms: Import errors, syntax errors in config
Solutions:
- Check file location:
- Config file must be named
config.py - Must be in device root directory (not in folders)
- Config file must be named
- Verify syntax:
# Correct syntax SOIL_WET_THRESHOLD = 10 WIFI_SSID = "NetworkName" # Common errors to avoid SOIL_WET_THRESHOLD = 10, # Remove comma WIFI_SSID = NetworkName # Missing quotes
- Reset to defaults:
- Copy fresh config from
/lib/growmax/config.py - Make changes gradually
- Copy fresh config from
Symptoms: Program stops running, memory errors, device resets
Solutions:
- Check memory usage:
- Disable unnecessary features first
- Monitor memory in program output
- Simplify configuration:
# Minimal config for testing WIFI_ENABLED = False DISPLAY = None ADAFRUIT_SCD4X_ENABLED = False ATLAS_PH_METER_ENABLED = False
- Check for infinite loops:
- Look for blocking code in custom modifications
- Ensure proper error handling
Symptoms: "WiFi connection failed" messages
Solutions:
- Check network settings:
WIFI_ENABLED = True WIFI_SSID = "YourExactNetworkName" # Case sensitive! WIFI_PASSWORD = "YourExactPassword"
- Network compatibility:
- Use 2.4GHz networks only (not 5GHz)
- Avoid networks with special characters
- Try mobile hotspot for testing
- Signal strength:
- Move device closer to router
- Check for interference
- Router settings:
- Ensure WPA2/WPA3 security (not WEP)
- Check MAC address filtering
- Verify DHCP is enabled
Symptoms: No data appearing on opensensor.io dashboard
Solutions:
- Check API configuration:
OPEN_SENSOR_COLLECT_DATA = True OPEN_SENSOR_API_KEY = "your-actual-api-key" # From opensensor.io profile DEVICE_NAME = "YourDeviceName"
- Verify API key:
- Log into opensensor.io/members/profile
- Copy API key exactly (no extra spaces)
- Check internet connectivity:
- Ensure WiFi is working
- Test with simple web request
Symptoms: Blank screen, no display output
Solutions:
- Check display configuration:
DISPLAY = "SSD1327_I2C" # or "SH1107_I2C" DISPLAY_I2C_CHANNEL = 0 DISPLAY_I2C_ADDRESS = None # Auto-detect
- Verify I2C connections:
- Check SDA/SCL wiring
- Ensure proper power connections
- Test I2C address:
# Scan for I2C devices from machine import I2C, Pin i2c = I2C(0, sda=Pin(4), scl=Pin(5)) print(i2c.scan()) # Should show device addresses
- Try different I2C channel:
DISPLAY_I2C_CHANNEL = 1 # Try channel 1 instead of 0
Symptoms: Display never turns on with motion
Solutions:
- Check motion sensor configuration:
DISPLAY_SWITCH = 15 # GPIO pin number DISPLAY_SWITCH_CLASS = "MotionSensor" DISPLAY_SWITCH_DURATION_MS = 10000 # 10 seconds
- Test motion sensor:
from machine import Pin motion = Pin(15, Pin.IN) print(motion.value()) # Should change with motion
- Adjust sensitivity:
- Check motion sensor hardware settings
- Try different GPIO pin
Symptoms: No CO2 readings, sensor errors
Solutions:
- Check sensor configuration:
ADAFRUIT_SCD4X_ENABLED = True ADAFRUIT_SCD4X_I2C_CHANNEL = 0
- Verify I2C connections:
- Ensure proper SDA/SCL wiring
- Check power connections (3.3V)
- Sensor warm-up:
- SCD4X sensors need 2-3 minutes to stabilize
- Wait before expecting accurate readings
Symptoms: No pH readings, calibration issues
Solutions:
- Check Atlas Scientific configuration:
ATLAS_PH_METER_ENABLED = True ATLAS_PH_I2C_CHANNEL = 0 ATLAS_PH_METER_ADDRESS = None # Auto-detect
- Verify probe connections:
- Ensure BNC connector is tight
- Check probe is in solution
- Calibration required:
- pH probes need regular calibration
- Use pH 4.0, 7.0, and 10.0 calibration solutions
Symptoms: High-power equipment not turning on/off
Solutions:
- Check relay configuration:
RELAY_BOARD_ENABLED = True RELAY_BOARD_I2C_CHANNEL = 0 RELAY_BOARD_NUM_RELAYS = 4 # Match your board RELAY_BOARD_I2C_ADDRESS = 0x27
- Verify I2C address:
- Check relay board documentation
- Common addresses: 0x27, 0x20, 0x21
- Test relay manually:
from growmax.utils.relays import initialize_relay_board relay_board = initialize_relay_board() relay_board.turn_on(1) # Turn on relay 1
- Check power requirements:
- Ensure relay board has adequate power
- Some boards need external power supply
Symptoms: "MemoryError" or frequent crashes
Solutions:
- Monitor memory usage:
import gc print("Free memory:", gc.mem_free()) gc.collect() # Force garbage collection
- Reduce memory usage:
- Disable unused features
- Reduce sensor polling frequency
- Simplify display output
Symptoms: Slow response, long delays between readings
Solutions:
- Optimize configuration:
- Reduce number of active sensors
- Increase sleep intervals
- Disable WiFi if not needed
- Check for blocking operations:
- Long pump cycles
- Network timeouts
- Sensor initialization delays
Symptoms: Custom code causes errors or unexpected behavior
Solutions:
- Test incrementally:
- Add one modification at a time
- Test each change thoroughly
- Check imports:
- Ensure all required modules are available
- Verify custom module paths
- Error handling:
try: # Your custom code here pass except Exception as e: print(f"Custom code error: {e}")
- Check this troubleshooting guide thoroughly
- Review your configuration against the examples
- Test with minimal configuration to isolate issues
- Note exact error messages and when they occur
- 📖 Documentation: Complete guides
- 🐛 GitHub Issues: Report bugs
- 💬 Community: opensensor.io forums
- 📧 Direct Support: Contact through opensensor.io
-
Hardware setup:
- Microcontroller type (Pico, Pico W, ESP32S3)
- GrowMax board version
- Connected sensors and displays
-
Software versions:
- MicroPython firmware version
- GrowMax package version
- Thonny IDE version
-
Configuration:
- Your
config.pyfile (remove sensitive info like WiFi passwords) - Any custom modifications
- Your
-
Error details:
- Exact error messages
- When the error occurs
- Steps to reproduce
-
What you've tried:
- Solutions attempted from this guide
- Any temporary workarounds found
-
Reset configuration:
- Copy fresh
config.pyfrom/lib/growmax/config.py - Make minimal changes for testing
- Copy fresh
-
Restart program:
- Stop current program in Thonny
- Run again with fresh configuration
-
Reinstall firmware:
- Flash fresh MicroPython firmware
- Reinstall GrowMax package
-
Start from scratch:
- Follow Quick Start Guide step by step
- Add features one at a time
Remember: Most issues are configuration-related and can be solved by carefully reviewing your settings against the examples in this guide.
Still stuck? Don't hesitate to reach out for help at opensensor.io!