NeurosRecorder 2
Alternate remote control information.



The Neuros Recorder II (R2) is an excellent solid state video recorder that captures video to compact flash cards or memory sticks. The R2 was designed to be used in a "home" environment but there are many other applications it could be used for.

The R2 can record from any composite video source. This includes VHS video recorders, security and "bullet" cameras. Bullet cameras are commonly used attached to helmets for sky diving and other outdoor activities.

A useful feature of the R2 is the ability to start recording, remove the camera signal to stop recording and reconnect to start recording again. This should make it simple to control. Neuros have provided a patch to achieve this but you still need to activate the unit with the remote control.

I have managed to bypass the problem by constructing an alternate remote control system.

I had difficulty getting spare remote controls in the UK as Neuros will only ship within the USA. Curiously they seem to include Canada as well.

Anyway, I have produced a remote control unit that replicates the On/Off and Record keys. The R2 can be powered on and off using the 5V supply as normal. After applying power I can press one key to send "On" then another to send "Record". The "On" command switches the R2 on internally, it does not alter the power supply.

The "Record" key acts as a toggle switch, each press sends the same command so the R2 will start recording on the first key and stop recording on the second etc.

I have found the system to be reliable but need to enhance it by adding a detector to sense when the record light is on. This will ensure that vital recordings are not missed.

The reason for making this information public is to help others achieve the functionality. You will need some constructional/programming ability but I doubt it will be too taxing.

Note: I am not offering a complete device or components etc, just information that I wish I had when I started this project.

If you find this information of practical use then please mention this article in your project documentation.

The system

I used a BX24 (netmedia.com)microcontroller to provide the necessary timing waveform. The BX24 output gates a 555 pulse generator that free runs at around 38kHz. This output is connected to an infra-red led to produce the required stream of modulated pulses.

The microcontroller could be a PIC, Atom, Basic Stamp etc it just depends on your programming expertise and wallet. I used the BX24 as I have a few lying around from a previous project. I constructed an infra-red remote tester kit from Maplin to monitor the signals produced by the Neuros remote. This made programming simpler as all I had to do was replicate the waveform.

I tested the remote at 30kHz and 45khz and found the system operated quite happily. This means that the 555 frequency can be way off and it will still work. However I would suggest that the circuit is initially set to 38kHz.

holtek_ppm_timing

onoffkey1

record key 17

Code listing for the BX24 microcontroller.

This is not a sophisticated program but it does the job. The code for a Basic Stamp would be very similar.

The three critical timing functions are for 9mS (header), 4.5mS gap and 0.56mS for pulse construction. A "0" is formed from a 0.56mS pulse followed by 0.56mS pause. A "1" is formed from a 0.56mS pulse followed by three 0.56mS pauses.

I determined the actual timing by experimenting with the values for PulseOut. I presume the code will work fo all BX24's but other microcontrollers will need to have the timing checked.

Option Explicit
Public Sub Main()

Dim rec As Byte
dim ono as byte

call putpin(17,1)
call dummy()

debug.print "Starting"

do
debug.print "Loop"
call putpin(25,1)
call putpin (26,1)
rec = GetPin(6)
ono = getpin(7)
if getpin(6)=0 then
call record()
'Debug.Print CStr(rec)
elseif getpin(7)=0 then
call onoff
'Debug.Print CStr(ono)
end if
'call delay(0.1)
loop

end sub

'subroutine to set neuros to record
public sub record()

debug.print "Record loop"
call putpin (25,0)
call delay(1.0)

Call PutPin(17, 0)

Call PulseOut(17,8295, 1) ' 9mS header
Call PulseOut(0,4022, 0) ' 4.5mS off

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 0
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 1
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 2
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 3
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 4
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 5
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 6
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 7
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 8
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 9
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 10
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 11
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 12
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 13
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 14
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 15
Call PulseOut(0,411, 0) ' 560uS

'end of address

'start key 017 record data

Call PulseOut(17,516, 1) ' 560uS 1 data bit 0
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 1
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 2
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 3
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 data bit 4
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 5
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 6
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 7
Call PulseOut(0,411, 0) ' 560uS

'start not data

Call PulseOut(17,516, 1) ' 560uS 0 not data bit 0
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 1
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 2
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 3
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 not data bit 4
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 5
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 6
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 7
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(17,516, 1) ' 560uS

Call PutPin(6, bxOutputHigh)
call delay(1.0)
end sub

'subroutine to set neuros onoff
public sub onoff()

debug .print "Onoff loop"
call putpin (26,0) 'green led

Call PutPin(17, 0)

Call PulseOut(17,8295, 1) ' 9mS header
Call PulseOut(0,4022, 0) ' 4.5mS off

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 0
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 1
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 2
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 3
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 4
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 5
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 6
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 7
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 8
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 9
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 10
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 11
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 12
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 13
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 14
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 15
Call PulseOut(0,411, 0) ' 560uS

'end of address

'start key 01 onoff data

Call PulseOut(17,516, 1) ' 560uS 1 data bit 0
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 data bit 1
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 data bit 2
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 data bit 3
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 4
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 5
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 6
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 data bit 7
Call PulseOut(0,411, 0) ' 560uS

'start not data

Call PulseOut(17,516, 1) ' 560uS 0 not data bit 0
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 not data bit 1
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 not data bit 2
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 not data bit 3
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 4
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 5
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 6
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 not data bit 7
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(17,516, 1) ' 560uS end stream
Call PutPin(6, bxOutputHigh)
call delay(4.0)
end sub

 

public sub dummy()

Call PutPin(17, 0)

Call PulseOut(17,8295, 1) ' 9mS header
Call PulseOut(0,4022, 0) ' 4.5mS off

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 0
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 1
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 2
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 3
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 4
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 5
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 6
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 7
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 8
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 9
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 10
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 11
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 12
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 13
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 1 ad bit 14
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS
Call PulseOut(0,411, 0) ' 560uS

Call PulseOut(17,516, 1) ' 560uS 0 ad bit 15
Call PulseOut(0,411, 0) ' 560uS

end sub