Affichage des articles dont le libellé est système. Afficher tous les articles
Affichage des articles dont le libellé est système. Afficher tous les articles

17/06/2015

Ajouter une méthode simple à un projet Smag0

Nous avons tenté d'expliquer dans l'article http://smag0.blogspot.fr/2015/06/comment-creer-une-methode-pour-smag0-la.html comment créer une méthode, en nous attaquant à la méthode Diamond. Mais cette méthode est complexe, et longue à mettre en place, on verra ça plus tard.

N'allons pas trop vite en besogne, procédons par ordre. Pour l'instant nous avons la possibilité d'enregistrer les projets ou les instructions que l'on veut envoyer à notre maison, via l'appli Coolitude4, ou via la page des projets, nous avons la possibilité d'ajouter des commentaires sur les projets proposés, et d'extraire de ces projets les termes importants, de les enregistrer au format RDF. Si RDF ne vous dit rien, jetez un petit coup d'oeil sur https://fr.wikipedia.org/wiki/Resource_Description_Framework pour que ce soit plus clair.
(NB : les liens mentionnés sont susceptibles de changer, merci de me le signaler, si vous n'y trouvez plus rien).

Une fois que l'on a notre projet, ou notre requête envers notre maison (voir ASACURQRSC ), 
le système doit posséder des méthodes pour analyser, interpréter, exécuter les instructions.
Partons donc d'un truc tout simple, par exemple... il est 20h36, c'est l'heure de manger, je voudrais manger des pâtes, c'est mon projet, ça devient une requête envers le système qui serait peut-être un jour capable de me faire cuire des pâtes sans me répondre " va te faire cuire un œuf".
Pour que le système puisse y parvenir, il va avoir besoin d'une méthode, comme nous quand on va sur http://www.marmiton.org ... mais en attendant qu'il aille y chercher des recettes complexes, tentons d'établir une méthode simple pour transmettre au système la méthode pour cuire des pâtes.

Primo : c'est quoi la méthode pour faire cuire des pâtes ??
source  : Farfalle - Barilla
 (je dois être le seul mec de tout l'internet à prendre mon code source sur les paquets de pâtes Barilla ;-%)

Modalité de cuisson pour 100g de pâtes :
1 litre d'eau
7g de sel

Faire bouillir l'eau et ajouter le sel.
Verser les pâtes et remuer de temps en temps.
Temps de cuisson 10 min.
Egoutter les pâtes.

En décomposant par étape, en gros, ça ferait :
1. Faire bouillir l'eau
2. Ajouter le sel
3. Verser les pâtes
4. Remuer de temps en temps (pendant 10 minutes )
5 Egoutter les pâtes

Le but étant de créer une méthode exploitable, enregistrable, partageable, modifiable, n'ayant pas trouvé mieux que RDF pour décrire, on va tenter de se le faire avec des triplets, comme ça  :
(voir aussi http://www.w3.org/2001/sw/BestPractices/OEP/SimplePartWhole/)

ici, on va utiliser la propriété rdf:type pour dire que CuireDesPâtes est_une Methode, ou que FairteBouillirEau est_une Etape...

{CuireDesPâtes  rdf:type  Methode}
{FaireBouillirEau rdf:type Etape}
{AjouterSel rdf:type Etape}
{VerserPâtes rdf:type Etape}
{Remuer rdf:type Etape}
/* avoir comment faire le de temps en temps, et le attendre 10 mins... faire les deux actions en parrallèle ??? temporiser ??*/
{EgoutterPâtes rdf:type Etape }

Voilà nos 5 étapes.

Ensuite, pour dire que la méthode CuireDesPâtes est composée de plusieurs étapes nommées FaireBouillirEau, AjouterSel..., on utilisera dc:hasPart, ce qui donnera

{CuireDesPâtes dc:hasPart FaireBouillirEau }
{CuireDesPâtes dc:hasPart AjouterSel
{CuireDesPâtes dc:hasPart VerserPâtes
{CuireDesPâtes dc:hasPart Remuer
{CuireDesPâtes dc:hasPart Attendre10Min } //encore à définir
{CuireDesPâtes dc:hasPart EgoutterPâtes }


on pourra compléter de la manière suivante en utilisant rdf:first pour dire que FaireBouillirEau est la première étape de la méthode CuireDesPâtes.

{CuireDesPâtes rdf:first FaireBouillirEau }

A ce stade, on serait tenter d'utiliser les Collections RDF : https://code.google.com/p/collections-ontology/wiki/RDFContainersAndCollections
mais ceci ne conviendrait pas, on créerait une Sequence avec rdf:Seq, mais on serait obligé de numéroter les étapes, alors que nous voulons quelque chose de souple. Ainsi, si j'ai envie de me créer ma propre méthode CuireDesPâtes2, et que moi, quand je fais des pâtes, j'ai l'habitude de mettre un couvercle, pour que la température de l'eau augmente plus vite ( ce qui n'est pas recommandé par Barilla, cela dit en passant... que ce soit clair entre vous et moi !). Bon admettons que l'on veuille rajouter une étape comme MettreCouvercle... Si on numérote les étapes avec les  propriétés préconisées rdf:_1, rdf:_2..., on sera embêté lors de l'insertion, il faudra renommer toute la suite, de même si on veut supprimer une étape. On va plutôt utiliser une propriété qui nous dira le "suivant" de FaireBouillirEau est AjouterSel.  Cette propriété "suivant" ou "next" (en anglais) ne semble pas avoir été prévu dans les vocabulaires rdf ou rdfs... Comment faire ...??? là se pose la question de tout développeur normalement constitué, qui s'est un peu penché sur RDF, et la notion de réutilisation des vocabulaires. Dois-je créer ma propre propriété avec mon propre prefix, un truc du style "smag:next"???

Que nenni, car c'est là qu'intervient notre ami Lovokfnorg ou plutôt http://lov.okfn.org/... Qui c'est celui-là ? un moteur de recherche de vocabulaires RDF... et en lui demandant s'il connait quelque chose qui correspondrait à notre "next" tant désiré, il nous répond :

on a 71 réponses (peut-être plus quand vous lirez cet article), et déjà, les trois premières nous conviennent... Quelle utilité d'en créer une 72ème qui ne sera utilisée par personne d'autre que par moi. Prenons la plus populaire : xhv:next

On peut donc écrire (non, je ne met pas le couvercle, vous le mettrez si vous voulez... en plus , y'a des risques de débordement...) les triplets suivants :

{ FaireBouillirEau xhv:next AjouterSel }
{AjouterSel xhv:next VerserPâtes }
{VerserPâtes xhv:next RemuerDeTempsEnTemps }
{VerserPâtes xhv:next Attendre10Min }
{Attendre10Min xhv:next EgoutterPâtes }



On a maintenant une structure cohérente sans trop mettre les pieds dans le plat... de pâtes. Bon ok, c'est nul... Avec VerserPâtes qui possède deux xhv:next : RemuerDetempsEnTemps et Attendre10Min.

On a maintenant tout ce qu'il faut pour compléter notre méthode CuireDesPâtes. on peut par exemple décomposer les étapes... avec les propriétés dc:hasPart, rdf:first et xhv:next
L'étape FaireBouillirEau pourrait être composée d'autres étapes, comme SortirCasserole, RemplirEau, PoserSurGaziniere, AllumerLeFeu... et oui, Johnny...
SortirCasserole se décomposerait en AllerDevantPlacardBasGauche, OuvrirPortePlacardBasGauche, AttrapperCasserole, Reculer, FermerPlacardBasGauche, SeDeplacerVersEvier...


On peut ainsi stocker n'importe quelle méthode sur notre serveur RDF (avec Fuseki), ou sous forme de fichier rdf/owl téléchargeable.
ps : j'ai zappé pas mal de principes RDF, préfixe, etc... pour que ce soit plus clair à un non initié, mais l'intéressé pourra se rendre là : https://fr.wikipedia.org/wiki/Resource_Description_Framework ou là http://www.w3.org/TR/rdf-syntax-grammar/
 ou là en français : https://www.google.fr/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=rdf%20francais 

Reste à créer une interface conviviale pour enregistrer, éditer, visualiser les méthodes...















27/03/2014

Le systeme multi-agent sous forme de holon

Trouvé ce texte de Descartes dans une des thèses :http://sebastian.rodriguez.free.fr/files/ThesisSRodriguez_print.pdf )
Les hommes sont les proies d'une si aveugle curiosité qu'ils conduisent souvent leur esprit par des chemins inconnus, et sans aucune raison d'espérer, mais seulement pour courir leur chance d'y trouver par hasard ce qu'ils cherchent ; comme quelqu'un qui brûlerait d'un désir si brutal de découvrir un trésor, qu'il ne cesserait de courir les rues ça et là, cherchant si par hasard il n'en trouverait pas un qu'un voyageur aurait perdu. C'est ainsi que travaillent presque tous les chimistes, la plupart des géomètres, et plus d'un philosophe ; et certes je ne nie point que parfois ils ne vagabondent avec assez de bonne fortune pour trouver quelque vérité ; je n'admets pas pour autant qu'ils en soient plus habiles, mais seulement plus chanceux. Il vaut cependant bien mieux ne jamais songer à chercher la vérité sur quelque objet que ce soit, que le faire sans méthode : car il est très certain que ces recherches désordonnées et ces méditations obscures troublent la lumière naturelle et aveuglent l'esprit ; et tous ceux qui s'habituent ainsi à marcher dans les ténèbres affaiblissent tant leur vue que par la suite ils ne peuvent plus supporter la lumière du jour ; l'expérience aussi le confirme, puisque nous voyons très souvent ceux qui ne se sont jamais souciés d'étudier porter des jugements bien plus solides et bien plus clairs sur ce qui se présente à eux, que ceux qui ont passé tout leur temps dans les écoles. DESCARTES

Les systèmes multi-agents : 

Qu'est ce qu'un système multi-agent ?
http://www.lirmm.fr/~ferber/publications/LesSMA_Ferber.pdf

Les méthodes de conception de systèmes multi-agent :

Diamond : http://tel.archives-ouvertes.fr/docs/00/18/90/46/PDF/These_Jean-Paul_Jamont_2005.pdf
Aspecs :  http://www.aspecs.org/Home ou en   Pdf

Un agent particulier, le holon : 

Holons dans les systèmes multi-agents[modifier | modifier le code]

Les systèmes multi-agents sont des systèmes composés d'entités logicielles autonomes. Ils sont capables de simuler un système ou de résoudre des problèmes. L'holon peut être vu comme une sorte d'agent récursif : un agent composé d'agents qui, a un niveau donné, a son propre comportement comme un conséquence partielle des comportements de ses composants5. Janus Multiagent Platform est un exemple de plate-forme logicielle capable de faire tourner des holons.
( source Wikipedia :
http://fr.wikipedia.org/wiki/Holon_(philosophie)#Holons_dans_les_syst.C3.A8mes_multi-agents )


Exemlpe de systèmes multi-agent :
Janus Project (Java) : http://www.janus-project.org/Home
Spade (Python) :
Jade (Java) :
Quelque chose en ruby, où autre ? faites-le nous savoir qu'on rajoute l'info .
Dans jade, spade, Janus, les agents respectent les normes de la FIPA pour les communications .
Les systèmes multi-agents ont l'air un peu veillots...
Pour se renseigner sur la programmation des agents :
https://www.google.fr/search?q=programmation+agent+java&oq=java+programmation+ag&aqs=chrome.1.69i57j0.8663j0j4&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8
Un autre type d'agent directement natif dans java (à voir si ça correspond?) : http://blog.xebia.fr/2008/05/02/java-agent-instrumentez-vos-classes/

Pour en savoir plus : 

https://www.google.fr/search?q=holon&oq=holon&aqs=chrome..69i57j0l5.1180j0j4&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#q=holon+multi-agent


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

Rover PcDuino Introduction et partie matérielle

É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 mail scenaristeur@gmail.com ou par twitter  @DFaveris

voici un guide pour l'installation des composants utiles  http://smag0.blogspot.fr/2015/12/reinstallation-pcduino.html






http://store.linksprite.com/#oid=1005_1_banner_1

cliquez sur cette image pour voir en détail les caractéristiques du pcDuino :


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

Introduction

(pour la prise en main du pc duino -> Mon club Elec)
Avec le développement de matériel et de logiciel embarqué , diverses technologies sont de plus en plus intégrée . En conséquence , l'obligation de matériel et de logiciels de co-développement est de plus en plus et le cycle d'apprentissage de l'ingénieur s'allonge .
Au cours des dernières années , le mouvement open source du matériel est de plus en plus populaire dans le monde . Arduino est un chef de file dans ce mouvement . Les groupes d'utilisateurs répartis des ingénieurs aux étudiants, puis aux élèves de collège ou même les enfants de l'école primaire . L'émergence d'une variété de plates-formes matérielles open source réduit considérablement la courbe d'apprentissage , stimule l'innovation et accélère la conversion de l'idée à la réalisation. pcDuino est un Arduino superbe avec mini fonctionnalités d'un PC . pcDuino dispose à bord interface matérielle compatible avec l'interface Shield Arduino Uno . Arduino Shields disponibles sur le marché peut être installé sur pcDuino avec un conseil simple traduction ( T -Board ) . Le code source Arudino est également entièrement compatible avec pcDuino . Le système d'exploitation utilisé par pcDuino est open source Linux Ubuntu . Open-source des logiciels Linux innombrables avec de nombreux conseils de matériel open-source peuvent être combinés dans pcDuino pour créer une variété d'applications . pcDuino une plate-forme idéale pour le développement offre implique un logiciel open source et du matériel open source .
Dans cet article, nous montrons comment utiliser pcDuino de construire un réseau WiFi en temps réel de vidéo surveillance robot télécommandé . Sur le plan matériel , nous utilisons le bouclier moteur pour Arduino pour commander les moteurs et servo de la caméra de PZT de Rover . Sur le plan logiciel , nous utilisons un système pcDuino Linux pour obtenir un accès WiFi AP , serveur de streaming vidéo et de la communication TCP / IP .
Dans les sections suivantes , nous les détails la mise en œuvre matérielle et logicielle .

1. Matériel

1.1 Outils nécessaires

- Pince diagonale, pince à bec, 3 mm manche, 2 mm tournevis à tête plate, Tournevis Phillips 3 mm, 5 mm tournevis cruciforme, multimètre, fer à souder, soudure, ruban, pinces, couteau de papier peint


 

1.2 Découverte du matériel

1.2.1 pcDuino

La carte pcDuino est le cerveau du Rover. Elle gère le streaming vidéo,  la communication WiFi et contrôle toutes les pièces mécaniques en Rover.


Les caractéristiques matérielles de pcDuino 
 CPU: core de 1GHz ARM Cortex A8 
 GPU: OpenGL ES2.0, OpenVG 1.1 Mali 400 noyau 
 DRAM: 1 Go 
 le stockage à bord: 2 Go flash, prise microSD extensible jusqu'à 32 Go 
• Sortie vidéo: HDMI 
• Interface d'extension: 2,54 mm Têtes compatible avec Arduino 
 Réseau: Interface RJ45 et USB extensible dongle WiFi (non inclus) (!!La carte pcDuino V2 inclu le WiFi))
• Alimentation: 5V 2A 
 Dimension: 125mm X 52mm

Les caractéristiques logicielles de pcDuino 
 Système d'exploitation: Ubuntu , Android
 API: Toutes les broches extensibles de style Arduino peuvent être accessibles avec l'API, y compris UART, ADC, PWM,GPIO, SPI, I2C 
 Langages de programmation: C, C + + avec la chaîne d'outils GNU, Python, Java




1.2.2 caméra vidéo PZT

(PZT selon wikipedia : Pan Tilt Zoom (en), les unités PTZ sont utilisées pour la mise au point des caméras de surveillance et de visioconférence sur un objet. Pan est la rotation de la caméra autour de l'axe Z, Tilt est l'inclinaison de la caméra sur l'axe X, et Zoom est le mouvement de la lentille motorisée le long de l'axe Y.)
La caméra PTZ comprend deux servo-moteurs pour l'orientation de la caméra (180 degrés vertical et 180 degrés horizontal).Elle peut être directement branchée sur la carte pcDuino avec un câble USB.



Spécifications de la caméra: 
  • Pixel: 30W
  • Capteur: COMS
  • Taille du capteur: 4386 * 3.64 mm
  • Résolution maximale: 640 * 480
  • Format de l'écran: 26bit RGB
  • Interface: interface de transmission à haute vitesse USB2.0, compatible avec USB1.0
  • La balance automatique des blancs, la compensation de couleur

1.2.3 Alimentation

Une alimentation 12V/2A est utilisée pour charger la batterie.


Batterie

Une batterie rechargeable de haute capacité au lithium-ion est utilisée.
Veuillez suivre les consignes de sécurité des batteries au lithium pour éviter les accidents. Sa tension d'entrée est 12.6VDC, et la tension de sortie est 12.0VDC évalué à 4800mAh. 



Fils, Vis et câbles



Plate-Forme

Tous les principaux accessoires de robots  sont installés sur la plate-forme de robot. S'il vous plaît noter que les différents modèles peuvent être différentes dans les images suivantes.


Roulette

Le lanceur supporte l'arrière de la plate-forme du robot. Lors du montage des vis, veillez à ne pas mettre l'écrou sur le côté en dessous. Ceci pourrait affecter la direction de la roulette.



Roues de chariot et DC moteurs à engrenages

DC motoréducteurs pilotes du robot. (moteurs à courant continu)

Support de montage des moteurs DC

Lors de l'installation, le côté de trois trous est fixé à la plate-forme du robot, le côté avec deux trous est fixé à la moteur-réducteur à courant continu.


Carte d'extension moteur pour Arduino

Caractéristiques: 
 Compatible avec Arduino 
 le mode de commande de vitesse de PWM 
• Indicateur 4 directions 
 Compatible avec Linker Kit 2,54 mm interface du plug terrain de Grove. 
 grands modèles de dispositifs de refroidissement 
• Soutenir les 14 servos 
 Dimensions: 68.5x54.5x29.5 mm 
Remarque: Lorsque le courant dépasse 1000mA, la puce du pilote et dissipateur de chaleur seront très chauds.



Carte d'extension T-Board

La carte T-Board convertit le signal TTL 3,3 V en 5V. Elle est utilisé pour installer la carte d'extension moteur sur la carte pcDuino. 

Module de puissance

Ce qui suit est le schéma du module d'alimentation.

Dimensions: Longueur x largeur distance de 75x29mm entre deux trous: 50mm 
Tension d'entrée: 12V 
Tension de sortie: 5V 
Courant de sortie: 2A








Dongle WiFi

!! La carte pcDuino V2 inclu le WiFi -> le dongle ne devrait plus être nécessaire !!
Il prend en charge la norme IEEE 802.11 b / g / n normes, supporte les connexions USB 2.0. 
Il s'agit d'un module WLAN compact à faible coût avec des dimensions: 32x13 mm.

Montage de la caméra PTZ

Avant de monter la plate-forme de robot, nous avons besoin de préparer la caméra PTZ.

Étape 1: Préparer la caméra

Étape 2 : Retirez l'aiguille 


Étape 3: Retirer les vis sur le fond 


Étape 4 : Afin de fixer la caméra sur l'appareil , nous avons besoin de percer des trous et utiliser des vis . Nous pouvons couper les deux oreilles sur le fond et obtenir deux trous . 




Etape 5: Modifier le montage de la caméra . Coupez les deux anciennes fixations et lisser la surface . 




Étape 6 : Aligner la fixation et le bas de l'appareil . Marquez la position du trou avec un stylo ou un crayon , et percer deux trous . 

Etape 7: Afin de ne pas bloquer les deux trous déjà sur le fond de l'appareil , percez deux autres trous sur les deux bords de l'appareil. 




Étape 8: Mettre le couvercle inférieur de la caméra , et assemblez le dispositif, insérer les vis. 






Etape 9: L'appareil est assemblé . Serré avec les vis . 


Étape 10 : Installez l'appareil à gouverner . Faites attention de ne pas installer dans la mauvaise direction .


Étape 11 : Installez le support de la tête . Comparer à l'ouverture , si le balancier est trop long , couper la partie excédentaire et serrez avec les vis . 


Etape 12: Démonter le support de la tête et installer un autre appareil à gouverner . 




Étape 13 : Fixez la caméra à l'appareil PTZ . 


Étape 14: Coupez le pied multifonctions de direction et l'installer dans la base . 



Insérez le support dans la base , serré avec des vis. Ensuite, l'assemblage de la caméra mobile est terminé.

Assemblage de la plate-forme

Étape 1: Installez le moteur à courant continu en position.

La couleur du moteur peut être différente de la couleur du châssis. Première souder les fils du moteur, sans tenir compte de la polarité. Un condensateur céramique de 0,1 uF peut être utilisé s'il est disponible. On peut éviter les interférences etprolonger le cycle de vie du moteur. 
Ensuite, installez le support du moteur.



Etape 2: Installation des roulettes.

Étape 3: Installation des roues.
Étape 4: Installer des montants de cuivre qui sont utilisés pour maintenir le panneau de commande.

Étape 5: Fixez le panneau pcDuino au châssis.


Étape 6: Fixez le panneau du module d'alimentation au châssis. S'il vous plaît noter que le module peut être chaud en fonctionnement. Faites donc attention à ne pas toucher avec les mains.



Étape 7: Installez la batterie.




Etape 8: Installez la caméra PTZ.

 

Étape 9: Installation T-board en bord pcDuino. Il est nécessaire pour le blindage du moteur.








Étape 10: Installez le bouclier de commande de moteur.

 




Etape 11: Insérez dongle WiFi en pcDuino.
(seulement en cas de pcDuino V1 , la V2 inclu le module WiFi)


Nous y sommes presque!


Instruction de câblage

 

Servo dans le sens vertical pour appareil photo PZT:
- Rouge (VCC) -> bouclier moteur (VCC)
- Marron (GND) -> bouclier moteur (GND)
- Orange (Control) -> bouclier moteur (D7)

Servo dans le sens horizontal pour caméra PZT:
- Rouge (VCC) -> bouclier moteur (VCC)
- Marron (GND) -> bouclier moteur (GND)
- Orange (Control) -> bouclier moteur (D4)

Alimentation (12V):
- (1) le bouclier moteur (VCC GND)
- (2) adaptateur (VIN GND)

pcDuino alimentation:
Ligne d'alimentation DIY Rouge (VCC) -> OUT
Noir (GND) -> GND




Vous venez de terminer la première partie, la partie matérielle, passons maintenant à la deuxième partie, la partie logicielle : 

2. Partie Logicielle