Robotics Institute 

University of Michigan, Ann Arbor

© 2017 by Bruce Personal Website. 

Updated on 8/21/2017

Antenna  & Radar

Generally, there is a roughly 50cm error for a GPS sensor. Therefore, I have used IR tracking, which is able to work at night. This technology allows the hexacopter to land precisely on a wireless charging pad, which is often located in a sheltered location where there is a greater chance of lost GPS signals. I have put an omni-antenna on the charging pad and a rotating high-directivity antenna array with a step-motor and an Arduino computer on the hexacopter. This setup has the advantage of low power consumption and is similar to how ships at sea find a lighthouse. The antenna radar offers extra insurance that the hexacopter can locate the charging pad. By rotating a patch antenna array, which possesses high-gain characteristics, the patch array can receive the power transmitted by another omni-antenna or monopole fixed on the charging pad, allowing the hexacopter to identify in which direction the charging pad is located. By using the friis equation, the remaining distance to the charging pad can be calculated.

 

I transferred the power received by the rotating patch array to voltage and recorded it with the Arduino computer. Moreover, the power received by the patch array consists of an RF signal. A rectifier is therefore placed at the end of the patch array so as to convert the RF signal to a DC signal. Between the antenna and rectifier is a matching circuit, which serves to transfer the largest possible power. Nevertheless, the received voltage is too small to be recognized by the Arduino computer. As a result, I have used two coil inductors to make the voltage larger. Another issue that needs to be addressed is how to transfer direction and distance data to the flying control system Pixhawk. I discovered there is an agreement—MAVLink—whose operation level is higher than the remote control. By using this agreement, I can cover the GPS signal with the Arduino searching system commands.

 

 

 
 

Outline & Link

January 31, 2016

#include "../GCS_MAVLink/include/mavlink/v1.0/mavlink_types.h"
#include "../GCS_MAVLink/include/mavlink/v1.0/ardupilotmega/mavlink.h"

 

// true when we have received at least 1 MAVLink packet
static bool mavlink_active;
static uint8_t crlf_count = 0;

static int packet_drops = 0;
static int parse_error = 0;

void read_mavlink(){
    mavlink_message_t msg; 
    mavlink_status_t status;

    //grabing data 
...

January 21, 2016

#include <EEPROM.h>
#include <FastSerial.h>
#include <AP_Common.h>
#include <AP_Math.h>
#include <math.h>
#include <GCS_MAVLink.h>
#include <LiquidCrystal.h>  
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//
static boolean      mavbeat = 0;
static uint8_t      apm_mav_system; 
static uint8_t      apm_mav_component;
static uint8_t      osd_mode = 0;
static uint8_t      base_mode=0;...

December 25, 2015

This diagram shows how the MavLINK on arduino receives the information of flying control system.

 

 

 

November 12, 2015

/*homing()
 * Will connect an EE-SX671 use to set deg 0
 */    
 void homing()
{
  int trig = 0;
  for(;;)
    {
        digitalWrite(stepps, HIGH);   
        delayMicroseconds(100);            
        digitalWrite(stepps, LOW);
        delayMicroseconds(100);      //sending a "Step" plu...

Older Posts >

Please reload