Gebruikershulpmiddelen

Site-hulpmiddelen


fabskills:programma:08_embeddedsoftware

08 - Embedded Software

Introductie

We zijn intussen al microcontrollers zoals Arduino en Pico tegengekomen. Hiervoor hebben we ook een aantal simpele programma's gemaakt, typisch om waardes van sensoren te kunnen bekijken of actuatoren te laten werken. Deze maand kijken we naar verschillende programmeertalen en programmeeromgevingen om programma's voor microcontrollers te maken. Ook kijken we nog wat gedetailleerder naar de verschillende manieren hoe systemen (elektronisch) met elkaar communiceren. Een superbelangrijk onderdeel bij het programmeren van elektronica is checken of alles werkt - daarvoor is communicatie essentieel.

Opdrachten

De software die je op je computer gebruikt om programma's voor een arduino of pico te maken noem je de 'toolchain'. Deze bestaat meestal uit een editor (waarin je code schrijft), compiler (vertaler van je code) en programmer (een manier om je vertaalde code in je microcontroller te krijgen). Een 'hello world' programma wordt vaak gebruikt door programmeurs om te laten zien (of te testen) dat de toolchain werkt.

  • opdracht 1 installeer een toolchain voor Arduino en/of Pico en doe een 'hello world'. Normaal betekent dit dat je ofwel “hello world” naar een seriele terminal laat printen, of een LED laat knipperen
  • opdracht 2 Check een aantal alternatieven: Denk bijvoorbeeld aan
    • Arduino IDE (arduino, pico)
    • WinAVR / AVRGCC (barebones AVR)
    • AVR Studio ( voor AVR controllers die op je Arduino gebruikt worden).
    • VScode met PlatformIO (voor Pico en Arduino)
    • Thonny (python / micropython voor Pico)
    • Scratch / Blockly (blok gebaseerd programmeeromgeving)
  • opdracht 3 werk een basisprogramma uit voor je (eind)opdracht in een omgeving naar keuze. Probeer sensor waarden in te lezen, servo's aan te sturen, zoek libraries, probeer voorbeelden uit. Probeer niet alles tegelijk, maar stuk voor stuk. Wanneer 'losse' deelcodes werken, probeer ze te integreren
  • opdracht 4 kijk bij je basisprogramma vooral goed naar communicatieprotocollen. Gebruik je
    • Seriele communicatie (b.v. terug naar de computer voor debuggen, of waardes weergeven)
    • I2C communicatie tussen bepaalde sensoren of met meerdere microcontrollers
    • SPI communicatie, met bijvoorbeeld een SD kaart
    • I2S communicatie voor synthese van geluid
    • Ethernet / WIFI: als client maar ook als Hotspot
    • bluetooth (makkelijkste met losse modules)
    • speciale standaarden zoals DMX of MIDI (zodat je met andere apparauur kan werken
  • opdracht 5 Denk ook aan geluid! het is makkelijk om een buzzer toe te voegen (met de functie'tone()') maar ook geavanceerde geluiden (bekijk de bibliotheek 'mozzi') zijn mogelijk met je Arduino
  • opdracht 6 Documenteer je code! lees en leer hoe je commentaar in je code schrijft, check ASCII graphics, ascii graphic editors (bestaan die?) kun je ook je schema en aansluitingen tekenen? Check ook automatische documentatiesystemen zoals DoxyGen
  • opdracht 7 Sla je code op op Github. Maak een repository (check command line instructies voor git of doe dit online) Zorg dat je computer de goede credentials (key) heeft om je git te kunnen synchroniseren.
  • opdracht 8 Maak een start met documentatie van je repository (een README.md) met eventuele afbeeldingen
  • opdracht 9 (extra) Wanneer je zelf nieuwe functies maakt in je code - kan het de moeite waard zijn om je code te verwerken tot een bibliotheek (library) die (ook door anderen) makkelijk te gebruiken is. Dit is ook bij uitstek iets waarbij chatGPT je op weg kan helpen

Opdrachten

Bronnen

Fabacademy 2025 - Embedded Programming

Group assignment:
  • Browse through the datasheet for your microcontroller
  • Compare the performance and development workflows for other architectures
  • Document your work to the group work page and reflect on your individual page what you learned
Individual assignment:
  • Write a program for a microcontroller development board to interact (with local input &/or output devices) and communicate (with remote wired or wireless devices)
Learning outcomes
  • Implement programming protocols.
Have you answered these questions?
  • Linked to the group assignment page
  • Programmed your board to interact and communicate
  • Described the programming process(es) you used
  • Included your source code
  • Included ‘hero shot(s)’

Fabacademy 2025: Embedded Networking and Communications

Group assignment:
  • Send a message between two projects
  • Document your work to the group work page and reflect on your individual page what you learned
Individual assignment:
  • design, build and connect wired or wireless node(s) with network or bus addresses and a local interface
Learning outcomes
  • Demonstrate workflows used in network design
  • Implement and interpret networking protocols and/or communication protocols
Have you answered these questions?
  • Linked to the group assignment page
  • Documented your project and what you have learned from implementing networking and/or communication protocols.
  • Explained the programming process(es) you used.
  • Outlined problems and how you fixed them.
  • Included design files (or linked to where they are located if you are using a board you have designed and fabricated earlier) and original source code.
  • Included a ‘hero shot’ of your network and/or communications setup
fabskills/programma/08_embeddedsoftware.txt · Laatst gewijzigd: door edwin