Les Joystick et bouton de la PSVita sur Unity

Après quelques galères j’ai enfin réussi à faire fonctionner les joysticks et boutons de la Vita avec Unity.

Les boutons

La définition est la suivante :

  • × KeyCode.JoystickButton0
  • ○ KeyCode.JoystickButton1
  • □ KeyCode.JoystickButton2
  • △ KeyCode.JoystickButton3
  • L KeyCode.JoystickButton4
  • R KeyCode.JoystickButton5
  • SELECT KeyCode.JoystickButton6
  • START KeyCode.JoystickButton7
  • up KeyCode.JoystickButton8
  • right KeyCode.JoystickButton9
  • down KeyCode.JoystickButton10
  • left KeyCode.JoystickButton11

Jusque là rien de sorcier, un code simple dans l’update permet de récupérer le bouton sur lequel on appuie pour effectuer une action.

if (Input.GetKeyDown(KeyCode.JoystickButton8))
{
transform.Translate(new Vector3(0, 0, speed) * Time.deltaTime);
}

Dans ce code on déplace un objet (d’où le Translate) lors de l’appuie sur le bouton 8 (donc quand on va ver le haut avec le Pad de la Vita).

Les Joysticks !

De ce coté la c’était un poil plus complexe, mais voici la solutions. Cliquez sur « Edit -> Projet Setings – > Input » et vous verrez apparaitre sur la droite un panel dans lequel nous définirons nos JoySticks et leurs paramètres.

Définissez alors vos 4 axes en respectant bien les paramètres qui sont sur la capture. Vous pouvez par contre les nommer différemment, c’est ce nom qui vous permettra de récupérer les données dans le code.

il faut bien faire attention aux paramètres « Dead, Sensivity et à l’inversion sur les Y ».

Tous les axes proviennent du Joystick sur la PSVita, les autres 2,3,… servent pour d’autres périphériques. Chaque axe est assigné a un Axe (X pour l’horizontale sur le joystick de gauche, 5eme axe sur le Y de celui de droite… tout ceci est défini dans la documentation officielle Sony.

Pour récupérer la valeur il faut juste mettre dans le code (ici pour l’axe X du Joy de gauche) :

valeur = Input.GetAxisRaw(« JoyLX ») * speed;
transform.Translate(new Vector3(valeur, 0, 0) * Time.deltaTime);

Et voila, maintenant que l’on sait faire bouger un objet on va pouvoir avancer sérieusement :!

Unity et la PSVita

J’ai récupéré une PSVita il y a peur afin de pouvoir jouer a FFX et en cherchant quelques informations sur celle-ci j’ai découvert que la PSvita est supporté par le SDK Unity.

J’ai trié toutes les informations que j’ai trouvé et je vous partage la méthode a suivre afin d’installer correctement un environnement Unity pour PSVita sur PC.

Pour commencer il faut récupérer tout le nécessaire sur le Net :

  • SDK PSVita 3.5
  • Unity 2017 4.2f2
  • Les outils Sony (détail plus bas)
  • La clé Unity pour PS4/PSVita
  • UnityTools qui nous permet de convertir ses build en vpk pour la Vita

On décompresse alors le SDK dans C:\PSVITA
On définie ensuite une variable d’environnement système que l’on nomme SCE_PSP2_SDK_DIR et que l’on fait pointer vers le SDK C:\PSVITA\sdk
puis une SCE_ROOT_DIR vers C:\Program Files (x86)\SCE

Puis on installe les outils suivant :

  • TMServer-3_60_0_2
  • USBDriver-Win64-1_80_0_70253
  • ContentManagerAssistant-3_3_0_7825 (Attention si vous avez le CMA déja installé, désinstallez le avant)USBDriver-Win64-1_80_0_70253
  • USBDriver-Win64-1_80_0_70253
  • PublishingTools-2_31_0_1669
  • Battery Monitor 3_60_1_12

Et pour finir, on installe dans l’ordre :

  • Unity Download Assistant
  • Unity Setup
  • Unity Setup Playstation Vita Support

Lors du lancement il faut alors saisir la licences PSVita ou PSVita/PS4 de Unity.

Et on se lance enfin dans la création d’un HelloWorld 🙂

Une fois le projet packagé il vous suffit de le transférer sur le Vita via VitaShell ou autre et de l’installer !

Et voila, a vous de coder 😉

Supervision de la serre (Web et Android)

Mon père a construit une serre il y a peu, et je me suis dit que ce serait intéressant d’analyser quelques données et pourquoi pas ensuite les exploiter ensuite afin de gérer l’ouverture automatique de celle-ci.

C’était aussi l’occasion de trouver une utilisation à mon Akeru (Arduino made in SnootLab qui utilise le réseau Sigfox) qui dormait depuis un moment.

Superviser ? Oui, mais quoi ?

Dans une serre, il y a deux choses importantes, la température et l’humidité. J’ai fouillé dans mon bazar et j’ai trouvé tout un tas de capteurs. Voilà ce que j’ai retenu :

  • Une sonde DS1820 étanche pour mesurer la température extérieure.
  • Une sonde DHT22 pour mesurer la température intérieure et l’humidité.
  • Un capteur RGB / Proximité / Lumière qui servira pour savoir s’il fait jour ou non et aussi pour déclencher l’affichage des valeurs en passant la main devant.
  • Une matrice de LED gérée par un MAX7219.
  • Et donc un Akeru (Arduino équipé d’un modem Sigfox).

La mise en place

Le câblage et l’utilisation de ce matériel est suffisamment simple, j’ai donc fait des programmes individuels afin de tester chaque capteur puis j’ai tout mis dans un sketch afin de récupérer toutes les données…. et ce fut un échec, pas assez de mémoire disponible sur l’atmega.

J’ai donc fait quelques tests et cherché comment réduire la taille de mon sketch. En premiers lieux j’ai mis toutes les chaînes constantes qui sont dans me « Serial.print » en progmem grâce à la fonction F mais ce n’était pas suffisant.

Je me suis alors penché sur les librairies. Par exemple pour la DHT22 j’utilisais la librairie de chez Adafruits qui est très bien mais qui occupe beaucoup de mémoire. 

Après avoir testé toutes les librairies pour les DHT j’ai choisi la TroykaDHT qui prend deux fois moins de place. J’ai fait de même pour la librairie du capteur RGB/Lumière (la Sparkfun est bien plus gourmande que celle d’Adafruit) et pour la gestion de la matrice de LED (je voulais utiliser la MD_Parola qui s’ajoute à la librairie MAX72XX pour proposer des fonctions de scrolling et d’autres dont je n’avais pas besoin j’ai donc codé le scrolling directement dans mon sketch).

Ces changements m’ont permis de diviser par 2 la taille de mon programme, il n’occupe donc que 60% de la mémoire ce qui me permettra d’ajouter des fonctionnalités plus tard comme un capteur de pluie, l’ouverture via un moteur …

Lecture des données

Le modem envoie des données sur le réseau Sigfox (un réseau bas débit disponible partout en France et dans beaucoup d’autres pays) qui les renvoie via un « callback » sur un serveur maison où je les stocke dans une base de données. J’ai ensuite fait une petite interface en utilisant chartJS afin de les visualiser.

Et sur ANDROID ?

Eh bien j’ai fait très simple; en utilisant l’objet « WebView » du SDK Android on peut encapsuler un site web dans une application.

package eu.rouanetnet.serreleminade;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;


public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WebView myWebView = (WebView) findViewById(R.id.web1);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("https://rouanetnet.eu/tempMazamet/");
}
}

