11/03/2014

Rover pcDuino partie logicielle

Édit (25/11/2015) :

I DID IT, JE L'AI FAIT !!!

Yahoo, Eureka, ça fonctionne...

Ça roule, ça tourne, ça envoie les images... !!!

Bon ok j'ai mis le temps, mais j'y suis arrivé. J'ai mon robot explorateur, une première étape du projet "Smag0" beaucoup plus vaste, de "robot qui range ma chambre".

Contrôlable par une interface web, une application mobile, ou adaptable à toute autre interface, le robot se déplace dans la maison et vous envoie les images, que vous soyez chez vous, au bureau ou à l'autre bout du monde !!!

Je m'apprête à préparer un "kit" pour ce robot explorateur avec tout le matériel nécessaire et les instructions, pas à pas pour en monter un vous même, ou encore à le proposer déjà tout monté, alors faites-moi signe si ce projet de robot vous intéresse par mailscenaristeur@gmail.com ou par twitter  @DFaveris . 

 Voir aussi http://smag0.blogspot.fr/2014/03/rover-pcduino-introduction.html pour l'introduction et la partie matérielle.
et un guide pour l'installation des composants utiles  http://smag0.blogspot.fr/2015/12/reinstallation-pcduino.html

 
Introduction
1. Matériel
1.1 Outils nécessaires
1.2 Découverte du matériel
1.3 Montage de la caméra PTZ
1.4 Assemblage de la plate-forme
1.5 Instruction de câblage
2. Partie Logicielle
2.1 Configurer pcDuino en point d'accès WiFi
2.2 Installer Video Stream Server sur pcDuino
2.3 Installer le logiciel de contrôle
2.4 Contrôler le rover avec un PC
2.5 Contrôler le Rover avec un appareil Android
2.5.1Introduction
2.5.2 GUI
2.5.3 Introduction au code source
2.5.3.1Module de contrôle d'interface
2.5.3.2 Module de conversion du format d'images
2.5.3.3 Module de communication
2.5.4 Guide de l'utilisateur
2.6 Liens de téléchargement

 Cette partie est la deuxième partie, la partie logicielle, pour consulter l'introduction et la partie matérielle cliquez ici

infos pour éviter des galères : 
régler l'heure sur pcduino :  sudo ntpdate ntp.ubuntu.com 
régler le clavier en français : sudo setxkbmap fr


2. Partie Logicielle

Le pcDuino sert de point d'accès Wi-Fi, et un serveur de flux vidéo. Il peut transmettre
vidéo en temps réel, et accepter le commandement de commande de client par WiFi. il
contrôle le mouvement de Rover et la rotation de la caméra.



################################################################################
EDIT pour le PCDUINO V2 avec carte Wifi Noir : 
source : http://learn.linksprite.com/wifi/enable-the-wireless-ap-function-on-pcduino-v2/
################################################################################
This tutorial is use to pcDuino V2 with black wifi module (rt1818cus driver) and pcDuino Lite WiFi with black wifi module (rt1818cus driver)

The pcDuino 2 / 3, Lite Wifi with Green WiFi Module (rt1818eus driver) is different .
The built-in hostapd can’t support system service mode. However, there are one package available online.

1.Download  software tools:
$sudo apt-get update
$sudo apt-get install git vim
$sudo apt-get install isc-dhcp-server
2. Download source code for drivers from official website:
$wget ftp://WebUser:Lc9FuH5r@58.211.24.153/cn/wlan/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
#http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#2742
3.Download header file for compiling the driver:
$sudo apt-get install pcduino-linux-headers-3.4.29+

$cd  /usr/src/ linux-headers-3.4.29+/arch
$cp  arm  armv7l  -rf
Note:  You will need to reboot pcDuino after this step if you are using pcDuino Lite wifi, wait for  3 seconds at  u-boot stage, enter the command, otherwise it can not be started properly.
$setenv loglevel 8 ramfs
$boot
$mount  /deV/nandd /mnt
$cd  /mn lib/modules/3.4.29+/kernel/drivers
$rm gpu –rf
$reboot
4. Delete original “8188cu.ko”:
$rm  /lib/modules/3.4.29+/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko
$rm  /lib/modules/3.4.29+/kernel/drivers/net/wireless/8192cu.ko
5. Compile installing driver:
$unzip  RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
$cd   RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911
$chmod +x install.sh
$sudo ./install.sh
6. Finish Installation:
ubuntu@ubuntu:~/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911$ lsmod
Module                  Size  Used by
8192cu                624916  0
sw_interrupt            2424  0
gpio                    4509  0
pwm                     5050  0
adc                     1671  0
hardwarelib             1551  4 sw_interrupt,gpio,pwm,adc
rt5370sta             616973  0

