Se connecter à Raspberry PI 3 via Wi-Fi direct

16

Je souhaite me connecter d'un téléphone Android à un RPI 3 via Wi-Fi direct.

Je veux le faire via Wi-Fi direct car le RPI sera un contrôleur pour un ou plusieurs appareils mobiles qui seront utilisés dans les bâtiments ainsi que dans la nature.

Dans les bâtiments, il pourrait simplement se connecter au Wi-Fi existant, mais dans la nature, il n'y a pas de Wi-Fi. Par conséquent, le RPI devrait être son propre point d'accès, mais le téléphone le contrôlant ne pourrait pas être connecté au Wi-Fi du bâtiment en même temps. De plus, cela deviendrait compliqué avec plusieurs RPI, l'un devrait être l'AP et les autres devraient s'y connecter.

Ce serait cool si je pouvais juste mettre sous tension les RPI, sans faire de configuration à chaque fois que leur configuration change, et me connecter indépendamment de l'endroit où il est utilisé.

Donc, avec Wi-FI direct étant une exigence: comment puis-je faire cela? Quelqu'un peut-il me fournir un exemple (ou un lien vers un exemple)? Fondamentalement, tout indice qui me rapproche de la cible m'aidera.

ce que j'ai jusqu'ici

J'ai installé Arch Linux ARM sur le PI à l'aide de ce guide: https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3

J'ai ensuite installé wpa_supplicant en utilisant "pacman -S wpa_supplicant"

Ensuite, j'ai créé une petite configuration pour cela sous "/etc/wpa_supplicant/p2p.conf" qui contient:

ctrl_interface=/var/run/wpa_supplicant
device_name=PI
update_config=1

alors j'ai commencé wpa_supplicant en utilisant wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/p2p.conf

Ensuite, j'ai testé le Wi-Fi direct en utilisant wpa_clipuis p2p_findj'ai trouvé mon téléphone. Donc je suppose que pour le conducteur, tout va bien.

J'ai juste besoin de comprendre comment utiliser wpa_supplicant pour enregistrer un programme serveur s'exécutant sur mon PI, et comment le trouver et s'y connecter à partir d'Android.

Des idées?

Van Coding
la source
Pas de chance avec celui-ci? J'essaie de faire la même chose mais je me connecte à partir d'un autre pi3 en utilisant le wifi direct.
Roberto Andrade
@RobertoAndrade J'ai réussi à le faire. J'ai juste oublié de mettre à jour la question. Je le ferai bientôt;)
Van Coding
Quelques progrès ici , mais un comportement erratique pour le moment
albfan
@VanCoding Avez-vous publié votre mise à jour quelque part? Je suis arrivé au même point que vous - Android et Pi 3 peuvent se voir, mais doivent le lier à une application.
LC1983
@ LC1983 no. Malheureusement, j'ai programmé directement sur le PI via sftp, qui est actuellement utilisé comme contrôleur de tourbillon. J'ai oublié de recopier les fichiers avant de les donner. J'attends toujours de mettre la main sur le code :(
Van Coding

Réponses:

5

Je configure /etc/wpa_supplicant/wpa_supplicant.conf comme ci-dessous pour deux RPi3:

ctrl_interface=DIR=/var/run/wpa_supplicant 
update_config=1

ap_scan=1
device_name=RPi_3
device_type=1-0050F204-1
driver_param=use_p2p_group_interface=1
driver_param=p2p_device=1
p2p_go_intent=10
p2p_go_ht40=1

Ensuite, démarrez-le avec la commande:

$sudo wpa_supplicant -B -dd -iwlan0 -Dnl80211 -c /etc/wpa_supplicant/wpa_supplicant.conf

Puis en suivant ce lien, je connecte deux RPi3 via l'authentification PIN:

RPi3_1: (en utilisant sudo si nécessaire)

wpa_cli p2p_find

RPi3_2: (en utilisant sudo si nécessaire)

wpa_cli p2p_find
wpa_cli p2p_peers

Ils se reconnaissent ensuite l'adresse MAC. Par la suite, un RPI commencera la connexion avec le code PIN généré:

RPi3_1 (en utilisant sudo si nécessaire):

wpa_cli p2p_connect xx:xx:xx:xx:xx:xx pin auth
(pin_number will be issued)

RPi3_2:

wpa_cli p2p_connect yy:yy:yy:yy:yy:yy pin_number

Où xx: ..: xx et yy: ..: yy sont respectivement l'adresse MAC de RPi3_2 et RPi3_1.

http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_NLCP_WiFi_Direct_Configuration_Scripts#Create_1:2_P2P_Group_-_Connect_with_PIN_code

Fondamentalement, deux RPi3 connectés entre eux.

ngovanmao
la source
Cette réponse est OK si vous utilisez deux appareils que vous pouvez parcourir individuellement les commandes, mais lorsque vous utilisez un Pi3 et un appareil Android, conformément à la question d'origine, cela ne fonctionne pas de manière fiable.
LC1983
Lorsque vous connectez les 2 RPi3 de cette façon, sont-ils capables de créer un groupe avec succès pour la connexion? Quand je le fais, le GO-NEG réussit mais il ne parvient pas à créer un groupe pour la connexion.
shortstheory
-2

utilisez l'android comme point d'accès et wifi depuis le PI 3, vous garderez la connexion android à Internet et aurez une connexion entre les deux appareils pour partager tout

Paulie617
la source
1
Bien que ce soit peut-être une solution, ce n'était pas ce que le PO souhaitait atteindre - il indique clairement "Je veux me connecter d'un téléphone Android à un RPI 3 via Wi-Fi direct", et non l'inverse.
Bex
En utilisant devicenet, vous pouvez ensuite utiliser le wifi directement avec le hotspot Android. donc ça répond à 110%. non seulement il maintient "Je veux me connecter d'un téléphone Android à un RPI 3 via Wi-Fi direct" en jeu, mais vous pouvez simplifier tout cela en utilisant simplement le point d'accès Android.
Paulie617
Cela n'aide pas l'OP à développer un réseau ad hoc entre le téléphone et le pi.
Sandor Dosa
1
Je sais que cela a été rejeté en enfer, mais je voulais juste dire merci. J'essayais de configurer le WiFi direct et je viens de réaliser que pour mon cas d'utilisation spécifique, je pouvais faire cela
nolanpro