Home > Mindstorms > NXT Peeping Tom

NXT Peeping Tom

October 21st, 2012 Leave a comment Go to comments

Simple Bluetooth-controlled chassis for a smartphone acting as a live feed camera. Features two motors with independent analog steering, and a third one controlling camera elevation.  


Completion date: 20/10/2012
Power: electric (NXT brick)
Language: ROBOTC
Bricks: 1
Motors: 3 x NXT motor
Sensors: none

I always liked the idea of controlling MOCs from the front of a computer. A while ago I tried this with PF-controlled MOCs and wireless camera, but the PF range was very limited, and the quality of camera transmission was very low. Having found an Android app called IP Webcam, I decided to give it another try, this time with a Bluetooth link for remote control and a Wi-Fi link for video feed.

The whole chassis was extremely simple, with just a handful of parts built around the NXT unit. Two motors with a single wheel each were providing propulsion – I found wheels to run smoother than treads – and another motor was controlling camera’s elevation. The first two motors had analog control enabled from a control pad, while the third was operated by buttons. I have created a simple smartphone holder with rubber connectors, that should fit most of typical smartphones.

The model was fun to drive around, and the video quality was very good. There was a noticeable delay in the video feed though, which made steering a little awkward, and the Bluetooth range was not so impressive – I could hardly drive to another room, just a single wall between the model and the computer was troublesome.

Control program:

#include "JoystickDriver.c"

task main()
  bMotorReflected[motorA] = false;
  bMotorReflected[motorB] = true;
    motor[motorA] = 0;
    motor[motorB] = 0;
    motor[motorA] = joystick.joy1_y1 / 1.28;
    motor[motorB] = joystick.joy1_x2 / 1.28;
    nxtDisplayCenteredTextLine(0, "BATTERY: %3.1fV", nImmediateBatteryLevel / (float) 1000);
    nxtDisplayTextLine(2, "B: %d", motor[motorA]);
    nxtDisplayTextLine(3, "C: %d", motor[motorB]);

    if(joy1Btn(5) == 1)
      motor[motorC] = -5;
    else if(joy1Btn(7) == 1)
      motor[motorC] = 5;
      motor[motorC] = 0;


1.jpg 2.jpg 3.jpg dsc03216.jpg dsc03219.jpg dsc03229.jpg dsc03234.jpg


Categories: Mindstorms Tags:
  1. Sariel
    November 25th, 2014 at 16:20 | #1

    @Old Man Jenkins
    And I quote: “Having found an Android app called IP Webcam…”

  2. Old Man Jenkins
    November 25th, 2014 at 15:19 | #2

    So what do you need on your computer to view from the camera?

  3. Baris
    November 16th, 2012 at 10:50 | #3

    I guess this is the Metal Gear mk.III! 😀

  4. Zyrex
    October 27th, 2012 at 10:06 | #4

    Nice, maybe you should give more strength to the parts. Also i have tried with my NXT, it could ranged between 40-30 meters in open space (i tried in a hall) but nice. Only one weakness in an NXT – it was heavy and took so much space.

  5. Sariel
    October 22nd, 2012 at 16:38 | #5

    Stealth mode would go nicely with that 😉

  6. Sandesan
    October 22nd, 2012 at 15:14 | #6

    What to do whit this nifty little device? Increase range and find some womens skirts to peek under? 😉

  1. No trackbacks yet.