Control de Servomotor con Ruby (TKinter) y ESP8266 (MicroPython)
En este tutorial, aprenderemos a controlar un servomotor utilizando Ruby con la librería TKinter y un ESP8266 con MicroPython. El servomotor es un dispositivo que se utiliza para controlar la posición de un eje de rotación de forma precisa.
Para este proyecto, necesitaremos los siguientes materiales:
- Un servomotor
- Un Arduino Uno
- Un ESP8266
- Jumper cables
- Una placa de pruebas
- Ruby instalado en tu computadora
- MicroPython instalado en tu ESP8266
Paso 1: Conectar el servomotor al Arduino Uno
Primero, conectaremos el servomotor al Arduino Uno. Conecta el cable rojo del servomotor al pin de alimentación de 5V del Arduino Uno, el cable marrón al pin GND y el cable amarillo al pin digital 9.
Paso 2: Instalar TKinter en Ruby
Para poder controlar el servomotor desde Ruby, necesitaremos instalar la librería TKinter. Puedes instalar TKinter utilizando el siguiente comando en la terminal:
gem install tk
Paso 3: Crear la interfaz gráfica en Ruby
Ahora, crearemos una interfaz gráfica en Ruby con TKinter para controlar el servomotor. Aquí tienes un ejemplo de código que puedes utilizar:
require 'tk'
root = TkRoot.new { title "Control de Servomotor" }
servo_angle = TkVariable.new
TkScale.new(root) {
from 0
to 180
variable servo_angle
command { |angle| puts "Moviendo servomotor a #{angle} grados"}
}.pack
Tk.mainloop
Este código creará una interfaz gráfica con un control deslizante que te permitirá seleccionar el ángulo al que deseas girar el servomotor.
Paso 4: Enviar comandos al ESP8266 desde Ruby
Una vez que hayas creado la interfaz gráfica, necesitarás enviar comandos al ESP8266 para que mueva el servomotor. Puedes hacer esto enviando una petición HTTP al ESP8266. Aquí tienes un ejemplo de cómo puedes hacerlo:
require 'net/http'
uri = URI('http://192.168.1.100/set_servo_angle')
params = { angle: servo_angle }
response = Net::HTTP.post_form(uri, params)
puts response.body
En ese ejemplo, enviamos una petición HTTP al ESP8266 con la dirección de IP del ESP8266 y el ángulo seleccionado en la interfaz gráfica.
Paso 5: Configurar el ESP8266 con MicroPython
Por último, necesitarás configurar el ESP8266 con MicroPython para que pueda recibir las peticiones HTTP y controlar el servomotor. Aquí tienes un ejemplo de cómo puedes hacerlo:
import machine
from machine import Pin, PWM
import network
import ure
import utime
servo = PWM(Pin(15), freq=50, duty=77)
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('SSID', 'contraseña')
regex = ure.compile("angle=(d+)")
_index = 0
def set_servo_angle(angle):
servo.duty(angle)
def web_page():
return "HTTP/1.1 200 OKnnServo Angle: %dn" % servo.duty()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
conn, addr = s.accept()
request = conn.recv(1024)
angle_match = regex.search(request)
if angle_match:
set_servo_angle(int(angle_match[1]))
conn.send(web_page())
conn.close()
Este código configurará el ESP8266 para que escuche las peticiones HTTP y mueva el servomotor al ángulo seleccionado.
¡Y eso es todo! Ahora deberías poder controlar un servomotor utilizando Ruby con TKinter y un ESP8266 con MicroPython. ¡Espero que este tutorial te haya sido útil!