-
 

oled_display_node package from oled_display_node repo

oled_display_node

Package Summary

Tags No category tags.
Version 1.1.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UbiquityRobotics/oled_display_node.git
VCS Type git
VCS Version master
Last Updated 2023-11-06
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

OLED I2C display node package

Additional Links

No additional links.

Maintainers

  • Mark Johnston

Authors

No additional authors.

OLED Display Output ROS Node

This module implements a ROS node (process) that does Display Updates to an OLED display connected on I2C. The node does some initial messages and then will subscribe to an inbound ROS topic and act on messages for update of lines on the display. Full line or line substring updates starting at a given X pixel on the given line are supported.

The tested display is the 1.3” diagonal display using a SH1106 chip controlled over the I2C bus. We prefer the pinout with Ground, Vcc, SCL then SDA lines for use with Ubiquity Robotics rev 5.x main boards. These displays are easily found on EBay but be sure the controller chip is the SH1106 and that they will work with a 3.3V supply and 3.3V I2C control.

The 1.3” OLED display using the SH1106 controller chip offers 8 lines of 15 characters The SH1106 is closely compatible with SSD1306 display that is typically the 0.96” OLED display. The difference is mostly at initialization and then changing the pixel X offset for the SH1106 control chip with a RAM space of 13264, while the SSD1306 pixel space is 12864.

ROS Paramaters

  • There are currently no ROS parameters available.

Publications

  • The node does not publish messasges to any ROS topic

Subscriptions

  • oled_display_node (msgs/DisplayOutput): Listen for display updates

The Qualified OLED Display we have Tested

There are several displays that are 1.3” displays using the SH1106 controller that will allow powering from 3.3V and also allow a 3.3V I2C bus. The pinout MUST be from left to right: Ground, 3.3V (Vcc), SCL and SDA. Sometimes this display is incorrectly stating the controller is a SSH1106 display but it is a point of confusion and is the SH1106. We have identified a specific vendor as well. You may purchase this display on amazon.com and look for this text in the title ‘HiLetgo 1.3” IIC I2C Serial 128x64 SSH1106 OLED LCD Display LCD Module’. there are cheaper solutions but only by a few dollars so we wish to only stand behind this display officially. We claim support for this display on the rev 5.1 motor controller board and this display will plug right in to our female connector on the rev 5.1 board. The Rev 5.0 controller used a male pin jack so you would have to modify your display with a female socket to use on a rev 5.0 board.

Manually Launching the Node

  • roslaunch oled_display_node display.launch

The node will start and then print the linux network name on top line and then the IP address will be on the 3rd line.

Launching the Node From a ROS launch file

To launch the node from a ROS launch file add to the launch file the 2 lines shown below. As an example you can add these two line to an Ubiquity Robotics Magni host processor in the file /opt/ros/kinetic/share/magni_bringup/launch/core.launch although we plan on configurable support in early 2020.

<node pkg="oled_display_node" type="oled_display_node" name="oled_display_node" output="screen">
</node>

Test or Example Script

