{"id":1401,"date":"2015-08-31T13:59:40","date_gmt":"2015-08-31T17:59:40","guid":{"rendered":"http:\/\/nagashur.com\/blog\/?p=1401"},"modified":"2015-08-31T14:27:12","modified_gmt":"2015-08-31T18:27:12","slug":"ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest","status":"publish","type":"post","link":"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/","title":{"rendered":"DS3231 Raspberry pi RTC : ajouter une horloge temps r\u00e9el I2C &#8211; Alitest"},"content":{"rendered":"<p>Le Raspberry pi ne dispose pas de module RTC (Real Time Clock, horloge en temps r\u00e9el), et ne peut donc pas garder une trace pr\u00e9cise du temps \u00e9coul\u00e9 sans avoir recours \u00e0 une synchronisation sur un serveur de temps (NTP). Cela n&#8217;est pas toujours possible, notamment pour des projets ou le Raspberry Pi n&#8217;est pas connect\u00e9 au r\u00e9seau. Pour rem\u00e9dier \u00e0 cela, il est possible d&#8217;ajouter un module RTC tel que le DS3231, \u00e9conomique, compact et pr\u00e9cis. Nous verrons dans ce tutoriel comment r\u00e9aliser cela.<\/p>\n<p><!--more--><\/p>\n<p>Ce tutoriel est \u00e9galement l&#8217;occasion de tester <a href=\"http:\/\/www.aliexpress.com\/item\/DS3231-Precision-RTC-Memory-Module-For-Arduino\/32336150019.html\">les versions vendues sur Aliexpress<\/a> de ce produit.<\/p>\n<h2>DS3231 Raspberry pi RTC : le module<\/h2>\n<div id=\"attachment_1404\" style=\"width: 160px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_cote_4774.jpg\"><img aria-describedby=\"caption-attachment-1404\" data-attachment-id=\"1404\" data-permalink=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/ds3231_cote_4774\/\" data-orig-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_cote_4774.jpg\" data-orig-size=\"619,539\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;3.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon PowerShot SX200 IS&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1440960097&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.005&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"DS3231 Raspberry pi RTC de c\u00f4t\u00e9\" data-image-description=\"\" data-medium-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_cote_4774-300x261.jpg\" data-large-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_cote_4774.jpg\" loading=\"lazy\" class=\"wp-image-1404 size-thumbnail\" src=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_cote_4774-150x150.jpg\" alt=\"DS3231 Raspberry pi RTC de c\u00f4t\u00e9\" width=\"150\" height=\"150\" \/><\/a><p id=\"caption-attachment-1404\" class=\"wp-caption-text\">DS3231 Raspberry pi RTC de c\u00f4t\u00e9<\/p><\/div>\n<p>Ce module est tr\u00e8s compact, puisqu&#8217;il fait 13.6*13.6mm pour une hauteur de 11.4mm. Il dispose de 5 broches femelle, de fa\u00e7on \u00e0 pouvoir \u00eatre branch\u00e9 facilement, puisqu&#8217;il suffit de l&#8217;enfoncer sur les GPIO dans le bon sens. Nous verrons toutefois comment le connecter via des c\u00e2bles, car cela \u00e9vite de bloquer l&#8217;acc\u00e8s au bus I2C, au +3.3v et \u00e0 un GPIO.<\/p>\n<p>Le module dispose d&#8217;une petite pile bouton qui lui permet de garder une trace du temps \u00e9coul\u00e9 m\u00eame quand le Raspberry pi n&#8217;est pas aliment\u00e9.<\/p>\n<h2>Connexion au Raspberry pi<\/h2>\n<p>Pour connecter le module, nous aurons deux solutions : soit nous le brancherons directement sur les GPIO (il est fait pour \u00e7a), ce qui en bloquera donc certains, ou alors nous utiliserons des c\u00e2bles m\u00e2le-femelle pour connecter les deux. Nous verrons les deux m\u00e9thodes.<\/p>\n<h3>Branchement direct<\/h3>\n<p>Pour brancher directement le module, prenez votre Raspberry pi (peu importe le mod\u00e8le), et placez le face \u00e0 vous, de sorte que la carte SD\/micro SD soit vers le haut, et le port hdmi vers la gauche. Prenez \u00e9galement le module, de fa\u00e7on \u00e0 voir la puce. Le connecteur devra \u00eatre vertical, et du c\u00f4t\u00e9 droit. Vous pourrez alors enficher le module sur la rang\u00e9e de gauche des GPIO, tout en haut (les GPIO 1,3,5,7 et 9 seront couverts par le module). Le module d\u00e9passera alors vers le milieu du Raspberry pi, pr\u00e8s du logo.<\/p>\n<p>Les deux photos ci dessous permettent de voir le sens d&#8217;installation.<\/p>\n<div class=\"tiled-gallery type-rectangular tiled-gallery-unresized\" data-original-width=\"610\" data-carousel-extra='{&quot;blog_id&quot;:1,&quot;permalink&quot;:&quot;http:\\\/\\\/nagashur.com\\\/blog\\\/2015\\\/08\\\/31\\\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\\\/&quot;,&quot;likes_blog_id&quot;:96861858}' itemscope itemtype=\"http:\/\/schema.org\/ImageGallery\" > <div class=\"gallery-row\" style=\"width: 610px; height: 364px;\" data-original-width=\"610\" data-original-height=\"364\" > <div class=\"gallery-group images-1\" style=\"width: 372px; height: 364px;\" data-original-width=\"372\" data-original-height=\"364\" > <div class=\"tiled-gallery-item tiled-gallery-item-large\" itemprop=\"associatedMedia\" itemscope itemtype=\"http:\/\/schema.org\/ImageObject\"> <a href=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/ds3231_dessus_tourne_4770_800px\/\" border=\"0\" itemprop=\"url\"> <meta itemprop=\"width\" content=\"368\"> <meta itemprop=\"height\" content=\"360\"> <img data-attachment-id=\"1406\" data-orig-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_dessus_tourn\u00e9_4770_800px.jpg\" data-orig-size=\"816,800\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;3.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon PowerShot SX200 IS&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1440951194&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5&quot;,&quot;iso&quot;:&quot;125&quot;,&quot;shutter_speed&quot;:&quot;0.003125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Tenez le module dans cette position\" data-image-description=\"\" data-medium-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_dessus_tourn\u00e9_4770_800px-300x294.jpg\" data-large-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_dessus_tourn\u00e9_4770_800px.jpg\" src=\"https:\/\/i0.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_dessus_tourn\u00e9_4770_800px.jpg?w=368&#038;h=360\" width=\"368\" height=\"360\" data-original-width=\"368\" data-original-height=\"360\" itemprop=\"http:\/\/schema.org\/image\" title=\"Tenez le module dans cette position\" alt=\"Tenez le module dans cette position\" style=\"width: 368px; height: 360px;\" \/> <\/a> <div class=\"tiled-gallery-caption\" itemprop=\"caption description\"> Tenez le module dans cette position <\/div> <\/div> <\/div> <!-- close group --> <div class=\"gallery-group images-1\" style=\"width: 238px; height: 364px;\" data-original-width=\"238\" data-original-height=\"364\" > <div class=\"tiled-gallery-item tiled-gallery-item-small\" itemprop=\"associatedMedia\" itemscope itemtype=\"http:\/\/schema.org\/ImageObject\"> <a href=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/raspberrypi2_4547_800px\/\" border=\"0\" itemprop=\"url\"> <meta itemprop=\"width\" content=\"234\"> <meta itemprop=\"height\" content=\"360\"> <img data-attachment-id=\"1407\" data-orig-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/RaspberryPi2_4547_800px.jpg\" data-orig-size=\"800,1230\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;3.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon PowerShot SX200 IS&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1438785273&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5&quot;,&quot;iso&quot;:&quot;400&quot;,&quot;shutter_speed&quot;:&quot;0.033333333333333&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Raspberry Pi 2\" data-image-description=\"\" data-medium-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/RaspberryPi2_4547_800px-195x300.jpg\" data-large-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/RaspberryPi2_4547_800px-666x1024.jpg\" src=\"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/RaspberryPi2_4547_800px.jpg?w=234&#038;h=360\" width=\"234\" height=\"360\" data-original-width=\"234\" data-original-height=\"360\" itemprop=\"http:\/\/schema.org\/image\" title=\"Raspberry Pi 2\" alt=\"Raspberry Pi 2\" style=\"width: 234px; height: 360px;\" \/> <\/a> <div class=\"tiled-gallery-caption\" itemprop=\"caption description\"> Raspberry Pi 2 <\/div> <\/div> <\/div> <!-- close group --> <\/div> <!-- close row --> <\/div>\n<h3>Branchement avec des c\u00e2bles<\/h3>\n<div id=\"attachment_1408\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout.jpg\"><img aria-describedby=\"caption-attachment-1408\" data-attachment-id=\"1408\" data-permalink=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/ds3231_bottom_4766_pinout\/\" data-orig-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout.jpg\" data-orig-size=\"900,802\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;3.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon PowerShot SX200 IS&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1440951129&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;5&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.005&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"DS3231 brochage et connexion\" data-image-description=\"\" data-medium-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout-300x267.jpg\" data-large-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout.jpg\" loading=\"lazy\" class=\"size-medium wp-image-1408\" src=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout-300x267.jpg\" alt=\"DS3231 brochage et connexion\" width=\"300\" height=\"267\" srcset=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout-300x267.jpg 300w, http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout.jpg 900w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1408\" class=\"wp-caption-text\">DS3231 brochage et connexion<\/p><\/div>\n<p>Si vous retournez votre module, vous verrez des indications pr\u00e8s du connecteur femelle. La <strong>broche +<\/strong> sera connect\u00e9e au <strong>GPIO1<\/strong>, \u00e0 savoir le <strong>+3.3V<\/strong>. La <strong>broche D<\/strong> ira sur le<strong> GPIO3<\/strong>, \u00e0 savoir la broche <strong>SDA<\/strong> du bus I2C. La <strong>broche C<\/strong> ira sur le <strong>GPIO 5<\/strong>, \u00e0 savoir la broche <strong>SCL<\/strong> du bus I2C. <strong>La broche NC ne sera connect\u00e9e \u00e0 rien<\/strong>, et la<strong> broche &#8211;<\/strong> ira \u00e0 <strong>la masse du Raspberry pi<\/strong>, par exemple le <strong>GPIO 9<\/strong>. N&#8217;oubliez pas que sur la double rang\u00e9e de GPIO, on compte ligne par ligne :<\/p>\n<p>1 2<\/p>\n<p>3 4<\/p>\n<p>5 6<\/p>\n<p>etc.<\/p>\n<p>Si vous avez besoin d&#8217;une r\u00e9f\u00e9rence, <a href=\"http:\/\/pi.gadgetoid.com\/pinout\">voici le sch\u00e9ma des GPIO<\/a>, si on tient le Raspberry pi comme d\u00e9crit plus haut, et sur la photo du Raspberry pi 2.<\/p>\n<h2>Configuration de l&#8217;I2C<\/h2>\n<p>Ce module fonctionne en I2C, il est donc n\u00e9cessaire de l&#8217;activer et de le faire fonctionner. Pour cela, le plus simple est d&#8217;ex\u00e9cuter l&#8217;utilitaire <strong>raspi-config<\/strong> :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo raspi-config<\/pre>\n<p>Ensuite, s\u00e9lectionnez l&#8217;option<em><strong> 7 &#8211; Advanced configuration<\/strong><\/em>, puis l&#8217;option <em><strong>A7 I2C<\/strong><\/em>, et choisissez <em><strong>YES<\/strong><\/em>, <em><strong>OK<\/strong><\/em>, <em><strong>YES<\/strong><\/em>, et encore <em><strong>OK<\/strong><\/em>. Vous pouvez alors faire <em><strong>finish<\/strong><\/em>, puis accepter de red\u00e9marrer.<\/p>\n<p>Pour v\u00e9rifier le fonctionnement de l&#8217;ensemble, il faudra installer les programmes\u00a0<em><strong>python-smbus<\/strong><\/em> et\u00a0<em><strong>i2c-tools<\/strong><\/em> :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\nsudo apt-get install python-smbus\r\nsudo apt-get install i2c-tools\r\n\r\n<\/pre>\n<p>Une fois cela effectu\u00e9, vous pourrez v\u00e9rifier que tout fonctionne en tapant la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\"> sudo i2cdetect -y 1 <\/pre>\n<p>Les premiers mod\u00e8les de Raspberry pi (tr\u00e8s anciens) devront recevoir la commande <em><strong>sudo i2cdetect -y 0<\/strong><\/em> \u00e0 la place.<\/p>\n<p>Si cela ne fonctionne pas, vous pouvez essayer de charger les modules <strong>i2c-dev<\/strong> et <strong>i2c-bcm2708<\/strong> \u00e0 la main :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\"> sudo modprobe i2c-dev\r\n\r\nsudo modprobe i2c-bcm2708 <\/pre>\n<p>Si cela fonctionne, vous pourrez alors ajouter ces modules dans <strong>\/etc\/modules<\/strong> en ex\u00e9cutant la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\"> sudo nano \/etc\/modules <\/pre>\n<p>Vous pourrez alors ajouter \u00e0 la fin du fichier les deux lignes suivantes :<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ni2c-dev\r\ni2c-bcm2708\r\n<\/pre>\n<p>Au prochain red\u00e9marrage, les modules seront automatiquement charg\u00e9s, et il ne sera pas n\u00e9cessaire de faire un modprobe.<\/p>\n<p>Si cela ne fonctionne toujours pas, <a href=\"https:\/\/www.raspberrypi.org\/forums\/viewtopic.php?p=675658#p675658\">voici une piste \u00e0 explorer, en anglais<\/a>, mais les instructions sont claires (un fichier \u00e0 modifier).<\/p>\n<p>Si tout \u00e0 bien fonctionn\u00e9 et que le c\u00e2blage est bon, vous devriez voir ceci en faisant un <em><strong>sudo i2cdetect -y 1<\/strong><\/em> :<\/p>\n<div id=\"attachment_1410\" style=\"width: 429px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect.png\"><img aria-describedby=\"caption-attachment-1410\" data-attachment-id=\"1410\" data-permalink=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/i2cdetect\/\" data-orig-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect.png\" data-orig-size=\"419,181\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"sudo i2cdetect -y 1 avec un DS3231 branch\u00e9\" data-image-description=\"\" data-medium-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect-300x130.png\" data-large-file=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect.png\" loading=\"lazy\" class=\"wp-image-1410 size-full\" src=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect.png\" alt=\"sudo i2cdetect -y 1 avec un DS3231 branch\u00e9\" width=\"419\" height=\"181\" srcset=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect.png 419w, http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/i2cdetect-300x130.png 300w\" sizes=\"(max-width: 419px) 100vw, 419px\" \/><\/a><p id=\"caption-attachment-1410\" class=\"wp-caption-text\">sudo i2cdetect -y 1 avec un DS3231 branch\u00e9<\/p><\/div>\n<h2>Utilisation du module<\/h2>\n<p>Notre module est d\u00e9tect\u00e9, et utilisable. Cependant, nous ne savons pas encore ce qu&#8217;il &#8220;raconte&#8221;. Nous chercherons donc \u00e0 communiquer avec le module.<\/p>\n<p>Si tout ce que nous avons fait avant a bien fonctionn\u00e9, nous pouvons alors ex\u00e9cuter la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">echo ds3231 0x68 | sudo tee \/sys\/class\/i2c-adapter\/i2c-1\/new_device<\/pre>\n<p>Cette commande doit &#8220;notifier&#8221; au syst\u00e8me la pr\u00e9sence du composant. D\u00e8s lors il est possible de consulter l&#8217;heure et la date contenue dans le module en faisant un :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo hwclock<\/pre>\n<p>Cela devrait d\u00e8s lors afficher une date et une heure. Si vous n&#8217;avez jamais utilis\u00e9 le module, celle ci sera probablement incorrecte. On pourra alors la r\u00e9gler.<\/p>\n<h3>D\u00e9finir la date du syst\u00e8me depuis internet et l&#8217;enregistrer dans le DS3231<\/h3>\n<p>Avant tout assurons nous que les donn\u00e9es du syst\u00e8me sont correctes, en v\u00e9rifiant la &#8220;timezone&#8221; (fuseau horaire) :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo dpkg-reconfigure tzdata<\/pre>\n<p>Choisissez bien le bon continent et la bonne zone. Vous pouvez v\u00e9rifier la date et l&#8217;heure du syst\u00e8me via la commande\u00a0 <strong>date<\/strong>. Lorsque celle ci est d\u00e9finie correctement, vous pourrez alors \u00e9crire la valeur actuelle du syst\u00e8me en utilisant la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo hwclock -w<\/pre>\n<h3>D\u00e9finir la date du syst\u00e8me manuellement et l&#8217;enregistrer dans le DS3231<\/h3>\n<p>Si votre Raspberry pi n&#8217;a pas acc\u00e8s \u00e0 internet pour se synchroniser \u00e0 une horloge pr\u00e9cise, vous pouvez toujours utiliser la commande suivante pour d\u00e9finir une date arbitraire\u00a0(ici le 31 Aout 2015, \u00e0 13h15:00s) :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo date -s &quot;Aug 31 2015 13:15:00&quot;<\/pre>\n<p>Vous pourrez alors utiliser sudo hwclock -w pour d\u00e9finir la date et l&#8217;heure sur le module RTC \u00e0 partir de cette heure d\u00e9finie pour le syst\u00e8me. Notez bien que la commande pr\u00e9c\u00e9dente d\u00e9finit la date et l&#8217;heure du syst\u00e8me au moment de la commande, mais que d\u00e8s lors la valeur \u00e9volue normalement. Il n&#8217;est donc pas obligatoire d&#8217;effectuer les deux commandes \u00e0 la suite de fa\u00e7on tr\u00e8s rapide. En revanche si vous eteignez\/red\u00e9marrez le Raspberry pi, il est possible que la valeur qu&#8217;il aie en m\u00e9moire ne soit plus correcte.<\/p>\n<p>&nbsp;<\/p>\n<h2>Configuration du syst\u00e8me pour utiliser automatiquement le module RTC DS3231<\/h2>\n<p>Nous avons donc pu d\u00e9finir la date et l&#8217;heure du DS3231. Voyons maintenant comment configurer le Raspberry pi pour qu&#8217;il utilise ce module \u00e0 chaque d\u00e9marrage pour d\u00e9finir l&#8217;heure.<\/p>\n<p>En effet, si nous red\u00e9marrons maintenant, il faudra refaire &#8220;<strong>echo ds3231 0x68 &gt; \/sys\/class\/i2c-adapter\/i2c-1\/new_device<\/strong>&#8221; avant de pouvoir utiliser le module (sinon le <strong>sudo hwclock<\/strong> ne fonctionne pas).<\/p>\n<p>Pour circonvenir \u00e0 ce probl\u00e8me, nous allons modifier le fichier \/etc\/rc.local via la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo nano \/etc\/rc.local<\/pre>\n<p>Nous ajouterons \u00e0 ce fichier les deux lignes suivantes avant la ligne contenant &#8220;<em><strong>exit 0<\/strong><\/em>&#8221; :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\necho ds3231 0x68 &gt; \/sys\/class\/i2c-adapter\/i2c-1\/new_device\r\nhwclock -s\r\n<\/pre>\n<p>On pourra alors d\u00e9sactiver le service <a href=\"https:\/\/packages.debian.org\/unstable\/main\/fake-hwclock\"><strong>fake-hwclock<\/strong><\/a> qui tente de reproduire le fonctionnement d&#8217;une horloge temps r\u00e9el quand on en dispose pas, via la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo update-rc.d fake-hwclock disable<\/pre>\n<p>On pourra \u00e9galement dans ce contexte d\u00e9sactiver le service ntp, qui synchronise l&#8217;heure locale avec celle d&#8217;un serveur de temps :<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">&lt;code class=&quot;bash functions&quot;&gt;sudo&lt;\/code&gt; &lt;code class=&quot;bash plain&quot;&gt;update-rc.d ntp disable<\/pre>\n<p>&nbsp;<\/p>\n<p>Si par la suite on souhaite synchroniser la date et l&#8217;heure du syst\u00e8me avec celle de serveurs de temps, on pourra utiliser la commande suivante :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">sudo ntpd -qg<\/pre>\n<p>Il est alors toujours possible d&#8217;\u00e9crire la valeur obtenue dans l&#8217;horloge temps r\u00e9el en utilisant la commande <strong>sudo hwclock -w<\/strong>.<\/p>\n<h2>Conclusions<\/h2>\n<p>Ce module compact permet donc d&#8217;ajouter une horloge temps r\u00e9el au Raspberry pi \u00e0 bas co\u00fbt. Elle est relativement pr\u00e9cise, avec <a href=\"http:\/\/jeelabs.org\/2012\/01\/21\/precision-time-anyone\/\">une d\u00e9viation maximale d&#8217;environ 1 seconde par semaine<\/a>, soit 1 minute par an. Il s&#8217;agit du pire des cas, car la d\u00e9viation peut aller dans les deux sens, donc bien souvent des d\u00e9viations successives s\u2019annuleront.\u00a0 Ce module est significativement plus pr\u00e9cis que le DS1307 qui fut tr\u00e8s populaire. Toutefois vu les prix de ces DS3231, autant s&#8217;en servir.<\/p>\n<p>Le module que j&#8217;ai utilis\u00e9 provient de chine, et jusqu&#8217;ici je n&#8217;ai eu aucun soucis avec. Dans le cas contraire, je signalerai toute d\u00e9faillance sur ce blog.<\/p>\n<p>Ce module permet donc au Raspberry pi de garder une trace pr\u00e9cise du temps, ce qui pourra servir dans un projet embarqu\u00e9 (<a href=\"http:\/\/nagashur.com\/blog\/2015\/08\/17\/raspberry-pi-mobile-lipo-un-systeme-autonome-et-rechargeable-a-bonne-autonomie\/\">comme notre Raspberry pi mobile, sur batterie par exemple<\/a>) sans acc\u00e8s \u00e0 internet. Par exemple, pour faire des photos en pleine nature, ou prendre des mesures. Dans tous les cas, on disposera d&#8217;une date et d&#8217;une heure pr\u00e9cise pour dater les photos ou mesures.<\/p>\n<p>Si toutefois cela ne suffisait pas, il faudrait s&#8217;orienter vers des syst\u00e8mes plus complexes, tels que les <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Horloge_atomique\">horloges atomiques,<\/a> par exemple <a href=\"http:\/\/freqelec.com\/rb_osc_fe5680a.html\">celles au rubidium<\/a>, mais ce sont des appareils plus gros et consommateurs d&#8217;\u00e9nergie, qui serviront pour des mesures ultra pr\u00e9cises.<\/p>\n<h3>Lecture suppl\u00e9mentaire<\/h3>\n<p>Voici quelques liens si vous souhaitez approfondir le sujet :<\/p>\n<ul>\n<li><a href=\"http:\/\/www.drewkeller.com\/blog\/adding-hardware-clock-raspberry-pi-ds3231\">Un tutoriel en Anglais sur l&#8217;installation du DS3231;<\/a><\/li>\n<li><a href=\"http:\/\/www.drewkeller.com\/blog\/adding-hardware-clock-raspberry-pi-ds3231\">un autre tutoriel an Anglais sur le m\u00eame sujet, (les commentaires parlent de certains probl\u00e8mes potentiels)<\/a>;<\/li>\n<li><a href=\"https:\/\/nicegear.co.nz\/blog\/using-an-i2c-real-time-clock-rtc-with-a-raspberry-pi\/\">encore un tutoriel en anglais, avec une grosse discussion dans les commentaires, \u00e0 voir en cas de probl\u00e8me<\/a>;<\/li>\n<li><a href=\"https:\/\/packages.debian.org\/unstable\/main\/fake-hwclock\">la documentation du service fake-hwclock<\/a>;<\/li>\n<li><a href=\"https:\/\/learn.adafruit.com\/adafruits-raspberry-pi-lesson-4-gpio-setup\/configuring-i2c\">configuration de l&#8217;I2C (tutoriel en Anglais, Adafruit)<\/a>;<\/li>\n<li><a href=\"http:\/\/linux.die.net\/man\/8\/hwclock\">la manpage de la commande hwclock<\/a>.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le Raspberry pi ne dispose pas de module RTC (Real Time Clock, horloge en temps r\u00e9el), et ne peut donc pas garder une trace pr\u00e9cise du temps \u00e9coul\u00e9 sans avoir recours \u00e0 une synchronisation sur un serveur de temps (NTP). Cela n&#8217;est pas toujours possible, notamment pour des projets ou le Raspberry Pi n&#8217;est pas [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1402,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":""},"categories":[324,168,323,335],"tags":[343,422,421,415,160,417,420,201,427,426,425,401,419,424,154,156,416,418,423],"jetpack_featured_media_url":"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766.jpg","jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DS3231 Raspberry pi RTC : ajouter une horloge temps r\u00e9el I2C - Alitest - Nagashur<\/title>\n<meta name=\"description\" content=\"DS3231 Raspberry pi RTC : ajouter une horloge temps r\u00e9el (RTC) au Raspberry pi par le bus I2C via le module DS3231.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DS3231 Raspberry pi RTC : ajouter une horloge temps r\u00e9el I2C - Alitest - Nagashur\" \/>\n<meta property=\"og:description\" content=\"DS3231 Raspberry pi RTC : ajouter une horloge temps r\u00e9el (RTC) au Raspberry pi par le bus I2C via le module DS3231.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/\" \/>\n<meta property=\"og:site_name\" content=\"Nagashur\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-31T17:59:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-31T18:27:12+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"802\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@audreyrobinel\" \/>\n<meta name=\"twitter:site\" content=\"@audreyrobinel\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/nagashur.com\/blog\/#website\",\"url\":\"http:\/\/nagashur.com\/blog\/\",\"name\":\"Nagashur\",\"description\":\"raspi et arduino FTW :)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/nagashur.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/#primaryimage\",\"inLanguage\":\"fr-FR\",\"url\":\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766.jpg\",\"width\":900,\"height\":802,\"caption\":\"DS3231 Raspberry pi RTC - pinout\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/#webpage\",\"url\":\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/\",\"name\":\"DS3231 Raspberry pi RTC : ajouter une horloge temps r\\u00e9el I2C - Alitest - Nagashur\",\"isPartOf\":{\"@id\":\"http:\/\/nagashur.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/#primaryimage\"},\"datePublished\":\"2015-08-31T17:59:40+00:00\",\"dateModified\":\"2015-08-31T18:27:12+00:00\",\"author\":{\"@id\":\"http:\/\/nagashur.com\/blog\/#\/schema\/person\/11a329fa33df4e94444716624beb8186\"},\"description\":\"DS3231 Raspberry pi RTC : ajouter une horloge temps r\\u00e9el (RTC) au Raspberry pi par le bus I2C via le module DS3231.\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/nagashur.com\/blog\/2015\/08\/31\/ds3231-raspberry-pi-rtc-ajouter-une-horloge-temps-reel-i2c-alitest\/\"]}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/nagashur.com\/blog\/#\/schema\/person\/11a329fa33df4e94444716624beb8186\",\"name\":\"sky99\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6yqc2-mB","jetpack-related-posts":[{"id":1924,"url":"http:\/\/nagashur.com\/blog\/2016\/10\/20\/wiki-installer-module-rtc-ds3231-raspberry-pi\/","url_meta":{"origin":1401,"position":0},"title":"Wiki : installer un module RTC DS3231 sur le Raspberry pi","date":"20 octobre 2016","format":"link","excerpt":"Le Raspberry pi ne dispose pas de module RTC lui permettant de garder une mesure pr\u00e9cise du temps \u00e9coul\u00e9. C'est la raison pour laquelle on peut lui ajouter un module RTC, comme le DS3231, et ainsi permettre de garder une heure correcte, m\u00eame sans r\u00e9seau et sans synchronisation NTP. Je\u2026","rel":"","context":"Dans &quot;annonces&quot;","img":{"alt_text":"DS3231 brochage et connexion","src":"https:\/\/i0.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/08\/DS3231_bottom_4766_pinout.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":923,"url":"http:\/\/nagashur.com\/blog\/2015\/04\/16\/installation-et-utilisation-du-module-camera-du-raspberry-pi\/","url_meta":{"origin":1401,"position":1},"title":"Installation et utilisation du module camera du Raspberry Pi","date":"16 avril 2015","format":false,"excerpt":"Un nouveau tutoriel est en ligne, sur l'installation et la configuration du module camera sur un Raspberry Pi. Il est disponible sur le Wiki, dans la section raspberry pi. Le module camera co\u00fbte environ 25$, et est capable de capturer des images en 5 m\u00e9ga-pixels, mais \u00e9galement des vid\u00e9os jusqu'\u00e0\u2026","rel":"","context":"Dans &quot;Raspberry Pi&quot;","img":{"alt_text":"Un Raspberry Pi mod\u00e8le B avec un module camera.","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/04\/rpiBwithCameraModule_800px_4508.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":653,"url":"http:\/\/nagashur.com\/blog\/2013\/03\/27\/ajouter-des-gpio-au-raspberry-pi-en-utilisant-une-puce-mcp23017-ou-23008\/","url_meta":{"origin":1401,"position":2},"title":"Ajouter des GPIO au Raspberry Pi en utilisant une puce MCP23017 ou 23008","date":"27 mars 2013","format":false,"excerpt":"Si le nombre de GPIO disponibles sur le Raspberry Pi ne vous convient pas, pas d'inqui\u00e9tude, il est possible d'en rajouter. La puce\u00a0MCP23017 permet\u00a0d'ajouter 16 GPIO , et la puce\u00a0MCP23008 permet d'en rajouter 8. Dans les deux cas, ces puces se connectent au Raspberry Pi sur des GPIO \"sp\u00e9ciaux\",\u00a0d\u00e9di\u00e9s au\u2026","rel":"","context":"Dans &quot;composants&quot;","img":{"alt_text":"puce MCP23017, cr\u00e9dits photo Adafruit","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/03\/MCP23017_adafruit.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":921,"url":"http:\/\/nagashur.com\/blog\/2015\/04\/14\/tutoriels-raspberry-pi\/","url_meta":{"origin":1401,"position":3},"title":"Liste de tutoriels Raspberry pi sur le wiki","date":"14 avril 2015","format":false,"excerpt":"J'ai commenc\u00e9 \u00e0 porter les tutoriels Raspberry Pi sur le wiki. Je remets donc en forme, corrige, actualise et am\u00e9liore les anciens tutoriels, tout en ajoutant de nouvelles ressources. Si vous \u00eates donc int\u00e9ress\u00e9s par le Raspberry Pi, et vous demandez comment r\u00e9aliser une chose en particulier, n'h\u00e9sitez pas \u00e0\u2026","rel":"","context":"Dans &quot;annonces&quot;","img":{"alt_text":"wiki.nagashur.com : section raspi","src":"https:\/\/i0.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2015\/04\/wiki.nagashur_section_raspi.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":543,"url":"http:\/\/nagashur.com\/blog\/2013\/01\/01\/controler-une-led-depuis-les-ports-gpio-du-raspberry-pi\/","url_meta":{"origin":1401,"position":4},"title":"Contr\u00f4ler une LED depuis les GPIO du Raspberry PI","date":"1 janvier 2013","format":false,"excerpt":"Un des grands int\u00e9r\u00eats du Raspberry pi est qu'il dispose de GPIO utilisables comme entr\u00e9e ou sortie afin de lire des capteurs ou commandes des syst\u00e8mes. Nous nous verrons ici comment contr\u00f4ler les GPIO du Raspberry pi configur\u00e9s en mode sorte, \u00e0 travers un exemple concret ou nous commanderons une\u2026","rel":"","context":"Dans &quot;\u00e9lectronique&quot;","img":{"alt_text":"LED de 5mm : rouge, jaune, verte, orange, bleue, blanche et infrarouge","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/01\/LEDs_5mm_4755_800px.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1939,"url":"http:\/\/nagashur.com\/blog\/2017\/06\/25\/bme280-sur-raspberry-pi-temperature-pression-et-humidite-en-i2c\/","url_meta":{"origin":1401,"position":5},"title":"BME280 sur Raspberry pi :  temp\u00e9rature, pression et humidit\u00e9 en I2C","date":"25 juin 2017","format":false,"excerpt":"Le BME280 est le successeur du BMP185 et du BMP85. Ce composant permet de mesurer la temp\u00e9rature, la pression atmosph\u00e9rique et l'hygrom\u00e9trie (taux d'humidit\u00e9 dans l'air). La communication avec ce composant passe par l'omnipr\u00e9sent et tr\u00e8s pratique bus I2C. Nous verrons ici comment utiliser le BME280 sur Raspberry pi. La\u2026","rel":"","context":"Dans &quot;capteurs&quot;","img":{"alt_text":"bme280 de l'arri\u00e8re (c\u00f4t\u00e9 oppos\u00e9 au capteur)","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2017\/04\/bme280_back_7032.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts\/1401"}],"collection":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/comments?post=1401"}],"version-history":[{"count":0,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts\/1401\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/media\/1402"}],"wp:attachment":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/media?parent=1401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/categories?post=1401"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/tags?post=1401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}