I'm an absolute beginner, so please bear with me. I'm currently doing a project where I need to control 2 DC motors using the Udoo board. Should I first learn to use an Arduino or is it possible to program the board in Linux's terminal only? PS. There isn't much documentation available for the Udoo board.

A Pan Tilt Unit(PTU) is to be attached to a robot. The PTU has 2 motors with perpendicular shafts. What I need to do is control the two motors and start & stop them at particular positions. Also, build a GUI after completing the hardware. Available resources are Udoo Neo board, Arduino Due and Arduino Uno. I've gone through the UDOO official documentation but other than that I couldn't find any discussion platforms concerning the Udoo board and it's still not clear if I need to learn to program an arduino for controlling the motor? Or if it could be done via python in Udoo's Linux only.

  • 1
    $\begingroup$ Welcome to Robotics Farhan Ahmed, but I'm afraid that questions like this really aren't a good fit for a stack exchange site. We prefer practical, answerable questions based on actual problems that you face. Take a look at How to Ask and tour for more information on how stack exchange works. Also, the Robotics question checklist has good advice on how to write a good question. If you edit your question to fit our community guidelines we can reopen it for you. $\endgroup$
    – Mark Booth
    Jul 24, 2019 at 14:49
  • $\begingroup$ Looking at the Udoo Neo documentation it looks pretty comprehensive, detailing using it in as a Desktop PC, a headless IoT device or as an Arduino. The Tutorals have lots more ideas for getting started, including ones where the Android/Linux side of the device coordinates with the Android side. There is even a blog post about using ROS on the Udon Neo: udoo.org/ros-on-udoo-neo-dual-quad $\endgroup$
    – Mark Booth
    Jul 24, 2019 at 14:57
  • $\begingroup$ If you can edit your question to explain what problems you are having when following these Getting Started guides and Tutorials, we might be able to re-open the question and help out with more specific answers. $\endgroup$
    – Mark Booth
    Jul 24, 2019 at 15:00
  • $\begingroup$ Done. Please remove the hold as I'm kind of stuck and there are certain deadlines that I need to adhere too. $\endgroup$ Jul 25, 2019 at 6:03
  • $\begingroup$ On stack exchange, it is better to edit your question to add information requested in comments, rather than adding more comments. Comments are for helping to improve questions and answers, and are distracting, so we try to keep them to a minimum. If all of the information needed to answer the question is contained within it, the comments can be tidied up (deleted). $\endgroup$
    – Mark Booth
    Jul 25, 2019 at 13:41

1 Answer 1


It is difficult to answer your question without more information, but I would suggest that splitting your problem in two and dealing with the motor control and the GUI separately would probably be the easiest way to accomplish what you want to do, and the Neo may be the ideal piece of kit to do that.

As for the motor control, I would be inclined implement the low level real time motor control with an Arduino (either Due, Uno or the one integrated in the Neo) and then implement the GUI in soft real time on the Linux side. See Interaction between Linux and Arduino on Udoo for examples of linking the two.

There are lots of tutorials out there about controlling motors with an Arduino and a motor shield, the documentation for the shield you have should be able to step you through what you need to do. There are even tutorials about making Pan Tilt units controlled by an Arduino, such as this instructable: Pan & Tilt Servo Bracket Controlled by Arduino, which uses rc-servo motors rather than DC motors.

If you implement you system this way then yes, you will need to learn about Arduino programming.

The alternative is to try and do everything on the Linux side, but while the ARM core is much faster than the Arduino, it is also expected to do a lot more, and it is generally safer and more consistent for real time control to be done with a seperate embedded controller rather than try to control motors from a general purpose operating system.

If you decided to go the 'do everything from linux' route, then you won't have to learn Arduino programming, but you will have to learn how to do Linux GPIO manipulation, and that will require understanding the underlying principles of GPIO, PWM and writing your own libraries rather than just using the standard libraries available for Arduino.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.