const drone = require('ar-drone').createClient(); const btSerial = new (require('bluetooth-serial-port')).BluetoothSerialPort(); function toDrone(data) { // action: up, down, front, back, left, right, clockwise, counterClockwise // speed: 0.0 ~ 1.0 // drone['back'](0.3); // drone['action'](speed); // action: takeoff, land, disableEmergency // drone['takeoff'](); // drone.calibrate(0); // magnetometer sync } function fromDrone(data) { // type: batteryPercentage, altitudeMeters, // clockwiseDegrees, frontBackDegrees, leftRightDegrees, xVelocity, yVelocity, zVelocity // Math.round(data.demo[type], 4); console.log(data.demo); } function fromController(data) { process.stdout.write(data); } drone.config('general:navdata_demo', 'TRUE'); drone.on('navdata', fromDrone); console.log("Try to connect Bluetooth..."); btSerial.on('found', (address, name) => { if (!name.toLowerCase().includes('dronermctrl')) { console.log('SKIP: ', name); } else { btSerial.findSerialPortChannel(address, channel => { // Finds then serial port channel and then connects to it btSerial.connect(address, channel, function () { console.log("Bluetooth connected."); btSerial.on('data', bufferData => fromController(bufferData.toString('utf-8'))); }, console.error); btSerial.close(); }, console.error); } }); btSerial.inquire(); // start bluetooth serial