Portfolio

Reflecteren: project 1

In de module project 1 was het de bedoeling om de leerstof van de andere modules bij elkaar te brengen in de vorm van een project.
Als project wilde ik een Smart Mirror maken. Dit idee kreeg ik door op Instructables te kijken naar wat voorgaande projecten van studenten van MCT waren. Ik zag enkele keren de Smart Mirror er tussen staan. Ik vond dit een interessant project en ik ging op zoek naar meer Smart Mirrors op Instructables. Ik vond het idee van een een spiegel en een scherm als één geheel heel mooi.

Met een Smart Mirror als idee ging ik dit voorstellen aan twee begeleiders die het idee moesten goedkeuren of afkeuren. Jammer genoeg werd mijn idee niet goedgekeurd. Ik wilde een gewoon computer scherm achter een doorzichtbare spiegel zetten (dit zag ik bij andere Smart Mirrors). Als ‘oplossing’ moest ik een LCD scherm gebruiken dat stuurbaar is met de Raspberry Pi. Ik moest een van de hoeken van de spiegel uitsnijden om daar het LCD schermpje te zetten. Om mijn idee goed te keuren moest ik deze aanpassingen doen en opnieuw op gesprek gaan. Bij het tweede gesprek werd het aangepaste idee goedgekeurd.
De week na de examens waren de project weken officieel begonnen. Ik wist al sinds voor die periode dat de drie weken dat we kregen veel te weinig ging zijn. Dit gevoel had ik elke dag tijdens de project weken. Ik had uiteindelijk net genoeg tijd om alles te doen werken, maar er kon nog veel code verbeterd worden.
Tijdens de eerste dagen was de opdracht om een Fritzing schema te maken. Ik deed mijn best om dit de eerste keer volledig juist te maken. Tijdens een consult om dit te laten controleren bleek dat enkele dingen anders moesten of niet juist waren. Ik maakte mijn schema na elk consult beter. Ik moest hiervoor zes consults doen om het schema juist te krijgen. Dit was het lastige deel van de schakeling in orde brengen. Dan moest ik gewoon alles aansluiten. Dat was gemakkelijker dan het Fritzing schema maken.
De volgende opdracht was een genormaliseerd database model maken. Mijn model was gelukkig bij het eerste consult meteen goedgekeurd. Dus ik begon dan met het maken van mijn database. Hier had ik nogal veel problemen mee. Na lang zoeken op Google en vragen aan andere studenten waren alle problemen opgelost en was de database klaar om te gebruiken. Rond deze periode was het eerste toermoment. Blijkbaar was ik achter op schema, maar het was nog geen ramp. Als ik een extra tandje bijstak zou het wel goed komen.
Nadat de database af was begon ik de backend te programmeren. Ik had ondertussen al eens op zoek gegaan naar libraries voor bepaalde elektronische componenten dat we nog niet tijdens de les gezien hadden. De code voor elke component werkte al, behalve die van mijn LED strip, dit wou ik als laatste houden omdat dit minder belangrijk was. Ik had wel al een library gevonden voor de LED strip, maar nog niet uitgetest. De code van mijn elektronica stond nog niet in de backend, maar in een apart programma werkte dit al.
Bij het programmeren van de backend moest ik af en toe eens kijken naar andere oefeningen, maar dit lukte. De backend was echter niet meteen volledig af, want wanneer ik met de frontend begon merkte ik dat sommige stukken code in de backend overbodig waren en dat ik nog moest werken aan de backend.
Tijdens toermoment 2 was het de bedoeling dat ik al op een fysieke knop kon drukken, dit werd dan in de database gezet en de status van de knop moest al op de frontend te zien zijn. Met wat hulp van een medestudent kon ik dit doen werken. Er was wel een klein probleem met Socket.IO (dit zorgt ervoor dat er realtime data kan op de frontend getoond worden). Dat was het probleem juist, de data werd pas na 30-60s getoond. Enkele dagen lang wist ik niet waarom dit zo was, ik zocht online naar antwoorden, maar ik vond geen oplossing. Ik keek eens of de Python packages van de Raspberry Pi up-to-date waren, bij velen was dit niet het geval. Dus ik updatete al de packages dat konden geüpdatete worden. De snelheid van Socket.IO was veel hoger nu. Dit betekende dat ik veel sneller kon code testen van de frontend en backend.
Bij het derde toermoment was het de bedoeling dat we al een gedesignde website hadden (HTML en CSS). Ik had al wireframes en designs, maar nog geen HTML en CSS. De designs moesten nog goedgekeurd worden. Hiervoor ging ik op consult. Er werden nog enkele dingen aangepast van mijn project zelf, maar de designs waren eigenlijk al in orde.
Ik begon dan te werken aan de HTML en CSS. Dit ging redelijk vlot, want ik kon vele stukken kopiëren van andere oefeningen. De titel balk bovenaan, de navigatie onderaan, een datetime picker en een color picker moest ik zelf opzoeken, na enkele voorbeelden van w3schools, Stackoverflow en andere websites uit te testen lukte dit.
Nadat ik de meeste dingen had doen werken, moest ik nog juist de LED strip aansluiten en implementeren in de code. Dit was niet zo moeilijk en ik kreeg dit aan de praat na enkele uren.
Nu moest ik ervoor zorgen dat de backend automatisch werd uitgevoerd bij het opstarten van de Raspberry Pi en ik moest de frontend op de Pi zetten en dit doen werken met Apache. Na wat opzoekwerk kon ik ervoor zorgen dat de backend automatisch uitgevoerd werd. Bij de frontend moest ik opzoeken hoe dat Apache werkte en vanaf dat dat werkte moest ik alle frontend bestanden op de Pi zetten.

Elke opdracht op zich was niet zo moeilijk, maar het samenbrengen is wel wat ingewikkelder. Er waren bepaalde delen dat ik in de oefeningen nog niet kon doen werken vb. Socket.IO, maar door wat te Googelen en hulp van medestudenten en leerkrachten kon ik alles doen werken.
Ik ben blij dat ik mijn project volledig heb kunnen in elkaar steken en dankzij dit project heb ik nog enkele dingen bijgeleerd.

Bij het volgende project dat ik maak zal ik moeten proberen om op schema te blijven. Ik zou beter meteen aan de opdracht beginnen en niet te lang bij een bepaalde opdracht blijven zodat ik de andere kan op tijd maken.

Instructables: https://www.instructables.com/id/Advanced-Alarms

Reflecteren: project 1

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Schuiven naar boven