[Fallout] Calculez vos stats S.P.E.C.I.A.L avec ce test d’autoévaluation

Voici un petit test d’autoévaluation que j’ai fait pour calculer les stats S.P.E.C.I.A.L qu’on aurait dans la vie réelle. À faire seul ou avec des amis pour se noter plus facilement sur certaines caractéristiques.

Read the rest of [Fallout] Calculez vos stats S.P.E.C.I.A.L avec ce test d’autoévaluation »

Posted in Uncategorized by Muphins. No Comments

Tournevis sonique

Grand fan de Doctor Who, j’ai un jour décidé d’imaginer ma propre version du tournevis sonique. L’idée était d’avoir un objet qui fonctionnait dans la vraie vie.
J’aurais voulu implémenter les fonctions suivantes : Bluetooth, NFC, émetteur/récepteur radio, télémètre ultrasons, micro, haut-parleur, centrale inertielle, un écran, lien infra-rouge, multimètre, et décapsuleur.
Par faute de moyen, et parce qu’il vaut mieux commencer petit, j’ai réduit la liste à:

  • Microcontrôleur ATMEL ATmega328p
  • Écran OLED 128×32 px
  • Télémètre ultrasons
  • Haut-parleur récupéré sur un vieux téléphone
  • Émetteur infrarouge
  • Un mini joystick et un bouton pour naviguer dans les menus
  • Le tout alimenté par une batterie au Lithium de 550mAh

L’objectif de cette première version est d’avoir un appareil permettant de mesurer des distances avec le télémètre, de reproduire le son du tournevis sonique, et avec l’éméteur IR de piloter télévisions, appareil photo, etc…
Le joystick permet de choisir ce qu’on veut faire.

Read the rest of Tournevis sonique »

Posted in Hardware Programmation by Muphins. No Comments

Librairie Série asynchrone réécrite en C et sans allocation dynamique de mémoire, pour plus de portabilité

Et voilà. Le titre dit à peu près tout.

Téléchargement:
aserial.c
aserial.h

Utilisation

Initialisation:

aserial_Init(BAUDRATE);

Envoyer une chaine de char:

aserial_Send(char* string, uint8_t length);

Vérifier le nombre de char présent dans le buffer de réception:

aserial_Ready();

Lire le buffer de réception:

aserial_Read(char* out_string, uint8_t length);

Il est aussi possible d’envoyer des char de la manière habituelle avec ces deux fonctions (occupation complète du CPU pendant l’envoi):

aserial_SendChar(char c);
aserial_SendStr(char *instr, uint8_t length);
Posted in Programmation by Muphins. No Comments

Une utilisation non bloquante de l’UART

Voici une petite librairie que j’ai écrite pour les microcontrôleurs ATMEGAx8 (48, 88, 168, 328).

Elle permet d’utiliser l’UART du micro de manière transparente comme n’importe quelle autre librairie du même genre le fait. La différence avec celle ci, c’est que le programme ne reste pas bloqué sur la fonction « send() » pendant plusieurs précieux milliers de cycles à attendre que les bits soient écrits sur la ligne physique. À la place, la fonction « send() » écrit le tableau de caractères passé en paramètre dans un buffer de type FIFO (First In First Out) puis rend la main au programme principal, permettant ainsi de faire tout un tas de choses en parallèle.

L’astuce vient du fait que, de base, ces microcontrôleurs (et bien d’autres) disposent de périphériques internes dont le rôle est d’alléger la charge du CPU en effectuant d’autres tâches simultanément. Notamment ici, le périphérique UART qui sert à gérer la liaison série de manière autonome.

Comme l’UART n’est quand même pas si autonome que ça, j’utilise les interruption de fin de transmission et fin de réception pour charger dans le transmetteur le prochain caractère de la file d’attente, et mettre dans le buffer de réception le caractère qui vient d’être reçu. Grâce à ces interruptions, le programmeur peut écrire tranquillement son code sans se soucier de gérer les émission et réception, la librairie se charge de tout.

Fini l’attente inutile, À vous le temps CPU libre pour exprimer votre créativité.

Liens de téléchargement:
« serial.h »
« serial.cpp »

Read the rest of Une utilisation non bloquante de l’UART »

Posted in Programmation by Muphins. 2 Comments

Petite photo de famille

IMAG0168

Posted in Uncategorized by Muphins. 3 Comments

L’explication claire et précise: Le Chiffrement Asymétique

Un serveur et un client ont besoin de communiquer et d’être sur de parler à la bonne personne.
De plus ils ne veulent pas être écoutés.

On pourrait utiliser le chiffrement AES, mais comme les deux partis utilisent la même clef, si quelqu’un la récupère il peut déchiffrer la communication

On utilise donc un chiffrement asymétrique:

Pour ça on doit avoir nécessairement 2 clefs complémentaires. C’est là qu’on obtient une clef privée et une clef publique.

La clef publique est distribuée aux interlocuteurs, elle leur servira à chiffrer les messages destinés au possesseur de la clef privée.

L’interlocuteur a lui aussi un jeu de clefs privée/publique, et lui aussi distribue sa clef publique pour la même raison.

