Close
0%
0%

YAUVC - Yet Another Unmanned Vehicle Controller

A modular, distributed processing, unmanned vehicle
controller.

Similar projects worth following
Unmanned vehicles have common needs: energy to think and move around, sensors to interact with their environment, communication skills and servo control. It really doesn't matter if the vehicle is going to fly, float, dive or move over hard surfaces. In most cases all of the above requirements are present in one form or another.
I've been working on this project for some time. It is a modular flight controller. It was made modular so I could work on one module without worrying about breaking down the rest of the system. I wanted to be able to upgrade a module with a new sensor, component or capability as much as I wanted the whole system to configure itself every time a new module was plugged.
A desired sub-product of this design should be the ability to handle redundancy. Sensor, pilot and engine redundancy. A die hard system.

Currently the system has five modules. They are:

1 - MCU module: an ATMega328P in a little PCB, connected to the other modules by a main SPI bus. This module is surrounded by pads much like an Arduino stamp. These pads form a standard connection to a smaller module which I call a submodule. They deliver a second SPI, an I2C, a serial connection, two analog inputs and some GPIOs to the submodule. To enable the second SPI I had to remove the boot loader from the ATMega328P and strip all Arduino and wiring traces, rewriting what I needed from the beginning and redefining many things.

2 - AMGP sensor submodule: a small board that connects to the MCU module. This submodule has an accelerometer, a gyro, a magnetometer and a barometer. They connect to the MCU module using I2C and SPI buses, both available on the lateral connections. Data is read by the MCU module, processed and made available for other modules when they need.

3 - COM module: This is a standard MCU module also connected to the main SPI bus, but with connections to the slave select pins of the other modules. It is also connected via UART to a WIFI module that delivers the required information wirelessly to my computer. This module is the messenger. It calls other modules, identifies them and pulls all the available information, delivering everything later to the flight control module.

4 - PS Modules: Two very small factor power supplies that are able to charge a LiPo cell and power up the system with up to 0.8A at 3.3V and 5V.

5 - The Backbone: A PCB with an optimal form factor to plug the modules and host a RN131G WiFi and a COM module.

6 - Servo control submodule: A submodule sized PCB which connects to a MCU module and can control up to 16 servos.

Adobe Portable Document Format - 1.06 MB - 03/05/2017 at 02:16

Preview Download

Adobe Portable Document Format - 492.45 kB - 02/19/2017 at 21:07

Preview Download

