Hey Raspberry Pi Foundation!

4 12 2016

DSC01453

I thought I would put together all the Pi’s I’ve collected so far just to list them and the projects I’ve done with them.

 

From left to right and top to bottom you can see:

  • the official 7″ Touchscreen Monitor for Raspberry Pi assembled into the SmartiPi Touch for which I was a backer on Kickstarter; this one is running a brand new Pi 3 – the intent here is to run kivy on it and to build a cheap house monitoring / automation system;
  • a Pi 2 with Adafruit RGB Matrix HAT + RTC for Raspberry Pi and Adafruit 64×32 RGB LED Matrix – 4mm pitch which I am using to send messages to my kids (I’ll have to post on this soon);
  • a very fist KANO kit with a Pi 1 which I had participate to fund on Kickstarter as well; I had hoped my kids would enjoy building their computer but being French the language has been a show stopper (hey Kano team, if you haven’t done this already, I could help translating the tutorials Smile.. in French!);
  • one of the very first Adafruit Cupcade units – a little bit customized with stickers from arcadestickers – my kids just live this one!
  • going back left, second row: one of the very first Adafruit PiTFT 320×240 2.8" TFT+Touchscreen for Raspberry Pi assembled into its Enclosure for PiTFT;
  • just in front of this one we have an Adafruit PiTFT 2.2" HAT Mini Kit – 320×240 2.2" TFT – No Touch which can be used easily inside a Short Crust Plus case; I used it recently when building a RetroPie console – see this post;
  • on the right of the PiTFT there’s a now pretty old Pi 1 with Adafruit RGB Negative 16×2 LCD+Keypad Kit for Raspberry Pi: I used this one for my piGarage garage door controller (see my earlier post here) – for now it is mounted in a very neat crystal case – this one is pretty cool for teaching python to the kids
  • in front of this one you can see another Pi 1 which I am now using also for python learning sessions, this one with a Pibrella card inserted;
  • then we can see a RaspiRobot from sparkfun (too bad it’s retired) – well the chassis is equiped with a Pi 1, version 2 of the RaspiRobot board by Monk Makes, an Adjustable Pi Camera Mount from Adafruit, a Bluetooth 4.0 Console Adapter for Rapsberry Pi from openelectrons.com and an HC-SR04 Ultrasonic Range Sensor (pretty good tutorial here if you’d like to use it without the RaspiRobot board) – adding to this one of my fav’s TP-LINK WN725N wifi dongle, I could drive the car wireless and see videos with VLC Smile; power is being provided by a TeckNet powerbank;
  • front row you can see a Pi 2 with a Hybrid Tube Amp – this one is SWEET! I am so happy I helped funding this project;
  • then we have a pi Zero with a pHAT DAC from pimoroni; haven’t used this one much yet because of the above Hybrid Tube Amp Smile
  • to its right, another Pi 2 running RuneAudio with HiFiBerry’s AMP+ hat which I wired to an old pair of Celestion Ditton 44 – the case is yet another Short Crust Plus in which I drilled a few holes – this thing has literally resurrected my old speakers;
  • the last one on the picture is one I am also quite happy with: this one is a Pi 2 running RetroPie inside a NesPi LEGO case from RaspiPC.es – the controler is a NES30 from 8bitdo – if you want to build one for yourself, just go there;

DSC01455

I almost forgot this one: a PI 2 with a Pi 2 Design 502SSD – mSATA Solid State Drive Shield inside a custom acrylic case by Yours Truly.

Two more are missing now that I am thinking of: two Pi 2 running motionEyeOS (a Linux distribution that turns your single board computer into a video surveillance system): one is using a Pi Camera and is turned into a fast-mpeg cheap IP camera and the other is used to control the video streams from the fast-mpeg and from 2 other IP webcams.

Alright so net net this makes me the happy owner of a good bunch of Raspberry Pi’s with a fair amount of hats, accessories and more…this thing is really really good for building home projects Smile

Advertisements




Retrogaming part2: RetroPie on PiTFT

3 02 2016

