Hello,
since I was adviced to use a IR remote control device instead of using a lua scipt to start/stop video recording on my EOS M i have build myself such a device.
It takes the Audio Signal from my DR-70D and searches for the slate signal and then uses an IR Led to Start/Stop the recording.
On The DR-70D you need to set the Slate Auto Tone to HEAD+TAIL meaning both at the start and end of the recording there is going to be a slate signal but the camera will only pick up the Tail/end Signal.
Parts needed: Raspberry Pi Pico
3.5mm audio jack brakeout board
0.1 microF Capacitor
940 nm IR Led
First here is the very simple schemetic for this:

And This is the arduino IDE code I came up with:
/****************************************
Sketch for a Raspberry Pi Pico based IR
remote Camera starter triggerd by the
slate Signal of a Tascam DR-70D
****************************************/
const int sampleWindow = 500; // Sample window width in mS (500 mS = 0.5s)
unsigned int sample;
void setup()
{
pinMode(0, OUTPUT); // Set GP0 as Output
}
void loop()
{
unsigned long startMillis= millis(); // Start of sample window
unsigned int peakToPeak; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
while (millis() - startMillis < sampleWindow) // collect data for 500 mS
{
sample = analogRead(A0); // read from ADC0
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
if (peakToPeak < 900 and peakToPeak > 820) // test for slate Signal
{
delay(2000); // Wait 2s inorder to not pickup the same slate again
for(int i=0; i<16; i++) // blink IR Led 16 times
{
digitalWrite(0, HIGH);
delayMicroseconds(16); // with 16 microseconds on
digitalWrite(0, LOW);
delayMicroseconds(16); // and 16 microseconds off time
}
delayMicroseconds(5360); // Off Period of 5360 microseconds
for(int i=0; i<16; i++) // blink IR Led 16 times
{
digitalWrite(0, HIGH);
delayMicroseconds(16); // with 16 microseconds on
digitalWrite(0, LOW);
delayMicroseconds(16); // and 16 microseconds off time
}
}
}