Grove - Serial Camera Kit
http://wiki.seeedstudio.com/Grove-Serial_Camera_Kit/使っているコントローラ:OV528の仕様書
- [Datasheet] CJ OV528
- Grove Camera KITの紹介ページhttp://wiki.seeedstudio.com/Grove-Serial_Camera_Kit/
GroveSerialCameraとはUARTで接続する。ただし、ESP32にシルク印刷されているRxD,TxDは、開発用に使っているので、その他のピンで使えるUARTを探す
MicroPython リファレンスより
Available Pins are from the following ranges (inclusive): 0-19, 21-23, 25-27, 32-39.
- Pins 1 and 3 are REPL UART TX and RX respectively
- Pins 6, 7, 8, 11, 16, and 17 are used for connecting the embedded flash, and are not recommended for other uses
- Pins 34-39 are input only, and also do not have internal pull-up resistors
- The pull value of some pins can be set to
Pin.PULL_HOLD
to reduce power consumption during deepsleep.
Pin1,Pin3とは、GPIO1,GPIO3の事の様である(下記のRxD,TxDと一致)
UARTは3系統あるはずで、開発用のUART0以外がどうなっているのかを確認。
結果、U2TxD:GPIO17,U2RxD:GPIO16を使うことにする。
esp32-wroom-32_datasheet_en.pdf より
memo heap in MicroPython
https://docs.micropython.org/en/latest/reference/constrained.html#the-heap
OV528の仕様書より、立ち上げ時はまずコネクション確立を行うようにと書かれていて、速度は9600bpsであった。それに従い、まずは、SYNCコマンドを送る関数を作る。
OV528(Seeed Studio Grove Serial Cameraのコントローラ)に対してシリアルで接続してコネクションを確立するまでの手順 (言語はMycroPython)
--------------------------------------------------
# from machine import UART
from time import sleep uart1 = UART(1, 9600) uart1.init(9600, bits=8, parity=None, stop=1,tx=17,rx=16) INIT = bytes([0xAA,0x0D,0x00,0x00,0x00,0x00]) def make_connection(): for x in range(60): uart1.write(INIT)
sleep(1)
if(uart1.any() > 0): packet=uart1.read(uart1.any()) show_packet(packet) return True #print(uart1.any()) #print(uart1.read(1)) return False def show_packet(packet): for i in range(6): print("[{:02x}]".format(packet[i]),end="") print("")多少てこずったのでオシロで確認--------------------------------------------------
シリアルコンソールでの表示
>>> make_connection() [aa][0e][0d][00][00][00] True
同期が確立した時の波形
上がカメラへの送信、下がカメラからの返却
速度は9600bps
安定動作のためには、SYNCパケット送信の際、一発目を送ってから、少し時間を空けて2発目を送ると、かなり確実にACKが返る。上記実装例では1秒のSLEEPを入れている。連続してバリバリに送ると、いつまでたってもACKが返らない。
追記
Grove Serial Cameraの製品説明ページで確認すると、電源5Vで、信号は232Cと書かれている。5Vのシリアルではなく、本気の232Cなのだろう。。多分。今回は、カメラの電源は5Vを供給しているが、カメラのシリアルはESP32のバス直結なので、3.3Vで繋いでいる。現状動いているがこれは規格外と思われる。Grove Serial Cameraの基板側の回路図がないので、基板内のレベル変換がどうなっているのか分からず。
No comments:
Post a Comment