Apparaten laten praten Keuzecollege Robots in een rampgebied, 8 februari #MaakbareWereld
1. Probleem: Ik heb een Arduino* *Of een RaspberryPi, maar dat paste niet meer in de kop... Uitgangspunten: Sensors en actuators kunnen ‘praten’ Sensors en actuators kunnen ‘praten’ Alles is een sensor – of een actuator Alles is een sensor – of een actuator Laten we iets leuks maken... Laten we iets leuks maken...
2. Arduino vs. RasberryPi RasberryPi Werkt met Linux Werkt met Linux Programmeren in Python Programmeren in Python Géén ADC Géén ADC Internet / WiFi eenvoudig Internet / WiFi eenvoudig Minder accesoires Minder accesoiresArduino Geen besturingssysteem Geen besturingssysteem Programmeren in C Programmeren in C Eenvoudige ADC Eenvoudige ADC Internetfuncties lastig Internetfuncties lastig Veel accessoires Veel accessoires
3. Hoe ‘praat’ een Arduino? Invoer en uitvoer: Drukknop, led(aan/uit) Drukknop, led(aan/uit) Draaiknop, elektromotor(0-100 procent) Draaiknop, elektromotor(0-100 procent) Data (usb, gps, lcd, sd)(cijfers en letters) Data (usb, gps, lcd, sd)(cijfers en letters)
$GPRMC, ,A, ,N, ,E,1.36,283.64,101014,,,A*6A $GPVTG,283.64,T,,,1.36,N,2.52,K,A*7A $GPGGA, , ,N, ,E,1,08,01.2,-4.8,M,41.2,M,,*43 $GPRMC, ,A, ,N, ,E,1.46,142.70,101014,,,A*6A $GPVTG,142.70,T,,,1.46,N,2.70,K,A*76 $GPGGA, , ,N, ,E,1,08,01.2,-5.0,M,41.2,M,,*44 $GPGSA,A,3,01,04,11,14,18,19,22,27,,,,,2.3,1.2,2.0*36 $GPGSV,3,1,10,1,32,270,24,4,29,269,24,11,52,277,30,14,27,106,39*76 $GPGSV,3,2,10,18,13,051,33,19,71,168,38,22,48,067,40,27,40,149,42*7E $GPGSV,3,3,10,28,23,318,,32,34,202,38,,,,,,,,*74 $GPRMC, ,A, ,N, ,E,1.48,135.21,101014,,,A*6E $GPVTG,135.21,T,,,1.48,N,2.75,K,A*79 $GPGGA, , ,N, ,E,1,08,01.2,-5.2,M,41.2,M,,*47 $GPRMC, ,A, ,N, ,E,1.35,109.57,101014,,,A*6B $GPVTG,109.57,T,,,1.35,N,2.49,K,A*72 $GPGGA, , ,N, ,E,1,08,01.2,-5.2,M,41.2,M,,*4F $GPRMC, ,A, ,N, ,E,1.47,63.31,101014,,,A*5B
$GPRMC, ,A, ,N, ,E,1.36,283.64,101014,,,A*6A $GPVTG,283.64,T,,,1.36,N,2.52,K,A*7A $GPGGA, , ,N, ,E,1,08,01.2,-4.8,M,41.2,M,,*43 $GPRMC, ,A, ,N, ,E,1.46,142.70,101014,,,A*6A $GPVTG,142.70,T,,,1.46,N,2.70,K,A*76 $GPGGA, , ,N, ,E,1,08,01.2,-5.0,M,41.2,M,,*44 $GPGSA,A,3,01,04,11,14,18,19,22,27,,,,,2.3,1.2,2.0*36 $GPGSV,3,1,10,1,32,270,24,4,29,269,24,11,52,277,30,14,27,106,39*76 $GPGSV,3,2,10,18,13,051,33,19,71,168,38,22,48,067,40,27,40,149,42*7E $GPGSV,3,3,10,28,23,318,,32,34,202,38,,,,,,,,*74 $GPRMC, ,A, ,N, ,E,1.48,135.21,101014,,,A*6E $GPVTG,135.21,T,,,1.48,N,2.75,K,A*79 $GPGGA, , ,N, ,E,1,08,01.2,-5.2,M,41.2,M,,*47 $GPRMC, ,A, ,N, ,E,1.35,109.57,101014,,,A*6B $GPVTG,109.57,T,,,1.35,N,2.49,K,A*72 $GPGGA, , ,N, ,E,1,08,01.2,-5.2,M,41.2,M,,*4F $GPRMC, ,A, ,N, ,E,1.47,63.31,101014,,,A*5B
$GPRMC, ,A, ,N, ,E,1.36,283.64,101014,,,A*6A $GPRMC, ,A, ,N, ,E,1.46,142.70,101014,,,A*6A $GPRMC, ,A, ,N, ,E,1.48,135.21,101014,,,A*6E $GPRMC, ,A, ,N, ,E,1.35,109.57,101014,,,A*6B $GPRMC, ,A, ,N, ,E,1.47,063.31,101014,,,A*5B
4. Sensors en actuators Sensors IR afstandmeter IR afstandmeter Ultrasoon afstandmeter Ultrasoon afstandmeter Drukknop Drukknop Draaiknop (potmeter) Draaiknop (potmeter) Actuators Leds Leds Zoemer Zoemer Elektromotor / Servomotor Elektromotor / Servomotor LCD scherm LCD scherm
5. Uitvoer (‘Doe iets...’) Voorbeeld knipperled: #define ledPin 13 void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); { digitalWrite(ledPin, HIGH); delay(1000); delay(1000); digitalWrite(ledPin, LOW); digitalWrite(ledPin, LOW); delay(1000); delay(1000); }
6. Invoer (‘Kijk of luister...’) Voorbeeld drukknop:... void loop() { buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { { digitalWrite(ledPin, HIGH); } else... De led ontbreekt hier, maar dat is het hele punt...
7. Hoe ‘praat’ een Arduino? (II)* * Of een RasberryPi met een ADC, dus... Invoer en uitvoer: Drukknop, led(aan/uit) Drukknop, led(aan/uit) Draaiknop, elektromotor(0-100 procent) Draaiknop, elektromotor(0-100 procent) Data (usb, gps, lcd, sd)(cijfers en letters) Data (usb, gps, lcd, sd)(cijfers en letters)
8. Hoe ‘praat’ een RaspberryPi? * *Voordelen van Pi boven een Arduino... Invoer en uitvoer naar het web: Internetdiensten hebben vaak een API Internetdiensten hebben vaak een API Uitvoer is leesbaar voor machines (JSON, XML) Uitvoer is leesbaar voor machines (JSON, XML) Voor veel functies bestaan libraries Voor veel functies bestaan libraries Twitter, Weather Underground, NS open data, etc... Twitter, Weather Underground, NS open data, etc...
9. Huis-, tuin- en keukensensors... Alles dat 1) Naar de omgeving kijkt 2) Een elektrisch signaal produceert Licht geeft Licht geeft Geluid maakt Geluid maakt Een motortje heeft Een motortje heeft Een chip of transistor heeft Een chip of transistor heeft
10. Dus... Rookmelder Rookmelder Metaaldetector Metaaldetector Tomtom Tomtom Telefoon Telefoon Fietscomputer Fietscomputer
11....en actuators Deurbel Deurbel Zwaailicht Zwaailicht Frituurpan Frituurpan Computer (via USB) Computer (via USB) (Laat je Arduino twitteren als het theewater kookt...)
12. Alles kan praten... (maar hoe pak je dat aan?) Via de led Via de led Via de aan-/uitschakelaar Via de aan-/uitschakelaar Via de luidspreker Via de luidspreker Via de chip of transistor Via de chip of transistor (Bijna alle elektronicaonderdelen hebben een data sheet...)
13. Alles kan praten... (Kijk maar...) Rookmelder Volgens datasheet geeft pin 7 een signaal Volgens datasheet geeft pin 7 een signaal Soldeer een draadje aan pin 7 Soldeer een draadje aan pin 7 Vervang de drukknop door een transistor Vervang de drukknop door een transistor Nu weet je Arduino of er brand is Nu weet je Arduino of er brand is
14. Alles kan praten (III)...
15. Meer, meer, meer... Tutorials en referentiemateriaal arduino.cc arduino.cc raspberrypi.org/resources/make/ raspberrypi.org/resources/make/ instructables.com instructables.com Volkskrant Sir Edmund Maakbare Wereld Volkskrant Sir Edmund Maakbare Wereld ernstarbouw.nl/downloads ernstarbouw.nl/downloads