

Tlapixki HelloWorld
Códigos utilizados para el proyecto de ingeniería
- Size
- 64.5 × 49.8 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 33
- Nets
- 63
- Pads
- 153
- Tracks, vias
- 266, 57
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 21 Aug 2021
- Updated
- 31 Mar 2023
Overview
Tlapixki HelloWorld is an open-source printed circuit board by Hugondon, from the Hugondon/Proyecto-Trayectorias repository on GitHub. It is a 2-layer board of 64.5 × 49.8 mm with 33 parts on 63 nets, routed with 266 tracks and 57 vias.
It is built around the ESP32-WROOM-32, CP2102N-A02-GQFN24 and AMS1117CD-3.3, with the BC817 among its other parts. Its parts include 9 resistors, 7 capacitors, 4 connectors, 3 ICs and 2 diodes. It belongs with the ESP32 boards of this library.
Main components
4ESP32-WROOM-32
SMD,18x25.5mm-40℃~+85℃ -98dBm 2.4GHz 2.7V~3.6V 20dBm Bluetooth4.2 ESP32-DOWDQ6 UART、SDIO、SPI、I2C、GPIO、PWM、ADC、DAC SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesCP2102N-A02-GQFN24
QFN-24-EP(4x4)-40℃~+85℃@(Ta) 1.3uA 13.7mA 3V~3.6V USB 2.0 USB to UART QFN-24-EP(4x4) USB Converters ROHSSilicon LabsUSB ConvertersAMS1117CD-3.3
TO-252-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive TO-252 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsBC817
SOT-231 NPN 100nA 150MHz 300mW 40 45V 500mA 5V 700mV NPN SOT-23 Bipolar (BJT) ROHSShikuesBipolar (BJT)
README
README.mdProyecto de Ingeniería
Generación y Monitoreo de Trayectorias 3D sobre superficies regulares para Cobots UR

Herramientas Utilizadas
MATLAB R2021b
Procesamiento de Imagenes
Este modulo fue hecho especificamente para demostraciones.
Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria\Image_processing: Path relativo al modulo para procesamiento de imagenes.
En la carpeta Imagenes guarda la imagen que quieras procesar.
Estas son las caracteristicas que mejoran el resultado del procesamiento de imagenes:
- Formato JPEG
- Imagenes caricaturescas
- Alto contraste entre fondo y objeto de interes
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria\Image_processing abre el script prueba_imagen.m es donde atraves de procesamiento de imagenes algoritmos de deteccion de bordes el objeto de una imagen se convierte en una trayectoria. Las variables que debes modificar de este script son las siguientes:
-
nameImage: nombre de la imagen en la carpetaImagenesla cual se quiere procesar. -
physicalSize_m: longitud del lado más largo del lienzo fisico del dibujo en metros. El programa en automatico expande o comprime la imagen, esto para que la longitud del lado más largo del dibujo digital coincida con la longitud del lado más largo del lienzo fisico. -
reductionConstant: numero de reducion de waypoints en la trayectoria. Que el robot no ejecute una trayectoria de más de 3000 waypoints, de preferencia mantente por debajo de 1,800 waypoints. Para reducir el numero de waypoints aumenta esta variable a tu discreción. La relación se expresa con la siguiente formula:
$length(outputTrajectory) = \lceil {\frac {length(originalTrajectory)} {reductionConstant}}\rceil$ -
numLowPointsThreshold: los objetos con menos de esta cantidad de waypoints son eliminados. Por lo general se usa para eliminar puntos muy pequeños de la imagen. -
numHighPointsThreshold: los objetos con más de esta cantidad de waypoints son eliminados. Por lo general se usa para eliminar el marco de la imagen. -
eliminatedObject: el ID de un objeto que se quiere eliminar en especifico.
El resultado es guardado en el archivo waypoints.mat.
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria abre el script imagePlacement.m para que puedas apreciar el tamaño del dibujo con respecto al robot. Debido a que las poses son relativas con el primer waypoint de la trayectoria no importa la posicion u orientacion. Las poses son guardadas en trajectoryPoses.mat para posteriormente ser simulados con el robot.
Procesamiento de Modelos CAD
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria\CAD_procesing abre el script cad_interactive_node_selector.m es un selector interactivo de los nodos del modelo CAD.
En la carpeta Parts guarda las piezas CAD en formato CSV.
En la linea gm=importGeometry(msd,'Part\botella.STL') esta el Path para exportar el modelo CAD.
En el apartado Generate Mesh:
edgeLenght.Hmax: maxima longitud de una arista de la malla.edgeLenght.Hmin: minima longitud de una arista de la malla.
ModificaedgeLenght.HmaxyedgeLenght.Hmina tu conveniencia, aristas muy pequeñas haran el programa muy lento, aristas muy grandes haran que se pierda resolución del modelo.
El modelo CAD y sus parametros es guardado enCADparameters.maty las poses en latrayectoria del modelo CAD junto con el modelo CAD son guardados enprocessedCAD.mat.
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria esta el script CADplacement.m sirve para vizualizar el robot, el modelo CAD y la trayectoria sobre la superficie del modelo CAD. Además puedes modificar la pose del modelo CAD.
En el apartado Modifing Processed CAD tienes las siguientes variables para modificar la pose del modelo CAD y la trayectoria en la superficie del modelo CAD:
displacementVector: representa la posicion del modelo CAD y la trayectoria.rotationVector: representa la orientacion del modelo CAD y la trayectoria.
Importante: la posicion y orientacion del modelo CAD y la trayectoria sobre su superficie estan ligadas modificardisplacementVectoryrotationVectorafectara a ambas.
El modelo CAD y la trayectoria en su superficie son guardados entransformedCAD.mat, para posteriormente ser simulados con el robot.
Simulacion del Robot
En el path Proyecto-Trayectorias\Software\MATLAB\Generacion_Trayectoria abre el script main.m Toma la trayectoria deseada, calcula la cinematica inversa, grafica la trayectoria y simula el robot. Ve a la subseccion Get Waypoints ahi podras definir de donde quieres que se obtenga la trayectoria. El numero en la variable typeTrajectory define cual trayectoria es utilizada.
| Número | Tipo de Trayectoria |
|---|---|
| 0 | Test Trajectory |
| 1 | CAD Trajectory |
| 2 | Image Trajectory |
La funcion simulateRobot unicamente simula el movimiento del robot. Si es comentada esa linea no afecta el resultado.
El tipo de movimiento, las poses y las configuraciones del robot en la trayectoria son guardadas en el CSV trajectory.csv .
Python
Parser
Este módulo se diseñó para llevar a cabo la conversión de la información contenida en el archivo trajectory.csv .
De forma general, el algoritmo para llevar a cabo esta tarea consiste en la iteración sobre las filas del archivo CSV para la extracción información de la pose y espacio de configuración y la generación del código .script a partir de esta.
Aprovechando que el lenguaje es orientado a objetos, se utilizó esto para encapsular información de los datos relevantes. La definición de estos se encuentra aquí.
La información contenida en cada una de las filas del CSV se almacena en forma de listas de objetos (una para el Tipo de Movimiento y otra para las Poses). Al terminar de extraer toda la información, comienza el proceso de generación del código .script que será enviado al Robot. Esto se hace a través de la concatenación de strings conteniendo la información. Para ver directamente el funcionamiento de esto, ver la función parse_csv de este archivo.
Para la generación del código .script es importante mencionar que este se dividirá en dos partes:
initialization. Se utiliza para la inicialización de configuraciones en general (por el momento utilizado solamente para un contador global para llevar a cabo la trayectoria por una o más veces).
main. Aquí se encuentra en primer lugar la inicialización para llevar a cabo los movimientos de forma relativa al lugar en el que se encuentra actualmente el TCP y para llevar a cabo la información de la trayectoria
Todo esto se lleva a cabo como un programa debajo de una GUI, la cual se ejecuta con el siguiente comando:
python .\Software\Python\app.py
Es importante mencionar que este puede variar de acuerdo al Path desde el cual se ejecuta la aplicación, esto es considerando que se encuentra en el folder de Proyecto-Trayectorias)
El uso general de la GUI consiste en dos pasos:
-
Seleccionar el archivo CSV con el que se desea generar el
.scripta través de la ventana que se abre cuando se presiona el botónLoad CSV File
-
Seleccionar el path en el cual se desea crear este archivo a través del uso del botón
Save to specific folder
Como comentario adicional, el botón de Save URScript File es útil para guardar directamente el archivo después de una modificación en el path (el nombre del archivo, por ejemplo) sin tener que seleccionar el folder de nuevo desde la ventana.
Finalmente, en el folder correspondiente a este módulo se encuentra un archivo CSV de ejemplo. Se puede practicar con este, el archivo resultante debe verse de la siguiente forma al abrirse con Excel:

