@jjlmoya/utils-hardware 1.24.0 → 1.26.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 (79) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +4 -1
  3. package/src/entries.ts +10 -1
  4. package/src/index.ts +3 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/keyboardChatterTest/bibliography.astro +15 -0
  8. package/src/tool/keyboardChatterTest/bibliography.ts +20 -0
  9. package/src/tool/keyboardChatterTest/component.astro +353 -0
  10. package/src/tool/keyboardChatterTest/entry.ts +30 -0
  11. package/src/tool/keyboardChatterTest/i18n/de.ts +232 -0
  12. package/src/tool/keyboardChatterTest/i18n/en.ts +232 -0
  13. package/src/tool/keyboardChatterTest/i18n/es.ts +232 -0
  14. package/src/tool/keyboardChatterTest/i18n/fr.ts +232 -0
  15. package/src/tool/keyboardChatterTest/i18n/id.ts +232 -0
  16. package/src/tool/keyboardChatterTest/i18n/it.ts +232 -0
  17. package/src/tool/keyboardChatterTest/i18n/ja.ts +232 -0
  18. package/src/tool/keyboardChatterTest/i18n/ko.ts +232 -0
  19. package/src/tool/keyboardChatterTest/i18n/nl.ts +232 -0
  20. package/src/tool/keyboardChatterTest/i18n/pl.ts +232 -0
  21. package/src/tool/keyboardChatterTest/i18n/pt.ts +232 -0
  22. package/src/tool/keyboardChatterTest/i18n/ru.ts +232 -0
  23. package/src/tool/keyboardChatterTest/i18n/sv.ts +232 -0
  24. package/src/tool/keyboardChatterTest/i18n/tr.ts +232 -0
  25. package/src/tool/keyboardChatterTest/i18n/zh.ts +232 -0
  26. package/src/tool/keyboardChatterTest/index.ts +12 -0
  27. package/src/tool/keyboardChatterTest/keyboard-chatter-test.css +512 -0
  28. package/src/tool/keyboardChatterTest/logic.ts +23 -0
  29. package/src/tool/keyboardChatterTest/seo.astro +16 -0
  30. package/src/tool/keyboardChatterTest/ui.ts +34 -0
  31. package/src/tool/webBluetoothBleScanner/bibliography.astro +14 -0
  32. package/src/tool/webBluetoothBleScanner/bibliography.ts +16 -0
  33. package/src/tool/webBluetoothBleScanner/component.astro +339 -0
  34. package/src/tool/webBluetoothBleScanner/entry.ts +29 -0
  35. package/src/tool/webBluetoothBleScanner/i18n/de.ts +233 -0
  36. package/src/tool/webBluetoothBleScanner/i18n/en.ts +233 -0
  37. package/src/tool/webBluetoothBleScanner/i18n/es.ts +233 -0
  38. package/src/tool/webBluetoothBleScanner/i18n/fr.ts +233 -0
  39. package/src/tool/webBluetoothBleScanner/i18n/id.ts +233 -0
  40. package/src/tool/webBluetoothBleScanner/i18n/it.ts +233 -0
  41. package/src/tool/webBluetoothBleScanner/i18n/ja.ts +233 -0
  42. package/src/tool/webBluetoothBleScanner/i18n/ko.ts +233 -0
  43. package/src/tool/webBluetoothBleScanner/i18n/nl.ts +233 -0
  44. package/src/tool/webBluetoothBleScanner/i18n/pl.ts +233 -0
  45. package/src/tool/webBluetoothBleScanner/i18n/pt.ts +233 -0
  46. package/src/tool/webBluetoothBleScanner/i18n/ru.ts +233 -0
  47. package/src/tool/webBluetoothBleScanner/i18n/sv.ts +233 -0
  48. package/src/tool/webBluetoothBleScanner/i18n/tr.ts +233 -0
  49. package/src/tool/webBluetoothBleScanner/i18n/zh.ts +233 -0
  50. package/src/tool/webBluetoothBleScanner/index.ts +11 -0
  51. package/src/tool/webBluetoothBleScanner/logic.ts +79 -0
  52. package/src/tool/webBluetoothBleScanner/seo.astro +15 -0
  53. package/src/tool/webBluetoothBleScanner/ui.ts +41 -0
  54. package/src/tool/webBluetoothBleScanner/web-bluetooth-ble-scanner.css +406 -0
  55. package/src/tool/webUsbSerialMonitor/bibliography.astro +15 -0
  56. package/src/tool/webUsbSerialMonitor/bibliography.ts +18 -0
  57. package/src/tool/webUsbSerialMonitor/component.astro +356 -0
  58. package/src/tool/webUsbSerialMonitor/entry.ts +30 -0
  59. package/src/tool/webUsbSerialMonitor/i18n/de.ts +241 -0
  60. package/src/tool/webUsbSerialMonitor/i18n/en.ts +241 -0
  61. package/src/tool/webUsbSerialMonitor/i18n/es.ts +241 -0
  62. package/src/tool/webUsbSerialMonitor/i18n/fr.ts +241 -0
  63. package/src/tool/webUsbSerialMonitor/i18n/id.ts +241 -0
  64. package/src/tool/webUsbSerialMonitor/i18n/it.ts +241 -0
  65. package/src/tool/webUsbSerialMonitor/i18n/ja.ts +241 -0
  66. package/src/tool/webUsbSerialMonitor/i18n/ko.ts +241 -0
  67. package/src/tool/webUsbSerialMonitor/i18n/nl.ts +241 -0
  68. package/src/tool/webUsbSerialMonitor/i18n/pl.ts +241 -0
  69. package/src/tool/webUsbSerialMonitor/i18n/pt.ts +241 -0
  70. package/src/tool/webUsbSerialMonitor/i18n/ru.ts +241 -0
  71. package/src/tool/webUsbSerialMonitor/i18n/sv.ts +241 -0
  72. package/src/tool/webUsbSerialMonitor/i18n/tr.ts +241 -0
  73. package/src/tool/webUsbSerialMonitor/i18n/zh.ts +241 -0
  74. package/src/tool/webUsbSerialMonitor/index.ts +12 -0
  75. package/src/tool/webUsbSerialMonitor/logic.ts +44 -0
  76. package/src/tool/webUsbSerialMonitor/seo.astro +16 -0
  77. package/src/tool/webUsbSerialMonitor/ui.ts +51 -0
  78. package/src/tool/webUsbSerialMonitor/web-usb-serial-monitor.css +415 -0
  79. package/src/tools.ts +4 -1