INSTALLATION HOSTAPD : 

$git clone https://github.com/jenssegers/RTL8188-hostapd

$cd RTL8188-hostapd/hostapd
$sudo make install
Install 8188’s hostapd:
$cd  RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd
$tar xvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
$cd  hostapd
$sudo make install
Configure hostapd:
$vim  /etc/hostapd/hostapd.conf
# Basic configuration
interface=wlan3  #it depends on your own connection
ssid=wifi
channel=1
#bridge=br0
# WPA and WPA2 configuration
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# Hardware configuration
driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek
service hostapd restart
Name this wifi AP as wifi, password as 12345678
Now you need to reset your wifi password, and you can find this wifi available, but if it’s not working, you need to configure your internet.
vim /etc/network/interfaces
auto wlan3
iface wlan3 inet static
        address 192.168.100.1
        netmask 255.255.255.0              
service networking restart
Configure dhcp:
vim /etc/dhcp/dhcpd.conf #add it in the end
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.10 192.168.100.100;
  option routers 192.168.100.1;
  option domain-name-servers 8.8.8.8;
}
service isc-dhcp-server restart

################################################################################

2.1 Configurer pcDuino en point d'accès WiFi

  Le noyau (20130531) publié sur le site pcDuino habituellement seulement fournit pilote en mode WiFi STA. Il n'a pas les iptables pour le routage IP soit. Donc, la première étape consiste à remplacer le limage du noyau de pcDuino.
 
Vous pouvez télécharger tous les fichiers nécessaires à l'adresse :  https://s3.amazonaws.com/linksprite/pcduino/wifiAP.rar

Copier wifiAP le répertoire ubuntu:
 ubuntu@ubuntu:~$ ls
Desktop Downloads Pictures Templates c_enviroment wifiAP
Documents Music Public Videos sample
$ sudo mount /dev/nanda /boot
$ sudo cp uImage /boot -f
$ sudo cp evb.bin /boot -f
$ sudo cp 3.4.292B.tar.bz2 /lib/modules/
$ cd /lib/modules/
ubuntu@ubuntu:/lib/modules$sudo tar -xvf 3.4.292B.tar.bz2

Redémarrer pcDuino :

$sudo reboot
Consulter les modules logiciels en utilisant la commande '$ lsmod ':
root@ubuntu:/home/ubuntu# lsmod
Module Size Used by
rt5370sta 617141 0
8192cu 537048 0
rt2800usb 11321 0
rt2800lib 40721 1 rt2800usb
crc_ccitt 1094 1 rt2800lib
rt2x00usb 7245 1 rt2800usb
rt2x00lib 31040 3 rt2800usb,rt2800lib,rt2x00usb
mali_drm 2087 1
drm 157060 2 mali_drm
mac80211 257514 3 rt2800lib,rt2x00usb,rt2x00lib
cfg80211 150671 2 rt2x00lib,mac80211
mali 91258 0
disp_ump 823 0
ump 44002 4 mali,disp_ump
Redémarrez et modifier / etc / modules, retirez rt5370sta:

$sudo modprobe rt2800usb
$echo 148F 5370 > /sys/bus/usb/drivers/rt2800usb/new_id
Vous pouvez également modifier la commande ci-dessus dans un port série de débogage.
Si nous activons WLAN, "$ ifconfig wlan3 up", nous allons voir le message d'erreur suivant:

root@ubuntu:~# ifconfig wlan3 up
[ 1043.640000] phy0 -> rt2x00lib_request_firmware: Error –
Failed to request Firmware.
SIOCSIFFLAGS: No such file or directory
Il montre qu'il n'ya pas de firmware pour le dongle USB WiFi. Nous avons besoin de le mettre dans le bon endroit.  (A Modifier si pcDuino V2 ?)
Utilisez la commande "$ modinfo rt2800usb" et trouver le nom de firmware est rt2870.bin.


 root@ubuntu:~# modinfo rt2800usb
filename:
/lib/modules/3.4.29+/kernel/drivers/net/wireless/rt2x00/rt28
00usb.ko
license: GPL
firmware: rt2870.bin
description: Ralink RT2800 USB Wireless LAN driver.
version: 2.3.0
author: http://rt2x00.serialmonkey.com
 Copiez le firmware dans le répertoire correct:

 $sudo cp rt2870.bin /lib/firmware/
 Maintenant, nous redémarrons WLAN, alors nous pouvons trouver une connexion Wi-Fi:

 ”$sudo ifconfig wlan3 up”
