<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Raspberry Pi &#8211; GymnasieLaboratoriet</title>
	<atom:link href="https://gymlab.dk/category/elektronik/raspberry-pi/feed/" rel="self" type="application/rss+xml" />
	<link>https://gymlab.dk</link>
	<description></description>
	<lastBuildDate>Tue, 30 Jul 2019 09:28:33 +0000</lastBuildDate>
	<language>da-DK</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://gymlab.dk/wp-content/uploads/2015/06/cropped-10346051_1469495819954469_231841563154319278_n-32x32.jpg</url>
	<title>Raspberry Pi &#8211; GymnasieLaboratoriet</title>
	<link>https://gymlab.dk</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Mikroskop i nyt lys</title>
		<link>https://gymlab.dk/2017/05/mikroskop-i-nyt-lys/</link>
		
		<dc:creator><![CDATA[rkw]]></dc:creator>
		<pubDate>Sat, 27 May 2017 21:15:26 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Biologi]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<guid isPermaLink="false">http://gymlab.dk/?p=1628</guid>

					<description><![CDATA[Jeg har opgraderet et gammelt lys-mikroskop med et digitalt kamera og en Raspberry Pi zero W (RPi 0w). Der findes nok adaptere, som kan sætte en smartphone på mikroskopet eller en forstørrende linse direkte på smartphonens kamera. Så hvorfor sætte &#8230; <a href="https://gymlab.dk/2017/05/mikroskop-i-nyt-lys/">Læs resten <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<h2>Jeg har opgraderet et gammelt <strong>lys-mikroskop</strong> med et digitalt kamera og en Raspberry Pi zero W (RPi 0w).</h2>
<h2>Der findes nok adaptere, som kan sætte en smartphone på mikroskopet eller en forstørrende linse direkte på smartphonens kamera. Så hvorfor sætte en Raspberry Pi med kamera på mikroskopet?</h2>
<h2>Hvorfor? <strong>Fordi jeg kan!</strong>, sekundært fordi Pi er en billig computer med wifi, som børnene nemt kan se skærmbilleder fra.</h2>
<h2>Lysmikroskopet fik lys gennem en ekstern glødelampe, som skulle lyse på et lille spejl under mikroskopet. Spejlet har jeg pillet af og erstattet med en hvid <strong>LED</strong>, serieforbundet til en 1kOhm modstand. LED&#8217;en er sat fast med gaffa.</h2>
<h2>Blænden på mikroskopet var rustet fast, den har jeg erstattet med et potentiometer (variabel modstand), som kan skue op og ned for lysstyrken på LED&#8217;en.</h2>
<h2>Her viser Raspberry Pi en af sine svagheder. Der er ingen analoge indgange til at modtage signalet fra potentiometer. Jeg kunne måske finde en løsning med noget PWM.</h2>
<h2>I stedet har jeg forbundet en <strong>Arduino Nano</strong>, som blot får strøm (5V) fra Pi&#8217;en, når denne er tændt. Forsøgte at give strøm fra en GPIO pin, så jeg kunne tænde og slukke Nano&#8217;en, men Pi&#8217;ens pins giver åbenbart kun 3,3V, hvilket er for lidt til en Nano.</h2>
<h2>Raspberry Pi&#8217;en bor i en kasse, som egentlig er til en Arduino Uno, men som passer godt i størrelse til Pi&#8217;en. Den er sat fast på mikroskopet med <strong>velcro</strong> og en plastikstrip, og er forbundet til et kamera, som startes fra et python-script, modificeret herfra: <a href="http://www.stuffaboutcode.com/2013/09/raspberry-pi-run-raspivid-with-python.html">http://www.stuffaboutcode.com/2013/09/raspberry-pi-run-raspivid-with-python.html</a></h2>
<h2>På billederne ses krystaller af <strong>fint salt</strong>, uden og med baggrundsbelysning fra LED:</h2>
<p><a href="https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_215959.jpg"><img fetchpriority="high" decoding="async" class="alignnone wp-image-1631" src="https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_215959.jpg" alt="" width="301" height="402" srcset="https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_215959.jpg 3120w, https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_215959-225x300.jpg 225w, https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_215959-768x1024.jpg 768w" sizes="(max-width: 301px) 100vw, 301px" /></a>     <a href="https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_220108.jpg"><img decoding="async" class="alignnone wp-image-1632" src="https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_220108.jpg" alt="" width="303" height="404" srcset="https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_220108.jpg 3120w, https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_220108-225x300.jpg 225w, https://gymlab.dk/wp-content/uploads/2017/05/img_20170527_220108-768x1024.jpg 768w" sizes="(max-width: 303px) 100vw, 303px" /></a></p>
<h2><strong>Forbindelser</strong>:</h2>
<div style="direction: ltr;">
<table style="direction: ltr; border-collapse: collapse; border: 1pt solid #a3a3a3; height: 197px;" title="" border="1" summary="" width="491" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="vertical-align: top; width: 1.2402in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;"><span style="font-weight: bold;">RPi 0W</span></h4>
</td>
<td style="vertical-align: top; width: 1.3319in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;"><span style="font-weight: bold;">Arduino Nano</span></h4>
</td>
<td style="vertical-align: top; width: 1.159in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;"> <strong>Andet</strong></h4>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 1.2402in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">5V (GPIO4)</h4>
</td>
<td style="vertical-align: top; width: 1.3125in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">Vin</h4>
</td>
<td style="vertical-align: top; width: 1.1784in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4></h4>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 1.2597in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">GND (GPIO6)</h4>
</td>
<td style="vertical-align: top; width: 1.3125in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">GND</h4>
</td>
<td style="vertical-align: top; width: 1.159in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4> potentiometer, LED</h4>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 1.2402in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4></h4>
</td>
<td style="vertical-align: top; width: 1.3125in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">A3</h4>
</td>
<td style="vertical-align: top; width: 1.3104in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">potentiometer</h4>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 1.2402in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4></h4>
</td>
<td style="vertical-align: top; width: 1.3125in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">9</h4>
</td>
<td style="vertical-align: top; width: 1.1784in; padding: 4pt; border: 1pt solid #A3A3A3;">
<h4 style="margin: 0; font-family: Calibri; font-size: 14pt;">LED</h4>
</td>
</tr>
</tbody>
</table>
</div>
<h2><a href="https://gymlab.dk/wp-content/uploads/2017/05/rpi_zero_io_pinouts.jpg"><img decoding="async" class="alignnone wp-image-1636" src="https://gymlab.dk/wp-content/uploads/2017/05/rpi_zero_io_pinouts.jpg" alt="" width="380" height="273" /></a><br />
<strong>Python-script på Raspberry Pi 0W:</strong></h2>
<pre>import os
import subprocess
import threading
import time

RASPIVIDCMD = ["raspivid"]
TIMETOWAITFORABORT = 0.5

#class for controlling the running and shutting down of raspivid
class RaspiVidController(threading.Thread):
    def __init__(self, timeout, preview, otherOptions=None):
        threading.Thread.__init__(self)
        
        #setup the raspivid cmd
        self.raspividcmd = RASPIVIDCMD

        #add file path, timeout and preview to options
        self.raspividcmd.append("-t")
        self.raspividcmd.append(str(timeout))
        if preview == False: self.raspividcmd.append("-n")

        #if there are other options, add them
        if otherOptions != None:
            self.raspividcmd = self.raspividcmd + otherOptions

        #set state to not running
        self.running = False
        
    def run(self):
        #run raspivid
        raspivid = subprocess.Popen(self.raspividcmd)
        
        #loop until its set to stopped or it stops
        self.running = True
        while(self.running and raspivid.poll() is None):
            time.sleep(TIMETOWAITFORABORT)
        self.running = False
        
        #kill raspivid if still running
        if raspivid.poll() == True: raspivid.kill()

    def stopController(self):
        self.running = False

#test program
if __name__ == '__main__':

    #create raspivid controller
    vidcontrol = RaspiVidController(100000, True, ["-f"])

    try:
        print("Starting raspivid controller")
        #start up raspivid controller
        vidcontrol.start()
        #wait for it to finish
        while(vidcontrol.isAlive()):
            time.sleep(0.5)

    #Ctrl C
    except KeyboardInterrupt:
        print ("Cancelled")

    #Error
    except:
        print ("Unexpected error:"), sys.exc_info()[0]

        raise

    #if it finishes or Ctrl C, shut it down
    finally: 
        print ("Stopping raspivid controller")
        #stop the controller
        vidcontrol.stopController()
        #wait for the tread to finish if it hasn't already
        vidcontrol.join()
        
    print ("Done")
</pre>
<h2><strong>Arduino kode:</strong></h2>
<pre>int ledPin = 9;      // LED connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 500;         // variable to store the read value

void setup(){
  pinMode(ledPin, OUTPUT);   // sets the pin as output
}

void loop()
{
  val = analogRead(analogPin);   // read the input pin
  analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}

</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Streaming til YouTube</title>
		<link>https://gymlab.dk/2017/03/streaming-til-youtube/</link>
		
		<dc:creator><![CDATA[rkw]]></dc:creator>
		<pubDate>Sat, 18 Mar 2017 21:46:33 +0000</pubDate>
				<category><![CDATA[Maker og DIY]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">http://gymlab.dk/?p=1588</guid>

					<description><![CDATA[En gang imellem har jeg fundet det nyttigt, at streame. Fx slippe for at overføre timers video fra harddisk til web, følge en proces (forsøg eller 3D-print), vise et demo-forsøg på projektoren, virtuel undervisning eller transmittere en begivenhed fx åbent &#8230; <a href="https://gymlab.dk/2017/03/streaming-til-youtube/">Læs resten <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>En gang imellem har jeg fundet det nyttigt, at streame. Fx slippe for at overføre timers video fra harddisk til web, følge en proces (forsøg eller 3D-print), vise et demo-forsøg på projektoren, virtuel undervisning eller transmittere en begivenhed fx åbent hus.</p>
<p>Dette er ikke en komplet guide, da teksten i så faldt, ville blive temmelig omfattende.</p>
<p><strong>Forsøg og begivenheder:</strong><br />
App&#8217;en &#8220;Live Now&#8221; streamer nemt fra Ipad til Youtube. En adresse og en kode, skal hentes fra videoadministration i YouTube og ind i app&#8217;en, og så håber man, at det ikke er malware -det har det ikke været endnu.<br />
<a href="https://gymlab.dk/wp-content/uploads/2017/03/youtube.png"><img loading="lazy" decoding="async" class="wp-image-1589 aligncenter" src="https://gymlab.dk/wp-content/uploads/2017/03/youtube.png" alt="" width="461" height="137" srcset="https://gymlab.dk/wp-content/uploads/2017/03/youtube.png 650w, https://gymlab.dk/wp-content/uploads/2017/03/youtube-300x89.png 300w" sizes="auto, (max-width: 461px) 100vw, 461px" /></a> (Serverwebadressen er formentlig generisk, men streamnøglen er højst personlig)</p>
<p>YouTube-streamet kan indstilles til privat, skjult eller offentligt, og indlejres på fx en hjemmeside.</p>
<p><strong>Fjernundervisning:</strong><br />
Jeg har i den forbindelse brugt OBS studio til at have mit eget skærmbillede, webcam og lyd på streamet. Og vil prøve at tilslutte en anden monitor og køre med udvidede skærme, hvor jeg kan styre OBS og Lectio m.m. på den ene, og streame den anden.</p>
<p>Jeg brugte YouTubes indbyggede chat-funktion med eleverne. Som så ofte er det dem, der har mindst brug for hjælp, som skriver mest.</p>
<p><strong>Raspberry Pi:</strong><br />
En tredje mulighed for streaming er via Raspberry Pi 3. Jeg sloges nogle uger med den for at få installeret styresystem (Rasberian via NOOBS) og få skærmbillede. Et problem var, at en HDMI-adapter til VGA, ikke er et entydigt produkt, og jeg måtte igennem tre, før systemet nogle gange valgte en opløsning, så jeg kunne få et skærmbillede.</p>
<p>Derefter prøvede jeg lidt med styresystemet motioneyeOS, som er særligt til streaming. Det virkede ok, indtil jeg, med venners hjælp, fandt frem til hvordan IP-strukturen er sat op herhjemme. Min PI får ikke en unik IP-adresse, som jeg kan tilgå udefra.</p>
<p>Men jeg tænkte, at det måtte være muligt at sende mit video-signal til en server fx via OBS studio, og derfra sende det ud på www.</p>
<p>PI&#8217;en skal sættes op med trådløst netværk, kamera og ffmeg, som jeg mener fungerer a la OBS, og konverterer videoen og sender streamet videre til YouTube. Framerate, vinkel, m.m. kan indstilles. Der er dog ingen lyd med i streamet.</p>
<p><a href="https://gymlab.dk/wp-content/uploads/2017/03/img_20170318_223611.jpg"><img loading="lazy" decoding="async" class="wp-image-1591 aligncenter" src="https://gymlab.dk/wp-content/uploads/2017/03/img_20170318_223611.jpg" alt="" width="492" height="369" srcset="https://gymlab.dk/wp-content/uploads/2017/03/img_20170318_223611.jpg 4160w, https://gymlab.dk/wp-content/uploads/2017/03/img_20170318_223611-300x225.jpg 300w, https://gymlab.dk/wp-content/uploads/2017/03/img_20170318_223611-768x576.jpg 768w, https://gymlab.dk/wp-content/uploads/2017/03/img_20170318_223611-1024x768.jpg 1024w" sizes="auto, (max-width: 492px) 100vw, 492px" /></a></p>
<p>Dertil har fundet den autoexecute-fil, som Raspian starter op på, og tilføjet en kommando, så streamet starter efter boot-up. </p>
<p>Pointen er at jeg ender med en PI, som bare skal have strøm fra en mobiloplader eller lille powerbank, hvorefter den begynder at streame video via det trådløse netværk til YouTube <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Object Caching 5/64 objects using Disk
Page Caching using Disk: Enhanced 

Served from: gymlab.dk @ 2026-07-28 23:47:54 by W3 Total Cache
-->