Utilisateur:Zoé Feltesse

De Design numérique
Aller à : navigation, rechercher

La mémoire qui se détruit

Pour plusieurs projets je travaille sur la mémoire, les archives qui se détruisent ou simplement la disparition de souvenirs, les trous de mémoires qui sont lié à l'existence. J'ai eu premièrement beaucoup de mal à relié ce sujet avec le terminal car je voulais travailler sur quelque chose d'humain.J'ai alors décidé de me concentrer sur un poème.

Rien n'aura eu lieu que le lieu

M'inspirant du poème de Stephane Mallarmé "Un coup de dés jamais n'abolira le hasard", je travaille en particulier sur la citation, "Rien n'aura eu lieu que le lieu, excepté peut être une constellation". Tout en étant poétique ce n'en est pas moins une réalité. Il ne restera rien, aucune mémoire ne sera sauvegardée, un jour il y aura le retour du néant.

J'ai donc travaillé avec le poème de Mallarmé en le réorganisant à l'aide du terminal, je l'ai trituré en quelques sorte, j'en ai fait des listing, je l'ai recomposé pour voir ce que je pouvais en sortir. D'autant plus que ce poème à une forme graphique trés particulière et je voulais voir ce que le terminal pourrait en faire.

cat texte.txt | tr " " "\n" | sort | uniq | gshuf | tr "\n" " " | cut -c-1500 > poèmealéatoire.txt

/!\ pour que la commande gshuf (shuf pour windows) fonctionne, j'ai du installer brew pour installer pouvoir installer coreutils:
1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. brew install coreutils

poème aléatoire

commande tr -d et sed not working

Étant donné que la librairie de mon imprimante ne prend pas en compte les accents j'ai essayé de créer un text sans accent. J'ai donc utilisé la commande "sed" ou encore "tr -d" ("tr --delete" pour les windows) mais sans succès.
La commande sed me créé un fichier vide et la commande tr -d m'indique la fonctionnalité de tr -d et tr -s sans me créer de fichier.

Imprimante Thermique / Raspberry

Imprimante Thermique et Rpi connecté

Je souhaite imprimer ce nouveau poème recomposé sur une imprimante thermique adafruit, Thermal print adafruitqui est connectée à un Raspberry 3B+, je dois donc connecter le raspberry à mon ordinateur par le terminal. Je dois d'abord trouvé l'adresse IP de mon raspberry. Je dois la trouver grâce à un programme "Nmap". Ensuite je peux commencer à créer un code en python pour communiquer avec le raspberry et ainsi la machine.

Pour le moment c'est un échec. Je ne parviens toujours pas à trouver l'adresse IP de mon rpi. -> RÉSOLU

Echec adresse IP .png

Comment trouver l'adresse IP de mon rpi: commande ping [nomduraspberry].local, finalement le programme Nmap ne m'a servit à rien.

