Ameba Arduino: [RTL8195] UVC – 使用 UVC 将照片传出

材料准备

  • Ameba x 1
  • Logitech C170 web cam x 1
  • Micro USB OTG adapter x 1

范例说明

这个范例里,会将Camera设定成Motion JPEG模式,然后每秒尝试将照片从TCP传出到网路另一端。
另一端则需要使用TCP来接收照片,这个范例里会使用linux的netcat来接收照片。
首先打开范例 “File” -> “Examples” -> “AmebaUVC” -> “uvc_jpeg_capture”
接着需要修改几个设定:

  • Wifi连线需要使用的ssid/password
  • 接收端的IP,在linux底下可以打ifconfig看目前的IP

接线如同之前的UVC范例。
接着在linux的电脑上打: nc -l 5001 > my_jpeg_file.jpeg
这个命令会停着直到socket结束或出现问题。这个范例里我们会让Ameba传完照片之后将socket关掉。
我们将程式码编译并上传至Ameba,完成之后按下Reset按钮,会看到Ameba连线完成之后,将第一张照片成功发出去,之后会出现Fail to connect,代表这个范例完成了。
1

同时会在linux端看到原本等待资料的nc命令已经结束,在命令列当前的目录也出现了my_jpeg_file.jpeg的档案,打开看一下照片是否完整。如果需要再收一次照片,再下一次nc命令即可,Ameba端会每秒尝试送照片。

程式码说明

在UVC begin()的地方多了一个参数可以使用:,最后面的地方指定成JPEG_CAPTURE,这样就不会启动RTSP service,但仍会抓取Camera的封包。
UVC.begin(UVC_MJPEG, 640, 480, 30, 0, JPEG_CAPTURE);
在loop()里面,将JPEG存到预先定义好的jpegbuf
int len = UVC.getJPEG(jpegbuf);
接着尝试透过TCP将jpegbuf的资料传出去即可。