# Result ![SLIDE](../presentation.png) ```{video} ../presentation.mp4 :width: 100% ``` ![IMAGE](../media/final_project/final_result1.jpg) ::::{grid} 3 :::{grid-item} :columns: 6 ![IMAGE](../media/final_project/final_result3.jpg) ::: :::{grid-item} :columns: 6 ![IMAGE](../media/final_project/final_result2.jpg) ::: :::{grid-item} ![IMAGE](../media/final_project/final_result4.jpg) ::: :::{grid-item} ![IMAGE](../media/final_project/final_result5.jpg) ::: :::{grid-item} ![IMAGE](../media/final_project/final_result6.jpg) ::: :::: ![IMAGE](../media/final_project/final_result7.jpg) ## Evaluation I would consider the first spiral as successful, I may need to increase the tolerance a bit more because, as you can see in the video some keys rub onto each other. \ Unfortunately I didn't manage to build more modules but I'm trying to build some more in the next weeks and try to communicate with those.\ Also I underestimated the needed work for my initial goal but I try to work on the project in the future and build a module for it implementing the initial functionality. ### Goals for the future - Multiple Keyboard Modules controlled via I2C - Different modules on the back of the keyboard with e.g. rotary encoder, slider, buttons etc. - Display (LED, LCD) on the back to show notes or other things/games - Add the old-school MIDI port to the keyboard Also currently there is always a XIAO needed or the modules, which is pretty inefficient material/recourse wise when you only want to use multiple modules as a keyboard. \ So for a future 2.0 version it whould be nice to add the connection interface independent to the XIAO so you only need one of them for the actual MIDI-part. ## BOM |Component | Product | Amount | Price | Vendor | |----------|---------|--------|-------|--------| | PCBs | XIAO ESP32 | 1 | 9€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/xiao_esp32s3_dual-core_wifi_bt5_0_ohne_header-358354)| | | ATtiny412 | 1 | 0.8€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/8-bit-attiny_avr-risc_mikrocontroller_4_kb_20_mhz_soic-8-367056) | | | ATtiny1624 | 1 | 1€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/8-bit-attiny_avr-risc_mikrocontroller_16_kb_20_mhz_soic-14-335590) | | | Condensator 100nF | 2 | 0.7€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/smd_folienkondensator_100_nf_16_v_125_c-200455) | | | Resistor 0 Ohm | 1 | 0.06€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/smd-widerstand_1206_0_0_ohm_250_mw_5_-18219) | | | Resistor 4 kOhm | 2 | 0.02€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/smd-widerstand_1206_4_3_kohm_250_mw_1_-212744)| | | PinHeader 3W | 2 | 0.6€/10 | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/10pol_smd-stiftleiste_gewinkelt_rm_2_54-51754) | | | PinHeader 5W | 2 | 0.6€/10 | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/10pol_smd-stiftleiste_gewinkelt_rm_2_54-51754) | | | PinSocket 3W | 4 | 0.14€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/buchsenleisten_2_54_mm_1x03_gerade-119912) | | | PinSocket 5W | 2 | 0.5€ | [Reichel](https://www.reichelt.de/de/de/shop/produkt/buchsenleisten_2_00_mm_1x05_gerade-119986) | | Housing | Magnets
6.36mm diameter
3mm height| 12 | 0.33€ | [DigiKey](https://www.digikey.de/en/products/detail/radial-magnets-inc/8193/555328)| | | Screws M3 12mm| 6 | 7.8€/100 | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/pan_head_schrauben_edelstahl_a2_pzd_m3_12mm_100_stueck-72629) | | | Screws M2.5 | 7 | 2.35€/20 | [Reichelt](https://www.reichelt.de/de/de/shop/suche/Schrauben?filter) | | | Screws M2 | 4 | 0.6€ | [DigiKey](https://www.digikey.de/en/products/detail/apm-hexseal/RM2X8MM-2701/612919) | | | Rubber bands | 12 | 1€ | Your local Supermarket | | | USB-C Cable | 1 | 3.6€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/scangrip_usb-ladekabel_usb-a_auf_usb-c-381057) | | Not Build Side Connectors | Connector FFC FPC 4W | 4 | 4.75€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/nullkraftstecker_4pol_rm1_0_mm_side_entry_bottom_contact-86701) | | | PinHeader 3W | 1 | 0.6€/10 | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/10pol_smd-stiftleiste_gewinkelt_rm_2_54-51754) | | | PinSocket 3W | 1 | 0.14€ | [Reichelt](https://www.reichelt.de/de/de/shop/produkt/buchsenleisten_2_54_mm_1x03_gerade-119912) | | | Screws M2.5 | 4 | 2.35€/20 | [Reichelt](https://www.reichelt.de/de/de/shop/suche/Schrauben?filter) | :::{note} BOM is for one key board module. ::: ## Licence Open Source MIDI Keyboard Copyright © 2025 Niclas Starost This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ### Git Repo: [OSMK](https://gitlab.fabcloud.org/niclas-starost/opensourcemidikeyboard) ## Design Files - [FreeCAD Models and Assembly](../_static/FinalProject/FreeCAD_Keyboard.zip) - [KiCAD PCB and Schematic](../_static/FinalProject/KiCAD_Keyboard.zip) - [PCB Images](../_static/FinalProject/PCB_Images.zip) - [ESP-IDF ESP32S3 Code for the MIDI implementation](../_static/FinalProject/esp32s3_code.zip)