Skip to content

Commit e0ee7f2

Browse files
committed
updated docs
1 parent da33e77 commit e0ee7f2

45 files changed

Lines changed: 1858 additions & 131 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/atomvm/arcade.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,14 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
9898
<a class="nav-link" href="../controllers/esp32.html">ESP32</a>
9999
</li>
100100
<li class="nav-item" data-depth="1">
101-
<a class="nav-link" href="../controllers/smt32.html">SMT32</a>
101+
<a class="nav-link" href="../controllers/stm32.html">STM32</a>
102102
</li>
103103
<li class="nav-item" data-depth="1">
104104
<a class="nav-link" href="../controllers/raspberry.html">Raspberry Pi</a>
105105
</li>
106+
<li class="nav-item" data-depth="1">
107+
<a class="nav-link" href="../controllers/fpga.html">FPGA</a>
108+
</li>
106109
</ul>
107110
</li>
108111
<li class="nav-item" data-depth="0">
@@ -125,7 +128,10 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
125128
<a class="nav-link" href="../tools/home-assistant.html">Home Assistant</a>
126129
</li>
127130
<li class="nav-item" data-depth="1">
128-
<a class="nav-link" href="../tools/grafana.html">Grafana</a>
131+
<a class="nav-link" href="../tools/dashboards.html">Dashboards</a>
132+
</li>
133+
<li class="nav-item" data-depth="1">
134+
<a class="nav-link" href="../tools/cad.html">Herramientas de Computer Asisted Design (CAD)</a>
129135
</li>
130136
</ul>
131137
</li>

docs/atomvm/atomvm.html

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta name="viewport" content="width=device-width,initial-scale=1">
66
<title>AtomVM :: Electrónica, Robótica e IOT con Elixir</title>
77
<link rel="canonical" href="https://elixircl.github.io/elixir-robotics/atomvm/atomvm.html">
8-
<link rel="prev" href="../tools/grafana.html">
8+
<link rel="prev" href="../tools/cad.html">
99
<link rel="next" href="devenv.html">
1010
<meta name="generator" content="Antora 3.1.10">
1111
<link rel="stylesheet" href="../_/css/site.css">
@@ -98,11 +98,14 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
9898
<a class="nav-link" href="../controllers/esp32.html">ESP32</a>
9999
</li>
100100
<li class="nav-item" data-depth="1">
101-
<a class="nav-link" href="../controllers/smt32.html">SMT32</a>
101+
<a class="nav-link" href="../controllers/stm32.html">STM32</a>
102102
</li>
103103
<li class="nav-item" data-depth="1">
104104
<a class="nav-link" href="../controllers/raspberry.html">Raspberry Pi</a>
105105
</li>
106+
<li class="nav-item" data-depth="1">
107+
<a class="nav-link" href="../controllers/fpga.html">FPGA</a>
108+
</li>
106109
</ul>
107110
</li>
108111
<li class="nav-item" data-depth="0">
@@ -125,7 +128,10 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
125128
<a class="nav-link" href="../tools/home-assistant.html">Home Assistant</a>
126129
</li>
127130
<li class="nav-item" data-depth="1">
128-
<a class="nav-link" href="../tools/grafana.html">Grafana</a>
131+
<a class="nav-link" href="../tools/dashboards.html">Dashboards</a>
132+
</li>
133+
<li class="nav-item" data-depth="1">
134+
<a class="nav-link" href="../tools/cad.html">Herramientas de Computer Asisted Design (CAD)</a>
129135
</li>
130136
</ul>
131137
</li>
@@ -396,7 +402,7 @@ <h2 id="referencias"><a class="anchor" href="#referencias"></a>Referencias</h2>
396402
</div>
397403
</div>
398404
<nav class="pagination">
399-
<span class="prev"><a href="../tools/grafana.html">Grafana</a></span>
405+
<span class="prev"><a href="../tools/cad.html">Herramientas de Computer Asisted Design (CAD)</a></span>
400406
<span class="next"><a href="devenv.html">Entorno de Desarrollo</a></span>
401407
</nav>
402408
</article>

docs/atomvm/components.html

