Aller au contenu


Photo
- - - - -

Robot contrôlé par netbook via internet


34 réponses à ce sujet

#1 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 13 décembre 2010 - 10:51

Bonsoir, je viens présenter mon robot en espérant que quelqu'un pourra m'aider à le perfectionner.





Image IPB



Le principe de mon robot:[/size]



mon robot avance à l'aide de 2 roues indépendantes ( et d'1 roue "folle") contrôlées par 2 moteurs, chacun contrôlé par un pont en H. (j'ai récupéré tout ça d'une voiture téléguidée, bien que je comprenne parfaitement le fonctionnement, au moins tous les composants étaient déjà montés et bien dimensionnées)



mais par quoi sont pilotées les moteurs?

Les ponts en H sont pilotés à l'aide d'une arduino 2009, en MLI (PWM pour les anglais :) )

Qui tire ses infos d'une liaison série avec mon netbook.

Le programme sur l'arduino est donc simple: du type "si-la-donnée-série-est-1-j'avance-si-c'est-2-je-recule-sinon-bah-tant-pis-je-bouge-pas"

J'exagère à peine.

Sur mon netbook on a un programme Processing[/color], qui fonctionne, très simplement lui aussi: "flèche-haut-j'envoie-1-flèche-bas-j'envoie-2-sinon-je-me-repose".

Mais alors pour contrôler ton robot tu dois courrir après?

Mais non. Mon netbook est connecté à internet par wifi, ce qui me donne pas mal de moyens de le contrôler à distance:



1°)Utilisation de 2 sketchs Processing: 1 serveur, 1 client. ça en a pas l'air mais c'est le plus simple, tellement simple que je n'ai pas pris le temps de le finaliser.



avantage: libre, solution réalisée moi même, donc extrêmement personnalisable

Inconvénient: ne marche qu'en réseau local!



2°)Utilisation d'un client VNC: mes 2 ordis sont connectés, lorsque je bouge la souris de mon ordi de bureau cela fait bouger le curseur de mon netbook, pareil avec le clavier (mais non avec les infos de touches du clavier en fait, le clavier bouge pas -_-") donc mon arduino reçoit ses ordres comme si je pianotais sur mon EeePC (zut faut peut etre pas citer les marques?)



Avantages: fonctionne très simplement et automatiquement, mon netbook a juste à accéder au net et moi aussi (pas de routages compliqués nescéssaires)

Inconvénients: C'est pas libre, c'est pas moi qui l'ai fait, et c'est pas optimisé!



3°)Utiliser une solution DIY(do it yourself, de l'anglais du même nom), sans DynDNS et autres méchancetés... Le problème est que je suis un peu à court d'idées! La solution actuelle que je vois: un logiciel (l'émetteur) capte mon clavier et en fonction il envoie un truc sur le net (un flux RSS, il modifie le code source d'une page web ou autre...) pendant qu'un autre, le récepteur, vérifie très souvent ce flux RSS ou cette page web afin d'en tirer les instructions du robot!



Avantages: paramétrables, rapide, automatique dans le fonctionnement, facile...

Inconvénient: Utopique.



Je pense que vous avez compris, je cherche à mettre en place le point n°3. Pour les connaisseurs, je ne veut pas d'adressage machine fixe, je ne veux pas qu'il soit nécessaire d'ouvrir des ports de ma box, je veux que ce soit gratuit, et si possible que je le comprenne.

Pourquoi est-ce que je suis si difficile? parce que dans l'idéal, mon robot doit pouvoir se connecter n'importe où et je doit pouvoir lui envoyer des données de n'importe où.





#2 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 13 décembre 2010 - 11:06

Bonsoir

Tout d'abord beau début de projet :)

Pour ton problème, ça risque d'être dur sans ouvrir un port (si le routeur est bien configuré).
Dit nous déjà qu'elle port sont ouvert ?



#3 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 13 décembre 2010 - 11:18

merci :)
Oh, ce n'est pas que ça me dérange d'ouvrir des ports, mais c'est que je veux pouvoir déplacer mon robot, qu'ils se connecte à d'autres bornes wifi sans avoir à le re-paramétrer (il a un port carte SIM 3G, ça ouvre des perspectives :p )

