
CoRoSoN Package Draft
ItzJannis/CoRoSoN-Package_Draft
Draft version to the official CoRoSoN-Kit.

Draft version to the official CoRoSoN-Kit.
IR Ring is an open-source printed circuit board by ItzJannis, from the ItzJannis/CoRoSoN-Package_Draft repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 47 × 20.6 mm with 29 parts on 54 nets, routed with 181 tracks and 24 vias.
It is built around the ESP32-WROOM-32 and TSSP6038TR. Its parts include 3 resistors, 2 ICs, 1 capacitor and 1 crystal. It belongs with the ESP32 boards of this library.
Co|mponents for
Ro|bocupJunior
So|ccer
N|ewcomers
Project: CoRoSoN-Kit
Competition: RoboCup
Author: BohleBots
This project offers a draft version to the official CoRoSoN-Kit to provide the fundamental building blocks for a fully functional robot participating in the Soccer Junior division of the RoboCup.
The purpose is to allow for an newcomer friendly entry to the competition by wrapping the essential functions with easy to use APIs. Board designs are designed to be rebuild easily and affordable.
Feel free to reach out to us for questions, feedback, suggestions or constructive critism!
See you in the competition!
The software and the hardware designs are developed to the best of our knowledge to serve the intented purpose, but may still contain faults. Our software and hardware are provided "as is" and do not provide any warranty. The risk of using it and all neccessary servicing, repair and correction as well as their cost is with you.
Using the Arduino IDE or arduino-cli requires all source for a .ino sketch to be inside the sketch folder or inside the libaries directory of the Arduino installation.
Therefore source files inside Software/Shared or Software/Peripheral, that are not located directly next to a .ino sketch, cause problems.
To allow for easy compatibility of this project with Arduino the Makefile was created.
It automates the generation of valid Arduino sketch folders, such that they can be opened in the Arduino IDE or used with arduino-cli.
The Makefile does not require all source files to be inside the sketch folder, but it requires SketchName.ino to be located inside Software/SketchName/.
Run make inside the home directory of this repo to see all the options.
Software that is not build for a specific board but is shared across different board's software.
Providing usefull utility definitions for error handling, initializing data and better debugging.
The enum ERROR_CODE provides bitflags for uniform error handling while DEBUG_PRINT(Variable), DEBUG_ERRORS(Errors) and DEBUG_BLOCK(Message, NumMillis) provide easier debugging via the serial connection and the MIN(X,Y), MAX(X,Y), ABS(X), ARRAY_LENGTH(Arr), ZEROMEM(Obj) provide function-like macros to handle data without tedious reimplementation of often used functionalities.
Providing a simpler, more beginner friendly interface to work with the I2C bus system used in this project.
I2C_Init(), I2C_TestConnection(), I2C_Write() and I2C_ReadBlocking() provide all the functionality a newcomer robot for the competition needs.
Attention:
I2C_ReadBlocking() waits for the answers and is therefore blocking the execution of the program.
Make sure that NumBytes equals the length of the passed byte array!
Providing class Vector to easily compute vectorial calculations with functions and operator overloading.
This file defines the hardware configuration (namely the pins) for the software.
Software that is supposed to be used on the mainboard.
The definitions of enum COLOR, enum SIDE, enum I2C_ADD_BTNLED_MODULE, enum MOTOR and enum DIRECTION are used to firstly make software better readable for newcomers and secondly somehow restrict inputs to reduce buggy behavior due to occasionally wrong inputs.
CoRoSoN_Init(), CoRoSoN_SetLEDColor(), CoRoSoN_ButtonIsPressed() and CoRoSoN_SetMotor() provide a beginner friendly API to setting the mainboard up in the setup() of an arduino program as well as reading and writing the mainboards pins.
Software that is supposed to be used on the mainboard to make use of the peripheral devices.
Providing an interface to the ESP32's eeprom which is easy to use.
The eeprom is very usefull to save backup data about the current program state (i.e. the robot is enabled to drive) in case of a shutdown or a reset for whatever reason.
The struct EEPROM_DATA can be filled with whatever you want to read / write from the eeprom.
EEPROM_Init(), EEPROM_Read() and EEPROM_Write() provide an easy interface that only deals with instances of EEPROM_DATA.
Providing class Pixy with its Update(), GoalSeen(), OwnGoalSeen(), GoalDirection() and OwnGoalDirection() to make use of the Pixy camera for locating the two goals on the playing field.
In CoRoSoN_Pixy.h set PIXY_VERSION to 1 or 2 according to the version of the Pixy cam in use.
For the directions: <0 represents left, >0 represents right
Providing class IRRing with its Update(), BallSeen(), BallDirection() and BallDistance() to make use of the infrared sensor ring with the firmware running on it (also provided).
For the directions: <0 represents left, >0 represents right, 0 represents front, -32 represents no ball seen
For the distance: 1...32 represents closest...furthest, 0 represents no ball seen
Software that is supposed to be used on the infrared sensor ring.
Providing the firmware that is designed to be loaded onto the infrared sensor ring and making it ready to be used in a plug-and-play manner. \
EMA_ALPHA_PERCENTAGE, the more the values are smoothedBLUR_ORIGINAL_VALUE_WEIGHT_PERCENTAGE defines the weight the middle sensor getsVECTOR_ADDITION_SENSOR_COUNT defines the number of vectors involvedRUNNING_MEDIAN_DIRECTION_LENGTH and RUNNING_MEDIAN_DISTANCE_LENGTH define the history length for the running mediansContains the KiCad project of the Main PCB.
Contains the KiCad project of the IR-Ring PCB.
Contains all the 3D printable designs as .stl files.
Spherical third ground contact point to prevent the robot from falling over due to having only 2 wheels.
The base part of the chassis fitting together with the top plate.
The main plate enclosing the chassis, also including part of the machanism to hold the battery pack.
Holds the dribbling unit (motor and rotating silicone shell).
The end cap to close the enclosure of the dribbling unit.
Add-On to the top plate to mount the dribbling unit and support the IR-Ring up on top.
Shorter version of Dribbler_Mounting.stl in terms of height.
Rotating shell of the dribbling unit, supposed to be covered with silicone.
Covers the IR-Ring PCB to reduce external ambient noise for the sensors.
Counterpart for the IR-Ring cover such that it is properly fixated.
Mounting frame for the Main PCB.
Mounting for the 2 motors that move the robot.
Mounting frame for pixy camera.
Coupling adapter to connect the rotating shell to the motor axis.
Coupling adapter to connect the wheels to the motor axis.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | TSSP6038TR | BohleBots:SENSOR-SMD_TSSP6038TR | IR0, IR1, IR2, IR3, IR4, IR5, IR6, IR7, IR8, IR9, IR10, IR11, IR12, IR13, IR14, IR15 |
| 4 | MountingHole | BohleBots:MountingHole_4.3mm_M4 | H1, H2, H3, H4 |
| 3 | SMD-10k | BohleBots:R0603 | R1, R2, R3 |
| 1 | ESP32-WROOM-32 | BohleBots:ESP32-WROOM-32-small | U1 |
| 1 | LOGO | BohleBots:logo_klein | G*** |
| 1 | MICROMATCH-6 | BohleBots:MICROMATCH-6 | X1 |
| 1 | Pfostenstecker_6_2x3 | BohleBots:HDR-TH_6P-P2.54-V-F-R2-C3-S2.54-4 | U2 |
| 1 | SMD-1uF | BohleBots:C0603 | C2 |
| 1 | ~ | BohleBots:TASTER_LED | Taster_LED1 |

ItzJannis/CoRoSoN-Package_Draft
Draft version to the official CoRoSoN-Kit.

ppetr/hw-opto-counter
Universal infrared proximity sensor/counter of events

asterics/esp32_mouse_keyboard
ESP32 implementation for HID over GATT Keyboard and Mouse (Bluetooth Low Energy). Including serial API for external modules (similar to Adafruit EZKey HID)


Bellafaire/ESP32-Smart-Watch
An open source smartwatch based on the ESP32 compatible with the Arduino IDE.




likeablob/slow-movie-player-7c
Yet another "Slow Movie Player" implementation with 7-color E-Paper module and ESP32.
It measures 47 × 20.6 mm and has 2 copper layers, 1.6 mm thick.
29 parts, built around the ESP32-WROOM-32 and TSSP6038TR. 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.
From the ItzJannis/CoRoSoN-Package_Draft repository on GitHub, at the commit this page was made from: the board is Hardware/IR-Ring/IR-Ring.kicad_pcb and its schematic Hardware/IR-Ring/IR-Ring.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).