# EMS1 - Embedded Systems 1 Dit repository is bedoeld voor studenten en docenten van de opleiding Elektrotechniek van de Hogeschool Rotterdam en wordt gebruikt om het studiemateriaal voor de cursus "EMS1 - Embedded Systems 1" te verspreiden. De informatie in dit repository is zoals alle mensenwerk niet foutloos, verbeteringen en suggesties zijn altijd welkom! Maak als je ons feedback wilt geven een [issue](https://github.com/HR-ELEKTRO/ems1/issues) aan. **Let op! Documenten kunnen lopende de cursus nog aangepast worden.** ## Cursushandleiding - [Cursushandleiding\_EMS10.pdf](Cursushandleiding/Cursushandleiding_EMS10.pdf) om dubbelzijdig af te drukken. - [Cursushandleiding\_EMS10\_ebook.pdf](Cursushandleiding/Cursushandleiding_EMS10_ebook.pdf) om online te bekijken. ## Voor je begint: pas je browserinstellingen aan! In de pdf-bestanden die je op deze wiki vindt, wordt veel gebruik gemaakt van links naar specifieke locaties in andere pdf-bestanden. Om dit te laten werken is het nodig om je browserinstellingen aan te passen. - Microsoft Edge: Installeer deze extensie: [https://microsoftedge.microsoft.com/addons/detail/pdf-reader/nhppiemcomgngbgdeffdgkhnkjlgpcdi](https://microsoftedge.microsoft.com/addons/detail/pdf-reader/nhppiemcomgngbgdeffdgkhnkjlgpcdi). - Google Chrome: Installeer deze extensie: [https://chrome.google.com/webstore/detail/pdf-reader/ieepebpjnkhaiioojkepfniodjmjjihl](https://chrome.google.com/webstore/detail/pdf-reader/ieepebpjnkhaiioojkepfniodjmjjihl). - Firefox: Type `about:config` in de adresbalk, zoek naar `browser.download.open_pdf_attachments_inline` en zet deze optie op `true`. ## Week 1 tot en met 3: pc programmeren in Python ### Boeken en online informatiebronnen: - Allen B. Downey. *Think Python: How to Think Like a Computer Scientist.* 2de ed. Green Tea Press, 2016. ISBN: 978-1-4919-3936-9. URL: [http://greenteapress.com/thinkpython2/thinkpython2.pdf](http://greenteapress.com/thinkpython2/thinkpython2.pdf). Dit boek is gratis beschikbaar als ebook en verkrijgbaar als betaalde hardcopy. - Pieter Spronck. De Programmeursleerling – Leren coderen met Python 3. 2016. URL: [http://www.spronck.net/pythonbook/dutchindex.xhtml](http://www.spronck.net/pythonbook/dutchindex.xhtml). Dit gratis, Nederlandse boek kun je gebruiken als naslagwerk. - Gedetailleerde informatie over Python kun je vinden op [https://docs.python.org/3/](https://docs.python.org/3/). ### Leerdoelen Een overzicht van alle leerdoelen van week 1 tot en met 3 kun je hier vinden: [Opdrachten_Leerdoelen_Python.pdf](Opdrachten/Opdrachten_Leerdoelen_Python.pdf) ### Presentaties en opdrachten: | Week | Les | Presentatie | Opdrachten | [Anki](https://apps.ankiweb.net/) Flashcards | Onderwerp | | ---- | --- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 1 | 1 | [Pres Week 1 Les 1](Presentaties/EMS10_week1_les1.pptx) | [Opdr Week 1 Les 1](Opdrachten/Opdrachten_Week_1_Les_1.pdf) | [Flash Week 1 Les 1](Flashcards/EMS10 Week 1 Les 1.apkg) | Introductie Python. | | | 2 | [Pres Week 1 Les 2](Presentaties/EMS10_week1_les2.pptx) | [Opdr Week 1 Les 2](Opdrachten/Opdrachten_Week_1_Les_2.pdf) | [Flash Week 1 Les 2](Flashcards/EMS10 Week 1 Les 2.apkg) | Functies in Python. | | | 3 | [Pres Week 1 Les 3](Presentaties/EMS10_week1_les3.pptx) | [Opdr Week 1 Les 3](Opdrachten/Opdrachten_Week_1_Les_3.pdf) | | Tekenen met een schildpad. | | 2 | 1 | [Pres Week 2 Les 1](Presentaties/EMS10_week2_les1.pptx) | [Opdr Week 2 Les 1](Opdrachten/Opdrachten_Week_2_Les_1.pdf) | [Flash Week 2 Les 1](Flashcards/EMS10 Week 2 Les 1.apkg) | Beslissen en recursie. | | | 2 | [Pres Week 2 Les 2](Presentaties/EMS10_week2_les2.pptx) | [Opdr Week 2 Les 2](Opdrachten/Opdrachten_Week_2_Les_2.pdf) | [Flash Week 2 Les 2](Flashcards/EMS10 Week 2 Les 2.apkg) | Functies met een returnwaarde en herhalen. | | | 3 | [Pres Week 2 Les 3](Presentaties/EMS10_week2_les3.pptx) | [Opdr Week 2 Les 3](Opdrachten/Opdrachten_Week_2_Les_3.pdf) | | Live programmeren. [Week 2 Les 3 Opdracht](Opdrachten/Opdrachten_Week_2_Les_3_Opdracht.pdf): Opdracht live programmeren. | | 3 | 1 | [Pres Week 3 Les 1](Presentaties/EMS10_week3_les1.pptx) | [Opdr Week 3 Les 1](Opdrachten/Opdrachten_Week_3_Les_1.pdf) | [Flash Week 3 Les 1](Flashcards/EMS10 Week 3 Les 1.apkg) | Lijsten in Python. | | | 2 | [Pres Week 3 Les 2](Presentaties/EMS10_week3_les2.pptx) | [Opdr Week 3 Les 2](Opdrachten/Opdrachten_Week_3_Les_2.pdf) | | Proeftoets en code review. | | | 3 | [Pres Week 3 Les 3](Presentaties/EMS10_week3_les3.pptx) | [Opdr Week 3 Les 3](Opdrachten/Opdrachten_Week_3_Les_3.pdf) | | Plotten van data. | ### Extra informatie en studiemateriaal: - De pc's in de computerlokalen zijn ook als extra monitor te gebruiken. Neem je eigen HDMI-kabel mee of leen er een in de ELE-labs. - [Waarom je ChatGPT of andere AI programming tools niet moet gebruiken als je wilt leren programmeren](ChatGPT.md). - [Voorbeelden van functies waarmee de som van een rekenkundige of meetkundige rij berekend kan worden](sommen_van_rijen.md). - [Voorbeelden van functies waarmee de som of het product van een rij opeenvolgende getallen berekend kan worden](sommen_en_producten.md). - [Stap-voor-stap uitwerking van een eenvoudige Python opdracht](tafels_stap_voor_stap.md). - [Nog een stap-voor-stap uitwerking van een eenvoudige Python opdracht](cos_stap_voor_stap.md). - [Voorbeeld van flowcharts](flow_charts.md). - [Een stapje verder: Sudoku puzzels oplossen](sudoku.md). ### Antwoorden op 'veel' gestelde vragen: - [Hoe voorkom ik dat mijn programma rare dingen doet als in plaats van een getal een letter wordt ingetypt?](input.md) - [0.1 + 0.2 = 0.30000000000000004?](floats.md) ## Week 4 tot en met 8: MSP430 programmeren in C ### Benodigde software: Om de MSP430 te kunnen programmeren maken we gebruik van Code Composer Studio **versie 12.4**, zie deze [installatiehandleiding](installatie_software.md). ### Boeken en online informatiebronnen: - Handboek [*Microcontroller Programmeren in C*](Handboek/EMS10_handboek_ebook.pdf) om online te lezen. - Handboek [*Microcontroller Programmeren in C*](Handboek/EMS10_handboek.pdf) om dubbelzijdig af te drukken. - Carl Burch. *C for Python programmers*. 2011. URL: [http://www.cburch.com/books/cpy/](http://www.cburch.com/books/cpy/). De pdf-versie vind je hier: [C_for_Python_Programmers.pdf](C_for_Python_Programmers.pdf) - [MSP430G2x53 and MSP430G2x13 Datasheet](http://www.ti.com/lit/ds/symlink/msp430g2553.pdf) - [MSP430x2xx Family User's Guide](http://www.ti.com/lit/ug/slau144k/slau144k.pdf) - [EXP430G2ET LaunchPad User's Guide](https://www.ti.com/lit/pdf/slau772) - Meer informatie over C kun je vinden in het volgende dictaat: [De programmeertaal C – een overzicht](https://github.com/HR-ELEKTRO/cprog/wiki). - Een gedetailleerde (Engelstalige) FAQ over de programmeertaal C is beschikbaar op: [http://c-faq.com/](http://c-faq.com/). - Veel gedetailleerde informatie over C kun je ook vinden op: [http://en.cppreference.com/w/c](http://en.cppreference.com/w/c). ### Leerdoelen Een overzicht van alle leerdoelen van week 4 tot en met 8 kun je hier vinden: [Opdrachten_Leerdoelen_C.pdf](Opdrachten/Opdrachten_Leerdoelen_C.pdf) ### Presentaties en opdrachten: | Week | Les | Presentatie | Opdrachten | [Anki](https://apps.ankiweb.net/) Flashcards | Onderwerp | | ---- | --- | --------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | | 4 | 1 | [Pres Week 4 Les 1](Presentaties/EMS10_week4_les1_DT1.pptx) | | | Eerste deeltoets. | | | 2 | [Pres Week 4 Les 2](Presentaties/EMS10_week4_les2.pptx) | [Opdr Week 4 Les 2](Opdrachten/Opdrachten_Week_4_Les_2.pdf) | [Flash Week 4 Les 2](Flashcards/EMS10 Week 4 Les 2.apkg) | Opzetten microcontroller. | | | 3 | [Pres Week 4 Les 3](Presentaties/EMS10_week4_les3.pptx) | [Opdr Week 4 Les 3](Opdrachten/Opdrachten_Week_4_Les_3.pdf) | [Flash Week 4 Les 3](Flashcards/EMS10 Week 4 Les 3.apkg) | Leds en knoppen. | | 5 | 1 | [Pres Week 5 Les 1](Presentaties/EMS10_week5_les1.pptx) | [Opdr Week 5 Les 1](Opdrachten/Opdrachten_Week_5_Les_1.pdf) | [Flash Week 5 Les 1](Flashcards/EMS10 Week 5 Les 1.apkg) | Functies en interne klok. | | | | [Pres Week 4 Herhaling](Presentaties/EMS10_bitbewerkingen.pptx) | | | Bitbewerkingen. | | | 2 | [Pres Week 5 Les 2](Presentaties/EMS10_week5_les2.pptx) | [Opdr Week 5 Les 2](Opdrachten/Opdrachten_Week_5_Les_2.pdf) | | Versiebeheer, libraries en toestandsmachines. | | | 3 | [Pres Week 5 Les 3](Presentaties/EMS10_week5_les3.pptx) | [Opdr Week 5 Les 3](Opdrachten/Opdrachten_Week_5_Les_3.pdf) | | Codeslot. | | 6 | 1 | [Pres Week 6 Les 1](Presentaties/EMS10_week6_les1.pptx) | [Opdr Week 6 Les 1](Opdrachten/Opdrachten_Week_6_Les_1.pdf) | | Interrupts. | | | 2 | [Pres Week 6 Les 2](Presentaties/EMS10_week6_les2.pptx) | [Opdr Week 6 Les 2](Opdrachten/Opdrachten_Week_6_Les_2.pdf) | | Timers. | | | 3 | [Pres Week 6 Les 3](Presentaties/EMS10_week6_les3.pptx) | [Opdr Week 6 Les 3](Opdrachten/Opdrachten_Week_6_Les_3.pdf) | | PWM (Pulse Width Modulation). | | 7 | 1 | [Pres Week 7 Les 1](Presentaties/EMS10_week7_les1.pptx) | [Opdr Week 7 Les 1](Opdrachten/Opdrachten_Week_7_Les_1.pdf) | | ADC (Analoog Digitaal Converter). | | | 2 | [Pres Week 7 Les 2](Presentaties/EMS10_week7_les2.pptx) | [Opdr Week 7 Les 2](Opdrachten/Opdrachten_Week_7_Les_2.pdf) | [Flash Week 7 Les 2](Flashcards/EMS10 Week 7 Les 2.apkg) | Arrays in C. | | | 3 | [Pres Week 7 Les 3](Presentaties/EMS10_week7_les3.pptx) | [Opdr Week 7 Les 3](Opdrachten/Opdrachten_Week_7_Les_3.pdf) | | Oleddisplay. | | 8 | 1 | [Pres Week 8 Les 1](Presentaties/EMS10_week8_les1.pptx) | [Opdr Week 8 Les 1](Opdrachten/Opdrachten_Week_8_Les_1.pdf) | | UART (Universal Asynchronous Receiver-Transmitter). | | | 2 | [Pres Week 8 Les 2](Presentaties/EMS10_week8_les2.pptx) | [Opdr Week 8 Les 2](Opdrachten/Opdrachten_Week_8_Les_2.pdf) | | Voorbeelden van theorievragen. De antwoorden kun je [hier](Opdrachten/Opdrachten_Week_8_Les_2_antwoorden.pdf) vinden. | | | 3 | [Pres Week 8 Les 3](Presentaties/EMS10_week8_les3.pptx) | [Opdr Week 8 Les 3](Opdrachten/Opdrachten_Week_8_Les_3.pdf) | | Integratie. | ### Video's | Link | Tijd | Beschrijving | | ---------------------------------------------------------------------------------------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Code Composer Studio](https://mediasite.hro.nl/mediasite/Play/7098f4dc24d64093844588145c4ac31d1d) | 06:11 | Legt uit hoe je CCS kunt gebruiken, layout, views, debuggen etc. | | [Opbouw van een microcontroller programma](https://mediasite.hro.nl/mediasite/Play/1d7c0d15de26493d858093da445a1c431d) | 04:51 | Standaard opbouw microcontrollerprogramma wordt besproken. Waar zet je welke code neer? | | [Uitleg GPIO pinnen](https://mediasite.hro.nl/mediasite/Play/0df925c46ba742818560d996732e72511d) | 09:54 | Input, output, pull-up, pull-down wordt hier uitgelegd. | | [Output pin deel 1](https://mediasite.hro.nl/mediasite/Play/30919daa5a934381bffd200965bffed01d) | 05:09 | In deel 1 van deze presentatie wordt uitgelegd hoe je een pin van de MSP430 als digitale output kan configureren. | | [Output pin deel 2](https://mediasite.hro.nl/mediasite/Play/815c638e982d4f38ac61e34391eb22e11d) | 01:44 | In deel 2 van deze presentatie wordt uitgelegd hoe je een output pin hoog kan maken. | | [Output pin deel 3](https://mediasite.hro.nl/mediasite/Play/9b21b2004e7947c3bd695bb362a33d2f1d) | 02:54 | In deel 3 van deze presentatie wordt uitgelegd hoe je een output pin laag kan maken. | | [Output pin deel 4](https://mediasite.hro.nl/mediasite/Play/08dfba9bf29f43528e17ab615b65a11b1d) | 02:45 | In deel 4 van deze presentatie wordt uitgelegd hoe je een output pin kan inverteren. | | [Input pin deel 1](https://mediasite.hro.nl/mediasite/Play/8c829da293594a2bab7f42ac391984721d) | 03:04 | In deel 1 van deze presentatie wordt uitgelegd hoe je een pin van de MSP430 als digitale input kan configureren. | | [Input pin deel 2](https://mediasite.hro.nl/mediasite/Play/e52a53cf0b5d4768be3fe3e08cd0a53e1d) | 03:54 | In deel 2 van deze presentatie wordt uitgelegd hoe je kan bepalen of een digitale input pin hoog of laag is. | | [Pull-up of pull-down weerstand](https://mediasite.hro.nl/mediasite/Play/1b9dcff4f3304e95ac0de26fc519572b1d) | 05:14 | Wanneer heb je een pull-up of pull-down weerstand nodig en hoe configureer je, in C-code, een input pin met een interne pull-up of pull-down weerstand? | | [Gebruik van alle bronnen](https://mediasite.hro.nl/mediasite/Play/e290b8e2acb1424dbd16ed3a274593f31d) | 12:29 | Met de diversiteit aan bronnen, waar vind je welke informatie? *N.B. bladwijzers in browsers werken vandaag de dag prima. Geen noodzaak meer voor een aparte PDF reader zoals in de video wordt verteld.* | | [Narcistische getallen in Python en C](https://mediasite.hro.nl/mediasite/Play/9218a2b7f9c34250a962df6eba4030f81d) | 32:00 | Handig om kennis te maken met C variabelen en functies. | | [Introductie versiebeheer](https://mediasite.hro.nl/mediasite/Play/9dd9ebaffa26406f9fb8d5ac352c700c1d) | 02:43 | Waarom passen we versiebeheer toe bij het ontwikkelen van software? | | [Uitleg Timer module](https://mediasite.hro.nl/mediasite/Play/c6341a0b1e3c46c7a69be4ab9293a91e1d) | 12:14 | Werking counter, compare module, PWM-signalen en registers. | ### Extra studiemateriaal: - [Tutorial voor het gebruik van git in Code Composer Studio](https://software-dl.ti.com/ccs/esd/documents/sdto_ccs_git-with-ccs.html). - [Verschillende uitwerkingen van de toestandsmachine uit opdracht 5.2.3](toestandsmachine_voorbeeld.md). - [MSP430 Microcontrollers - Portfolio Overview](https://training.ti.com/msp430-microcontrollers-portfolio-overview). - [Selectiehulp MSP430 Microcontrollers](https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/msp430-micrcontrollers/products.html). - [YouTube playlist met diverse video's over het programmeren van de MSP430 met behulp van Code Composer Studio](https://www.youtube.com/playlist?list=PLbFgDf51ZkCGCGxMXQiIQWJUbOoYj9Y5X). ## Toetsen - 2017 - 2018: - [2017_2018_deeltoets_1](2017_2018_deeltoets_1.md). - [2017_2018_deeltoets_2](2017_2018_deeltoets_2.md). - 2018 - 2019: - [2018_2019_deeltoets_1](2018_2019_deeltoets_1.md). - [2018_2019_deeltoets_2](2018_2019_deeltoets_2.md). - 2019 - 2020: - [2019_2020_deeltoets_1](2019_2020_deeltoets_1.md). - [2019_2020_deeltoets_2](2019_2020_deeltoets_2.md). - 2020 - 2021: - [2020_2021_deeltoets_1](2020_2021_deeltoets_1.md). - [2020_2021_deeltoets_2](2020_2021_deeltoets_2.md). - 2021 - 2022: - [2021_2022_deeltoets_1](2021_2022_deeltoets_1.md). - [2021_2022_deeltoets_2](2021_2022_deeltoets_2.md). - 2022 - 2023: - [2022_2023_deeltoets_1](2022_2023_deeltoets_1.md). - [2022_2023_deeltoets_2](2022_2023_deeltoets_2.md). - 2023 - 2024: - [2023_2024_deeltoets_1](2023_2024_deeltoets_1.md). - [2023_2024_deeltoets_2](2023_2024_deeltoets_2.md). - 2024 - 2025: - [2024_2025_deeltoets_1](2024_2025_deeltoets_1.md). - [2024_2025_deeltoets_2](2024_2025_deeltoets_2.md).