#4 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 14 décembre 2010 - 02:08

bha, si tu te trouve un hébergeur gratuit qui gère le php ou un autre langage dynamique, tu peut cheat et avec une requete get (genre leserveur/machin.php?moveleft=32 ) tu envoi l'instruction et le robot lui peut aller la chercher sur machin.php?getwork=1.
( c'est un exemple bidon et perfectionnable, et si c'est particulièrement laid, ça marche facilement)

en vrai, il faudra forcement que tu ai quelque part un ordinateur que tu peut localisé sur le reseau[ plus haut le serveur http ] (ip/domaine weyw...) ensuite, se seras aux robot et au contrôleur de contacté le dit ordinateur.
Là j'ai proposé une solution laide en http, mais libre a toi de géré ça autrement par n'importe quelle port, simplement, il faut que le serveur ai, lui, les ports en question accessible.

#5 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 14 décembre 2010 - 04:16

@webshinra: Hum, je ne sais pas si c'est dans le même domaine, mais je suis déjà capable de lire le code source d'une page (type "www.robotix.fr") et donc par "filtrage" d'en tirer des ordres. mon seul problème serai de modifier le sus-cité code source, de manière rapide et graphique ou par association de touches. L'avantage est que la partie "télécommande" peut être programmée en n'importe quel langage, le site internet servirait d'interface d'adaptation. Ce serait possible d'avoir une page internet, avec identification par exemple, qui détecterai les touches appuyées sur le clavier (les applis flash le font bien) et qui modifierai le code source d'une page tierce? (toujours dans l'optique d'utiliser mon programme existant). J'ai bien le sentiment que ma solution est bien "laide", mais dans ma conception des choses elle parait plutôt simple...



@tous: J'ai déjà creusé au niveau d'un transmetteur de liaison série, il faut tout un tas de configurations, telle que l'adresse IP dynamique etc... qui ne sont pas à ma portée!

#6 zeqL

zeqL

    Membre passionné

  • Membres
  • PipPipPip
  • 393 messages
  • Gender:Male

Posté 15 décembre 2010 - 01:45

Hum actuellement en Linux Embarqué nous avons un projet : un serveur web sur une carte embarquée (préconcue).

On utilise Boa (www.boa.org), qui est un peu light pour faire tourner un serveur web hyper top, mais propose les fonctionnalités de base.
Néanmoins comme tu as un netbook, bcp plus puissant que le microcontroleur de notre carte, avec n'importe quel serveur web (apache) ca suffira.

Le point où je voulais en venir était qu'on devait afficher une page web, mais aussi des infos sur la machine via du CGI.
Le CGI est un protocole mais derrière tu peux exécuter des scripts dans de nombreux langages, en perl, bash, C principalement.

Ca revient un peu à la méthode GET de webshinra quand même, mais ca évite de se casser la tête avec des modifications de code source :o
Car tu peux faire plusieurs liens "Haut" "Bas" "Droite" "Gauche" qui envoie sur le même script (en C par exemple) et ce script analyse ce qu'on lui envoie et fait une action en conséquence.


EDIT : malheureusement il te faudra une ip fixe sur ta FAI box pour y accéder depuis l'extérieur ^^

#7 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 15 décembre 2010 - 12:44

Est ce que ta clé SIM 3G ne te donne pas une IP fixe ? j'avoue je n'ai aucune idée de comment marchent les IPs avec le 3G et compagnie ^^

#8 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 15 décembre 2010 - 06:25

@zeqL: il existe d'autres moyen similaires (telles que des bibliothèques processing) mais j'ai déja cherché et mon bilan: trop de configuration, trop de contraintes.



@Jobt: Je ne sais pas du tout, d'où mon idée: quoi de plus facilement accessible, quelle que sois la configuration de la connexion, qu'une page http?



Mise à jour



