Archive for the ‘Projects - ARCHA’ Category

Automated Remote Controlled Helicopter Assistant Project

22
Oct

Hey!

You want to learn to fly an RC helicopter and do all these crazy 3d acrobatics?

Hold right there… you will need time and a lot of concentration before you can even keep your helicopter off the ground without crashing. A lot of people will buy a helicopter, crash it, get discouraged and next thing you know it is in a basement somewhere and chances that it will ever fly again are usually very low.

Over 50% of all single rotor hobby grade RC helicopters sold to and built by first time fliers end up crashing in the first few minutes of their maiden flight.

Here is a very good website that will show you what to buy, where and how to start: http://www.rchelicopterfun.com/how-to-fly-rc-helicopters.html remember to take your time through the exercices, it is possible to learn how to fly these without crashing once. Your main goal should be to bring your helicopter back home in one piece after each session.

Cheers,

Marc

, , , , , , , , ,

13
Oct

Still practicing with my Blueray 450 PE RC Helicopter, working on the hover but things are looking good, will likely start nose in flight sometime soon.

, , , , , , , , , ,

09
Nov

Good afternoon!

The ARCHA project is still active and ongoing constant development, part of my GroundStation software, I had to build a class to interface my E-Sky EK2-0406A using DirectX (for DirectInput) and C#.

You will need to connect your E-Sky controller to the computer running this class using a standard usb training cable.

Example on how to use that class in a form load event of c#:

ARCHAGroundStation.ClESkyController esky = new ARCHAGroundStation.ClESkyController(this);

esky.Poll();

System.Diagnostics.Debug.WriteLine(“Throttle: ” + esky.GetThrottle() + ” – Yaw: ” + esky.GetYaw() + ” – Pitch: ” + esky.GetPitch() + ” – Roll: ” + esky.GetRoll());

You can download the c# source code here: ClESkyController.cs

Cheers,

Marc

, , , , , , , , , , ,

15
Oct

This is my first test video of the ARCHA Project’s Helicopter:

, , ,

06
Sep

**Please note that this post will be incomplete for a few days, I will be using it to hold firmware development notes for the time being.**

Arduino Mini IO Mapping:

Digital Pins:

  • D02: I / Calibration push button / pull down resistor
  • D03: O / Software serial to the Pololu Micro Servo Controller
  • D04: O /12bit ADC SPI CS
  • D05: O / 12bit ADC SPI Data-In
  • D06: I / 12bit ADC SPI Data-Out
  • D07: O / Tri-Color Status Led Green / HIGH = led OFF / LOW = led ON
  • D08: O / Tri-Color Status Led Blue / HIGH = led OFF / LOW = led ON
  • D09: O / Tri-Color Status Led Red / HIGH = led OFF / LOW = led ON
  • D10: O / Main Rotor PWM Control / pull down resistor
  • D11: O / Tail Rotor PWM Control / pull down resistor
  • D12: I / PPM Signal from RC Receiver
  • D13: O / 12bit ADC SPI Clock

Analog Pins:

  • A0: Voltage Divider / Meter
  • A1: Tail Gyroscope Signal

EEPROM Address Map:

  • 000-001 => ppmCalibMin[0]
  • 002-003 => ppmCalibMin[1]
  • 004-005 => ppmCalibMin[2]
  • 006-007 => ppmCalibMin[3]
  • 008-009 => ppmCalibMin[4]
  • 010-011 => ppmCalibMin[5]
  • =
  • 012-013 => ppmCalibMid[0]
  • 014-015 => ppmCalibMid[1]
  • 016-017 => ppmCalibMid[2]
  • 018-019 => ppmCalibMid[3]
  • 020-021 => ppmCalibMid[4]
  • 022-023 => ppmCalibMid[5]
  • =
  • 024-025 => ppmCalibMax[0]
  • 026-027 => ppmCalibMax[1]
  • 028-029 => ppmCalibMax[2]
  • 030-031 => ppmCalibMax[3]
  • 032-033 => ppmCalibMax[4]
  • 034-035 => ppmCalibMax[5]

Really good source regarding Kalman Filtering, Accelerators, Gyroscopes:

  • http://academic.csuohio.edu/simond/courses/eec644/kalman.pdf
  • http://tom.pycke.be/mav/71/kalman-filtering-of-imu-data
  • http://tom.pycke.be/mav/70/gyroscope-to-roll-pitch-and-yaw
  • http://tom.pycke.be/mav/69/accelerometer-to-attitude

Last update from Marc Vieira Cardinal on September 9th at 7:32AM.

, , , , , ,

03
Sep

Good morning,

I bought a few LP2950 3.3volt Voltage Regulator from ebay a few weeks ago to use with the ARCHA Project and for an unknown reason had a hard time finding a datasheet for them.

I have a copy available for download here.

Beware of the pinout on that piece, the input and output pins are inverted compared to regular 7805 regulators.