Attention à ne pas oublier d’ajouter cette ligne dans le manifest sans quoi votre application n’accèdera pas a internet et vous ne verrez rien dans votre appli.

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

Vous trouverez bientôt le code sur mon github.

Vision ouverte

Bonjour,

Je vais vous parler d’un rêve que bon nombre de geeks ont eu dans leur jeunesse, posséder un casque de réalité virtuelle. De nos jours de plus en plus de casques sortent comme l’Oculus Rfit (racheté par facebook) et Durovis Dive…

buy-durovis-dive

Version commerciale du casque Durovis Dive

 

OpenDive c’est quoi ?

Ce projet est née dans la tête d’un allemand lorsqu’il a réalisé que sont smartphone pouvait faire tout ce que proposait l’Oculus Rift (en mieux), le tout sans fil. Il a donc créé ce casque et l’a rendu Open Source pour que les gens puisse le télécharger. Il souhaite que les gens puissent accéder à la réalité virtuelle à moindre coût.

Que me faut il pour fabriquer un casque ?

Pour se faire un casque il suffit d’avoir le casque (vous pouvez me commander l’impression sur mon hub), un smartphone (de cette liste) et le kit de lentilles (à commander ici).

photo 1 (8)

Un casque OpenDive

photo 2 (8)

La société propose aussi un casque complet (sans smartphone mais toujours plus cher que chez moi:) ) qui aura une meilleure finition mais donnera les même résultats que la version Open Source.

On trouve quelques applications sur les store Apple et Google (pas encore chez Microsoft) et même une version spéciale de Quake2 plutôt sympathique.

Mes impressions ?

L’immersion est plutôt pas mal, il faut trouver les bons réglages pour ne pas avoir mal à la tête. Un peu embêtant pour ceux qui comme moi portent des lunettes … et les jeux sont peu nombreux mais ce n’est que le début, et comme ils utilisent Unity pour développer on peut s’attendre à voir de belles choses arriver rapidement.

Durovis-Dive-1024x576-6b241089abd4c751

 

C’est aussi sympa de regarder des films sur grand écran sans être dérangé par le « bruit visuel » ambiant:)

Avantages :

  • meilleure résolution des écrans de smartphone comparé à l’Oculus
  • pas cher du tout (si l’on a déjà le smartphone qui va avec)
  • écran géant pour regarder des films

Inconvénients :

  •  la latence (qui dépends du téléphone, très faible sur IPhone)
  • ça peut filer la gerbe (cinétose)
  • manque d’applications
  • devoir sortir le smartphone pour lancer les applications

Si vous voulez tester ou en faire un, n’hésitez pas à me contacter.