So in red are 20us pulses that need to be sent to dmm. Well I sure did not want to wait for decoder to arrive so I hacked together some code for arduino.
The code sent out raw pulses of DS<CR> which resets DMM. It does this every 5sec.
I've set dmm to DC V pressed the AVG button and pointed IR to ARduino IR. Sure enough a few seconds later DMM reseted from AVG to basic mode.
VICTORY!

Then I wanted to go furter. Can I use arduino as a decoder too?
Looking at this
decoding image I noticed that all I have to do is set up a trigger on falling edge that will output 105us pulse on some pin and connect that pin to RX of USB2Serial module.
Arduino mess:

And tadaaa. It works!


Code (please don't judge me, I just wanted it to work):
#include "DigitalIO.h"
const uint8_t PIN = 5;
const uint8_t PINTX = 9;
const byte interruptPin = 3;
int bitsD[10] = {0,0,0,1,0,0,0,1,0,1};
int bitsS[10] = {0,1,1,0,0,1,0,1,0,1};
int bitsI[10] = {0,1,0,0,1,0,0,1,0,1};//0100 1001
int bitsCR[10] = {0,1,0,1,1,0,0,0,0,1};
void setup() {
fastPinMode(PIN, OUTPUT);
fastPinMode(PINTX, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), sendTX, FALLING);
}
void loop() {
fastDigitalWrite(PIN, LOW);
int i;
for (i = 0; i < 10; i++) {
if (bitsI[i]==0) { zero(); }
else { one(); }
}
/*for (i = 0; i < 10; i++) {
if (bitsS[i]==0) { zero(); }
else { one(); }
}*/
for (i = 0; i < 10; i++) {
if (bitsD[i]==0) { zero(); }
else { one(); }
}
for (i = 0; i < 10; i++) {
if (bitsCR[i]==0) { zero(); }
else { one(); }
}
delay(5000);
}
void one(){
delayMicroseconds(105);
}
void zero() {
delayMicroseconds(46);
fastDigitalToggle(PIN);
delayMicroseconds(20);
fastDigitalToggle(PIN);
delayMicroseconds(39);
}
void sendTX() {
fastDigitalWrite(PINTX, LOW);
delayMicroseconds(105);
fastDigitalToggle(PINTX);
}