diff --git a/fixtures/quizbank-3.json b/fixtures/quizbank-3.json new file mode 100644 index 0000000..69a054d --- /dev/null +++ b/fixtures/quizbank-3.json @@ -0,0 +1,500 @@ +{ + "courses": { + "3": { + "quizzes": [ + { + "quiz_n": 1, + "cmid": 51, + "name": "Quiz 1 : Découverte", + "gradepass": 60, + "questions": [ + { + "id": 106, + "text": "
Dans quel ordre s'effectuent les étapes de conception dans KiCad ?
", + "single": 1, + "choices": [ + { + "id": 421, + "text": "Schéma → Attribution des empreintes → PCB Layout → Fichiers Gerber" + }, + { + "id": 422, + "text": "PCB Layout → Schéma → Fichiers Gerber → Attribution des empreintes" + }, + { + "id": 423, + "text": "Attribution des empreintes → Schéma → PCB Layout → Fichiers Gerber" + }, + { + "id": 424, + "text": "Schéma → PCB Layout → Attribution des empreintes → Fichiers Gerber" + } + ] + }, + { + "id": 107, + "text": "Qu'est-ce qu'une netlist dans KiCad ?
", + "single": 1, + "choices": [ + { + "id": 425, + "text": "Un fichier décrivant tous les nœuds électriques (nets) et les connexions entre composants" + }, + { + "id": 426, + "text": "La liste des composants avec leurs prix" + }, + { + "id": 427, + "text": "Le fichier envoyé directement au fabricant de PCB" + }, + { + "id": 428, + "text": "La liste des couches PCB actives" + } + ] + }, + { + "id": 108, + "text": "Quelle est la différence entre un symbole et un footprint (empreinte) dans KiCad ?
", + "single": 1, + "choices": [ + { + "id": 429, + "text": "Le symbole représente le composant dans le schéma électrique (logique) ; le footprint représente ses pastilles physiques sur le PCB" + }, + { + "id": 430, + "text": "Le symbole est en 3D ; le footprint est en 2D" + }, + { + "id": 431, + "text": "Le symbole est pour les composants SMD ; le footprint pour les composants traversants" + }, + { + "id": 432, + "text": "C'est la même chose, juste deux noms différents dans KiCad" + } + ] + }, + { + "id": 109, + "text": "Quel outil KiCad vérifie les erreurs dans le schéma électrique (connexions manquantes, conflits de type de pin) ?
", + "single": 1, + "choices": [ + { + "id": 433, + "text": "ERC (Electrical Rules Check)" + }, + { + "id": 434, + "text": "DRC (Design Rules Check)" + }, + { + "id": 435, + "text": "La visionneuse 3D" + }, + { + "id": 436, + "text": "Le gestionnaire de bibliothèques" + } + ] + }, + { + "id": 110, + "text": "Dans KiCad, que sont les fichiers Gerber ?
", + "single": 1, + "choices": [ + { + "id": 437, + "text": "Un format de fichier standard décrivant chaque couche du PCB pour la fabrication industrielle" + }, + { + "id": 438, + "text": "Les fichiers de sauvegarde automatique de KiCad" + }, + { + "id": 439, + "text": "Les modèles 3D des composants" + }, + { + "id": 440, + "text": "Les bibliothèques de symboles KiCad" + } + ] + } + ] + }, + { + "quiz_n": 2, + "cmid": 52, + "name": "Quiz 2 : Schématique", + "gradepass": 60, + "questions": [ + { + "id": 111, + "text": "Que signifie ERC dans KiCad et que vérifie-t-il ?
", + "single": 1, + "choices": [ + { + "id": 441, + "text": "Electrical Rule Check — vérifie la cohérence logique du schéma (connexions manquantes, conflits de type de pin)" + }, + { + "id": 442, + "text": "Electronic Routing Check — vérifie le routage des pistes sur le PCB" + }, + { + "id": 443, + "text": "External Reference Compiler — compile les références des composants externes" + }, + { + "id": 444, + "text": "Edge Resistance Calculator — calcule la résistance des pistes de bord" + } + ] + }, + { + "id": 112, + "text": "Pourquoi faut-il ajouter des symboles PWR_FLAG dans le schéma KiCad ?
", + "single": 1, + "choices": [ + { + "id": 445, + "text": "Pour indiquer à l'ERC qu'un net d'alimentation est intentionnellement alimenté, évitant l'erreur \"Power pin not driven\"" + }, + { + "id": 446, + "text": "Pour limiter le courant sur les rails de puissance" + }, + { + "id": 447, + "text": "Pour générer automatiquement les plans de masse dans le PCB" + }, + { + "id": 448, + "text": "Pour attribuer automatiquement les footprints aux composants de puissance" + } + ] + }, + { + "id": 113, + "text": "Quel est l'avantage d'utiliser des net labels plutôt que des fils directs pour connecter des composants éloignés dans le schéma ?
", + "single": 1, + "choices": [ + { + "id": 449, + "text": "Le schéma reste lisible sans fils qui traversent toute la feuille — deux labels identiques = connexion électrique identique" + }, + { + "id": 450, + "text": "Les net labels réduisent la résistance des connexions" + }, + { + "id": 451, + "text": "Les net labels sont obligatoires pour passer l'ERC" + }, + { + "id": 452, + "text": "Les net labels accélèrent le routage automatique du PCB" + } + ] + }, + { + "id": 114, + "text": "Pourquoi mettre une résistance de 330Ω en série avec une LED alimentée en 3.3V ?
", + "single": 1, + "choices": [ + { + "id": 453, + "text": "Pour limiter le courant à environ 4 mA et protéger la LED — calcul : (3.3V - 2.0V) / 330Ω ≈ 4mA" + }, + { + "id": 454, + "text": "Pour augmenter la luminosité de la LED" + }, + { + "id": 455, + "text": "Pour filtrer le bruit haute fréquence sur la ligne d'alimentation" + }, + { + "id": 456, + "text": "C'est optionnel, on peut connecter la LED directement au GPIO de l'ESP32" + } + ] + }, + { + "id": 115, + "text": "Pourquoi faut-il des résistances de 5.1kΩ sur les broches CC1/CC2 du connecteur USB-C ?
", + "single": 1, + "choices": [ + { + "id": 457, + "text": "Elles identifient l'appareil comme un \"sink\" USB-C (consommateur d'énergie) — sans elles, le port USB ne fournit pas de courant" + }, + { + "id": 458, + "text": "Elles protègent l'ESP32 contre les surtensions USB" + }, + { + "id": 459, + "text": "Elles permettent la communication de données USB (D+/D-)" + }, + { + "id": 460, + "text": "Elles sont optionnelles — le connecteur fonctionne sans elles" + } + ] + } + ] + }, + { + "quiz_n": 3, + "cmid": 53, + "name": "Quiz 3 : PCB", + "gradepass": 60, + "questions": [ + { + "id": 116, + "text": "Pourquoi utilise-t-on des pistes plus larges (0.5mm) pour les rails d'alimentation VIN et +3V3 ?
", + "single": 1, + "choices": [ + { + "id": 461, + "text": "Les pistes plus larges ont une résistance plus faible et supportent plus de courant sans échauffement" + }, + { + "id": 462, + "text": "C'est purement esthétique pour distinguer visuellement les pistes de puissance" + }, + { + "id": 463, + "text": "Les pistes plus larges transmettent le signal plus rapidement" + }, + { + "id": 464, + "text": "C'est obligatoire pour passer le DRC de JLCPCB" + } + ] + }, + { + "id": 117, + "text": "Qu'est-ce qu'un via dans KiCad et quand l'utilise-t-on ?
", + "single": 1, + "choices": [ + { + "id": 465, + "text": "Un trou métallisé qui connecte la couche dessus (F.Cu) à la couche dessous (B.Cu) — utilisé quand deux pistes doivent se croiser" + }, + { + "id": 466, + "text": "Un trou pour insérer un composant traversant" + }, + { + "id": 467, + "text": "Un point de test pour mesurer la tension" + }, + { + "id": 468, + "text": "Un trou de montage pour visser la carte dans un boîtier" + } + ] + }, + { + "id": 118, + "text": "Quels sont les avantages d'un plan de masse (copper pour GND) sur la couche B.Cu ?
", + "single": 1, + "choices": [ + { + "id": 469, + "text": "Meilleur retour de courant GND, réduction des interférences EMI, et meilleure dissipation thermique" + }, + { + "id": 470, + "text": "Il sert uniquement à remplir l'espace vide pour économiser le cuivre de gravure" + }, + { + "id": 471, + "text": "Il est obligatoire pour tout PCB 2 couches selon la norme IPC" + }, + { + "id": 472, + "text": "Il remplace les condensateurs de découplage et simplifie le schéma" + } + ] + }, + { + "id": 119, + "text": "Pourquoi la valeur de clearance (espacement minimum entre conducteurs) est-elle importante pour la fabrication ?
", + "single": 1, + "choices": [ + { + "id": 473, + "text": "Un espacement insuffisant peut causer des courts-circuits lors de la fabrication à cause des tolérances de gravure" + }, + { + "id": 474, + "text": "C'est purement esthétique, ça n'affecte pas la fabrication" + }, + { + "id": 475, + "text": "Plus la clearance est grande, plus la carte conduit bien le courant" + }, + { + "id": 476, + "text": "La clearance ne s'applique qu'aux composants traversants, pas aux SMD" + } + ] + }, + { + "id": 120, + "text": "Que signifie le code \"0805\" pour un composant SMD et pourquoi le choisit-on pour un maker débutant ?
", + "single": 1, + "choices": [ + { + "id": 477, + "text": "Dimensions 0.08\" × 0.05\" (soit 2.0mm × 1.25mm) — le 0805 est le plus facile à souder à la main parmi les SMD courants" + }, + { + "id": 478, + "text": "C'est le numéro de série du fabricant YAGEO" + }, + { + "id": 479, + "text": "La puissance maximale du composant (805 mW)" + }, + { + "id": 480, + "text": "La tolérance de valeur (8.05%)" + } + ] + } + ] + }, + { + "quiz_n": 4, + "cmid": 54, + "name": "Quiz 4 : Fabrication", + "gradepass": 60, + "questions": [ + { + "id": 121, + "text": "Pour un PCB 2 couches standard, combien de fichiers Gerber minimum faut-il générer (hors fichier de perçage) ?
", + "single": 1, + "choices": [ + { + "id": 481, + "text": "7 fichiers : F.Cu, B.Cu, F.Mask, B.Mask, F.SilkS, B.SilkS, Edge.Cuts" + }, + { + "id": 482, + "text": "2 fichiers : un pour le dessus, un pour le dessous" + }, + { + "id": 483, + "text": "1 seul fichier ZIP contenant toutes les couches" + }, + { + "id": 484, + "text": "3 fichiers : cuivre dessus, cuivre dessous, contour" + } + ] + }, + { + "id": 122, + "text": "Quel format est utilisé pour le fichier de perçage (drill file) dans KiCad ?
", + "single": 1, + "choices": [ + { + "id": 485, + "text": "Excellon (.drl) — le standard industriel pour les données de perçage" + }, + { + "id": 486, + "text": "Gerber (.gbr) — le même format que les couches cuivre" + }, + { + "id": 487, + "text": "G-code (.nc) — le format des fraiseuses CNC" + }, + { + "id": 488, + "text": "DXF (.dxf) — le format de dessin CAO" + } + ] + }, + { + "id": 123, + "text": "Que contient une BOM (Bill of Materials) et à quoi sert-elle ?
", + "single": 1, + "choices": [ + { + "id": 489, + "text": "La liste complète des composants avec références, valeurs, footprints et quantités — c'est la \"liste de courses\" pour assembler la carte" + }, + { + "id": 490, + "text": "Les instructions de routage des pistes cuivrées" + }, + { + "id": 491, + "text": "Les résultats du DRC avec les erreurs trouvées" + }, + { + "id": 492, + "text": "Le schéma de câblage pour souder les composants à la main" + } + ] + }, + { + "id": 124, + "text": "Quelle finition de surface est la plus économique pour un prototype et pourquoi ?
", + "single": 1, + "choices": [ + { + "id": 493, + "text": "HASL (Hot Air Solder Leveling) — étain fondu nivelé à l'air chaud, le traitement le moins cher" + }, + { + "id": 494, + "text": "ENIG (Electroless Nickel Immersion Gold) — dorure, la plus répandue" + }, + { + "id": 495, + "text": "OSP (Organic Solderability Preservative) — le plus durable" + }, + { + "id": 496, + "text": "Immersion Silver — le plus commun chez JLCPCB" + } + ] + }, + { + "id": 125, + "text": "Quel est le coût approximatif pour fabriquer 5 exemplaires d'un PCB 2 couches 50×30mm chez JLCPCB (hors livraison) ?
", + "single": 1, + "choices": [ + { + "id": 497, + "text": "Environ 2$ (deux dollars) — JLCPCB propose les petits PCB standards à des prix très bas" + }, + { + "id": 498, + "text": "Environ 50$ — la fabrication PCB est un processus industriel coûteux" + }, + { + "id": 499, + "text": "Environ 20$ par carte individuelle" + }, + { + "id": 500, + "text": "C'est gratuit pour les designs de moins de 100×100mm" + } + ] + } + ] + } + ] + } + } +} diff --git a/ops/README.md b/ops/README.md index e68f258..07d9c5a 100644 --- a/ops/README.md +++ b/ops/README.md @@ -266,3 +266,62 @@ curl -s "https://moodle.saillant.cc/webservice/rest/server.php" \ --data-urlencode "newstate=$STATE"; echo; done # expected: {"cmid":27,"userid":3,"state":