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

Contributors 3

  •  
  •  
  •