20160202_225146In an earlier post (in French only, sorry folks) I documented in great details the making of my personal home arcade bartop thanks to Arcademy. You really want to check out Jérome’s latest projects – these are just amazing.

Another way of looking at retrogaming is by utilizing rather portable systems such as the Raspberry Pi. Phillip Burgess posted an amazing instructable at Adafruit on Running OpenGL-based Games & Emulators on Adafruit PiTFT Displays – unfortunately as he pointed out, recent updates to the Pi kernel & bootloader are incompatible with his guide.

We could not just wait till a fix, could we? So I decided I would try and give it a shot… and managed to get RetroPie 3.0 working on my Raspberry Pi B 2+ with Adafruit’s PiTFT 2.2”. I also added some additional features to facilitate the usage.

For the record, uname -a gives Linux raspberrypi 4.1.6-v7+ #2 SMP PREEMPT Fri Sep 4 16:49:07 UTC 2015 armv7l GNU/Linux.

Most of the work here is based on the article by Philippe Burgess on Adafruit: I cannot but recommend that you would read it carefully from A to Z before starting. You can also read http://www.averagemanvsraspberrypi.com/2014/07/how-to-set-up-adafruit-pitft-for.html for another perspective. Very similar in content but good to read as background.

PiTFT setup

Compared to Phillip Burgess’ approach, we are going to change a little bit the steps and start with the installation of the PiTFT screen. So we won’t be using the RetroPie distribution but rather start with a fresh Raspbian and run the RetroPie installation script at a later stage.

Attach your PiTFT hat to the Raspberry Pi and fetch the latest Raspian distribution. I’ll assume you know how to install Raspbian from the image. Once you’ve done this, follow the recommendations at https://learn.adafruit.com/running-opengl-based-games-and-emulators-on-adafruit-pitft-displays/retropie-setup. Specifically,
– Expand Filesystem
– Under “Advanced Options,” disable Overscan, enable the Device Tree, SPI (load SPI kernel module by default), and force audio through 3.5mm jack (since HDMI will be disconnected later).

Next is installing the required kernel changes for the display. We are going to run most of the steps described at https://learn.adafruit.com/running-opengl-based-games-and-emulators-on-adafruit-pitft-displays/pitft-setup.

$ curl -SLs https://apt.adafruit.com/add-pin | sudo bash 
$ sudo apt-get -y install raspberrypi-bootloader 
$ sudo apt-get update 
$ sudo apt-get upgrade 
$ sudo apt-get -y install raspberrypi-bootloader 
$ sudo apt-get -y install adafruit-pitft-helper

I am using a 2.2″ HAT hence to run the configuration script,

$ sudo adafruit-pitft-helper -t 22

Same here, just go with Phillip Burgess’ recommendations, all good. Then we install the live framebuffer mirroring tool.

$ sudo apt-get install cmake 
$ git clone https://github.com/tasanakorn/rpi-fbcp 
$ cd rpi-fbcp/ 
$ mkdir build 
$ cd build/ 
$ cmake .. 
$ make 
$ sudo install fbcp /usr/local/bin/fbcp

To launch fbcp fairly early in the startup sequence we need to edit /etc/rc.local. As we are not working (yet) with RetroPie we want to add the command /usr/local/bin/fbcp & to /etc/rc.local, just before the final “exit 0” line, and not in /etc/init.d/asplashscreen (which is quite obviously not yet here…)

Next is setting up the console with

$ sudo dpkg-reconfigure console-setup

(here again, follow the guide from P. Burgess) and editing the boot/config.txt file by adding at the end

hdmi_force_hotplug=1 
hdmi_cvt=320 240 60 1 0 0 0 
hdmi_group=2 
hdmi_mode=87
dtoverlay=pitft22,rotate=90,speed=80000000,fps=60

Good! Let’s reboot.

$ sudo reboot

RetroPie setup

The next step is to install RetroPie. For doing this we are NOT going to use the distribution files (…) but the installation script as described here: http://blog.petrockblock.com/2012/07/22/retropie-setup-an-initialization-script-for-retroarch-on-the-raspberry-pi/.

