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的資料傳出去即可。