GlobalEye
A simple camera board using GMAX3412 1" 4K@30fps global shutter sensor
Install / Use
/learn @will127534/GlobalEyeREADME
GMAX3412 breakout board
A basic minimum GMAX3412 (1" / 4096×3072 / Global Shutter) board for Raspberry Pi.
<img width="1280" alt="image" src="https://github.com/user-attachments/assets/07d92453-3e88-4c81-9928-7470d9cfda32" />In general this is a simple breakout board for the GMAX3412 sensor — see the driver repo here.
The sensor itself is quite interesting: it needs a trigger pulse to start a new frame, and it can’t generate that pulse by itself. Because of that, this board includes a MSPM0C1104 MCU to generate the signal and listen for commands over I2C.
The MCU firmware and the Python script to talk to it live under software/.
But if you are planning to send the clock/trigger via other means, you can ignore that and use the U.FL connector to feed signals in.
The driver is set up as external exposure:
- Rising edge triggers a new frame
- Pulse width is the exposure duration
Repo layout
Gerbers/— manufacturing filesbom/— BOM / parts listsoftware/— MSPM0 firmware + Python I2C control scriptdatasheet/— datasheet backup copy
Images
<img width="1280" alt="image" src="https://github.com/user-attachments/assets/53eb4a42-8ea5-4f12-b764-6d9b37767cd4" /> <img width="1280" alt="image" src="https://github.com/user-attachments/assets/5b95bd54-53f1-42e3-ba69-38ca70e62af9" />See it in action here: Youtube.
The board is tested with Raspberry Pi 5.
The trigger signal looks like this:
<img width="1280" alt="image" src="https://github.com/user-attachments/assets/56f11915-6237-4873-89a1-e6653319db5b" />
Yellow is the TEXP, and blue one is the TDIG output from the sensor showing "Frame Overhead Time".
Datasheet
It is not every day you see a detailed datasheet directly from the manufacture appared on the top search result:
https://gpixel.com/public/uploads/admin/file/pdf-7917552d763a512ce4860ce10e70934f.pdf
…but I also keep a backup under the datasheet/ folder.
Notes
Current issue I would say is that RPI will shows different FPS reading then the setting because RPI/CAM/MCU are all on different clock, and it is hard to have fine tuning to the timers (the current setup is using 16bit timer), something may could be done with chaining two 16bit timers and act as a 32bit timer but that is for future work. Additionally MSPM0C1104 can not take the same 40Mhz clock as GMAX3412, but I left the resistor jumper that you could lower the clock to 24Mhz and having same clock for both GMAX3412 and MCU but it won't fix the FPS mismatch issue.
Final note is that the power consumption is a step higher then normal rolling shutter sensors, so the board might be a bit warm when operating.
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
