{"id":39444,"date":"2017-11-20T12:24:01","date_gmt":"2017-11-20T11:24:01","guid":{"rendered":"https:\/\/magazinnew.reichelt.de\/magazin\/geen-onderdeel-van-een-categorie\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/"},"modified":"2023-04-17T13:23:56","modified_gmt":"2023-04-17T11:23:56","slug":"vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno","status":"publish","type":"post","link":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/","title":{"rendered":"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno"},"content":{"rendered":"<h2>Inleiding<\/h2>\n<p>In de laatste \u2018Hoe doe je dat?\u2019 over de <a href=\"https:\/\/www.reichelt.com\/magazin\/nl\/2017\/11\/22\/de-temperatuur-en-luchtvochtigheid-meten-met-de-arduino-uno\/\">Arduino<\/a> hebben we een module gebouwd voor het weergeven van de temperatuur en luchtvochtigheid. Deze wordt nu uitgebreid om gegevens op te kunnen slaan op een SD-kaart. Bovendien wordt voor elke meting het desbetreffende tijdstip geregistreerd. Nu worden daar een shield voor een SD-kaart en een realtimeklok aan toegevoegd. Het display kan op het Grove-shield blijven zitten. Als de gegevenslogger zonder display gebruikt gaat worden, kan deze eenvoudig worden verwijderd.<\/p>\n<h2>Het SD-shield<\/h2>\n<p><strong>Omschrijving en inbouwen<\/strong><\/p>\n<p>De gegevens van de gegevenslogger worden opgeslagen op een SD-, SDHC- of MicroSD-kaart (in het laatste geval met een adapter). Hiervoor is een shield beschikbaar dat tussen de Arduino en het base-shield kan worden geplaatst; het base-shield wordt in verband met de stekker aan de bovenkant bevestigd.<\/p>\n<p>De bibliotheken, die nodig zijn voor het SD-shield, zijn al aanwezig in Arduino Studio en hoeven dus niet afzonderlijk ge\u00efnstalleerd te worden. Meer informatie is te vinden in de Arduino-documentatie:<\/p>\n<p><a href=\"https:\/\/www.arduino.cc\/en\/Reference\/SD\">https:\/\/www.arduino.cc\/en\/Reference\/SD<\/a><\/p>\n<p>Gegevens schrijven: Hallo wereld<\/p>\n<p>De eerste gegevens worden met het volgende programma naar de kaart geschreven:<\/p>\n<p>#include &lt;SPI.h&gt;<\/p>\n<p>#include &lt;SD.h&gt;<\/p>\n<p>int SELECTED_CHIP = 4;<\/p>\n<p>int count = 0;<\/p>\n<p>void setup() {<\/p>\n<p>Serial.begin(9600);<\/p>\n<p>if (SD.begin(SELECTED_CHIP)) {<\/p>\n<p>Serial.println(&#8220;SD-kaart ge\u00efnitialiseerd.&#8221;);<\/p>\n<p>} else {<\/p>\n<p>Serial.println(&#8220;SD-kaart kan niet worden geladen of ontbreekt&#8221;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>void loop() {<\/p>\n<p>String line = String(&#8220;Hallo wereld #&#8221;) + String(count);<\/p>\n<p>writeToSD(line);<\/p>\n<p>count = count + 1;<\/p>\n<p>delay(1000);<\/p>\n<p>}<\/p>\n<p>void writeToSD(String line) {<\/p>\n<p>File dataFile = SD.open(&#8220;test.csv&#8221;, FILE_WRITE);<\/p>\n<p>if (dataFile) {<\/p>\n<p>dataFile.println(line); \/\/ Naar de SD-kaart schrijven<\/p>\n<p>dataFile.close(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Bestand sluiten<\/p>\n<p>Serial.println(line);<\/p>\n<p>} else {<\/p>\n<p>Serial.println(&#8220;Fout bij openen van gegevensbestand&#8221;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Vervolgens worden er twee variabelen gedefinieerd: Met SELECTED_CHIP wordt aangegeven welke hardware wordt gebruikt bij het SD-shield. De waarde wordt opgegeven door de fabrikant van het SD-shield. De variabele count dient er alleen toe om de lopende schrijfprocessen mee te tellen en het cijfer ook naar de kaart te schrijven.<\/p>\n<p>In setup() wordt eerst een seri\u00eble verbinding gemaakt voor het debuggen; vervolgens wordt een verbinding met de SD-kaart gemaakt. De methode SD.begin() geeft aan of de verbinding succesvol kon worden gemaakt.<\/p>\n<p>In loop() wordt de regel opgebouwd die aansluitend op writeToSD() naar de SD-kaart wordt geschreven. Daarvoor gebruiken we de stringklasse waarmee een flexibele werking met tekenreeksen mogelijk is. De operator + verbindt twee strings; de variabele count wordt daarom met String(count) eerst omgezet naar een string. De waarde van count wordt nog met \u00e9\u00e9n verhoogd en tot slot wordt er \u00e9\u00e9n seconde gewacht.<\/p>\n<p>Er wordt geschreven via writeToSD(). Daar wordt vervolgens met SD.open() een bestand geopend of nieuw aangemaakt als het nog niet bestaat (belangrijk: de bestandsnaam mag maximaal 8 tekens lang zijn). Met FILE_WRITE wordt aangegeven dat het bestand in schrijfmodus moet worden geopend. Als het openen is gelukt, bevat file een object van de klasse File waarmee we de regel schrijven die in loop() is samengesteld. Daarna wordt het bestand weer gesloten. Dit zorgt ervoor dat het bestand niet beschadigd raakt als de kaart tussen twee schrijfprocessen wordt verwijderd of als de stroom uitvalt. Voor het debuggen geven we de waarde van line ook nog op de seri\u00eble interface weer.<\/p>\n<p>Als het openen niet is gelukt (bijvoorbeeld omdat de SD-kaart ontbreekt), is file leeg en wordt er een foutmelding weergegeven op de seri\u00eble interface.<\/p>\n<h2>De realtimeklok<\/h2>\n<p><strong>Omschrijving en inbouwen<\/strong><\/p>\n<p>In tegenstelling tot een pc beschikt een Arduino niet over een ingebouwde klok, omdat deze voor de meeste toepassingen niet nodig is. Voor de gegevenslogger gebruiken we daarom de Grove RTC-module, die beschikt over een DS1307 klokgeneratorchip.<\/p>\n<p>Voor de realtimeklok is een extra spanningsbron nodig in de vorm van een 3V knoopcelbatterij (CR1225), zodat de ingestelde tijd ook behouden blijft als de Arduino zelf niet op het stroomnet is aangesloten. Dat heeft wel tot gevolg dat de realtimeklok zonder batterij niet correct functioneert; men kan er derhalve niet van afzien, zelfs als de Arduino vast op een stroombron aangesloten blijft. De communicatie verloopt via het I\u00b2C-bussysteem; er kan een willekeurige I\u00b2C-aansluiting worden gebruikt.<\/p>\n<p>Evenals voor het display moet voor de realtimeklok een bibliotheek worden ge\u00efnstalleerd:<\/p>\n<p>Download: <a href=\"https:\/\/github.com\/Seeed-Studio\/RTC_DS1307\/archive\/master.zip\">https:\/\/github.com\/Seeed-Studio\/RTC_DS1307\/archive\/master.zip<\/a><\/p>\n<p>Documentatie: <a href=\"http:\/\/wiki.seeed.cc\/Grove-RTC\/\">http:\/\/wiki.seeed.cc\/Grove-RTC\/<\/a><\/p>\n<p>Download de bibliotheken en installeer deze vervolgens via het menu &#8216;Sketch&#8217; \u2192 &#8216;Bibliotheek koppelen&#8217; \u2192 &#8216;ZIP-bibliotheken toevoegen&#8230;&#8217;.<\/p>\n<p>In het menu &#8216;Bestand&#8217; \u2192 &#8216;Voorbeelden&#8217; zijn voor alle bibliotheken voorbeeldprogramma&#8217;s beschikbaar.<\/p>\n<p><strong>Tijd instellen en uitlezen<\/strong><\/p>\n<p>Om de tijd in te stellen, gebruiken we een eigen sketch in plaats van de setup()-methode in het definitieve programma. Anders zou de tijd elke keer weer worden teruggezet dat de Arduino wordt gestart:<\/p>\n<p>#include &lt;Wire.h&gt;<\/p>\n<p>#include &lt;DS1307.h&gt;<\/p>\n<p>DS1307 clock; \/\/ een tijdobject aanmaken<\/p>\n<p>void setup() {<\/p>\n<p>Serial.begin(9600);<\/p>\n<p>\/\/ De verbinding met de klok maken<\/p>\n<p>clock.begin();<\/p>\n<p>\/\/ De tijd instellen<\/p>\n<p>clock.fillByYMD(2017, 9, 24);<\/p>\n<p>clock.fillByHMS(18, 53, 15);<\/p>\n<p>clock.fillDayOfWeek(SAT);<\/p>\n<p>clock.setTime();<\/p>\n<p>}<\/p>\n<p>void loop() {<\/p>\n<p>printTime();<\/p>\n<p>delay(1000);<\/p>\n<p>}<\/p>\n<p>void printTime() {<\/p>\n<p>clock.getTime(); \/\/ Tijd van de chip opvragen<\/p>\n<p>Serial.print(clock.hour, DEC);<\/p>\n<p>Serial.print(&#8220;:&#8221;);<\/p>\n<p>Serial.print(clock.minute, DEC);<\/p>\n<p>Serial.print(&#8220;:&#8221;);<\/p>\n<p>Serial.print(clock.second, DEC);<\/p>\n<p>Serial.print(&#8221; | &#8220;);<\/p>\n<p>Serial.print(clock.dayOfMonth, DEC);<\/p>\n<p>Serial.print(&#8220;.&#8221;);<\/p>\n<p>Serial.print(clock.month, DEC);<\/p>\n<p>Serial.print(&#8220;.&#8221;);<\/p>\n<p>Serial.print(clock.year, DEC);<\/p>\n<p>Serial.println();<\/p>\n<p>}<\/p>\n<p>In setup() openen we eerst de verbinding met een seri\u00eble poort, zodat de tijd ter controle naar de pc kan worden verzonden. Met clock.begin() wordt vervolgens de verbinding met de klok geopend, worden datum, tijd en weekdag voorbereid en ten slotte via clock.setTime() naar de realtimeklok verzonden (vervang de waarden eerst door de huidige tijd ;-))<\/p>\n<p>In loop() wordt eerst de tijd uitgegeven en vervolgens een seconde gewacht. In Arduino Studio wordt de uitvoer weergegeven onder &#8216;Tools&#8217; \u2192 &#8216;Seri\u00eble monitor&#8217;.<\/p>\n<p>Belangrijk: het duurt enkele seconden om het programma naar de Arduino te verzenden; het is daarom moeilijk om de tijd exact in te stellen. Voor deze toepassing is dat geen probleem: als er om de paar minuten een meetwaarde wordt geregistreerd om het verloop van de meetwaarden gedurende de dag te registreren, dan is een afwijking van enkele seconden geen probleem.<\/p>\n<p>Het definitieve programma<\/p>\n<p>Nadat we alle onderdelen hebben getest, kan het programma uit de vorige tutorial worden uitgebreid:<\/p>\n<p>#include &lt;SPI.h&gt;<\/p>\n<p>#include &lt;SD.h&gt;<\/p>\n<p>#include &lt;Wire.h&gt;<\/p>\n<p>#include &lt;DS1307.h&gt;<\/p>\n<p>#include &lt;DHT.h&gt;<\/p>\n<p>#include &lt;rgb_lcd.h&gt;<\/p>\n<p>DS1307 clock;<\/p>\n<p>DHT dht(A0, DHT22);<\/p>\n<p>rgb_lcd lcd;<\/p>\n<p>byte DEGREE_SYMBOL = 0;<\/p>\n<p>byte degree[8] = {<\/p>\n<p>0b00000,<\/p>\n<p>0b00010,<\/p>\n<p>0b00101,<\/p>\n<p>0b00010,<\/p>\n<p>0b00000,<\/p>\n<p>0b00000,<\/p>\n<p>0b00000,<\/p>\n<p>0b00000<\/p>\n<p>};<\/p>\n<p>unsigned long DISPLAY_UPDATE_INTERVAL = 200; \/\/ 200 milliseconden<\/p>\n<p>unsigned long WRITE_INTERVAL = 60000; \/\/ 1 minuut<\/p>\n<p>unsigned long lastDisplayUpdate = DISPLAY_UPDATE_INTERVAL;<\/p>\n<p>unsigned long lastWrite = WRITE_INTERVAL;<\/p>\n<p>void setup() {<\/p>\n<p>Serial.begin(9600); \/\/ Seri\u00eble interface initialiseren<\/p>\n<p>\/\/ SD-kaart initialiseren<\/p>\n<p>int selectedChip = 4;<\/p>\n<p>if (!SD.begin(selectedChip)) {<\/p>\n<p>Serial.println(&#8220;SD-kaart kan niet worden geladen of ontbreekt&#8221;);<\/p>\n<p>} else {<\/p>\n<p>Serial.println(&#8220;SD-kaart ge\u00efnitialiseerd.&#8221;);<\/p>\n<p>}<\/p>\n<p>dht.begin(); \/\/ Verbinding maken met de sensor<\/p>\n<p>clock.begin(); \/\/ Verbinding maken met de realtimeklok<\/p>\n<p>lcd.begin(16, 2); \/\/ Verbinding maken met het display en het display initialiseren: 2 regels van elk 16 tekens<\/p>\n<p>lcd.createChar(DEGREE_SYMBOL, degree); \/\/ Het nieuwe &#8220;\u00b0&#8221;-symbool registreren bij het display<\/p>\n<p>}<\/p>\n<p>void loop() {<\/p>\n<p>float humidity = dht.readHumidity();<\/p>\n<p>float temperature = dht.readTemperature();<\/p>\n<p>if (isnan(temperature) || isnan(humidity)) {<\/p>\n<p>Serial.println(&#8220;DHT lezen is niet mogelijk&#8221;);<\/p>\n<p>return; \/\/ Geen gegevens &#8211;&gt; loop() weer verlaten op dit punt<\/p>\n<p>}<\/p>\n<p>if (millis() &#8211; lastDisplayUpdate &gt; DISPLAY_UPDATE_INTERVAL) {<\/p>\n<p>const float coldest = 18;<\/p>\n<p>const float hottest = 30;<\/p>\n<p>int red = limit(255 * (temperature &#8211; coldest) \/ (hottest &#8211; coldest));<\/p>\n<p>\/\/ Kleur van blauw via paars naar rood<\/p>\n<p>int green = 0;<\/p>\n<p>int blue = limit(255 * (hottest &#8211; temperature) \/ (hottest &#8211; coldest));<\/p>\n<p>updateDisplay(red, green, blue, temperature, humidity);<\/p>\n<p>lastDisplayUpdate = millis();<\/p>\n<p>}<\/p>\n<p>if (millis() &#8211; lastWrite &gt; WRITE_INTERVAL) {<\/p>\n<p>String line = String(getTime()) + &#8220;;&#8221; + String(temperature) + &#8220;;&#8221; + String(humidity);<\/p>\n<p>writeToSD(line);<\/p>\n<p>lastWrite = millis();<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>String getTime() {<\/p>\n<p>clock.getTime(); \/\/ Tijd van de chip opvragen<\/p>\n<p>String t = String(clock.dayOfMonth, DEC);<\/p>\n<p>t += String(&#8220;.&#8221;);<\/p>\n<p>t += String(clock.month);<\/p>\n<p>t += String(&#8220;.&#8221;);<\/p>\n<p>t += String(clock.year);<\/p>\n<p>t += String(&#8221; &#8220;);<\/p>\n<p>t += String(clock.hour);<\/p>\n<p>t += &#8220;:&#8221;;<\/p>\n<p>t += String(clock.minute);<\/p>\n<p>t += &#8220;:&#8221;;<\/p>\n<p>t += String(clock.second);<\/p>\n<p>return t;<\/p>\n<p>}<\/p>\n<p>void writeToSD(String line) {<\/p>\n<p>File dataFile = SD.open(&#8220;datalog.csv&#8221;, FILE_WRITE);<\/p>\n<p>if (dataFile) {<\/p>\n<p>dataFile.println(line); \/\/ Naar de SD-kaart schrijven<\/p>\n<p>dataFile.close();<\/p>\n<p>Serial.println(line); \/\/ Aanvullend schrijven naar de seri\u00eble interface voor debuggen<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>Serial.println(&#8220;Fout bij openen van gegevensbestand&#8221;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>void updateDisplay(int red, int green, int blue, float temperature, float humidity) {<\/p>\n<p>lcd.setRGB(red, green, blue);<\/p>\n<p>lcd.setCursor(0, 0);<\/p>\n<p>lcd.print(&#8220;T: &#8220;);<\/p>\n<p>lcd.print(temperature);<\/p>\n<p>lcd.write(DEGREE_SYMBOL);<\/p>\n<p>lcd.print(&#8220;C&#8221;);<\/p>\n<p>lcd.setCursor(0, 1);<\/p>\n<p>lcd.print(&#8220;H: &#8220;);<\/p>\n<p>lcd.print(humidity);<\/p>\n<p>lcd.print(&#8220;%&#8221;);<\/p>\n<p>}<\/p>\n<p>float limit(float color) { \/\/ Kleurwaarden moeten binnen het bereik 0..255 liggen<\/p>\n<p>if (color &lt; 0) {<\/p>\n<p>return 0;<\/p>\n<p>}<\/p>\n<p>else if (color &gt; 255) {<\/p>\n<p>return 255;<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>return color;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Nieuw bij dit programma zijn de twee processen met verschillende klokfrequenties. Het display moet voor een actuele weergave en vloeiende kleurovergangen meerdere keren per seconde worden bijgewerkt. Voor het schrijven van de meetwaarden naar de kaart is echter een minutenpuls voldoende. Eenvoudige pauzes met delay() zijn daarom niet meer mogelijk. De oplossing: Met de functie millis() kan het aantal voorbije milliseconden vanaf het starten van de Arduino worden opgevraagd. In lastDisplayUpdate en lastWrite worden dan telkens de laatste tijd van het bijwerken van het display en het schrijven naar de SD-kaart opgeslagen. Elke keer dat loop() wordt uitgevoerd, wordt dan vergeleken of het verschil van deze waarden voor millis() groter is dan de waarden van DISPLAY_UPDATE_INTERVAL en WRITE_INTERVAL en alleen in dat geval worden de desbetreffende acties uitgevoerd. De variabelen lastWrite en lastDisplayUpdate worden met de lengte van het desbetreffende interval ge\u00efnitialiseerd, zodat beide acties direct volgen op de start van het programma.<\/p>\n<p>In loop() worden ten slotte eerst de waarden van de sensor opgehaald en gecontroleerd. Als er tijdens het ophalen van de waarden problemen zijn opgetreden, wordt een foutmelding geretourneerd en wordt de uitvoering van loop() op deze plek be\u00ebindigd en weer van voren af aan gestart (d.w.z. dat de waarden weer worden opgehaald uit de sensor).<\/p>\n<p>Vervolgens wordt gecontroleerd of het weer tijd is om het display bij te werken. Dat is het geval als het verschil tussen het huidige tijdstip en lastDisplayUpdate groter is dan DISPLAY_UPDATE_INTERVAL. Daarna wordt wederom de kleur bepaald en worden de gegevens naar het display verzonden. Voor de leesbaarheid is daarvoor de methode updateDisplay() beschikbaar. Aansluitend wordt lastDisplayUpdate ingesteld op de actuele tijd.<\/p>\n<p>Dat gebeurt ook voor het schrijven van de gegevens naar de SD-kaart. Als het tijdstip van het laatste schrijfproces langer geleden is dan WRITE_INTERVAL, wordt de actuele tijd bepaald door de realtimeklok, worden de gegevens naar de SD-kaart geschreven en wordt lastWrite ingesteld op de huidige tijd.<\/p>\n<p>De tijd wordt bepaald via de methode getTime(), die de tijd opvraagt van de realtimeklok en een string genereert met datum en tijd. Met de operator += wordt de waarde van de rechterstring gekoppeld aan de linkerstring.<\/p>\n<p>Gegevens evalueren<\/p>\n<p>De gegevens worden naar een bestand met de naam datalog.csv geschreven en kunnen voor de evaluatie worden ge\u00efmporteerd in Excel, LibreOffice Calc of Google Spreadsheets.<\/p>\n<p>Verwijder de SD-kaart uit de Arduino en lees deze uit op de pc!<\/p>\n<p>Veel plezier!<\/p>\n<h2><strong>Stuklijst<\/strong><\/h2>\n<p>1x <a href=\"https:\/\/www.reichelt.com\/Weiteres-Zubehoer\/GRV-RTC\/3\/index.html?ACTION=3&amp;LA=446&amp;ARTICLE=191187\">Arduino &#8211; Grove realtimeklok &#8211; RTC<\/a><\/p>\n<p>1x <a href=\"https:\/\/www.reichelt.com\/Weiteres-Zubehoer\/ARD-SENSOR-KIT-2\/3\/index.html?ACTION=3;ARTICLE=191233;SEARCH=grove%20sd\">Arduino Shield &#8211; SD-kaart V4<\/a><\/p>\n<p>1x <a href=\"https:\/\/www.reichelt.com\/Knopfzellen-Lithium\/CR-1225\/3\/index.html?ACTION=3&amp;LA=446&amp;ARTICLE=75583&amp;GROUPID=4241&amp;artnr=CR+1225&amp;SEARCH=CR1225\">Batterij voor Grove realtimeklok<\/a><\/p>\n<p>1x <a href=\"https:\/\/www.reichelt.com\/sdhc-speicherkarte-32gb-intenso-class-10-uhs-1-intenso-3421480-p144195.html?&amp;trstct=pol_2&amp;nbc=1\">SD-kaart<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inleiding In de laatste \u2018Hoe doe je dat?\u2019 over de Arduino hebben we een module gebouwd voor het weergeven van de temperatuur en luchtvochtigheid. Deze wordt nu uitgebreid om gegevens op te kunnen slaan op een SD-kaart. Bovendien wordt voor elke meting het desbetreffende tijdstip geregistreerd. Nu worden daar een shield voor een SD-kaart en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":39091,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6052,6053],"tags":[3170,5749,5750,5751,5752,5753,4800,5754],"class_list":["post-39444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projecten","category-themas","tag-arduino","tag-luchtvochtigheid","tag-meten","tag-metingen","tag-module","tag-realtimeklok","tag-sd-kaart","tag-temperatuur"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl|Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl<\/title>\n<meta name=\"description\" content=\"In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno|In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno\" \/>\n<meta property=\"og:description\" content=\"In de laatste \u2018Hoe doe je dat?\u2019 over de Arduino hebben we een module gebouwd voor het weergeven van de temperatuur en luchtvochtigheid. Deze keer laten we zien hoe die module kan worden uitgebreid met een SD-kaart om gegevens op te slaan en voor elke meting het desbetreffende tijdstip te registreren.|In de laatste \u2018Hoe doe je dat?\u2019 over de Arduino hebben we een module gebouwd voor het weergeven van de temperatuur en luchtvochtigheid. Deze keer laten we zien hoe die module kan worden uitgebreid met een SD-kaart om gegevens op te slaan en voor elke meting het desbetreffende tijdstip te registreren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/\" \/>\n<meta property=\"og:site_name\" content=\"reichelt Magazin\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-20T11:24:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-17T11:23:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"385\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#\\\/schema\\\/person\\\/54edf009d7730dbe36a83d3e9948e08f\"},\"headline\":\"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno\",\"datePublished\":\"2017-11-20T11:24:01+00:00\",\"dateModified\":\"2023-04-17T11:23:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/\"},\"wordCount\":1871,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"keywords\":[\"Arduino\",\"luchtvochtigheid\",\"meten\",\"metingen\",\"module\",\"realtimeklok\",\"SD-kaart\",\"temperatuur\"],\"articleSection\":[\"Projecten\",\"Thema's\"],\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/\",\"name\":\"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl|Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"datePublished\":\"2017-11-20T11:24:01+00:00\",\"dateModified\":\"2023-04-17T11:23:56+00:00\",\"description\":\"In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno|In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/Arduino-Uno_part-2-1.jpg\",\"width\":640,\"height\":385,\"caption\":\"In der Fortsetzung des letzten How-Tos programmieren wir dieses Mal einen Temperatur-Log mit dem Arduino Uno\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/projecten\\\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.reichelt.de\\\/magazin\\\/nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#website\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/\",\"name\":\"reichelt Magazin\",\"description\":\"Das Technik Magazin\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#organization\",\"name\":\"reichelt Magazin\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/reichelt_magazin_logo_de_nl-1.svg\",\"contentUrl\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/reichelt_magazin_logo_de_nl-1.svg\",\"width\":456,\"height\":149,\"caption\":\"reichelt Magazin\"},\"image\":{\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.reichelt.com\\\/magazin\\\/nl\\\/#\\\/schema\\\/person\\\/54edf009d7730dbe36a83d3e9948e08f\",\"name\":\"admin\",\"sameAs\":[\"https:\\\/\\\/magazin.reichelt.de\\\/magazin\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl|Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl","description":"In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno|In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/","og_locale":"nl_NL","og_type":"article","og_title":"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno","og_description":"In de laatste \u2018Hoe doe je dat?\u2019 over de Arduino hebben we een module gebouwd voor het weergeven van de temperatuur en luchtvochtigheid. Deze keer laten we zien hoe die module kan worden uitgebreid met een SD-kaart om gegevens op te slaan en voor elke meting het desbetreffende tijdstip te registreren.|In de laatste \u2018Hoe doe je dat?\u2019 over de Arduino hebben we een module gebouwd voor het weergeven van de temperatuur en luchtvochtigheid. Deze keer laten we zien hoe die module kan worden uitgebreid met een SD-kaart om gegevens op te slaan en voor elke meting het desbetreffende tijdstip te registreren.","og_url":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/","og_site_name":"reichelt Magazin","article_published_time":"2017-11-20T11:24:01+00:00","article_modified_time":"2023-04-17T11:23:56+00:00","og_image":[{"width":640,"height":385,"url":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Geschreven door":"admin","Geschatte leestijd":"9 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#article","isPartOf":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/"},"author":{"name":"admin","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f"},"headline":"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno","datePublished":"2017-11-20T11:24:01+00:00","dateModified":"2023-04-17T11:23:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/"},"wordCount":1871,"commentCount":0,"publisher":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#organization"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#primaryimage"},"thumbnailUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","keywords":["Arduino","luchtvochtigheid","meten","metingen","module","realtimeklok","SD-kaart","temperatuur"],"articleSection":["Projecten","Thema's"],"inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/","url":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/","name":"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl|Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno | reichelt.nl","isPartOf":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#primaryimage"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#primaryimage"},"thumbnailUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","datePublished":"2017-11-20T11:24:01+00:00","dateModified":"2023-04-17T11:23:56+00:00","description":"In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno|In dit vervolg op de laatste \u2018Hoe doe je dat?\u2019 gaan we dit keer een temperatuurlogboek programmeren met de Arduino Uno","breadcrumb":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#primaryimage","url":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","contentUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2017\/10\/Arduino-Uno_part-2-1.jpg","width":640,"height":385,"caption":"In der Fortsetzung des letzten How-Tos programmieren wir dieses Mal einen Temperatur-Log mit dem Arduino Uno"},{"@type":"BreadcrumbList","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/projecten\/vervolg-temperatuurlogboeken-programmeren-met-de-arduino-uno\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.reichelt.de\/magazin\/nl\/"},{"@type":"ListItem","position":2,"name":"Vervolg: Temperatuurlogboeken programmeren met de Arduino Uno"}]},{"@type":"WebSite","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#website","url":"https:\/\/www.reichelt.com\/magazin\/nl\/","name":"reichelt Magazin","description":"Das Technik Magazin","publisher":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.reichelt.com\/magazin\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#organization","name":"reichelt Magazin","url":"https:\/\/www.reichelt.com\/magazin\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2021\/11\/reichelt_magazin_logo_de_nl-1.svg","contentUrl":"https:\/\/www.reichelt.com\/magazin\/wp-content\/uploads\/2021\/11\/reichelt_magazin_logo_de_nl-1.svg","width":456,"height":149,"caption":"reichelt Magazin"},"image":{"@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.reichelt.com\/magazin\/nl\/#\/schema\/person\/54edf009d7730dbe36a83d3e9948e08f","name":"admin","sameAs":["https:\/\/magazin.reichelt.de\/magazin"]}]}},"_links":{"self":[{"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/posts\/39444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/comments?post=39444"}],"version-history":[{"count":6,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/posts\/39444\/revisions"}],"predecessor-version":[{"id":77118,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/posts\/39444\/revisions\/77118"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/media\/39091"}],"wp:attachment":[{"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/media?parent=39444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/categories?post=39444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reichelt.com\/magazin\/nl\/wp-json\/wp\/v2\/tags?post=39444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}