Menu
Microbots
0
  • Faire
    • Commencer
    • Constructions de créateurs
    • Éducation
  • Boutique
    • Modules Maker
    • Packs de création
    • Outils et engrenages
    • Robots et écrans
  • À propos
    • Notre histoire
    • Tendez la main
    • FAQ
  • français
  • Votre panier est vide
Microbots
  • Faire
    • Commencer
    • Constructions de créateurs
    • Éducation
  • Boutique
    • Modules Maker
    • Packs de création
    • Outils et engrenages
    • Robots et écrans
  • À propos
    • Notre histoire
    • Tendez la main
    • FAQ
  • Langue

  • 0 0

Notions de base sur CodeCell : vos premiers pas

Si vous venez d'acquérir le CodeCell , vous allez être comblé. Ce petit module est conçu pour simplifier vos projets DIY grâce à ses multiples fonctionnalités intégrées dans une carte de la taille d'un centime. Dans ce guide, nous vous expliquerons :

  • Qu'est-ce qu'un CodeCell ? Et comment fonctionne son circuit ?
  • Comment configurer et utiliser votre CodeCell
  • Premiers pas avec des exemples
  • Expliquez toutes les fonctions de la bibliothèque disponibles et comment vous pouvez les utiliser dans votre projet

Qu'est-ce qui fait un CodeCell ?

CodeCell est un module compact et polyvalent intégrant l'ESP32-C3, de multiples options d'alimentation et des capteurs intégrés, le tout dans un format compact de 1,85 cm de large. Ces caractéristiques en font un outil puissant pour un large éventail d'applications.

Dans cette première section, nous commencerons par nous familiariser avec les circuits qui composent le CodeCell . Ensuite, nous vous expliquerons les étapes simples de configuration de votre CodeCell .

Module ESP32C3

Au cœur du CodeCell se trouve le module ESP32C3, un microcontrôleur compact reconnu pour sa facilité d'utilisation dans le domaine de l'IoT. Il associe une architecture compatible Arduino aux fonctionnalités Wi-Fi et Bluetooth Low Energy (BLE) intégrées. Cette intégration offre les options de connectivité les plus courantes tout en conservant un format compact.

L'antenne PCB du module ESP32C3 est positionnée sur un côté, à l'écart des autres composants, afin de minimiser les interférences et d'améliorer la transmission et la réception du signal. Ce positionnement permet de réduire l'impact des plans de masse ou autres surfaces conductrices, susceptibles de dégrader les performances de l'antenne. Les composants situés sur la face inférieure sont maintenus dans les limites de dégagement recommandées pour l'antenne. Les tests ont montré que les performances de l'antenne ne sont pas affectées par les interférences minimes d'un câble USB-C, ces câbles étant généralement blindés.

L'ESP32-C3 dispose d'une mémoire importante, avec 4 Mo de Flash et 400 Ko de SRAM, lui permettant d'exécuter la plupart des applications courantes. Son processeur monocœur RISC-V 32 bits, cadencé jusqu'à 160 MHz, gère efficacement diverses tâches. Cette combinaison de mémoire et de puissance de traitement rend l'ESP32-C3 adapté à un large éventail d'utilisations.

Le module ESP32C3 prend également en charge un contrôleur USB série/JTAG, nous permettant de rendre le CodeCell reflashable via le port USB-C et d'envoyer des données série pour la communication et le débogage.

Gestion de l'alimentation

Le CodeCell offre une grande flexibilité d'alimentation. Il peut être alimenté par le connecteur de la batterie LiPo, par un câble USB-C, ou par les deux.

Le connecteur de batterie LiPo permet de connecter la batterie en toute sécurité plus facilement que jamais, sans avoir besoin de souder ni de risquer un court-circuit accidentel.

Le port USB-C a une double fonction : il permet d'alimenter l'appareil et/ou de le reprogrammer. Cette option multi-alimentation est activée par la puce de gestion de batterie BQ24232, dotée d'une gestion dynamique du chemin d'alimentation (DPPM) permettant d'alimenter le système tout en chargeant la batterie simultanément et indépendamment. Le processus de charge de la batterie se déroule en trois phases : précharge de conditionnement, courant constant et tension constante. Pour protéger la batterie, la tension de sortie (Vo) est régulée par la puce BQ24232. Cette sortie supporte un courant de sortie maximal de 1 500 mA lorsqu'elle est alimentée par la batterie LiPo et de 450 mA lorsqu'elle est alimentée par USB.

