Projet

Général

Profil

PirateBoxZero

Présentation

L'atelier consiste à faire une piratebox sur un RapsberryPi. La pirateBox 0 est une version légère de la pirate box.
Ce Rapsberry pi va vous permettre de partager des fichiers tels que de la musique, des films et de tchater, anonymement et en réseau local.
Ce tutoriel est basé sur cette source https://piratebox.cc/raspberry_pi:diy.

Ça permet de découvrir :

  • la soudure électronique (lien référentiel compétence)
  • les lignes de commandes (compétence administration système Unix)
  • (Culture technologique : communs, linux, unix, logiciel libre)
  • Réseau
  • CAO : freecad, inkscape, création de boîte
  • FAO : découpe laser, impression 3D
  • automatisme, programmation (capteur bouton, actionneur led)
Matériel :
  • Rapsberry pi zéro W.
  • une (carte MICRO SD ) d’une capacité minimum de 16 go.
  • câble d'alimentation micro-USB.
  • mdf 3mm
  • PMMA 3mm
  • 1 LED 3mm rouge
  • 1 bouton
  • 1 résistance 100Ohm 1/4 de watt
  • 4 vis + 8 écrous m3 plastique

Installation

Une fois que vous avez tout le matériel, bah il faut se lancer. Dans un premier temps rendez vous sur https://piratebox.cc, une fois sur le site, appuyer sur "how Tos" qui veut dire (comment faire) en français. Puis RapsberryPi car on va le rappeler c’est une pirate box sur base RapsberryPi.

Télécharger l'image

Il suffira de descendre pour arriver sur installation et télécharger le torrent pour Rapsberry pi 1 et zero.
Ça doit ressembler à ça "piratebox_rpi_1.1.4-27-02-2018.img.zip".
Une fois le téléchargement terminé, il faudra décompresser l'image si elle est en .zip comme ici, (avec un double-clic sur l'archive si puis copier l'image iso sur la carte sd pour que le Rapsberry pi puisse booter dessus).

Décompresser l'archive

Ici l'image est arrivée sous forme d'archive .zip, mais ça aurait aussi bien pu arriver sous la forme d'un .targz ou autre. Dans tous les cas le fichier en .iso que l'on veut est dans cette archive. Pour décompresser sous nos systèmes debian, c'est très difficile : clic droit sur le fichier, et un clic sur "extraire ici". Après cet effort surhumain vous pouvez aller boire un café, vous l'avez bien mérité.

Copier l'image iso

Branchez la carte sd à votre ordi, puis déterminez son point de montage en utilisant l'utilitaire disk. C'est un petit logiciel très sympa qui vous montre tous les volumes de mémoire montés sur votre machine comme les disques durs mais aussi la carte sd sur laquelle on veut écrire. Quand vous cliquez sur cette dernière dans "disks" (ou disques" en français), il vous affiche son point de montage (c'est un chemin qui commence par /dev/...). C'est très important de pas se tromper de point de montage car la commande "dd" que l'on va utiliser pour écrire l'image iso sur la carte sd est très puissant, et si on se trompe de volume pour écrire, on peut par exemple effacer le disque dur de l'ordinateur sur lequel on travaille ou un autre volume avec des données importantes etc...

Note : si un jour il vous arrive d'effacer par erreur un disque ou des données importantes. Ne paniquez pas, tant que vous n'avez rien réécrit sur les secteurs libérés lors de l'effacement, c'est encore retrouvable. Donc, éteignez la machine sur laquelle c'est arrivé et suivez les tutoriels de récupération de données avec photorec.

Maintenant les choses sérieuses, la ligne de commande pour copier votre image iso sur la carte sd doit ressembler à ça

dd if=./Téléchargement/piratebox_rpi_1.1.4-27-02-2018.img of=/dev/sdb bs=1M

explications :

  • "dd" c'est la commade
  • "if=" c'est l'origine, l'adresse de l'image iso sur votre machine et que vous voulez copier sur la carte sd
  • "of=" c'est la destination, le point de montage de votre carte sd, mais sans le chiffre à la fin, dans sdb1 par exemple, le "1" indique une partition sur le volume, hors nous on veut le volume entier.
  • "bs=" c'est la taille des secteurs que l'on veut écrire, 1M ou 4M marchent généralement assez bien sur les cartes sd, c'est pas trop lent.

Quand vous avez lancé la commande, le curseur doit clignoter quelques minutes avant de vous annoncer le résultat, en général il vous dit que ça c'est bien passé, la quantité de données copiées et le temps qu'il a mis.

Lancer la piratebox

Vous pouvez maintenant mettre la carte sd dans le raspberryPi0 et le brancher en usb sur le port "PWR IN". Patientez quelques minutes et vous devez voir apparaître un réseau wifi "pirateBox". Connectez vous-y en wifi.

!!!Attention!!! : si on est plusieurs à le faire en même temps alors toutes les piratesbox s'afficheront avec le même ssid, et on ne saura plus à laquelle on se connecte. Il faudra donc les démarrer une par une afin de reconfigurer les ssid.

Première connexion

D'abord se connecter au wifi de la piratebox avec une machine qui possède un shell.

Pour configurer notre piratebox, on va s'y connecter en ssh avec la commande suivante :

ssh alarm@alarmpi

ou si ça ne marche pas :

ssh alarm@192.168.77.1

En suite, il vous demande le mot de passe, par défaut c'est : alarm :

configuration

Changer le ssid

Il faut éditer le fichier hostapd.conf. Pour savoir ou il se trouve :

find / -name "hostapd.conf" 

Dans le fichier vous remplacez la valeur à la ligne ssid par celle que vous voulez.

changer le mot de passe de l'utilisateur "alarm"

passwd

puis il va vous demander votre mot de passe actuel et deux fois votre nouveau mot de passe. Attention, la piratebox n'affiche pas ce que vous écrivez pour les mots de passe mais le prend en compte.

changer le mot de passe de l'utilisateur "root"

sudo passwd root

Étendre l’espace de stockage à toute la carte SD

Pour l'instant si vous regardez bien (tapez df dan sun terminal ou ragradez sur l'interface web de la piratebox) vous verrez qu'il y a très peu d'espace de stockage sur votre piratebox et pas mal d'espace libre sur votre carte sd. Afin d'y remédier ils ont fait un script qui permet d'exploiter toute la carte SD.

