Publié le 5 août 2016 - par

Ajouter le WiFI au Raspberry Pi Zero sans monopoliser l’USB

wifi_pizero_carte_250pxC’est un twitt de @blog_wifi qui m’a fait découvrir cette réalisation. Je n’ai pas trop le temps de tester le montage en ce moment. J’ai donc demandé à son auteur mincepi l’autorisation de traduire son article afin de vous en faire bénéficier.
Il a accepté et je vous propose donc de lire cette description, parue sur Hackaday.

====== Traduction d’un article de mincepi publiée le 3 août 2016 sur Hackaday ======

Une interface WiFi à 5€ pour le PiZero

Crédits

Tout d’abord, je tiens à donner un crédit bien mérité à ce merveilleux projet de ajlitt. (Lisez le il est très intéressant).  Je suis vraiment debout sur les épaules de géants ici : tout ce que je l’ai fait c’est de miniaturiser au maximum ce circuit, en tirant parti de ma technique qui consiste à utiliser des résistances pour fixer une carte de circuit imprimé au PiZero comme je l’ai fait pour la carte VGA miniature pour PiZero. Je suppose qu’on pourrait appeler cela du réductionnisme 🙂 Le résultat est un adaptateur WiFi (un peu lent) pour le PiZero pour moins de 5 €.

Le schéma

wifi_pizero_schema
Voici le schéma. La connexion entre le point test P1-EN jusqu’à la borne EN du module ESP n’est pas représentée. Ne sont pas non plus représentées les résistances de 33 ohm résistances en série entre le connecteur P2 et le PiZero, sur toutes les broches sauf P2-17, 30, et 34, qui sont reliées directement. Plutôt simple non?

Au boulot

J’ai passé un après-midi à concevoir la carte, et je l’ai envoyée à OSH Park. J’étais un peu inquiet: Je n’avais jamais fait de découpe avant, et la découpe a dû être faite plus grande car les bords sont arrondis. Je devais aussi prévoir la place pour le module ESP, donc je ne savais pas si la carte serait utilisable. Je ne savais pas non plus si mes pistes d’alimentation et de masse étaient d’une largeur suffisant. inquietudeJ’étais inquiet au sujet des possibilités de diaphonie entre les lignes de données car il n’y avait pas suffisamment de place pour loger un plan de masse. Et je n’avais jamais soudé un module avant… Pourrais-je faire les connexions nécessaires à la main ?
Je me faisais donc beaucoup de soucis
.

En ce qui concerne les logiciels, la source du module d’origine n’a nécessité que de menus changements. J’ai modifié le reset GPIO car je ne voulais pas jouer avec les paramètres du module. J’ai ajouté quelques lignes de code à la fois à la source et à l’overlay pour que l’overlay soit capable de charger automatiquement le module. J’ai changé un peu makefile pourque le module se compile in-tree (Once a module gets accepted to be included, it becomes an in-tree module). Après une rapide compilation, j’avais un nouveau module tout neuf!

C’est tellement simple que ça ne peut que marcher, d’accord ?

Pendant que j’attendais mes cartes, j’ai construit un prototype en soudant des résistances aux pattes courtes entre l’ESP et un connecteur IDE de récupération comme ceci :

wifi_pizero_cote2

Après avoir tout vérifié (trois fois), installé les fichiers de configuration, initialisé, et chargé le module du noyau. Waoou, pas de fumée ! Reset-ButtonMais bon, ça ne fonctionnait pas vraiment. Les messages du noyau disaient que l’ESP n’avait pas été resetté. Après avoir jeté un coup d’œil au code source, il devenait évident que la patte de reset devait avoir une résistance de pull-up. Pour effectuer un reset, le code met simplement le GPIO en sortie avec la valeur 0, attendent un peu, puis libère le GPIO, en se reposant sur la résistance de pull-up pour amener la broche à un niveau logique 1. Bien sûr, le GPIO que j’avais choisi pour le reset avait une résistance de pull-down par défaut (loi de Murphy). J’ai rectifié en changeant l’overlay pour permettre un pull-up sur le GPIO au reset, recompilé l’overlay et redémarré.

Rien ne bougeait, le montage était bel et bien mort 🙁  Il était temps de sortir mon super oscilloscope et de le brancher. J’ai vérifié l’horloge SDIO : elle semblait fonctionner. Alors que je posais la sonde sur les lignes de données SDIO, une des résistances s’est détachée de l’ESP lorsque j’ai appuyé la sonde. J’ai alors remarqué qu’une des autres résistances s’était également détachée : j’avais collé les résistances à froid au lieu de les souder ! Ça ne m’étais pas arrivé depuis longtemps, donc je ne m’y attendais pas. C’est sans doute dû à la petite taille des pastilles de l’ESP : elles sont conçues pour être soudées directement sur les pistes, pas avec des fils. J’ai re-soudé les connexions avec beaucoup de soudure, et re-démarré.

