Introduction

Coverage Report Documentation Status Build Status

CircuitRoomba is a CircuitPython library for interfacing with Roomba Open Interface devices.

Dependencies

This library depends on:

Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading the Adafruit library and driver bundle.

Installing from PyPI for blinka boards

pip install circuitroomba

To install in a virtual environment in your current project:

mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip install circuitroomba

For CircuitPython boards that don’t support blinka copy /circuitroomba from /src to /lib on the CircuitPython board. make install has been setup as a helper, but you may need to update the /Volume path for your system and board name.

make install

Usage Example

import board
import digitalio
import time
from circuitroomba.series6 import roomba

__repo__ = "https://github.com/AlexanderHagerman/circuitroomba.git"

# initialize roomba
bot = roomba.Commands(board.TX, board.RX, digitalio.DigitalInOut(board.A1))

# wake roomba from sleep mode
bot.wake_up()

# CircuitPython loop
while True:
    # send commands
    bot.start()
    bot.safe()
    bot.clean()

    time.sleep(2)

    bot.power()
    bot.stop()

    break

More examples are available in /examples.

Contributing

Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.

Sphinx documentation

Sphinx is used to build the documentation based on rST files and comments in the code. First, install dependencies (feel free to reuse the virtual environment from above):

python3 -m venv .env
source .env/bin/activate
pip install Sphinx sphinx-rtd-theme

Now, once you have the virtual environment activated:

cd docs
sphinx-build -E -W -b html . _build/html

This will output the documentation to docs/_build/html. Open the index.html in your browser to view them. It will also (due to -W) error out on any warning like Travis will. This is a good way to locally verify it will pass.

Images

circuit roomba high level circuit roomba running video roomba open interface connections circuit playground connections circuit playground connected to roomba

Table of Contents

Simple example

Ensure your device works with this simple example.

examples/circuitroomba_roomba.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# The MIT License (MIT)
#
# Copyright (c) 2019 Alexander Hagerman for Alexander Hagerman
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
"""
`circuitroomba`
================================================================================

CircuitPython helper library for interfacing with Roomba Open Interface devices.


* Author(s): Alexander Hagerman

**Hardware:**

* Adafruit Circuit Playground Express

**Software and Dependencies:**

* Adafruit CircuitPython firmware for the supported boards:
  https://github.com/adafruit/circuitpython/releases
"""

import board
import digitalio
import time
from circuitroomba.series6 import roomba

__repo__ = "https://github.com/AlexanderHagerman/circuitroomba.git"

bot = roomba.Commands(board.TX, board.RX, digitalio.DigitalInOut(board.A1))

c = 0

bot.wake_up()

while True:
    bot.start()
    bot.safe()
    bot.clean()

    time.sleep(2)

    bot.power()
    bot.stop()

    c += 1

    print(c)

    bot.wake_up()

    if c == 2:
        break

Indices and tables