View all 2 files

  • New classes. New submodules.

    E. N. Hering03/10/2017 at 06:08 0 comments

    Hi. I'm working on the flight control module code. I added a few new classes: Navigation, PID, FCM (Flight Control Module), SCM (servo control module), GPS (GPS module) and a very abstract GNC (guidance, navigation and control) class. My main objective is to make GNC the main class for vehicle stabilization. All other vehicle specific attitude control classes should derive from it. Some of the new classes have only the very basic structures needed to integrate them with the system, but FCM inherited code I have already tested against FlightGear in the past, and is able to take a simulated airplane from waypoint a to waypoint b without crashing it.

    I regenerated the documentation and uploaded it to labvant.com website. The absence of comments is proportional to the absence of my free time, but doxygen does a great work crossing, formatting and displaying code. Generating documentation with Doxygen was a suggestion from an IRC collaborator: NoHitWonder.

    About the new submodules, a brushless motor control module has already been drafted with the help of Erlend^SE, another project IRC channel collaborator. He is also inspiring and helping with the development of a new power supply module and a ESP8266 module to substitute the RN131G. You can join the project IRC channel by connecting your IRC client to a free node IRC server and joining #labvant.com.

    If you like how this project is evolving, please consider supporting it by helping to develop the electronics, the code or the firmware. All the project info is publicly available on the project repo, including schematics, PCB drawings and firmware code in C++. You can also develop your own modules using the project board/connection standards, or propose new standards for future systems. Supporting this project financially by sending a $1 PayPal donation is also welcome. That will help covering the PCB and equipment costs. Thanks a lot for your help and support!


  • Module recognition implemented.

    E. N. Hering03/04/2017 at 15:31 0 comments

    Today the module recognition code was successfully debugged. Now it is possible to plug a module on *any* slot of the backbone PCB and it will be recognized by the main communications module. After recognition the module is integrated into the system workflow automatically. If the new module is a sensor one, for example, it is read in sequence with other data source modules, making data available for decision making by the flight control module and further servo positioning.

    This is a major step in the system development, giving it a plug-n-play like capability.

    And here is a snapshot of the serial connection to the communications (COM) module. Serial commands are one character long. In the example below, 's' lists the slot occupation, showing the AMGP module (identified by number 1) on slot 4. The other commands return sensor data: a for accelerometer, g for gyroscope, b for barometer (altitude, pressure and temperature) and m for magnetometer. All values are multiplied by 10 or 100, depending on the case, to avoid using floating point numbers. The values shown are averages over a few samples, followed by standard deviation.

    The bad news is that the power supplies are failing. I had two buck-boost converters killed by an unknown (to me) factor. I hope to find the mysterious cause when my scope arrives.

    If you like how this project is evolving, please consider supporting it by helping to develop the electronics or the firmware. All the project info is publicly available on the project repo, including schematics, PCB drawings and firmware code in C++. You can also develop your own modules using the project board and connection standards, or propose new standards for future systems. Or you can help to support it financially by sending a $1 PayPal donation to help covering the PCB and equipment costs. Thanks a lot for your help and support!

  • Power supplies working!

    E. N. Hering02/19/2017 at 13:48 0 comments

    Both power supplies have been tested and seem to be working as expected. I have not tested them with LiPo batteries installed, because those batteries have not arrived yet.

    Below are pictures of the 3.3V and the 5V modules. The power supplies are, in theory, capable of sourcing 1.4A at 3.3V and 0.8A at 5V. They can be monitored and controlled by the MCU modules that are attached to them.

    All the project data, including code, references, datasheets, PCB schematics and design are available as open source and open hardware. You can download everything from the repository and use as you wish. You can even create modules for your own purposes.

    If you find this project interesting and believe you can help in some way, please write a message to me (enhering @ gmail . com). Your contribution is very welcome!

  • Power supplies assembled! With LiPo support!

    E. N. Hering02/13/2017 at 11:14 0 comments

    Hi! I've just finished assembling two power supply submodules, one to run at 3.3V and another at 5V. Each can hold around 1A of current and manage a LiPo cell, charging it automagically or drawing power from it, or from the input line, depending on which options are available at the moment. The 5V power supply will work mostly to feed the servos, while the 3.3V one will feed the logic. These submodules will be attached to a MCU module each. The MCU will monitor and control the power supply, sending and receiving information about available power to the system via the main SPI bus.

    I have also assembled three more MCU modules. Two to drive the power supplies and another to read and process GPS data:

    Soon I'll publish the test results of these modules.

    If you like how this project is evolving, please consider supporting it by helping to develop the electronics or the firmware. All the project info is publicly available on the project repo, including schematics, PCB drawings and firmware code in C++. You can also develop your own modules using the project board and connection standards, or propose new standards for future systems. You can also support it financially by sending a $1 PayPal donation to help covering the PCB and equipment costs. Thanks a lot for your help and support!

  • Sensor data via WiFi and serial connection!

    E. N. Hering02/09/2017 at 04:49 0 comments

    Hi! I have good news!

    After a long debugging session, today I could read the sensor data via UART and via Wifi. The data was produced in the AMGP sensor module and delivered via SPI to the COM communications module, where it was routed to my computer via UART and via WiFi. This is a major milestone in the system development. I took a screenshot of the serial communications and of the TELNET windows:

    (AA = Accelerometer averaged data, AS = Accelerometer std dev data, same for magnetometer (M), gyroscope (G) and barometer (P), which delivers pressure, temperature and altitude instead of a three dimensional vector like the other sensors)

    And here is the crazy setup to program and debug the modules:

    I'd like to thank the people from #avr IRC channel on freenode servers for all the help in debugging the code running on the modules, specially carabia, Lambda_aurigae, specing, CapnJ, rue_house and all the others I forgot to mention because my memory does not work well.

    I'll be back soon with more good news. Thanks a lot for your support!

  • 9 dof submodule assembled!

    E. N. Hering01/20/2017 at 20:09 0 comments

  • *HELLO* !

    E. N. Hering01/19/2017 at 03:27 2 comments

    Hi!

    Today the RN131G WiFi module had its firmware successfully upgraded to version 4.41 and I could connect to it via Telnet.

    This module is already mounted in his horseshoe PCB breakout and connected to the communications MCU module via the backbone PCB.

    This means that now I can connect to the MCU module via WiFi!

    My next step is to start to assemble the sensor submodule. Soon I'll publish the sensor readings via WiFi here.

    Thank you for your support!

  • First signs of backbone activity

    E. N. Hering01/17/2017 at 00:01 0 comments

  • MCU Module working!

    E. N. Hering01/14/2017 at 19:44 0 comments

    MCU module is alive!

  • PCBs arrived!

    E. N. Hering01/10/2017 at 19:07 1 comment

    Hi!

    The PCBs I ordered from PCBWay have just arrived! Very nice work! Here are the pictures:

    Very good!

    Very good work!

    I thank every follower for the support received!

    Now lets go to the next step: assembling and testing everything.

    Please remember that your comments are welcome. If you prefer use my private email for them: enhering@gmail.com

View all 28 project logs

Enjoy this project?

Share      

Discussions

Douglas Miller wrote 05/23/2016 at 00:40 point

'Fly Hard, with a Vengeance'? FHWAV. :)

  Are you sure? yes | no

E. N. Hering wrote 03/13/2017 at 23:32 point

Sorry for taking so long to reply, Mr Miller. I believe we need a better name. But I still have no idea on how to find it.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates