Menu
Microbots
0
  • Apprendre
  • Boutique
    • Modules et technologies
    • Maker-Packs
    • Outils et engrenages
    • Robots & Displays
    • Tous les produits
  • Communauté
    • Education
    • Software
  • À propos
    • Notre histoire
    • Tendez la main
    • FAQ
  • français
  • Votre panier est vide
Microbots
  • Apprendre
  • Boutique
    • Modules et technologies
    • Maker-Packs
    • Outils et engrenages
    • Robots & Displays
    • Tous les produits
  • Communauté
    • Education
    • Software
  • À propos
    • Notre histoire
    • Tendez la main
    • FAQ
  • Langue

  • 0 0

Apprendre

MotorCell Basics: Your First Steps

Les bases de MotorCell : vos premiers pas

MotorCell est un moteur PCB ultra-compact et sans arbre conçu pour les applications à grande vitesse et à faible couple. Avec sa conception innovante en forme de crêpe et ses enroulements PCB plans, MotorCell est parfait pour la robotique, les installations artistiques et les projets de bricolage. Ce moteur simplifie l'intégration en utilisant un contrôle sans capteur avec des réglages de vitesse PWM.

Tutoriel vidéo complet à venir

Dans ce tutoriel, nous aborderons :

  • Qu'est-ce que MotorCell et comment fonctionne-t-il ?
  • Configuration de votre MotorCell
  • Démarrer avec sa bibliothèque Arduino
  • Exemples de projets pour donner vie à MotorCell

Qu'est-ce que MotorCell ?

Le MotorCell réinvente la conception des moteurs en intégrant le rotor, le stator et le driver dans un seul circuit imprimé plat. Cette structure unique :

  • Réduit la taille à quelques millimètres d'épaisseur.
  • Fournit un contrôle de vitesse via PWM et également un retour de vitesse.
  • Fonctionne sans capteur, ce qui signifie moins de composants et une configuration plus facile.
  • Simplifie l'intégration avec les broches à pas standard.

MotorCell est idéal pour les applications qui nécessitent des moteurs petits, légers et compacts, tels que la petite robotique, l'art cinétique ou même les gadgets portables.

Configuration de votre Mo torCell

Pour commencer, suivez ces étapes :

  • Connecter votre MotorCell

Épingles :

  • IN : connectez-vous à VDD (pour une vitesse maximale) ou à une broche GPIO compatible PWM sur votre microcontrôleur pour contrôler la vitesse du moteur.
  • OUT : Facultatif pour la lecture du régime moteur de la cellule - nécessite une résistance de rappel (résistance de rappel interne configurée automatiquement par la bibliothèque MotorCell)
  • FR : Facultatif pour contrôler la direction du moteur - connectez-vous à VDD, GND ou à une broche GPIO pour la commutation avant/arrière.
  • GND : connectez à la broche de terre.
  • VDD : connectez la broche d'alimentation 2,5 V à 5 V
  • Installation de la bibliothèque MotorCell

Ouvrez l'IDE Arduino, allez dans Sketch > Inclure la bibliothèque > Gérer les bibliothèques , recherchez « MotorCell » et installez-le. Ensuite, incluez-le dans votre code et configurez vos broches :

 #include "MotorCell.h"

 #define IN_PIN 2
 #define OUT_PIN 3
 #define FR_PIN 1

 MotorCell myMotorCell(IN_PIN, OUT_PIN, FR_PIN);

 void setup() {
 myMotorCell.Init(); // Initialize the MotorCell
 }

Fonctions de la bibliothèque MotorCell

Voici les fonctions principales de la bibliothèque MotorCell :

  • Init() : configure la MotorCell pour le fonctionnement.
myMotorCell.Init();
  • Spin(uint8_t speed_percent) : fait tourner le moteur à une vitesse spécifiée (0–100 %).
 uint16_t rpm = myMotorCell.Spin(50); // Spin at 50% speed
  • SpinPID(uint16_t target_rpm) : maintient un régime cible à l'aide du contrôle PID (nécessite ESP32/CodeCell).
 uint16_t rpm = myMotorCell.SpinPID(12000); // Maintain 12,000 RPM
  • ReverseSpin() : Inverse le sens du moteur.
 myMotorCell.ReverseSpin();
  • Pulse(uint8_t p_pin, uint8_t ms_duration) : envoie une courte impulsion à la broche spécifiée pendant une durée donnée (en millisecondes). Utile pour les rafales de mouvement rapides ou les signaux momentanés.

     myMotorCell.Pulse(FR_PIN, 50); // Sends a 50ms pulse to the FR_PIN
    
  • RPMRead() : lit le régime actuel du moteur.
 uint16_t currentRPM = myMotorCell.RPMRead();
  • MaxSpin() : fait tourner le moteur à la vitesse maximale.
 myMotorCell.MaxSpin();

Exemple de projet : surveillance du régime moteur

Voici un projet simple pour vous aider à démarrer :

 #include "MotorCell.h"

 #define IN_PIN 2
 #define OUT_PIN 3
 #define FR_PIN 4

 MotorCell myMotorCell(IN_PIN, OUT_PIN, FR_PIN);

 void setup() {
 Serial.begin(115200);
 myMotorCell.Init();
 }

 void loop() {
 uint16_t rpm = myMotorCell.Spin(50); // Spin at 50% speed
 }

Plus d'exemples disponibles sur github , mais si vous avez des questions sur MotorCell, n'hésitez pas à nous contacter !

Voir l'article entier

CodeCell Basics: Your First Steps

Notions de base sur CodeCell : vos premiers pas

Si vous venez de mettre la main sur le CodeCell , vous allez vous régaler. Ce petit module est conçu pour simplifier vos projets de bricolage avec de multiples fonctionnalités regroupé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
  • Commencer 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 doté de l'ESP32-C3, de plusieurs options d'alimentation et de capteurs intégrés, le tout dans un format minuscule de 1,85 cm de large. Ces caractéristiques en font un outil puissant pour une large gamme d'applications.

Dans cette première section, nous commencerons par nous familiariser avec les circuits qui composent le CodeCell . Ensuite, nous passerons en revue les étapes simples pour configurer votre CodeCell .

Module ESP32C3

Au cœur du CodeCell se trouve le module ESP32C3, un microcontrôleur compact connu pour être facile à utiliser dans le domaine de l'IoT. Il combine une architecture compatible Arduino avec des fonctionnalités Wi-Fi et Bluetooth Low Energy (BLE) intégrées. Cette intégration offre les options de connectivité les plus populaires tout en conservant un format compact.

L'antenne PCB du module ESP32C3 est positionnée sur un côté, à l'écart des autres composants, pour minimiser les interférences et améliorer la transmission et la réception du signal. Ce placement permet de réduire l'impact des plans de masse ou d'autres surfaces conductrices qui pourraient dégrader les performances de l'antenne. Les composants situés sur la face inférieure sont maintenus dans la distance recommandée pour l'antenne. D'après les tests, nous avons constaté que les performances de l'antenne ne sont pas affectées par l'interférence minimale d'un câble USB-C, car ces câbles sont généralement blindés.

L'ESP32-C3 offre une mémoire importante, avec 4 Mo de Flash et 400 Ko de SRAM, ce qui lui permet d'exécuter la plupart des applications courantes. Son processeur monocœur RISC-V 32 bits, fonctionnant jusqu'à 160 MHz, gère efficacement diverses tâches. Cette combinaison de mémoire et de puissance de traitement rend l'ESP32-C3 adapté à une large gamme 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é en termes d'options d'alimentation. Il peut être alimenté via le connecteur de batterie LiPo, un câble USB-C ou 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 de la court-circuiter accidentellement.

