M5StickV使用串口发送图像至M5Stack
通过定义GROVE引脚可以方便的将图像通过串口发送至M5Stack,按照JPEG的格式组装字节数组直接发送即可import network, socket, time, sensor, image,lcd
from Maix import GPIO
from fpioa_manager import fm, board_info
from machine import UART
#M5StickV Camera Start
clock = time.clock()
lcd.init()
lcd.rotation(2)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
#sensor.set_vflip(1)
sensor.run(1)
sensor.skip_frames(time = 2000)
#M5StickV GPIO_UART
fm.register(34, fm.fpioa.UART2_TX, force=True)
fm.register(35, fm.fpioa.UART2_RX, force=True)
uart_Port = UART(UART.UART2, 115200,8,0,0, timeout=1000, read_buf_len= 4096)
while True:
clock.tick()
img = sensor.snapshot()
lcd.display(img)
img_buf = img.compress(quality=70)
img_size1 = (img.size()& 0xFF0000)>>16
img_size2 = (img.size()& 0x00FF00)>>8
img_size3 = (img.size()& 0x0000FF)>>0
data_packet = bytearray()
uart_Port.write(data_packet)
uart_Port.write(img_buf)
time.sleep(1.0) #这里的时间不可省略,省略M5Stack画面不流畅
print("finish")
M5Stack使用PORTA接口接收,按照规则解析,每次10个字节
#include <M5Stack.h>
HardwareSerial serial_ext(2);
typedef struct {
uint32_t length;
uint8_t *buf;
} jpeg_data_t;
jpeg_data_t jpeg_data;
static const int RX_BUF_SIZE = 20000;
static const uint8_t packet_begin = { 0xFF, 0xD8, 0xEA };
void setup()
{
M5.begin();
jpeg_data.buf = (uint8_t *) malloc(sizeof(uint8_t) * RX_BUF_SIZE);
jpeg_data.length = 0;
if (jpeg_data.buf == NULL) {
Serial.println("malloc jpeg buffer 1 error");
}
serial_ext.begin(115200, SERIAL_8N1, 22, 21);
}
void loop()
{
M5.update();
if (serial_ext.available()) {
uint8_t rx_buffer;
int rx_size = serial_ext.readBytes(rx_buffer, 10);
if (rx_size == 10) { //packet receive of packet_begin
if ((rx_buffer == packet_begin) && (rx_buffer == packet_begin) && (rx_buffer == packet_begin)) {
//image size receive of packet_begin
jpeg_data.length = (uint32_t)(rx_buffer << 16) | (rx_buffer << 8) | rx_buffer;
int rx_size = serial_ext.readBytes(jpeg_data.buf, jpeg_data.length);
//image processing,
M5.Lcd.drawJpg(jpeg_data.buf, rx_size);
//image processing end
}
}
}
}
请问楼主,M5Stack和stickV 的连线是怎样的?我在M5stack 的port C 中引出四根线,直接连到stick
V的端口上吗?
baiheren 发表于 2019-12-27 15:24
请问楼主,M5Stack和stickV 的连线是怎样的?我在M5stack 的port C 中引出四根线,直接连到stick
V的端口 ...
能否请具体指点,谢谢:)或上个图? baiheren 发表于 2019-12-27 15:34
能否请具体指点,谢谢或上个图?
grove线直接连上 vany5921 发表于 2019-12-27 16:02
grove线直接连上
谢谢你的回复,我今天再次做实验,还是没有成功。能否请你再指点一下:D。 我先给stack和V分别下载你给的程序。其中arduino的提示如图。另外硬件连线,发现只有5v给到V,stack上不能用usb供电,这种情况下,V才可以采集到画面,但是传不过来。stack上面显示的一片灰白。不知道为什么?
本帖最后由 vany5921 于 2019-12-30 15:14 编辑
baiheren 发表于 2019-12-30 09:01
谢谢你的回复,我今天再次做实验,还是没有成功。能否请你再指点一下。 我先给stack和V分别下载你给 ...
我代码里写的是portA(22/21),不是portC,用蓝色口你要自己改一下端口号
页:
[1]