Installez iptables:

 $sudo apt-get install iptables vim iw
Après l'installation est terminée, vérifiez si iptables a été installé avec succès:
$sudo iptables -L
root@ubuntu:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Télécharger et éditer hostapd:
En compilant nous aurons besoin "libnl-dev" et "libssl-dev". Alors  installons-les en premier.


 $sudo apt-get install libnl-dev libssl-dev
Hostpad 1.0 can be downloaded from http://hostap.epitest.fi/releases/.
A complete list of commands are:

ubuntu@ubuntu:~$ wget
http://hostap.epitest.fi/releases/hostapd-1.0.tar.gz
ubuntu@ubuntu:~$ tar xvf hostapd-1.0.tar.gz
ubuntu@ubuntu:~$ cd hostapd-1.0
ubuntu@ubuntu:~/hostapd-1.0$ cd hostapd/
ubuntu@ubuntu:~/hostapd-1.0/hostapd$ vim defconfig
 Trouvez la ligne contenant “#CONFIG_IEEE80211N=y”, enlevez le dièse ‘#’
Sauvegarder et quittez


ubuntu@ubuntu:~/hostapd-1.0/hostapd$ cp defconfig .config
ubuntu@ubuntu:~/hostapd-1.0/hostapd$ make
CC main.c
CC config_file.c
CC ../src/ap/hostapd.c
CC ../src/ap/wpa_auth_glue.c
CC ../src/ap/drv_callbacks.c
CC ../src/ap/ap_drv_ops.c
CC ../src/ap/utils.c
CC ../src/ap/authsrv.c
ubuntu@ubuntu:~/hostapd-1.0/hostapd$ sudo make install
mkdir -p /usr/local/bin
for i in hostapd hostapd_cli; do cp -f $i /usr/local/bin/$i; done
Vérifiez si hostpad a été installé avec succès:

ubuntu@ubuntu:~/hostapd-1.0/hostapd$ hostapd -v
hostapd v1.0
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2012, Jouni Malinen <j@w1.fi> and
contributors
Maintenant, nous commençons à configurer hostpad.
Nous espérons que notre hotspot est configuré comme suit,


SSID: ssid=pcduino
Password: wpa_pass
phrase=1234567890
Encryption: wpa_key_mgmt=WPA-PSK
 Configurez comme suit:

 root@ubuntu:~# nano /etc/hostapd.conf
interface=wlan3
driver=nl80211
ssid=pcduino
hw_mode=g
channel=11
dtim_period=1
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=1
ieee80211n=0
wpa=2
wpa_passphrase=1234567890
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

 Note: si wlan3 peuvent changer, nous devons utiliser "ipconfig" pour vérifier.
Une fois la configuration terminée, nous utilisons les commandes suivantes pour vérifier la configuration.


 root@ubuntu:~# hostapd -dd /etc/hostapd.conf
random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd.conf
nl80211: interface wlan4 in phy phy0
rfkill: initial event: idx=0 type=2 op=0 soft=0 hard=0
rfkill: initial event: idx=1 type=1 op=0 soft=0 hard=0
nl80211: Using driver-based off-channel TX
nl80211: Register frame command failed (type=208): ret=-114 (Operation already in progress)
nl80211: Register frame match – hexdump(len=1): 06
nl80211: Failed to register Action frame processing – ignore for now
nl80211: Add own interface ifindex 5
nl80211: Set mode ifindex 5 iftype 3 (AP)
nl80211: Create interface iftype 6 (MONITOR)
nl80211: New interface mon.wlan4 created: ifindex=7
nl80211: Add own interface ifindex 7
BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
nl80211: Regulatory information – country=00
nl80211: 2402-2472 @ 40 MHz
nl80211: 2457-2482 @ 40 MHz
nl80211: 2474-2494 @ 20 MHz
nl80211: 5170-5250 @ 40 MHz
nl80211: 5735-5835 @ 40 MHz
nl80211: Added 802.11b mode based on 802.11g information
Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=20 dBm
Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=20 dBm
Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=20 dBm
Completing interface initialization
Mode: IEEE 802.11g Channel: 11 Frequency: 2462 MHz
nl80211: Set freq 2462 (ht_enabled=0 sec_channel_offset=0)
RATE[0] rate=10 flags=0×1
RATE[1] rate=20 flags=0×1
RATE[2] rate=55 flags=0×1
RATE[3] rate=110 flags=0×1
RATE[4] rate=60 flags=0×0
RATE[5] rate=90 flags=0×0
RATE[6] rate=120 flags=0×0
RATE[7] rate=180 flags=0×0
RATE[8] rate=240 flags=0×0
RATE[9] rate=360 flags=0×0
RATE[10] rate=480 flags=0×0
RATE[11] rate=540 flags=0×0
Flushing old station entries