Cheat Sheet: ping raspizoe.local ssh pi@192.168.2.2 (dépend du résultat trouvé par la commande ping) cd Python-Thermal-Printer python text.py (ls /dev (si problème d'impression vérification que les pipes soient bien actives) sudo shutdown now ou sudo reboot now

Ensuite il a fallu installé le langage python sur le rpi pour pouvoir installer la bibliothèque de l'imprimante. sudo apt-get install python3-picamera git clone https://github.com/adafruit/Python-Thermal-Printer

Enfin il ne fallait plus que fair le print test pour voir si l'imprimante fonctionnait bien! Ça ne s'est pas révélé aussi simple. Nous nous sommes rendu compte que l'imprimante et le rpi n'étaient pas connecté, ce qui pose un soucis obviously.

Alors on déconnecte, on reconnecte, on cherche le problème et on le trouve! La bibliothèque est connectée à un GPIO qui n'est pas "allumé" le serial 0. Alors on a essayé de reboot le rpi pour voir si le serial 0 apparait, je crois qu'on a du le faire 3 fois avant de le voir apparaitre.

Ls -dev serial0 inexistant.png


Si ça ne fonctionne pas -> sudo raspi-config
Select option 5, Interfacing options, then option P6, Serial, "Would you like a login shell to be accessible over serial?" = NO
"Would you like the serial port hardware to be enabled?" = YES
-> Reboot Now = YES.
Exit raspi-config.

Pour envoyer des fichiers de son ordinateurs au rpi j'utilise FileZilla, j'ai utilisé ce tutoriel pour configurer mon rpi. Acceder au raspberry via un FTP

J'ai créé un dossier en python sur atom, mais je n'arrive actuellement pas à le faire passer dans les documents de mon rpi. Voici ce que les commandes m'envoient lorsque j'essaie de transferer un fichier.

Erreur de transfert .png

Statut : Connecté
Statut : Démarrage de l'envoi de /Users/zoefeltesse/Desktop/new.py
Commande : CWD /home/pi/Python-Thermal-Printer/Python-Thermal-Printer
Réponse : 250 Directory successfully changed.
Commande : TYPE A
Réponse : 200 Switching to ASCII mode.
Commande : PASV
Réponse : 227 Entering Passive Mode (192,168,2,2,82,133).
Commande : STOR new.py
Réponse : 550 Permission denied.
Erreur : Erreur critique lors du transfert du fichier

RÉSOLU -> C'était donc un problème d'accès et de propriété. Avec Lionel on a vérifié la configuration du programme autorisait d'entrer un fichier dans FileZilla. sudo nano /etc/vsftpd.conf -> write = YES

Après reconfiguration totale du mon RPI je n'arrivais pas à me connecter à mon FTP. PROBLÈME RÉSOLU -> Voir dans Gestionnaire de Site si le protocole est bien en SSH (car le RPI fonctionne en SSH).

Python

Le dossier Atom que j'ai créé est composé ainsi: from Adafruit_Thermal import *
from PIL import Image

printer = Adafruit_Thermal("/dev/serial0", 19200, timeout=5)
printer.println('Rien n aura eu lieu que le lieu')
printer.feed(2)
printer.sleep()
printer.wake()
printer.setDefault()

Final test avant la cotation

J'ai toujours un problème que je n'arrive pas à résoudre, étant donné que la bibliothèque a été créée par des anglophones il n'y a pas d'accent dessus et je n'ai pas encore trouvé de solution pour corriger cela.

Je dois donc composer mes textes sans accent manuellement (voir problème de code en cat). Pour voir si mon imprimante fonctionnait bien avec des longs textes j'ai décidé de trouver le poème de Mallarmé en Anglais "A throw of dice". Je l'ai traité le texte de la même manière que les précédent, et en effet il fonctionne tout à fait correctement! C'est donc bien les accents qui posent problème dans la librairie.

Imprimer une image

from Adafruit_Thermal import *
from PIL import Image, ImageDraw

printer = Adafruit_Thermal("/dev/serial0", 19200, timeout=5)
printer.println("""texte""")

ImageSizeX = 384.0
img = Image.open("/home/pi/Python-Thermal-Printer/nom de l'image.png")

--->Pour que l'image soit à la taille du papier (384px)<---

width, height = img.size
width, height = img.size
coef = width/imgSizeX

imgSizeY = height/coef

newImg = Image.new ('RGBA', (int(imgSizeX), int(imgSizeY)))
d = ImageDraw.Draw(newImg)

b = img.resize ((int(imgSizeX), int(imgSizeY)), Image.ANTIALIAS)
newImg.paste (b,(0,0))

printer.printImage (newImg, True)

printer.feed(2) printer.sleep() printer.wake() printer.setDefault()

Accents

https://www.utf8-chartable.de/unicode-utf8-table.pl?fbclid=IwAR3jvSBDEg3hQCefa38n2xppjalZvAb7W92i6_550P0Lh4fFlFGPm5-s2Rg https://cdn-shop.adafruit.com/datasheets/A2-user+manual.pdf?fbclid=IwAR371h9-vKWt4Qu6QK4Fa38ztmXQ1I7CoGsc94Abn9DBW-FUXwBQkZuCAEo

On remarque que la machine n'est pas en UTF-8 et c'est pour cela qu'elle ne gère pas les accents connus en français. J'ai donc remplacé tous les code UTF-8 par ceux de la machine.
Ici fichier de table de UTF-8 :
https://www.utf8-chartable.de/unicode-utf8-table.pl?fbclid=IwAR2qpzKkV8fT8K10Lov0__JNSRXn9BqydQ5XUomzMH8YLVH2QpD6aYCpkR8

printer.setCharset(1)

def accents(x):
x = x.replace('é', '\x82').replace('é', 'x9A')
x = x.replace('è', '\x8A').replace('è', 'x8a')
x = x.replace('ê', '\x88').replace('ê', 'xaa')
x = x.replace('ë', '\x89').replace('ë', 'xba')
x = x.replace('ä', '\x84').replace('ä', 'x4a')
x = x.replace('à', '\x85').replace('à', 'x1a')
x = x.replace('â', '\x83').replace('â', 'x2a')
x = x.replace('æ', '\x91').replace('æ', 'x6a')
x = x.replace('ç', '\x87').replace('ç', 'x7a')
x = x.replace('ï', '\x8B').replace('ï', 'xfa')
x = x.replace('î', '\x8C').replace('î', 'xea')
x = x.replace('ô', '\x93').replace('ô', 'x4b')
x = x.replace('ö', '\x94').replace('ö', 'x6b')
x = x.replace('ù', '\x79').replace('ù', 'xab')
x = x.replace('û', '\x96').replace('û', 'xbb')
x = x.replace('ü', '\x81').replace('ü', 'xcb')
x = x.replace('ÿ', '\x98').replace('ÿ', 'xfb')
x = x.replace('É', '\xD4').replace('É', 'x98')
x = x.replace('È', '\x98').replace('È', 'x88')
x = x.replace('À', '\xB7').replace('À', 'x08')
x = x.replace('Ù', '\xEB').replace('Ù', 'x99')
x = x.replace('Æ', '\xEB').replace('Æ', 'x68')
x = x.replace('Â', '\xB6').replace('Â', 'x28')
x = x.replace('Ä', '\x8E').replace('Ä', 'x48')
x = x.replace('Ê', '\xD2').replace('Ê', 'xa8')
x = x.replace('Î', '\xD7').replace('Î', 'xe8')
x = x.replace('Ï', '\xD8').replace('Ï', 'xf8')
x = x.replace('Ô', '\xE2').replace('Ô', 'x49')
x = x.replace('Û', '\xEA').replace('Û', 'xb9')
x = x.replace('Ü', '\x9A').replace('Ü', 'xc9')
x = x.replace('Ö', '\x99').replace('Ö', 'x69')
return x