Mon robot peu à présent recevoir ses ordres d'un site internet (testé et éprouvé :) )

Défaut: je dois manuellement aller dans le menu édition du site, faire "éditer la page" écrire "avence" ou "recule" ou "stop" puis cliquer sur enregistrer. Je cherche donc un moyen de faire ça de façon graphique/par une appli type flash sur une page web (portabilité optimale).

#9 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 15 décembre 2010 - 09:10

regarde le php, un simple
if(isset($_GET['ordre']))
{
echo $_GET['ordre'];
}
?>[/code]
et tu y accède avec un page.php?ordre=avance


#10 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 15 décembre 2010 - 10:13

Merci, bien que je ne connaisse rien au PHP, d'après ce que j'ai compris:




alors, envoyer l'ordre[/code]



quand tu dis accéder, cela veut dire réassigner la valeur? je pense que c'est le cas car on a "ordre=avance" Si c'est bien ça comment le récupérer? car si je lis le code source de ma page je suppose que j'aurai:




if(isset($_GET['ordre']))

{

echo $_GET['ordre'];

}

?>[/code]



non?

EDIT: Je pense avoir compris!

en fait, en tapant page.php?ordre=avance , si je me rend ensuite sur "page", le texte qui sera affiché sur mon navigateur sera "avance"! mais qu'en est il du code source?




#11 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 17 décembre 2010 - 06:02

[quote"zeqL"]Hum actuellement en Linux Embarqué nous avons un projet : un serveur web sur une carte embarquée (préconcue).

On utilise Boa (www.boa.org), qui est un peu light pour faire tourner un serveur web hyper top, mais propose les fonctionnalités de base.
Néanmoins comme tu as un netbook, bcp plus puissant que le microcontroleur de notre carte, avec n'importe quel serveur web (apache) ca suffira.

Le point où je voulais en venir était qu'on devait afficher une page web, mais aussi des infos sur la machine via du CGI.
Le CGI est un protocole mais derrière tu peux exécuter des scripts dans de nombreux langages, en perl, bash, C principalement.

Ca revient un peu à la méthode GET de webshinra quand même, mais ca évite de se casser la tête avec des modifications de code source :o
Car tu peux faire plusieurs liens "Haut" "Bas" "Droite" "Gauche" qui envoie sur le même script (en C par exemple) et ce script analyse ce qu'on lui envoie et fait une action en conséquence.


EDIT : malheureusement il te faudra une ip fixe sur ta FAI box pour y accéder depuis l'extérieur ^^ [/quote]

J'ai également travaillé avec un µlinux sur une carte ssv avec boa et c'est vraiment facile de faire du cgi.
Par contre tu pourrais aussi utilisé le xml peut être .

#12 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 17 décembre 2010 - 07:49

a mais non je dis des bêtise...
tu as besoin que sa reste sinon non sa vérifie juste que la valeur existe et sa l'affiche...
enfin ce que tu devrais faire c'est faire un script qui crée un fichier txt et toi tu lit celui-ci enfin regarde du côtes cgi et dyndns ce sera plus efficace

#13 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 17 décembre 2010 - 08:28

Je rajoute que tu peux aussi utilisé no-ip pour avoir une ip fixe.

#14 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 17 décembre 2010 - 08:33

Je n'ai pas envie de DynDNS (ça revient à un adressage "fixe",je perd en mobilité des mes machines)
Pour le fichier txt, ce qui m’embête c'est que la lecture et l'écriture ne peuvent pas être simultanées, quoique je suppose que l'alternance des 2 peut être très rapide...


Je suppose qu'en fin de compte, je ne peux pas couper aux serveurs / adressage fixe/dynamique... ou a lors je crée un serveur à part, + un programme télécommande et un programme réception. ainsi je n'ai peut être pas tous les ports à rouvrir etc lorsque je déplace mon robot / ma commande, c'est le serveur qui gère le tout... Mais je n'ai vraiment pas les compétences requises! Et puis tout ça pour envoyer un pauvre octet, c'est malheureux! Je n'ai pas exploité la piste des mails non plus, je ne sais pas quelle peut être leur vitesse?