@@ -0,0 +1,241 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { WebUsbSerialMonitorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'web-usb-serial-monitor';
7
+ const title = 'WebUSB Serial Monitor';
8
+ const description = 'Connect to USB serial hardware from the browser, read live terminal output, send commands, and debug Arduino, ESP32, RP2040, and maker boards without installing a desktop terminal.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Does this serial monitor work with Arduino, ESP32, and Raspberry Pi Pico boards?',
13
+ answer: 'Yes, when the board exposes a USB serial interface supported by Web Serial and the browser is Chromium-based. Common Arduino, ESP32, RP2040, CH340, CP210x, and FTDI adapters usually work after the user grants permission.',
14
+ },
15
+ {
16
+ question: 'Why is this called WebUSB if it uses Web Serial?',
17
+ answer: 'Most maker boards connect over USB, but browser terminal access is provided by the Web Serial API. WebUSB is lower-level and is not the right abstraction for a simple UART-style terminal.',
18
+ },
19
+ {
20
+ question: 'Can a website access my serial devices without permission?',
21
+ answer: 'No. The browser requires a user click and a native device picker before a site can open a serial port. This tool does not store terminal logs or device identifiers.',
22
+ },
23
+ {
24
+ question: 'Which browser should I use for a web serial terminal?',
25
+ answer: 'Use Chrome, Edge, or another Chromium-based browser over HTTPS or localhost. Firefox, Safari, and many iOS browsers do not expose the Web Serial API.',
26
+ },
27
+ {
28
+ question: 'What baud rate should I choose?',
29
+ answer: 'Choose the baud rate configured in your firmware. Arduino examples often use 9600 or 115200, while faster logs, bootloaders, and high-rate sensor streams may use 230400, 460800, or 921600.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Connect the USB serial device',
36
+ text: 'Plug in the board or adapter and close any other serial terminal that may already have the port open.',
37
+ },
38
+ {
39
+ name: 'Select the baud rate',
40
+ text: 'Pick the same baud rate used by the firmware, such as 115200 for many Arduino, ESP32, and RP2040 sketches.',
41
+ },
42
+ {
43
+ name: 'Grant browser permission',
44
+ text: 'Press Connect, choose the serial device in the browser picker, and allow the page to open the port.',
45
+ },
46
+ {
47
+ name: 'Read and send terminal data',
48
+ text: 'Watch incoming logs in the terminal, send commands with optional CRLF line endings, and clear or pause the live output when needed.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'DeveloperApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
83
+ inLanguage: 'en',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<WebUsbSerialMonitorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'Online Serial Monitor for USB Maker Hardware',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'This browser serial monitor opens a USB serial port directly from Chrome or Edge, then streams text from microcontrollers, USB UART bridges, development boards, bootloaders, test fixtures, sensors, and lab hardware. It is designed for quick diagnostics when you need a serial console but do not want to install a desktop IDE or terminal application.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Browser permission boundary',
107
+ html: 'The page cannot silently enumerate or open your serial devices. Access starts only after you press Connect and choose a port in the browser picker. Terminal data stays in the current tab unless you copy it yourself.',
108
+ },
109
+ {
110
+ type: 'stats',
111
+ items: [
112
+ { value: '9600-921600', label: 'common baud presets' },
113
+ { value: 'CRLF', label: 'optional command ending' },
114
+ { value: 'local', label: 'terminal session' },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'When a Web Serial Terminal Is Useful',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Checking boot messages from Arduino, ESP32, ESP8266, RP2040, STM32, or custom firmware.',
126
+ 'Sending AT commands to modem, GPS, LoRa, Wi-Fi, Bluetooth, or cellular modules through a USB UART adapter.',
127
+ 'Reading sensor output from a factory test jig, classroom lab, robotics controller, or bench prototype.',
128
+ 'Verifying that a USB serial bridge driver, cable, board power, and firmware baud rate are all working together.',
129
+ 'Collecting a quick error log before filing a bug or asking for hardware support.',
130
+ ],
131
+ },
132
+ {
133
+ type: 'comparative',
134
+ items: [
135
+ {
136
+ title: 'Web serial monitor',
137
+ description: 'Best for quick support, classroom instructions, field diagnostics, and maker workflows where opening a URL is faster than installing an IDE.',
138
+ },
139
+ {
140
+ title: 'Desktop terminal',
141
+ description: 'Better for binary protocols, long capture sessions, scripting, hardware flow control, macros, and environments where browser APIs are blocked.',
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Baud Rate and Line Ending Checklist',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Setting', 'Typical choice', 'What goes wrong when it is wrong'],
153
+ rows: [
154
+ ['Baud rate', '115200 for many modern boards, 9600 for older examples.', 'Readable text turns into random symbols or no useful log appears.'],
155
+ ['Line ending', 'CRLF for many command parsers, no ending for raw character protocols.', 'Commands are ignored because the firmware is waiting for a terminator.'],
156
+ ['Exclusive port access', 'Close Arduino Serial Monitor, PuTTY, screen, minicom, or vendor tools.', 'The browser picker opens the port but reading or writing fails.'],
157
+ ['Secure context', 'HTTPS or localhost.', 'The Serial API is missing even in a supported browser.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'diagnostic',
162
+ variant: 'warning',
163
+ title: 'No serial output?',
164
+ html: 'Confirm the board is powered and the USB cable supports data, not charging only. Try 9600, 57600, and 115200 if you do not know the firmware baud rate. Press reset after connecting because many boards print boot logs only during startup. Close other software that may still own the serial port, and install the operating system driver for CH340, CP210x, FTDI, or the board vendor if the device never appears.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Privacy, Security, and Limits',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'proscons',
173
+ title: 'Web Serial strengths and limits',
174
+ items: [
175
+ {
176
+ pro: 'No desktop installation for basic serial text diagnostics.',
177
+ con: 'Requires a Chromium-based browser and a secure context.',
178
+ },
179
+ {
180
+ pro: 'Browser picker limits access to the specific port you choose.',
181
+ con: 'Not intended for binary protocol analyzers or long unattended captures.',
182
+ },
183
+ {
184
+ pro: 'Works well for text logs, command prompts, and quick hardware checks.',
185
+ con: 'Some corporate policies, mobile browsers, and operating systems block Web Serial.',
186
+ },
187
+ ],
188
+ },
189
+ ],
190
+ ui: {
191
+ unsupportedTitle: 'Web Serial is not available',
192
+ unsupportedBody: 'Use Chrome or Edge over HTTPS or localhost, and make sure your device exposes a USB serial interface.',
193
+ secureContext: 'Web Serial requires HTTPS or localhost. Reload this page from a secure origin and try again.',
194
+ statusIdle: 'Choose a baud rate, then connect a USB serial device',
195
+ statusPermission: 'Waiting for the browser serial port picker',
196
+ statusOpening: 'Opening serial port',
197
+ statusConnected: 'Serial port connected',
198
+ statusDisconnected: 'Serial port disconnected',
199
+ statusError: 'Serial connection failed',
200
+ connect: 'Connect Serial',
201
+ disconnect: 'Disconnect',
202
+ send: 'Send',
203
+ clear: 'Clear',
204
+ pause: 'Pause',
205
+ resume: 'Resume',
206
+ baudRate: 'Baud rate',
207
+ newline: 'Append CRLF',
208
+ inputPlaceholder: 'Type a command, then press Enter',
209
+ portFallback: 'No port selected',
210
+ portLabel: 'Port identity',
211
+ connectedDeviceLabel: 'Connected device',
212
+ deviceNameFallback: 'USB serial device',
213
+ transportLabel: 'Web Serial link',
214
+ bytesLabel: 'Bytes',
215
+ linesLabel: 'Lines',
216
+ privacyTitle: 'Permission gated',
217
+ privacyBody: 'The browser only exposes the serial device you select. Logs stay in this tab unless you copy them.',
218
+ emptyLog: 'Terminal output will appear here after you connect a serial device.',
219
+ copied: 'Copied',
220
+ copyLog: 'Copy',
221
+ presetSlow: '9600',
222
+ presetArduino: '115200',
223
+ presetFast: '921600',
224
+ terminalLabel: 'Live terminal',
225
+ unknownUsbId: 'N/A',
226
+ logDirectionRx: 'rx',
227
+ logDirectionTx: 'tx',
228
+ logDirectionSys: 'sys',
229
+ vidPrefix: 'VID ',
230
+ pidSeparator: ' / PID ',
231
+ baudUnit: ' baud',
232
+ vendorFtdi: 'FTDI USB Serial',
233
+ vendorSilabs: 'Silicon Labs CP210x',
234
+ vendorCh340: 'CH340 USB Serial',
235
+ vendorArduinoUsb: 'Arduino USB Serial',
236
+ vendorAdafruit: 'Adafruit USB Serial',
237
+ vendorRp2040: 'Raspberry Pi RP2040',
238
+ vendorEspressif: 'Espressif USB Serial',
239
+ vendorOpenSource: 'Open source USB Serial',
240
+ },
241
+ };
@@ -0,0 +1,241 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { WebUsbSerialMonitorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'monitor-serie-webusb';
7
+ const title = 'Monitor Serie WebUSB';
8
+ const description = 'Conéctate a hardware serie USB desde el navegador, lee la salida del terminal en vivo, envía comandos y depura placas Arduino, ESP32, RP2040 y maker sin instalar un terminal de escritorio.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Funciona este monitor serie con placas Arduino, ESP32 y Raspberry Pi Pico?',
13
+ answer: 'Sí, cuando la placa expone una interfaz serie USB compatible con Web Serial y el navegador está basado en Chromium. Los adaptadores comunes Arduino, ESP32, RP2040, CH340, CP210x y FTDI suelen funcionar después de que el usuario concede permiso.',
14
+ },
15
+ {
16
+ question: '¿Por qué se llama WebUSB si utiliza Web Serial?',
17
+ answer: 'La mayoría de las placas maker se conectan por USB, pero el acceso al terminal del navegador lo proporciona la API Web Serial. WebUSB es de más bajo nivel y no es la abstracción adecuada para un terminal simple estilo UART.',
18
+ },
19
+ {
20
+ question: '¿Puede un sitio web acceder a mis dispositivos serie sin permiso?',
21
+ answer: 'No. El navegador requiere un clic del usuario y un selector nativo de dispositivos antes de que un sitio pueda abrir un puerto serie. Esta herramienta no almacena registros del terminal ni identificadores de dispositivos.',
22
+ },
23
+ {
24
+ question: '¿Qué navegador debo usar para un terminal serie web?',
25
+ answer: 'Usa Chrome, Edge u otro navegador basado en Chromium mediante HTTPS o localhost. Firefox, Safari y muchos navegadores iOS no exponen la API Web Serial.',
26
+ },
27
+ {
28
+ question: '¿Qué velocidad de baudios debo elegir?',
29
+ answer: 'Elige la velocidad de baudios configurada en tu firmware. Los ejemplos de Arduino suelen usar 9600 o 115200, mientras que registros más rápidos, bootloaders y flujos de sensores de alta velocidad pueden usar 230400, 460800 o 921600.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Conecta el dispositivo serie USB',
36
+ text: 'Enchufa la placa o adaptador y cierra cualquier otro terminal serie que pueda tener el puerto abierto.',
37
+ },
38
+ {
39
+ name: 'Selecciona la velocidad de baudios',
40
+ text: 'Elige la misma velocidad de baudios que usa el firmware, como 115200 para muchos sketches de Arduino, ESP32 y RP2040.',
41
+ },
42
+ {
43
+ name: 'Concede permiso al navegador',
44
+ text: 'Pulsa Conectar, elige el dispositivo serie en el selector del navegador y permite que la página abra el puerto.',
45
+ },
46
+ {
47
+ name: 'Lee y envía datos del terminal',
48
+ text: 'Observa los registros entrantes en el terminal, envía comandos con terminaciones de línea CRLF opcionales y limpia o pausa la salida en vivo cuando sea necesario.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'DeveloperApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
83
+ inLanguage: 'es',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<WebUsbSerialMonitorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'Monitor Serie Online para Hardware USB Maker',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Este monitor serie de navegador abre un puerto serie USB directamente desde Chrome o Edge, luego transmite texto desde microcontroladores, puentes USB UART, placas de desarrollo, bootloaders, dispositivos de prueba, sensores y hardware de laboratorio. Está diseñado para diagnósticos rápidos cuando necesitas una consola serie pero no quieres instalar un IDE de escritorio o una aplicación de terminal.',
103
+ },
104
+ {
105
+ type: 'message',
106
+ title: 'Límite de permiso del navegador',
107
+ html: 'La página no puede enumerar ni abrir silenciosamente tus dispositivos serie. El acceso comienza solo después de que pulses Conectar y elijas un puerto en el selector del navegador. Los datos del terminal permanecen en la pestaña actual a menos que los copies tú mismo.',
108
+ },
109
+ {
110
+ type: 'stats',
111
+ items: [
112
+ { value: '9600-921600', label: 'preajustes de baudios comunes' },
113
+ { value: 'CRLF', label: 'terminación de comando opcional' },
114
+ { value: 'local', label: 'sesión de terminal' },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Cuándo es Útil un Terminal Serie Web',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Verificar mensajes de arranque de Arduino, ESP32, ESP8266, RP2040, STM32 o firmware personalizado.',
126
+ 'Enviar comandos AT a módems, GPS, LoRa, Wi-Fi, Bluetooth o módulos celulares a través de un adaptador USB UART.',
127
+ 'Leer la salida de sensores de un banco de pruebas de fábrica, laboratorio escolar, controlador robótico o prototipo de banco.',
128
+ 'Verificar que un controlador de puente serie USB, cable, alimentación de la placa y velocidad de baudios del firmware funcionen juntos.',
129
+ 'Recopilar un registro de errores rápido antes de presentar un bug o solicitar soporte de hardware.',
130
+ ],
131
+ },
132
+ {
133
+ type: 'comparative',
134
+ items: [
135
+ {
136
+ title: 'Monitor serie web',
137
+ description: 'Ideal para soporte rápido, instrucciones en clase, diagnósticos de campo y flujos de trabajo maker donde abrir una URL es más rápido que instalar un IDE.',
138
+ },
139
+ {
140
+ title: 'Terminal de escritorio',
141
+ description: 'Mejor para protocolos binarios, sesiones largas de captura, scripting, control de flujo por hardware, macros y entornos donde las APIs del navegador están bloqueadas.',
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Lista de Verificación de Baudios y Fin de Línea',
148
+ level: 3,
149
+ },
150
+ {
151
+ type: 'table',
152
+ headers: ['Configuración', 'Elección típica', 'Qué falla cuando es incorrecto'],
153
+ rows: [
154
+ ['Velocidad de baudios', '115200 para muchas placas modernas, 9600 para ejemplos antiguos.', 'El texto legible se convierte en símbolos aleatorios o no aparece ningún registro útil.'],
155
+ ['Fin de línea', 'CRLF para muchos analizadores de comandos, sin terminación para protocolos de caracteres sin procesar.', 'Los comandos se ignoran porque el firmware espera un terminador.'],
156
+ ['Acceso exclusivo al puerto', 'Cierra Arduino Serial Monitor, PuTTY, screen, minicom o herramientas del fabricante.', 'El selector del navegador abre el puerto pero la lectura o escritura falla.'],
157
+ ['Contexto seguro', 'HTTPS o localhost.', 'La API Serial falta incluso en un navegador compatible.'],
158
+ ],
159
+ },
160
+ {
161
+ type: 'diagnostic',
162
+ variant: 'warning',
163
+ title: '¿Sin salida serie?',
164
+ html: 'Confirma que la placa está alimentada y que el cable USB admite datos, no solo carga. Prueba 9600, 57600 y 115200 si no conoces la velocidad de baudios del firmware. Pulsa reset después de conectar porque muchas placas imprimen registros de arranque solo durante el inicio. Cierra otro software que pueda tener el puerto serie abierto e instala el controlador del sistema operativo para CH340, CP210x, FTDI o el fabricante de la placa si el dispositivo nunca aparece.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Privacidad, Seguridad y Límites',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'proscons',
173
+ title: 'Fortalezas y límites de Web Serial',
174
+ items: [
175
+ {
176
+ pro: 'Sin instalación de escritorio para diagnósticos básicos de texto serie.',
177
+ con: 'Requiere un navegador basado en Chromium y un contexto seguro.',
178
+ },
179
+ {
180
+ pro: 'El selector del navegador limita el acceso al puerto específico que elijas.',
181
+ con: 'No está destinado a analizadores de protocolos binarios o capturas largas sin supervisión.',
182
+ },
183
+ {
184
+ pro: 'Funciona bien para registros de texto, líneas de comandos y verificaciones rápidas de hardware.',
185
+ con: 'Algunas políticas corporativas, navegadores móviles y sistemas operativos bloquean Web Serial.',
186
+ },
187
+ ],
188
+ },
189
+ ],
190
+ ui: {
191
+ unsupportedTitle: 'Web Serial no está disponible',
192
+ unsupportedBody: 'Usa Chrome o Edge mediante HTTPS o localhost y asegúrate de que tu dispositivo exponga una interfaz serie USB.',
193
+ secureContext: 'Web Serial requiere HTTPS o localhost. Recarga esta página desde un origen seguro e inténtalo de nuevo.',
194
+ statusIdle: 'Elige una velocidad de baudios y conecta un dispositivo serie USB',
195
+ statusPermission: 'Esperando el selector de puerto serie del navegador',
196
+ statusOpening: 'Abriendo puerto serie',
197
+ statusConnected: 'Puerto serie conectado',
198
+ statusDisconnected: 'Puerto serie desconectado',
199
+ statusError: 'Conexión serie fallida',
200
+ connect: 'Conectar Serie',
201
+ disconnect: 'Desconectar',
202
+ send: 'Enviar',
203
+ clear: 'Limpiar',
204
+ pause: 'Pausa',
205
+ resume: 'Reanudar',
206
+ baudRate: 'Baudios',
207
+ newline: 'Añadir CRLF',
208
+ inputPlaceholder: 'Escribe un comando y pulsa Enter',
209
+ portFallback: 'Sin puerto seleccionado',
210
+ portLabel: 'Identidad del puerto',
211
+ connectedDeviceLabel: 'Dispositivo conectado',
212
+ deviceNameFallback: 'Dispositivo serie USB',
213
+ transportLabel: 'Enlace Web Serial',
214
+ bytesLabel: 'Bytes',
215
+ linesLabel: 'Líneas',
216
+ privacyTitle: 'Acceso controlado',
217
+ privacyBody: 'El navegador solo expone el dispositivo serie que seleccionas. Los registros permanecen en esta pestaña a menos que los copies.',
218
+ emptyLog: 'La salida del terminal aparecerá aquí después de conectar un dispositivo serie.',
219
+ copied: 'Copiado',
220
+ copyLog: 'Copiar',
221
+ presetSlow: '9600',
222
+ presetArduino: '115200',
223
+ presetFast: '921600',
224
+ terminalLabel: 'Terminal en vivo',
225
+ unknownUsbId: 'N/A',
226
+ logDirectionRx: 'rx',
227
+ logDirectionTx: 'tx',
228
+ logDirectionSys: 'sys',
229
+ vidPrefix: 'VID ',
230
+ pidSeparator: ' / PID ',
231
+ baudUnit: ' baudios',
232
+ vendorFtdi: 'FTDI USB Serial',
233
+ vendorSilabs: 'Silicon Labs CP210x',
234
+ vendorCh340: 'CH340 USB Serial',
235
+ vendorArduinoUsb: 'Arduino USB Serial',
236
+ vendorAdafruit: 'Adafruit USB Serial',
237
+ vendorRp2040: 'Raspberry Pi RP2040',
238
+ vendorEspressif: 'Espressif USB Serial',
239
+ vendorOpenSource: 'Open Source USB Serial',
240
+ },
241
+ };