Le port USB-C a une double fonction : il sert à la fois à alimenter l'appareil et/ou à le reprogrammer. Cette option multi-alimentation est activée via la puce de gestion de batterie BQ24232, qui dispose d'une gestion dynamique du chemin d'alimentation (DPPM) qui peut alimenter le système tout en chargeant simultanément et indépendamment la batterie. Le processus de charge de la batterie est géré 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 via la puce BQ24232. Cette sortie prend en charge 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 via USB.

Par défaut, le courant de charge de la batterie LiPo est réglé à 90 mA, ce qui garantit un taux de charge équilibré et sûr pour la batterie LiPo optionnelle de 170 mAh. De plus, pour ceux qui souhaitent ajuster le taux de charge, la résistance 0402 R12 doit être dessoudée et remplacée par une nouvelle résistance basée sur la formule (R = 870/Ichrg). Ceci est uniquement recommandé pour les professionnels de la soudure, qui n'ont pas peur de se battre avec de minuscules composants 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 processus d'application, allume la LED en bleu et attend que la batterie soit complètement chargée. Une fois complètement chargée, la LED effectue une animation lumineuse, 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 prise en charge par plusieurs condensateurs de découplage, dont jusqu'à deux condensateurs de masse de 100 µF chacun, placés à côté 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 protège la tension d'entrée USB 5 V (Vin) et l'autre protège la tension de sortie (Vo). Ces diodes TVS offrent une protection contre les décharges électrostatiques (ESD), capables d'absorber en toute sécurité les décharges électrostatiques répétitives au-dessus du niveau maximal spécifié dans la norme internationale IEC 61000-4-2 sans dégradation des performances.

