Skip to content

antonvh/SerialTalk

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 version License: MIT MicroPython 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

import mip
mip.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:

from serialtalk import SerialTalk
from serialtalk.sockets import ClientSocketSerial

ser = 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

    import sensor, image, time
    from serialtalk.auto import SerialTalk
    
    sensor.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 object
    def fps():                          # Create function to call from uart
        return clock.fps()
    st.add_command(fps,"repr")          # Add function to callable uart commands
    
    while(True):
        clock.tick()                    # Update the FPS clock.
        img = sensor.snapshot()         # Take a picture and return the image.
        st.process_uart()               # Process aurt calls
        print(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:

    from projects.mpy_robot_tools.serialtalk import SerialTalk
    from projects.mpy_robot_tools.mshub import MSHubSerial
    
    st = 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

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published