vendredi 27 décembre 2013

Gstreamer et Serveur de streaming RTSP sur Raspberry Pi (1ere Partie)

Ce tutoriel va nous permettre de construire, grâce à une raspberry pi, un serveur de streaming vidéo et/ou audio et notamment diffuser un flux vidéo provenant d'une caméra. N'ayant pas encore en ma possession le module caméra de la raspberry pi, je vais utiliser une webcam USB du commerce compatible avec la raspberry pi (USB Webcam).

Le serveur de streaming que nous allons installer est basé sur le protocole RTSP (Real Time Streaming Protocol). Ce protocole RTSP est implémenté sur la couche 7 du modèle OSI (couche applicative) et utilise les couches de transports RTP/RTCP pour faire circuler les flux de données sur un réseau IP.
L'avantage du RTSP est de diffuser un ou plusieurs flux seulement quand un client se connecte au serveur et ce même client peut interagir avec le flux de données (lecture, pause, retour en arrière, en avant, etc ...).

Ce tutoriel est divisé en deux billets, Ce billet est consacré à la construction et l'installation d'un serveur RTSP basé sur le framework GStreamer sur notre raspberry pi et le second billet est consacré à l'introduction de GStreamer avec des cas simples d'utilisation et notamment la démonstration de notre serveur RTSP.

Pour ce billet, nous allons travailler avec :
  • Notre environnement de compilation : buildroot-2013.08.1.
  • Kernel 3.12.0.
  • Chaîne de compilation croisée construite avec crosstool-NG 1.15.0.
  • Packages rpi-userland et rpi-firmware.
  • Framework GStreamer version 1.2.0 et ses plugins standards (base, bad, ugly et good) en version 1.2.0.
  • Plugin OMX (OpenMAX IL wrapper) version Git, qui nous permettra d'encoder les vidéos grâce aux GPU de la raspberry pi.
  • Serveur RTSP version Git aussi.

jeudi 5 décembre 2013

Raspberry pi et Hotspot Wifi avec le DWA-121

Ce billet est consacré à la transformation d'une raspberry pi en hotspot wifi grâce au dongle wifi DWA-121.
J'ai déjà présenté ce dongle et comment l'interfacer avec une raspberry pi dans un précédent billet.
On va reprendre tout ça pour l'utiliser avec le nouveau noyau linux 3.12.0.

J'utilise le terme "hotspot" mais il faudrait plus utiliser le terme "point d'accès" puisque je n'aborderai pas la partie partage de connexion Internet grâce aux iptables. De nombreux tutoriels existent sur le net sur le partage de connexion.

Les outils principaux abordés sur ce billet seront :
  • 8192cu.ko : Driver pour le dongle DWA-121
  • wireless tools (iwconfig, iwlist, ...) : Utilitaires pour la gestion du wifi.
  • hostapd : Utilitaire de création de point d'accès wifi.
  • dhcpd : démon de serveur dhcp permettant l'attribution d'adresses IP aux appareils se connectant à la raspberry pi.


lundi 2 décembre 2013

Afficheur Alphanumérique (bonus python)













Dans un précédent billet, on a vu comment s'interfacer avec l'afficheur LCD 2x16 caractères depuis un code écrit en C. On va maintenant s'intéresser à un module python pour afficher des informations sur l'afficheur.
L'un des principaux avantages du python par rapport au langage C est que l'on a pas besoin de compiler le code pour le lancer sur la raspberry pi, donc moins galère pour faire du prototypage.

La base de l'environnement embarqué de travail est :

  • buildroot-2013.08.1
  • kernel 3.12.0
  • chaîne de compilation croisée : buildroot-uclibc


vendredi 29 novembre 2013

Buildroot 2013.08.1 & Raspberry Pi

Après plusieurs mois d'absence et un nouvel hobby qui prend du temps: être Papa ;-) je reviens pour compléter mon blog sur les systèmes embarqués.

Ce billet sera simplement consacré à la création d'un environnement embarqué complet à partir de la dernière version de buildroot 2013.08.1.

Cette nouvelle version de buildroot va apporter beaucoup plus de simplicité que les précédentes versions ...


mercredi 13 mars 2013

Cortex M4 - Premiers Pas avec des outils Opensource

Je suis parti à la découverte des micros Cortex M4 lors de l'achat d'une carte de démonstration STM32F3 discovery pour une dizaine d'euros.

Cette "demo board" embarque plusieurs choses très intéressantes, notamment, un MCU STM32F303VCT6 32 bits Cortex M4, un ST-LINK v2 (outil de programmation et de debug), un Gyroscope, Un compas avec un accéléromètre, plusieurs leds et boutons et deux connecteurs mini USB. Bref, tout pour commencer à s’amuser.




Un programme de démonstration tourne déjà sur la carte et permet de s'amuser avec les différents composants (Chenillard, gyroscope et accéléromètre avec la roue de Leds).

Après lecture de la documentation téléchargeable sur le site de ST microelectronics. J'ai fait particulièrement attention aux différents outils de développement proposés avec la carte. 4 choix possibles :


Vous l'aurez compris, j'ai choisi la cinquième option. Elle consiste à utiliser des outils Open source pour toute la chaîne de développement.

Ce premier post sur le cortex M4 va consister à montrer les différents outils nécessaires au développement, à la programmation et au débogage.

  • Création d'une chaîne de compilation croisée GNU custom pour le micro.
  • Création d'un Template de compilation (Makefile, etc ...).
  • Utilisation et comparaison avec une chaîne de compilation croisée GNU téléchargeable.
  • Installation et utilisation de l'outil de programmation sous linux (non-officiel) et sous windows (officiel)
  • Installation et utilisation de l'outil OpenOCD pour le débogage.

