UAV

Post details of your projects here.
Post Reply
YahooArchive
Posts: 1463
Joined: Fri Oct 19, 2012 5:11 am

UAV

Post by YahooArchive » Thu Oct 25, 2012 12:20 am

Good day, folks.

OK, as the last message to the group indicates, I have uploaded my
complete source to the files section. Understand that the source is A
LONG WAY from being complete - If I had to place a percentage on it,
I'd guess that it is about 10% complete with it's functionality. I
have a lot of hardware to procure and subsequently develop code to
support. I eventually plan on having the ARMexpress be the keeper of
the gate - controlling everything related to the flight controls
(servos), the telemetry, flight logic, and the associated algorithms.

There will also be an ARMmite (or future Coridium Product) that the
ARMexpress will be interfaced to that will act as a Data Recorder and
Data Acquisition Unit. I will develop a module to module protocol that
will support a query/respond/attention type of approach to the inter-
board communications.

The link to the posted source is:
http://groups.yahoo.com/group/ARMexpres ... %20Project%
20Files/Airframe/UAV%20Airframe%20Files%2005Apr07.zip

The source consists of 13 files. I don't know how much benefit it will
immediately be to anyone, other that to demonstrate the following:

1) Modularity of code:

With the recent enhancements to TCLterm (the incorporation of the
preprocessor, ARMbasic now have a small tool chain that is seam-less to
the user. What this facilitates is the ability to have the source code
spread out across several smaller, more manageable, files.

The tool I used to draft the source was Crimson Editor.

The nice thing about CE is that the application is an MDI (Multiple
Document Interface) application which supports having multiple files
opened concurrently. The MDI interface is facilitated via a tabbed
approach, so I can have all 13 files open concurrently, and be able to
quickly access a specific piece of code by clicking the appropriate
file's tab, and then scrolling to the code of interest.

If you are going to do any serious ARMbasic development, I'd recommend
that you at least take a quick look at CE...

2) GPIO Serial Communications with a GPS module:

As discussed previously in this thread, the code demonstrates one of
probably many ways that ARMbasic and the ARMexpress/ARMmite can be
programmed to capture and make use of the GPIO lines with the serial
comm words to effect capturing of the asynchronous data from the module.

3) RC Servo Control:

I have written in code to successfully and accurately control 5 RC
servos concurrently.

4) Use of non-trigonometric integer math in algorithms to solve
Geodetic Navigation problems:

i.e. given current latitude, longitude, course, and ground speed, and
destination latitude, longitude, the system is able to solve distance
to waypoint, course to waypoint, and steering correction needed to
get 'on-course'.

One limitation that I am acutely aware of is the fact that I have only
designed the code to support North Latitude and West Longitudes. The
other quadrants of the world may work, I just haven't yet tested
them... (please feel free to try and advise, if you live in a part of
the world not in North America).

5) Other concepts utilized by the source:

There are many other concepts employed therein - from simple use of a
GPIO port to control an LEDs state, checksum generation/checking,
string parsing, array usage, time-based servo motor control (software
pulse-width-modulation), structured approach to hierarchical program
flow, variable scaling to facilitate sub-degree and sub-meter
accuracies with integer variables, etc.

Obviously with most thing related to software, there are about a
gazillion ways to approach handling most any situation. My code
demonstrates only my attempts at addressing my design goals. I have
not coded in years, and as such, there are probably many more efficient
or logical ways in which to accomplish what it is I am attempting to
accomplish in the various portions of the code. Please, if you can
demonstrate a more efficient means to an end, which proves to be better
that what code I have hacked together to address, please don't hesitate
to advise and I will evaluate implementation.

Let me know if there are any questions (please when replying, reply to
the group, so that if others have a similar question, they may be able
to benefit from the public dialogue). I will do my best to answer in a
timely fashion.

Good luck trying to figure out what the heck it is that I am doing... ;-
)

-t



Post Reply