Développer sur Méga Drive : Part 2

Comme précisé dans le dernier articles nous allons parlé ici de Debug et de JoyPad.

Debug

C’est un peu la base quand on développe de pouvoir debugger son programme afin de savoir ce qu’il se passe et pouvoir résoudre d’éventuels problèmes. Le SDK fournis tout le nécessaire pour débugger en alliance avec Gens KMod (menu CPU->Debug). Il y a différents items dans le menue permetant de voir pas mal de choses (registres des cpu, video, son, …). Nous allons utiliser la méthode la plus simple, les messages; elle permet simplement d’envoyer des messages dans une console un peu comme si vous utilisiez des « printf ». Pour cela c’est très simple il suffit d’utiliser la fonction KDebug_Alert qui prend en paramètre un string et le tour est joué (ne pas oublier le #include <kdebug.h> pour inclure les entêtes de debug).

 

#include <genesis.h>
 #include <kdebug.h>
 
 int main()
 {
 
        VDP_drawText("GENESIS HELLO !", 1, 1);
        KDebug_Alert("debug genesis hello");
 
        while(1)
        {
                VDP_waitVSync();
        }
        return (0);
 }

 

Une fois la rom chargée, en allant dans CPU->Debug->Messages nous voyons notre magnifique message de debug apparaître, facile mais très utile.

debug_1

 

JoyPad

Passons maintenant aux contrôles. Le JoyPad de base avait 3 boutons (A B C), un bouton start et une croix directionnelle puis il y a eu ensuite une version avec 6 boutons et d’autres type de contrôleurs (souris, clavier, pistolet…) qui sont aussi géré par le SDK. La capture des événements se fait pas un callback que l’on défini dans le main avec la fonction JOY_setEventHandler(nom_de_la_fonction_de_callback).  Cette fonction prend trois paramètres (u16 joy, u16 changed, u16 state) :

  • joy étant le joypad utilisé (JOY_1, JOY_2, …)
  • changed définie si un bouton a été pressé
  • state définie si un bouton à été relâché

 

Petit code pour mieux comprendre ….

 

#include <genesis.h>
 #include <kdebug.h>
 
 
 void handleJoyEvent(u16 joy, u16 changed, u16 state)
 {
    KDebug_Alert("joy callback");
    if (joy == JOY_1)
    {
        if (state & BUTTON_UP)
        {
            KDebug_Alert("up press");
        }
        else if (changed & BUTTON_UP)
        {
            KDebug_Alert("up rel");
        }
    }
 }
 
 
 int main()
 {
 
 
        JOY_setEventHandler(handleJoyEvent);
 
 
        VDP_drawText("GENESIS HELLO !", 1, 1);
        KDebug_Alert("debug genesis hello");
 
        while(1)
        {
                VDP_waitVSync();
        }
        return (0);
 }

 

Le résultat

 

debug_2

Fin de cette deuxième partie…. Dans la suite nous parlerons de l’affichage.

 

Unboxing et Opening du Tile

The Tile est un projet Kickstarter qui avait récolté quelques millions de dollars.

Le « Tile » est un petit objet (37x37x5mm) qui permet de retrouver un objet perdu dans sa maison ou “ailleurs dans le monde”. Prix 25$.

Unboxing

1

Une boite toute simple en carton et mousse, ça rend quand même pas mal.

2

On peut voir un trou permettant de le fixer à son trousseau de clefs mais il est aussi fourni avec un adhésif double-face  pour pouvoir le coller n’importe ou.

Comment que ça marche ???

Rien de sorcier; c’est un périphérique Bluetooth que l’on appaire avec son smartphone et qui via une application dédiée permet de faire sonner le “Tile” en cas de perte.

La promesse de pouvoir retrouvé son objet “partout dans le monde” réside sur le fait que en cas de perte votre “Tile” vous pourrez le retrouver si vous le déclarez perdu dans l’application et qu’une personne possédant l’application sur son smartphone passe assez près de l’objet pour en faire remonter un position très approximative sur une carte.

Et dedans, quoi qu’il y a ?

Ben oui je suis curieux et ça n’est pas nouveau, on sort un petit tournevis et hop, ouverture de la bête.

IMG_20150204_141321

Nous voyons ici un belle pile (annoncée avec une durée de vie de 1 an), un petit bouton (le gros rond doré à gauche) qui sert à appairer le “Tile” avec un périphérique Android ou iOS, tout plein de petits composants annexes et le plus important (celui caché sous l’étiquette avec une QRcode) le chipset Bluetooth.


IMG_20150204_141428

Au dos rien de spécial, juste les connecteurs qui dépassent pour faire contact avec le piezo qui fera de la musique quand vous perdez votre bidule.

Reparlons du chipset BT, c’est un nRF51822 de chez Nodric Semiconductor. C’est un chipset intéressant pour les raisons suivantes :

  • Supporte le BT 4.1
  • Consomme très peu (9.7mA en TX et 8 en RX)
  • L’est petit (6x6mm)
  • Embarque un proc ARM Cortex M0 avec 128K de falsh et 16K de ram
  • 2.2€ pièce

Soit un très bon rapport qualité, utilité, performance, prix.

Et voilà la fin de notre aventure au cœur du « Tile ».

Partageons la 3D

Pas trop de temps en ce moment je fais juste un petit billet pour faire un peu de pub pour 3D Hubs et… pour moi 🙂

3dhus

3D Hubs est une start-up Hollandaise (pays très impliqué dans l’impression 3D au passage) qui permet aux possesseurs d’imprimantes 3D de mettre a disposition du public son imprimante afin que tout le monde puisse avoir accès a cet outil merveilleux.

L’idée est simple, vous avez un imprimante, vous vous inscrivez sur le site en donnant des informations (type d’imprimante, types de matériaux, couleurs…) et en fixant le prix de l’impression.

Le client lui choisi un « imprimeur » près de chez lui et envoie son fichier sur le site et vous l’imprimez, rien de plus simple :). Grâce à ce concept vous rencontrerez ensuite la personne qui vous à imprimé l’objet en allant le chercher.

