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上で正常に撮影出来ていることを確認しました。
↓実際の画像