2017-10-10 6 views
-1

Je fais actuellement partie d'une équipe de recherche qui développe un sous-marin sans pilote pour les plongeurs de sauvetage locaux. L'objectif est d'améliorer et de réparer le prototype de l'équipe de l'année dernière. À l'heure actuelle, le véhicule utilise un Arduino Uno et un BeagleBone Black. L'Arduino contrôle six rotors et quelques capteurs embarqués, alors que le BeagleBone contrôle une caméra embarquée (ne demandez pas pourquoi, cette configuration a été choisie) L'équipe précédente est partie depuis longtemps, nous n'avons donc pas d'autre choix que d'aller de l'avant). Selon la dernière équipe, l'Arduino ne pouvait pas contrôler tout l'équipement en raison de problèmes de «bouclier». Utiliser le BeagleBone pour tout aurait été optimal, mais l'équipe n'a pas pu réécrire le code en 2 jours (personne ne connaissait Java). Puisque je ne connais que Java, mon plan initial pour le cours du projet était d'apprendre le C++ et de réécrire le code en Java. Récemment, je suis tombé sur le terme «compilateur croisé» qui, d'après ce que j'ai compris, permettait à un programme écrit dans une langue de fonctionner sur une plate-forme utilisant un langage différent. Un compilateur croisé pourrait-il prendre le code d'un Arduino et le "convertir" pour BeagleBone? Il semble que le code serait trop complexe pour être converti d'une langue à l'autre. Désolé si je sonne "noobish" Je suis un étudiant en génie mécanique qui a pris un cours de Java.Le code Un Arduino Uno peut-il fonctionner sur un BeagleBone Black en utilisant un compilateur croisé?

+1

Votre question n'est pas un problème avec un code, et sera considérée comme une question générale qui devrait être recherchée dans un forum différent. Je vous suggère de nous montrer ce que vous avez cherché et essayé – Ibo

Répondre

1

Il peut être possible de compiler le code C/C++ à partir de l'Arduino sur BeagleBone mais cela ne fonctionnerait pas de la même manière. Les ports d'E/S ne vont pas être traités de la même manière et il y a probablement beaucoup d'autres problèmes. Sur l'Arduino, votre programme est à peu près la seule chose qui fonctionne. Sur un BeagleBone, vous avez un système Unix O/S à part entière et votre code est l'un des nombreux processus.

Si vous connaissez Java, le code C/C++ ne devrait pas être trop difficile à lire. Lire les ports et contrôler ce que je devine serait servos est certainement possible sur le BeagleBone. Si vous avez des boucliers Auduino, cela pourrait poser problème. Ils peuvent parler SPI ou I2C, mais ils peuvent plutôt utiliser quelque chose de plus bas - peut-être juste un signal PWM.

Cela ne va pas être un projet trivial, mais mon opinion est que vous êtes sur la bonne voie. Je prenais un sous-système à la fois et réécrivais ce code pour le BeagleBone. Quelque chose comme ça cape peut conduire des steppers ou des servos. Cependant, cela soulève un autre problème - le library fourni est en Python - encore un peu de portage à faire.

Donc la compilation croisée n'aidera pas - le code est théoriquement portable mais pas vraiment. Ça va prendre une réécriture.

+0

Thanks st! Je m'attendais à ce qu'il y ait le problème. Je ne suis pas familier avec les boucliers d'expansion matérielle. De quelle manière les boucliers causeraient-ils un problème? – JRu

+0

Si vous dépendez d'un blindage Arduino particulier, il se peut qu'il ne soit pas disponible en tant que cape pour BeagleBone. Si vous faites des choses "standards" comme des steppers/servos/PWM et des E/S série, tout ira bien, mais parler au bouclier/à la cape sera différent entre Arduino et BeagleBone. – stdunbar