Par défaut, le courant de charge de la batterie LiPo est réglé à 90 mA, garantissant un taux de charge équilibré et sûr pour la batterie LiPo optionnelle de 170 mAh. De plus, pour ajuster le taux de charge, il est nécessaire de dessouder la résistance R12 en 0402 et de la remplacer par une nouvelle résistance selon la formule (R = 870/Ichrg). Cette solution est réservée aux soudeurs professionnels qui n'ont pas peur de manipuler de minuscules composants en 0402 ! Consultez la fiche technique du BQ24232 pour plus d'informations sur la charge de la batterie.

La bibliothèque CodeCell peut fournir un retour visuel sur l'état de la batterie/de l'alimentation USB via la LED RVB adressable intégrée :

  • Avertissement de batterie faible : lorsque la tension de la batterie descend en dessous de 3,3 V, le voyant LED clignote en rouge dix fois et l'appareil passe en mode veille. Cela permet d'économiser l'énergie jusqu'à ce que l'appareil soit reconnecté à un chargeur USB.
  • Processus de charge : Pendant la charge, le CodeCell suspend les applications, allume la LED bleue et attend que la batterie soit complètement chargée. Une fois la charge terminée, la LED émet une animation lumineuse clignotante indiquant la distance de proximité détectée par les capteurs.
  • Alimenté par batterie : lorsque l'USBC est déconnecté et fonctionne sur batterie, le CodeCell s'allume à nouveau en vert et effectue une animation lumineuse respiratoire, indiquant la distance de proximité détectée par les capteurs.

La régulation de puissance est également assurée par plusieurs condensateurs de découplage, dont jusqu'à deux condensateurs de masse de 100 µF chacun, placés à proximité du connecteur de batterie. Ces condensateurs sont connectés aux broches 3,3 V et de sortie Vo pour assurer une alimentation stable. De plus, la carte est équipée de deux diodes TVS de protection : l'une préserve la tension d'entrée USB 5 V (Vin) et l'autre la tension de sortie (Vo). Ces diodes TVS offrent une protection contre les décharges électrostatiques (DES) et peuvent absorber en toute sécurité des décharges électrostatiques répétées supérieures au niveau maximal spécifié dans la norme internationale CEI 61000-4-2, sans dégradation des performances.