EDIT: toutes les solutions no-ip etc pour adressage fixe/dynamique me pose un problème de portabilité de mon système. Je sais je chipote mais je cherche à améliorer mon système, donc je suis assez pointilleux ^^

#15 zeqL

zeqL

    Membre passionné

  • Membres
  • PipPipPip
  • 393 messages
  • Gender:Male

Posté 18 décembre 2010 - 01:20

[quote"lordcuty"]regarde le php, un simple
if(isset($_GET['ordre']))
{
echo $_GET['ordre'];
}
?>[/code]
et tu y accède avec un page.php?ordre=avance
[/quote]

On peut faire la même chose avec les CGI.
Avec un script Bash on récupère aussi les data HTTP :)

Etant en ce moment sur ce projet de serveur embarqué et CGI, que je programme en Bash, je trouve que c'est pas mal puisque le bash étant assez haut-niveau, on a accès à des fonctions très pratiques pour le traitement des données, qui sous d'autres langages nécessitent soit de grosses bibliothèque, soit d'écrire ses propres fonctions (ca revient un peu au même).



[quote"MrAlexis44600"]
Oh, ce n'est pas que ça me dérange d'ouvrir des ports, mais c'est que je veux pouvoir déplacer mon robot, qu'ils se connecte à d'autres bornes wifi sans avoir à le re-paramétrer (il a un port carte SIM 3G, ça ouvre des perspectives )
[/quote]
[quote"MrAlexis44600"]
Je n'ai pas envie de DynDNS (ça revient à un adressage "fixe",je perd en mobilité des mes machines)
[/quote]

Ouki... revois un peu le fonctionnement d'internet. Si tu arrives à régler ton problème, dépose un brevet !

Lors que tu connecte à une borne wifi, la plupart du temps il y a un serveur dhcp qui va attribuer une adresse IP à la machine, donc *aléatoire*.
Si ton robot reste toujours chez toi, pas de problème, si tu l'envoie en dehors de chez toi, il y a toujours des IPs différents, clé 3G ou pas (car je pense pas que le FAI "réserve" une adresse IP par clé 3G, c'est comme pour tout le monde, tu te connectes et tu obtiens une adresse IP).

Tu parles de portabilité mais je pense que c'est tout le contraire, tu cherches une solution technique pour ne pas à avoir à changer des IPs contenues dans tes programmes...
Un simple prompt et une récupération des adresses ip et c'est réglé, avec pour contrainte de devoir laisser le robot à l'endroit où l'adresse IP a été programmée, ensuite on peut utiliser un pc différent.

Enfin tu ne veux pas d'ouverture de ports, soit, mais à priori tu utilise des ports par défauts, problablement configurés dans ta box.
Je ne sais pas de quelle box il s'agit, mais un vrai routeur avec des fonctions avancées te permettrai peut-être de résoudre ton problème, même si j'en doute, car finalement je ne comprend pas vraiment ce que tu veux faire, techniquement parlant.

Donne nous des détails sur le fonctionnement de tes programmes car là avec toutes tes contraintes, je pense que tu cherches le Graal...


#16 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 18 décembre 2010 - 02:25

@zeql: tu as raison, je ne m'y connais vraiment pas sur le sujet, j'ai eu quelques cours sur les réseaux et ça n'a jamais été une partie de plaisir.

Apparemment quand je tente de donner des détails techniques je dis n'importe quoi, je vais donc rester sur une explication du fonctionnement théorique:

Je me suis mal exprimé, ce que j'ai découvert lorsque je tentais de passer de réseau local à l'internet c'est que je devais régler certains paramètres dans mon routeur, ce qui ne me conviens pas car je veux pouvoir bouger mon robot et ma télécommande.
D'où mon raisonnement très simple: si j'utilise une méthode de transfert qui ne nécessite aucun paramétrage de ma box, je peux m'attendre à ce que cette technique fonctionne de n'importe où, vers n'importe où.