$ sudo apt-get install -y git dialog 
$ git clone git://github.com/petrockblog/RetroPie-Setup.git 
$ cd RetroPie-Setup 
$ chmod +x retropie_setup.sh 
$ sudo ./retropie_setup.sh

At this stage we should have all working good, so we can spend some time on doing some tuning.

Startup tuning

20160126_213546

The script below and its usage is largely inspired by http://framboisepi.fr/informations-sur-le-raspberry-pi-apres-la-connexion/. You can store this under /home/pi/info.sh:

 

#!/bin/bash 
clear
echo "*** RETROPIE WITH PITFT ***"
let upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)" 
let secs=$((${upSeconds}%60)) 
let mins=$((${upSeconds}/60%60)) 
let hours=$((${upSeconds}/3600%24)) 
let days=$((${upSeconds}/86400)) 
UPTIME=`printf "%dd %02dh %02dm %02ds" "$days" "$hours" "$mins" "$secs"` 
# get the load averages 
read one five fifteen rest < /proc/loadavg
echo "$(tput setaf 2) 
`date +"%A %e %B %Y %R"` 
`uname -srmo` 
$(tput setaf 1) 
Uptime  : ${UPTIME} 
Memory  : $(tput setaf 2)$((`cat /proc/meminfo | grep MemFree | awk {'print $2'}`/1024)) mo $(tput setaf 1)/ $((`cat /proc/meminfo | grep MemTotal | awk {'print $2'}`/1024)) mo 
Load    : ${one}, ${five}, ${fifteen} (1, 5, 15 min) 
Process : `ps ax | wc -l | tr -d " "` 
IP@     : 
$(tput setaf 2)`/sbin/ifconfig | /bin/grep "Bcast:" | /usr/bin/cut -d ":" -f 2 | /usr/bin/cut -d " " -f 1` 
$(tput setaf 1)`wget -q -O - http://icanhazip.com/ | tail` 
Temp    : `vcgencmd measure_temp | sed "s/temp=//"` 
$(tput sgr0)"

echo "$(tput setaf 5)Press #27 to start EmulationStation. 
Press #23 to initiate immediate Shutdown. 
"

Once done, we just need to make it executable and to ensure it is executed on logging (did I say that you want to auto-log as user “pi”? go back to raspi-config!):

$ chmod 755 info.sh
$ vi .bashrc

add at the end of the file

# informations 
./info.sh

# buttons control 
sudo python buttons.py

then test it with

$ source .bashrc

Oops! missed to share the /home/pi/buttons.py script for handling GPIO #27 (remember #23 is directly configured in /etc/modprobe.d/adafruit.conf – which we did select during the PiTFT installation, right ?)

import RPi.GPIO as GPIO 
import time 
from subprocess import call

GPIO.setmode(GPIO.BCM) 
GPIO.setup(27,GPIO.IN, pull_up_down=GPIO.PUD_UP) 
while True:         GPIO.wait_for_edge(27, GPIO.RISING)         call(["/home/pi/ttyecho", "-n", "/dev/tty1", "emulationstation"])         quit()

Alright, now to the…

ROMs installation

Samba can ease the process (although RetroPie already adds some shares for ROMs and BIOSes)

$ sudo apt-get install samba samba-common-bin
$ smbpasswd -a pi 
$ smbpasswd -a pi
$ sudo smbpasswd -a pi
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
$ sudo vi /etc/samba/smb.conf

Ensure you have the following at the end of the file

[pihome]     comment= Pi Home     path=/home/pi     browseable=Yes     writeable=Yes     only guest=no     create mask=0777     directory mask=0777     public=no

then

$ sudo /etc/init.d/samba restart
$ sudo reboot

One thing I almost forgot: in order to issue the emulationstation command when hitting GPIO #27, I needed to echo the command on the correct tty. Tried a number of things…

$ su -c emulationstation pi
$ echo -e "emulationstation\n" (notice the carriage return...)
$ runuser -l pi -c emulationstation
$ sudo runuser -l pi -c emulationstation
$ eval `echo -e emulationstation`