donc on a:

  • Un client qui donne sa clef publique au serveur;
  • Un serveur qui donne sa clef publique au client.

Tout message chiffré avec une clef publique n’est déchiffrable qu’avec la clef privée. De cette manière les message intercepté sont illisibles.
Le client envoie donc ses messages chiffrés avec la clef publique du serveur. Et le serveur envoie ses messages avec la clef publique du client.
Et pour la vérification d’identité le client envoie sa propre clef publique au serveur, chiffrée avec la clef publique de ce dernier. Le serveur compare la clef reçue (après déchiffrement) avec celles autorisées et ouvre la connexion si elle est valide.
Le serveur fait la même chose puisqu’on veut être sûr de se connecter au bon serveur et éviter l’usurpation d’identité.

Une explication bien plus complète ici.

Posted in Uncategorized by Muphins. No Comments

Tuto Linux: Configurer openSSH pour n’accepter que les connexions avec clefs RSA

Attention, cet article assume que vous avez un minimum de connaissance et de pratique sur les systèmes Linux
Dans le cas présent j’utilise une distribution Debian sur un RaspberryPi, une distrib Debian ou Ubuntu (ou tout autre dérivé de Debian) sur plateforme i386, x64 ou ARM aura les mêmes comportements. Le serveur SSH utilisé – OpenSSH – est issu de FreeBSD, et est le même disponible sur beaucoup de distribution Linux.

Tout d’abord un peu de vocabulaire:

  • SSH: c’est le protocole de communication;
  • ssh: c’est le logiciel client;
  • sshd: c’est le serveur;
  • RSA: algorithme de chiffrement par clefs asymétriques.

Intro

Avec le protocole SSH on peut se connecter en utilisant le couple Login/MotdePasse standard, ou par clef RSA.
Je vais expliquer ici comment désactiver l’authentification par mot de passe et ne laisser que celle par clef RSA afin de mieux protéger l’accès à votre ordinateur distant.

Tout d’abord on va jeter un œil dans le fichier de configuration de sshd qui se trouve ici: « /etc/ssh/sshd_config » .
Les paramètres qui nous intéressent sont:

  • PubKeyAuthentication                 Autorise l’authentification par clefs publiques (RSA)
  • AuthorizedKeysFile                       Emplacement du fichier comportant les clefs publiques authorisées à se connecter
  • PasswordAuthentication             Autorise l’authentification par login/motdepasse

Read the rest of Tuto Linux: Configurer openSSH pour n’accepter que les connexions avec clefs RSA »

Posted in Informatique Tuto Linux by Muphins. 2 Comments

Mise Hors ligne du RaspiServer

J’ai débranché mon RaspiServer, pour la simple raison que pour le moment je ne l’utilise pas, qu’il reçois très peu de visites et qu’il n’y a pas encore de contenu intéressant dessus.

En attendant je vais continuer de rédiger mon article sur la mise en place d’un serveur web sur Raspberry Pi. Pour ça je vais refaire toute les manipulation en faisant différents tests pour être sur de pas me planter dans les explications et de ne rien oublier.

Quand l’article sera terminé, je tenterai de le poster sur HackaDay, et remettrai le Raspi en ligne.

Ensuite je commencerai à poster des articles sur mon robot quadrupède, sur mon site, ici, et sur le RaspiServer.

Posted in Hacks Informatique Mon matos by Muphins. 1 Comment

Inscription à un cours en ligne sur l’intelligence artificielle

Plus précisément sur la planification, en gros: établir une démarche à suivre pour arriver à un point final (si j’ai bien compris)

Le site qui propose ce cours s’appelle Crousera (lien vers le cours auquel je me suis inscrit: https://www.coursera.org/course/aiplan ) et propose également tout un tas d’autre cours/formations sur plein de sujets qui peuvent interresser tous le monde.
De ce que j’ai pu voir, les cours sont tous gratuits et vous recevez un diplôme à l’issue de ceux-ci (en cas de réussite bien-sûr). Et même si les diplôme ne sont pas toujours reconnus officiellement de partout, c’est toujours valorisant, pour un entretien par exemple, de dire qu’on a suivi une formation supplémentaire de son propre chef.

Je me suis inscrit à ce cours en prévision de ma candidature au Master IAD (Intelligence Artificielle et Décision) à l’UPMC (Université Pierre et Marie Curie à Paris).

J’espère que ce cours plus la finalisation de mon robot quadrupède (auquel je pourrai m’atteler quand je recevrai mon nouveau Raspberry Pi) me permettront de suffisamment me valoriser pour être accepté et pouvoir suivre la formation IAD.

Raspi server

Accessible à cette adresse : rpi.informotics.fr, Raspi server est un site web (sous wordpress) hébergé sur mon Raspberry Pi branché dans ma maison.

Vous trouverez sur ce dernier des articles mes projets incluant le Raspberry Pi.
Donc en premier un article sur comment transformer son Raspberry Pi en serveur web, puis une série d’articles sur mon robot quadrupède (présenté sur mon site) qui deviendra piloté par …devinez quoi… une framboise 🙂

Posted in Uncategorized by Muphins. No Comments