La carte intègre également un régulateur LDO (Low Dropout) de 3,3 V, qui assure une alimentation stable aux composants basse tension. Ce minuscule circuit LDO NCP177 peut délivrer un courant de sortie allant jusqu'à 500 mA avec une faible chute de tension typique de 200 mV à 500 mA.

    Broches GPIO et d'alimentation

    Compte tenu de la conception compacte, le principal défi consistait à optimiser l'utilisation des broches GPIO. Nous avons résolu ce problème en divisant chacun des trois côtés disponibles du CodeCell en sections d'E/S distinctes selon les applications. Nous avons également placé des broches d'alimentation le long des bords du module pour faciliter la connexion à diverses sources d'alimentation, permettant ainsi de connecter d'autres modules, capteurs et actionneurs sur les différents côtés.

    Sur la face inférieure, trois des cinq broches sont utilisées pour l'alimentation : une broche de masse (GD), une broche d'alimentation logique 3,3 V (3V3) et une broche de charge d'entrée 5 V (5V0). Cette broche 5V0 est connectée à l'entrée USB. Vous pouvez ainsi l'utiliser pour obtenir une alimentation 5 V lorsque l'USB est connecté, ou comme entrée d'alimentation pour la charge. Les deux autres broches sont les broches I2C SDA et SCL, permettant d'ajouter des capteurs numériques externes. Si vous n'utilisez pas de capteurs externes ni de capteurs de lumière/mouvement, ces broches I2C peuvent être configurées comme GPIO.

    Les deux autres côtés possèdent chacun une broche de masse (GD) et une broche de sortie de tension (VO). Chaque côté comporte également trois broches GPIO programmables (IO1, IO2, IO3, IO5, IO6, IO7), toutes configurables en broches PWM ( idéal pour connecter directement un pont en H pour le contrôle d'actionneurs/moteurs ). IO1, IO2 et IO3 peuvent également servir de broches CAN.

    Les broches ADC supportent des tensions allant jusqu'à 3,3 V et, par défaut, la référence de tension de l'ADC est réglée sur 2,5 V. Veuillez noter que cette valeur ne peut pas être modifiée.

    Capacités de détection

    Le CodeCell se distingue par ses capteurs intégrés. Chaque unité est équipée d'un capteur de lumière intégré, et un capteur de mouvement est également disponible en option pour améliorer la détection de mouvement de votre projet, particulièrement utile pour la robotique et les objets connectés !

    • Capteur de lumière VCNL4040 : Ce capteur mesure à la fois la luminosité et la proximité jusqu'à 20 cm. Sa conception haute résolution 16 bits combine un capteur de proximité, un capteur de lumière ambiante et un IRED haute puissance dans un boîtier compact. L'intégration de photodiodes, d'amplificateurs et d'un convertisseur analogique-numérique sur une seule puce lui confère des fonctionnalités améliorées. La configuration I₂C est directement intégrée à la bibliothèque CodeCell , ce qui garantit l'initialisation automatique du capteur pour optimiser sa résolution de détection.
    • Capteur de mouvement BNO085 9 axes en option : Ce capteur IMU avancé est une mise à niveau coûteuse, mais nous pensons que l'investissement en vaut la peine ! Il améliore les capacités du CodeCell avec un accéléromètre, un gyroscope et un magnétomètre 3 axes intégrés. Les algorithmes avancés de fusion de capteurs du BNO085 combinent les données de ces capteurs pour déterminer avec précision les données de mouvement du capteur, telles que : la mesure de la rotation angulaire (roulis, tangage, lacet), l'état du mouvement (par exemple, sur table, stationnaire, en mouvement), l'activité (par exemple, conduite, marche, course), les mesures de l'accéléromètre, du gyroscope, du magnétomètre, de la gravité, de l'accélération linéaire, la détection des tapotements et le podomètre. 

    Nous allons ensuite découvrir comment la bibliothèque CodeCell simplifie à la fois la configuration de ces capteurs et la lecture de leurs données.

    Qu'en est-il de la broche BOOT ?

    Certaines cartes de développement ESP32 incluent un bouton RST (Reset) et un bouton BOOT pour passer manuellement en mode programmation. Cependant, l'ESP32-C3, comme celui du module CodeCell, peut passer automatiquement en mode boot via l'interface série lors de l'utilisation de l'IDE Arduino. Ainsi, le CodeCell n'a pas besoin de boutons RST ou BOOT dédiés, ce qui nous a permis de le rendre aussi compact.

    Dans le cas rare où votre CodeCell se bloque ou rencontre une exception (le forçant à se réinitialiser en permanence), vous pouvez le forcer manuellement à démarrer pour reflasher le firmware. Pour cela, suivez simplement ces étapes :

    • Connectez un fil entre la broche SCL et la broche GND.
    • Débranchez l'USB et éteignez la batterie (si elle est connectée).
    • Reconnectez le port USB.
    • Reprogrammez votre CodeCell avec un nouveau code - assurez-vous que votre code ne contient pas le bogue qui a créé le problème.
    • Retirez le fil court-circuité entre la broche SCL et la broche GND. Remettez la batterie sous tension si elle est connectée.

    En suivant ces étapes, votre CodeCell retrouvera sa vie.

    Comment configurer et utiliser votre CodeCell ?

      Pour rendre la programmation encore plus facile, le CodeCell La bibliothèque offre un large éventail de fonctions pour l'initialisation, la lecture et la gestion des capteurs et de l'alimentation. Dans cette section, nous vous expliquerons tout ce que vous devez savoir sur la configuration de votre appareil et de sa bibliothèque.

      Déballage de votre CodeCell

      Commençons par le contenu de la boîte. Selon les options sélectionnées lors du paiement, vous y trouverez :

      1. CodeCell : la star du spectacle, votre carte minuscule mais puissante dotée du module ESP32-C3, de broches GPIO programmables et de capteurs.
      2. Vis : Quatre vis M1,2 x 6 mm pour monter le CodeCell en toute sécurité dans vos projets.
      3. Embases : Trois jeux d'embases femelles qui peuvent être livrées dessoudées ou soudées, selon votre choix.
      4. Batterie/Câble : Selon votre choix lors du paiement, vous recevrez soit un câble de batterie gratuit pour connecter votre propre batterie au connecteur intégré du CodeCell , soit une batterie LiPo 170 mAh 20 C avec câble pré-soudé. Cette batterie optionnelle mesure 23 x 17,5 x 8,7 mm et ne pèse que 4,6 grammes. Cliquez ici pour accéder à la fiche technique de la batterie.

      Mettre votre CodeCell sous tension pour la première fois

      Commençons par brancher un câble USB-C ! Une fois votre CodeCell alimenté, il devrait :

      • Initialisation : configuration des périphériques internes et des capteurs embarqués. Une fois cette opération terminée, un message « Hello World » est affiché sur le moniteur série.
      • Vérification de l'alimentation : la carte surveille l'état de l'alimentation, vérifie si la batterie est connectée et si elle est en charge. Si aucune batterie n'est connectée, une animation lumineuse s'affiche grâce à la LED RVB intégrée. La vitesse d'animation varie en fonction de la proximité du capteur de lumière : approchez votre main pour ralentir. Éloignez-la pour accélérer ! La LED clignote en bleu ou en vert selon que la carte est alimentée par USB ou par batterie. Si la batterie est en charge, la LED reste bleue fixe jusqu'à la charge complète.

      Configuration de votre CodeCell

      L'étape suivante consiste à connecter le CodeCell à l'IDE Arduino et à exécuter un croquis :

      1. Connexion USB : connectez votre CodeCell à votre PC à l'aide d'un câble USB-C standard. Ce câble alimente la carte et permet également sa reprogrammation.
      2. Installez l'IDE Arduino : Si vous êtes nouveau dans le monde Arduino, ne vous inquiétez pas, téléchargez et installez simplement la dernière version gratuite du logiciel IDE Arduino à partir du site officiel d'Arduino .
      3. Ajouter l'URL du gestionnaire de cartes ESP32 : si vous n'avez jamais utilisé d'ESP32, ouvrez l'IDE Arduino et accédez à « Fichier > Préférences ». Dans le champ « URL supplémentaires du gestionnaire de cartes », saisissez : https://dl.espressif.com/dl/package_esp32_index.json », puis cliquez sur OK. Accédez ensuite à « Outils > Carte > Gestionnaire de cartes ». Recherchez « ESP32 » et cliquez sur « Installer ».
      4. Sélectionnez la carte : L'étape suivante consiste à sélectionner notre carte. Accédez à « Outils > Carte » et choisissez « Module de développement ESP32C3 ». Dans quelques semaines, vous pourrez rechercher directement « CodeCell ». Pour l'instant, sélectionner « Module de développement ESP32C3 » fonctionne parfaitement, car il s'agit du microcontrôleur intégré au CodeCell .
      5. Sélectionnez le port : allez dans « Outils > Port » et sélectionnez le port COM correspondant à votre CodeCell .
      6. Autres paramètres : Accédez à « Outils > USB_CDC_On_Boot » et assurez-vous que cette option est activée si vous prévoyez d'utiliser le moniteur série. Réglez également la fréquence d'horloge sur 160 MHz.

      Une fois votre IDE configuré, vous pouvez maintenant installer la bibliothèque « CodeCell ». Pour cela, allez dans « Sketch > Inclure la bibliothèque > Gérer les bibliothèques » ; le « Gestionnaire de bibliothèques » devrait s'ouvrir. Saisissez simplement « CodeCell » et cliquez sur « Installer » pour télécharger la dernière version de CodeCell .

      Nous mettons continuellement à jour et ajoutons de nouvelles fonctionnalités à cette bibliothèque, alors assurez-vous d'utiliser la dernière version.

      Pour vous familiariser rapidement avec cette bibliothèque, accédez à « Fichier > Exemples > CodeCell », où vous trouverez de nombreux exemples à utiliser et à modifier pour vos projets. Nous vous recommandons de commencer par l'exemple « GettingStarted », qui ne contient que quelques lignes de code, mais qui explique toutes les fonctionnalités de détection disponibles avec CodeCell .

      Après avoir sélectionné un exemple de croquis, cliquez sur le bouton « Télécharger » pour charger le code sur votre CodeCell. Après le téléchargement, ouvrez le Moniteur série « Outils > Moniteur série » pour afficher les données série de votre CodeCell.

      Voici quelques tutoriels CodeCell supplémentaires pour vous aider à démarrer avec diverses applications :

      • Gestes de profondeur
      • Détection de tapotement
      • Proximité
      • Gradation automatique
      • Compteur de pas
      • Contrôle d'angle
      • Activité personnelle devinette
      • Télécommande sans fil
      • Invite d'IA
      • Contrôle de la lumière Alexa

      Fonctions de la bibliothèque CodeCell

      Pour explorer davantage le code, décomposons toutes les fonctions et expliquons ce que fait chacune d'elles :

      Initialisation de CodeCell

      La première étape de l'utilisation du CodeCell Il s'agit de l'initialiser. Pour ce faire, utilisez la fonction `myCodeCell.Init()`, qui permet de spécifier les capteurs à activer.

      Macros de détection disponibles :

      • LUMIÈRE - Active la détection de lumière.
      • MOTION_ACCELEROMETRE - Active la détection de l'accéléromètre.
      • MOUVEMENT_GYRO - Active la détection du gyroscope.
      • MOTION_MAGNETOMETRE - Permet la détection du magnétomètre.
      • MOUVEMENT_LINÉAIRE_ACC - Permet la détection d'accélération linéaire.
      • MOUVEMENT_GRAVITÉ - Active la détection de la gravité.
      • MOUVEMENT_ROTATION - Active la détection de rotation.
      • MOUVEMENT_ROTATION_SANS_MAG - Permet la détection de rotation sans magnétomètre.
      • COMPTEUR_DE_PAS_DE_MOUVEMENT - Active le compteur de pas de marche.
      • ÉTAT_MOUVEMENT - Active la détection de l'état de mouvement.
      • DÉTECTEUR DE MOUVEMENT - Active le détecteur de tapotement.
      • MOTION_ACTIVITY - Active la reconnaissance de l'activité de mouvement.


      Vous pouvez combiner plusieurs macros à l'aide de l'opérateur « + » pour initialiser plusieurs capteurs à la fois.

      Gestion du pouvoir

      Appelez la fonction myCodeCell.Run(frequency) dans la boucle loop() pour gérer l'état de l'alimentation. Cette fonction gère également la LED intégrée pour indiquer l'état de l'alimentation.

      Comportement de la fonction Run() :

      • Cette fonction renvoie vrai à la fréquence spécifiée, entre 10 Hz et 100 Hz, selon la valeur passée. Cette fonction peut être utilisée pour des opérations temporelles. Par exemple, Run(10) renvoie vrai toutes les 10 Hz et Run(100) renvoie vrai toutes les 100 Hz.
      • L'état de la batterie et de l'alimentation est vérifié toutes les 10 Hz. La LED intégrée indique les différents états d'alimentation :
        • Clignotement rouge (clignotement 10 fois) - Tension de la batterie inférieure à 3,3 V, entrée en mode veille jusqu'à ce que le câble USB soit connecté pour le chargement.
        • LED verte (animation respiratoire) - Alimenté par batterie
        • LED bleue (statique) - La batterie est en charge
        • LED verte (statique) - La batterie est complètement chargée
        • LED bleue (animation respiratoire) - Alimentation USB

      Pendant la charge, le CodeCell ferme l'application, allume la LED bleue fixe et attend que la batterie soit complètement chargée. Une fois la charge terminée, la LED devient verte fixe. Une fois le câble débranché, une animation lumineuse verte s'allume, dont la vitesse correspond à la distance de proximité. L'animation s'allume en vert lorsqu'elle est alimentée par la batterie et en bleu lorsqu'elle est alimentée par USB.

      Lecture des données du capteur

      Après avoir initialisé les capteurs, vous pouvez lire leurs données grâce aux différentes fonctions fournies par la bibliothèque. Voici un bref aperçu des fonctions disponibles :

      Fonctions du capteur de lumière :

      • Light_ProximityRead() - Lit la valeur de proximité du capteur de lumière.
      • Light_WhiteRead() - Lit l'intensité de la lumière blanche à partir du capteur de lumière.
      • Light_AmbientRead() - Lit l'intensité lumineuse ambiante à partir du capteur de lumière.

      Fonctions du capteur de mouvement :

      • Motion_AccelerometerRead(float &x, float &y, float &z) - Lit les données d'accélération le long des axes x, y et z.
      • Motion_GyroRead(float &x, float &y, float &z) - Lit les données de vitesse de rotation le long des axes x, y et z.
      • Motion_MagnetometerRead(float &x, float &y, float &z) - Lit les données d'intensité du champ magnétique le long des axes x, y et z.
      • Motion_GravityRead(float &x, float &y, float &z) - Lit les données du vecteur de gravité le long des axes x, y et z.
      • Motion_LinearAccRead(float &x, float &y, float &z) - Lit les données d'accélération linéaire le long des axes x, y et z.
      • Motion_TapRead(uint16_t &x) - Lit le nombre de taps détectés.
      • Motion_StepCounterRead(uint16_t &x) - Lit le nombre de pas comptés.
      • Motion_RotationRead(float &roll, float &pitch, float &yaw) - Lit les données de rotation angulaire (roulis, tangage, lacet).
      • Motion_RotationNoMagRead(float &roll, float &pitch, float &yaw) - Lit les données de rotation angulaire sans utiliser le magnétomètre.
      • Motion_StateRead(uint16_t &x) - Lit l'état actuel (par exemple, Sur table, Stationnaire, Mouvement).
      • Motion_ActivityRead(uint16_t &x) - Lit l'activité en cours (par exemple, conduite, marche, course).

      Exemple d'utilisation :


      Fonctions veille, économie d'énergie, diagnostic et LED

      Le CodeCell comprend plusieurs fonctions pour gérer les modes veille et économie d'énergie :

      • WakeUpCheck() - Vérifie la raison du réveil de l'appareil. Si l'appareil se réveille suite à un événement de minuterie, renvoie « true » ; sinon, renvoie « false ».
      • Sleep(uint16_t sleep_sec) - Place l'appareil en veille prolongée pendant une durée spécifiée en secondes. Il configure les broches et capteurs nécessaires à une faible consommation d'énergie avant de passer en mode veille.
      • USBSleep(bool cable_polarity) - Gère le mode veille de l'appareil lorsque le niveau de batterie est faible ou lorsqu'il est en charge via USB. Il ferme l'application et prépare l'appareil à la mise en veille pour permettre une reprogrammation si nécessaire.
      • PrintSensors() – Imprime les relevés actuels de tous les capteurs initialisés sur le moniteur série. Cette fonction est particulièrement utile pour le débogage et l'enregistrement des données.
      • BatteryRead() - Cette fonction lit et renvoie la tension de la batterie lorsque le port USB-C est déconnecté.
      • LED_Breathing(uint32_t rgb_color_24bit) - Cette fonction est utilisée dans le gestionnaire Run() pour contrôler la LED intégrée et créer un effet de respiration d'une couleur spécifique. Le paramètre `rgb_color_24bit` est une valeur de couleur 24 bits représentant la couleur RVB. Soyez prudent lorsque vous utilisez cette fonction, car la fonction 'Run' pourrait écraser la couleur de votre LED.
      • LED(uint8_t r, uint8_t g, uint8_t b) - Cette fonction définit la couleur de la LED adressable intégrée selon le modèle RVB, où « r », « g » et « b » sont des valeurs 8 bits représentant les composantes rouge, verte et bleue de la couleur. Chaque composante est comprise entre 0 et 255. Soyez prudent lorsque vous utilisez cette fonction, car la fonction « Exécuter » risque d'écraser la couleur de votre LED.

      Félicitations!

      Vous avez maintenant fait vos premiers pas avec CodeCell . Explorez les exemples de la bibliothèque, explorez les intégrations de capteurs et donnez vie à vos projets innovants avec CodeCell !



      • Partager:

      Partage

      Github

      • À propos
      • Logiciel
      • Éducation
      • Contact
      • FAQ
      • Termes
      • Politique de remboursement
      • politique de confidentialité

      Soyez le premier informé des nouveaux projets et bénéficiez d'offres intéressantes !

      © 2025 Microbots.