嘉立创产业服务站群
发作品签到
专业版

光纤USB串口模块

工程标签

398
0
0
5

简介

光纤收发器+USB串口 实现串口信号通过光纤传输

简介:光纤收发器+USB串口 实现串口信号通过光纤传输
模块征集令

开源协议

CERN Open Hardware License

创建时间:2025-04-07 04:55:45更新时间:2025-04-15 03:58:33

描述

项目简介

本项目是基于 CH340N光纤串口收发器

项目功能

通过光纤收发器将 CH340NTX/RX 信号进行光电转换,从而实现通过光纤传输 UART 信号

原理解析(硬件说明)

通过缓冲器三路并联来驱动光纤发送器
光线接收器不需要额外电路即可输出反向电平

回环测试代码

image.png

点我展开代码
#!/usr/bin/env python3

import serial
import random
import string
import time
import argparse

# ANSI color codes
RED = "\033[31m"
GREEN = "\033[32m"
RESET = "\033[0m"

def serial_loopback_test(port, baudrate, data_length, test_cycles, delay):
    """
    Serial loopback test with configurable parameters
    """
    try:
        with serial.Serial(port, baudrate, timeout=1) as ser:
            print(f"Starting loopback test (baudrate: {baudrate}, data length: {data_length})")

            for i in range(test_cycles):
                # Generate random ASCII string
                test_str = ''.join(random.choices(
                    string.ascii_letters + string.digits,
                    k=data_length
                ))

                # Send data
                ser.write(test_str.encode())
                print(f"<<< Sent     [{i+1}/{test_cycles}]: {test_str}")

                # Receive loopback data
                received = ser.read(data_length).decode()

                # Verify data
                if received == test_str:
                    print(f"{GREEN}>>> Received [{i+1}/{test_cycles}]: {received} (MATCHED){RESET}")
                else:
                    print(f"{RED}>>> Received [{i+1}/{test_cycles}]: {received} (MISMATCH!){RESET}")

                time.sleep(delay)

            print("Test completed")

    except Exception as e:
        print(f"Error: {e}")

def main():
    parser = argparse.ArgumentParser(description="Serial port loopback tester")
    parser.add_argument("--port", default="/dev/ttyUSB0", help="Serial port device")
    parser.add_argument("--baud", type=int, default=115200, help="Baud rate")
    parser.add_argument("--length", type=int, default=30, help="Data length per packet")
    parser.add_argument("--cycles", type=int, default=100, help="Number of test cycles")
    parser.add_argument("--delay", type=float, default=0, help="Delay between sends (seconds)")

    args = parser.parse_args()

    serial_loopback_test(
        port=args.port,
        baudrate=args.baud,
        data_length=args.length,
        test_cycles=args.cycles,
        delay=args.delay
    )

if __name__ == "__main__":
    main()

github

github 仓库

注意事项

  • 不要焊接 发送端 270 Ohm 电阻

实物图

v1_pcb.jpg

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航