Autre raisonnement peut être simpliste de ma part, qu'est-ce qui est accessible de partout (c'est à dire même avec une connexion 3G ou le réseau de mon université)? Un site internet, hébergé, du type "http://www.robotix.fr". Je me suis donc crée un GoogleSite, et j'ai utilisé un sketch processing pour récupérer le code source d'une page de ce site, cherchant dans les chaines de caractères "avance","recule"ou"stop". Je modifie le contenu texte de ce site, en utilisant l'assistant en ligne, et j'écris soit "avance","recule"ou"stop". C'est testé et fonctionnel, mais c'est laborieux de devoir "éditer" le site, taper la bonne chaine de caractères puis "enregistrer" .


Le projet abouti je le verrai tel quel: une adresse web, accessible de n'importe quel pc/connexion, type http://www.telecommanderobot.fr , avec champs d'authentifications, qui renvoie sur une animation flash ou autre qui capte les touches appuyées, et du coté de mon netbook: chaque touche captée sur le site internet serait envoyée d'un port usb à ma carte arduino qui se charge de décrypter les ordres et d'agir en conséquence.


Je sais que je ne "respecte pas les règles du jeu des réseaux" dans le sens où il faudrait que je me farcisse la création d'un serveur, utilisation de DynDNS pour que je puisse accéder de n'importe où à mon netbook, mais le but n'est que de transmettre une touche d'ordinateur (en code ASCII, cela ne représente qu'un octet) à une vitesse très faible (l'ordre de la seconde / demi seconde m'irai parfaitement), je pense donc que je peux recouvrir à des techniques que je qualifierai moins "classiques" mais plus faciles à appréhender selon moi.

#17 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 23 décembre 2010 - 08:37

heu c'est juste une idée :heu:

il y as ce petit logiciel hamachi
il creer une carte reseau virtuel entre les 2 pc et mis a part certain proxy rien ne l'arrete
:D
alors on reprend

tu a le net book connecter par wifi disons au mac do par exemple
un serveur chez toi
les 2 relier a internet et a hamachi

en gros on se connecte au serveur chez toi pour envoyer les info au netbook ( via un site héberger sur le serveur chez toi par exemple )

ps: bon projet
permet une infinité de chose selon moi ! ;)
continu sur cette voie :tare:

#18 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 23 décembre 2010 - 01:05

Ha, une autre piste!
Un réseau privé virtuel, est-ce que cela revient au même qu'un réseau local? dans ce cas je pourrais utiliser les 2 outils Processing serveur/client, et créer moi même ma télécommande sous Processing! ça se rapproche énormément de ma solution idéale. Le seul "inconvénient" est que je dois installer hamachi sur l'ordinateur sur lequel je veux utiliser ma télécommande, mais après tout il existe peut être des versions portables ou compatibles live-USB.
je regarde ça de plus près :)

#19 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 23 décembre 2010 - 01:28

Bon, hé bien 15 minutes plus tard... il semble que cela fonctionne à merveille! Hamachi me fourni une pseudo-adresse IP locale, et je me sert des bibliothèques Processing gérant le réseau local pour transmettre mes ordres. J'utilise donc du Processing à 99%, ce que je maitrise "le mieux" et qui me donne le plus de liberté.

Avantages par rapport à mon ancinne solution (VNC) : la fenetre de Processing sur mon Eeepc n'a pas besoin d'avoir le "focus"

Inconvénients: aucun par rapport à mon ancienne solution, c'est un peu dommage que la solution utilisée ne sois pas libre... mais c'est très efficace!

Merci à toi julienmus!

Il ne me reste plus qu'a tester ça à partir et vers différents type des connexions...

#20 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 23 décembre 2010 - 01:30

[quote"MrAlexis44600"]Ha, une autre piste!
Un réseau privé virtuel, est-ce que cela revient au même qu'un réseau local? [/quote]
:D c'est carrément ça ! on peu le comparer a un réseau local!
:tare:
je reste a ta dispo si besoin




Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users