ブログ

Armadillo-640:TTLシリアルJPEGカメラで撮影した画像を保存する

at_yukari.hara
2020年1月20日 8時31分

Armadillo-640を使って、TTLシリアルJPEGカメラで写真を撮影をして保存してみました。
今回は、シリアルコンソールの出力をUART1からUART3に変更し、UART1にカメラを接続しました。

※今回使用したカメラはこちらです。
※手順やコードはこちらを参考させていただきました。

手順

1.コンソールをUART3に設定する

下記URLを参考にブートローダーとブートパラメーターを変更し、コンソールをUART3に変更します。
https://armadillo.atmark-techno.com/howto/armadillo-640-uart3-console

2.Armadillo-640にuartカメラを接続します。

Armadillo-640 CON9 UARTカメラ
[3]GPIO1_IO17 TX-A
[5]GPIO1_IO16 RX-B
[9]GND GND
[23]USB2_VBUS 5V

3.python3、pipをインストールします。

※ネットワーク接続が必要です。

[armadillo ~]# apt-get install python3
[armadillo ~]# apt-get install python3-pip

4.必要なライブラリをインストールします。

※ネットワーク接続が必要です。

[armadillo ~]# pip3 install adafruit-blinka
[armadillo ~]# pip3 install adafruit-circuitpython-vc0706

5.pythonスクリプトを作成します。

import serial
import time
import adafruit_vc0706

IMAGE_FILE = '/root/image.jpg'

uart = serial.Serial("/dev/ttymxc0",baudrate=115200, timeout=0.25)
vc0706 = adafruit_vc0706.VC0706(uart)

print('VC0706 version:')
print(vc0706.version)

vc0706.image_size = adafruit_vc0706.IMAGE_SIZE_640x480
print('Using 640x480 size image.')

print('SNAP!')
if not vc0706.take_picture():
    raise RuntimeError('Failed to take picture!')

frame_length = vc0706.frame_length
print('Picture size (bytes): {}'.format(frame_length))

print('Writing image: {}'.format(IMAGE_FILE), end='', flush=True)
stamp = time.monotonic()
with open(IMAGE_FILE, 'wb') as outfile:
    wcount = 0
    while frame_length > 0:
        t = time.monotonic()
        to_read = min(frame_length, 32)
        copy_buffer = bytearray(to_read)
        if vc0706.read_picture_into(copy_buffer) == 0:
            raise RuntimeError('Failed to read picture frame data!')
        outfile.write(copy_buffer)
        frame_length -= 32
        wcount += 1
        if wcount >= 64:
            print('.', end='', flush=True)
            wcount = 0
print()
print('Finished in %0.1f seconds!' % (time.monotonic() - stamp))

6.実行

[armadillo ~]# python3 camera.py

7.確認

正常に完了すると、/root/以下にimage.jpgファイルが保存されています。
今回はこちらをUSBメモリに取り出し、PC上で正常に撮影出来ていることを確認しました。

↓実際の画像

TAG index