Skip to content

PeterJohnson/rpi-colorsensor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

REV Color Sensor Raspberry Pi - NetworkTables interface

This is intended for use with the WPILibPi image, but can work with any Raspberry Pi that has RobotPy networktables installed.

Raspberry Pi Setup

Setting up the rPi:

  • ssh in (username pi, password raspberry), then:
    • run rw to put the Pi into writable mode
    • run sudo systemctl enable pigpiod
    • run sudo raspi-config, Interface Options, I2C, Yes, OR:
      • edit /etc/modules, add i2c-dev line
      • edit /boot/config.txt:
        • uncomment dtparam=i2c_arm=on line

To configure to run automatically as a service (after testing manually):

  • run sudo mkdir -p /service/colorsensor
  • create a /service/colorsensor/run file with the following contents:
#!/bin/sh
exec /home/pi/rpi-colorsensor.py
  • run sudo chmod a+x /service/colorsensor/run
  • run sudo ln -s /tmp/colorsensor-supervise /service/colorsensor/supervise
  • run sudo ln -s /service/colorsensor /etc/service/colorsensor

The default hardware I2C bus is bus 1 on GPIO 2 (Data) and GPIO 3 (Clock). These pins include 1.8k pull-up resistors to 3.3V.

It is possible to get up to 4 additional I2C busses (3, 4, 5, 6) via other GPIO pins. Note: you'll need to add external pull-ups to 3V3 on these GPIO pins. Alternatively, the Pi has support for external I2C mux devices hooked up to I2C bus 1, see i2c-mux in /boot/overlays/README.

On the rPi 3b, software I2C must be used; add the following to /boot/config.txt:

      dtoverlay=i2c-gpio,bus=6,i2c_gpio_sda=22,i2c_gpio_scl=23
      dtoverlay=i2c-gpio,bus=5,i2c_gpio_sda=12,i2c_gpio_scl=13
      dtoverlay=i2c-gpio,bus=4,i2c_gpio_sda=8,i2c_gpio_scl=9
      dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=4,i2c_gpio_scl=5

On the rPi 4, additional hardware busses are available; add to /boot/config.txt:

      dtoverlay=i2c3
      dtoverlay=i2c4
      dtoverlay=i2c5
      dtoverlay=i2c6

This program shows how to operate a single device on bus 1 and two devices (one on bus 1 and one on bus 3). The multiple device code is commented out.

Pinouts

For information on how the GPIO numbers map to the Raspberry Pi pins, see I2C at Raspberry Pi GPIO Pinout.

The 4-pin sensor cable is GND, 3.3V, SDA, and SCL. So to wire it to the Raspberry Pi I2C bus 1, connect:

  • GND (black) to Pin 6
  • 3.3V (red) to Pin 1
  • SDA (white) to Pin 3
  • SCL (blue) to Pin 5

About

Raspberry Pi code for REV color sensor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages