Skip to content

Repository files navigation

rcservo logo

SerialTalk: platform-independent symmetric communication library

This package facilitates communication between devices like Robots and peripheral embedded systems or monitors over a serial communication line. Sounds abstract? Think of connecting an OpenMV camera to a LEGO SPIKE Prime Robot. Or linking up two Pyboards.

PyPI versionLicense: MITMicroPython Compatible

Installation

For Python (PyPI)

Install from PyPI using pip:

pip install serialtalk

For MicroPython

Option 1: Using viperIDE.org (Recommended)

  1. Go to viperIDE.org
  2. Connect to your MicroPython device
  3. Navigate to Tools > Package Manager
  4. Click Install package via link
  5. Enter: github:antonvh/SerialTalk

Option 2: Using mpremote

mpremote mip install github:antonvh/SerialTalk

Option 3: Using mip from device REPL

importmipmip.install("github:antonvh/SerialTalk")

Usage

When you want default UART for the platform you're running on, just go: from serialtalk.auto import SerialTalk

When you want special channels like sockets or bluetooth, do it like this:

fromserialtalkimportSerialTalkfromserialtalk.socketsimportClientSocketSerialser=SerialTalk(ClientSocketSerial("127.0.0.1",8080))
ser.call('echo','read?')

Example with OpenMV H7

  1. Copy the complete serialtalk directory to the OpenMV flash (not the whole SerialTalk, just the serialtalk subfolder)

  2. Create a main.py with this code. It is an adaptation of the OpenMV Hello world

    importsensor, image, timefromserialtalk.autoimportSerialTalksensor.reset() # Reset and initialize the sensor.sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240)sensor.skip_frames(time=2000) # Wait for settings take effect.clock=time.clock() # Create a clock object to track the FPS.st=SerialTalk() # Create UART comm objectdeffps(): # Create function to call from uartreturnclock.fps()
    st.add_command(fps,"repr") # Add function to callable uart commandswhile(True):
    clock.tick() # Update the FPS clock.img=sensor.snapshot() # Take a picture and return the image.st.process_uart() # Process aurt callsprint(clock.fps()) # Note: OpenMV Cam runs about half as fast when connected# to the IDE. The FPS should increase once disconnected.
  3. On the SPIKE Prime Install mpy-robot-tools with the installer script. Note that the installer may seem unresponsive. Just have some patience.

  4. Run this script on SPIKE Prime:

    fromprojects.mpy_robot_tools.serialtalkimportSerialTalkfromprojects.mpy_robot_tools.mshubimportMSHubSerialst=SerialTalk(MSHubSerial('F'))
    print(st.call('echo','Hello there OpenMV!'))
    print(st.call('fps'))

This should be the result:

Spike result

Roadmap, todo

  • test on esp8266 platform
  • test on bt comm channels
  • create pyserial/desktop channels

About

Simple symmetric MicroPython RPC protocol for serial lines like UART, Sockets, Bluetooth,...

Topics

Resources

Contributing

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages