Hackable n°28 est déjà chez votre marchand de journaux

Nous avons mis les bouchées doubles pour que vous puissiez lire le dernier numéro de votre magazine préféré au pied du sapin et voici donc venir cette nouvelle édition de début d’année alors même que 2018 n’est pas terminé !

Au menu, de l’ESP8266 et en particulier une fonctionnalité peu connue et peu utilisée de cette famille de cartes qui sont programmables comme les classiques Arduino : le fait de pouvoir utiliser une partie de l’importante quantité de mémoire flash (non utilisée pour le code) comme espace de stockage pour vos fichiers.

Ainsi, grâce à la fonctionnalité SPIFFS, vous pouvez disposer de plusieurs Méga d’espace sur ESP8266 exactement comme s’il s’agissait d’un support comme une carte SD (ou une sorte de disque dur embarqué). Vous pouvez y créer des fichiers, lire des données et même transférer des fichiers directement depuis d’environnement de développement (IDE) Arduino. Et ce, sans ajouter le moindre élément ou module à votre montage…

L’article principal en couverture de ce numéro vous expliquera comment ajouter cette fonctionnalité à votre configuration et comment développer vos croquis de façon à utiliser cet espace de stockage, à la fois pour stocker vos données (collectes de mesures, par exemple) et lire son contenu (pour créer une interface web avec des fichiers HTML).

Mais ce n’est pas tout, ce numéro traite également de modélisation 3D, de mathématiques amusantes, de bidouille de souris USB, de compression d’images pour écran LCD, de VPN, d’opérations logiques, de bonnes pratiques, de Z80…

Au sommaire de ce numéro :

  • Ardu’n’co
    • p.08 : Combien faut-il taper de chiffres pour trouver un code à 4 chiffres ?
    • p.20 : Compresser des images en noir et blanc efficacement et simplement
  • En couverture
    • p.30 : Stockez des fichiers dans la flash de vos ESP8266
  • Embarqué & Informatique
    • p.44 : Recyclez votre vieille souris en capteur
  • Repère & Science
    • p.62 : Gérez et manipulez les bits comme un chef
    • p.70 : Modélisation 3D avec OpenSCAD
  • Démontage, hacks & récup
    • p.88 : Z80, une exécution pas-à-pas qui fonctionne

Ce numéro 28 de Hackable est d’ores et déjà disponible chez votre marchand de journaux et dans notre boutique en ligne. N’hésitez pas à vous abonner à la version papier ou PDF pour ne rater aucun numéro.

Vous pouvez également accéder à l’ensemble des numéros publiés via un abonnement à notre plateforme de lecture en ligne ConnectCe numéro, ainsi que tous les précédents, est d’ors et déjà lisible en ligne sur Connect.

Note (08/01/2019) : Une erreur s’est glissée dans le schéma de l’article p.97. Les signaux /M1 et DOWN sont inversés (merci à A. Boudou pour avoir relevé l’erreur). Le schéma en question, corrigé, est le suivant :

14 commentaires sur “Hackable n°28 est déjà chez votre marchand de journaux

  1. Bonjour,

    Merci pour cette suite d’articles sur le Z80. Par contre, j’ai relevé une erreur dans l’article, sur le schéma page 97 (breadboard avec le compteur et l’inverseur) : les labels « /M1 » et « DOWN (8) » sont intervertis l’un par rapport à l’autre.

  2. Tout d’abord, j’ai plutôt apprécié le fait de passer à une cadence de publication trimestrielle (il faut savoir laisser du temps aux lecteurs pour apprécier d’excellents articles : j’en relis 6 mois après leur publication dans HAckable).
    Je n’ai pas pu trouver de défauts dans cette version (une incohérence entre un schéma electronique et un schéma de cablage n’est pas grave: les gens qui câblent sur Veroboard utilisent le schéma théorique -et refont ce schéma théorique s’ils ont un problème).
    J’ai remarqué que la première page était … deux fois plus racoleuse que d’habitude:
    – la gestion des boutons d’un mulot est présentée comme spécifique au RPi (alors que dans la table des matières, ce n’est pas spécifié et que dans le corps du texte, il est bien clair que tout calculateur sous GNUlinux -ayant un port USB- est concerné). Il est assez amusant de voir que le RPi n’est plus qu’un instrument de racolage, relègué en couverture, dans cette édition
    – SPIFFS n’est pas très mystérieux : la première chose que j’ai faite, en étrennant sous W10 un EPS32, a été de constater qu’il avait autant de disquettes (mais plus petites) qu’un très vieux PC, et d’utiliser les exemples de démo: ce qui ù’a frappé, c’est la grande variabilité -un facteur deux, sur un esp neuf- des temps d’écriture (qui n’est pas un handicap pour stocker des pages ouaibe, mais qui peut être prohibitif pour de l’enregistrement en temps réel de données -pas l’objet de cet article…- -confirmé par la page github de spiffs https://github.com/pellepl/spiffs : son équilibrage d’usure -wikipédia wear levelling -, ses tests de cohérence et sa faible emprunte mémoire peuvent le ralentir, de façon difficile à prévoir -impossible pour moi- ).

    J’ai beaucoup admiré la mise au pas à pas du Z80 (cependant, vu le très grand nombre de soudures (> 2*8 /*data*/ + 2*16 /*adresses*/) el le fait que je n’ai plus les yeux pour vérifier mes horreurs (en plus du défaut que, selon Jupiter, je partage avec mes con citoyens de renâcler au moindre effort- , j’ai trouvé une librairie qui permet, sur un Arduino (un méga serait décent, et peut être moins cher qu’un vrai Z80 + RAM, ROM, decodeurs, perifériques- ), d’émuler un Z80 complet (ie, utilise la RAM arduino , préssoudée, les IN+OUT font appel aux composants qu’on veut…) -mais pas de connaître les temps d’éxecution d’un « vrai » Z80, et un jeu d’instructions restreint -60%- est implémenté -pour émulation- à ce jour dans un gigantesque switch -lignes 412 à 620 -https://github.com/MohammedRashad/ArduZ80/blob/master/ArduZ80.cpp.

    • Merci pour ces commentaires intéressants.

      En effet, l’article sur le hack de souris USB est parfaitement applicable à n’importe quelle plateforme GNU/Linux disposant d’un contrôleur USB, ceci incluant un PC ou un Mac. On peut en dire tout autant de presque n’importe quel article contenant des explications de configuration ou de programmation applicables sur un RPi : Broker MQTT, SDR, HDMI/Ethernet, mDNS, Grafana, gestion de paquets, etc). Le fait est que Hackable traite d’électronique numérique et de systèmes embarqués et que la SBC la plus utilisée dans le contexte hobbyiste est la Pi. D’où la mention en couverture plutôt que « pour n’importe quelle machine GNU/Linux ». L’idée est d’indiquer ce qui est applicable à une RPi et non ce qui n’est applicable QUE sur une Rpi.

      En effet, SPIFFS n’est pas réellement mystérieux (d’où les guillemets dans le titre), mais il faut bien avouer que le rapport entre les avantages offerts et la popularité de cette fonctionnalité en fait tout de même quelque chose que je trouve presque intimiste. En d’autres termes, c’est tellement génial et pratique qu’il est étonnant qu’on n’en parle pas davantage.

      Concernant l’émulation du Z80, je ne partage pas totalement votre enthousiasme. Ceci reste de l’émulation et n’est pas vraiment aussi « magique » que le vrai matériel. Ceci dit, en termes de simulation très intéressante, vous avez socz80-altera (https://github.com/slp/socz80-altera), un port pour FPGA Altera/Intel d’une machine complète (CPU, MMU, RAM, ROM, devices).

      • Merci beaucoup pour le lien vers .. un Z80 ayant 1000 fois plus de mémoire que le vrai et un Unix… (UZI).
        En dehors de la complexité (je crois que la fondation Arduino est en train de commercialiser un MKR Vidor 4000; les tutoriels suivront dans un an ou deux: la RAM qui est en sus du FPGA n’est pas incluse ni prévue), le prix de la solution d’émulation purement logicielle (qui ne peut pas respecter le nombre de cycles, et a fortiori les états intermédiaires ) est plus bas (un arduino mega coûte 35 $; un MKR Vidor, avec ristourne, coûte 50 $); par contre la solution purement logicielle gagnerait à ce que .. tous les codes possibles soient renseignés….. ce qui est assez ironique).

        Pour SPI FFS, c’est la première chose que j’ai regardée en étrennant un ESP32: je ne pense pas être le seul à être curieux, même si l’auteur ne recommande pas l’usage pour du data logging (le soin apporté à la vérification du système de fichiers et à sa préservation ralentit de façon aléatoire, incompatible avec du temps réel). L’usage pour stocker des fichiers modifiés rarement (config, pages ouaibe) est par contre merveilleux…. Mais ce n’est qu’à moitié génial.

        • J’ai jeté un œil aux specs du MKR Vidor 4000, cela semble une plateforme intéressante mais, comme toujours avec les FPGA, l’aspect logiciel est toujours là où le bas blesse. Il n’y a pas, pour l’instant de solution simple (aussi simple que le fait de débuter avec une carte Arduino par exemple) pour produire le bitstream. Dieu qu’il serait agréable d’écrire du Verilog directement dans l’IDE, mais nous en sommes loin, très loin je crois.

          Du coup, au final, comme il faut de toutes façons passer par une grosse période d’apprentissage brutale, autant opter pour une carte à faible coût utilisant un cyclone IV (ou même III) telles que celles vendues sur eBay entre 15€ et 40€ (avec un clone d’USB Blaster), et mettre son nez dans Quartus. Une solution plus coûteuse mais moins « bricolo » est de jeter son dévolu sur un devkit « officiel » comme le DE0-Nano de Terasic (voir un DE10-Nano avec FPGA et SoC dans la même puce, à un peu plus de deux fois le prix du MKR Vidor 4000 mais avec FPGA Cylcone V, CPU à ARM Cortex-A9, Giga Ethernet, HDMI, 1 Go de SDRAM, USB OTG, slot micro SD, etc).

  3. Le sujet sur le réseau Mesh est très intéressant pour interconnecter les objets et aussi mailler un réseau local. Pour autant, il m’a été impossible de trouver la bibliothèque ESPAsyncTCP pour faire le test du code du 1er article.

    J’ai beau chercher pour trouver cette bibliothèque, je n’ai pas trouvé. Ne peut on pas avoir sous forme d’un ‘paquet’ l’ensemble des sources sur Github pour pratiquer un jeu d’essai ?

    Merci de m’avoir lu

    et continuer c’est parfait

  4. Merci pour le lien concernant ESPAsyncTCP. Pour autant, je rencontre toujours une erreur avec softAP qui emploi 5 arguments au lieu de 4 !! Je suis béotien et j’ai du mal à faire tourner l’exemple du magazine.
    Ci dessous le log issu de la console :
    ———————-
    Arduino : 1.8.5 (Windows 10), Carte : « NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS) »

    C:\Users\fred\Documents\Arduino\libraries\Painless_Mesh\src\painlessMeshAP.cpp: In member function ‘void painlessMesh::apInit()’:

    C:\Users\fred\Documents\Arduino\libraries\Painless_Mesh\src\painlessMeshAP.cpp:23:98: error: no matching function for call to ‘ESP8266WiFiClass::softAP(const char*, const char*, uint8_t&, uint8_t&, uint8_t&)’

    WiFi.softAP(_meshSSID.c_str(), _meshPassword.c_str(), _meshChannel, _meshHidden, _meshMaxConn);

    ^

    C:\Users\fred\Documents\Arduino\libraries\Painless_Mesh\src\painlessMeshAP.cpp:23:98: note: candidate is:

    In file included from C:\Users\fred\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\libraries\ESP8266WiFi\src/ESP8266WiFi.h:35:0,

    from C:\Users\fred\Documents\Arduino\libraries\Painless_Mesh\src\painlessMesh.h:20,

    from C:\Users\fred\Documents\Arduino\libraries\Painless_Mesh\src\painlessMeshAP.cpp:11:

    C:\Users\fred\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:39:14: note: bool ESP8266WiFiAPClass::softAP(const char*, const char*, int, int)

    bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0);

    ^

    C:\Users\fred\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\libraries\ESP8266WiFi\src/ESP8266WiFiAP.h:39:14: note: candidate expects 4 arguments, 5 provided

    exit status 1
    Erreur de compilation pour la carte NodeMCU 1.0 (ESP-12E Module)

    Ce rapport pourrait être plus détaillé avec
    l’option « Afficher les résultats détaillés de la compilation »
    activée dans Fichier -> Préférences.

    ————–

    Merci

    • Le support ESP8266 version 2.3.0 de votre environnement Arduino est trop vieux, la dernière version stable est la 2.4.2.
      Votre environnement de développement Arduino lui-même est quelque peu ancien (1.8.5), la dernière version est la 1.8.8.

  5. Merci Denis,

    Après de très longues heures… très longues, vraiment très longues.
    Mon environnent :
    – Windows 10
    – EDI Arduino 1.8.8
    -ESP8266 v.2.3.0
    -Adafruit v.0.20.2
    -Painless v1.3
    -Taskscheduler v3.0.2
    -Arduinojson v5.13.4
    -EspasyncTCP

    avec une carte ESP8266 marquée LoLin, new NodeMcu V3

    Si ça peut servir à d’autres lecteurs.

    La compilation MARCHE !!! La suite au prochain post.

    Quelle est la raison d’avoir 2 répertoires pour les bibliothèques ?
    ……\appData\Local\Arduino15\
    et
    ……\appData\Local\libraries\

    Parfois, on retrouve les mêmes bibliothèques sur ces deux répertoires.

    J’apprécie votre journal, je sais que vous avez abordé le sujet de la difficulté de mettre un forum, mais, cela semble être intéressant par le fait que les lecteurs pourraient apporter des solutions. Également, connaissez vous un club sur Paris ou est il envisagé de faire des rencontres avec d’autres lecteur du journal ?

    Merci

  6. Selon https://www.arduino.cc/en/guide/libraries (section « please notes ») il n’ya pas deux (ce qui m’intriguait aussi; merci en passant d’avoir posé la question) mais **trois*** possibilités de stocker des librairies.
    L’une est écrasée si on installe une nouvelle version -et donc peu recommandable : c’est pour ça qu’on croit qu’il n’ y en a que deux- ;
    Celle qui est mise dans votre « carnet de croquis » est prioritaire sur celle qui est mise dans le « core » , mais n’est pas mise à jour : vous pouvez la modifier à votre guise sans qu’elle se fasse écraser et que vous perdiez votre travail, mais vous ne bénéficiez pas des mises à jour (de toutes façons, c’est incompatible) qui sont probablement bénéfiques avec des processeurs neufs…
    C’est une solution astucieuse, qui évite de plonger dans le desespoir le plus noir (pensez à Sisyphe) les gens qui modifient une bibliothèque …. tout en maintenant des mises à jour confortables.

Les commentaires sont fermés.