… and more.

Then I found ttyecho, an Utility to Send Commands or Data to Other Terminals (tty/pts).

This one is simply a blast. Go for it:

$ vi ttyecho.c
$ make ttyecho

Test it:

$ sudo ./ttyecho -n /dev/tty1 emulationstation

Works like a charm -> let’s use this! 🙂

Extra: Wifi configuration

I am using my favorite TP-Link TL-WN725N dongle for this. You can either use the wpa_supplicant or manually edit the interfaces file. If required, you can find drivers here.

What’s missing?

20160126_213531Hope you found this guide useful. The last piece of it it that I have not yet found a way to get Bluetooth connectivity up & running with the excellent 8Bitdo NES30 GamePad. If anyone knows… ping me!





Retrogaming partie 1: arcademy

14 04 2015

borneEn français cette fois-ci! Cela faisait longtemps que je m’étais promis (à moi-même entre autres…) de blogguer sur le montage d’une borne d’arcade. Je n’ai bien sûr pas la prétention de tout couvrir, tant le nombre de solutions et de produits autour du Retro-gaming est important. J’en suis à ce jour à mon troisième montage sur cette thématique puisqu’en dehors du bartop Arcademy dont nous allons parler dans ce post j’ai également passé un peu de temps sur

  • la mini-borne Cupcade de Philipp Burgess à base de Raspberry Pi + MAME et disponible sur Adafruit.
  • le projet RetroPie qui lui aussi utilise un Pi et permet d’avoir entres autres une console NES sur sa télé très rapidement.

Ces deux derniers sont également de formidables projets, j’aurai l’occasion d’en reparler.

Pour en revenir au sujet du jour, Jérome Boulinguez via son site http://arcademy.fr propose un kit complet permettant de monter soi-même son bartop arcade. Comprenez borne d’arcade mi-hauteur,  complètement intégrée, à poser sur un meuble pour profiter de parties mémorables avec les amis… ou les enfants (qui adorent l’idée de jouer aux jeux de leur vieux papa).  A noter que Jérome a d’autres produits à son catalogue comme un flipper virtuel ou un mini-bartop – deux autres magnifiques réalisations.

Le kit bartop 2 joueurs vise à réutiliser un PC pour y faire tourner un certain nombre d’émulateurs dont MAME. Ré-utilisation éhontée du schéma du site puisqu’il est si bien fait:

kit-bartop-2-joueurs

Le kit propose l’ensemble des éléments bois pour monter la structure, toute la quincaillerie requise et pléthore d’options à commander directement ou encore à aller chercher dans son magasin de bricolage favori. La liste d’achat permet de se faire une idée et de comprendre ce qu’il faudra également se procurer en sus (comme par exemple les boutons et joysticks – ce qui permet un bon niveau de personnalisation). Là encore, tous les pointeurs nécessaires sont sur le site.

En dehors d’un documentation plus que complète, le site propose un ensemble de videos extrêmement détaillées qui font qu’il est difficile de se tromper. Sans revenir sur l’intégralité du montage, je vais vous partager mon expérience avec le kit Arcademy qui encore une fois est d’une grande qualité.

Comme Lord Raptor consacre un blog complet au sujet et revient sur l’ensemble des étapes du montage (voir son site: Le bartop du Raptor), je vais me limiter aux étapes qui m’ont parues nécessiter un peu plus d’attention et parfois proposer quelques idées.

Préparation des côtés de la bornes et du montant du control panel (étapes 1 à 3)

Rien de bien compliqué ici. Suivez bien les deux video d’Arcademy ainsi que les recommendations du Raptor ici et . +1 sur le commentaire “comprendre comment coller correctement (cccc) le vinyle”, c’est crucial.

Préparation du montant avec haut-parleurs (étape 4)

