RCJ 2026 - Mushrooms: Rozdiel medzi revíziami
Zo stránky Galéria Robotov
(fotky) |
|||
| (8 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
| Riadok 43: | Riadok 43: | ||
=== 3D modely, výkresy, náčrty konštrukcie a dielov === | === 3D modely, výkresy, náčrty konštrukcie a dielov === | ||
[[Image:Mushrooms_Model.png| | [[Image:Mushrooms_Model.png|400px]] | ||
[[Media: | *[[Media:Model_Robota_Mushrooms.zip]] | ||
=== Schémy, návrhy plošných spojov, elektronika === | === Schémy, návrhy plošných spojov, elektronika === | ||
[[Image:Mushrooms_schema.png]] | [[Image:Mushrooms_schema.png|400px]] | ||
* Schéma dolnej DPS [[Súbor:Dolna DPS schema.pdf|náhľad|alt=Schéma zapojenia dolnej DPS|Schéma zapojenia dolnej DPS]] | * Schéma dolnej DPS [[Súbor:Dolna DPS schema.pdf|náhľad|alt=Schéma zapojenia dolnej DPS|Schéma zapojenia dolnej DPS]] | ||
| Riadok 70: | Riadok 70: | ||
* Vývoj dosiek: Eagle, Kicad | * Vývoj dosiek: Eagle, Kicad | ||
* Kusok Kodu: | |||
[ | |||
[ | void fillZerosBetweenOnes(int arr[], int size, int maxGap, int &total) { | ||
[ | int temp[size]; | ||
[ | memcpy(temp, arr, size*sizeof(int)); | ||
[ | for(int i=0; i<size; i++){ | ||
[[ | if(temp[i]!=1) continue; | ||
for(int gap=1; gap<=maxGap; gap++){ | |||
int end=(i+gap+1)%size; | |||
bool allZero=true; | |||
for(int k=1; k<=gap; k++){ | |||
if(temp[(i+k)%size]!=0){ allZero=false; break; } | |||
} | |||
if(allZero&&temp[end]==1){ | |||
for(int k=1; k<=gap; k++){ | |||
int idx=(i+k)%size; | |||
if(arr[idx]==0){ arr[idx]=1; total++; } | |||
} | |||
} | |||
} | |||
} | |||
} | |||
=== | === Fotodokumentácia === | ||
[[Image:Mushrooms_Bots_Together_AW.jpg|400px]] | |||
[[Image:Mushrooms_Bots_Together_Glowing_WOAH.jpg|400px]] | |||
[[Image:Mushrooms_TopPCB_Bottom.jpg|400px]] | |||
[[Image:Mushrooms_BottomPCB_Top.jpg|400px]] | |||
[[Image:Mushrooms_BottomPCB_Bottom.jpg|400px]] | |||
[[Image:Mushrooms_WHAT_THE_HELLLL.jpg|400px]] | |||
[[Image:Mushrooms_HUUUUUUH.jpg|400px]] | |||
__notoc__ | __notoc__ | ||
Aktuálna revízia z 20:46, 20. apríl 2026
Mushrooms
Škola/klub: Stredná priemyselná škola elektrotechnická Prešov
Kontakt: oli.kosiba@gmail.com
Kategória: soccer lightweight / infrared
Predchádzajúca história modelu
Generácia robota je rovnaká akú sme využívali, len s par zmenami. Hlavne zmeny sú:
- Vyčistený kód
- Úplne nové 3D modely tela a vrchu
Konštrukcia a hardvér
Robot sa skladá z 3D vytlačeného tela a dvoch DPS. Na dolnej DPS sú osadené motory so štyrmi omniwheelami, hlavný mikrokontroler a line senzory. Na hornej DPS sú osadené IR senzory a ESP-32. Najvyššie sú osadené mmWave radary. Robot je okolo 12.5cm vysoký a 22cm široký.
Zoznam súčiastok
- H-mostík MC33886 4x
- Motor POLOLU 25D 4x
- DC-DC menič LM2596 1x
- LED červená 32x
- Logic shifter TXS0108BE 1x
- Lineárny regulátor LM7895 1x
- Lineárny regulátor AMS1117 2x
- Multiplexor CD74HC 3x
- Fototranzistor KDT00030 24x
- IR senzor TSOP 4830 11x
- IR senzor TSOP 4038 24x
- Mikrokontroler Teensy 4.1 1x
- Mikrokontroler ESP-32 1x
- Gyroskop BNO055 1x
- I²C switch TCA9548A 1x
- I/O expander MCP23017 2x
- mmWave radar XM125 6x
3D modely, výkresy, náčrty konštrukcie a dielov
Schémy, návrhy plošných spojov, elektronika
- Schéma dolnej DPS Súbor:Dolna DPS schema.pdf
- Schéma hornej DPS Súbor:Horna-DPS shcema.pdf
Popis zapojenia elektroniky
Robot je zapojený na 11.1V v 3S zapojení 3.7V Li-Ion bateriek, potom napätie je znížené pre dané senzory. Teensy 4.1, je náš hlavný procesor ktorý komunikuje spolu s ESP32 využitím I2C. Spolu tieto procesory zisťujú:
- pozíciu lopty: 35 IR senzorov (11 na dolnej doske, 24 na hornej),
- Detekcia čiary: 24 fototranzistorov,
- Zistenie pozicie: 6 mmWave senzorov a gyroskop BNO055.
- Tieto senzory sú spracované cez viacero multiplexorov.
- DC motory sú riadené cez H-Bridge obvody použitím PWM signálov a su priamo napojené na 11.1V
Softvér
- Programovanie: Arduino IDE;
- 3D modelovanie: Autodesk Inventor, Autodesk Fusion;
- Vývoj dosiek: Eagle, Kicad
- Kusok Kodu:
void fillZerosBetweenOnes(int arr[], int size, int maxGap, int &total) {
int temp[size];
memcpy(temp, arr, size*sizeof(int));
for(int i=0; i<size; i++){
if(temp[i]!=1) continue;
for(int gap=1; gap<=maxGap; gap++){
int end=(i+gap+1)%size;
bool allZero=true;
for(int k=1; k<=gap; k++){
if(temp[(i+k)%size]!=0){ allZero=false; break; }
}
if(allZero&&temp[end]==1){
for(int k=1; k<=gap; k++){
int idx=(i+k)%size;
if(arr[idx]==0){ arr[idx]=1; total++; }
}
}
}
}
}
Fotodokumentácia