{"id":821,"date":"2015-01-13T12:23:05","date_gmt":"2015-01-13T11:23:05","guid":{"rendered":"http:\/\/vejr.tomas.dk\/ps\/?p=821"},"modified":"2015-01-13T12:23:05","modified_gmt":"2015-01-13T11:23:05","slug":"min-raspberry-pi-b-med-lcd","status":"publish","type":"post","link":"https:\/\/tomas.dk\/ps\/min-raspberry-pi-b-med-lcd\/","title":{"rendered":"Min Raspberry Pi B+ med lcd"},"content":{"rendered":"<p>I julen k\u00f8bte jeg en raspberry Pi B+. Jeg har nu rodet lidt med den og f\u00e5et den til at k\u00f8re h\u00e6derligt.<\/p>\n<figure id=\"attachment_823\" aria-describedby=\"caption-attachment-823\" style=\"width: 474px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/vejr.tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay.jpg\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"823\" data-permalink=\"https:\/\/tomas.dk\/ps\/min-raspberry-pi-b-med-lcd\/raspdisplay\/\" data-orig-file=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay.jpg\" data-orig-size=\"1200,755\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;4.5&quot;,&quot;credit&quot;:&quot;Tomas Jensen&quot;,&quot;camera&quot;:&quot;NIKON D600&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1421106237&quot;,&quot;copyright&quot;:&quot;Tomas Jensen&quot;,&quot;focal_length&quot;:&quot;65&quot;,&quot;iso&quot;:&quot;800&quot;,&quot;shutter_speed&quot;:&quot;0.01&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"Raspberry Pi B+ med lcd\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Raspberry Pi B+ med lcd&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay-300x189.jpg\" data-large-file=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay-1024x644.jpg\" class=\"size-large wp-image-823\" src=\"http:\/\/vejr.tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay-1024x644.jpg\" alt=\"Raspberry Pi B+ med lcd\" width=\"474\" height=\"298\" data-wp-pid=\"823\" srcset=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay-1024x644.jpg 1024w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay-150x94.jpg 150w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay-300x189.jpg 300w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspDisplay.jpg 1200w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><figcaption id=\"caption-attachment-823\" class=\"wp-caption-text\">Raspberry Pi B+ med lcd<\/figcaption><\/figure>\n<p>Den er blevet overklokket til 1GHz og der er sat lcd display (HD44780) p\u00e5. Yderligere har jeg f\u00e5et wifi til at virke.<\/p>\n<figure id=\"attachment_824\" aria-describedby=\"caption-attachment-824\" style=\"width: 474px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/vejr.tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben.jpg\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"824\" data-permalink=\"https:\/\/tomas.dk\/ps\/min-raspberry-pi-b-med-lcd\/raspaaben\/\" data-orig-file=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben.jpg\" data-orig-size=\"1200,930\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;9&quot;,&quot;credit&quot;:&quot;Tomas Jensen&quot;,&quot;camera&quot;:&quot;NIKON D600&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1421106503&quot;,&quot;copyright&quot;:&quot;Tomas Jensen&quot;,&quot;focal_length&quot;:&quot;65&quot;,&quot;iso&quot;:&quot;200&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"Raspberry pi indefra\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Raspberry pi indefra&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-300x233.jpg\" data-large-file=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-1024x794.jpg\" class=\"size-large wp-image-824\" src=\"http:\/\/vejr.tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-1024x794.jpg\" alt=\"Raspberry pi indefra\" width=\"474\" height=\"368\" data-wp-pid=\"824\" srcset=\"https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-1024x794.jpg 1024w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-150x116.jpg 150w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-300x233.jpg 300w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben-800x620.jpg 800w, https:\/\/tomas.dk\/ps\/wp-content\/uploads\/2015\/01\/RaspAaben.jpg 1200w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><figcaption id=\"caption-attachment-824\" class=\"wp-caption-text\">Raspberry pi indefra<\/figcaption><\/figure>\n<p>For at f\u00e5 displayet til at virke, har jeg programmeret i perl.<\/p>\n<pre>#!\/usr\/bin\/perl\r\n\r\nuse strict;\r\nuse warnings;\r\n\r\nuse Device::BCM2835;\r\nuse Device::BCM2835::LCD;\r\nuse Sys::Hostname;\r\nuse Net::Interface;\r\nuse Socket;\r\nuse File::Touch;\r\n\r\n# Init display, specifying the GPIO pin connections \r\nmy $lcd = Device::BCM2835::LCD-&gt;new();\r\n\r\nmy $inetaddr;\r\nmy $lockfile = \"\/tmp\/lcd.locked\";\r\nmy @lock = ($lockfile);\r\nmy $dato;\r\nmy $tid;\r\nmy $host;\r\nmy @raatid;\r\nmy @linier = qw(1 2 3 4);\r\nmy $ip;\r\nmy $int;\r\nmy $lcdlin;\r\nmy $update = 0;\r\n\r\nmy %interfaces = ();\r\n\r\nsub getInterfaces {\r\n my $intRef = shift;\r\n\r\n my @int;\r\n my $ip;\r\n my $iface;\r\n\r\n @int = Net::Interface-&gt;interfaces();\r\n foreach $iface (@int) {\r\n next if ( \"$iface\" eq \"lo\" );\r\n open IP, \"\/sbin\/ip addr show $iface|\" or die \"Kunne ikke udfore \\'ip\\'\\n\";\r\n while (&lt;IP&gt;) {\r\n next if ( ! \/inet \/ );\r\n s\/.*inet (\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\\\/.*\/$1\/;\r\n $$intRef{$iface} = $1;\r\n last;\r\n }\r\n close IP;\r\n }\r\n \r\n}\r\n\r\nunlink $lockfile if ( -e $lockfile);\r\n$lcd-&gt;init (\r\n Display =&gt; 2004,\r\n pin_rs =&gt; &amp;RPI_GPIO_P1_24,\r\n pin_e =&gt; &amp;RPI_GPIO_P1_23,\r\n pin_d4 =&gt; &amp;RPI_GPIO_P1_07,\r\n pin_d5 =&gt; &amp;RPI_GPIO_P1_11,\r\n pin_d6 =&gt; &amp;RPI_GPIO_P1_13,\r\n pin_d7 =&gt; &amp;RPI_GPIO_P1_15,\r\n);\r\n$host = hostname;\r\nwhile ( 1 == 1) {\r\n if ( ! -e $lockfile ) {\r\n # L\u00e5s display\r\n touch(@lock);\r\n \r\n # Find tid, dato, hostnavn\r\n $host = hostname if ($host eq \"raspberry\");\r\n \r\n @raatid = localtime(time);\r\n $tid = sprintf \"%02s:%02s:%02s\", $raatid[2], $raatid[1], $raatid[0];\r\n $dato = sprintf \"%02s\/%02s\/%02s\", $raatid[3], $raatid[4]+1, $raatid[5]-100;\r\n\r\n $linier[0] = sprintf \"%-11s %8s\", $host ,$dato;\r\n $linier[1] = sprintf \" %8s\", $tid;\r\n \r\n $lcd-&gt;SetPos(1, 0);\r\n $lcd-&gt;PutMsg($linier[0]);\r\n $lcd-&gt;SetPos(2, 0);\r\n $lcd-&gt;PutMsg($linier[1]);\r\n $lcdlin = 4;\r\n if ( $update == 0 ) {\r\n %interfaces = ();\r\n getInterfaces(\\%interfaces);\r\n $lcd-&gt;SetPos(3, 0); $lcd-&gt;PutMsg(\" \");\r\n $lcd-&gt;SetPos(4, 0); $lcd-&gt;PutMsg(\" \");\r\n foreach $int ( keys %interfaces ) {\r\n $linier[$lcdlin-1] = sprintf \"%-5s%15s\", \"$int\", $interfaces{$int};\r\n print \"$linier[$lcdlin-1]\\n\";\r\n $lcd-&gt;SetPos($lcdlin, 0);\r\n $lcd-&gt;PutMsg($linier[$lcdlin-1]);\r\n $lcdlin--;\r\n }\r\n }\r\n if ( $update == 15 ) {\r\n $update = 0;\r\n } else {\r\n $update++;\r\n }\r\n \r\n unlink $lockfile if ( -e $lockfile );\r\n }\r\n sleep 1;\r\n}\r\n<\/pre>\n<p>Hvis der findes en fil der hedder <span style=\"color: #0000ff;\">\/tmp\/lcd.locked<\/span>, vil der ikke ske noget p\u00e5 displayet.<\/p>\n<p>Programmet skal udf\u00f8res som root. Enten med sudo eller logget ind som root.<\/p>\n<p>For at f\u00e5 displayet til at virke, skal der indstalleres flere pakker. Et c-lib og to perl-moduler:<br \/>\nlibbcm2835 fra\u00a0<a title=\"bcm2835 lib webside\" href=\"http:\/\/www.airspayce.com\/mikem\/bcm2835\/\" target=\"_blank\">http:\/\/www.airspayce.com\/mikem\/bcm2835\/<\/a><br \/>\nDevice::BCM2835 fra cpan<br \/>\nDevice::BCM2835::LCD ogs\u00e5 fra cpan<\/p>\n<p>I\u00a0Device::BCM2835::LCD er der et par fejl, som nemt rettes.<\/p>\n<pre>I filen \/urs\/local\/share\/perl\/5.14.2\/Device\/LCD.pm er der et par linier der skal rettes.\r\n<span style=\"color: #ff0000;\"><strong>RPI_GPIO_P1_23 11<\/strong><\/span>\r\n<span style=\"color: #ff0000;\"><strong>RPI_GPIO_P1_24 8<\/strong><\/span>\r\n\r\n# init: set up LCD lines.\r\n# Defaults are the \"common\" GPIO pins, and 20x4 screen\r\nsub init {\r\n\u00a0 my $self = shift;\r\n\u00a0 my %defaults = qw(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Display 2004\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pin_rs RPI_GPIO_P1_24\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pin_e RPI_GPIO_P1_23\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pin_d4 RPI_GPIO_P1_07\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pin_d5 RPI_GPIO_P1_11\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pin_d6 RPI_GPIO_P1_13\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pin_d7 RPI_GPIO_P1_15\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 );\r\n\u00a0<strong><span style=\"color: #ff0000;\"> my %args = (%defaults, %_);<\/span><\/strong>\r\n\r\nI afsnitet med initialize the device skal f\u00f8lgende rettes:\r\nDevice::BCM2835::gpio_write($e,0);\u00a0\u00a0\u00a0\u00a0\u00a0 # start with EN low\r\nnibbleToLines(3);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # high nibble 0x03\r\n&amp;strobe_E;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # strobe EN\r\n<span style=\"color: #ff0000;\"><strong>usleep(5000);<\/strong><\/span>\r\nnibbleToLines(3);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # low nibble 0x03\r\n&amp;strobe_E;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # strobe EN\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I julen k\u00f8bte jeg en raspberry Pi B+. Jeg har nu rodet lidt med den og f\u00e5et den til at k\u00f8re h\u00e6derligt. Den er blevet overklokket til 1GHz og der er sat lcd display (HD44780) p\u00e5. Yderligere har jeg f\u00e5et wifi til at virke. For at f\u00e5 displayet til at virke, har jeg programmeret i&hellip; <a class=\"more-link\" href=\"https:\/\/tomas.dk\/ps\/min-raspberry-pi-b-med-lcd\/\">L\u00e6s mere <span class=\"screen-reader-text\">Min Raspberry Pi B+ med lcd<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-821","post","type-post","status-publish","format-standard","hentry","category-teknik","entry"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/posts\/821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/comments?post=821"}],"version-history":[{"count":0,"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/posts\/821\/revisions"}],"wp:attachment":[{"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/media?parent=821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/categories?post=821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tomas.dk\/ps\/wp-json\/wp\/v2\/tags?post=821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}