To cool to buy a Quad frame build your own! Build you own Ground station. GCS server Wifi enabled Xbee with bluetooth modules. The Idea is to be able to connect to your multi copter no weirs from a mobile phone or PC, tablet no matter what Operating system is being used. I have been working on this for some time. I have this running on a UNO with a double xbee shield, 2.4 xbee, xbee wifly module, Bluetooth wifly module. I would Like to add a web server to the mix to to display GCS data via Http or PHP. I found this Rascal board that uses python that built to do just what I am proposing. Hearer is the code I have so fare no web services yet. Do you think this is useful?
#include "WiFly.h" // We use this for the preinstantiated SpiSerial object.
#include "SoftwareSerial.h"
SoftwareSerial mySerial(6, 5); // RX, TX
SoftwareSerial BluSerial(7, 8); // RX, TX
//ANTENA START
#include
Servo PanServo,TiltServo;
#define pi 3.14159
//Servo pulse boundaries.
#define panMinPulse 600
#define panMaxPulse 2490
#define tiltMinPulse 550
#define tiltMaxPulse 2450
#define serialBaudRate 57600
char ssid[] = "ssid";
char passphrase[] = "passphrase";
#define panDefaultPos 0.5*pi //Pan default position in radians, should be between 0 and pi.
#define tiltDefaultPos 0.0 //Tilt default position...
#define overlapFactor 1.1 //The factor that determines how much the heading
//must go over the servo limits (180 degrees) for
//the tilt to switch to the other side. I.e.
// 1.1 as default setting gives you an 18 degree "gray
// area" where the pan/tilt doesn't switch sides even
//if the pan servo goes to its limit.
#define servoRefreshInterval 20 //Defines the refresh rate and thus the speed of the servos.
//The lover the value the faster the servos move.
Serial.begin(57600);
Serial.println("SPI UART on WiFly Shield terminal tool");
Serial.println("--------------------------------------");
Serial.println();
Serial.println("This is a tool to help you troubleshoot problems with the WiFly shield.");
Serial.println("For consistent results unplug & replug power to your Arduino and WiFly shield.");
Serial.println("(Ensure the serial monitor is not open when you remove power.)");
Serial.println();
Serial.println(WiFly.ip());
delay(100);
Serial.println("Attempting to connect to SPI UART...");
SpiSerial.begin();
Serial.println("Connected to SPI UART.");
Serial.println();
Serial.println(" * Use $$$ (with no line ending) to enter WiFly command mode. (\"CMD\")");
Serial.println(" * Then send each command followed by a carriage return.");
Serial.println();
Serial.println("Waiting for input.");
Serial.println();
// Always display a response uninterrupted by typing
// but note that this makes the terminal unresponsive
// while a response is being received.
while(SpiSerial.available() > 0) {
Serial.print(SpiSerial.read(), BYTE);
}
if(Serial.available()) { // Outgoing data
SpiSerial.print(Serial.read(), BYTE);
if (Serial.available())
mySerial.print(Serial.read(), BYTE);
if (Serial.available())
Serial.print(Serial.read(), BYTE);
}
//ANTENA START
{
if(Serial.available())
{
byte c=Serial.read();
switch(SerialStatus)
{
case UNINIT:
if(c==0x99)
{
SerialStatus++;
bufPointer=0;
}
break;
case GOT_STX:
if(c==0x21)
{
SerialStatus++;
CRCa=CRCb=0x21;
}
else SerialStatus=UNINIT;
break;
case GOT_LENGHT:
buf[bufPointer++]=c;
CRCa+=c;
CRCb+=CRCa;
if(bufPointer>=29)SerialStatus++;
break;
case GOT_PAYLOAD:
if(c==CRCa)SerialStatus++;
else SerialStatus=UNINIT;
break;
case GOT_CRCa:
if(c==CRCb)SerialStatus++;
else SerialStatus=UNINIT;
break;
case GOT_WHOLE_MESSAGE:
if(buf[1]==8)
{
if(deltaEasting==0) //Easting cannot be zero if we want to calculate the atan(northing/easting).
{
if(deltaNorthing<0)trackerHeading=-(pi)/2;
else if(deltaNorthing!=0)trackerHeading=pi/2;
else break;
trackerStatus++;
break;
}
if(deltaNorthing==0)
{
if(deltaEasting<0)trackerHeading=pi;
else trackerHeading=0;
trackerStatus++;
break;
}
if(deltaEasting==0) //Easting cannot be zero if we want to calculate the atan(northing/easting).
{
if(deltaNorthing<0)trackerPanSetpoint=-(pi)/2;
else if(deltaNorthing!=0)trackerPanSetpoint=pi/2;
Always interesting to see another frame idea. Just hard to beat the weight efficiency of the X.
Comment by Flying Monkey on July 12, 2012 at 11:42am
If you need to have your gopro view clear of the props, and the battery all the way aft to balance then there's no weight efficiency to the X because now you need more framework to hold the camera and battery.
Comment
You need to be a member of DIY Drones to add comments!
Season Two of theTrust Time Trial (T3) Contest has now begun. The fourth round is an accuracy round for multicopters, which requires contestants to fly a cube. The deadline is April 14th.
You need to be a member of DIY Drones to add comments!
Join DIY Drones