Une expérience intéressante et ludique pour découvrir cette technologie de plus en plus répandue.

Maintenant un peu de pub, pour commander sur mon hub : http://www.3dhubs.com/toulouse/hubs/brice .

Merci d’avance et bon week-end.

 

Stripe.io le système de paiement au bon karma

Bonjour,

stripeJe vais vous parler de Stripe.io, un système de paiement qui existe depuis quelques années, mais qui n’est disponible que depuis le début de l’année sur le territoire français, dont l’avantage est de fournir une API afin de s’intégrer facilement dans votre site. J’ai pu l’expérimenter pour mettre en place le paiement de la cotisation du lab http://paiement.tetalab.org (design by Sack).

Pour faire quoi ?

C’est très pratique pour mettre en place un système de paiement pour une association (cotisations, dons, évènements, …) accessible depuis le web ou par mobile pour un coût à la transaction de 2.9% + 0.30$. 

Mais il y a Paypal ?

En effet il y a Paypal, mais Stripe est différent :

  • pas besoin d’avoir un compte sur Stripe pour pouvoir payer
  • vous intégrez le module de paiement directement dans votre site, le  client reste donc « chez vous »
  • Stripe propose des librairies et des exemples de code, de mise en œuvre pour pas mal de langages https://github.com/stripe
  • Stripe a un meilleur Karma 😀

La mise en œuvre

  1. créer un compte sur Stripe, on rempli les informations et on l’active
  2. (Optionnel mais très recommandé) prendre un certificat SSL (https://www.namecheap.com/ en propose a 6.56 euro pour l’année, testé et approuvé)
  3. intégrer le code dans son site (avec tous les exemples qu’il y a c’est facile)
  4. recevoir le pognon

Conclusion

Les plus :

  • Simple d’utilisation
  • Pas d’abonnement
  • Intégration directe dans le site
  • Interface de test très pratique pour éviter de tester avec sa CB
  • Possibilité de gérer un compte à plusieurs

Les moins :

  • Les transferts ne sont pas programmables (pour le moment)

 

Oxygénez vous c’est le printemps

Un petit bonjour sous le soleil printanier pour vous parler (très) rapidement de l’oxygène en canette.

 oxygene

La canette ci-dessus contient 4 litres, elle mesure environ 20 cm de haut et c’est tout léger 🙂

A quoi ça sert ? 

C’est de l’oxygène médical, ça veut pas dire pour autant qu’on se soignera avec… Mais ça peut donner un coup de pouce en cas de réveil difficile, léger mal de tête ou pour supporter une réunion difficile. On est loin de l’euphorie espérée mais après en avoir pris on se sent tout simplement bien. (bon on rigole aussi plus facilement).

Environ 12 euros la canette port compris (un peu cher oui…), dans certaines grandes villes on trouve des bars à oxygène pour en consommer sous différents goûts (quelqu’un en connait sur Toulouse ?).

Bon début de printemps à vous,

Brice.

Un petit tour de Galileo

J’ai eu la chance d’avoir une carte Galileo et je l’ai trouvé bien sympathique donc je vais en dire deux mots. Pour commencer quelques photos de la boite, car je la trouve jolie 🙂

photo 2

photo 1

A quoi que ça sert ?

C’est tout simplement un mini PC avec un Arduino embarqué. L’idée de la carte est de faciliter les installations un peu complexes à base d’Arduino qui souvent nécessite un PC ou certains shields additionnels (ethernet, usb-host, sd,  …).

Un petit tour rapide de la carte :

  • CPU X86 à 400 Mhz
  • 256 Mo de ram
  • Lecteur SD (permet de stocker une image linux plus complète que celle embarquée et les sketchs)
  • Connecteur RJ45 10/100 Mb
  • Slot Mini PCIe2 pour ajouter par exemple du wifi, bluetooth, …
  • Port USB Host
  • Des ports série

photo32 photo 4

Pour quoi j’en parle ?

J’ai beaucoup apprécié les possibilités d’ES de la carte, l’intégration des différents ports à Arduino (par exemple si l’on ajoute une carte Wifi PCIe on peut l’utiliser avec la librairie Arduino).

J’ai surtout tripé sur le fait de pouvoir s’amuser avec les GPIO directement depuis le linux tout simplement en faisant des « echo », un petit exemple pour allumer la led (on peut aussi faire avec du python, du c, … mais c’est beaucoup moins marrant) :

#!/bin/sh
# la led est connecté sur le pin 3
# on ajoute le port gpio dans la liste des ports dispo
echo 3 > /sys/class/gpio/export

#on dit qu’on l’utilise en mode « sortie »
echo out > /sys/class/gpio/gpio3/direction

#on envoie 1 la led s’allume
echo 1 > /sys/class/gpio/gpio3/value

Conclusion

Ma conclusion ne conclue rien du tout car cette carte a encore beaucoup de choses à dévoiler je pense, le seul bémol actuelle et que certaines librairies (soft serial par exemple) ne fonctionnent pas car toutes les fonctions AVR n’ont pas encore été portées.