====== Das intelligente Bücherregal - Projektplannung ====== \\ ===== Inhaltsverzeichnis ===== - [[projektplanung#Einleitung|Einleitung]] - [[projektplanung#Ziele und Prioritäten|Ziele und Prioritäten]] - [[projektplanung#Szenario-Skizze|Szenario-Skizze]] - [[projektplanung#Teilaufgaben und Arbeitspakete|Teilaufgaben und Arbeitspakete]] * [[projektplanung#Teilaufgaben und Schnittstellen|Teilaufgaben und Schnittstellen]] * [[projektplanung#Arbeitspakete|Arbeitspakete]] * [[projektplanung#Materialliste|Materialliste]] * [[projektplanung#Risiken|Risiken]] - [[projektplanung#Gantt-Diagramm|Gantt-Diagramm]] \\ ===== Einleitung ===== Mithilfe des intelligenten Bücherregals ist man in der Lage, ein bestimmtes Buch schnell und einfach in seinem Regal zu finden, indem eine LED an der Stelle des gewünschten Buches aufleuchtet und das Buch leicht herausgeschoben wird. Nie wieder im Leben muss man Bücher sortieren oder verzweifelt suchen. \\ ===== Ziele und Prioritäten ===== **Auf jeden Fall muss es können:** * LED-Strip an einer bestimmten Stelle des Buches aufleuchten lassen * Buch an einer bestimmten Stelle herausschieben * Mithilfe der Datenbank wissen, wo welches Buch steht **Am besten sollte es können:** * Benutzeroberfläche zur Suche und Erweiterung von Büchern **Was nett wäre (nice to have):** * Suche auch nach Autor, Buchreihe oder Genre * Verknüpfung der Datenbank mit einem Scanner, der die ISBN einscannt und die Daten des Buches automatisch in die Datenbank hinzufügt * LED-Strip auch als Raumbeleuchtung/Regalbeleuchtung nutzbar * Bücher sollten auch gelöscht werden können \\ ===== Szenario-Skizze ===== {{projektesose24:int_regal:szenario_skizze2.jpg?500}} \\ ===== Teilaufgaben und Arbeitspakete ===== ==== Teilaufgaben und Schnittstellen ==== ** 1. Datenbank der Bücher und ihrer Positionen ** \\ Es gibt eine Datenbank, erstellt mit SQL, die alle Bücher im Regal, anhand ihrer Position und ihres Titels verwaltet. Der Nutzer kann zu Beginn entscheiden, ob er ein neues Buch hinzufügen möchte, und damit einen neuen Eintrag in der Datenbank erstellt, oder ob er nach einem bestimmten Buch suchen möchte. Wenn man ein Buch suchen möchte, muss man den Titel eingeben, der in der Datenbank gesucht werden soll. Bei erfolgreicher Suche wird an das Programm dann die dazu gespeicherte Position zurückgegeben. ** 2. LED-Ansteuerung: Aufleuchten der jeweiligen LED an der Stelle des gesuchten Buches ** \\ Am Regalbrett, auf dem die Bücher stehen, ist vor den Büchern ein LED-Strip befestigt. Sucht der Nutzer ein bestimmtes Buch und die Suche in der Datenbank ist erfolgreich, kann die LED vor dem Buch angesteuert und zum Leuchten gebracht werden, so dass der Nutzer das Buch findet. (Dafür wird dementsprechend ein Individually-addressable-LED-Strip benötigt, damit alle LEDs einzeln ansteuerbar sind). ** 3. Herausschieben des gesuchten Buches ** \\ Der Roboter ist in der Lage, das gesuchte Buch ein wenig nach vorne zu schieben. Dafür gibt es hinter den Büchern eine Schiene, auf der sich ein Schlitten mithilfe eines Motors nach rechts und links bewegen kann. Auf diesem Schlitten gibt es zusätzlich eine “Scheerengitterkonstruktion” (siehe Zeichnung), die sich mit Hilfe einer Gewindestange nach vorne und hinten bewegen kann. Am Ende dieser Konstruktion gibt es eine Stange, die bspw. mit Schaumstoff gepolstert ist, sodass das gesuchte Buch nicht beschädigt wird. {{projektesose24:int_regal:scheerengitter.jpg?400}} ** 4. Main-Programm zur Verknüpfung aller Teilbereiche ** \\ Das Main-Programm (geschrieben in Python) verbindet die unterschiedlichen Teilbereiche miteinander. Es läuft auf einem Raspberry Pi 4. Es stellt als erstes eine Oberfläche zur Verfügung, über die der Nutzer entscheiden kann, ob er ein neues Buch hinzufügen will oder ob er ein schon existierendes Buch suchen will. Entscheidet der Nutzer sich für ein neues Buch, kann er den Titel, sowie die Position eingeben, was in der Datenbank gespeichert wird. Entscheidet der Nutzer sich dafür ein Buch zu suchen, kann der Titel eingegeben werden und die Datenbank gibt die dazugehörige Position an das Programm zurück. Anschließend sorgt das Programm dafür, dass die entsprechende LED aufleuchtet (Aufruf einer zugehörigen LED-Funktion) und, dass sich die Schiene an die richtige Position bewegt (Aufruf einer zugehörigen Motor-Funktion). Der LED-Strip, sowie die Motoren sind mit dem Raspberry Pi verbunden. \\ ==== Arbeitspakete ==== **exemplarsiches Bücherregal:** * exemplarische Bücherreihe bauen * Holzbrett besorgen (evtl. zuschneiden) * Vorrichtung zur Befestigung der Schiene * passende Bücher (Bücher sollten sehr ähnliche Breitenmaße haben für möglichst normierte Positionen) **Datenbank:** * Konzipierung (ER-Modell) * Erstellen der Datenbank mit SQL * Schnittstelle zum Main-Programm * Funktion zum Suchen eines Buches schreiben (Python) * Funktion zum Einfügen eines Buches schreiben (Python) **LED-Ansteuerung:** * LED-Strip kaufen * Schnittstelle zum Raspberry Pi: Kommunikation herstellen * LED-Strip an Regalbrett anbringen * Funktion zur Ansteuerung schreiben * Übergabe und Verarbeitung der Position **Schiebekonstruktion:** * Besorgungen der Einzelteile * Einzelteile zu einem System zusammenbauen * Scheerengitterkonstruktion bauen * Gewinde mit Scheerengitter verbinden * Gewinde über flexible Kupplung mit Motor verbinden * Motor (für Gewindestange) auf Schlitten befestigen * Schlitten an Schiene befestigen * Motor (für Schlitten) über Band mit Schlitten auf Schiene fahren lassen * System auf dem Bücherbrett befestigen * Schnittstelle: Motor-Funktion schreiben * Übergabe der Position * Fahren des Schlittens zur Position -> Verknüpfung Motor und Position (Welcher Wert bedeutet welche Position?) * Aus- und Einfahren der Scheerengitterkonstruktion **Main-Program:** * Verknüpfung der Schnittstellen * User-Interface zur Suche oder Eingabe eines Buches \\ ==== Materialliste ==== * Raspberry Pi 4 * Individually-addressable-LED-Strip (mit möglichst vielen LEDs pro Meter) * Jumper Kabel * Schiene * Schlitten * 2x limit switch * Motoren * Stepper-Motor für Scheerengitter * Stepper-Motor, mit Gewindestange kompatibel * Scheerengitterkonstruktion * Gewindestange * Scheerengitter * Verbindung Gewindestange und Scheerengitter * Verbindung Schlichten und Motor -> Band * Polsterung * Flexible Kuppplung (Verbindung Gewindestange und Motor) * Holzbrett * Verbindung Holzbrett und Schiene * expemlarische, normierte Bücher (aus Holz oder Pappe) \\ ==== Risiken ==== Es könnte schwierig für den Roboter werden, wenn die Bücher unterschiedlich breit sind, bzw. wenn es sehr dünne Bücher gibt. Wahrscheinlich werden wir am Anfang zum Entwickeln erst einmal mit normierten Holzblöcken o.Ä. (als Buchersatz) arbeiten. \\ ===== Gantt-Diagramm ===== {{projektesose24:int_regal:gantt-diagramm.png}}