Exemple de clavier pris au pif sur le net (ici un clavier apple)
Pourquoi sont-elles disposées en quinconce ?
Le célèbre clavier «clic» d’IBM
Vu l’âge du concept de clavier qui remonte à la fin XIXème début XXème, on pourrait se dire que c’est bien étudié. Qu’on a atteint la perfection niveau optimisation des touches pour le confort de frappes.
Vous noterez que ça n’a rien à voir avec la langue, c’est toujours en quinconce !
Hein, n’est-ce pas ?
Et bien non, cette stupide disposition des touches nous vient des machines à écrire mécaniques. En effet, si on veut garder droite la tige reliant le marteau à la touche, il est nécessaire de décaler les rangées. Si on avait voulu aligner les touches il aurait fallu tordre ces tiges à chaque rangée. Ce qui aurait sans doute été faisable, mais aurait affaibli la mécanique et complexifié la fabrication.
Les touches doivent être décalées à chaque rangée pour garder les tiges droites
Cette disposition, qui était bien commode pour les machines à écrire mécanique, a été gardée pour le passage à l’électrique. Alors qu’il n’y avait aucune raison de rester comme ça. Et l’habitude a été gardé sur les claviers d’ordinateur.
Pourtant, non seulement ça n’est pas ergonomique, mais en plus ça n’est pas optimum pour le placement des touches. On met moins de touches dans une même surface avec un clavier quinconce. Pour les appareils portable c’est une très mauvaise idée…
Tiens c’est marrant, quand il a fallu rajouter un pavé numérique les concepteurs n’ont pas poussé le masochisme jusqu’à les mettre en quinconce 🙂
Malgré ça, il n’existe pas d’ordinateur portable avec un clavier orthogonale (ortholinear). Tous ont gardé cette antique disposition anti-ergonomique et complexe à mettre en œuvre en production …
Est-ce que l’alignement des rangées révolutionnerait les habitudes des utilisateurs ?
Non.
Est-ce que ça implique un surcoût en fabrication ?
Non.
Est-ce qu’on y perd en utilisabilité ?
Non. Au contraire !
Est-ce qu’on y perd en compatibilité ?
Bin non un clavier orthogonale pourrait être exactement identique à un clavier «quinconce» d’un point de vue électronique.
Alors pourquoi on trouve pas de p#*$! de clavier orthogonal sur le marché bordel ?
Il n’est pas tout à fait vrai de dire qu’on n’en trouve pas. Il en existe très peu et très cher. Voici une petite liste :
Typematrix: C’est celui que j’utilise personnellement. Il est cher ($110) et un peu fragile. J’ai du en racheter quelques uns pour ne pas tomber en rade. Pour le confort d’utilisation par contre il est bien. Pour la compatibilité je n’ai pas de problème, mais ça n’est pas tout à fait un clavier standard.
Thingiverse: Lui l’a bricolé en reprenant les touches d’un clavier standard pour les aligner.
Ergodox: celui là est orthogonal en colonnes, mais les lignes ont été changées pour s’adapter aux mains. Cependant on est pas du tout dans le low cost (J’ai acheté le miens plus de 200€) et la compatibilité n’est pas géniale dans la mesure où il faut se coltiner un programme de configuration. Perso j’ai du mal avec certaines touches de fonctions.
Plank: Là on n’est plus dans le clavier classique, et il y a une phase d’apprentissage. Mais ça semble intéressant, l’idée est de virer 60% des touches d’un clavier classique pour se concentrer sur l’essentiel et réduire la taille du clavier sans perdre en fonctionnalités.
Atomic Keyboard: Je crois qu’il n’est plus possible de le trouver en commande sur le web celui là.
Tous ces exemples sont réservés à une élite (dont moi bien sûr:). Mais pourquoi aucun constructeurs n’osent simplement sortir un clavier classique à 20€ en alignant les touches ?
Il n’y aurait rien à changer. Et je suis convaincu que même l’utilisateur moyen ne serait pas contre. Ça ne changerait pas fondamentalement son expérience.
J’ai peut être trouvé le clavier orthogonal à moins de 40€ avec ce clavier USB pour enfant :
Clavier orthogonal à 34€ chez LDLC : Le Accuratus Monster 2
On le trouve décliné pour vieux et pour handicapés sur le site LDLC pour 34€. Les frais de ports sont un peu élevé par contre, mais ça reste moins cher que amazon.
Le site de vente en ligne nommé Sos Ordi & Consoles vend des pièces détachées de différentes consoles rétro.
J’y ai commandé des connecteurs de manettes super nes à souder le 9 novembre 2019. Et depuis, je n’ai aucune nouvelles … impossible de les appeler puisqu’il n’y a pas de numéro de téléphone. L’adresse donnée sur la page des mentions légales est celle de l’hébergeur 1&1.
Et le mail de contact ne donne évidement aucune réponse …
Pourtant le payement fonctionne puisque j’ai été débité de la facture !
Si quelqu’un a des infos sur ce site ?
[Edit]
Je n’ai toujours pas réussi à contacter quelqu’un, par contre j’ai pu obtenir l’adresse postale via les coordonnées de payement :
4 lieu dit Coulin, 33690 Lavazan
Les mentions légales parle d’un certain Stéphane Bernier pourtant l’adresse semble correspondre à un dénommé Jérome Laurent. Personne qui semble avoir ouvert plusieurs entreprises fermées aujourd’hui.
L’adresse postale semble correspondre également à une entreprise nommée Studio-Sha creation. Une entreprise de création de site internet, mais que les mentions légales situe hors de France (à HongKong).
Faire attention également : le site enregistre votre carte bleue ! J’ai voulu faire une nouvelle simulation d’achat (câble HDMI) et la commande est partie.
[Edit2 (9 décembre 2019)]
À force de râler sur tous les canaux possibles que j’ai pu trouver, il y a eu une modification de ma commande sur mon «compte» disant qu’ils m’envoient la commande … il y a une semaine et demi. Et je n’ai toujours rien reçu.
Et toujours personne pour répondre à leur mail de contact.
[Edit3 (6 janvier 2020)]
Je viens de recevoir les commandes passées. Les connecteurs ainsi que la seconde commande dont j’avais demandé l’annulation et le remboursement.
Mon adresse est écrite à la main avec des ronds sur les i … Et la facture comporte tout un tas de fôtes de participe passé. Bref, visiblement ce site est une coquille vide très mal maintenu par une personne unique.
Trois mois pour être livré (alors que le site annonce fièrement 48h) et toujours personne pour répondre à leur mail de contact.
Je viens de recevoir mon kit, voici donc une petite description du déballage du kit basé sur un microcontrôleur RISC-V GD32VF nommé Longan Nano.
Le kit est tout petit mais comporte quand même une LED tricolore, un écran LCD, des boutons, …
Pour accéder à l’usb (mode DFU) il faut laisser le bouton boot0 appuyé tout en branchant le kit. On obtient le message suivant :
$ dmesg
[896404.667425] usb 3-2: new full-speed USB device number 59 using xhci_hcd
[896404.808892] usb 3-2: New USB device found, idVendor=28e9, idProduct=0189
[896404.808895] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[896404.808896] usb 3-2: Product: GD32 0x418 DFU Bootloade
[896404.808897] usb 3-2: Manufacturer: GDMicroelectronics
[896404.808898] usb 3-2: SerialNumber: 䌳䩂
Il faut donc commencer par installer les outils Microsoft qui, à ma grande surprise, fonctionnent très bien sur debian (64bits) ! Ça me vexe un peu d’ailleurs, mais passons.
Visual Studio se lance simplement avec la commande code (pas du tout prétentieux):
$ code
Pour installer le greffon platformio (pio pour les intimes) il faut faire une recherche dans les extensions et installer PlatformIO IDE. Et patienter un peu (1 à 2 minutes chez moi).
Pour configurer le bouzin pour la Longan Nano il suffit d’ouvrir une console dans l’outils (symbole platformio fourmi -> quick access -> New Terminal) puis de lancer la commande :
$ platformio platform install gd32v
PlatformManager: Installing gd32v
gd32v @ 1.1.0 has been successfully installed!
PackageManager: Installing toolchain-gd32v @ ~9.2.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
toolchain-gd32v @ 9.2.0 has been successfully installed!
The platform 'gd32v' has been successfully installed!
The rest of packages will be installed automatically depending on your build environment.
Perso j’ai plutôt pris la version «à jour» github :
$ platformio platform install https://github.com/sipeed/platform-gd32vLangage du code :JavaScript(javascript)
Un guide est donné également pour faire clignoter la LED en rouge. Il faut néanmoins faire quelques modifications pour le téléchargement du programme dans le micro comme nous allons le voir.
(Re-)Démarrer le kit en mode «bootstrap» en le branchant à l’USB du pc tout en restant appuyé sur le bouton «boot0». Une fois branché vous avez l’autorisation de lâcher le bouton 😉 Constater que le kit est bien présent sur l’usb :
$ sudo dfu-util -l dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
$ sudo dfu-util -l
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Found DFU: [28e9:0189] ver=1000, devnum=62, cfg=1, intf=0, path="3-1", alt=1, name="@Option Bytes /0x1FFFF800/01016 g", serial="??" Found DFU: [28e9:0189] ver=1000, devnum=62, cfg=1, intf=0, path="3-1", alt=0, name="@Internal Flash /0x08000000/512002Kg", serial="??"Langage du code :JavaScript(javascript)
Compiler (le minuscule symbole de check en V en bas à gauche)
Télécharger (le minuscule symbole flèche juste à coté du minuscule symbole de compile)
> Executing task: platformio run --target upload <
Processingsipeed-longan-nano (platform:gd32v; framework:gd32vf103-sdk; board:sipeed-longan-nano)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------PackageManager:Installingtool-openocd-gd32v @ ~0.1.1Downloading [####################################] 100%
tool-openocd-gd32v @ 0.1.1hasbeensuccessfullyinstalled!
PackageManager:Installingtool-gd32vflash @ ~0.1.0tool-gd32vflash @ 0.1.0hasbeensuccessfullyinstalled!
Verbosemodecanbeenabledvia `-v, --verbose` optionCONFIGURATION:https://docs.platformio.org/page/boards/gd32v/sipeed-longan-nano.htmlPLATFORM:GigaDeviceGD32V1.1.0 > Sipeed Longan Nano
HARDWARE: GD32VF103CBT6 108MHz, 32KB RAM, 128KB Flash
DEBUG: Current (altera-usb-blaster) External (altera-usb-blaster, gd-link, jlink, rv-link, sipeed-rv-debugger, um232h)
PACKAGES: tool-openocd-gd32v 0.1.1, framework-gd32vf103-sdk 1.0.0, tool-gd32vflash 0.1.0, toolchain-gd32v 9.2.0
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Compiling .pio/build/sipeed-longan-nano/src/main.o
Compiling .pio/build/sipeed-longan-nano/src/systick.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_adc.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_bkp.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_can.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_crc.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_dac.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_dbg.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_dma.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_eclic.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_exmc.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_exti.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_fmc.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_fwdgt.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_gpio.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_i2c.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_pmu.o
/home/fabien/.platformio/packages/framework-gd32vf103-sdk/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c: In function 'i2c_flag_clear':
/home/fabien/.platformio/packages/framework-gd32vf103-sdk/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c:610:14: warning: variable 'temp' set but not used [-Wunused-but-set-variable]
610 | uint32_t temp;
| ^~~~
/home/fabien/.platformio/packages/framework-gd32vf103-sdk/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c: In function 'i2c_interrupt_flag_clear':
/home/fabien/.platformio/packages/framework-gd32vf103-sdk/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c:718:14: warning: variable 'temp' set but not used [-Wunused-but-set-variable]
718 | uint32_t temp;
| ^~~~
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_rcu.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_rtc.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_spi.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_timer.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_usart.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/Source/gd32vf103_wwdgt.o
Compiling .pio/build/sipeed-longan-nano/standard_peripheral/system_gd32vf103.o
Compiling .pio/build/sipeed-longan-nano/RISCV/drivers/n200_func.o
Compiling .pio/build/sipeed-longan-nano/RISCV/env_Eclipse/entry.o
Compiling .pio/build/sipeed-longan-nano/RISCV/env_Eclipse/handlers.o
Compiling .pio/build/sipeed-longan-nano/RISCV/env_Eclipse/init.o
Compiling .pio/build/sipeed-longan-nano/RISCV/env_Eclipse/start.o
Compiling .pio/build/sipeed-longan-nano/RISCV/env_Eclipse/your_printf.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/_exit.o
/home/fabien/.platformio/packages/framework-gd32vf103-sdk/RISCV/env_Eclipse/your_printf.c: In function '__wrap_printf':
/home/fabien/.platformio/packages/framework-gd32vf103-sdk/RISCV/env_Eclipse/your_printf.c:4:1: warning: control reaches end of non-void function [-Wreturn-type]
4 | }
| ^
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/close.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/fstat.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/isatty.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/lseek.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/read.o
Archiving .pio/build/sipeed-longan-nano/libstandard_peripheral.a
Indexing .pio/build/sipeed-longan-nano/libstandard_peripheral.a
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/sbrk.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/write.o
Compiling .pio/build/sipeed-longan-nano/RISCV/stubs/write_hex.o
Archiving .pio/build/sipeed-longan-nano/libRISCV.a
Indexing .pio/build/sipeed-longan-nano/libRISCV.a
Linking .pio/build/sipeed-longan-nano/firmware.elf
Checking size .pio/build/sipeed-longan-nano/firmware.elf
Building .pio/build/sipeed-longan-nano/firmware.bin
Memory Usage -> http://bit.ly/pio-memory-usage
DATA: [= ] 7.0% (used 2310 bytes from 32768 bytes)
PROGRAM: [= ] 5.0% (used 6572 bytes from 131072 bytes)
Configuring upload protocol...
AVAILABLE: altera-usb-blaster, dfu, gd-link, jlink, rv-link, serial, sipeed-rv-debugger, um232h
CURRENT: upload_protocol = dfu
Uploading .pio/build/sipeed-longan-nano/firmware.bin
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Opening DFU capable USB device...
ID 28e9:0189
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
GD32 flash memory access detected
Device model: GD32VF103CB
Memory segment (0x08000000 - 0801ffff)(rew)
Erase size 1024, page count 128
Downloading to address = 0x08000000, size = 6584
Download [ ] 0% 0 bytes
Download [======= ] 31% 2048 bytes
Download [=============== ] 62% 4096 bytes
Download [======================= ] 93% 6144 bytes
Download [=========================] 100% 6584 bytes
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST stateLangage du code :HTML, XML(xml)
Et voilà ! La led clignote en rouge. Pour la passer en vert (par exemple) il faut changer le code de main.c:
/* BUILTIN LED OF LONGAN BOARDS IS PIN PC13
#define LED_PIN GPIO_PIN_13
#define LED_GPIO_PORT GPIOC
#define LED_GPIO_CLK RCU_GPIOC
*//* BUILTIN LED GREEN*/#defineLED_PINBIT(1)
#defineLED_GPIO_PORTGPIOA#defineLED_GPIO_CLKRCU_GPIOALangage du code :CSS(css)
Le pinout de la LED RGB n’apparaît pas sur ce schéma
Sur le site d’aliexpress, j’ai fait l’acquisition d’un analyseur logic sur usb nommé Saleae Logic 16 pchit pchit pas de marque.
Contrairement au marquage, cet appareil n’est pas un Saleae Logic 16 mais une vulgaire copie chinoise «compatible»
Ce billet de blog est là pour garder une prise de notes de mes manip’ avec l’engin.
Le colis comporte :
Le boitier USB Saleae Logic 16
un câble déjà branché avec 16 fils «dupont» de signals et 4 fils «dupont» de masse
un câble USB (violet!) de 1.5m
Le logiciel peut fonctionner sous Linux et est téléchargeable sous la forme d’une archive zip de 27Mo à l’adresse suivante. Pour le manuel c’est par ici.
Pour l’installer il suffit de le dézziper dans le répertoire de son choix. Pour l’instant je n’ai pas trouvé d’autre solution que de le lancer en sudo pour qu’il fonctionne:
$ cd Logic\ 1.2.18\ (64-bit)/ $ sudo ./Logic
Ce qui donne une fenêtre comme ça :
La sonde est détectée au branchement de l’usb :
[14601.025730] usb 1-1.2: new high-speed USB device number 7 using ehci-pci [14601.134110] usb 1-1.2: New USB device found, idVendor=21a9, idProduct=1001 [14601.134113] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mais elle nécessite les droits en écriture sur l’USB. Il faut donc rajouter le fichier udev avec les autorisations diabolique !
Le user guide qui ne semble pas inclure le saleae que j’ai.
Le produit sur le site d’aliexpress, visiblement c’est une copie pirate du vrai saleae Logic 16 (on voit que le marquage à été vulgairement effacé sur l’image du produit).
[Edit 20/03/2021]
En ayant commandé un deuxième j’ai pu m’apercevoir que le marquage à changé sur le boitier:
Electronut LABS propose un petit kit permettant de tester le papier électronique connecté au bluetooth. Le kit est proposé dans une petite boite métallique, la documentation n’est disponible que sur le site officiel.
Le kit papyr sorti de sa boite en métal
L’intérêt de ce genre de kit est de tester le papier électronique, mais comme la carte inclue également un chip Bluetooth nRF52840 de chez nordic. On peut donc faire une pierre deux coups : tester un epaper et le bluetooth.
Test rapide
Pour un test rapide, il faut un téléphone muni d’un OS android et un accès au «store» de google. L’appli est simplement accessible sous le nom «electronut labs». Une fois lancé il nous reste à:
Allumer le kit en insérant la pile et en commutant le bouton sur «batt»
lancer l’application de dessin
Dessiner ce que l’on souhaite (pas évident, l’appli est assez mal foutue)
cliquer sur «send image»
Attendre presque 30 secondes que l’écran change.
L’écran va d’abord clignoté en noir pour dessiner les parties noires
Puis il va clignoter en rouge pour dessiner les parties rouge
On en chie pour dessiner un simple bonhomme 😉
Si l’on éteint le kit (bouton position usb) alors l’image reste, c’est le but recherché.
(Bloc notes éditables au fur et à mesures de mes expérimentations)
La société chinoise SiPeed (le site s’affiche très mal avec firefox chez moi, par contre chromium marche mieux) lançait une campagne de crowdfunding en novembre dernier pour construire un kit de developpement à base de module Kendryte K210 muni d’un double cœurs Risc-V 64bits.
Pour $50 on pouvait acquérir un kit complet muni de :
La carte électronique SiPeed MAIX GO
un réseau de microphones
Un simple micro + HP
Un écran LCD + touchscreen
Une simple caméra
Une carte double caméras stéréo
Une antenne wifi et toute la visserie nécessaire pour faire un boîtier
Voici donc le contenu du colis reçu après deux mois de retard (ce qui n’est pas non plus exceptionnel dans ce genre de campagne de crowdfunding):
Contenu de la boite M1W
Une notice de montage est fournie sous forme de vidéo youtube (encore …).
Le kit completLa carte «mère» et son fameux module SIPEED M1W
À l’allumage on détecte quelques trucs sur le dmesg
$ dmesg
[21758.478583] usb 3-2: new full-speed USB device number 4 using xhci_hcd
[21758.620109] usb 3-2: New USB device found, idVendor=c251, idProduct=f001
[21758.620113] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[21758.620116] usb 3-2: Product: CMSIS-DAP
[21758.620118] usb 3-2: Manufacturer: CMSIS-DAP by ARM
[21758.620119] usb 3-2: SerialNumber: 0001A0000000
[21758.620902] cdc_acm 3-2:1.0: ttyACM0: USB ACM device
[21758.622685] hid-generic 0003:C251:F001.0006: hiddev0,hidraw3: USB HID v1.00 Device [CMSIS-DAP by ARM CMSIS-DAP] on usb-0000:00:14.0-2/input2
Langage du code :PHP(php)
Il est possible de se connecter au port série trouvé et on obtient un message du programme déjà chargé dans le kit :
$ kermit
C-Kermit 9.0.302 OPEN SOURCE:, 20 Aug 2011, for Linux+SSL+KRB5 (64-bit)
Copyright (C) 1985, 2011,
Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/home/fabien/) C-Kermit>c
Connecting to /dev/ttyACM0, speed 115200
Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
__ __ _____ __ __ _____ __ __
| \/ | /\ |_ _| \ \ / / | __ \ \ \ / /
| \ / | / \ | | \ V / | |__) | \ \_/ /
| |\/| | / /\ \ | | > < | ___/ \ /
| | | | / ____ \ _| |_ / . \ | | | |
|_| |_| /_/ \_\ |_____| /_/ \_\ |_| |_|
Official Site:http://www.sipeed.com/
Wiki:http://maixpy.sipeed.com/
[MAIXPY]Pll0:freq:320666666
[MAIXPY]Pll1:freq:159714285
[MAIXPY]Flash:0xc8:0x17
[MAIXPY]:Spiffs Mount successful
[MAIXPY]LCD:init
MicroPython 3b5c45649-dirty on 2018-11-15; Sipeed_M1 with kendryte-k210
Type "help()"for more information.
>>>
Langage du code :PHP(php)
Par contre, pour le moment, impossible d’écrire quoi que ce soit sur la console avec kermit. Michael Wilkinson donne quelques indices quand à ce problème dans les commentaires d’indiegogo :
«Michael Wilkinson 6 days ago
I’ve received my ALL IN ONE as well today. Quick tip: If you are having trouble connecting to the REPL out of box over serial, make sure you are using 115200 baud and hardware flow control or you’ll get nothing. From the schematic it appears that DTR and RTS are wired to BOOT and RST and so must be actively controlled. Might only be a thing on the MAIX GO boards which have a dedicated STM32 JTAG/UART bridge chip on them.»
Visiblement il suffirait d’activer le contrôle de flux pour que ça puisse marcher correctement.
Sentry donne une solution sur le forum sipeed. En utilisant un petit script python qui appel miniterm en désactivant les ligne dtr et rts on arrive à se logger correctement sur la carte.
import serial.tools.miniterm as MTM
MTM.main(default_port='/dev/ttyACM0',
default_baudrate=115200,
default_dtr=False,
default_rts=False)
Langage du code :PHP(php)
Le script se lance ensuite simplement avec python (2.7 chez moi) :
$ python sipeedcom.py
--- forcing DTR inactive
--- forcing RTS inactive
--- Miniterm on /dev/ttyACM0 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
__ __ _____ __ __ _____ __ __
| \/ | /\ |_ _| \ \ / / | __ \ \ \ / /
| \ / | / \ | | \ V / | |__) | \ \_/ /
| |\/| | / /\ \ | | > < | ___/ \ /
| | | | / ____ \ _| |_ / . \ | | | |
|_| |_| /_/ \_\ |_____| /_/ \_\ |_| |_|
OfficialSite:http://www.sipeed.com/
Wiki:http://maixpy.sipeed.com/
[MAIXPY]Pll0:freq:320666666
[MAIXPY]Pll1:freq:159714285
[MAIXPY]Flash:0xc8:0x17
[MAIXPY]:SpiffsMountsuccessful
[MAIXPY]LCD:initMicroPython3b5c45649-dirtyon2018-11-15; Sipeed_M1withkendryte-k210Type "help()" formoreinformation.
>>> help()
Welcome to MicroPython on the Sipeed Maix One!
For generic online docs please visit http://maixpy.sipeed.com/
Official website : www.sipeed.com
Current installed module:
os modules:Built-in system operation module and file operation method
machine module:Built in some machine related modules
socket modules:Network operation method
app modules :Provide some applications
Control commands:
CTRL-A -- on a blank line, enter raw REPL mode
CTRL-B -- on a blank line, enter normal REPL mode
CTRL-C -- interrupt a running program
CTRL-D -- on a blank line, do a soft reset of the board
CTRL-E -- on a blank line, enter paste mode
For further help on a specific object, type help(obj)
For a list of available modules, type help('modules')
>>> help('modules')
object modules is of type str
encode -- <function>
find -- <function>
rfind -- <function>
index -- <function>
rindex -- <function>
join -- <function>
split -- <function>
splitlines -- <function>
rsplit -- <function>
startswith -- <function>
endswith -- <function>
strip -- <function>
lstrip -- <function>
rstrip -- <function>
format -- <function>
replace -- <function>
count -- <function>
partition -- <function>
rpartition -- <function>
center -- <function>
lower -- <function>
upper -- <function>
isspace -- <function>
isalpha -- <function>
isdigit -- <function>
isupper -- <function>
islower -- <function>
>>>
Langage du code :HTML, XML(xml)
Pour quitter miniterm faire un Ctrl+] ou éteindre le maixpy.
OpenISA propose une carte de développement à base de cœur Risc-V et Arm pour faire de l’IoT: la VEGABoard.
Schéma blocs de la VEGABoard
Le premier lots de cartes était disponible à la demande en novembre/décembre 2018. Ayant demandé gentiment j’ai pu recevoir un kit de leur part 😉
Le kit est assez minimaliste et se présente sous la forme d’une petite boite en carton.
Avec la carte de développement, un câble USB et quelques ponté-de-court-circuits.
Pour le guide de démarrage il y a une petite feuille volante nous demandant d’aller voir sur internet.
On peut également visionner la vidéo de démarrage et de branchement de sa VEGABoard sur Youtube.
Visiblement il manque la sonde JTaG dans mon kit. Mais je pense que c’est voulu, on doit déjà pouvoir commencer à faire des choses sans. La sonde JTaG proposée est une JLink un peu cher (à partir de 300€ visiblement) donc on fera sans pour le moment tant que je ne trouverais pas de solution plus viable. D’après le forum officiel il est possible de se procurer une version low-cost de cette sonde chez adafruit.
Le branchement à l’ordinateur sur le connecteur USB J12 fait apparaître pas mal d’interfaces dans le dmesg :
$ dmesg [ 1178.214445] usb 3-1: new high-speed USB device number 2 using xhci_hcd [ 1178.355326] usb 3-1: New USB device found, idVendor=0d28, idProduct=0204 [ 1178.355331] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1178.355334] usb 3-1: Product: DAPLink CMSIS-DAP [ 1178.355337] usb 3-1: Manufacturer: ARM [ 1178.355339] usb 3-1: SerialNumber: 02250000800a00184e453614ffffffff0028ffff97969906 [ 1178.357544] hid-generic 0003:0D28:0204.0004: hiddev0,hidraw3: USB HID v1.00 Device [ARM DAPLink CMSIS-DAP] on usb-0000:00:14.0-1/input3 [ 1178.952081] usb-storage 3-1:1.0: USB Mass Storage device detected [ 1178.952231] scsi host6: usb-storage 3-1:1.0 [ 1178.952360] usbcore: registered new interface driver usb-storage [ 1178.973347] usbcore: registered new interface driver uas [ 1178.982598] cdc_acm 3-1:1.1: ttyACM0: USB ACM device [ 1178.982842] usbcore: registered new interface driver cdc_acm [ 1178.982843] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 1179.967098] scsi 6:0:0:0: Direct-Access MBED VFS 0.1 PQ: 0 ANSI: 2 [ 1179.967849] sd 6:0:0:0: Attached scsi generic sg2 type 0 [ 1179.967976] sd 6:0:0:0: [sdc] 131200 512-byte logical blocks: (67.2 MB/64.1 MiB) [ 1179.968101] sd 6:0:0:0: [sdc] Write Protect is off [ 1179.968107] sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00 [ 1179.968260] sd 6:0:0:0: [sdc] No Caching mode page found [ 1179.968270] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1179.972344] sd 6:0:0:0: [sdc] Attached SCSI removable disk
En plus de l’habituel port de debug en uart (ttyACM0) on peut voir se monter un disque (sdc) ! Ce disque contient un fichier HTML avec un liens vers une page de NXP et un fichier de détails donnant ce qui semble être les caractéristiques de la carte:
$ cat /media/fabien/RV32M1/DETAILS.TXT
# DAPLink Firmware - see https://mbed.com/daplink
Unique ID: 02250000800a00184e453614ffffffff0028ffff97969906
HIC ID: 97969906
Auto Reset: 0
Automation allowed: 0
Overflow detection: 0
Daplink Mode: Interface
Interface Version: 0244
Git SHA: 6ff5529d66104e9744bf43fb3ee62baecd11b560
Local Mods: 1
USB Interfaces: MSD, CDC, HID
Interface CRC: 0xae100b74
Remount count: 0
La connexion au port uart /dev/ttyACM0 avec kermit (115200) me donne une suite ininterrompue de coordonnées x/y :
$ kermit -c
[...]
x= 1 y = 4
x= 1 y = 4
x= 1 y = 5
x= 1 y = 5
x= 1 y = 5
x= 1 y = 4
x= 1 y = 4
x= 1 y = 4
[...]
Pour commencer à jouer avec la carte, il faut se rendre sur le site d’OpenISA. La totalité de la documentation du kit est disponible sous la forme d’un gros (39Mo) zip téléchargeable sur leur site:
$ wget https://github.com/open-isa-org/open-isa.org/releases/download/1.0.0/Documentation.zipLangage du code :JavaScript(javascript)
Le SDK est disponible en téléchargement directement via une archive au forma *.sh ! Ce script (de 38Mo !) permet de forcer l’utilisateur à lire la licence avant de pouvoir décompresser l’archive tar.gz :
$ wget https://github.com/open-isa-org/open-isa.org/releases/download/1.0.0/rv32m1_sdk_riscv_installer.sh
[...]
$ bash rv32m1_sdk_riscv_installer.sh
$ ls
rv32m1_sdk_riscv_installer.sh rv32m1_sdk_riscv.tar.gz
$ tar -zxvf rv32m1_sdk_riscv.tar.gz
[...]Langage du code :JavaScript(javascript)
Attention l’archive ne se décompresse pas dans un sous répertoire, donc si vous êtes dans votre home vous allez en foutre partout.
L’archive contient un pdf «getting started guide» expliquant le fonctionnement de la toolchain.
Je précise que je compile toujours en -Wall et que je n’avais aucun warning bien sûr !
[edit 6 décembre 2018]
Si c’est un compilateur GCC pour ARM sur APF6 (j’ai pas toutes les options en tête) la fonction printf affiche :
State ROGER
Par contre sur un pc (debian) sans aucune option spécifique :
State (null)
Et oui ça n’est pas vu comme un bug … puisque ça compile en -Wall et que ça s’exécute sans problème (enfin pour l’exécution il y a quand même une histoire de pointeur qui va trifouiller au mauvais endroit de la mémoire sur la version «embarquées»).
Tout simplement car deux chaînes de caractères côtes à côtes sont considérées comme une seule et même chaîne.
Ici « UB40 » et « GWB » ne sont pas deux chaînes de caractères distinctes mais une seule et même chaîne : « UB40GWB ». Il n’y a pas d’index numéro 7 et donc on déborde sur la suite … qui est également un tableau de pointeurs sur chaînes de caractères. Du coup ça ne le dérange pas de l’afficher.
cqfd
C’est pas souvent que je suis contraint de toucher à l’OS de Micro$oft, mais à chaque fois ça me rend fou !
Alors voila, je cherche à faire un truc qui me semble simple : partager un disque dur sur mon réseau local pour que tous les ordinateurs de la maison puissent y avoir accès. Et plus particulièrement : que tout le monde puisse avoir accès aux photos.
Pour cela je suis parti gaiement la fleur au fusils installer samba sur ma raspberry pi (raspbian) et j’ai suivi quelques tuto sur le web pour partager mon disque dur USB à toute la maison.
Le tutoriel est plutôt simple, le partage se fait parfaitement avec mon ordinateur (debian). Rappelons tout de même que Samba utilise un protocole micro$oft, donc si ça marche même sur un pc Debian, cela devrait être transparent sous W$ …
Et bien non, j’ai tout simplement pas réussi à accéder au partage samba de ma raspberrypi avec l’ordinateur w$ que j’ai à la maison.
C’est un ordinateur «familiale» qui possède donc un windows «windows 10 family». Et bien il semblerait que cela ne fonctionne pas avec la version famille de w$10 !
J’ai eu beau tester d’obscures commandes ici et ici, mais non impossible, w$ persiste à me dire que j’ai pas la possibilité d’y accéder et qu’il faut contacter l’administrateur (peut-être aller mettre un cierge …).
Pour préserver ma santé j’ai donc abandonné l’idée de partage samba et lancé simplement la commande python suivante dans le répertoire que je voulais partager:
Photos/$ python -m SimpleHTTPServer
Une fois cette commande lancée sur la raspberrypi il est possible de parcourir avec firefox (en lecture seule) le contenu des répertoires, charger les fichiers que l’on souhaite visualiser en allant simplement sur le «site» en question :
http://raspberrypi.local:8000/
Seulement quand on souhaite visualiser les photos d’un répertoire, elles vont s’afficher une par une et il faudra revenir en arrière à chaque fois pour aller cliquer sur la suivante.
Ce qui serait bien c’est de pouvoir naviguer vers la photo précédente et/ou la suivante avec un simple bouton.
C’est quelque chose qui peu se faire assez simplement avec un script greasemonkey.
Voici donc le script en question qui ajoute un lien vers la photos précédente et un lien vers la photo suivante.
C’est du quick&dirty mais ça fait le job.
Pour l’installer il faut bien sûr avoir l’extension «greasemonkey» installée sur son firefox. Puis ouvrir le menu greasemonkey en cliquant sur le singe. De là il suffit de copier coller le code fourni en lien puis d’activer le script.