USB转TTL

TTL-USB模块

首先我们要了解的是:各种单片机(包括Arduino, OpenMV, esp8266, stm32, 51)使用的串口都是TTL串口!不是rs485,不是rs232!

TTL串口的电压是3.3V或者5V,RS232的电压是+-15V,RS485的电压是5V,但是两根数据线是差分线,协议不一样,不能通用的。

我们使用的模块是TTL转USB模块(推荐使用FTDI模块,稍微贵一点,但是质量好):

img

连接图(注意共地和RXTX交错连接):

OpenMV FTDI
P4(TX) RX
P5(RX) TX
GND GND

img

将TTL模块的USB端插入电脑,会出现一个串口,打开串口助手(OpenMV的串口助手亦可)。

注意,有些软件是可以选择HEX(16进制)或者ASC(ascii),要选择ASC,才能显示字符串。

OpenMV上运行uart.write("hello world!")的程序(见上节)。

在串口助手会显示Hello world!字符。

如果运行下面的程序:

import sensor, image, time
import json
from pyb import UART
# For color tracking to work really well you should ideally be in a very, very,
# very, controlled enviroment where the lighting is constant...
yellow_threshold   = ( 46,  100,  -68,   72,   58,   92)
# You may need to tweak the above settings for tracking green things...
# Select an area in the Framebuffer to copy the color settings.

sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.

uart = UART(3, 115200)

while(True):
    clock.tick() # Track elapsed milliseconds between snapshots().
    img = sensor.snapshot() # Take a picture and return the image.

    blobs = img.find_blobs([yellow_threshold])
    if blobs:
        print('sum : %d'% len(blobs))
        data=[]
        for b in blobs:
            # Draw a rect around the blob.
            img.draw_rectangle(b.rect()) # rect
            img.draw_cross(b.cx(), b.cy()) # cx, cy
            data.append((b.cx(),b.cy()))

        #[(1,22),(-3,33),(22222,0),(9999,12),(0,0)]
        data_out = json.dumps(data)
        uart.write(data_out +'\r\n')
        print(data_out)

会将所有的色块的中心坐标发出去。

Arduino转发程序

因为Arduino Uno只有一个串口,一个用来接受,就没办法发送给电脑显示了。所以我们使用Arduino Mega,来进行串口转发程序。

OpenMV Arduino Mega
P4(TX) RX1 19
P5(RX) TX1 18
GND GND

img

转发逻辑是这样的:OpenMV的数据发送给Arduino Mega的串口1,Arduino Mega的串口0是连接到板子内置的TTL-USB并连接到电脑的。

所以,在ArduinoMega的逻辑就是:读串口1的数据(json),然后解析成数组,发送给串口0。

安装ArduinoJson库

https://bblanchon.github.io/ArduinoJson/

代码

待添加

Copyright 杭州云江科技有限公司 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-04-02 09:53:12

results matching ""

    No results matching ""