N.E.C.T.R and R.O.V.E.R

Ma'at Hetep

N.E.C.T.R and R.O.V.E.R

Never-Ending Cleaning and Tidying Robot
Robotic Operated Velcro-Equipped Rover
Watch on YouTube
N.E.C.T.R, the never-ending cleaning and tidying robot, is my second physically computed project. I enhanced it a bit and gave him a helping companion for my third and final project. This would be R.O.V.E.R, the robotic-operated velcro-equipped rover. N.E.C.T.R is a 3D printed hollow box with a smile, containing 4 continuous servo motors attached to wheels. These wheels have straw cleaners woven through them, allowing it to clean in 4 spirals. And to allow for an even better clean, there is a small machine in the back that drips water like a small IV. I attached this to a runner's water bottle to hold a significant amount of water for a good clean. But when the mess is all cleaned up you're left with so much water! That's when R.O.V.E.R comes in, N.E.C.T.R's helpful companion. R.O.V.E.R is also a 3D modeled hollow box with two motors on the underside of it. 4 wheels and a velcroed rag underneath to dry up the water. The front wheels are tied up and connected with the stems of the straw cleaners that are under N.E.C.T.R and crochet string. The same crochet string is used to give R.O.V.E.R a tail. N.E.C.T.R is powered by outlet/USB, circuit board, and connected with a breadboard. R.O.V.E.R is powered with IR sensors and USB as well. The wires and inner workings of N.E.C.T.R are held in by yellow Legos, R.O.V.E.R is held in with cardboard. N.E.C.T.R also has an input, by pressing its yellow button on the back, it is turned on and begins cleaning. When pressed again, he turns off!
Watch on YouTube

N.E.C.T.R Code

import time
import board
import pwmio
import digitalio
from adafruit_motor import servo
# Set up the servo motor
pwm = pwmio.PWMOut(board.A2, frequency=50)
my_servo = servo.ContinuousServo(pwm)
# Set up the LED
led = digitalio.DigitalInOut(board.A1)
led.direction = digitalio.Direction.OUTPUT
# Set up the button on A3
button = digitalio.DigitalInOut(board.A3)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP
# Keep track of last state
last_motor_state = False
waspressed = False
my_servo.throttle = 0.0
while True:
    print(button.value)
    if button.value == False:
        waspressed = True
    else:
        if waspressed == True:
            waspressed = False
            if last_motor_state == False:
                last_motor_state = True
            else:
                last_motor_state = False
    
    if last_motor_state == True:
        my_servo.throttle = 1.0
    else:
        my_servo.throttle = 0.0
    '''
    button_pressed = not button.value
    if button_pressed and not last_motor_state:
        print("Motor ON")
        my_servo.throttle = 1.0
        led.value = True
        last_motor_state = True
    elif not button_pressed and last_motor_state:
        print("Motor OFF")
        my_servo.throttle = 0.0
        led.value = False
        last_motor_state = False
    '''
    time.sleep(0.01)

R.O.V.E.R

##ROVERCode
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
# This example uses an L9110 H-bridge driver to run a DC Motor using two PWM pins.
# Hardware setup:
#   DC motor via L9110 H-bridge driver on two PWM pins that are on their own channels
#   e.g., RP2040 Pico pins GP28, GP27
import time
import board
import pwmio
from adafruit_motor import motor
PWM_PIN_A = board.A2  # pick any pwm pins on their own channels
PWM_PIN_B = board.A3
PWM_PIN_C = board.A1
PWM_PIN_D = board.A6
# DC motor setup
# DC Motors generate electrical noise when running that can reset the microcontroller in extreme
# cases. A capacitor can be used to help prevent this.
pwm_a = pwmio.PWMOut(PWM_PIN_A, frequency=50)
pwm_b = pwmio.PWMOut(PWM_PIN_B, frequency=50)
motor1 = motor.DCMotor(pwm_a, pwm_b)
pwm_c = pwmio.PWMOut(PWM_PIN_C, frequency=50)
pwm_d = pwmio.PWMOut(PWM_PIN_D, frequency=50)
motor2 = motor.DCMotor(pwm_c, pwm_d)
while True:
    print("*** DC motor test ***")
    print("\nForwards slow")
    motor1.throttle = 1.0
    motor2.throttle = 1.0
    print("  motor1 throttle:", motor1.throttle)
    print("  motor2 throttle:", motor2.throttle)
    time.sleep(5)
    print("\nStop")
    motor1.throttle = 0
    motor2.throttle = 0
    print("  motor1 throttle:", motor1.throttle)
    print("  motor2 throttle:", motor2.throttle)
    time.sleep(5)
    print("\nBackwards")
    motor1.throttle = -1.0
    motor2.throttle = -1.0
    print("  motor1 throttle:", motor1.throttle)
    print("  motor2 throttle:", motor2.throttle)
    time.sleep(5)
Like this project

Posted Apr 28, 2025

Physical Computing projects 2 and 3

Likes

1

Views

9

Timeline

Mar 26, 2025 - Apr 28, 2025

Lilac Lady Slot Machine 3D Model
Lilac Lady Slot Machine 3D Model
Tiny Dancer AR Project
Tiny Dancer AR Project
Sand Interaction
Sand Interaction
Food Pick Plus +
Food Pick Plus +