{"id":14270,"date":"2025-02-16T01:00:00","date_gmt":"2025-02-16T00:00:00","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=14270"},"modified":"2025-02-19T10:17:26","modified_gmt":"2025-02-19T09:17:26","slug":"uitlezen-van-de-interne-rtc-pico","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2025\/02\/16\/uitlezen-van-de-interne-rtc-pico\/","title":{"rendered":"Uitlezen van de interne RTC (Pico)"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">De CPU (rp2040) van de Raspberry Pi Pico bevat een opvallend component, te weten een RTC. Weliswaar is deze erg nauwkeurig, maar helaas is deze RTC niet direct te gebruiken als klok ofschoon bij het oproepen van de RTC-tijd in Thonny de Pico de exacte tijd aangeeft. Hoe zit dat en hoe gebruik je de Pico om de exacte tijd weer te geven in projecten.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"leanpub-auto-what-gives-my-pico-appears-to-have-accurate-time-already\">RTC? Mijn Pico heeft al de nauwkeurige tijd!<\/h2>\n\n\n\n<p>Voor degenen die (net als ik) een beetje in de war waren toen de Raspberry Pi Pico de juiste tijd in <a href=\"https:\/\/thonny.org\/\">Thonny<\/a> aangaf. Hoe zit dat? Er is hier een goede reden voor.<\/p>\n\n\n\n<p>Als je de RTC van de Pico uitleest zie je dat de tijd begint op <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">1\/1\/2021 0:0:0<\/mark><\/strong>. Om de RTC tijd te kunnen gebruiken zal je deze eerst met de actuele tijd moeten synchroniseren. <\/p>\n\n\n\n<p>Een tijd geleden is er een wijziging in de code van Thonny doorgevoerd, waardoor een klein stukje code op de hostcomputer (Windows, Mac of Linux) wordt uitgevoerd. De computer vindt daarmee niet alleen automatisch een aangesloten Pico, maar synchroniseert ermee vervolgens de actuele datum en tijd!<\/p>\n\n\n\n<p>Het verschil met een losse RTC-module (incl. oplaadbare batterij) die de tijd vasthoudt als de Pico geen spanning heeft, is dat je de interne RTC van de Pico steeds opnieuw op tijd moet zetten als de spanning eraf geweest is. Erg onhandig! <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"865\" height=\"617\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/RP20240.jpg\" alt=\"\" class=\"wp-image-14273\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/RP20240.jpg 865w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/RP20240-300x214.jpg 300w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/RP20240-768x548.jpg 768w\" sizes=\"auto, (max-width: 865px) 100vw, 865px\" \/><figcaption class=\"wp-element-caption\">Het diagram van de rp2040 met de RTC <\/figcaption><\/figure>\n\n\n\n<p><strong>Battery back-up houdt datum en tijd vast<\/strong><\/p>\n\n\n\n<p>Wil je niet dat de Pico na het synchroniseren met de actuele tijd de RTC-tijd verliest, zorg er dan voor dat de Pico van een (permanente) voeding is voorzien. In <a href=\"https:\/\/www.picademie.nl\/index.php\/2025\/02\/12\/voeding-voor-een-mobiele-pico\/\" target=\"_blank\" rel=\"noreferrer noopener\">deze tutorial<\/a> zie je hoe je dit kunt doen.<\/p>\n\n\n\n<p><em>Daar gaan we!<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Interne RTC uitlezen van (actuele) datum en tijd<\/h3>\n\n\n\n<p>In deze tutorial laat ik een drietal voorbeelden zien hoe je de (interne) RTC van de Pico uitleest en in verschillende formaten weergeeft. Ik gebruik Thonny om de code te laten draaien, de Shell ervan toont het resultaat.<\/p>\n\n\n\n<p><strong>Script 1<\/strong><\/p>\n\n\n\n<p>Om de datum en tijd uit de RTC te lezen en in  in het gebruikelijke format te tonen zijn slechts een paar coderegels nodig:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import machine\nimport time\n\nwhile True:\n    rtc=machine.RTC()\n    timestamp=rtc.datetime()\n    timestring=\"%04d-%02d-%02d %02d:%02d:%02d\"%(timestamp&#91;0:3] + timestamp&#91;4:7])\n    \n    print(timestring)\n    time.sleep(1)<\/code><\/pre>\n\n\n\n<p>Het resultaat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2025-02-12 16:29:40\n2025-02-12 16:29:41\n2025-02-12 16:29:42\n2025-02-12 16:29:43\nenz.<\/code><\/pre>\n\n\n\n<p><strong>Script 2<\/strong><\/p>\n\n\n\n<p>Ben je meer op zoek naar de losse elementen van de datum en tijd:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from machine import RTC\nimport time\n\nwhile True:\n    rtc = RTC()\n    t=rtc.datetime()\n    print(t)\n    time.sleep(1)<\/code><\/pre>\n\n\n\n<p>Het resultaat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(2025, 2, 11, 1, 6, 47, 4, 0)\n(2025, 2, 11, 1, 6, 47, 5, 0)\n(2025, 2, 11, 1, 6, 47, 6, 0)\n(2025, 2, 11, 1, 6, 47, 7, 0)\nenz.<\/code><\/pre>\n\n\n\n<p><strong>Script 3<\/strong><\/p>\n\n\n\n<p>Wil je slechts de dag en de datum:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from machine import RTC\nrtc = RTC()\nyear, month, day, dow, hour, mins, secs = rtc.datetime()&#91;0:7]\n\ndays   = &#91;\"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\", \"Zondag\"]\n\nmonths = &#91;\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\nday_name = days&#91;dow]\nmonth_name = months&#91;month-1]\n\n#s = \"{}, {} {}, {}\".format(day_name, day, month_name, year)\ns = \"{}, {} {} {}\".format(day_name, day, month_name, year)\nprint('\\nHet is',s)<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Het resultaat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Het is Woensdag, 12 Feb 2025<\/code><\/pre>\n\n\n\n<p>Er zijn nog een paar verschijningen, maar ik beperk het tot deze drie. Mocht je nog vragen hebben, plaats hieronder dan je reactie.<\/p>\n\n\n\n<p><em>Have A Nice Day! <\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>De CPU (rp2040) van de Raspberry Pi Pico bevat een opvallend component, te weten een RTC. Weliswaar is deze erg nauwkeurig, maar helaas is deze <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2025\/02\/16\/uitlezen-van-de-interne-rtc-pico\/\" title=\"Uitlezen van de interne RTC (Pico)\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":14431,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[728,731,729],"tags":[],"class_list":["post-14270","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handy-stuff","category-pico-w","category-sensormodules"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2025\/02\/interne-RTC-pico.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/14270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=14270"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/14270\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/14431"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=14270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=14270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=14270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}