dimanche 24 février 2013

Dongle wifi DWA-121 et Raspberry Pi

Mon dernier achat est un dongle WIFI. Avant cet achat compulsif, j'ai vérifié dans la liste fournie sur le wiki de raspberry pi, quel modèle acheter. C'est déjà pas forcément facile avec du matériel certifié alors si on part dans l'inconnu, c'est encore plus galère....

L'heureux élu est le dongle DWA-121 de la marque D-LINK.

Le but de ce tutoriel est de configurer le dongle wifi sur une distribution de type buildroot (oubliez network-manager et tout ce qui va avec ....)


Pour ce tutoriel, nous allons :

  • Utiliser l'outil de configuration wifi : wpa_supplicant
  • Compiler, installer et charger le driver de chez realtek : 8192cu
  • Compiler et installer les outils sans fil fournis avec le driver
  • Créer un script pour la configuration du dongle au lancement du système de fichiers.

mardi 19 février 2013

Afficheur Alphanumérique (partie 3)



On va maintenant s’intéresser à l'interfaçage de la carte micro-contrôleur avec la raspberry pi.


Afficheur Alphanumérique (partie 2)




Architecture Logicielle


L'architecture logicielle de la carte contrôleur est relativement simple. 
On reçoit des trames provenant du bus I²C via le handler d'interruption et les empiler dans une file d'attente (FIFO), ensuite, périodiquement, on dépile la file d'attente et traite les trames enregistrées pour afficher les informations sur l'écran LCD.



Afficheur Alphanumérique (partie 1)

Préambule

Ce projet consiste à interfacer un afficheur alphanumérique 2x16 caractères avec la raspberry pi. Il va pouvoir indiquer différentes informations sur l'état de la raspberry pi en fonctionnement (exemples : information sur la mémoire, le micro processeur, les process, etc ...).

Ça a l'air d'être à la mode d'interfacer un afficheur à la raspberry pi. Vous trouverez sur la toile, de nombreux tutoriels pour le faire directement.
Je vais complexifier un peu la chose, rien de bien méchant, je vous rassure ;-)
L'afficheur va être contrôlé avec un micro contrôleur 8bits de la marque Microchip (Pic 16f876a) et dialoguera avec la raspberry pi via le bus I2C. Cela permettra d'appréhender la communication entre 2 micros via un bus série.

Architecture générale du projet















J'ai choisi ce micro contrôleur 8 bits parce qu'il est possible :
  • d'écrire le programme en C (je suis pas un grand fan de l'assembleur)
  • de compiler le programme sous Linux à l'aide du compilateur HI-TECH C compiler (il existe, de plus, une version demo et lite)
  • de le faire évoluer pour d'autres fonctionnalités.
  • de pouvoir découvrir de nouveaux aspects des systèmes embarqués.
  • de réduire les coûts de développement (quelques euros, voir dizaines d'euros avec le programmateur)

Le premier billet va illustrer les différents éléments de ce projet.
Le second billet va aborder les différents modules du micro contrôleur PIC 16f876a à mettre en place et finalement, le dernier billet montrera l'interface avec la raspberry pi.

samedi 9 février 2013

Alertes [LE BON COIN]





Vous connaissez, surement, l'un des sites de recherche d'objets neufs ou d'occasions le plus connu, Le bon coin. Il est vrai que l'on peut y faire de bonnes affaires, en achetant ou en vendant à peu près tout ce que l'on veut ou en proposant tous types de services.
Il m'arrive, assez régulièrement, de fréquenter ce site, surtout quand je suis à la recherche de choses bien précise.
N'ayant pas la possibilité de me rendre régulièrement sur le site, tout au long d'une journée, j'ai imaginé ce soft qui a pour but d'effectuer la recherche à ma place à une date précise ou un intervalle de temps programmé. Le résultat de cette recherche est ensuite envoyé par email si de nouveaux éléments sont trouvés.
Une interface web est accessible depuis n'importe quel navigateur, afin de faciliter la gestion (Ajout, suppression et configuration) de mes recherches.

Ce programme, sous licence GPL, écrit entièrement en python, utilise différentes sources tierces pour atteindre mon but :

  • CherryPy : Création et gestion d'un serveur Web minimaliste
  • Genshi : Template pour la gestion des pages Web
  • BeautifulSoup : Analyse d'une page internet
  • Minidom : Gestion des fichiers XML qui jouera le rôle de base de données
  • APScheduler : Gestion d'un ordonnanceur/planificateur de tâches

dimanche 6 janvier 2013

Monitoring & Raspberry Pi



Voici un petit outil de supervision, créé par Nicolargo dont voici le lien du blog : blog de nicolargo. Cet outil s'appelle Glances, et permet surveiller son système en mode console depuis un terminal. Cet outil est développé en python et utilise différentes librairies python, notamment psutil qui récupère les informations systèmes de la raspberry pi.





Les différentes statistiques sont classées et visibles grâce à différentes couleurs :

  • VERT :  la statistique est OK
  • BLEU : la statistique est à surveiller
  • VIOLET : la statistique est en alerte
  • ROUGE : la statistique est critique

De nombreux raccourci clavier permettent d'activer ou désactiver différentes fonctions, de trier certaines statistiques, etc ...

Voici un petit screenshot de cet utilitaire :