A very simple python script that sends a few messasges to the display node has been supplied. Use the python script ‘display_writer.py` in the scripts folder to test the display.

  • python ./scripts/display_writer.py
CHANGELOG

Changelog for package oled_display_node

1.1.1 (2022-02-25)

  • added sensor_msgs to package xml
  • Contributors: Janez Cimerman

1.1.0 (2022-02-24)

  • Forcing display type to SH1106 because auto detection can fail on some displays and we specify the SH1106 for production so it is best to not auto-detect
  • Oled fixes feb2022 - Battery charge and motor power on off shown (#20)
  • Fix IP addr logic for proper IP addr on display. Show CHRG if battery above 27V. Better detection of display type which before some displays could be initialized wrong and show text backwards
  • Adding motor power on or off in display
  • Now with motor power on or off indication
  • Making display type detect more robust. Adding motor power on or off on display
  • Add LICENSE file
  • Add specific bit-field error codes. Fix the clear display for the 1306 display so junk chars on last 4 pixels get cleared in clearDisplay. Fix spam error for when display stops working after it had worked earlier. We will exit at this time. We are not going to try to retry and re-init the display at this time, too complex in possible different error cases. (#11)
  • Remove a battery voltage log spam message and make it a ROS_DEBUG. Correct battery status display so if low or ok the text does not shift from right to left. Adding blinking LOW battery indication.
  • Adding blinking LOW battery indication. I2C read/write oled_display_node calls with lock enforced by the kernel
  • I2C general read/write functions.
  • Adding autodetect of SH1106 or SSD1306 OLED displays with default to the SH1106 which should be the only display we source but just in case we can do either
  • Respond to review inputs. Added exit if no display is detected
  • Adding battery voltage readout
  • Add showing battery voltage on display if the battery_state topic is picked up by this node. Trying to more fully initialize OLED display to fix some bugs in it not working on all units perhaps from failed config after power up
  • Adding back in input from a review that somehow got regressed. Simple change
  • Contributors: Mark Johnston, Rohan Agrawal, Teodor

1.0.0 (2020-04-28)

  • Remove /* in comment that can cause warnings Bug: https://github.com/UbiquityRobotics/oled_display_node/issues/4
  • Refresh the IP addr and machine name lines every 10 seconds. This allows for a changed IP address due to networking changes to show up worse case in 10 seconds. Any other lines the app outside of the oled display driver is concerned must be refreshed by sending messages to the display node over the input topic as this auto-refresh does not want to make assumptions about user lines in use on the display
  • README.md
  • Refactoring to become oled_display_node
  • Added CMake install rules to allow for package release This should install the main executable, the launch files and the demo script.
  • Cleanup of package and make and more
  • trying to fix the section on starting from launch file
  • Cleanup and enhance README to point out we intend this display node to support 1.3 inch OLED display using the SH1106 controller chip
  • Initial push of OLED display node with README
  • Contributors: Mark Johnston, Mark Johston, Rohan Agrawal

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

Services

No service files found

Plugins

No plugins found.

Recent questions tagged oled_display_node at Robotics Stack Exchange

oled_display_node package from oled_display_node repo

oled_display_node

Package Summary

Tags No category tags.
Version 1.1.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UbiquityRobotics/oled_display_node.git
VCS Type git
VCS Version master
Last Updated 2023-11-06
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

OLED I2C display node package

Additional Links

No additional links.

Maintainers

  • Mark Johnston

Authors

No additional authors.

OLED Display Output ROS Node

This module implements a ROS node (process) that does Display Updates to an OLED display connected on I2C. The node does some initial messages and then will subscribe to an inbound ROS topic and act on messages for update of lines on the display. Full line or line substring updates starting at a given X pixel on the given line are supported.

The tested display is the 1.3” diagonal display using a SH1106 chip controlled over the I2C bus. We prefer the pinout with Ground, Vcc, SCL then SDA lines for use with Ubiquity Robotics rev 5.x main boards. These displays are easily found on EBay but be sure the controller chip is the SH1106 and that they will work with a 3.3V supply and 3.3V I2C control.

The 1.3” OLED display using the SH1106 controller chip offers 8 lines of 15 characters The SH1106 is closely compatible with SSD1306 display that is typically the 0.96” OLED display. The difference is mostly at initialization and then changing the pixel X offset for the SH1106 control chip with a RAM space of 13264, while the SSD1306 pixel space is 12864.

ROS Paramaters

  • There are currently no ROS parameters available.

Publications

  • The node does not publish messasges to any ROS topic

Subscriptions

  • oled_display_node (msgs/DisplayOutput): Listen for display updates

The Qualified OLED Display we have Tested

There are several displays that are 1.3” displays using the SH1106 controller that will allow powering from 3.3V and also allow a 3.3V I2C bus. The pinout MUST be from left to right: Ground, 3.3V (Vcc), SCL and SDA. Sometimes this display is incorrectly stating the controller is a SSH1106 display but it is a point of confusion and is the SH1106. We have identified a specific vendor as well. You may purchase this display on amazon.com and look for this text in the title ‘HiLetgo 1.3” IIC I2C Serial 128x64 SSH1106 OLED LCD Display LCD Module’. there are cheaper solutions but only by a few dollars so we wish to only stand behind this display officially. We claim support for this display on the rev 5.1 motor controller board and this display will plug right in to our female connector on the rev 5.1 board. The Rev 5.0 controller used a male pin jack so you would have to modify your display with a female socket to use on a rev 5.0 board.

Manually Launching the Node

  • roslaunch oled_display_node display.launch

The node will start and then print the linux network name on top line and then the IP address will be on the 3rd line.

Launching the Node From a ROS launch file

To launch the node from a ROS launch file add to the launch file the 2 lines shown below. As an example you can add these two line to an Ubiquity Robotics Magni host processor in the file /opt/ros/kinetic/share/magni_bringup/launch/core.launch although we plan on configurable support in early 2020.

<node pkg="oled_display_node" type="oled_display_node" name="oled_display_node" output="screen">
</node>

Test or Example Script

A very simple python script that sends a few messasges to the display node has been supplied. Use the python script ‘display_writer.py` in the scripts folder to test the display.

  • python ./scripts/display_writer.py