Cette fois tout a fonctionné ! Le module du noyau s’est chargé, et je pouvais faire iwlist scan. Il avait même récupéré les paramètres utilisés par le dongle USB WiFi que j’avais installé avant et s’était connecté à mon point d’accès.

Lorsque j’ai reçu les cartes de circuits imprimés, j’ai dessoudé le module ESP du connecteur et je l’ai soudé à la carte de circuit imprimé. Tout a très bien marché : la découpe et l’implantation étaient parfaits. A la mise sous tension tout a parfaitement fonctionné. Je m’étais inquiété pour rien!

Voici à quoi ça ressemble. L’ensemble est à peine plus grand que le PiZero :

wifi_pizero_carte

Cette autre vue de côté montre que l’ensemble est vraiment très mince :

wifi_pizero_cote

Les tests

Il était temps de faire un test de vitesse ! J’ai compilé netio, mis en place un serveur, et fait un test. Je recevais un peu plus de 3 mégabits par seconde. J’ai testé avec un dongle USB sur un autre PiZero, au même endroit, et je recevais un peu plus de 10 mégabits par seconde. On a donc une vitesse réduite à un tiers environ par rapport à un dongle WiFi. Cela ne semble pas très bon à première vue, mais c’est en fait assez remarquable compte tenu de la proximité de l’antenne du module ESP avec le plan de masse du PiZero et la carcasse métallique du connecteur USB. En surélevant l’ensemble au-dessus du PiZero on pourrait sans doute améliorer cette situation, mais je voulais le profil le plus bas possible. Et 3 mégabits par seconde c’est encore mieux que la connexion haut débit alimentant mon point d’accès.

Conclusion

  • Parfois, il faut faire confiance à vos outils de conception et attendre l’arrivée de la carte de circuit imprimé. Ou peut-être utiliser une carte prototype avec des pastilles faciles à souder?
  • Lorsque vous utilisez les GPIOs, faites attention aux pull-up / pull-down. Le code peut reposer sur des valeurs par défaut.
  • Du métal à proximité des petites antennes WiFi fait ralentir le débit, mais pas assez pour empêcher l’utilisation.

AMÉLIORATIONS

Le positionnement de l’ESP sur l’autre bord de la carte de circuit imprimé devrait probablement augmenter le débit, en rendant le système moins compact. Bien sûr, cela se traduira par un nouveau développement de carte de circuit imprimé, mais au moins ça ne devrait pas augmenter sensiblement le coût.

Sources

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

8 réflexions au sujet de « Ajouter le WiFI au Raspberry Pi Zero sans monopoliser l’USB »

  1. mmoi

    la seule question qui me vient quand je vois des articles sur le pi zero c’est « mais où je peux en acheter une dizaine pour mes projets !!!! »

    on peut en trouver à l’unité (avec des frais d’envois supérieur au machin)
    on peut en trouver avec tout un tas de bidule dont je n’ai aucune utilité

    mais en acheter pour mettre au point des projets ? ben non…

    Ça me fatigue cette hype sur le pi zero alors que je ne peut pas m’en procurer…

    Répondre
    1. François MOCQ Auteur de l’article

      bonjour tout à fait d’accord
      j ai pu en avoir 2 (enfin… 2 fois un chez the PiHut qui en met en vente chaque semaine)
      mais c est vrai qu avec les frais de port ç plus que double le prix 🙁
      pourtant c est une carte qui fonctionne bien !
      victime de son succès
      cordialement
      François

      Répondre
  2. laurent

    tout à fait d’accord ! je l’avais dit ici même il y a quelques semaines ! ça ne sert à rien, ça doit faire presque 1 an qu’on voit des trucs à base de p0 mais on ne peut pas acheter la carte, toujours en rupture, c’est n’importe quoi, du coup je suis revenu a l’arduino au moins tout ce qu’on peut voir est dispo.

    Répondre
  3. Ping : Ajouter le WiFI au Raspberry Pi Zero sans monop...

  4. christophe club reia

    Moi c est pi 3 et cela rdntre meme dans ma cam factice du coup fonctionnel.

    Je suis passe a une borne arcade a base de table ikea a 7€ avec deux bêtes manettes usb a 2€ dans une brocantes un adaptateur hdmi vga et un viel écran 17″ et un caisson de basse avec deux hp retro de l époque de Pb.

    Répondre
  5. Valentin

    C’est vraiment une alternative intéressante, la faible vitesse n’est pas catastrophique dans la mesure où la pi zero n’est pas vraiment une carte conçue pour le traitement rapide de grosses données. Une autre alternative pour un dongle usb est d’utiliser le hub usb zero4u, spécialement conçu pour la pi zero 1.3. Je planifie actuellement mes achats pour un petit projet centré sur une pi zero et j’ai eu un gros coup de cœur sur ce hub en en cherchant un. Evidemment, le prix n’est pas le même…

    Répondre
  6. Ping : Test : Orange Pi Lite, déballage et installation de Armbian (WiFi, clavier, HDMI/DVI) • Domotique et objets connectés à faire soi-même

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.