Ensuite, installez le serveur DHCP.
$sudo apt-get install dhcp3-server
Une fois que c'est fait, configurez le serveur DHCP:
$sudo nano /etc/dhcp/dhcpd.conf
Ajoutez les lignes suivantes à la fin du fichier:
subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1; #router address
option domain-name-servers 8.8.8.8;
}
Redémarrez hostapd:
root@ubuntu:~# killall hostapd
hostapd: no process found
root@ubuntu:~# hostapd -B /etc/hostapd.conf
Configuration file: /etc/hostapd.conf
Using interface wlan4 with hwaddr 00:c3:16:a0:03:00 and ssid ‘pcduino’
Définissez l'adresse IP de WiFi de pcDuino:
root@ubuntu:~# ifconfig wlan4 192.168.0.1
Activez DHCP :
root@ubuntu:~# dhcpd wlan4 -pf /var/run/dhcp-server/dhcpd.pid
Internet Systems Consortium DHCP Server 4.1-ESV-R4
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 0 leases to leases file.
Listening on LPF/wlan4/00:c3:16:a0:03:00/192.168.0.0/24
Sending on LPF/wlan4/00:c3:16:a0:03:00/192.168.0.0/24
Sending on Socket/fallback/fallback-net
Activez l'IP forwarding:
root@ubuntu:~# echo 1 >/proc/sys/net/ipv4/ip_forward
 Réglez NAT:
root@ubuntu:~# iptables -t nat -A POSTROUTING -o eth0 -j
MASQUERADE
Après la configuration ci-dessus est fait, nous devrions voir un point d'accès nommé "pcduino".
Remarque: Dans le débogage, vérifiez votre WiFi en utilisant "ipconfig" et le changement wlan en conséquence.

Installer Video Stream Server sur pcDuino

 

Nous utilisons le package opensource mjpg-streamer de mettre en œuvre le serveur de transmission vidéo. Le client peut être un navigateur ou une application spéciale.

D'abord installer quelques logiciels.

$sudo apt-get install libv4l-dev
$sudo apt-get install libjpeg8-dev
$sudo apt-get install subversion
$sudo apt-get install imagemagick
Le libv4l-dev et ibjpeg8-dev sont des bibliothèques. La Subversion et ImageMagick sont nécessaires pour compiler le code source mjpg-streamer.


Ensuite téléchargez, compiler et installer le logiciel serveur vidéo mjpg-streamer.


$svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
! remplacé par : svn co svn co https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer

$cd mjpg-streamer
$make USE_LIBV4L2=true clean all
$sudo make DESTDIR=/usr install
Après l'installation est terminée, nous devons ouvrir le serveur de vidéo-streamer jpg. La commande pour activer le service est:

$mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -y -r 320x240 -f 10" -o "/usr/lib/output_http.so -p 8090 -w /var/www/mjpg_streamer"
Les paramètres sont les suivants:

-d: device
-r: resolution
-f: frequency
Si votre webcam ne prend pas en charge le format MJPEG, nous pouvons utiliser '-y' pour spécifier d'utiliser le format YUYV au lieu du format MJPEG.

-p: port
-w: web directory

Sur un terminal pcDuino nous utilisons la commande "ipconfig" pour obtenir l'adresse IP de l'pcDuino. Puis dans un navigateur en un client, visitez http://192.168.1.3:8090/?action=stream pour accéder à la vidéo en temps réel. L'adresse 192.168.1.3 est l'adresse IP de l'pcDuino.
(erreur sur le document originel ? action = steam au lieu de stream ? voir copie ecran)

 

Installer le logiciel de contrôle

traduction à reprendre page 60

Contrôler le rover avec un PC

Contrôler le Rover avec un appareil Android

Introduction

GUI

Introduction au code source

- Module de contrôle d'interface
- Module de conversion du format d'images
- Module de communication

Guide de l'utilisateur

Liens de téléchargement

Aucun commentaire:

Enregistrer un commentaire