Lines changed: 210 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,14 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
9898
<a class="nav-link" href="../controllers/esp32.html">ESP32</a>
9999
</li>
100100
<li class="nav-item" data-depth="1">
101-
<a class="nav-link" href="../controllers/smt32.html">SMT32</a>
101+
<a class="nav-link" href="../controllers/stm32.html">STM32</a>
102102
</li>
103103
<li class="nav-item" data-depth="1">
104104
<a class="nav-link" href="../controllers/raspberry.html">Raspberry Pi</a>
105105
</li>
106+
<li class="nav-item" data-depth="1">
107+
<a class="nav-link" href="../controllers/fpga.html">FPGA</a>
108+
</li>
106109
</ul>
107110
</li>
108111
<li class="nav-item" data-depth="0">
@@ -125,7 +128,10 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
125128
<a class="nav-link" href="../tools/home-assistant.html">Home Assistant</a>
126129
</li>
127130
<li class="nav-item" data-depth="1">
128-
<a class="nav-link" href="../tools/grafana.html">Grafana</a>
131+
<a class="nav-link" href="../tools/dashboards.html">Dashboards</a>
132+
</li>
133+
<li class="nav-item" data-depth="1">
134+
<a class="nav-link" href="../tools/cad.html">Herramientas de Computer Asisted Design (CAD)</a>
129135
</li>
130136
</ul>
131137
</li>
@@ -222,11 +228,117 @@ <h2 id="motor-dc"><a class="anchor" href="#motor-dc"></a>Motor DC</h2>
222228
</div>
223229
<div class="sect2">
224230
<h3 id="guía-de-conexiones"><a class="anchor" href="#guía-de-conexiones"></a>Guía de Conexiones</h3>
225-
231+
<div class="paragraph">
232+
<p>Para controlar un motor DC con una ESP32 y un driver L298N, se requiere de una fuente de alimentación externa para el motor, ya que la ESP32 no puede suministrar la corriente necesaria. El L298N actúa como un "puente H" que permite a la ESP32 controlar tanto la dirección como la velocidad del motor.</p>
233+
</div>
234+
<div class="ulist">
235+
<ul>
236+
<li>
237+
<p><strong>Conexión a la ESP32</strong>:</p>
238+
</li>
239+
<li>
240+
<p><code>ESP32 GND</code> &#8594; <code>L298N GND</code> (es importante que compartan tierra)</p>
241+
</li>
242+
<li>
243+
<p><code>ESP32 GPIO26</code> &#8594; <code>L298N IN1</code></p>
244+
</li>
245+
<li>
246+
<p><code>ESP32 GPIO27</code> &#8594; <code>L298N IN2</code></p>
247+
</li>
248+
<li>
249+
<p><code>ESP32 GPIO25</code> &#8594; <code>L298N ENA</code> (si se va a usar PWM)</p>
250+
</li>
251+
<li>
252+
<p><strong>Conexión de la Fuente de Alimentación Externa</strong>:</p>
253+
</li>
254+
<li>
255+
<p><code>Fuente Externa Positivo (+) ` &#8594; `L298N V12</code></p>
256+
</li>
257+
<li>
258+
<p><code>Fuente Externa Negativo (-) ` &#8594; `L298N GND</code></p>
259+
</li>
260+
<li>
261+
<p><strong>Conexión del Motor DC</strong>:</p>
262+
</li>
263+
<li>
264+
<p><code>Motor Terminal 1</code> &#8594; <code>L298N OUT1</code></p>
265+
</li>
266+
<li>
267+
<p><code>Motor Terminal 2</code> &#8594; <code>L298N OUT2</code></p>
268+
</li>
269+
</ul>
270+
</div>
271+
<div class="paragraph">
272+
<p><strong>Notas sobre el pin <code>ENA</code> y el control de velocidad (PWM):</strong></p>
273+
</div>
274+
<div class="ulist">
275+
<ul>
276+
<li>
277+
<p>El módulo L298N suele venir con un jumper de plástico preinstalado en el pin <code>ENA</code> (y <code>ENB</code>).</p>
278+
</li>
279+
<li>
280+
<p>Si este jumper está puesto, el motor estará siempre habilitado a máxima potencia y no podrás controlar su velocidad mediante software.</p>
281+
</li>
282+
<li>
283+
<p>Para poder controlar la velocidad del motor con la ESP32, se debe retirar el jumper del pin <code>ENA</code> y conectar un pin GPIO de la ESP32 (como <code>GPIO25</code>) a <code>ENA</code>.</p>
284+
</li>
285+
<li>
286+
<p>La ESP32 enviará una señal PWM (Pulse Width Modulation) a este pin <code>ENA</code>. El PWM permite simular un voltaje variable controlando el "tiempo de encendido" de la señal, lo que a su vez controla la velocidad efectiva del motor. En AtomVM, esto se gestiona mediante el módulo <code>LEDC</code>.</p>
287+
</li>
288+
</ul>
289+
</div>
226290
</div>
227291
<div class="sect2">
228292
<h3 id="código-de-ejemplo"><a class="anchor" href="#código-de-ejemplo"></a>Código de Ejemplo</h3>
293+
<div class="listingblock">
294+
<div class="content">
295+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">defmodule MotorTest do
296+
@left_motor_pin_1 26
297+
@left_motor_pin_2 27
229298

