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 =).

Conception d’un PCB

pour notre projet, nous aimerions que toute notre électronique soit fixée sur un « PCB » ou « circuit imprimé ». Il y a plusieurs façon de procéder. Dans ce post, nous allons documenter le processus que nous avons suivi pour obtenir un PCB.

Prototypage

Avant de commencer à dessiner la plaque, il est généralement plus judicieux de savoir si les composants choisis fonctionnent correctement comme on les a disposés. Il s’agit ici de créer le circuit sur une plaque de prototypage (breadboard) et le tester.

Design du PCB

Une fois que le prototype est au point, il faut dessiner le circuit à l’ordinateur pour qu’une machine puisse finalement l’imprimer.

Nous proposons deux logiciels qui pourront satisfaire tous les besoins:

  • Eagle CAD, par cadsoft, est un programme professionnel et complet. Il demande un certain apprentissage pour le maitriser, mais vous permettra de réaliser des circuits très satisfaisants. Les seules limitations de la version gratuite sont la taille du PCB et le nombre de couches limitées à 2. Mais, cela ne vous empêchera pas  de créer des shields Arduino p.ex.
    Download: http://www.cadsoftusa.com/download-eagle/
  • Fritzing est un projet qui vise à améliorer la créativité et le partage de l’information dans le domaine Arduino et Processing. Grâce à leur programme intuitif, il est possible de créer des plaques électroniques professionelles. Ils proposent même un service pour les imprimer à des prix assez intéressants. Même si nous avons plutôt opté pour le premier programme, nous vous conseillons vivement d’envisager ce logiciel pour des plaques simples.
    Download: http://fritzing.org/download/

Puisque nous avons utilisé Eagle, les explications qui suivront se concentreront sur ce programme. Par contre, le but n’est pas de donner un tuto exhaustif sur les bases de ce logiciel, car d’autres l’ont très bien fait avant nous. Il est conseillé de lire ces pages avant de continuer avec l’utilisation de Eagle.

Exemple de notre plaque:

Board

Board

Schéma

Schéma

La webcam

Bonjour à tous,

Dans ce tuto, je vais vous expliquer comment installer la webcam afin que vous puissiez avoir une image à distance. Vous avez donc besoin d’une caméra (compatible avec le Raspberry Pi voici le lien de vérification. Si vous prenez un modèle non inscrit dans la liste, je ne garanti pas que cela fonctionne). Pour l’exemple, je vais utiliser une webcam Logitech C270 à 39 CHF. Pour utiliser la webcam, il nous faut un petit logiciel, j’ai choisi guvcview car il est très léger et fonctionne très bien. Pour installer ce logiciel, il faut aller dans le Terminal et taper ceci:

sudo apt-get install guvcview

Une fois installé, vous branchez la webcam sur un port USB (ou sur le hub USB, il se peut que certaines webcam requièrent plus de puissance). Et vous lancez le software avec la commande suivante:

guvcview

Vous pouvez rajouter les arguments que vous souhaitez. Vous les trouverez en tapant

guvcview --help

mais ils ne sont pas vraiment nécessaire puisque une interface graphique est proposée dans l’application. Le démarrage du logiciel peut prendre quelques secondes. Il devrait ensuite y avoir deux fenêtres, une avec l’image de la webcam, et une deuxième avec des réglages. Voilà, vous avez maintenant un système autonome qui envoie une image.
Voici le lien de la suite du tuto: [à venir]

Le wi-fi

Bonjour à tous,
Dans ce post, je vais vous expliquer comment installer le wi-fi sur le Raspberry Pi. Tout d’abord, vous allez avoir besoin d’un dongle wi-fi qui soit compatible (voir ici). Je vais utiliser le dongle Edimax EW-7811Un. Je tiens à préciser que ce dongle requiert un surplus de puissance donc il faut utiliser un hub USB. Une fois que vous avez votre dongle wi-fi en main, vous le branchez au Raspberry Pi (via le hub USB) et vous ouvrez le Terminal. Dans le Terminal, tapez:

lsusb

La console devrait vous retourner quelques lignes, dont une nous intéresse. Elle devrait ressembler à ceci:

Bus 001 Device 001: ID 1de3:7824 Edimax Technology Co., Ldt EW-7811Un 802.11 Wireless Adapter [Realtek RTL8188CUS]

Si vous avez une ligne dans ce genre là, c’est bon, votre Raspberry Pi détecte le dongle.
Maintenant, tapez la commande suivante:

lsmod

Dans la répons donnée par la commande, il devrait y avoir une ligne où il est écrit ceci:

8192cu                485042   0

Si vous ne voyez pas cette ligne, réinsérez le dongle dans le port USB. Comme dernière vérification, entrez la commande

iwconfig

Et il devrait y avoir un

wlan0

qui apparaît.
Très bien, maintenant, nous allons pouvoir configurer notre dongle. Pour configurer ce dongle, il faut ouvrir un fichier.

sudo nano /etc/network/interfaces

Une fois dans le document. Il faut vérifier que les lignes ci-dessous soient décommentées (qu’il n’y ait pas de # devant):

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

Pour supprimer des #, il faut simplement de diriger avec les touches fléchées et supprimer le # avec la touche backspace. Pour sauvegarder le fichier, faites ctrl+x et choisissez oui puis entrée (deux fois).
Une fois que ce fichier à été modifié, il faut créer le fichier où il y aura les données de connexions (SSID, mot de passe etc…). Pour ce faire, tapez ceci:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Dans ce fichier, écrivez ceci (en remplaçant Votre_SSID par le nom du réseau et Votre_CODE_WPA par le code de sécurité du réseau):

network={
ssid="Votre_SSID"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="Votre_CODE_WPA"
}

Une fois toutes ces manipulations terminées, vous allez pouvoir taper:

sudo ifup wlan0

Cette commande permettra de redémarrer l’interface du dongle et ainsi, le dongle va tenter de se connecter au routeur que vous lui avez assigné.
Pour connaître l’adresse ip que le Raspberry Pi utilise via le dongle (qui n’est pas le même que par le câble Ethernet), il suffit de taper:

ifconfig wlan0

Et il y aura une ligne comme celle-ci:

inet addr:xxx.xxx.xxx.xxx Bcast yyy.yyy.yyy.yyy Mask 255.255.255.255

Ce qui est à la place du xxx.xxx.xxx.xxx est l’adresse ip du Raspberry Pi. Notez qu’il est possible que pour que la connection fonctionne, il faille redémarrer le Raspberry Pi avec la commande suivante:

sudo reboot

Pour la suite du tutoriel, voici le lien