Communication serial en Java (RXTX)

Dans le cadre du serveur Java qui remplacera bientôt l’interface graphique python contrôlée par ssh, nous avons dû résoudre le problème de la communication entre l’Arduino et le Raspberry. Puisque ils sont connectés par usb, nous nous sommes intéressés à la librairie RXTX pour java.

Vous pourrez trouver toutes sortes d’informations sur l’installation et l’utilisation de cette librairie ici.

Il est possible que vous ayez déjà cette librairie si vous utilisez l’IDE Arduino.

Nous aimerions partager avec vous la classe « SerialCommunication » basée sur les classes de la librairie RXTX (gnu.io.*). Nous n’avons probablement rien inventé de nouveau et nous nous sommes largement inspirés des exemples proposés par le wiki. Nous trouvons juste que cette classe englobe tous nos besoins et est pratique à utiliser.

Créez un objet SerialCommunication:

SerialCommunication serialCom = new SerialCommunication();

Etablissez une connection sur le port(p.ex.) »/dev/ttyS33″ à la vitesse de 9600 bauds:

SerialCom.connect("/dev/ttyS33", 9600);

Remarque: java RXTX ne cherche que des ports dans « /dev/ttySxx » or l’Arduino se trouvera probablement sur « /dev/ttyACM0 ». Pour résoudre ce problème, créez un symlink entre « /dev/ttyACM0 » et un port inexistant dans les « /dev/ttySxx » (p.ex. /dev/ttyS33):

#sudo ln -s /dev/ttyACM0 /dev/ttyS33

Ce lien disparait chaque fois que vous éteignez l’ordinateur, donc pensez à le recréer ou écrivez un bash script =).

Petite information

Bonjour à tous,

Ces dernières semaines ont été riches en développements, problèmes , solutions et même en nouvelles piste. Tout d’abord, jusqu’à présent, nous utilisions VNC pour la connexion distante. Malheureusement, à cause cde cela, il y a un conflit de manager de fenêtres X (celle que nous utilisons pour controller le véhicule entre autres. Sachant que notre programme en python qui permet de faire fonctionner le véhicule ayant une interface graphique contenue dans une fenêtre X est lui-même dans une fenêtre X (celle de VNC-Viewer. Le problème est que les données sont biaisées lors du transfert de packet. En effet, notre code est à l’écoute du clavier et l’orsque une touche est enfoncéee, le code envoie une lettre qui sera interprété par le Raspberry Pi et l’Arduino, et lorsque nous la relachons, le code envoie une autre lettre. Lorsque nous utilisons ce code via VNC-Client, nous ne parvenons pas à bloquer la répétitions de touches, ce qui fait que le véhicule avance par saccade. Pour remédier à ce problème, nous avons fait en sorte de ne plus passer par VNC-Viewer, mais par SSH (avec un tunnel X), ce qui marche parfaitement. Après avoir discuté avec plusieurs personne de ce problèmes, nous avons décidé de terminer tout d’abord le drone avec le code python, puis, au vu du temps restant, de recommencer à coder, mais cette fois-ci, en Java. Cette fois-ci, il y aura plus de difficultés dans le sens où nous allons devoir inclure dans notre code la communication entre le serveur et le client. Nous allons commencer par le faire en UDP-IP avant de peut-être le faire en TCP-IP. Nous nous imposons comme délais (pour le python), mercredi prochain.

Démarrer le Raspberry Pi pour la première fois

Bonjour à tous, je continue le tutoriel sur le Raspberry Pi. Ici, nous allons voir comment faire pour configurer son Raspberry Pi.

Donc, pour commencer, vous branchez le Raspberry Pi, à une TV. Vous branchez une souris, un clavier, le câble Ethernet et la carte SD avec Raspbian. Et pour finir, vous allumez le tout avec le secteur. Le Raspberry Pi va démarrer. ça prend du temps la première fois, alors ne paniquez pas. Après un petit moment, il y a une page qui s’ouvre, avec une liste défilante. la souris ne fonctionne pas à ce moment, alors utilisez les touches fléchées et les touches Entrées, Escape et Tab.

panneau de démarrage

Sur « information », vous aurez un descriptifs des points, mais je vais vous aider un peu. Première chose à faire si vous n’avez pas encore partitionné la carte avec Gparted, c’est de aller dans « Expand root partition to fill SD card ». Vous appuyez sur Entrée et vous attendez. Une fois cette manip faite, allez dans « configure_keyboard » et choisissez votre clavier. Si vous voulez le clavier suisse (français). Il faut aller dans la langue allemand et choisir le clavier suisse. Ensuite, vous pouvez si vous le souhaitez, changer le mot de passe de l’utilisateur pi (par défaut, c’est « raspberry »). Vous pouvez optionnellement choisir le lieu et le fuseau horaire de chez vous, mais c’est pas la chose la plus utile. Si vous le souhaitez, vous pouvez overclocker votre Raspberry Pi (i.e augmenter la puissance du Raspberry Pi, mais attention, ça va faire chauffer le Raspberry Pi!!!!!!) Pour connaître la température du processeur. il faut taper:

/opt/vc/bin/vcgencmd measure_temp

Allez dans « boot_behaviour » et faites en sorte que le Raspberry Pi boot sur le desktop directement (on pourra toujours accéder à ce panneau en tapant la commande: raspi-config).

Une fois ces manips faites, vous pouvez aller sous « finish » et appuyer sur Entrée. Une fois sur le bureau. Ouvrer terminal et tapez la commande suivante:

sudo reboot

Ou alors:

sudo shutdown -r now

Le Raspberry Pi va maintenant redémarrer. Attendez un petit moment. (il faut environ 40 à 50 secondes au Raspberry Pi pour démarrer, ce qui est assez rapide quand même ^^ ).

Une fois le Raspberry Pi allumé, je vous invite à continuer le tutoriel ici