Utilisateur:Zoé Feltesse : Différence entre versions
(4 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 35 : | Ligne 35 : | ||
Cheat Sheet: | Cheat Sheet: | ||
− | ping | + | ping raspizoe.local |
ssh pi@192.168.2.2 (dépend du résultat trouvé par la commande ping) | ssh pi@192.168.2.2 (dépend du résultat trouvé par la commande ping) | ||
cd Python-Thermal-Printer | cd Python-Thermal-Printer | ||
Ligne 50 : | Ligne 50 : | ||
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. | 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. | ||
− | [[Fichier:Ls -dev serial0 inexistant.png|vignette]] | + | [[Fichier:Ls -dev serial0 inexistant.png|vignette]] <br> |
+ | Si ça ne fonctionne pas -> sudo raspi-config <br> | ||
+ | Select option 5, Interfacing options, then option P6, Serial, "Would you like a login shell to be accessible over serial?" = NO <br> | ||
+ | "Would you like the serial port hardware to be enabled?" = YES <br> | ||
+ | -> Reboot Now = YES. <br> | ||
+ | Exit raspi-config. | ||
Pour envoyer des fichiers de son ordinateurs au rpi j'utilise FileZilla, j'ai utilisé ce tutoriel pour configurer mon rpi. [https://angristan.fr/acceder-raspberry-pi-via-ftp/ Acceder au raspberry via un FTP] | Pour envoyer des fichiers de son ordinateurs au rpi j'utilise FileZilla, j'ai utilisé ce tutoriel pour configurer mon rpi. [https://angristan.fr/acceder-raspberry-pi-via-ftp/ Acceder au raspberry via un FTP] | ||
Ligne 72 : | Ligne 77 : | ||
Avec Lionel on a vérifié la configuration du programme autorisait d'entrer un fichier dans FileZilla. | Avec Lionel on a vérifié la configuration du programme autorisait d'entrer un fichier dans FileZilla. | ||
sudo nano /etc/vsftpd.conf -> write = YES | 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== | ==Python== | ||
Ligne 129 : | Ligne 136 : | ||
https://cdn-shop.adafruit.com/datasheets/A2-user+manual.pdf?fbclid=IwAR371h9-vKWt4Qu6QK4Fa38ztmXQ1I7CoGsc94Abn9DBW-FUXwBQkZuCAEo | 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. | + | 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. <br> |
+ | Ici fichier de table de UTF-8 : <br> | ||
+ | https://www.utf8-chartable.de/unicode-utf8-table.pl?fbclid=IwAR2qpzKkV8fT8K10Lov0__JNSRXn9BqydQ5XUomzMH8YLVH2QpD6aYCpkR8 | ||
printer.setCharset(1) | printer.setCharset(1) | ||
− | def accents(x): | + | def accents(x):<br> |
x = x.replace('é', '\x82').replace('é', 'x9A')<br> | x = x.replace('é', '\x82').replace('é', 'x9A')<br> | ||
x = x.replace('è', '\x8A').replace('è', 'x8a')<br> | x = x.replace('è', '\x8A').replace('è', 'x8a')<br> | ||
Ligne 165 : | Ligne 174 : | ||
x = x.replace('Ü', '\x9A').replace('Ü', 'xc9')<br> | x = x.replace('Ü', '\x9A').replace('Ü', 'xc9')<br> | ||
x = x.replace('Ö', '\x99').replace('Ö', 'x69')<br> | x = x.replace('Ö', '\x99').replace('Ö', 'x69')<br> | ||
− | return x | + | return x |
Version actuelle datée du 9 décembre 2019 à 21:48
Sommaire
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
É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
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
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.
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.
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()
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