La carte comprend également un régulateur LDO (Low Dropout) de 3,3 V intégré, qui fournit une alimentation stable à ses composants basse tension. Cette minuscule puce LDO NCP177 peut produire jusqu'à 500 mA de courant de sortie avec une tension de chute généralement faible de 200 mV à 500 mA.

    GPIO et broches d'alimentation

    Étant donné la conception compacte, le principal défi consistait à maximiser l'utilisation des broches GPIO. Nous avons abordé ce problème en divisant chacun des trois côtés disponibles du CodeCell en différentes sections d'E/S en fonction de leurs applications. Nous avons également placé des broches d'alimentation le long des bords du module pour une connexion facile à diverses sources d'alimentation, vous permettant ainsi de connecter d'autres modules, capteurs et actionneurs à différents côtés.

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

    Les deux autres côtés ont chacun une broche de masse (GD) et une broche de sortie de tension (VO). Chaque côté comporte également 3 broches GPIO programmables (IO1, IO2, IO3, IO5, IO6, IO7), qui peuvent toutes être configurées comme broches PWM ( idéales pour connecter directement un pont en H pour le contrôle de l'actionneur/moteur ). IO1, IO2 et IO3 peuvent également être utilisés comme broches ADC.

    Capacités de détection

    Les fonctionnalités remarquables du CodeCell incluent ses capteurs intégrés. Chaque unité est équipée d'un capteur de lumière intégré et un capteur de mouvement en option est également disponible pour améliorer la détection de mouvement de votre projet, ce qui est particulièrement utile pour la robotique et les objets connectés !

    • Capteur de lumière VCNL4040 : Ce capteur mesure à la fois les niveaux de luminosité et la proximité jusqu'à 20 cm. Il présente une conception haute résolution 16 bits qui combine un capteur de proximité, un capteur de lumière ambiante et un IRED haute puissance dans un boîtier compact. En intégrant des photodiodes, des amplificateurs et un convertisseur analogique-numérique sur une seule puce, il offre des fonctionnalités améliorées. La configuration I2C est directement intégrée dans la bibliothèque CodeCell , ce qui garantit que le capteur est automatiquement initialisé pour optimiser sa résolution de détection.
    • Capteur de mouvement 9 axes BNO085 en option : Ce capteur IMU avancé est une mise à niveau coûteuse, mais nous pensons que l'investissement en vaut la peine ! Il met à niveau les capacités du CodeCell avec un accéléromètre à 3 axes intégré, un gyroscope à 3 axes et un magnétomètre à 3 axes + 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, comme : Lecture de rotation angulaire (roulis, tangage, lacet), État de mouvement (par exemple, sur table, stationnaire, mouvement), Activité de mouvement (par exemple, conduite, marche, course), Lectures d'accéléromètre, Lecture de gyroscope, Lecture de magnétomètre, Lecture de gravité, Lecture d'accélération linéaire, Détection de tapotement, Compteur de pas. 

    Nous verrons ensuite 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 à la fois un bouton RST (Reset) et un bouton BOOT pour mettre manuellement l'appareil en mode programmation. Cependant, l'ESP32-C3, comme celui du module CodeCell, peut entrer automatiquement en mode boot via l'interface série lors de l'utilisation de l'IDE Arduino. Cela signifie que le CodeCell n'a pas besoin de boutons RST ou BOOT dédiés, ce qui nous a permis de le rendre aussi petit qu'il l'est.

    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 à passer en mode démarrage pour reflasher le firmware. Pour ce faire, 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 votre 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 fournit un large éventail de fonctions pour l'initialisation, la lecture et la gestion des capteurs et de l'alimentation. Dans cette section, nous allons vous expliquer 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 ce que vous trouverez à l'intérieur de la boîte. Selon les options que vous avez sélectionnées lors du paiement, vous trouverez dans la boîte :

      1. CodeCell : la star du spectacle, votre petite mais puissante carte 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 sélection 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 un 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 si vous souhaitez 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 que votre CodeCell est alimenté, il devrait :

      • Initialisation : elle configure les périphériques internes et les capteurs embarqués. Une fois cette opération terminée, elle affiche un message Hello World sur le moniteur série.
      • Vérification de l'alimentation : il 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 pour la charge, il exécutera une animation lumineuse respiratoire avec la LED RVB intégrée. La vitesse de l'animation change en fonction de la proximité du capteur de lumière ~ Rapprochez votre main pour ralentir. Éloignez votre main pour accélérer à nouveau ! 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 statique jusqu'à ce qu'elle soit complètement chargée.

      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 permet non seulement d'alimenter la carte, mais également de la reprogrammer.
      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. Allez dans « Outils > Carte » et choisissez « ESP32C3 Dev Module ». Dans quelques semaines, vous pourrez rechercher directement « CodeCell », mais pour l'instant, sélectionner « ESP32C3 Dev Module » fonctionne parfaitement, car il s'agit du microcontrôleur utilisé à bord du CodeCell .
      5. Sélectionner 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 qu'il est activé si vous prévoyez d'utiliser le moniteur série. Réglez également la vitesse d'horloge sur 160 MHz.

      Une fois votre IDE configuré, nous pouvons maintenant procéder à l'installation de la bibliothèque « CodeCell ». Pour ce faire, allez dans « Sketch > Inclure la bibliothèque > Gérer les bibliothèques » - le « Gestionnaire de bibliothèques » devrait s'ouvrir. Tapez 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 plusieurs exemples que vous pouvez utiliser et modifier pour vos projets. Nous vous recommandons de commencer par l'exemple « GettingStarted », qui ne contient que quelques lignes de code mais explique toutes les fonctionnalités de détection disponibles avec CodeCell .

      Une fois que vous avez sélectionné un exemple de croquis, cliquez sur le bouton « Télécharger » pour flasher le code sur votre CodeCell. Après le téléchargement, ouvrez le moniteur série « Outils > Moniteur série » pour voir 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 de devinettes
      • 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 consiste à l'initialiser. Cela se fait à l'aide de la fonction `myCodeCell.Init()`, qui vous permet de spécifier les capteurs que vous souhaitez activer.

      Macros de détection disponibles :

      • LUMIÈRE - Active la détection de lumière.
      • MOTION_ACCELEROMETRE - Active la détection par 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_MOUVEMENT - Active le compteur de pas de marche.
      • ETAT_MOUVEMENT - Active la détection de l'état de mouvement.
      • DÉTECTEUR DE MOUVEMENT_TAP - 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 true à la fréquence spécifiée, entre 10 Hz et 100 Hz, selon la valeur transmise, ce qui peut être utilisé pour des opérations basées sur le temps. Par exemple, Run(10) renvoie true tous les 10 Hz et Run(100) renvoie true tous les 100 Hz.
      • L'état de la batterie et de l'alimentation est vérifié tous les 10 Hz. Il contrôle la LED embarquée pour indiquer 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 de respiration) - Alimenté par batterie
        • LED bleue (statique) – La batterie est en charge
        • LED verte (statique) - La batterie est complètement chargée
        • LED bleue (animation de respiration) - Alimentation USB

      Pendant la charge, le CodeCell ferme l'application, allume la LED statique en bleu et attend que la batterie soit complètement chargée. Une fois complètement chargée, elle devient verte statique. Une fois le câble déconnecté, elle démarre une animation de lumière verte avec une vitesse correspondant à 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 via USB.

      Lecture des données du capteur

      Après avoir initialisé les capteurs, vous pouvez lire leurs données à l'aide de diverses 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, il renvoie « true » ; sinon, il renvoie « false »
      • Sleep(uint16_t sleep_sec) - Met l'appareil en mode veille profonde pendant une durée spécifiée en secondes. Il configure les broches et les capteurs nécessaires pour 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 la batterie est faible ou lorsque l'appareil se charge via l'alimentation USB. Il arrête 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 avec une couleur spécifique. Le paramètre `rgb_color_24bit` est une valeur de couleur 24 bits représentant la couleur RVB. Lorsque vous utilisez cette fonction, soyez prudent car la fonction 'Run' peut é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 à l'aide du modèle RVB où « r », « g » et « b » sont des valeurs 8 bits représentant les composants rouge, vert et bleu de la couleur. Chaque composant est compris entre 0 et 255. Lorsque vous utilisez cette fonction, soyez prudent car la fonction « Exécuter » peut écraser la couleur de votre LED.

      Félicitations!

      Vous avez maintenant fait vos premiers pas avec CodeCell . Plongez plus profondément dans les exemples de la bibliothèque, explorez les intégrations de capteurs et commencez à donner vie à vos projets innovants avec CodeCell !



      Voir l'article entier

      CoilPad Basics: Your First Steps

      Notions de base sur CoilPad : vos premiers pas

      Le CoilPad est un actionneur incroyablement fin et innovant qui apporte du mouvement à vos projets dans un format compact. Pour comprendre son fonctionnement, plongeons-nous dans sa conception unique et les principes qui sous-tendent son fonctionnement.

      Dans ce tutoriel, nous expliquerons :

      • Qu'est-ce qu'un CoilPad et comment ça marche ?
      • Comment contrôler sa polarité, sa position et sa vitesse
      • Fabrication du CoilPad plus interactif avec les capteurs CodeCell

      Qu'est-ce qu'un CoilPad ?

      Le CoilPad est un actionneur constitué d'une bobine plane flexible qui adhère parfaitement à toute surface lisse. En ajoutant un aimant, il se transforme en un appareil capable de mouvement magnétique, de bourdonnement ou même de chauffage. Il est conçu pour convertir facilement l'énergie électrique en mouvement mécanique.

      Comment ça marche ?

      Le CoilPad est doté d'une bobine plate et ultra-mince qui interagit avec des aimants externes. Lorsqu'un courant électrique traverse la bobine, il génère un champ magnétique qui attire ou repousse l'aimant, provoquant ainsi un mouvement. En alternant la direction du courant, vous pouvez contrôler le mouvement du CoilPad. L'application d'un signal d'onde carrée fait osciller le CoilPad en continu, avec une vitesse et une intensité réglables. Pour des mouvements organiques fluides, nous explorerons la bibliothèque DriveCell PWM.

      Installation de CoilPad

      La conception du CoilPad facilite son installation. Il est doté d'un dos adhésif pelable, garantissant qu'il reste fermement fixé sur toute surface lisse.

      Faire bouger votre CoilPad

      Vous pouvez commencer à le tester en tirant l'une de ses broches sur 5 V et l'autre sur la terre, puis en les intervertissant. Dans un cas, l'aimant sera repoussé et dans l'autre, il sera attiré. Vous pouvez le connecter à vos propres transistors ou à votre module de pont en H pour commuter ces broches automatiquement. Cependant, pour le rendre encore plus facile, vous pouvez acheter notre petit module DriveCell . Le DriveCell est un pilote de pont en H compact, compatible broche à broche, qui simplifie le processus de contrôle des actionneurs comme le CoilPad . Sa bibliothèque logicielle Arduino open source facilite le contrôle des actionneurs, en particulier pour les débutants, en fournissant des fonctions logicielles simples et des exemples faciles à suivre.

      Pour un guide détaillé sur la bibliothèque logicielle DriveCell , consultez cet article . Mais voici un bref récapitulatif de la façon dont vous pouvez utiliser ses fonctions pour améliorer l'actionnement du CoilPad . Ne vous inquiétez pas, c'est assez simple ! Commencez par télécharger la bibliothèque « DriveCell » à partir du gestionnaire de bibliothèques d'Arduino. Une fois installée, vous serez prêt à contrôler votre appareil. Avant de commencer, assurez-vous de connecter le DriveCell à votre microcontrôleur. Nous vous recommandons d'utiliser un CodeCell, qui est compatible broche à broche, prend en charge toutes les fonctions de la bibliothèque et peut ajouter un contrôle sans fil et une détection interactive à votre CoilPad .

      1. Init()

      Tout d’abord, nous avons besoin d’un code de configuration de base pour vous permettre de démarrer :

       #include <DriveCell.h> // This line includes the DriveCell library
      
       DriveCell myCoilPad(IN1, IN2); // Replace IN1 and IN2 with your specific pins
      
       void setup() {
       myCoilPad.Init(); // Initializes your DriveCell connected to a CoilPad
       }
      

      Ce code donne le nom « myCoilPad » à votre DriveCell et lui indique de démarrer et d'initialiser tous les périphériques nécessaires.

      2. Impulsion (bool direction, uint8_t ms_duration)

      Cette fonction envoie une brève décharge de puissance au CoilPad selon une polarité spécifiée. Cette mise sous tension et hors tension rapide peut provoquer un mouvement bref et brusque du CoilPad , selon la polarité.

      myCoilPad.Pulse(1, 10); // Sends a short burst for 10 milliseconds in the specified direction

      3. Buzz (uint16_t us_buzz)

      Cette fonction fait vibrer le CoilPad comme un buzzer, ce qui est utile pour créer un retour sonore.

       myCoilPad.Buzz(100); // Makes the CoilPad buzz with a 100 microsecond pulses
      

      4. Tonalité()

      La fonction Tone permet au CoilPad de jouer un son. Elle peut être utilisée pour un retour sonore ou pour des applications créatives où le son fait partie de l'interaction.

       myCoilPad.Tone(); // Plays a tone by varying the frequency
      

      5. Basculer(uint8_t power_percent)

      Cette fonction bascule la polarité du CoilPad , ce qui peut être utile pour créer un mouvement de battement rapide ou inverser rapidement la direction dans votre code.

       myCoilPad.Toggle(100); // Toggles direction at 100% power

      6. Exécuter(bool smooth, uint8_t power_percent, uint16_t flip_speed_ms)

      Cette fonction vous permet d'inverser en continu la polarité du CoilPad et de contrôler sa vitesse de mouvement et sa fluidité. Si smooth est définie sur true , l'actionnement sera moins brusque et lissé, ce qui est idéal pour les mouvements plus lents et contrôlés.

       myCoilPad.Run(true, 50, 1000); // Runs the CoilPad smoothly at 50% power, flipping every 1000 milliseconds

      7. Drive(bool direction, uint8_t power_percent)

      Cette fonction vous permet de contrôler la polarité du CoilPad et l'intensité de son champ magnétique en ajustant le niveau de puissance.

       myCoilPad.Drive(true, 75); // Moves the CoilPad forward at 75% power

      Exemples :

      Voici un exemple où nous configurons deux CoilPads et les actionnons à deux vitesses différentes :

       #include <DriveCell.h>
      
       #define IN1_pin1 2
       #define IN1_pin2 3
       #define IN2_pin1 5
       #define IN2_pin2 6
      
       DriveCell CoilPad1(IN1_pin1, IN1_pin2);
       DriveCell CoilPad2(IN2_pin1, IN2_pin2);
      
       uint16_t c_counter = 0;
      
       void setup() {
       CoilPad1.Init();
       CoilPad2.Init();
      
       CoilPad1.Tone();
       CoilPad2.Tone();
       }
      
       void loop() {
       delay(1);
       c_counter++;
       if (c_counter < 2000U) {
       CoilPad1.Run(0, 100, 100);
       CoilPad2.Run(0, 100, 100);
       }
       else if (c_counter < 8000U) { 
      CoilPad1.Run(1, 100, 1000);
       CoilPad2.Run(1, 100, 1000);
       } autre {
       c_counter = 0U;
       }
       }

      Combinaison avec les capteurs CodeCell

      Pour rendre le projet encore plus interactif, vous pouvez combiner le CoilPad et le DriveCell avec le minuscule module de capteur CodeCell. CodeCell est compatible broche à broche avec DriveCell , prend en charge toutes les fonctions de la bibliothèque et peut ajouter un contrôle sans fil et une détection interactive à votre projet. Cela vous permet de créer des éléments plus avancés et plus réactifs avec vos actionneurs CoilPad .

      Avec cet exemple, le CodeCell contrôle deux CoilPad qui arrêtent de battre des ailes lorsqu'une proximité est détectée. Leur champ magnétique est ajusté de manière dynamique en fonction de la proximité de vos mains. Si aucune main n'est détectée, il inverse la polarité du CoilPad toutes les 400 millisecondes.

       #include <CodeCell.h>
       #include <DriveCell.h>
      
       #define IN1_pin1 2
       #define IN1_pin2 3
       #define IN2_pin1 5
       #define IN2_pin2 6
      
       DriveCell CoilPad1(IN1_pin1, IN1_pin2);
       DriveCell CoilPad2(IN2_pin1, IN2_pin2);
      
       CodeCell myCodeCell;
      
       void setup() {
       Serial.begin(115200);
      
       /* Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial. */
       
      myCodeCell.Init(LIGHT); /*Initialise la détection de lumière*/
      
       CoilPad1.Init();
       CoilPad2.Init();
      
       CoilPad1.Tone();
       CoilPad2.Tone();
       }
      
       boucle vide() {
       si (myCodeCell.Run()) {
       /*S'exécute toutes les 100 ms*/
       uint16_t proximité = myCodeCell.Light_ProximityRead();
       Serial.println(proximité);
       si (proximité < 100) {
       CoilPad1.Run(1, 100, 400);
       CoilPad2.Run(1, 100, 400);
       } autre {
       proximité = proximité - 100 ;
       proximité = proximité / 10 ;
       si (proximité > 100) {
       proximité = 100;
       }
       CoilPad1.Drive(0, (proximité));
       CoilPad2.Drive(0, (proximité));
       }
       }
       }
      

      N'hésitez pas à modifier le code avec vos propres idées créatives ou à ajouter une détection de mouvement pour une nouvelle réaction ! Commencez dès aujourd'hui avec nos bibliothèques Arduino ! Si vous avez d'autres questions sur le CoilPad, n'hésitez pas à nous envoyer un e-mail et nous serons heureux de vous aider !

      Voir l'article entier

      FlatFlap Basics: Your First Steps

      Les bases de FlatFlap : vos premiers pas

      Le FlatFlap est un actionneur incroyablement fin et innovant qui apporte du mouvement à vos projets dans un format compact. Pour comprendre son fonctionnement, plongeons-nous dans sa conception unique et les principes qui sous-tendent son fonctionnement.

      Dans ce tutoriel, nous expliquerons :

      • Qu'est-ce qu'un FlatFlap et comment ça marche ?
      • Comment contrôler sa polarité, sa position et sa vitesse
      • Fabriquer le FlatFlap plus interactif avec les capteurs CodeCell


      Qu'est-ce qu'un FlatFlap ?

      C'est plat et c'est un volet ~ le FlatFlap est un actionneur fabriqué à partir d'un circuit imprimé flexible et de raidisseurs en aluminium, pliés ensemble pour créer un mouvement de battement à faible force. Son système magnétique convertit l'énergie électrique en mouvement mécanique.

      Comment ça marche ?

      Le FlatFlap est doté d'un aimant en néodyme N52 fin de 10 mm à l'arrière, qui interagit avec la bobine de cuivre plane intégrée dans le PCB flexible. Lorsqu'un courant électrique traverse la bobine, il génère un petit champ magnétique qui attire ou repousse l'aimant, provoquant le mouvement du volet. En alternant la direction du courant, vous pouvez contrôler le mouvement de battement de l'actionneur. L'application d'un signal d'onde carrée permet au FlatFlap de se rabattre en continu, avec des vitesses allant jusqu'à 25 Hz. Pour des mouvements organiques fluides, nous explorerons la bibliothèque DriveCell PWM.

      Installation de FlatFlap

      La conception FlatFlap facilite l'installation. Il est doté d'un dos adhésif pelable et de vis M1.2 en option (incluses) pour plus de sécurité, garantissant qu'il reste fermement fixé à n'importe quelle surface, qu'elle soit lisse ou texturée. L'adhésif est 3M467, qui offre une forte adhérence mais peut être retiré avec une pince à épiler si nécessaire.

      Faire bouger votre FlatFlap

      Si vous avez acheté le FlatFlap en tant qu'actionneur autonome, vous pouvez commencer par tirer l'une de ses broches sur 5 V et l'autre sur la terre, puis les inverser. Dans un cas, le volet sera repoussé et dans l'autre, il sera attiré. Vous pouvez le connecter à vos propres transistors ou à votre module de pont en H pour commuter ces broches automatiquement. Cependant, pour rendre les choses encore plus faciles, vous pouvez acheter le FlatFlap directement soudé à notre petit module DriveCell . Le DriveCell est un pilote de pont en H compact, compatible broche à broche, qui simplifie le processus de contrôle des actionneurs comme le FlatFlap . Sa bibliothèque logicielle Arduino open source facilite le contrôle des actionneurs, en particulier pour les débutants, en fournissant des fonctions logicielles simples et des exemples faciles à suivre.

      Pour un guide détaillé sur la bibliothèque logicielle DriveCell , consultez cet article . Mais voici un bref récapitulatif de la façon dont vous pouvez utiliser ses fonctions pour améliorer l'actionnement du FlatFlap . Ne vous inquiétez pas, c'est assez simple ! Commencez par télécharger la bibliothèque « DriveCell » à partir du gestionnaire de bibliothèques d'Arduino. Une fois installée, vous serez prêt à contrôler votre appareil. Avant de commencer, assurez-vous de connecter le DriveCell à votre microcontrôleur. Nous vous recommandons d'utiliser un CodeCell, qui est compatible broche à broche, prend en charge toutes les fonctions de la bibliothèque et peut ajouter un contrôle sans fil et une détection interactive à votre FlatFlap .

      1. Init()

      Nous avons d’abord besoin d’un code de configuration de base pour vous permettre de démarrer :

       #include <DriveCell.h> // This line includes the DriveCell library
      
       DriveCell myFlatFlap(IN1, IN2); // Replace IN1 and IN2 with your specific pins
      
       void setup() {
       myFlatFlap.Init(); // Initializes your DriveCell connected to a FlatFlap
       }
      

      Ce code donne le nom « myFlatFlap » à votre DriveCell et lui indique de démarrer et d'initialiser tous les périphériques nécessaires.

      2. Impulsion (bool direction, uint8_t ms_duration)

      Cette fonction envoie une brève décharge de courant au FlatFlap selon une polarité spécifiée. Cette mise sous tension et hors tension rapide peut provoquer un mouvement bref et brusque du FlatFlap , selon la polarité.

       myFlatFlap.Pulse(1, 10); // Sends a short burst for 10 milliseconds in the specified direction

      2. Buzz (uint16_t us_buzz)

      Cette fonction fait vibrer le FlatFlap comme un buzzer, ce qui est utile pour créer un retour sonore.

       myFlatFlap.Buzz(100); // Makes the FlatFlap buzz with a 100 microsecond pulses
      

      3. Tonalité()

      La fonction Tone permet au FlatFlap de jouer un son. Elle peut être utilisée pour un retour sonore ou pour des applications créatives où le son fait partie de l'interaction.

       myFlatFlap.Tone(); // Plays a tone by varying the frequency
      

      4. Basculer (uint8_t power_percent)

      Cette fonction change la direction de FlatFlap , ce qui peut être utile pour créer un mouvement de battement rapide ou inverser rapidement la direction dans votre code.

       myFlatFlap.Toggle(100); // Toggles direction at 100% power

      5. Exécuter(bool smooth, uint8_t power_percent, uint16_t flip_speed_ms)

      Cette fonction vous permet d'inverser en continu la polarité du FlatFlap et de contrôler sa vitesse de mouvement et sa fluidité. Si smooth est défini sur true , le battement sera moins net et lissé, ce qui est idéal pour des mouvements plus lents et contrôlés.

       myFlatFlap.Run(true, 50, 1000); // Runs the FlatFlap smoothly at 50% power, flipping every 1000 milliseconds

      6. Drive(bool direction, uint8_t power_percent)

      Cette fonction vous permet de contrôler la polarité et la position angulaire du FlatFlap en ajustant le niveau de puissance, en ajustant essentiellement la force de l'attraction ou de la poussée magnétique.

      myFlatFlap.Drive(true, 75); // Moves the FlatFlap forward at 75% power

      Exemples :

      Voici un exemple dans lequel nous configurons deux FlatFlaps et les faisons voleter à des vitesses différentes :

       #include <DriveCell.h>
      
       #define IN1_pin1 2
       #define IN1_pin2 3
       #define IN2_pin1 5
       #define IN2_pin2 6
      
       DriveCell FlatFlap1(IN1_pin1, IN1_pin2);
       DriveCell FlatFlap2(IN2_pin1, IN2_pin2);
      
       uint16_t flap_counter = 0;
      
       void setup() {
       FlatFlap1.Init();
       FlatFlap2.Init();
      
       FlatFlap1.Tone();
       FlatFlap2.Tone();
       }
      
       void loop() {
       delay(1);
       flap_counter++;
       if (flap_counter < 2000U) {
       FlatFlap1.Run(0, 100, 100);
       FlatFlap2.Run(0, 100, 100);
       }
       else if (flap_counter < 8000U) {
       FlatFlap1.Run(1, 100, 1000);
       FlatFlap2.Run(1, 100, 1000);
       } else {
       flap_counter = 0U;
       FlatFlap1.Drive(0, 100);
       FlatFlap2.Drive(1, 100);
       delay(500);
       FlatFlap1.Drive(1, 100);
       FlatFlap2.Drive(1, 100);
       delay(500);
       FlatFlap1.Drive(1, 100);
       FlatFlap2.Drive(0, 100);
       delay(500); 
      FlatFlap1.Drive(1, 100);
       FlatFlap2.Drive(1, 100);
       délai(500);
       FlatFlap1.Drive(0, 100);
       FlatFlap2.Drive(0, 100);
       délai(500);
       FlatFlap1.Drive(1, 100);
       FlatFlap2.Drive(1, 100);
       délai(500);
       FlatFlap1.Tone();
       FlatFlap2.Tone();
       }
       } 

      Combinaison avec les capteurs CodeCell

      Pour rendre le projet encore plus interactif, vous pouvez combiner le FlatFlap et le DriveCell avec le minuscule module de capteur CodeCell. CodeCell est compatible broche à broche avec DriveCell , prend en charge toutes les fonctions de la bibliothèque et ajoute un contrôle sans fil et une détection interactive à votre projet. Cela vous permet de créer des éléments plus avancés et plus réactifs avec vos actionneurs FlatFlap .

      Avec cet exemple, le CodeCell contrôle deux FlatFlap qui arrêtent de battre des ailes lorsqu'une proximité est détectée. Leur angle est ajusté de manière dynamique en fonction de la proximité de vos mains.

       #include <CodeCell.h>
       #include <DriveCell.h>
      
       #define IN1_pin1 2
       #define IN1_pin2 3
       #define IN2_pin1 5
       #define IN2_pin2 6
      
       DriveCell FlatFlap1(IN1_pin1, IN1_pin2);
       DriveCell FlatFlap2(IN2_pin1, IN2_pin2);
      
       CodeCell myCodeCell;
      
       void setup() {
       Serial.begin(115200); /* Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial. */
      
       myCodeCell.Init(LIGHT); /*Initializes Light Sensing*/
      
       FlatFlap1.Init();
       FlatFlap2.Init();
      
       FlatFlap1.Tone();
       FlatFlap2.Tone();
       }
      
       void loop() {
       if (myCodeCell.Run()) {
       /*Runs every 100ms*/
       uint16_t proximity = myCodeCell.Light_ProximityRead(); 
      Serial.println(proximité);
       si (proximité < 100) {
       FlatFlap1.Run(1, 100, 400);
       FlatFlap2.Run(1, 100, 400);
       } autre {
       proximité = proximité - 100 ;
       proximité = proximité / 10 ;
       si (proximité > 100) {
       proximité = 100;
       }
       FlatFlap1.Drive(0, (proximité));
       FlatFlap2.Drive(0, (proximité));
       }
       }
       }
      

      N'hésitez pas à modifier le code avec vos propres idées créatives ou à ajouter une détection de mouvement pour une nouvelle réaction ! Avec FlatFlap , vous pouvez donner vie à vos projets créatifs avec du mouvement dans un format compact et élégant. Que vous ajoutiez des éléments dynamiques à l'art, que vous expérimentiez la robotique ou que vous développiez des affichages mécaniques interactifs, le FlatFlap offre une solution polyvalente et facile à utiliser. Commencez dès aujourd'hui avec nos bibliothèques Arduino ! Si vous avez d'autres questions sur le FlatFlap, n'hésitez pas à nous envoyer un e-mail et nous serons heureux de vous aider !

      Voir l'article entier

      CoilCell Basics: Your First Steps

      Notions de base sur CoilCell : vos premiers pas

      CoilCell est une bobine planaire compacte conçue pour divers projets DIY. Que vous débutiez ou que vous soyez un maker expérimenté, CoilCell offre une intégration facile pour simplifier vos créations. Dans ce tutoriel, nous vous expliquerons :

      • Qu'est-ce qu'un CoilCell et comment fonctionne-t-il ?
      • Démarrer avec sa bibliothèque de logiciels Arduino
      • Programmez une boule aimantée pour qu'elle rebondisse toutes les quelques millisecondes
      • Rendre le CoilCell plus interactif avec les capteurs CodeCell

      Qu'est-ce que CoilCell ?
      CoilCell est une bobine mince et plane construite sur un PCB multicouche, avec un pilote intégré qui simplifie le contrôle de la polarité et de la force magnétiques. Elle est disponible en deux configurations :

      • Bobine 1 WCell : 70 tours, avec un champ magnétique maximal de 2,3 mT.
      • Bobine 2,5 W : 200 tours, avec un champ magnétique maximal de 10 mT, qui peut être mis à niveau jusqu'à 17 mT à l'aide d'une plaque arrière en fer.

      Applications magnétiques

      • Aimants N52 : utilisez des aimants à billes ou à disques N52 légers pour des interactions dynamiques telles que faire rebondir ou secouer des objets en trouvant leur fréquence de résonance.
      • FlipDot : créez un pixel mécanique interactif en faisant pivoter un aimant pour le retourner. Construisez votre propre pixel FlipDot magnétique imprimé en 3D et ajoutez-en d'autres pour un mini affichage. Vos oreilles et vos yeux vont l'adorer !
      • Plaque arrière en fer : améliorez la CoilCell de 2,5 W pour augmenter sa puissance maximale à 17 mT, la transformant en un électro-aimant faible adapté pour attirer de petits objets métalliques comme des trombones.
      • Dés magnétiques : réalisez des tours amusants avec nos dés spéciaux contenant un aimant caché à l'intérieur, vous permettant de créer des secousses automatiques ou d'influencer le résultat du lancer avec le CoilCell de 2,5 W.

      Conseils de sécurité
      Lors de l'utilisation du CoilCell 2,5 W 200 tours, il peut potentiellement chauffer jusqu'à 110 °C, en particulier lorsqu'il est combiné avec la plaque arrière en fer. Suivez ces précautions :

      • Gardez les mains éloignées des surfaces chaudes et éteignez la bobine lorsqu’elle n’est pas utilisée.
      • Assurez-vous que les pièces et matériaux imprimés en 3D peuvent résister à des températures élevées.
      • Utilisez également une protection des yeux lorsque vous travaillez avec de petits aimants qui peuvent être repoussés à grande vitesse.

      Comment fonctionne CoilCell ?
      CoilCell utilise une puce de pont en H DRV8837 intégrée pour contrôler le flux de courant à travers la bobine, lui permettant de changer de polarité magnétique :

      • Nord : IN1 = VCC/PWM, IN2 = GND
      • Sud : IN1 = GND, IN2 = VCC/PWM
      • Désactivé : IN1 = GND, IN2 = GND

      La puce DRV8837 offre une protection contre les surintensités, un verrouillage en cas de sous-tension et des fonctions d'arrêt thermique, garantissant un fonctionnement sûr.


      Premiers pas avec CoilCell
      Le câblage d'une des broches d'entrée sur VCC activera instantanément la CoilCell . Mais pour le rendre plus intelligent, nous avons également développé une bibliothèque de logiciels Arduino pour vous faciliter la mise en route.

      Vous devrez écrire un code de base pour indiquer à CoilCell ce qu'il doit faire. Ne vous inquiétez pas, c'est assez simple ! Commencez par télécharger la bibliothèque « CoilCell » à partir du gestionnaire de bibliothèques de l'Arduino. Une fois celle-ci installée, nous sommes prêts à contrôler votre appareil. Il existe plusieurs exemples qui peuvent vous aider à démarrer, mais nous allons maintenant décomposer et comprendre toutes les fonctions :

      Avant de commencer, assurez-vous de connecter le CoilCell à votre microcontrôleur. Nous vous recommandons d'utiliser un CodeCell compatible broche à broche, de la même taille, prenant en charge toutes les fonctions de la bibliothèque et pouvant ajouter un contrôle sans fil + une détection interactive.

      1. Initialiser CoilCell

       #include <CoilCell.h>
       
      CoilCell myCoilCell(IN1, IN2); // Remplacez IN1 et IN2 par vos broches spécifiques
      
       vide configuration() {
       myCoilCell.Init(); // Initialise la CoilCell
       }
      

      Ce code configure le CoilCell , le configurant pour le contrôle magnétique en fonction de vos broches et de votre microcontrôleur sélectionnés.

      2. Bounce(bool direction, uint8_t ms_duration)

      La fonction Bounce() fait rebondir un aimant de haut en bas. Le premier paramètre définit la polarité de la CoilCell et le delay_ms définit la durée pendant laquelle l'aimant est repoussé.

       myCoilCell.Bounce(true, 20); //Bounce the magnet up for 20ms

      3. Buzz (uint16_t us_buzz)
      Créez un bourdonnement en alternant rapidement la polarité de la bobine. Ajustez « us_buzz » pour contrôler la fréquence du bourdonnement.

       myCoilCell.Buzz(80); // Generates a buzzing effect at 80 microseconds intervals
      

      4. Tonalité()
      Cette fonction joue une tonalité par défaut en faisant vibrer la CoilCell à différentes fréquences enregistrées.

       myCoilCell.Tone(); // Plays varying tones

      5. Drive(bool direction, uint8_t power_percent)
      En utilisant le CodeCell ou tout autre microcontrôleur ESP32, cette fonction permet de contrôler la polarité et la force magnétique de la bobine. La force magnétique est ajustée par le « power_percent », qui contrôle la distance à laquelle l'aimant est poussé par rapport à la bobine.

       myCoilCell.Drive(true, 75); // Drive the coil north with 75% strength
      

      6. Basculer(uint8_t power_percent)
      En utilisant le CodeCell ou tout autre microcontrôleur ESP32, cette fonction bascule la polarité de la bobine à un niveau de puissance défini, utile pour des actions de retournement magnétique simples.

       myCoilCell.Toggle(60); // Toggle polarity at 60% power

      Pour les autres appareils Arduino, cette commande fait que la bobine inverse sa direction à pleine puissance.

       myCoilCell.Toggle(); // Toggle polarity at 100% power

      7. Vibrer (bool lisse, uint8_t power_percent, uint16_t vib_speed_ms)

      Cette fonction inverse la polarité de la bobine à une vitesse et une puissance spécifiées. Le réglage « smooth » sur true crée des mouvements plus fluides, idéaux pour les fréquences lentes inférieures à 2 Hz.

       myCoilCell.Vibrate(true, 50, 1000); // Smooth vibration at 50% power every 1000 ms
      

      Pour les autres appareils Arduino, cette commande fait que la bobine inverse sa polarité à pleine puissance.

       myCoilCell.Vibrate(100); // Vibrate at 100% power every 100 ms
      

      Voici un exemple où nous initialisons une CoilCell pour faire rebondir un aimant à bille de 5 mm de diamètre. Dans cet exemple, la CoilCell est initialisée avec les broches 5 et 6. La fonction setup() appelle myCoilCell.Init() pour configurer la CoilCell . Dans la fonction loop() , la fonction Bounce() est utilisée pour faire rebondir l'aimant vers le haut pendant 20 millisecondes, suivi d'un délai de 600 millisecondes qui attire l'aimant vers le bas.

      #include <CoilCell.h>
      
       #define IN1_pin1 5
       #define IN1_pin2 6
      
       CoilCell myCoilCell(IN1_pin1, IN1_pin2);
      
       void setup() {
       myCoilCell.Init(); /*Initialize the CoilCell*/
       }
      
       void loop() {
       myCoilCell.Bounce(0, 20); /*Bounce the magnet up for 20ms*/
       delay(600); /*Attract the magnet back down for 600ms*/
       }
      

      Dans l'exemple suivant, nous utilisons le capteur de mouvement du CodeCell pour détecter les tapotements. Lorsqu'un nouveau tapotement est détecté, le CoilCell inverse sa polarité magnétique et définit un délai d'une seconde pour faire clignoter la LED intégrée en jaune.

       #include <CodeCell.h>
       #include <CoilCell.h>
      
       #define IN1_pin1 5
       #define IN1_pin2 6
      
       CoilCell myCoilCell(IN1_pin1, IN1_pin2);
       CodeCell myCodeCell;
       
      vide configuration() {
       Serial.begin(115200); /* Définissez le débit en bauds série sur 115 200. Assurez-vous que Tools/USB_CDC_On_Boot est activé si vous utilisez Serial. */
      
       myCodeCell.Init(MOTION_TAP_DETECTOR); /*Initialise la détection de pression*/
       maCoilCell.Init();
       maCelluleCoil.Tone();
       }
      
       boucle vide() {
       si (myCodeCell.Run()) {
       /*S'exécute toutes les 100 ms*/
       si (myCodeCell.Motion_TapRead()) {
       /*Si Tap est détecté, la LED s'allume en jaune pendant 1 seconde et inverse la polarité de la CoilCell*/
       monCodeCell.LED(0XA0, 0x60, 0x00U);
       maCoilCell.Toggle(100);
       délai(1000);
       }
       }
       }
      

      Grâce à ces fonctions de base, vous pouvez commencer à expérimenter CoilCell dans vos projets. Que vous contrôliez des aimants, créiez des affichages interactifs ou expérimentiez des forces magnétiques, CoilCell offre une solution simple et efficace.

      Si vous avez d'autres questions sur le CoilCell, n'hésitez pas à nous envoyer un e-mail et nous serons heureux de vous aider !

      Voir l'article entier

      DriveCell Basics: Your First Steps

      Les bases de DriveCell : vos premiers pas

      DriveCell est un appareil petit mais puissant qui vous permet de contrôler facilement les moteurs, les actionneurs et les lumières LED haute puissance pour vos projets de bricolage. DriveCell facilite le contrôle de ces composants, même si vous débutez en programmation ou en électronique.

      Dans ce tutoriel, nous expliquerons :

      • Qu'est-ce qu'un DriveCell et comment fonctionne-t-il ?
      • Démarrer avec sa bibliothèque de logiciels Arduino
      • Contrôlez deux moteurs à courant continu et entraînez-les à des vitesses différentes
      • Fabriquer le DriveCell plus interactif avec les capteurs CodeCell

      Qu'est-ce que DriveCell ?
      Imaginez que vous vouliez fabriquer un petit robot et contrôler la vitesse et la direction de son moteur. Cela peut être complexe pour les débutants et nécessite généralement des modules volumineux. DriveCell simplifie ce processus car :

      • C'est un pilote super petit (à peu près de la taille du bout de votre doigt)
      • Peut être facilement soudé avec des broches en forme de C
      • Fonctionne avec les microcontrôleurs Arduino et dispose de fonctions faciles à utiliser qui vous permettent de contrôler directement les moteurs, les actionneurs et les LED sans plonger dans une programmation compliquée.

      Comment fonctionne DriveCell ?
      DriveCell utilise une puce de pont en H DRV8837 intégrée pour contrôler le flux de courant à travers les broches de sortie, contrôlé par l'état des broches d'entrée :

      • Courant direct : IN1 = VCC/PWM, IN2 = GND
      • Courant inverse : IN1 = GND, IN2 = VCC/PWM
      • Désactivé: IN1 = MASSE, IN2 = MASSE

      La puce DRV8837 offre une protection contre les surintensités, un verrouillage en cas de sous-tension et des fonctions d'arrêt thermique, garantissant un fonctionnement sûr.

        Premiers pas avec DriveCell
        Avant de pouvoir commencer à utiliser DriveCell , vous devez le configurer et le connecter à votre projet. Voici un guide simple pour vous aider à démarrer :

        • Connexion de DriveCell :
        Tout d'abord, soudez les broches de sortie du DriveCell à votre moteur ou actionneur, et les broches d'entrée et d'alimentation à votre microcontrôleur. Considérez ces broches comme la connexion des pièces d'un puzzle, permettant au DriveCell de faire passer le courant entre les broches de sortie. Ces broches de sortie sont contrôlées par l'état de la broche d'entrée ~ ainsi, tirer IN1 à l'état haut, mettra OUT1 à l'état haut, et tirer IN2 à l'état haut, mettra OUT2 à l'état haut. IN1 et IN2 sont généralement réglés sur des polarités opposées pour permettre le passage du courant. Ces détails techniques peuvent tous être gérés par la bibliothèque logicielle DriveCell.

        • Codage DriveCell :
        Le câblage d'une des broches d'entrée sur VCC allumera instantanément le DriveCell . Mais pour le rendre plus intelligent, nous avons également développé une bibliothèque de logiciels Arduino pour vous faciliter la tâche. Vous devrez écrire un code de base pour indiquer à DriveCell ce qu'il doit faire. Ne vous inquiétez pas, c'est assez simple ! Commencez par télécharger la bibliothèque « DriveCell » à partir du gestionnaire de bibliothèques de l'Arduino. Une fois celle-ci installée, nous sommes prêts à contrôler votre appareil. Il existe plusieurs exemples qui peuvent vous aider à démarrer, mais nous allons maintenant décomposer et comprendre toutes les fonctions.
        Avant de commencer, assurez-vous de connecter le DriveCell à votre microcontrôleur. Nous vous recommandons d'utiliser un CodeCell , compatible broche à broche, prend en charge toutes les fonctions de la bibliothèque et peut ajouter un contrôle sans fil + une détection interactive.


        1. Init()

        Nous avons d’abord besoin d’un code de configuration de base pour vous permettre de démarrer :

         #include <DriveCell.h> // This line includes the DriveCell library
        
         DriveCell myDriveCell(IN1, IN2); // Replace IN1 and IN2 with your specific pins
        
         void setup() {
         myDriveCell.Init(); // Initializes the DriveCell
         }
        

        Ce code indique au DriveCell de démarrer et de se préparer à contrôler votre moteur ou votre actionneur. La fonction Init s'assure que tous les périphériques nécessaires sont configurés.

        2. Impulsion (bool direction, uint8_t ms_duration)

        Cette commande envoie une courte rafale de puissance dans une polarité spécifiée, pour dynamiser rapidement l'actionneur et le réteindre.

         myDriveCell.Pulse(true, 10); // Short burst for 10 milliseconds
        

        3. Buzz (uint16_t us_buzz)
        Cela fait vibrer l'actionneur comme un buzzer. C'est idéal pour créer des sons de retour.

         myDriveCell.Buzz(100); // Creates a 100us buzzing sound

        4. Tonalité()
        Cette fonction émet une tonalité par défaut en faisant vibrer l'actionneur à différentes fréquences enregistrées.

         myDriveCell.Tone(); // Plays varying tones
        

        5. Basculer(uint8_t power_percent)
        Cette fonction change simplement le sens de rotation à 100 % de puissance, ce qui peut être utile pour inverser le sens de rotation d'un moteur à balais ou créer de simples mouvements de battement.

         myDriveCell.Toggle(); // Switches direction

        En utilisant le CodeCell ou tout autre microcontrôleur ESP32, vous pouvez également ajuster le rapport cyclique « power_percent ». Pour les actionneurs magnétiques, le « power_percent » contrôle la force magnétique, tandis que pour les moteurs à balais, il ajuste la vitesse.

        6. Exécuter(bool smooth, uint8_t power_percent, uint16_t flip_speed_ms)

        En utilisant le CodeCell ou tout autre microcontrôleur ESP32, cette fonction vous permet d'inverser la polarité d'un actionneur ou d'inverser un moteur toutes les « flip_speed_ms » au cycle de service « power_percent ». Le réglage de « smooth » sur 1 adoucit le mouvement, ce qui est idéal pour piloter le FlatFlap ou le CoilPad avec des mouvements lents (moins de 2 Hz).

         myDriveCell.Run(true, 50, 1000); // Smooth drive at 50% power every 1000 ms

        Pour les autres appareils Arduino, cette commande permet au moteur/actionneur d'inverser sa direction (vers l'avant et vers l'arrière) à pleine vitesse. Par exemple :

         myDriveCell.Run(500); // Motor changes direction every 500 milliseconds
        

        7. Drive(bool direction, uint8_t power_percent)
        En utilisant le CodeCell ou tout autre microcontrôleur ESP32, cette fonction vous permet de contrôler la vitesse et la direction de votre moteur. Vous pouvez faire avancer ou reculer le moteur et ajuster sa vitesse.

         myDriveCell.Drive(true, 75); // Moves forward at 75% power


        Exemples :

        En utilisant l'une de ces fonctions dans une boucle, vous pouvez créer la séquence souhaitée pour votre moteur, votre actionneur ou vos LED haute puissance. Voici un exemple où nous initialisons deux moteurs à courant continu et les pilotons à des vitesses différentes :

         #include <DriveCell.h>
        
         #define IN1_pin1 2
         #define IN1_pin2 3
         #define IN2_pin1 5
         #define IN2_pin2 6
        
         DriveCell Motor1(IN1_pin1, IN1_pin2);
         DriveCell Motor2(IN2_pin1, IN2_pin2);
        
         uint8_t mode = 0;
         uint8_t speed_percentage = 0;
        
         void setup() {
         Motor1.Init();
         Motor2.Init(); 
        speed_percentage = 80; /* Régler le moteur à 80 % de puissance */
         }
        
         boucle vide() {
         délai(3000);
         mode++;
         commutateur (mode) {
         cas 1:
         /* Avancer */
         Motor1.Drive(1, pourcentage_vitesse);
         Motor2.Drive(1, pourcentage_vitesse);
         casser;
         cas 2:
         /* Déplacer vers l'arrière */
         Motor1.Drive(0, pourcentage_vitesse);
         Motor2.Drive(0, pourcentage_vitesse);
         casser;
         cas 3:
         /* Tourner à gauche */
         Motor1.Drive(1, pourcentage_vitesse);
         Motor2.Drive(0, pourcentage_vitesse);
         casser;
         cas 4:
         /* Tournez à droite */
         Motor1.Drive(0, pourcentage_vitesse);
         Motor2.Drive(1, pourcentage_vitesse);
         casser;
         cas 5:
         /* Éteignez les deux moteurs */
         Moteur1.Drive(1, 0);
         Moteur2.Drive(1, 0);
         si (pourcentage_vitesse < 95) {
         speed_percentage += 5; /* Incrémenter la vitesse */
         } autre {
         speed_percentage = 50; /* Réinitialiser à 50 % de puissance */
         }
         mode = 0;
         casser;
         }
         }
        

        Dans l'exemple suivant, nous utilisons le capteur de proximité du CodeCell pour activer les moteurs. Ce capteur agira comme un interrupteur gestuel et s'activera lorsqu'une main se trouvera à moins de 5 cm.

         #include <CodeCell.h>
         #include <DriveCell.h>
        
         #define IN1_pin1 2
         #define IN1_pin2 3
         #define IN2_pin1 5
         #define IN2_pin2 6
        
         CodeCell myCodeCell;
         DriveCell Motor1(IN1_pin1, IN1_pin2);
         DriveCell Motor2(IN2_pin1, IN2_pin2);
        
         uint8_t speed_percentage = 0;
         bool on_flag = 0;
        
         void setup() {
         Serial.begin(115200); /* Set Serial baud rate to 115200. Ensure Tools/USB_CDC_On_Boot is enabled if using Serial. */
        
         myCodeCell.Init(LIGHT); /*Initializes Light Sensing*/
         Motor1.Init();
         Motor2.Init();
         speed_percentage = 100;
         }
        
         void loop() {
         if (myCodeCell.Run()) {
         /*Runs every 100ms - Put your code here*/
         if (myCodeCell.Light_ProximityRead() > 3000) { 
        /*Si un tapotement est détecté, la LED s'allume en jaune pendant 1 seconde*/
         monCodeCell.LED(0XA0, 0x60, 0x00U);
         Moteur1.Drive(0, 0);
         Moteur2.Drive(0, 0);
         délai(1000);
         sur_drapeau = !sur_drapeau;
         }
         si (sur_drapeau) {
         /*Avancer*/
         Motor1.Drive(1, pourcentage_vitesse);
         Motor2.Drive(1, pourcentage_vitesse);
         } autre {
         Moteur1.Drive(0, 0);
         Moteur2.Drive(0, 0);
         }
         }
         }
        

        Si vous avez d'autres questions sur le DriveCell, n'hésitez pas à nous envoyer un e-mail et nous serons heureux de vous aider !

        Voir l'article entier


        Partage

        Github

        • À propos
        • Software
        • Education
        • 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.