CHANGELOG

Changelog for package oled_display_node

1.1.1 (2022-02-25)

  • added sensor_msgs to package xml
  • Contributors: Janez Cimerman

1.1.0 (2022-02-24)

  • Forcing display type to SH1106 because auto detection can fail on some displays and we specify the SH1106 for production so it is best to not auto-detect
  • Oled fixes feb2022 - Battery charge and motor power on off shown (#20)
  • Fix IP addr logic for proper IP addr on display. Show CHRG if battery above 27V. Better detection of display type which before some displays could be initialized wrong and show text backwards
  • Adding motor power on or off in display
  • Now with motor power on or off indication
  • Making display type detect more robust. Adding motor power on or off on display
  • Add LICENSE file
  • Add specific bit-field error codes. Fix the clear display for the 1306 display so junk chars on last 4 pixels get cleared in clearDisplay. Fix spam error for when display stops working after it had worked earlier. We will exit at this time. We are not going to try to retry and re-init the display at this time, too complex in possible different error cases. (#11)
  • Remove a battery voltage log spam message and make it a ROS_DEBUG. Correct battery status display so if low or ok the text does not shift from right to left. Adding blinking LOW battery indication.
  • Adding blinking LOW battery indication. I2C read/write oled_display_node calls with lock enforced by the kernel
  • I2C general read/write functions.
  • Adding autodetect of SH1106 or SSD1306 OLED displays with default to the SH1106 which should be the only display we source but just in case we can do either
  • Respond to review inputs. Added exit if no display is detected
  • Adding battery voltage readout
  • Add showing battery voltage on display if the battery_state topic is picked up by this node. Trying to more fully initialize OLED display to fix some bugs in it not working on all units perhaps from failed config after power up
  • Adding back in input from a review that somehow got regressed. Simple change
  • Contributors: Mark Johnston, Rohan Agrawal, Teodor

1.0.0 (2020-04-28)

  • Remove /* in comment that can cause warnings Bug: https://github.com/UbiquityRobotics/oled_display_node/issues/4
  • Refresh the IP addr and machine name lines every 10 seconds. This allows for a changed IP address due to networking changes to show up worse case in 10 seconds. Any other lines the app outside of the oled display driver is concerned must be refreshed by sending messages to the display node over the input topic as this auto-refresh does not want to make assumptions about user lines in use on the display
  • README.md
  • Refactoring to become oled_display_node
  • Added CMake install rules to allow for package release This should install the main executable, the launch files and the demo script.
  • Cleanup of package and make and more
  • trying to fix the section on starting from launch file
  • Cleanup and enhance README to point out we intend this display node to support 1.3 inch OLED display using the SH1106 controller chip
  • Initial push of OLED display node with README
  • Contributors: Mark Johnston, Mark Johston, Rohan Agrawal

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Name Deps
magni_bringup

Launch files

Services

No service files found

Plugins

No plugins found.

Recent questions tagged oled_display_node at Robotics Stack Exchange