Polyscope
Instalación Polyscope en Ubuntu
Seguir tutorial en este repositorio con las siguientes modificaciones:
- Instalar Java con este tutorial
- Hacer cambio de curl en archivo
install.sh:
commonDependencies='libcurl4 openjdk-8-jre libjava3d-* ttf-dejavu* fonts-ipafont fonts-baekmuk fonts-nanum fonts-arphic-uming fonts-arphic-ukai'
Ejemplo de install.sh en carpeta Polyscope.
Ejecutar programa en el Robot
TO-DO
ESP-IDF
Parts
33| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 0.1u | Capacitor_SMD:C_0603_1608Metric | C2, C5, C7 |
| 3 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R2, R6 |
| 3 | 4k7 | Resistor_SMD:R_0603_1608Metric | R3, R7, R8 |
| 2 | 220 | Resistor_SMD:R_0603_1608Metric | R4, R9 |
| 2 | 22u | Capacitor_SMD:C_0603_1608Metric | C1, C3 |
| 2 | BC817 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | Conn_01x04_Male | Connector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_Vertical | J3, J4 |
| 2 | RED | LED_SMD:LED_0603_1608Metric | D1, D2 |
| 1 | 10u | Capacitor_SMD:C_0603_1608Metric | C6 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C4 |
| 1 | 470 | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | AMS1117CD-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | CP2102N-A02-GQFN24 | Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm | U2 |
| 1 | Conn_01x06_Female | Connector_PinHeader_1.27mm:PinHeader_1x06_P1.27mm_Vertical | J2 |
| 1 | ESP32-WROOM-32 | RF_Module:ESP32-WROOM-32 | U3 |
| 1 | LOGO | LOGO | G*** |
| 1 | SW_SPST | Button_Switch_SMD:SW_SPST_B3S-1000 | S1 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Amphenol_10118194_Horizontal | J1 |
Similar boards
- 4 layers60 × 80 mm

- 4 layers68 × 60 mm

RoboCore
Plastal-Bot-Builders/RoboCoreDocumentation
RoboCore is a classroom robot kit and coding platform, designed and built in Zambia by Plastal-Bot Builders (Lusaka).
104 partsMIT - 2 layers63.9 × 41.7 mm

ESP32-aqs
JokerIsMyBae/AirQualityHoboken
Applied IoT project voor luchtkwaliteitsmetingen in Hobokense Polder
51 parts - 2 layers59.3 × 38.1 mm

- 2 layers85.7 × 78.8 mm

ESP32-Home Automation PCB
brandmaharaj12-cmyk/ESP32-Home-Automation-PCB
ESP32 based 30A Home Automation PCB designed using KiCad.
33 parts - 2 layers101.5 × 74 mm

- 2 layers78 × 92 mm

ESPCARproject
Sumya99/RobotCarPCB
NAND сургалтын төвийн сурагчдад зориулсан робот машины PCB төсөл
92 parts - 2 layers150 × 150 mm

Questions
How big is the Tlapixki HelloWorld PCB?
It measures 64.5 × 49.8 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Tlapixki HelloWorld use?
33 parts, built around the ESP32-WROOM-32, CP2102N-A02-GQFN24, AMS1117CD-3.3 and BC817. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Tlapixki HelloWorld KiCad files?
From the Hugondon/Proyecto-Trayectorias repository on GitHub, at the commit this page was made from: the board is Hardware/KiCad/Tlapixki-HelloWorld/Tlapixki-HelloWorld.kicad_pcb and its schematic Hardware/KiCad/Tlapixki-HelloWorld/Tlapixki-HelloWorld.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Tlapixki HelloWorld design in my own project?
Its repository states no licence, so its author keeps all rights: ask Hugondon before reusing the design.