772 views
# G1Tx: Transactions sans contact ## Terminal léger G1Tx est destiné à réaliser des transactions sans contact entre 2 coffres ZEN / Ḡ1. Il fonctionne en reconnaissant des QR Codes. Par camera et reconnaissance visuelle (OpenCV) ou scanner USB. Il permet d'indiquer le destinataire, saisir et vérifier le montant à transférer puis déclencher la transaction entre les coffres identifiés. Avec OpenCV, on peut envisager utiliser en plus des QRCode, la reconnaissance de signes, d'objets ou de visages... N'importe quel identifant unique en fait ([le cas du morceau de musique](https://www.copylaradio.com/blog/blog-1/post/jukebox-interplanetaire-9)). Mix entre le [Polar01d](https://wikifab.org/wiki/Polar01d) et [G1sms](https://www.g1sms.fr/) une bonne partie du code est déjà disponible. Il sera raccordé et synchronisé avec [l'essaim de noeuds IPFS [G1sms+]](https://pad.p2p.legal/s/G1sms-install). ### Ingrédients du prototype * Clavier numérique ( £2.92 ) https://shop.pimoroni.com/products/keypad-12-button-1 * ~~Ecran: Inky pHAT ( £18.75 )~~ https://shop.pimoroni.com/products/inky-phat TROP LENT A RAFFRAICHIR, IL A ETE RECYCLE EN https://pwnagotchi.ai/ * Ecran: Four Letter pHAT ( €12,60 ) https://shop.pimoroni.com/products/four-letter-phat * Raspberry Pi Zero WH ( £21.70 ) https://shop.pimoroni.com/products/raspberry-pi-zero-wh-with-pre-soldered-header * ~~Camera Module for Raspberry Pi Zero ( £11.67 )~~ https://shop.pimoroni.com/products/raspberry-pi-zero-camera-module?variant=37751082058 ON PEUT UTILISER UNE CAMERA POUR LIRE LES QR CODE MAIS UN SCANNER MANUEL EST PLUS SIMPLE ET PEU COUTEUX... ### COMPOSANTS ET CABLAGE #### ECRAN INKY ![](https://i.imgur.com/jK5Nesf.png) L'écran pour fonctionner utilise les ports 8, 10, 11, 17, 22, 27 (https://pinout.xyz/pinout/inky_phat#) https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-inky-phat Code: https://github.com/pimoroni/inky #### FOUR LETTER PHAT ![](https://pinout.xyz/resources/boards/fourletter-phat.png) L'écran pour fonctionner utilise les ports 2 et 3 https://pinout.xyz/pinout/four_letter_phat# Code: https://github.com/pimoroni/fourletter-phat #### CLAVIER ![](https://i.imgur.com/CEyJ3br.jpg) Le clavier a besoin de 7 ports GPIO. On adaptera ceux utilisés dans ce document (4, ~~17~~, 18, ~~22~~, 23, 24, 25) pour éviter les conflits (https://www.securipi.co.uk/keypad.pdf) On gardera les mêmes branchements pour les lignes, et nous utiliserons d'autre ports GPIO pour les colonnes class keypad(): # CONSTANTS KEYPAD = [ [1,2,3], [4,5,6], [7,8,9], ["*",0,"#"] ] ROW = [18,23,24,25] COLUMN = [5,6,13] #### CAMERA Elle comporte une petite nappe avec les composants soudés dessus. Il va falloir trouver un boitier pour ranger tout ça... ![](https://i.imgur.com/XjcUVKV.jpg) ### Install Raspbian Stretch Lite + OpenCV3 1. Téléchargez "[Raspbian Stretch Lite](https://www.raspberrypi.org/downloads/raspbian/)" et flashez l'image sur une carte microSD ([de qualité!](https://www.amazon.fr/dp/B073JYC4XM?tag=z0d-21)) 2. Installez Raspbian ([comment faire sur un RaspberryPi Zero sans écran?](https://projetsdiy.fr/comment-installer-raspbian-raspberry-pi-zero-sans-ecran-clavier/)). 3. # ADD amrhf OPENCV3 repository echo 'deb [trusted=yes] http://dl.bintray.com/yoursunny/PiZero stretch-backports main' |\ sudo tee /etc/apt/sources.list.d/bintray-yoursunny-PiZero.list # Install system apps sudo apt update sudo apt upgrade sudo apt install wiringpi python3-pip git imagemagick libzbar0 python-zbar python3-lxml jq sudo apt install python3-opencv # OLD STYLE: curl https://get.pimoroni.com/inkyphat | bash sudo pip install font_fredoka_one font_intuitive font_hanken_grotesk sudo pip install requests geocoder beautifulsoup4 sudo pip3 install inky pyzbar sudo pip install inky # Activate GPIO & Camera sudo raspi-config # Activer les ports Camera, SPI et I2C # REBOOT !! sudo -s # Silkaj apt install libssl-dev libffi-dev pip3 install silkaj # Duniterpy apt install libsodium-dev pip3 install duniterpy ### Capturer et afficher une image sur InkyPHAT **nano inky_display.py** from inky import InkyPHAT from PIL import Image, ImageFont, ImageDraw inky_display = InkyPHAT("yellow") inky_display.set_border(inky_display.WHITE) img = Image.open("/home/pi/result.png") inky_display.set_image(img) inky_display.show() Test de prise de vue et affichage: raspistill -n -th none -t 50 -fli auto -br 80 -co 80 -w 212 -h 104 -o ./photo.png -e png && convert photo.png -colors 3 PNG8:result.png && python inky_display.py raspistill -n -th none -h 212 -w 104 -o ./photo.png -e png && convert photo.png -rotate 90 -colors 3 -treedepth 3 -dither FloydSteinberg +remap PNG8:result.png && python inky_display.py ## Reconnaissance de QRCode sudo pip3 install inky pyzbar ## IPFS Les noeuds pourront synchroniser leurs données dans un essaim IPFS. Les développements ont été testés avec ipfs, ipfs-cluster, il faut maintenant utiliser [**textile**](https://docs.textile.io/connectors/games/) pour gérer portefeuilles comme comptes, wallets, threads... # ARRET DU PROJET (07/2019) Le développement de G1Tx aura permis de constater la trop grande lenteur de l'affichage eInk (+10s de raffarichissement!!) qui ne permet pas d'interaction correcte avec l'utilisateur. Il apparait que l'association d'un [RPi 3B+](https://www.amazon.fr/gp/product/B07BDR5PDW?tag=z0d-21), d'une [Rpi Camera](https://www.amazon.fr/gp/product/B01ER2SKFS?tag=z0d-21) et d'un [Ecran tactile](https://www.amazon.fr/gp/product/B07M8QFKHK?tag=z0d-21) permettra de gérer l'affichage et le clavier de façon plus agréable. En cet été 2019, je n'ai pas les moyens d'investir pour fabriquer un environnement de test/prod nécessaire pour continuer dans de bonnes conditions... Nous verrons comment les choses évolueront... # REPRISE DU PROJET (12/2019) G1Tx v0.1 réalisé avec le [FOUR-LETTER-PHAT](#FOUR-LETTER-PHAT) https://www.youtube.com/watch?v=hr9PGw8vqa8&t=20s