@jjlmoya/utils-drones 1.30.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -0
  3. package/src/entries.ts +4 -0
  4. package/src/index.ts +1 -1
  5. package/src/tests/locale_completeness.test.ts +1 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/drone-motor-propeller-calculator/bibliography.astro +6 -0
  8. package/src/tool/drone-motor-propeller-calculator/bibliography.ts +12 -0
  9. package/src/tool/drone-motor-propeller-calculator/component.astro +109 -0
  10. package/src/tool/drone-motor-propeller-calculator/controller.ts +174 -0
  11. package/src/tool/drone-motor-propeller-calculator/dom-views.ts +78 -0
  12. package/src/tool/drone-motor-propeller-calculator/drone-motor-propeller-calculator.css +562 -0
  13. package/src/tool/drone-motor-propeller-calculator/entry.ts +27 -0
  14. package/src/tool/drone-motor-propeller-calculator/evaluator.ts +14 -0
  15. package/src/tool/drone-motor-propeller-calculator/i18n/de.ts +202 -0
  16. package/src/tool/drone-motor-propeller-calculator/i18n/en.ts +202 -0
  17. package/src/tool/drone-motor-propeller-calculator/i18n/es.ts +202 -0
  18. package/src/tool/drone-motor-propeller-calculator/i18n/fr.ts +202 -0
  19. package/src/tool/drone-motor-propeller-calculator/i18n/id.ts +192 -0
  20. package/src/tool/drone-motor-propeller-calculator/i18n/it.ts +192 -0
  21. package/src/tool/drone-motor-propeller-calculator/i18n/ja.ts +192 -0
  22. package/src/tool/drone-motor-propeller-calculator/i18n/ko.ts +192 -0
  23. package/src/tool/drone-motor-propeller-calculator/i18n/nl.ts +192 -0
  24. package/src/tool/drone-motor-propeller-calculator/i18n/pl.ts +192 -0
  25. package/src/tool/drone-motor-propeller-calculator/i18n/pt.ts +192 -0
  26. package/src/tool/drone-motor-propeller-calculator/i18n/ru.ts +192 -0
  27. package/src/tool/drone-motor-propeller-calculator/i18n/sv.ts +192 -0
  28. package/src/tool/drone-motor-propeller-calculator/i18n/tr.ts +192 -0
  29. package/src/tool/drone-motor-propeller-calculator/i18n/zh.ts +192 -0
  30. package/src/tool/drone-motor-propeller-calculator/index.ts +11 -0
  31. package/src/tool/drone-motor-propeller-calculator/logic.test.ts +56 -0
  32. package/src/tool/drone-motor-propeller-calculator/logic.ts +108 -0
  33. package/src/tool/drone-motor-propeller-calculator/seo.astro +12 -0
  34. package/src/tool/drone-motor-propeller-calculator/storage.ts +26 -0
  35. package/src/tool/drone-motor-propeller-calculator/ui.ts +55 -0
  36. package/src/tools.ts +3 -0