sudo /opt/piratebox/rpi/bin/sdcard_share.sh

Electronique

Soudure des pins GPIO

La led et le bouton

Création du boîtier de la pirate box

CAO et FAO du boîtier

Pas encore documenté, mais les fichiers de construction et les exports pour la fabrication terminés sont disponibles dans la partie documents de ce projet. https://projets.cohabit.fr/redmine/documents/414

Générer une boîte

On utilise d'abord un générateur de boite autonome soit en ligne, soit on l'installe sur sa machine, https://festi.info/boxes.py/ClosedBox?language=en
Créez une boîte avec les réglages suivants :

Préparer le fichier sous inkscape

Le fichier généré est un svg, il faut le nettoyer de la boite qui contient le "100mm" ainsi que des caractères qui se trouvent à l'intérieur. On enregistre en svg.

Importer sa boîte sous Freecad

Pour importer sa boîte sous freecad, on fait Ctrl+i ou fichier/importer puis on choisit le fichier et on répond "svg as géometry".
Les contours des boîtes apparaissent alors dans l'arborescence sous forme de "pathXXXXX". Il faut maintenant extruder chacune de ces formes : sélectionnez les et sous l'atelier "part" choisissez l'option extruder. Vous réglez 3mm dans la boîte de dialogue.

Importer une modélisation de raspberryPi0

Vous trouverez facilement des modélisations déjà prêtes de raspberryPi0 notamment sur des sites comme grabCAD. Téléchargez des .step ou des .igs / .iges et importez les dan svotre projet. De même pour le bouton. Si vous galérez on en a intégré dans le fichier de construction freecad du projet.

Assembler et trouer sa boîte

Il faut maintenant déplacer toutes les parois extrudées de sa boîte et les positionner les unes par rapport aux autres de façon à ce qu'elles s'emboîtent.
Ensuite, il faut trouer les parois(voir l'image ci-dessous)... section incomplète.

Emplacements approximatifs des trous sur la boîte.
Les trous ne sont pas aux dimensions réelles!

Créer et intégrer le bouton OFF

Exporter les fichiers de fabrication

Sous l'atelier "draft" créer une coupe pour chaque paroi de sa boîte, puis positionner cette coupe sur le XY et l'exporter en "flattened SVG"

Customiser sa boîte

sous inkscape sur les svg exportés précedemment.

Découpe laser de la boîte

Peinture du mdf 3mm

Impression 3D des bouchons

Implémentation du bouton OFF

Nous allons maintenant rajouter le bouton off en suivant cet excellent exemple https://forum.piratebox.cc/read.php?7,21068,22402#msg-22402
C'est du bash :)

programmation

Créez le fichier pour le script

sudo nano /home/alarm/buttononoff

collez le code suivant :

#!/bin/bash
pin=25
gpio mode $pin in
gpio mode $pin up
while true; do
 var=$(gpio read $pin)
 if [ "$var" -eq "0" ] ; then
  echo shutdown
  sudo shutdown -h now
 fi
sleep 0.1
done

ctrl+o pour enregistrer vos modifications
ctrl+x pour quitter
y pour sauver

attention la pin 25 dans la librairie utilisé wiringPi ,ne correspond pas toujours.
Il faut donc vérifier grâce a l'image en dessous et corriger si besoin.(ce sont les chiffres en bleu qui nous intéresses)

https://external-content.duckduckgo.com/iu/?u=http%3A%2F%2Fwww.didacticaselectronicas.com%2Fimages%2Fstories%2Fvirtuemart%2Fproduct%2FRASPBERRY-ZERO-W_0.png&f=1&nofb=1

rendre le script exécutable :

sudo chmod +x buttononoff

créez un service pour le script, comme ça il démarrera à chaque boot :

sudo nano /lib/systemd/system/button.service

collez le code suivant :

[Unit]
Description=Button Service
After=multi-user.target

[Service]
Type=idle
ExecStart=/home/alarm/buttononoff
StandardOutput=null

[Install]
WantedBy=multi-user.target
Alias=button.service

donnez les droits au fichier et activez le service :

sudo chmod 644 /lib/systemd/system/button.service
sudo systemctl daemon-reload
sudo systemctl enable button.service

enfin rebootez!

sudo reboot

Programmation de la LED

petit exercice pour les plus courageux : rajoutez dans le script que la led serve d'indicateur de fonctionnement de la piratebox. Par exemple, LED clignotante lorsque la piratebox démarre, allumée quand le service est up et clignotante quand elle est en cours d'extinction. Pire encore un petit sos ... _ _ _ ... en cas de problème :)