299+
def start() do
300+
:gpio.set_pin_mode(@left_motor_pin_1, :output)
301+
:gpio.set_pin_mode(@left_motor_pin_2, :output)
302+
303+
:io.format('Setup de motor finalizado~n')
304+
305+
loop()
306+
end
307+
308+
defp loop() do
309+
:io.format('Moviendo hacia adelante~n')
310+
set_motor_direction(:forward)
311+
Process.sleep(3000)
312+
313+
:io.format('Deteniendo motor~n')
314+
set_motor_direction(:stop)
315+
Process.sleep(2000)
316+
317+
:io.format('Moviendo hacia atrás~n')
318+
set_motor_direction(:reverse)
319+
Process.sleep(3000)
320+
321+
loop()
322+
end
323+
324+
defp set_motor_direction(direction) do
325+
case direction do
326+
:forward -&gt;
327+
:gpio.digital_write(@left_motor_pin_1, :high)
328+
:gpio.digital_write(@left_motor_pin_2, :low)
329+
:reverse -&gt;
330+
:gpio.digital_write(@left_motor_pin_1, :low)
331+
:gpio.digital_write(@left_motor_pin_2, :high)
332+
:stop -&gt;
333+
:gpio.digital_write(@left_motor_pin_1, :low)
334+
:gpio.digital_write(@left_motor_pin_2, :low)
335+
_ -&gt;
336+
:io.format('Dirección de motor inválida: ~p~n', [direction])
337+
end
338+
end
339+
end</code></pre>
340+
</div>
341+
</div>
230342
</div>
231343
<div class="sect2">
232344
<h3 id="ejemplo-de-funcionamiento"><a class="anchor" href="#ejemplo-de-funcionamiento"></a>Ejemplo de Funcionamiento</h3>
@@ -243,11 +355,105 @@ <h2 id="servomotor"><a class="anchor" href="#servomotor"></a>Servomotor</h2>
243355
</div>
244356
<div class="sect2">
245357
<h3 id="guía-de-conexiones-2"><a class="anchor" href="#guía-de-conexiones-2"></a>Guía de Conexiones</h3>
246-
358+
<div class="paragraph">
359+
<p>Para conectar un servomotor SG90 a la ESP32:</p>
360+
</div>
361+
<div class="ulist">
362+
<ul>
363+
<li>
364+
<p><strong>Pines del servomotor SG90</strong>:</p>
365+
</li>
366+
<li>
367+
<p><code>Cable Rojo</code>: VCC</p>
368+
</li>
369+
<li>
370+
<p><code>Cable Marrón</code>: GND</p>
371+
</li>
372+
<li>
373+
<p><code>Cable Naranja</code>: Señal PWM</p>
374+
</li>
375+
<li>
376+
<p><strong>Conexión a la ESP32</strong>:</p>
377+
</li>
378+
<li>
379+
<p><code>VCC</code> (Servo) &#8594; <code>ESP32 3v3</code></p>
380+
</li>
381+
<li>
382+
<p><code>GND</code> (Servo) &#8594; <code>ESP32 GND</code></p>
383+
</li>
384+
<li>
385+
<p><code>Signal</code> (Servo) &#8594; <code>ESP32 GPIO</code> (Ej: <code>GPIO13</code>)</p>
386+
</li>
387+
</ul>
388+
</div>
247389
</div>
248390
<div class="sect2">
249391
<h3 id="código-de-ejemplo-2"><a class="anchor" href="#código-de-ejemplo-2"></a>Código de Ejemplo</h3>
392+
<div class="listingblock">
393+
<div class="content">
394+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">defmodule ServoTest do
395+
@servomotor_pin 13
396+
@servo_pwm_channel 0 # canal LEDC a usar para el servo
397+
@servo_pwm_timer 0 # timer LEDC a usar para el servo
398+
399+
@servo_pwm_freq 50 # servos usan 50Hz
400+
@servo_pwm_resolution 10 # 10 bits de resolución (0-1023)
401+
402+
# valores de duty cycle para ángulos comunes del SG90
403+
# calculados para 10 bits de resolución (máx 1023) y 50Hz (periodo 20ms):
404+
# 1ms (0 grados) -&gt; (1/20) * 1023 = ~51
405+
# 1.5ms (90 grados) -&gt; (1.5/20) * 1023 = ~77
406+
# 2ms (180 grados) -&gt; (2/20) * 1023 = ~102
407+
@duty_0_degrees 51
408+
@duty_90_degrees 77
409+
@duty_180_degrees 100
410+
411+
def start() do
412+
set_up_servo()
413+
414+
:io.format('Servo setup finished. Starting movement sequence...~n')
250415