@@ -0,0 +1,202 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { SEOSection } from '../../../types';
3
+ import type { DroneMotorPropellerLocaleContent } from '../entry';
4
+ import { BIBLIOGRAPHY_ITEMS } from '../bibliography';
5
+
6
+ const slug = 'calculateur-moteur-helice-drone';
7
+ const title = 'Calculateur de Moteur et Hélice pour Drone';
8
+ const description = 'Estimez la poussée du moteur de drone, les RPM sous charge, la vitesse de pas, la puissance et le courant à partir des KV, de la tension, de la géométrie et du poids du drone.';
9
+
10
+ const ui = {
11
+ presetsHeader: 'Choisissez un profil de vol',
12
+ presetTinyCruiser: 'Petit cruiser 3.5 pouces',
13
+ presetFreestyle: 'Freestyle 5 pouces',
14
+ presetLongRange: 'Long range 7 pouces',
15
+ presetCinelifter: 'Cinelifter 8 moteurs',
16
+ unitHeader: 'Unités de affichage',
17
+ metricUnit: 'Métrique',
18
+ imperialUnit: 'Impérial',
19
+ setupHeader: 'Motorisation et châssis',
20
+ motorKvLabel: 'Constante KV du moteur (RPM/V)',
21
+ batteryVoltageLabel: 'Tension de la batterie',
22
+ propDiameterLabel: 'Diamètre de hélice',
23
+ propPitchLabel: 'Pas de hélice',
24
+ bladeCountLabel: 'Nombre de pales',
25
+ motorCountLabel: 'Nombre de moteurs',
26
+ droneWeightLabel: 'Poids prêt à voler (RTF)',
27
+ benchDataHeader: 'Point de test constructeur',
28
+ benchThrustLabel: 'Poussée par moteur',
29
+ benchVoltageLabel: 'Tension de test',
30
+ optionalLabel: 'Optionnel',
31
+ twoBlades: '2 pales',
32
+ threeBlades: '3 pales',
33
+ fourBlades: '4 pales',
34
+ twoMotors: '2 moteurs',
35
+ fourMotors: '4 moteurs',
36
+ sixMotors: '6 moteurs',
37
+ eightMotors: '8 moteurs',
38
+ resultsHeader: 'Bilan de poussée et portance',
39
+ estimatedLabel: 'Estimation basée sur la physique.',
40
+ benchBasedLabel: 'Ajusté sur banc de test.',
41
+ loadedRpmLabel: 'Vitesse sous charge',
42
+ pitchSpeedLabel: 'Vitesse théorique d avance',
43
+ thrustPerMotorLabel: 'Poussée par moteur',
44
+ totalThrustLabel: 'Poussée statique totale',
45
+ totalPowerLabel: 'Puissance estimée',
46
+ totalCurrentLabel: 'Courant estimé',
47
+ thrustMarginLabel: 'Marge de portance',
48
+ hoverThrottleLabel: 'Gaz en stationnaire',
49
+ sceneCaption: 'vitesse de hélice sous charge',
50
+ underpoweredStatus: 'Faible marge',
51
+ workableStatus: 'Marge exploitable',
52
+ headroomStatus: 'Excellente réserve',
53
+ underpoweredAdvice: 'La poussée totale reste inférieure au double du poids du drone. Prévoyez une récupération limitée et peu de marge face au vent.',
54
+ workableAdvice: 'Réserve pratique pour un vol normal. Vérifiez la température des moteurs et ESC après un stationnaire prolongé.',
55
+ headroomAdvice: 'Réserve de portance statique généreuse. Améliore la autorité de contrôle mais sollicite davantage les variateurs.',
56
+ sourceNote: 'Un point de test étalonne la poussée. La puissance et le courant restent des estimations.',
57
+ modelSourceNote: 'Aucun point de test. Utilisation du modèle physique théorique.',
58
+ manufacturerNote: 'Utilisez de préférence un point de test mesuré sur le même ensemble moteur et hélice.',
59
+ modelNote: 'La poussée et le courant sont des estimations. Les résultats réels dépendent de la densité de l air et des pertes.',
60
+ safetyNote: 'Ne substituez jamais cet outil à un test réel sur banc d essai. Vérifiez les limites électriques avant le vol.',
61
+ thrustAxisLabel: 'Direction de poussée',
62
+ weightAxisLabel: 'Poids du drone',
63
+ clearBenchData: 'Effacer le point de test',
64
+ };
65
+
66
+ const faq = [
67
+ {
68
+ question: 'Que calcule cet outil de poussée pour moteur et hélice de drone?',
69
+ answer: 'Il estime les RPM sous charge, la vitesse théorique, la poussée statique par moteur et totale, la puissance et le courant selon les KV, la tension et la géométrie.',
70
+ },
71
+ {
72
+ question: 'Comment associer un moteur et une hélice de drone?',
73
+ answer: 'Commencez par suivre les recommandations du fabricant. Comparez ensuite la poussée totale au poids prêt à voler et vérifiez sur banc d essai.',
74
+ },
75
+ {
76
+ question: 'Pourquoi un point de test constructeur est il préférable?',
77
+ answer: 'Il prend en compte la géométrie exacte de hélice et les pertes réelles. Le calculateur adapte cette mesure à la tension choisie.',
78
+ },
79
+ {
80
+ question: 'Comment la taille de hélice influence t elle la poussée?',
81
+ answer: 'La poussée dépend fortement du diamètre et de la vitesse de rotation. Une grande hélice brasse plus d air mais exige plus de couple.',
82
+ },
83
+ {
84
+ question: 'Ce calculateur garantit il la sécurité en vol?',
85
+ answer: 'Non. Il s agit d un outil de conception. Validez le courant et la température sur banc de test avant de voler.',
86
+ },
87
+ ];
88
+
89
+ const howTo = [
90
+ {
91
+ name: 'Choisir un profil de vol',
92
+ text: 'Sélectionnez un préréglage pour charger des valeurs de départ adaptées.',
93
+ },
94
+ {
95
+ name: 'Saisir les données du châssis y de hélice',
96
+ text: 'Indiquez le poids et les caractéristiques des moteurs et hélices en unités métriques ou impériales.',
97
+ },
98
+ {
99
+ name: 'Ajouter un point de mesure',
100
+ text: 'Si vous avez des données de banc d essai, saisissez la poussée mesurée et la tension associée.',
101
+ },
102
+ ];
103
+
104
+ const seo: SEOSection[] = [
105
+ {
106
+ type: 'title',
107
+ text: 'Principes d asociación moteur y hélice pour drone',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Le choix du couple moteur hélice est un équilibre entre vitesse de rotation, diamètre, pas, tension et couple disponible. Ce calculateur évalue la portance statique et les besoins électriques.',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: 'Résultats affichés',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'table',
121
+ headers: ['Résultat', 'Signification'],
122
+ rows: [
123
+ ['Vitesse sous charge', 'RPM estimés réduits par le facteur de charge'],
124
+ ['Poussée statique', 'Poussée par moteur et portance globale'],
125
+ ['Marge de portance', 'Poussée totale comparée au poids prêt à voler'],
126
+ ['Puissance et courant', 'Demande électrique estimée sous la tension choisie'],
127
+ ],
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Comment utiliser le calculateur',
132
+ level: 2,
133
+ },
134
+ {
135
+ type: 'list',
136
+ items: [
137
+ 'Saisir les KV et la tension de batterie.',
138
+ 'Choisir le diamètre, le pas, le nombre de pales et de moteurs.',
139
+ 'Ajouter éventuellement des données de banc de test.',
140
+ 'Vérifier la température et le courant sur banc avant vol.',
141
+ ],
142
+ },
143
+ {
144
+ type: 'title',
145
+ text: 'Importance des mesures réelles',
146
+ level: 2,
147
+ },
148
+ {
149
+ type: 'paragraph',
150
+ html: 'La poussée dépend de la géométrie de hélice et de la densité de l air. Un point de mesure réel apporte la meilleure calibration.',
151
+ },
152
+ {
153
+ type: 'tip',
154
+ title: 'Plan de test',
155
+ html: 'Effectuez un test sur banc en mesurant le courant à différents niveaux de gaz avant tout vol réel.',
156
+ },
157
+ ];
158
+
159
+ const schemas: DroneMotorPropellerLocaleContent['schemas'] = [
160
+ {
161
+ '@context': 'https://schema.org',
162
+ '@type': 'FAQPage',
163
+ mainEntity: faq.map((item) => ({
164
+ '@type': 'Question',
165
+ name: item.question,
166
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
167
+ })),
168
+ } as WithContext<FAQPage>,
169
+ {
170
+ '@context': 'https://schema.org',
171
+ '@type': 'HowTo',
172
+ name: title,
173
+ description,
174
+ step: howTo.map((step, index) => ({
175
+ '@type': 'HowToStep',
176
+ position: index + 1,
177
+ name: step.name,
178
+ text: step.text,
179
+ })),
180
+ } as WithContext<HowTo>,
181
+ {
182
+ '@context': 'https://schema.org',
183
+ '@type': 'SoftwareApplication',
184
+ name: title,
185
+ description,
186
+ applicationCategory: 'UtilityApplication',
187
+ operatingSystem: 'All',
188
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
189
+ } as WithContext<SoftwareApplication>,
190
+ ];
191
+
192
+ export const content: DroneMotorPropellerLocaleContent = {
193
+ slug,
194
+ title,
195
+ description,
196
+ ui,
197
+ seo,
198
+ faq,
199
+ bibliography: BIBLIOGRAPHY_ITEMS,
200
+ howTo,
201
+ schemas,
202
+ };
@@ -0,0 +1,192 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { SEOSection } from '../../../types';
3
+ import type { DroneMotorPropellerLocaleContent } from '../entry';
4
+ import { BIBLIOGRAPHY_ITEMS } from '../bibliography';
5
+
6
+ const slug = 'kalkulator-motor-dan-baling-baling-drone';
7
+ const title = 'Kalkulator Motor dan Baling Baling Drone';
8
+ const description = 'Estimasi daya dorong motor drone, RPM berbeban, kecepatan pitch, daya dan konsumsi arus dari KV, tegangan baterai, geometri baling baling dan bobot drone.';
9
+
10
+ const ui = {
11
+ "presetsHeader": "Pilih profil penerbangan",
12
+ "presetTinyCruiser": "Micro cruiser ringan 3.5 inci",
13
+ "presetFreestyle": "Freestyle 5 inci",
14
+ "presetLongRange": "Long range 7 inci",
15
+ "presetCinelifter": "Cinelifter 8 motor",
16
+ "unitHeader": "Unit tampilan",
17
+ "metricUnit": "Metrik",
18
+ "imperialUnit": "Imperial",
19
+ "setupHeader": "Sistem penggerak dan rangka",
20
+ "motorKvLabel": "Konstanta motor KV (RPM/V)",
21
+ "batteryVoltageLabel": "Tegangan baterai",
22
+ "propDiameterLabel": "Diameter baling baling",
23
+ "propPitchLabel": "Pitch baling baling",
24
+ "bladeCountLabel": "Jumlah bilah",
25
+ "motorCountLabel": "Jumlah motor",
26
+ "droneWeightLabel": "Bobot siap terbang (RTF)",
27
+ "benchDataHeader": "Titik uji pabrikan",
28
+ "benchThrustLabel": "Daya dorong per motor",
29
+ "benchVoltageLabel": "Tegangan pengujian",
30
+ "optionalLabel": "Opsional",
31
+ "twoBlades": "2 bilah",
32
+ "threeBlades": "3 bilah",
33
+ "fourBlades": "4 bilah",
34
+ "twoMotors": "2 motor",
35
+ "fourMotors": "4 motor",
36
+ "sixMotors": "6 motor",
37
+ "eightMotors": "8 motor",
38
+ "resultsHeader": "Daya dorong dan keseimbangan angkat",
39
+ "estimatedLabel": "Estimasi model fisika murni.",
40
+ "benchBasedLabel": "Dikalibrasi dengan bangku tes.",
41
+ "loadedRpmLabel": "Kecepatan berbeban",
42
+ "pitchSpeedLabel": "Kecepatan pitch teoritis",
43
+ "thrustPerMotorLabel": "Daya dorong per motor",
44
+ "totalThrustLabel": "Total daya dorong statis",
45
+ "totalPowerLabel": "Estimasi daya",
46
+ "totalCurrentLabel": "Estimasi arus",
47
+ "thrustMarginLabel": "Margin daya angkat",
48
+ "hoverThrottleLabel": "Throttle saat hovering",
49
+ "sceneCaption": "kecepatan baling baling berbeban",
50
+ "underpoweredStatus": "Margin rendah",
51
+ "workableStatus": "Margin aman",
52
+ "headroomStatus": "Margin melimpah",
53
+ "underpoweredAdvice": "Total daya dorong kurang dari dua kali bobot drone. Kemampuan pemulihan terbatas dan resiko tinggi terhadap angin.",
54
+ "workableAdvice": "Cadangan praktis untuk penerbangan normal. Periksa suhu motor dan ESC setelah hovering cukup lama.",
55
+ "headroomAdvice": "Cadangan daya dorong statis sangat baik. Meningkatkan respon kontrol tetapi membutuhkan arus lebih besar dari ESC.",
56
+ "sourceNote": "Titik uji hanya mengkalibrasi daya dorong. Daya dan arus tetap merupakan estimasi model.",
57
+ "modelSourceNote": "Tanpa data tes. Daya dorong menggunakan model koefisien fisika.",
58
+ "manufacturerNote": "Gunakan data uji pabrikan dari kombinasi motor dan baling baling yang sama jika ada.",
59
+ "modelNote": "Daya dorong statis, daya dan arus adalah estimasi. Hasil nyata tergantung pada kerapatan udara dan kerugian.",
60
+ "safetyNote": "Jangan pernah gunakan kalkulator ini sebagai pengganti pengujian nyata. Periksa batas arus sebelum terbang.",
61
+ "thrustAxisLabel": "Arah dorongan",
62
+ "weightAxisLabel": "Bobot drone",
63
+ "clearBenchData": "Hapus titik uji"
64
+ };
65
+
66
+ const faq = [
67
+ {
68
+ "question": "Apa yang dihitung oleh kalkulator motor dan baling baling drone ini?",
69
+ "answer": "Estimasi RPM berbeban, kecepatan pitch teoritis, daya dorong per motor dan total, daya serta arus berdasarkan KV, tegangan, baling baling dan bobot."
70
+ },
71
+ {
72
+ "question": "Bagaimana cara mencocokkan motor drone dan baling baling?",
73
+ "answer": "Mulai dengan rekomendasi pabrikan. Bandingkan total daya dorong dengan bobot siap terbang dan verifikasi arus serta suhu pada bangku tes."
74
+ },
75
+ {
76
+ "question": "Mengapa titik uji pabrikan lebih akurat daripada model teoritis?",
77
+ "answer": "Karena memperhitungkan geometri baling baling nyata dan kerugian aerodinamis. Kalkulator menyesuaikan angka tersebut ke tegangan yang dipilih."
78
+ },
79
+ {
80
+ "question": "Bagaimana ukuran baling baling mempengaruhi daya dorong drone?",
81
+ "answer": "Daya dorong statis sangat bergantung pada diameter dan RPM. Baling baling lebih besar mendorong lebih banyak udara tetapi butuh torsi motor lebih tinggi."
82
+ },
83
+ {
84
+ "question": "Apakah kalkulator ini menjamin drone aman untuk terbang?",
85
+ "answer": "Tidak. Ini adalah alat perencanaan. Verifikasi arus dan suhu nyata pada bangku uji sebelum terbang."
86
+ }
87
+ ];
88
+
89
+ const howTo = [
90
+ {
91
+ "name": "Pilih profil penerbangan",
92
+ "text": "Pilih preset untuk memuat nilai awal yang sesuai untuk KV, tegangan, baling baling dan bobot."
93
+ },
94
+ {
95
+ "name": "Masukkan data rangka dan baling baling",
96
+ "text": "Masukkan bobot siap terbang serta spesifikasi motor dan baling baling dalam unit metrik atau imperial."
97
+ },
98
+ {
99
+ "name": "Tambahkan titik pengukuran",
100
+ "text": "Jika memiliki data bangku tes, masukkan daya dorong terukur dan tegangan pengujian untuk kalibrasi."
101
+ }
102
+ ];
103
+
104
+ const seo: SEOSection[] = [
105
+ {
106
+ type: 'title',
107
+ text: 'Prinsip pencocokan motor drone dan baling baling',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Pasangan motor dan baling baling adalah keseimbangan antara kecepatan putar, diameter, pitch, tegangan dan torsi. Alat ini mengestimasi daya angkat statis dan beban listrik.',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: 'Hasil yang ditampilkan',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'table',
121
+ headers: ["Hasil","Arti teknis"],
122
+ rows: [["Kecepatan berbeban","Estimasi RPM tanpa beban dikurangi faktor beban"],["Daya dorong statis","Daya dorong per motor dan total daya angkat"],["Margin daya angkat","Total daya dorong statis dibandingkan dengan bobot drone"],["Daya dan arus","Kebutuhan listrik terestimasi pada tegangan yang dipilih"]],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Cara menggunakan kalkulator',
127
+ level: 2,
128
+ },
129
+ {
130
+ type: 'list',
131
+ items: ["Masukkan KV motor dan tegangan baterai.","Pilih diameter baling baling, pitch, jumlah bilah dan motor.","Tambahkan data uji pabrikan jika tersedia.","Verifikasi suhu dan arus pada bangku uji sebelum terbang."],
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Pentingnya data pengujian nyata',
136
+ level: 2,
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: 'Daya dorong baling baling bergantung pada kerapatan udara dan bentuk bilah. Data uji nyata memberikan kalibrasi paling akurat.',
141
+ },
142
+ {
143
+ type: 'tip',
144
+ title: 'Rencana pengujian',
145
+ html: 'Lakukan pengujian pada bangku tes dengan mengukur arus dan suhu sebelum penerbangan pertama.',
146
+ },
147
+ ];
148
+
149
+ const schemas: DroneMotorPropellerLocaleContent['schemas'] = [
150
+ {
151
+ '@context': 'https://schema.org',
152
+ '@type': 'FAQPage',
153
+ mainEntity: faq.map((item) => ({
154
+ '@type': 'Question',
155
+ name: item.question,
156
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
157
+ })),
158
+ } as WithContext<FAQPage>,
159
+ {
160
+ '@context': 'https://schema.org',
161
+ '@type': 'HowTo',
162
+ name: title,
163
+ description,
164
+ step: howTo.map((step, index) => ({
165
+ '@type': 'HowToStep',
166
+ position: index + 1,
167
+ name: step.name,
168
+ text: step.text,
169
+ })),
170
+ } as WithContext<HowTo>,
171
+ {
172
+ '@context': 'https://schema.org',
173
+ '@type': 'SoftwareApplication',
174
+ name: title,
175
+ description,
176
+ applicationCategory: 'UtilityApplication',
177
+ operatingSystem: 'All',
178
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
179
+ } as WithContext<SoftwareApplication>,
180
+ ];
181
+
182
+ export const content: DroneMotorPropellerLocaleContent = {
183
+ slug,
184
+ title,
185
+ description,
186
+ ui,
187
+ seo,
188
+ faq,
189
+ bibliography: BIBLIOGRAPHY_ITEMS,
190
+ howTo,
191
+ schemas,
192
+ };
@@ -0,0 +1,192 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { SEOSection } from '../../../types';
3
+ import type { DroneMotorPropellerLocaleContent } from '../entry';
4
+ import { BIBLIOGRAPHY_ITEMS } from '../bibliography';
5
+
6
+ const slug = 'calcolatore-motore-elica-drone';
7
+ const title = 'Calcolatore Motore ed Elica per Droni';
8
+ const description = 'Stima la spinta del motore, i RPM sotto carico, la velocità del passo dell elica, potenza e corrente da KV, tensione batteria, geometria e peso del drone.';
9
+
10
+ const ui = {
11
+ "presetsHeader": "Scegli un profilo di volo",
12
+ "presetTinyCruiser": "Micro cruiser 3.5 pollici",
13
+ "presetFreestyle": "Freestyle 5 pollici",
14
+ "presetLongRange": "Long range 7 pollici",
15
+ "presetCinelifter": "Cinelifter 8 motori",
16
+ "unitHeader": "Unità di misura",
17
+ "metricUnit": "Metrico",
18
+ "imperialUnit": "Imperiale",
19
+ "setupHeader": "Propulsione e telaio",
20
+ "motorKvLabel": "Costante motore KV (RPM/V)",
21
+ "batteryVoltageLabel": "Tensione batteria",
22
+ "propDiameterLabel": "Diametro elica",
23
+ "propPitchLabel": "Passo elica",
24
+ "bladeCountLabel": "Numero pale",
25
+ "motorCountLabel": "Numero motori",
26
+ "droneWeightLabel": "Peso in ordine di volo",
27
+ "benchDataHeader": "Punto di prova del produttore",
28
+ "benchThrustLabel": "Spinta per motore",
29
+ "benchVoltageLabel": "Tensione di prova",
30
+ "optionalLabel": "Opzionale",
31
+ "twoBlades": "2 pale",
32
+ "threeBlades": "3 pale",
33
+ "fourBlades": "4 pale",
34
+ "twoMotors": "2 motori",
35
+ "fourMotors": "4 motori",
36
+ "sixMotors": "6 motori",
37
+ "eightMotors": "8 motori",
38
+ "resultsHeader": "Rendimento e spinta statica",
39
+ "estimatedLabel": "Stima fisica teorica.",
40
+ "benchBasedLabel": "Calibrato su banco di prova.",
41
+ "loadedRpmLabel": "Velocità sotto carico",
42
+ "pitchSpeedLabel": "Velocità teorica avanzamento",
43
+ "thrustPerMotorLabel": "Spinta per motore",
44
+ "totalThrustLabel": "Spinta statica totale",
45
+ "totalPowerLabel": "Potenza stimata",
46
+ "totalCurrentLabel": "Corrente stimata",
47
+ "thrustMarginLabel": "Margine di spinta",
48
+ "hoverThrottleLabel": "Acceleratore in hovering",
49
+ "sceneCaption": "velocità elica sotto carico",
50
+ "underpoweredStatus": "Margine basso",
51
+ "workableStatus": "Margine operativo",
52
+ "headroomStatus": "Ampio margine",
53
+ "underpoweredAdvice": "La spinta totale è inferiore al doppio del peso del drone. Attesa capacità di recupero limitata e poca tolleranza al vento.",
54
+ "workableAdvice": "Riserva pratica per volo normale. Verificare la temperatura di motori ed ESC dopo un hovering prolungato.",
55
+ "headroomAdvice": "Generosa riserva di spinta statica. Migliora la reattività ma richiede maggiore corrente agli ESC.",
56
+ "sourceNote": "Il punto di prova calibra solo la spinta. Potenza e corrente rimangono stime teoriche.",
57
+ "modelSourceNote": "Nessun dato di banco. La spinta utilizza il modello fisico teorico.",
58
+ "manufacturerNote": "Utilizzare preferibilmente dati di banco misurati con lo stesso motore ed elica.",
59
+ "modelNote": "Spinta, potenza e corrente sono stime. I risultati reali dipendono dalla densità dell aria e dalle perdite.",
60
+ "safetyNote": "Non sostituire mai questo calcolatore a un banco di prova reale. Verificare i limiti elettrici prima del volo.",
61
+ "thrustAxisLabel": "Direzione spinta",
62
+ "weightAxisLabel": "Peso drone",
63
+ "clearBenchData": "Cancella punto di prova"
64
+ };
65
+
66
+ const faq = [
67
+ {
68
+ "question": "Cosa calcola questo strumento per motore ed elica per droni?",
69
+ "answer": "Stima RPM sotto carico, velocità teorica di avanzamento, spinta statica per motore e totale, potenza e corrente da KV, tensione, geometria elica e peso."
70
+ },
71
+ {
72
+ "question": "Come abbinare motore ed elica per droni?",
73
+ "answer": "Iniziare dalle raccomandazioni del produttore. Confrontare la spinta totale con il peso in ordine di volo e verificare su banco prima di volare."
74
+ },
75
+ {
76
+ "question": "Perché un punto di prova del produttore è più preciso?",
77
+ "answer": "Considera la geometria reale e le perdite dell elica. Il calcolatore scala la spinta alla tensione selezionata."
78
+ },
79
+ {
80
+ "question": "In che modo la dimensione dell elica influisce sulla spinta?",
81
+ "answer": "La spinta statica dipende dal diametro e dai RPM. Un elica più grande sposta più aria ma richiede più coppia dal motore."
82
+ },
83
+ {
84
+ "question": "Questo calcolatore garantisce la sicurezza di volo?",
85
+ "answer": "No. È uno strumento di progettazione. Verificare corrente e temperatura su banco di prova prima del volo."
86
+ }
87
+ ];
88
+
89
+ const howTo = [
90
+ {
91
+ "name": "Scegliere un profilo di volo",
92
+ "text": "Selezionare un preset per caricare valori iniziali coerenti per KV, tensione, elica e peso."
93
+ },
94
+ {
95
+ "name": "Inserire dati telaio ed elica",
96
+ "text": "Inserire il peso in ordine di volo e le specifiche di motore ed elica in unità metriche o imperiali."
97
+ },
98
+ {
99
+ "name": "Aggiungere un punto di misurazione",
100
+ "text": "Se si dispone di dati di banco, inserire spinta misurata e tensione di prova per calibrare il modello."
101
+ }
102
+ ];
103
+
104
+ const seo: SEOSection[] = [
105
+ {
106
+ type: 'title',
107
+ text: 'Principi di abbinamento motore ed elica per droni',
108
+ level: 2,
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'L accoppiamento motore elica è un equilibrio tra velocità di rotazione, diametro, passo, tensione e coppia. Questo strumento valuta la spinta statica e il consumo elettrico.',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: 'Risultati mostrati',
117
+ level: 2,
118
+ },
119
+ {
120
+ type: 'table',
121
+ headers: ["Risultato","Significato"],
122
+ rows: [["Velocità sotto carico","Stima RPM a vuoto ridotta dal fattore di carico"],["Spinta statica","Spinta per motore e spinta totale della configurazione"],["Margine di spinta","Spinta statica totale rispetto al peso del drone"],["Potenza e corrente","Richiesta elettrica stimata per la tensione selezionata"]],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Come usare il calcolatore',
127
+ level: 2,
128
+ },
129
+ {
130
+ type: 'list',
131
+ items: ["Inserire KV motore e tensione batteria.","Scegliere diametro, passo, numero pale e motori.","Aggiungere eventuali dati di banco del produttore.","Verificare temperatura e corrente su banco prima di volare."],
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Importanza dei dati reali',
136
+ level: 2,
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: 'La spinta dell elica dipende dalla densità dell aria e dalla geometria. Un dato di banco reale offre la calibrazione più accurata.',
141
+ },
142
+ {
143
+ type: 'tip',
144
+ title: 'Piano di test',
145
+ html: 'Eseguire un test su banco misurando corrente e temperatura prima del primo volo.',
146
+ },
147
+ ];
148
+
149
+ const schemas: DroneMotorPropellerLocaleContent['schemas'] = [
150
+ {
151
+ '@context': 'https://schema.org',
152
+ '@type': 'FAQPage',
153
+ mainEntity: faq.map((item) => ({
154
+ '@type': 'Question',
155
+ name: item.question,
156
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
157
+ })),
158
+ } as WithContext<FAQPage>,
159
+ {
160
+ '@context': 'https://schema.org',
161
+ '@type': 'HowTo',
162
+ name: title,
163
+ description,
164
+ step: howTo.map((step, index) => ({
165
+ '@type': 'HowToStep',
166
+ position: index + 1,
167
+ name: step.name,
168
+ text: step.text,
169
+ })),
170
+ } as WithContext<HowTo>,
171
+ {
172
+ '@context': 'https://schema.org',
173
+ '@type': 'SoftwareApplication',
174
+ name: title,
175
+ description,
176
+ applicationCategory: 'UtilityApplication',
177
+ operatingSystem: 'All',
178
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
179
+ } as WithContext<SoftwareApplication>,
180
+ ];
181
+
182
+ export const content: DroneMotorPropellerLocaleContent = {
183
+ slug,
184
+ title,
185
+ description,
186
+ ui,
187
+ seo,
188
+ faq,
189
+ bibliography: BIBLIOGRAPHY_ITEMS,
190
+ howTo,
191
+ schemas,
192
+ };