Une paire de Pioneer TS-G1032I achetée chez Feu Vert ou Norauto fait parfaitement l’affaire. Par ailleurs les grilles se découpent facilement. Idem ici, a priori pas moyen de se tromper en regardant bien les videos et les commentaires. Et bien si! Pour n’avoir pas fait attention, j’ai posé le vinyle du mauvais côté et ne m’en suis aperçu qu’après avoir découpé les ronds centraux… du coup trop larges. Après 10 bonnes minutes à maudire ma stupidité, j’ai trouvé une solution dont le rendu est en définitive aussi bon voire supérieur (à mon avis) au vinyle: j’ai “bombé” l’élément au spray, couleur zinc noir ferronnerie. Jugez plutôt:

IMAG0337

Attention aux vapeurs cependant, bien pulvériser la peinture dans un endroit aéré et laisser sécher 30 minutes à 1 heure pour être sûr. Pour l’assemblage de la pièce MBV, faire en effet bien attention à laisser un espace suffisant pour permettre l’installation de la vitre plus tard. Pour la découpe des grilles, le marquage au crayon-craie fonctionne très bien.

Préparation de l’élément bas (étapes 5 et 6)

RAS pour cette étape. Idem, consultez bien les videos sur le site.

Assemblage de l’ossature principale de la borne, assemblage du panneau arrière et du panneau du control panel à l’avant (étapes 7 à 17)

En complément des videos du site arcademy, les photos sur le blog de Raptor sont particulièrement utiles pour se rendre compte de ce que l’on veut obtenir. Quelques points d’attention sur la base de mon expérience:

1. Hélas on a très vite fait de visser un peu trop fort et quoique d’une manière générale la visserie fournie avec le kit soit parfaitement adaptée, il peut arriver que certaines vis soient un peu trop larges et qu’un coup de tournevis trop appliqué fissure le bois. Ce qui m’est arrivé dans le coin supérieur de la borne:

IMAG0340

Pour éviter cela, deux suggestions assez évidentes: a) toujours vérifier qu’une vis n’est pas trop large et au besoin la remplacer par une plus fine de longueur identique et b) procéder très doucement dès que l’on assemble des pièces de bois assez fines.

2. Les charnières ne s’alignent pas forcément au millimètre. Si ce n’est pas un problème dans l’absolu, il ne faut pas pour autant être surpris. Dans ce cas de figure, il convient de commencer par visser dans les trous les plus alignés et de procéder vers les moins alignés. Dans mon exemple j’ai commencé par les vis 3 et 4 et ai ensuite étendu vers la gauche et la droite.

IMAG0344b

3. Il n’existe pas de sachet plastique numéro 13 (ou 14 ou 15 – je ne me rappelle plus). Ce n’est pas un problème, juste une erreur d’etiquetage parfois – rien de grave mais ne soyez pas surpris.

4. Ainsi que le souligne Raptor dans son post, la pate de verrouillage du bloc porte arrière est juste impérative. Elle permettra de s’assurer que la porte ne s’ouvre pas inopinément, mettant en danger toute l’électronique une fois installée. Bon à savoir: lors du premier assemblage le verrouillage est lâche (voir ci-dessous), il convient alors de tordre légèrement la pate pour s’assurer d’un verrouillage solide.

IMAG0342

Montage du système de fixation et de positionnement du moniteur (étapes 18 à 20)

Vous trouverez sur le site d’arcademy une liste de moniteurs compatibles. J’ai pour ma part opté pour un HP L1904T d’occasion qui est parfaitement compatible, qui se démonte facilement et qui s’allume automatiquement. Le seul point d’attention porte sur les vis d’assemblage fournies dans le kit (celles destinées à être utilisées sur le système de fixation VESA du moniteur). Pour ce moniteur, elles sont trop longues, il m’a fallu les remplacer par des plus courtes, ce qui a été vite fait.

Préparation du cache contour de moniteur et Installation du moniteur sur la borne (étapes 21 et 22)

C’est le passage le plus délicat. Avant de vous lancer, faites attention également à bien avoir installé le joint qui servira à cacher le jour qui sinon laissera passer la lumière du marquee.