Screenshot taken from the datasheet showing the pinout: (click to enlarge)

LP2950 Pinout

, , , , , ,

01
Sep

Good morning,

There seem to be a problem when using software serial between the Arduino and the Micro Serial Servo Controller caused by a flicker in the output pin.

When booting the arduino will set the digital io pins to HIGH however when you do the following in your program “pinMode(tx,OUTPUT);” to switch the pin mode to output, the pin value will drop to LOW and then when you put it back to HIGH (the normal idle serial level) using “digitalWrite(tx, HIGH);” the Micro Serial Servo Controller thinks you are attempting to send a serial command and will go into error state.

The proper way to initialize your pin is to activate the internal pull up resistor and then switch the mode to output with the following commands:

digitalWrite(tx, HIGH); //Activate the pull up resistor
pinMode(tx,OUTPUT); //Change pin mode to output

This removes the small flicker that the Micro Serial Servo Controller doesn’t like. This has been tested and works properly using the Mini SSC and the Pololu modes with a software serial at 9600 baud.

, , , , , , , ,

27
Aug

Good morning,

You might want to quickly be able to enable or disable debugging output in your arduino program.

Here is one of many way, I found this on arduino.cc forum:

#define DEBUG

#ifdef DEBUG
#define DEBUG_PRINT(x) Serial.println(x)
#else
#define DEBUG_PRINT(x)
#endif

void setup()
{
DEBUG_PRINT(“here we go!”);
}

Then if you comment out #define DEBUG all the lines with DEBUG_PRINT(“something”) won’t be compiled and sent to the processor. This could help increase production code speed and size.

Read the full post here.

, , , ,

16
Aug

Good afternoon,

I coded 2 functions this morning to read and write 2 bytes integers to and from the arduino’s eeprom since the standard library (EEPROM.h) was only offering read / write functions for bytes.

See attached source code here: EEPROM-Int-ReadWrite.pde

You can find my thread on www.arduino.cc here.

Cheers,

Marc

, , , , , ,

15
Aug

I bought a cheap 6 channel receiver compatible with the E-Sky EK2-0406A remote control (and using the same crystal as the 4 in 1 standard controller for the honey bee cp2). I found the PPM signal pin and will have it connected to the arduino for the ARCHA project.

Here are some specs of that receiver that can be found under $10.00 usd on ebay:

  • Number Of Channels: 6CH
  • Frequency: FM-72 Mhz
  • Size: 35×22x10 mm
  • Weight: 7.5 gram
  • Antenna Length: 800 mm
  • Operating Voltage: 4~6 V
  • Current Drain: 9 mA
  • Range: 800 M
  • Narrow Band
  • Microprocessor decoder
  • High inter-modulation and interference suppression
  • High adjacent channel selectivity and interference rejection
  • No servo jitter when the transmitter is switched off (** however the ppm signal reading becomes erratic ** will have to build code to reject the erratic ppm signal **)
  • Small dimensions and weight
  • Compatible all FM / PPM transmitters
  • Uses mini or standard sized crystals

Picture of the receiver: (click to enlarge)

SunUP SU/R-6FM

Test rig: (click to enlarge)

SunUP SU/R-6FM - Hack Test Rig

Found the PPM signal! : (click to enlarge)

SunUP SU/R-6FM - Hack Searching for PPM Signal

Close up of the PPM Signal pin (pin 7 of a chip labelled: SU06A on the back of the board): (click to enlarge)

SunUP SU/R-6FM - PPM Pin

That pin will now need to be connected to one of the digital input on the arduino controller. I connected the ppm signal to the digital pin 2 of the arduino (with also a common ground).

The following source code will display the channel values to the serial monitor: PPM_Test.pde

Here is an annotated example of what will appear on your serial console:

**********START********
449 <-Ch2
777 <-Ch3
1184 <-Ch4
561 <-Ch5
1291 <-Ch6
9355 <–Sync Frame
1206 <-Ch1
1247 <-Ch2
778 <-Ch3
1191 <-Ch4
562 <-Ch5
1289 <-Ch6
9356 <–Sync Frame
1211 <-Ch1
1244 <-Ch2
771 <-Ch3
1187 <-Ch4
557 <-Ch5
1287 <-Ch6
9359 <–Sync Frame
1199 <-Ch1
1242 <-Ch2
776 <-Ch3
1174 <-Ch4
554 <-Ch5
1287 <-Ch6
9361 <–Sync Frame

From this sample we can determine that this specific receiver have a sync frame of around 9 milliseconds (9000 microseconds).

The calibration procedure of the Firmware of the ARCHA Project will auto sense that frame length by listening to the ppm signal for around two seconds and then round the maximum value found to the nearest thousand (so 9361 would be sensed as 9000). Then another pass will verify that this value is at least 2000 microseconds higher than all the sensed channel values.

You can read more about PPM here.

, , , , , ,

  • Search:
  • Recent Posts

  • Meta

  • Tags