Add Omega2+ wifi/ssh to Neato XV robot vacuum



  • Bought a used robot vacuum (Neato XV-21 no wifi) with a non-functional display.

    I found the following on the Neato's motherboard:

    D38: USB D+, D-, and V+
    Q2: 3.3v+
    Battery Terminal: GND

    I connected the Omega2+ in this way

    3.3 Vin -> Q2
    GND -> GND
    USB+ -> D38
    USB- -> D38
    GPIO11 -> 1k resister -> D38

    This is the second XV (different model/year) for me to do this... it was a bit tricky finding the 3.3v source because this particular XV would "hibernate" by default until you plugged it in to an AC outlet or you pushed the button. So if you do this yourself keep the Neato LCD ribbon cable plugged, push the large button so the mainboard wakes up and you can probe for a 3.3v source near the ribbon cable on the main board. You should see several transistors/voltage regulators and be able to find one.

    I have the Omega2+ GPIO11 -> the Neato USB Vin since you need to "disconnect" the USB cable for it to accept cleaning commands (otherwise it thinks it is tethered to a PC).

    I can then enable USB serial with the following:

    fast-gpio set 11 1
    screen /dev/ttyACM0
    help
    clean
    Ctrl-A Ctrl-k
    fast-gpio set 11 0

    You can now ssh into the robot, manually control, or automate.

    1_1502419600903_IMG_20170810_194309-small.jpg

    0_1502419600902_IMG_20170810_194201-small.jpg

    root@boubagarage:~# cat /etc/rc.local
    #Put your custom commands here that should be executed once
    #the system init finished. By default this file does nothing.

    #turn of the pin for USB V+ by default
    fast-gpio set-output 11
    fast-gpio set 11 0
    sleep 1

    #signals boot complete but also sets up the serial port
    #so that echo and cat from bash works similar to screen
    /root/xv playsound 2

    exit 0

    root@boubagarage:~# cat xv
    #!/bin/bash
    #/root/xv

    #error out if already high
    fast-gpio read 11 | grep -v ': 0' && exit 1

    T="$(echo /dev/ttyACM* | awk '{ print $1 }')"
    echo T="$T"

    #clear out old data
    [ -e "$T" ] && cat "$T" > /dev/null && sleep 1

    fast-gpio set 11 1

    while [ ! -e "$T" ]
    do
    sleep 1
    T="$(echo /dev/ttyACM* | awk '{ print $1 }')"
    done

    #emulate screen settings
    stty -F "$T" -echo -icrnl

    cat "$T" &
    sleep 1

    echo "$@" > "$T"
    sleep 1

    echo "geterr" > "$T"
    sleep 1

    fast-gpio set 11 0



  • This post is deleted!

  • administrators

    @David-Duffey Awesome project! Definitely 2-Bullet Tuesday worthy.
    For your code, if you add a line with just three backticks ``` before and after your code, it will format it and usually do some syntax highlighting!

    echo "like so"
    


Looks like your connection to Community was lost, please wait while we try to reconnect.