Le montage de l’écran et son centrage peuvent se révéler assez funky. Pour ma part j’ai procédé calmement par étape, en positionnant l’écran au maximum et en serrant les vis au fur et à mesure. Une fois cela fait, le positionnement en profondeur peut se préparer en retirant temporairement la vitre. Pas simple seul, mais jouable pour peu que l’on soit au calme.

Finalisation des côtés de la borne, du Control Panel et Pose des Baguettes du Marquee (étapes 23 et 24)

Pas grand-chose à ajouter par rapport aux commentaires de Raptor. Ah si, un truc: faites attention à la pose des baguettes du marquee. En particulier, le centrage avec le double-face. Car malheureusement dans mon cas j’ai raté mon centrage et en voulant repositionner la baguette le double-face (costaud!) a arraché une partie du plaquage bois:

IMAG0345

Autant dire que j’étais sérieusement furax de cette erreur. au final j’ai réussi à cacher plus ou moins la misère mais quel dommage…

Pour ce qui est des boutons et des joysticks, Jérome recommande smallcab comme fournisseur, j’ai suivi sa recommendation et je n’ai eu aucun problème, tout est arrivé parfaitement emballé. Pour mémoire la liste commandée (le tout pour un peu moins de 80€):

smallcab

Installation du Hardware PC (étape 25)

Là encore, allez regarder en détails la video disponible sur le site d’Arcademy ainsi que les commentaires sur le site de Raptor. Quelques remarques complémentaires:

1. Le peu de place à l’arrière du bartop vous contraindra peut-être (sans doute!) à opter pour un ventirad CPU “low profile”: dans mon cas j’ai choisi de remplacer un vieux Noctua par un Zalman qui remplit parfaitement son office. Idem pour la carte graphique, choix d’un low profile et fanless (pas besoin de sur-performances). Notez que les barettes de RAM avec dissipateur passent quand même (j’avais un doute avant le montage):

DSC00390

2. C’est aussi un bon moment pour tester et insérer un dongle WiFi (le TP-Link TL-WN725N à moins de 10€ sur amazon est parfait) A noter également l’achat d’un coude DVI (un coude VGA est fourni dans le kit Arcademy) pour cette carte (une Radeon). Idem, environ 10€ sur amazon pour un coude Lindy:

DSC00391

3. Pour fixer solidement l’alimentation (qui est assez lourde en position verticale) j’ai opté pour l’installation de 4 équerres plastiques au lieu de deux. Raptor a préféré installer une sangle, je trouve ma solution plus esthétique ^_^.

DSC00393

4. Notez également (si vous arrivez à voir) l’isolation des cables par gaine thermorétractable. J’ai choisi en fait de souder toutes les connexions et d’utiliser des gaines pour les isoler. Définitif mais plus efficace au final pour une question de longueur des cables. Pour les gaines, c’est aussi moins de 10€ les 100 gaines sur amazon (et ça sert toujours).

5. Si vous voulez vous faire plaisir avec la grille de ventilateur extérieur, assurez-vous de la prendre en 80mm… pas comme certains qui commandent un superbe modèle en 92mm…. !

Câblage du Control Panel (étape 26 – la dernière!)

Clairement la plus longue des étapes, afin de ne rien rater. Contrairement à ce que j’ai pu faire pour la partie électrique, j’ai choisi là de rester sur l’utilisation des cosses, les cables à cosses 4.8mm de smallcab étant impeccables (un seul regret, ne pas pouvoir choisir les couleurs, ce qui aurait aidé pour un cablage encore plus net)

Le résultat

Une fois l’intégralité montée, le système configuré (notamment via un excellent et très utile clavier sans fil Logitech K400), le résultat est à la hauteur de ce que j’avais imaginé (comparez avec le design prévu en tête de ce post grâce à l’outil de choix des couleurs sur le site d’arcademy – encore une trouvaille!!!). Un grand merci encore à Jérome pour la qualité de son design, sa disponibilité et son accueil, c’est un vrai plus – je sais qu’autour de moi d’autres songent à se lancer une fois vu le résultat!

DSC00389