Project:Arduino
Arduino: achtergronden
Cross-development
Je ontwikkelt de software voor een Arduino niet op de Arduino zelf, maar op een andere computer (cross compilation, cross development). Dit maakt direct duidelijk dat het programma volledig autonoom uitgevoerd wordt: er is geen "lifeline" naar de gebruiker of zijn omgeving.
Een nadeel van deze manier van werken is dat je geen directe feedback krijgt, zoals bijvoorbeeld bij het programmeren in Python of Scratch.
Directe besturing van de Arduino: Firmata
Je kunt in het begin ook gebruik maken van een programma dat de inputs en outputs van de Arduino bestuurt vanuit een PC, zoals de Firmata bibliotheek.
- http://www.firmata.org/wiki/Main_Page
- voeg (indien nodig) Firmata-bibliotheek toe aan Arduino IDE:
- via Schets->Blibliotheek gebuiken->Bibliotheek beheren (zoeken op Firmata)
- source code: https://github.com/firmata/arduino
- downloaden van Firmata toepassing (sketch) op Arduino: Voorbeelden->Firmata->StandardFirmata
- Firmata test programma voor Windows, OS X, Linux:
Deze opzet met de StandardFirmata-sketch op de Arduino en het Firmata test-programma op de host is ook goed te gebruiken voor het testen van de hardware. (Dit werkt niet voor onderdelen met een complex interface.)
Physical computing
- Arduino is een voorbeeld van physical computing: computers in interactie met hun fysieke omgeving. Computers worden in embedded systems (tv's, auto's, vliegtuigen, printers, koelkasten, wasmachines e.d.) gebruikt voor het aansturen van de machinerie, en voor het interface daarvan met de buitenwereld, in het bijzonder met de gebruiker. In het internet of things worden "dingen" die vaak gewoonlijk geen besturing of elektriciteit gebruiken (stoelen, deuren, dijken, bomen) door middel van computers met sensoren verbonden in het internet. Dit geeft een enorme uitbreiding in het het aantal mogelijkheden van interactie, en in de aard van deze interactie.
- Het aantal soorten "physical computing systemen" dat je met de Arduino-programmeeromgeving (IDE) neemt sterk toe. Dit is al lang niet meer beperkt tot de traditionele Arduino-varianten (met de "Uno" als belangrijkste vorm).
- Physical Computing spreekt een deel van de leerlingen aan, omdat het betekenis heeft in de fysieke wereld, en niet alleen in de virtuele wereld. Deze resultaten zijn zichtbaar en tastbaar. Bovendien is de relevantie voor het dagelijks leven vaak goed te begrijpen.
Laagdrempelig
- Je kunt al snel met succes de eerste experimenten met een Arduino uitvoeren,
- De hardware is erg betaalbaar; dit geldt nog sterker als je de Chinese varianten gebruikt;
- mede door het gebruik van sensoren in smartphones worden deze sensoren erg betaalbaar.
Arduino (of ruimer: physical computing) is een voorbeeld van "lage drempel, hoog plafond": je kunt op elk niveau interessante uitdagingen vinden, er is geen harde bovengrens aan de mogelijkheden.
Een Arduino is geen lesmateriaal, in de traditionele zin: Arduino's worden vooral buiten het onderwijs gebruikt, bijvoorbeeld voor het maken van prototypes (ontwerpers, tentoonstellingen, e.d.) Dit kan een extra motivatie voor leerlingen betekenen: je hebt er buiten school ook iets aan.
Leerlingen kunnen al in een vroeg stadium hun eigen toepassingen met Arduino maken.
Alternatieven voor Arduino
micro:bit
- Naast de Arduino zijn ook andere combinaties van hardware en software geschikt voor een kennismaking met "physical computing". Een voorbeeld hiervan is de BBC micro:bit die aan alle leerlingen in de UK cadeau gedaan is.
- zie: https://www.microbit.org
- Voor de micro:bit zijn meerdere programmeeromgevingen geschikbaar:
- Microsoft Block editor (blokjes met drag & drop)
- Microsoft Touch develop editor (tekst-gebaseerd)
- JavaScript (van blokjes naar tekst-gebaseerd)
- Python (tekst-gebaseerd) - online
- Python - offline editor
De meeste van deze omgevingen kun je via de browser gebruiken (online). Een voordeel is dat je dan niets hoeft te installeren. Een nadeel kan zijn dat je altijd een internet-verbinding moet hebben.
Voor Python is er naast de online-versie ook een editor beschikbaar die lokaal werkt (offline). Deze moet je op je eigen computer (als "host") installeren.
Raspberry Pi
- Een ander voorbeeld is de Raspberry Pi. Dit is een krachtige computer met ongeveer het formaat van de credit card (of eigenlijk een stapel credit cards). Naast mogelijkheden voor het verwerken van beeld en geluid heeft deze ook "general purpose I/O" (GPIO) pinnen waarop je bijvoorbeeld sensoren en relais kunt aansluiten.
- Een Raspberry Pi gebruikt een krachtig Operating System zoals Raspbian, een versie van Linux (Debian).
- Er is veel software voor-geïnstalleerd,
- Voor de Raspberry Pi
- Je kunt een Raspberry Pi goed gebruiken voor het ontwikkelen van Arduino-software: je kunt
Wat kies je, en wanneer?
Al deze mogelijkheden maken het niet eenvoudig om te bepalen wat je op een bepaald moment moet gebruiken. Enkele richtlijnen voor deze keuze:
- voor een eerste kennismaking met programmeren en met physical computing is de microbit erg geschikt.
- je kunt laagdrempelig beginnen, met een blokjes-taal
- je kunt de overstap maken naar een tekst-taal zoals Python.
- voor een uitgebreidere kennismaking met physical computing is de Arduino geschikt
- de standaard-taal voor de Arduino is (een variant van) C++.
- de Arduino is erg robuust, en bovendien relatief goedkoop.
- je programmeert de Arduino direct: de hardware wordt niet afgeschermd door een Operating System.
- de Raspberry Pi is een krachtige computer: je kunt dan een eigen computer hebben waarop je alles mag aanpassen en installeren.
- de Raspberry Pi is voor physical computing toepassingen kwetsbaarder en duurder dan een Arduino
- je kunt een goed idee krijgen van een Operating System (Linux) en van het beheer van een computer.
Voor het vak Informatica:
- micro:bit bij de introductie in computers en programmeren, en als Internet-of-Things device.
- Arduino voor physical computing, en als Internet of Things-device
- Raspberry Pi als server - o.a. voor websites en Internet-of-Things toepassingen
Gebruik in het onderwijs
Je kunt Arduino's (en de andere vormen van Physical Computing) gebruiken als een rijke context voor een kennismaking met allerlei concepten:
- voor het vak informatica:
- programmeren
- hardware, hardware/software interfacing
- computerarchitectuur
- voor het vak natuurkunde:
- meten (en besturen)
- experimenteren
- wiskunde:
- verband tussen wiskunde, informatica, en natuurkunde
- rekenen aan schakelingen (wet van Ohm, wetten van Kirchhoff).
Daarnaast kun je de Arduino gebruiken als gereedschap bij allerlei experimenten, zowel binnen de natuurwetenschappen als bij creatieve vakken.
Arduino-projecten zijn bij uitstek geschikt om kennis van verschillende vakken te integreren: wiskunde, natuurkunde, informatica, enz.
Doelen
Uiteindelijk:
- leerlingen kunnen zelfstandig, constructief en creatief met Arduino's aan de slag.
- gebruik van referentiemateriaal (niet alleen tutorials)
- ontwerpen van eigen hardware en software
- leerlingen gebruiken en integreren kennis van wiskunde en natuurkunde in hun Arduino-kennis en vaardigheden
- leerlingen gebruiken Arduino's om informatica te begrijpen; en omgekeerd
- leerlingen kunnen Arduino-systemen als bouwdooos begrijpen en gebruiken
- leerlingen kennen een aantal bouwstenen
- en weten hoe ze deze kunnen gebruiken en samenstellen tot een compleet systeem
- leerlingen kunnen een schema lezen en omzetten in een schakeling op het breadboard
Manier van werken
- kleine stappen
- bij voorkeur: 1 nieuw concept per stap
- lage drempel, hoog plafond: op elk niveau succes mogelijk
- zo mogelijk: testen van elke stap
- testen van hardware-schakeling
- herhaling van concepten, in verschillende vormen
- herkennen van concepten, basisschakelingen/constructies
- software/programmeren: in het begin zo eenvoudig mogelijk
- geschikt voor gebruik van mBlock
- de hardware kan dan iets lastiger worden (bijv. pulldown-weerstanden, 2 schakelaars i.p.v. 1)
- 1e stap: zorgvuldig nabouwen van een bestaand ontwerp (hardware en software)
- vragen aan de hand van ontwerp
- daarna: veel experimenteren; veel kleine experimenten
- experimenteren om begrip te vergroten
- ontwerpen van experimenten vanuit begrip
- bouwstenen: leren, benoemen, toepassen in verschillende contexten.
Materiaal
- achtergrondmateriaal, gemeenschappelijk materiaal: op de wiki (centraal)
- mogelijk op meerdere niveaus
- iedereen kan dit materiaal verbeteren (vgl. Wikipedia)
- lesbrieven: op GitHub (voorlopig op deze wiki).
- iedereen kan eigen versie maken
- zonder verbeteringen in het origineel te verliezen