416+
set_servo_angle(@duty_0_degrees)
417+
Process.sleep(1500)
418+
419+
set_servo_angle(@duty_90_degrees)
420+
Process.sleep(1500)
421+
422+
set_servo_angle(@duty_180_degrees)
423+
Process.sleep(1500)
424+
425+
:io.format('Movement sequence completed. Entering infinite sleep.~n')
426+
:timer.sleep(:infinity)
427+
end
428+
429+
defp set_up_servo() do
430+
:ok =
431+
LEDC.timer_config(
432+
duty_resolution: @servo_pwm_resolution,
433+
freq_hz: @servo_pwm_freq,
434+
speed_mode: LEDC.high_speed_mode(),
435+
timer_num: @servo_pwm_timer
436+
)
437+
438+
:ok =
439+
LEDC.channel_config(
440+
channel: @servo_pwm_channel,
441+
duty: @duty_90_degrees, # iniciar el servo en una posición central
442+
gpio_num: @servomotor_pin,
443+
speed_mode: LEDC.high_speed_mode(),
444+
hpoint: 0,
445+
timer_sel: @servo_pwm_timer
446+
)
447+
end
448+
449+
defp set_servo_angle(duty_cycle_value) do
450+
:io.format('Setting servo duty to: ~p~n', [duty_cycle_value])
451+
:ok = LEDC.set_duty(LEDC.high_speed_mode(), @servo_pwm_channel, duty_cycle_value)
452+
:ok = LEDC.update_duty(LEDC.high_speed_mode(), @servo_pwm_channel)
453+
end
454+
end</code></pre>
455+
</div>
456+
</div>
251457
</div>
252458
<div class="sect2">
253459
<h3 id="ejemplo-de-funcionamiento-2"><a class="anchor" href="#ejemplo-de-funcionamiento-2"></a>Ejemplo de Funcionamiento</h3>

docs/atomvm/devenv.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,14 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
9898
<a class="nav-link" href="../controllers/esp32.html">ESP32</a>
9999
</li>
100100
<li class="nav-item" data-depth="1">
101-
<a class="nav-link" href="../controllers/smt32.html">SMT32</a>
101+
<a class="nav-link" href="../controllers/stm32.html">STM32</a>
102102
</li>
103103
<li class="nav-item" data-depth="1">
104104
<a class="nav-link" href="../controllers/raspberry.html">Raspberry Pi</a>
105105
</li>
106+
<li class="nav-item" data-depth="1">
107+
<a class="nav-link" href="../controllers/fpga.html">FPGA</a>
108+
</li>
106109
</ul>
107110
</li>
108111
<li class="nav-item" data-depth="0">
@@ -125,7 +128,10 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
125128
<a class="nav-link" href="../tools/home-assistant.html">Home Assistant</a>
126129
</li>
127130
<li class="nav-item" data-depth="1">
128-
<a class="nav-link" href="../tools/grafana.html">Grafana</a>
131+
<a class="nav-link" href="../tools/dashboards.html">Dashboards</a>
132+
</li>
133+
<li class="nav-item" data-depth="1">
134+
<a class="nav-link" href="../tools/cad.html">Herramientas de Computer Asisted Design (CAD)</a>
129135
</li>
130136
</ul>
131137
</li>

docs/atomvm/extensions.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,14 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
9696
<a class="nav-link" href="../controllers/esp32.html">ESP32</a>
9797
</li>
9898
<li class="nav-item" data-depth="1">
99-
<a class="nav-link" href="../controllers/smt32.html">SMT32</a>
99+
<a class="nav-link" href="../controllers/stm32.html">STM32</a>
100100
</li>
101101
<li class="nav-item" data-depth="1">
102102
<a class="nav-link" href="../controllers/raspberry.html">Raspberry Pi</a>
103103
</li>
104+
<li class="nav-item" data-depth="1">
105+
<a class="nav-link" href="../controllers/fpga.html">FPGA</a>
106+
</li>
104107
</ul>
105108
</li>
106109
<li class="nav-item" data-depth="0">
@@ -123,7 +126,10 @@ <h3 class="title"><a href="../index.html">Electrónica, Robótica e IOT con Elix
123126
<a class="nav-link" href="../tools/home-assistant.html">Home Assistant</a>
124127
</li>
125128
<li class="nav-item" data-depth="1">
126-
<a class="nav-link" href="../tools/grafana.html">Grafana</a>
129+
<a class="nav-link" href="../tools/dashboards.html">Dashboards</a>
130+
</li>
131+
<li class="nav-item" data-depth="1">
132+
<a class="nav-link" href="../tools/cad.html">Herramientas de Computer Asisted Design (CAD)</a>
127133
</li>
128134
</ul>
129135
</li>

0 commit comments

Comments
 (0)