The Camera Grip for CMF Phone 2 Pro creates new ways to film cinematic footage with your phone at a low price point compared to other phone rigs. It is simple to use and produces great results. It has a Bluetooth Shutter Button, a Cold Shoe Mount and 1/4 -20 UNC screw for accessories, and an optional Mount for Moment lenses.

The bluetooth shutter button allows you to easily control the camera. You press it once to take a photo or video, and long press to power off. It will automatically power off after 5 minutes of inactivity. The case's grip houses the battery, TinyPico microcontroller, and pushbutton. When the shutter button is pressed, it emulates a volume button on the phone takes a picture (Volume button must be set to shutter in the android camera app for this to work.) It uses Bluetooth HID to do this. Here is the code for the microcontroller:
#include <BleKeyboard.h>
BleKeyboard bleKeyboard("CMF Camera Grip", "Crossley Devices", 100);
int pin = 4;
bool val = LOW;
bool lastval = HIGH;
int lastActiveTime = 0;
int pressedTime = 0;
int releasedTime = 0;
void setup() {
Serial.begin(115200);
bleKeyboard.begin();
pinMode(pin, INPUT_PULLUP);
esp_sleep_enable_ext0_wakeup((gpio_num_t)pin, LOW);
}
void loop() {
val = digitalRead(pin);
if (val == LOW) {
lastActiveTime = millis();
//Check if the button was already pressed
if (lastval == HIGH) {
pressedTime = millis();
}
//Debounce
delay(100);
}
if (val == HIGH && lastval == LOW) {
releasedTime = millis();
if (releasedTime-pressedTime < 3000) {
//Emulate a volume button press
bleKeyboard.write(KEY_MEDIA_VOLUME_UP);
Serial.println("Shutter Pressed!");
} else {
//Power down after long press
Serial.println("Powering Down...");
delay(2000);
esp_deep_sleep_start();
return;
}
}
lastval = val;
if (millis()-lastActiveTime >= 300000) {
//Sleep after 5 minutes of inactivity
esp_deep_sleep_start();
}
} To attach the microcontroller, slide it into the slots on the inside of the grip. Slide the battery in as well. Attach the battery to the GND and BAT ports of the microcontroller. Put the push button into its mount (you may need to bend the legs a bit), add the button to the lid, and press fit in the push button mount. Now connect the push button to GND and GPIO4. Use a male usb-c to female usb-c cord so it can be charged.
The Camera Grip has a hole for the Heat-Set insert on the bottom. To attach the Heat-Set insert, place it on the hole in the bottom of the grip. The insert should not fit. You will need to melt the plastic to get it in. Take a soldering iron and heat it up to the temperature of the material you printed in and push it down until it is in. Once the insert is installed, the screw can be used to mount the phone on a tripod or other accessories. On the top, there is a cold shoe mount for accessories like microphones.

For people looking for more from their phone, there is an adapter for Moment Lenses. These lenses are great for professionals seeking cinematic quality footage. However, if you don't have Moment lenses there is also a version with a normal lens mount. You can find Moment Lenses here.

The author remixed this model.
I added a grip with a TinyPico Bluetooth HID shutter button, a cold shoe mount for attaching accessories, and an adapter to install Moment Lenses to the phone.