<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefanfrings+de</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefanfrings+de"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Stefanfrings_de"/>
	<updated>2026-04-10T21:47:23Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entfernungsmessung_mit_Ultraschall&amp;diff=78432</id>
		<title>Entfernungsmessung mit Ultraschall</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entfernungsmessung_mit_Ultraschall&amp;diff=78432"/>
		<updated>2013-09-06T09:53:49Z</updated>

		<summary type="html">&lt;p&gt;Stefanfrings de: Schaltplan vom Spannungsfolger ausgetauscht, war fehlerhaft.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Alexander Starke&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ziel dieses Projektes ist die Realisierung einer Entfernungsmessung mit Ultraschall. Auf das Erläutern eventuell auftauchender Probleme sowie allgemeine Erklärungen wird hier verzichtet, diese Betrachtungen haben bereits [http://www.mikrocontroller.net/mc-project/Pages/Robotik/Sensoren/sensoren.html hier] statt gefunden.&lt;br /&gt;
&lt;br /&gt;
Als Baugruppen werden Standardbauteile verwendet. Als Sender bzw. Empfänger dienen die Module UST-40T bzw. UST-40R, welche man über gängige Elektronik-Versender erhalten kann. Die Frequenzerzeugung für den Sender erfolgt mittels PWM durch einen Mikrocontroller. Die Auswertung des Empfangssignals erfolgt beispielsweise über den AD-Wandler desselben Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
== Variante 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Sender ===&lt;br /&gt;
&lt;br /&gt;
Somit ist der Senderteil an sich einfach, da nur per PWM ein 40kHz-Signal erzeugt werden muss, welches dann auf den Sender gegeben werden kann. Die Signalerzeugung sieht bei mir codetechnisch folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void _40khz_init (void) {&lt;br /&gt;
    TCCR1A = (1&amp;lt;&amp;lt;COM1A1) | (1&amp;lt;&amp;lt;COM1A0) | (1&amp;lt;&amp;lt;WGM11);&lt;br /&gt;
    TCCR1B = (1&amp;lt;&amp;lt;WGM12) | (1&amp;lt;&amp;lt;WGM13) | (1&amp;lt;&amp;lt;CS10);&lt;br /&gt;
    OCR1A = 100;&lt;br /&gt;
    ICR1 = 200;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Funktionsprinzip der obigen Funktion ist im Prinzip identisch mit dem der Funktion zur 36kHz Träger-Erzeugung, welches bereits [http://www.mikrocontroller.net/mc-project/Pages/Robotik/Sensoren/sensoren.html hier]  erklärt wurde. Durch &amp;quot;toggeln&amp;quot; (also An- bzw. Ausschalten) des Datenrichtungsregister-Bits für PB1 kann man nun kurze Ultraschall-Impulse senden.&lt;br /&gt;
&lt;br /&gt;
Es gilt jedoch zu experimentieren, wie man die Sendereichweite auf ein ordentliches Maß bringen könnte. Hierzu ergeben sich theoretisch verschiedene Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
* Man gibt das PWM-Signal direkt auf den Sender, dessen zweiter Pin liegt auf Masse. Er wird nun ständig zwischen 0 und 5V hin und her geschalten. Dies ist die von der Senderstärke her schwächste Variante.&lt;br /&gt;
* Man legt das PWM-Signal an die Basis eines Transistors, welcher kollektorseitig an 12V (Batterie- oder Netzteilspannung) angeschlossen ist. An den Transistor ist mit dem Emitter in Reihe der Sender angeschlossen. Das Prinzip bleibt das selbe wie bei der obigen Variante, nur die Leistungsstärke hat zugenommen.&lt;br /&gt;
* Man versucht ein Wechselsignal zu erzeugen. Hierzu muss auf irgendeine Art und Weise das PWM-Signal des MC invertiert werden. Nun wird an den einen Pin des Senders das normale PWM-Signal gegeben, an den anderen das invertierte Signal. Man erhält so eine Wechselspannung am Sender mit einer Spitze-Spitze-Spannung von etwa 10V. Diese Variante sollte die obigen beiden leistungsmäßig übersteigen.&lt;br /&gt;
* Dasselbe wie im vorigen Beispiel, nur dass zusätzlich noch zwei Treibertransistoren eingefügt werden. Es ergibt sich eine Spitze-Spitze-Spannung von 24V. Ob der Sender diese Spannungen unbeschädigt übersteht gilt es auszutesten :-)&lt;br /&gt;
* Man verwendet einfach zwei Ausgänge des Mikrocontrollers und gibt auf einem Pin das normale Signal aus und auf dem anderen das invertierte Signal. Der Sender sieht so ein Umpolen der Spannung von +5V zu -5V usw.&lt;br /&gt;
&lt;br /&gt;
Die Erzeugung des invertierten Signals kann entweder in Software oder über ein Logik-Gatter erfolgen. Geeignet wären beispielsweise NAND oder NOR. Da ich zufällig noch den Schaltkreis MOS4001 herumliegen habe, werde ich diesen verwenden. Hierbei handelt es sich um einen IC, welcher 4 NOR-Gatter mit je zwei Eingängen beinhaltet. Legt man bei einem NOR an beide Eingänge eine &#039;1&#039;, so ergibt sich am Ausgang eine &#039;0&#039; und umgekehrt. Schematisch sähe der Anschluss des Senders dann so aus:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic_nor.GIF&lt;br /&gt;
&lt;br /&gt;
=== Empfänger ===&lt;br /&gt;
&lt;br /&gt;
Nun zum nicht ganz so einfachen Empfängerteil. Wird ein Signal detektiert, so erhält man an den Klemmen des Empfängers ein relativ schwaches Wechselsignal. Dieses direkt auszuwerten ist nahezu unmöglich, da der AD-Wandler nicht für Wechselwerte geeignet ist sowie das Signal reichlich schwach ist. Es muss also gleichgerichtet werden. Bevor man dies machen kann, muss es verstärkt werden, da über der Gleichrichterdiode sofort wieder etwa 0,7V Flussspannung verloren gehen. Hierfür eignet sich der Schaltkreis TL084. Dieser stellt intern 4 OPVs zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Nun immer der Reihe nach:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Signalverstärkung und Herausfiltern von Störungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Signalverstärkung wird über die beiden angeschlossenen Widerstände vorgenommen und ergibt sich zu V = R2/R1. Der Kondensator C2 über R2 bildet einen Tiefpass, der Kondensator vor R1 einen Hochpass. Somit wurde insgesamt ein Bandpass realisiert, welcher mehr oder weniger selektiv das Nutzsignal (mit 40kHz) verstärkt.&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic_opv1.GIF&lt;br /&gt;
&lt;br /&gt;
An den nicht invertierenden Eingang wird Vcc/2 gelegt, da ein Wechselsignal verstärkt werden soll und keine +/- 5V zur Verfügung stehen. Das Signal ist nun etwa um den Faktor 14 verstärkt.&lt;br /&gt;
       &lt;br /&gt;
&#039;&#039;&#039;2. Erneute Signalverstärkung und Filterung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selbes Funktionsprinzip wie oben. Verstärkung des Signals um den Faktor 21.&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic_opv2.GIF&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Gleichrichtung und Glättung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das nun ausreichend verstärkte Wechselsignal muss zur Auswertung noch gleichgerichtet und geglättet werden. Die Gleichrichtung wird durch eine Diode vorgenommen, die Glättung durch einen Tiefpass.&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic_gleichrichter.GIF&lt;br /&gt;
       &lt;br /&gt;
&#039;&#039;&#039;4. Last but not least...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zuletzt wird das Signal noch auf einen OPV gegeben, welcher als Spannungsfolger geschalten ist. Diese Maßnahme dient lediglich dem Abkoppeln des Signal-Out-Pins von der restlichen Schaltung. Das Signal wird um den Faktor -1 verstärkt.&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/wikifiles/1/10/Op-spannungsfolger2.png&lt;br /&gt;
&lt;br /&gt;
Eine experimenteller Versuchsaufbau hat nun folgende Daten zutage gefördert. Mit ausgeschaltetem Sender liegt am Ausgang der Empfängerschaltung immer eine Spannung von 1,850V an. Diese ist als Offset zu betrachten. Bewegt man nun den Sender über dem Empfänger, so erhält man einen Minimalwert von 1,35V. Dieser ist aufgrund der Richtungswirkung des Senders (Ultraschallkeule) stark positionsabhängig. Typische Werte am Empfängerausgang sind etwa 1,5-1,7V. Alle gemessenen Werte beziehen auf den ersten Punkt zum Thema Senderaufbau, welcher oben bereits dokumentiert wurde. Eine Zuführung des invertierten Signals brachte leider keine wesentliche Verbesserung.&lt;br /&gt;
&lt;br /&gt;
Nachdem der Aufbau soweit geklärt ist, kann sich jetzt an die Programmierung gemacht werden.&lt;br /&gt;
&lt;br /&gt;
=== Programmierung ===&lt;br /&gt;
&lt;br /&gt;
Nachdem Sender und Empfänger nebeneinander auf einer oder mehrerer Platinen angeordnet wurden, kann man sich nun an die Ultraschalldistanzmessung begeben. Zu beachten ist lediglich, dass sich die beiden Gehäuse nicht berühren. Man kann zusätzlich noch etwas Plaste, Metall, o.ä. zwischen ihnen befestigen, um ein direktes Übersprechen möglichst zu verhindern.&lt;br /&gt;
&lt;br /&gt;
Wie die Erzeugung des 40kHz-Signals erfolgt wurde oben bereits angegeben. Nun muss ein kurzer Schallimpuls erzeugt werden. Dieser sollte in etwa 2-3ms lang sein und kann mittels Timer oder delay-Schleife gesteuert werden. Das Prinzip ist trivial, da man einfach den entsprechenden Pin als Ausgang deklariert, kurz wartet und ihn dann wieder als Eingang definiert.&lt;br /&gt;
Da alle Operationen von einem MC ausgeführt werden sollen und der Empfänger die Laufzeit des Signals soundso exakt bestimmen muss, wird ein Timerinterrupt verwendet. Es wird Timer0 verwendet.&lt;br /&gt;
Die Schallgeschwindigkeit beträgt bei Raumtemperatur etwa 344 m/s. Bei einer Pulslänge von 2ms hat die Spitze der Schallwelle bei Beendigung des Impulses bereits 0,68m zurück gelegt. Somit ist der Sensor nur für Distanzen größer 35-40cm geeignet. Sollen geringere Distanzen ausgewertet werden, muss der Schallimpuls entsprechend kürzer gestaltet werden. Je kürzer dieser allerdings gemacht wird, desto größer sollte die Sendeleistung sein, wenn man noch etwas zum Auswerten haben möchte.&lt;br /&gt;
&lt;br /&gt;
Ich habe das ganze mal testweise implementiert und es stellte sich die gewünschte Funktionalität ein. Allerdings sind die Messwerte mit einem gewissen Rauschen unterlegt, so dass sich eine Mehrfachmessung und/oder Mittelwertbildung empfiehlt. Hier nun der [http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic_usart.c Sourcecode].&lt;br /&gt;
&lt;br /&gt;
Das Programm macht im wesentlichen folgendes:&lt;br /&gt;
&lt;br /&gt;
* Bei Tasterdruck wird Schallpuls ausgesendet. (mittels Timer0)&lt;br /&gt;
* Mit Ende des Schallimpulses wird Timer0-Interrupt deaktiviert und Timer2-Interrupt aktiviert.&lt;br /&gt;
* Nun wird mit einer Frequenz von 8MHz/256=31,25kHz abgetastet, also alle 32μs ein neuer AD-Wert aufgenommen.&lt;br /&gt;
* Alle Werte werden in ein Array geschrieben.&lt;br /&gt;
* Nach 400 Werten, also 12,8ms (entspricht einer Distanz von etwa 2,20m) wird Timer2-Interrupt wieder deaktiviert.&lt;br /&gt;
* Nun werden die Daten über den USART ausgegeben und können beispielsweise im Excel visualisiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei auf dem Schreibtisch liegendem Sensor ergab sich für einen Schallimpuls Richtung Decke das folgende Bild:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic.GIF&lt;br /&gt;
&lt;br /&gt;
Nimmt man Datenpunkt 250 als Mitte des Echos an, so ergibt sich eine Signallaufzeit von 250*(1/(8MHz/256))= 8ms. Dies entspricht einer Distanz von s = 0,5*v*t = 0,5*340*0,008 = 1,36m. Addiert man nun noch die 2ms des Impulses dazu (es wird ja erst nach dessen Aussenden mit der Abtastung begonnen), so ergibt sich eine Distanz von 1,7m, welches im Prinzip der exakte Wert ist.&lt;br /&gt;
&lt;br /&gt;
Für einen Impuls von 1ms Länge ergibt sich das folgende Bild:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic2.GIF&lt;br /&gt;
&lt;br /&gt;
Man sieht, dass das Echo nun nur noch 1ms lang ist, eine Auswertung kann aber noch vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Als Mögliche Verbesserungen fallen mir diverse Punkte ein. Beispielsweise könnte man eine feinere Abtastung des empfangenen Signals vornehmen. Dann muss angefangen werden, zwischen Echos und dem real reflektierten Signal zu unterscheiden. Auch kann man sicherlich an der Schaltung (Verstärkungen) und dem allgemeinen Layout noch Optimierungen vornehmen.&lt;br /&gt;
Sobald ich entsprechende Fortschritte gemacht habe, werden diese natürlich hier veröffentlicht.&lt;br /&gt;
&lt;br /&gt;
== Variante 2 ==&lt;br /&gt;
&lt;br /&gt;
Alternativ habe ich noch eine zweite Variante zur Distanzmessung anzubieten. Diese basiert nicht auf einer dauernden AD-Wandlung des empfangenen Signals sondern ähnelt mehr einem Schwellwert-Schalter.&lt;br /&gt;
&lt;br /&gt;
Das Signal wird zunächst mit Hilfe von zwei Verstärkerstufen (OPVs) verstärkt. Danach folgt ein dritter OPV, dessen Widerstand am Eingang als Poti realisiert ist(50K). Der Widerstand im Rückkopplungszweig hat einen Wert von 50k. Es lässt sich somit eine Verstärkung zwischen 1 und 50 einstellen. Der Ausgang des 3. OPV geht direkt auf die Basis eines npn-Transistors. Zusätzlich wird noch mittels eines weiteren Potentiometers eine Offsetspannung auf die Basis gegeben, um das Umschalten zu unterstützen. Kommen als zu der Offsetspannung noch die Signalspitzen, so schaltet dieser durch. Diesen Vorgang kann man mittels eines angeschlossenen Mikrocontrollers detektieren.&lt;br /&gt;
Wiederum ergibt sich die Distanz aus der Zeit zwischen dem Senden des Impulses und dem Schalten des Transistors.&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic_var2.GIF&lt;br /&gt;
&lt;br /&gt;
Die Senderoutine kann im Prinzip komplett von Variante 1 übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Mit dem Start der Senderoutine wird gleichzeitig ein Timer gestartet, in welchem eine Zählvariable inkrementiert wird. Trifft der Impuls ein (Erkennung bspw. durch externen Interrupt), so kann der Timer gestoppt werden und die Zählvariable ausgewertet werden. Ihre Größe ist ein direktes Maß für die Distanz. Überschreitet sie einen bestimmten Wert, so kann die Messung als gescheitert betrachtet werden und der Zähler muss zurück gesetzt werden.&lt;br /&gt;
Natürlich können mehrere Interrupts auftreten, für deren Auswertung es wieder einen geeigneten Algorithmus zu finden gilt.&lt;br /&gt;
&lt;br /&gt;
Eine simple Implementierung ohne weitere Auswertealgorithmen kann man [http://www.mikrocontroller.net/mc-project/Pages/Projekte/Ultraschall/ultrasonic2.c hier] bekommen.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[Category:Mc-project.de]][[Category:Sensorik]]&lt;br /&gt;
&lt;br /&gt;
* http://www.mikrocontroller.net/articles/AVR_Softwarepool#Entfernungsmesser&lt;/div&gt;</summary>
		<author><name>Stefanfrings de</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=76561</id>
		<title>Miniwebserver</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=76561"/>
		<updated>2013-06-19T07:49:16Z</updated>

		<summary type="html">&lt;p&gt;Stefanfrings de: /* Rechtschreibfehler korrigiert und überflüssige Details entfernt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Winzig kleine Webserver =&lt;br /&gt;
In diesem Artikel möchte ich Informationen über alle Geräte sammeln, die folgende Eigenschaften besitzen:&lt;br /&gt;
*Ethernetanschluss (Buchse oder Anschlusspins für eine Buchse)&lt;br /&gt;
*Webseiten ausliefern&lt;br /&gt;
*Sehr kleine Abmessungen&lt;br /&gt;
&lt;br /&gt;
Keine Voraussetzung ist:&lt;br /&gt;
*Programme ausführen&lt;br /&gt;
*Weitere Anschlussmöglichkeiten&lt;br /&gt;
*Mailserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kandidaten ==&lt;br /&gt;
&lt;br /&gt;
===VIPAR (ab 12 Euro)===&lt;br /&gt;
&lt;br /&gt;
Produkt noch nicht am Markt, erst angekündigt&lt;br /&gt;
Samples und EVAL ab August 2011&lt;br /&gt;
&lt;br /&gt;
* Internet Chip based on Cortex-M3 core and Sevenstax TCP/IP technology&lt;br /&gt;
* Integrated Ethernet MAC/PHY&lt;br /&gt;
* License: Commercial (royalties included in chip cost)&lt;br /&gt;
* Runs custom Web Application from SPI Flash or microSD-Card&lt;br /&gt;
* Configuration using a single XML file&lt;br /&gt;
* Web Server, ZeroConf, Auto-IP, Messenger, IPv4/IPv6, …&lt;br /&gt;
&lt;br /&gt;
Questions: http://www.vipar.eu&lt;br /&gt;
&lt;br /&gt;
===XPort (ab 45 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Herstellerspezifisches SDK oder Linux&lt;br /&gt;
*GPIOs&lt;br /&gt;
*1-3 UARTS&lt;br /&gt;
&lt;br /&gt;
===Picotux (ab 100 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
&lt;br /&gt;
===Etherrape (Bausatz 59 Euro)===&lt;br /&gt;
&lt;br /&gt;
* Kleinster Miniwebserver ohne SMD Teile, leider nicht ganz so winzig (100x80mm)&lt;br /&gt;
&lt;br /&gt;
*[http://www.lochraster.org/etherrape Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Bausatz mit Platine&lt;br /&gt;
* Gehäuse als Zubehör erhältlich&lt;br /&gt;
* Atmega 644, ENC28J60, 2MByte DataFlash&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Weitere Anwendungen auf der Platine&lt;br /&gt;
** RS232&lt;br /&gt;
** RS485&lt;br /&gt;
** Dallas OneWire(TM) Bus&lt;br /&gt;
** Webcam Anschluss&lt;br /&gt;
** Senden und empfangen von IR Fenbedienungssignalen&lt;br /&gt;
** Integration des ELV FS20 Systems in der Firmware vorbereitet&lt;br /&gt;
** Alle Signale des Atmel auf Wannenstecker herausgeführt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===AVR-Board mit Ethernet (ca. 30 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Miniwebserver ohne SMD Teile&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Atmega 32, ENC28J60&lt;br /&gt;
* RS232&lt;br /&gt;
* Alle freien Ports sind nach außen gelegt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===FOX Board (139 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://elmicro.com/de/foxboard.html Elektronikladen.de]&lt;br /&gt;
*[http://www.acmesystems.it Hersteller]&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Axis ETRAX LX100 Multi Chip Module&lt;br /&gt;
*32 Bit RISC CPU, 100MHz Takt, MMU, 8KB Cache&lt;br /&gt;
*4 MB Flash, 16 MB SDRAM&lt;br /&gt;
*10/100 Mbps Ethernet Port (RJ45-Buchse)&lt;br /&gt;
*2x USB-Port (Full-Speed Host)&lt;br /&gt;
*RS232-Port (TTL-Pegel) und I2C&lt;br /&gt;
*IDE, SCSI oder Wide-SCSI&lt;br /&gt;
*zwei Stiftleisten mit je 2x20 Pins&lt;br /&gt;
*3,3V-IOs, 5V-tolerant&lt;br /&gt;
*Versorgung: 5V=, ca. 280mA&lt;br /&gt;
*Abmessungen: 66mm x 72mm&lt;br /&gt;
*Ready-to-run Embedded Linux System (Kernel 2.6)&lt;br /&gt;
*Standardanwendungen: HTTP (Web-Server), FTP, Telnet, DHCP, SSH, PPP...&lt;br /&gt;
*Firmwareupdates jederzeit einfach via LAN-SDK, FTP-Client oder Web-Browser!&lt;br /&gt;
&lt;br /&gt;
=== ADDS-BF533-STAMP Blackfin Eval-Board (136.50 Euro excl. z.b bei Farnell) ===&lt;br /&gt;
&lt;br /&gt;
*ADSP-BF533 500 MHz Blackfin®-Prozessor&lt;br /&gt;
*128 MB SDRAM (64M x 16)&lt;br /&gt;
*4 MB FLASH-Speicher&lt;br /&gt;
*Ethernet-Controller SMSC 91C111&lt;br /&gt;
*serielle RS232-Schnittstelle&lt;br /&gt;
*E/A-Erweiterungsanschlüsse für Blackfin-Peripherie&lt;br /&gt;
**PPI&lt;br /&gt;
**SPORT0 &amp;amp; SPORT1&lt;br /&gt;
**SPI&lt;br /&gt;
**Timer&lt;br /&gt;
**IrDA&lt;br /&gt;
**2-Leiter-Schnittstelle&lt;br /&gt;
*JTAG-Schnittstelle für Fehlersuche und FLASH-Programmierung&lt;br /&gt;
*LEDs (3) und Taster (3)&lt;br /&gt;
*Netzteil&lt;br /&gt;
*fertiger ucLinux-Port :)&lt;br /&gt;
&lt;br /&gt;
=== ezTCP-Module (ab ca. 40 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://www.eztcp.com/en/index_en.html Hersteller-Seite]&lt;br /&gt;
*[http://elmicro.com/de/eztcp.html Elektronikladen.de]&lt;br /&gt;
&lt;br /&gt;
*kleine Platine&lt;br /&gt;
*AVR ATmega* ist drauf&lt;br /&gt;
*RTL Netzwerkchip is drauf&lt;br /&gt;
*verschiedene Ausführungen: ezl-50 ist die kleinste / billigste&lt;br /&gt;
&lt;br /&gt;
=== AVR Net-IO Bausatz von Pollin (19,95 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [[AVR Net-IO Bausatz von Pollin]]&lt;br /&gt;
* Mitgelieferte Software muss durch eine andere Software ersetzt werden (diverse freie Software funktioniert)&lt;br /&gt;
&lt;br /&gt;
[http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html Shop bei pollin.de]&lt;br /&gt;
&lt;br /&gt;
=== myAVR / myEthernet Embedded Webserver (ca. 60 Euro) ===&lt;br /&gt;
&lt;br /&gt;
*[http://shop.myavr.de/index.php?sp=article.sp.php&amp;amp;artID=100065 Shop des Herstellers]&lt;br /&gt;
&lt;br /&gt;
*sehr kleine Platine&lt;br /&gt;
*ATmega644P fest auf der Platine&lt;br /&gt;
*MicroSD-Slot gleich auf der Platine&lt;br /&gt;
&lt;br /&gt;
=== CrumbX1-NET (ca 45 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [http://go.chip45.com/crumbx1-net-1.2 Shop des Herstellers]&lt;br /&gt;
&lt;br /&gt;
* Xmega 128 (8bit, 128kB Programmspeicher, 8kB Ram)&lt;br /&gt;
* CP2201 Ethernetcontroller mit MAC und Phy&lt;br /&gt;
* Ethernetübertrager onboard&lt;br /&gt;
* RJ45 Buchse&lt;br /&gt;
* Mini USB&lt;br /&gt;
* Micro SD/MMC Slot&lt;br /&gt;
* kann optional mit Bootloader bestellt werden&lt;br /&gt;
* Nur minimal größer als eine Streichholz-Schachtel&lt;br /&gt;
* kostenlose Software mit TCPIP Stack, Webserver, DHCP, Emailversand, etc.&lt;br /&gt;
* Steckplatz für optionales Power-Over-Ethernet (PoE) Addon Board&lt;br /&gt;
&lt;br /&gt;
=== [http://www.raspberrypi.org/ Raspberry PI] (ca. 30 EUR) ===&lt;br /&gt;
* Broadcom SoC, 700 MHz&lt;br /&gt;
* Modell A: 256, B: 512 MB RAM on Chip&lt;br /&gt;
* 1 x Fast Ethernet&lt;br /&gt;
* 2 x USB&lt;br /&gt;
* 1 x HDMI-Ausgang&lt;br /&gt;
* 1 x S-Video-Ausgang&lt;br /&gt;
* 1 x 3,5 mm Audio-Ausgang&lt;br /&gt;
* SD-Kartenslot für Betriebssystem&lt;br /&gt;
* 26 Pins (2 x 13 @ 2,54 mm):&lt;br /&gt;
** 2 x 5 V&lt;br /&gt;
** 2 x 3,3 V&lt;br /&gt;
** 5 x GND&lt;br /&gt;
** 17 GPIO-Pins mit Alternativfunktionen:&lt;br /&gt;
*** UART&lt;br /&gt;
*** I2C&lt;br /&gt;
*** SPI&lt;br /&gt;
*** 1 x PWM&lt;br /&gt;
* etwa Kreditkartengröße&lt;br /&gt;
* Versorgung über Micro-USB mit 1000 mA&lt;br /&gt;
* div. Gehäuse erhältlich&lt;br /&gt;
&lt;br /&gt;
=== Weitere Webserver ===&lt;br /&gt;
&lt;br /&gt;
* [[Avr Webserver mit Wiznet WIZ810MJ]]&lt;br /&gt;
* [[Einfacher und billiger Webserver mit AtMega32]]&lt;br /&gt;
* Arduino Uno (ca. 24 EUR) mit Ethernet Shield (ca. 35 EUR) oder Arduino Ethernet (ca. 48 EUR)&lt;br /&gt;
&lt;br /&gt;
== private Projekte ==&lt;br /&gt;
===avrETH1===&lt;br /&gt;
*winzige Maße: 32mm x 47.8mm x ~20mm (BxLxH)&lt;br /&gt;
*Microchip ENC28J60 Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 uC&lt;br /&gt;
*4MBit Atmel SPI Flash&lt;br /&gt;
*Webcam Support&lt;br /&gt;
*Temperaturlogger mit Ausgabe als Graph&lt;br /&gt;
*Stromversorgung über die freien Leitungen im Ethernet Kabel oder extern&lt;br /&gt;
&lt;br /&gt;
http://avr.auctionant.de/avrETH1/&lt;br /&gt;
&lt;br /&gt;
===ENC28J60 IO-Webserver===&lt;br /&gt;
*Platine: 74.9mm x 74.9mm&lt;br /&gt;
*Microchip [[ENC28J60]] Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 oder Atmega644 uC&lt;br /&gt;
*Software kompatibel zum AVR Net-IO von Pollin&lt;br /&gt;
*Div. Erweiterungsboards&lt;br /&gt;
&lt;br /&gt;
http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver&lt;br /&gt;
&lt;br /&gt;
===mega-eth===&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28J60&lt;br /&gt;
*SD/MMC-Slot&lt;br /&gt;
*FTDI USB/RS232-Wandler&lt;br /&gt;
*ATmega128 mit 64kBytes SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*eigener TCP/IP und TCP/UDP Stack&lt;br /&gt;
*eigener HTTP-Server&lt;br /&gt;
*eigener DHCP-Client&lt;br /&gt;
*Uhr-Synchronisation mit Zeit-Server&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/100177&lt;br /&gt;
&lt;br /&gt;
===MicroWebServer===&lt;br /&gt;
Kleinst-Webserver mit ENC28J60, Mega168 und Pfostenleiste für GPIOs auf 38x31mm².&lt;br /&gt;
&lt;br /&gt;
http://de.klinkerstein.m-faq.de/index.php/MicroWebServer&lt;br /&gt;
&lt;br /&gt;
===I/O===&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-402627.html&lt;br /&gt;
&lt;br /&gt;
===OpenMCP===&lt;br /&gt;
&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28j60&lt;br /&gt;
*ATmega2561 mit 128 kB Flash und 8 kB SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*Eigener TCP/IP-Stack mit TCP,UDP,ARP,ICMP. Socketbasiert, mehrere Verbindungen gleichzeitig möglich&lt;br /&gt;
*HTTP-Server mit CGI-Support&lt;br /&gt;
*SNTP, DHCP, DNS, Telnet, Twitter, DynDNS&lt;br /&gt;
*MP3-Streamingclient (VS10xx) (nur auf dem OpenMCP-Board)&lt;br /&gt;
*Einfache Programmierung, halbwegs gute Dokumentation, komplett GPL, Weiterentwicklung des [https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet CCCB-Boards]&lt;br /&gt;
*Läuft auch auf dem AVR-NETIO, myEthernet, ATXM2 und dem Xplain mit Erweiterung&lt;br /&gt;
&lt;br /&gt;
http://wiki.neo-guerillaz.de&lt;br /&gt;
&lt;br /&gt;
===Ethersex===&lt;br /&gt;
&lt;br /&gt;
*reines Firmware-Projekt&lt;br /&gt;
*läuft auf vielen verschiedenen AVR-Boards (u.a. Etherrape, AVR Net-IO,...)&lt;br /&gt;
*über Konfigurationsdateien leicht an eigene AVR-Boards anzupassen&lt;br /&gt;
*Anbindung über Ethernet (ENC28j60), Funk (RFM12), USB (Soft-Stack), USART&lt;br /&gt;
*TCP/IP, IPv4, IPv6, ZBUS (TCP/IP über RS232 oder RS485)&lt;br /&gt;
*IP-Routing zwischen den verschiedenen Schnittstellen&lt;br /&gt;
*OpenVPN&lt;br /&gt;
*Steuerung &amp;amp; Skripting über Ethersex Command (ECMD)&lt;br /&gt;
*Fertige Ansteuerung vieler gängiger Hardware (I2C, Onewire, LCDs, ADC, FS20,MMC/SD-Karten,...)&lt;br /&gt;
*ICMP,BOOTP,SMTP,NTP,DNS,IRC,Jabber/XMPP,HTTP,...&lt;br /&gt;
*GPLv3, Aktive Entwicklergemeinde&lt;br /&gt;
&lt;br /&gt;
http://ethersex.de/&lt;br /&gt;
&lt;br /&gt;
=== I/O Module mit Embedded AVR Webserver ===&lt;br /&gt;
&lt;br /&gt;
*Zum Fernsteuern und Abfragen von Sensoren&lt;br /&gt;
*Reines Firmware Projekt&lt;br /&gt;
*Läuft auf ATmega und Xmega ab 64kB + CP2201 Ethernet Controller&lt;br /&gt;
*Basiert auf uIP von Adam Dunkels&lt;br /&gt;
*TCP/IP v4, UDP, ARP, ICMP, DHCP Client, HTTP Server, SMTP Client, IP-Socket (Telnet)&lt;br /&gt;
*Webserver mit dynamischen und statischen Seiten im Flash&lt;br /&gt;
*Mehrere Verbindungen gleichzeitig (konfigurierbar, je nach RAM Größe)&lt;br /&gt;
*Optionale Komponenten:&lt;br /&gt;
**Alarmierung per Email&lt;br /&gt;
**Steuerung seriell (RS232, USB, Bluetooth)&lt;br /&gt;
**Massenspeicher SD/SDHC/MMC Karten&lt;br /&gt;
**I/O Erweiterung durch Schieberegister und serielle A/D Wandler&lt;br /&gt;
&lt;br /&gt;
Projekt-Homepage: http://stefanfrings.de/avr_io&amp;lt;br&amp;gt;&lt;br /&gt;
Fertigmodul erhältlich bei bei: http://chip45.com&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Ethernet]]&lt;/div&gt;</summary>
		<author><name>Stefanfrings de</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=75663</id>
		<title>Miniwebserver</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=75663"/>
		<updated>2013-05-16T07:00:52Z</updated>

		<summary type="html">&lt;p&gt;Stefanfrings de: Link zur Alarmanlage entfernt (ist schon in der Projekt-Homepage drin)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Winzig kleine Webserver =&lt;br /&gt;
In diesem Artikel möchte ich Informationen über alle Geräte sammeln, die folgende Eigenschaften besitzen:&lt;br /&gt;
*Ethernetanschluss (Buchse oder Anschlusspins für eine Buchse)&lt;br /&gt;
*Webseiten ausliefern&lt;br /&gt;
*Sehr kleine Abmessungen&lt;br /&gt;
&lt;br /&gt;
Keine Voraussetzung ist:&lt;br /&gt;
*Programme ausführen&lt;br /&gt;
*Weitere Anschlussmöglichkeiten&lt;br /&gt;
*Mailserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kandidaten ==&lt;br /&gt;
&lt;br /&gt;
===VIPAR (ab 12 Euro)===&lt;br /&gt;
&lt;br /&gt;
Produkt noch nicht am Markt, erst angekündigt&lt;br /&gt;
Samples und EVAL ab August 2011&lt;br /&gt;
&lt;br /&gt;
* Internet Chip based on Cortex-M3 core and Sevenstax TCP/IP technology&lt;br /&gt;
* Integrated Ethernet MAC/PHY&lt;br /&gt;
* License: Commercial (royalties included in chip cost)&lt;br /&gt;
* Runs custom Web Application from SPI Flash or microSD-Card&lt;br /&gt;
* Configuration using a single XML file&lt;br /&gt;
* Web Server, ZeroConf, Auto-IP, Messenger, IPv4/IPv6, …&lt;br /&gt;
&lt;br /&gt;
Questions: http://www.vipar.eu&lt;br /&gt;
&lt;br /&gt;
===XPort (ab 45 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Herstellerspezifisches SDK oder Linux&lt;br /&gt;
*GPIOs&lt;br /&gt;
*1-3 UARTS&lt;br /&gt;
&lt;br /&gt;
===Picotux (ab 100 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
&lt;br /&gt;
===Etherrape (Bausatz 59 Euro)===&lt;br /&gt;
&lt;br /&gt;
* Kleinster Miniwebserver ohne SMD Teile, leider nicht ganz so winzig (100x80mm)&lt;br /&gt;
&lt;br /&gt;
*[http://www.lochraster.org/etherrape Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Bausatz mit Platine&lt;br /&gt;
* Gehäuse als Zubehör erhältlich&lt;br /&gt;
* Atmega 644, ENC28J60, 2MByte DataFlash&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Weitere Anwendungen auf der Platine&lt;br /&gt;
** RS232&lt;br /&gt;
** RS485&lt;br /&gt;
** Dallas OneWire(TM) Bus&lt;br /&gt;
** Webcam Anschluss&lt;br /&gt;
** Senden und empfangen von IR Fenbedienungssignalen&lt;br /&gt;
** Integration des ELV FS20 Systems in der Firmware vorbereitet&lt;br /&gt;
** Alle Signale des Atmel auf Wannenstecker herausgeführt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===AVR-Board mit Ethernet (ca. 30 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Miniwebserver ohne SMD Teile&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Atmega 32, ENC28J60&lt;br /&gt;
* RS232&lt;br /&gt;
* Alle freien Ports sind nach außen gelegt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===FOX Board (139 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://elmicro.com/de/foxboard.html Elektronikladen.de]&lt;br /&gt;
*[http://www.acmesystems.it Hersteller]&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Axis ETRAX LX100 Multi Chip Module&lt;br /&gt;
*32 Bit RISC CPU, 100MHz Takt, MMU, 8KB Cache&lt;br /&gt;
*4 MB Flash, 16 MB SDRAM&lt;br /&gt;
*10/100 Mbps Ethernet Port (RJ45-Buchse)&lt;br /&gt;
*2x USB-Port (Full-Speed Host)&lt;br /&gt;
*RS232-Port (TTL-Pegel) und I2C&lt;br /&gt;
*IDE, SCSI oder Wide-SCSI&lt;br /&gt;
*zwei Stiftleisten mit je 2x20 Pins&lt;br /&gt;
*3,3V-IOs, 5V-tolerant&lt;br /&gt;
*Versorgung: 5V=, ca. 280mA&lt;br /&gt;
*Abmessungen: 66mm x 72mm&lt;br /&gt;
*Ready-to-run Embedded Linux System (Kernel 2.6)&lt;br /&gt;
*Standardanwendungen: HTTP (Web-Server), FTP, Telnet, DHCP, SSH, PPP...&lt;br /&gt;
*Firmwareupdates jederzeit einfach via LAN-SDK, FTP-Client oder Web-Browser!&lt;br /&gt;
&lt;br /&gt;
=== ADDS-BF533-STAMP Blackfin Eval-Board (136.50 Euro excl. z.b bei Farnell) ===&lt;br /&gt;
&lt;br /&gt;
*ADSP-BF533 500 MHz Blackfin®-Prozessor&lt;br /&gt;
*128 MB SDRAM (64M x 16)&lt;br /&gt;
*4 MB FLASH-Speicher&lt;br /&gt;
*Ethernet-Controller SMSC 91C111&lt;br /&gt;
*serielle RS232-Schnittstelle&lt;br /&gt;
*E/A-Erweiterungsanschlüsse für Blackfin-Peripherie&lt;br /&gt;
**PPI&lt;br /&gt;
**SPORT0 &amp;amp; SPORT1&lt;br /&gt;
**SPI&lt;br /&gt;
**Timer&lt;br /&gt;
**IrDA&lt;br /&gt;
**2-Leiter-Schnittstelle&lt;br /&gt;
*JTAG-Schnittstelle für Fehlersuche und FLASH-Programmierung&lt;br /&gt;
*LEDs (3) und Taster (3)&lt;br /&gt;
*Netzteil&lt;br /&gt;
*fertiger ucLinux-Port :)&lt;br /&gt;
&lt;br /&gt;
=== ezTCP-Module (ab ca. 40 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://www.eztcp.com/en/index_en.html Hersteller-Seite]&lt;br /&gt;
*[http://elmicro.com/de/eztcp.html Elektronikladen.de]&lt;br /&gt;
&lt;br /&gt;
*kleine Platine&lt;br /&gt;
*AVR ATmega* ist drauf&lt;br /&gt;
*RTL Netzwerkchip is drauf&lt;br /&gt;
*verschiedene Ausführungen: ezl-50 ist die kleinste / billigste&lt;br /&gt;
&lt;br /&gt;
=== AVR Net-IO Bausatz von Pollin (19,95 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [[AVR Net-IO Bausatz von Pollin]]&lt;br /&gt;
* Mitgelieferte Software muss durch eine andere Software ersetzt werden (diverse freie Software funktioniert)&lt;br /&gt;
&lt;br /&gt;
[http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html Shop bei pollin.de]&lt;br /&gt;
&lt;br /&gt;
=== myAVR / myEthernet Embedded Webserver (ca. 60 Euro) ===&lt;br /&gt;
&lt;br /&gt;
*[http://shop.myavr.de/index.php?sp=article.sp.php&amp;amp;artID=100065 Shop des Herstellers]&lt;br /&gt;
&lt;br /&gt;
*sehr kleine Platine&lt;br /&gt;
*ATmega644P fest auf der Platine&lt;br /&gt;
*MicroSD-Slot gleich auf der Platine&lt;br /&gt;
&lt;br /&gt;
=== CrumbX1-NET (ca 45 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [http://go.chip45.com/crumbx1-net-1.2 Shop des Herstellers]&lt;br /&gt;
&lt;br /&gt;
* Xmega 128 (8bit, 128kB Programmspeicher, 8kB Ram)&lt;br /&gt;
* CP2201 Ethernetcontroller mit MAC und Phy&lt;br /&gt;
* Ethernetübertrager onboard&lt;br /&gt;
* RJ45 Buchse&lt;br /&gt;
* Mini USB&lt;br /&gt;
* Micro SD/MMC Slot&lt;br /&gt;
* kann optional mit Bootloader bestellt werden&lt;br /&gt;
* Nur minimal größer als eine Streichholz-Schachtel&lt;br /&gt;
* kostenlose Software mit TCPIP Stack, Webserver, DHCP, Emailversand, etc.&lt;br /&gt;
* Steckplatz für optionales Power-Over-Ethernet (PoE) Addon Board&lt;br /&gt;
&lt;br /&gt;
=== [http://www.raspberrypi.org/ Raspberry PI] (ca. 30 EUR) ===&lt;br /&gt;
* Broadcom SoC, 700 MHz&lt;br /&gt;
* Modell A: 256, B: 512 MB RAM on Chip&lt;br /&gt;
* 1 x Fast Ethernet&lt;br /&gt;
* 2 x USB&lt;br /&gt;
* 1 x HDMI-Ausgang&lt;br /&gt;
* 1 x S-Video-Ausgang&lt;br /&gt;
* 1 x 3,5 mm Audio-Ausgang&lt;br /&gt;
* SD-Kartenslot für Betriebssystem&lt;br /&gt;
* 26 Pins (2 x 13 @ 2,54 mm):&lt;br /&gt;
** 2 x 5 V&lt;br /&gt;
** 2 x 3,3 V&lt;br /&gt;
** 5 x GND&lt;br /&gt;
** 17 GPIO-Pins mit Alternativfunktionen:&lt;br /&gt;
*** UART&lt;br /&gt;
*** I2C&lt;br /&gt;
*** SPI&lt;br /&gt;
*** 1 x PWM&lt;br /&gt;
* etwa Kreditkartengröße&lt;br /&gt;
* Versorgung über Micro-USB mit 1000 mA&lt;br /&gt;
* div. Gehäuse erhältlich&lt;br /&gt;
&lt;br /&gt;
=== Weitere Webserver ===&lt;br /&gt;
&lt;br /&gt;
* [[Avr Webserver mit Wiznet WIZ810MJ]]&lt;br /&gt;
* [[Einfacher und billiger Webserver mit AtMega32]]&lt;br /&gt;
* Arduino Uno (ca. 24 EUR) mit Ethernet Shield (ca. 35 EUR) oder Arduino Ethernet (ca. 48 EUR)&lt;br /&gt;
&lt;br /&gt;
== private Projekte ==&lt;br /&gt;
===avrETH1===&lt;br /&gt;
*winzige Maße: 32mm x 47.8mm x ~20mm (BxLxH)&lt;br /&gt;
*Microchip ENC28J60 Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 uC&lt;br /&gt;
*4MBit Atmel SPI Flash&lt;br /&gt;
*Webcam Support&lt;br /&gt;
*Temperaturlogger mit Ausgabe als Graph&lt;br /&gt;
*Stromversorgung über die freien Leitungen im Ethernet Kabel oder extern&lt;br /&gt;
&lt;br /&gt;
http://avr.auctionant.de/avrETH1/&lt;br /&gt;
&lt;br /&gt;
===ENC28J60 IO-Webserver===&lt;br /&gt;
*Platine: 74.9mm x 74.9mm&lt;br /&gt;
*Microchip [[ENC28J60]] Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 oder Atmega644 uC&lt;br /&gt;
*Software kompatibel zum AVR Net-IO von Pollin&lt;br /&gt;
*Div. Erweiterungsboards&lt;br /&gt;
&lt;br /&gt;
http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver&lt;br /&gt;
&lt;br /&gt;
===mega-eth===&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28J60&lt;br /&gt;
*SD/MMC-Slot&lt;br /&gt;
*FTDI USB/RS232-Wandler&lt;br /&gt;
*ATmega128 mit 64kBytes SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*eigener TCP/IP und TCP/UDP Stack&lt;br /&gt;
*eigener HTTP-Server&lt;br /&gt;
*eigener DHCP-Client&lt;br /&gt;
*Uhr-Synchronisation mit Zeit-Server&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/100177&lt;br /&gt;
&lt;br /&gt;
===MicroWebServer===&lt;br /&gt;
Kleinst-Webserver mit ENC28J60, Mega168 und Pfostenleiste für GPIOs auf 38x31mm².&lt;br /&gt;
&lt;br /&gt;
http://de.klinkerstein.m-faq.de/index.php/MicroWebServer&lt;br /&gt;
&lt;br /&gt;
===I/O===&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-402627.html&lt;br /&gt;
&lt;br /&gt;
===OpenMCP===&lt;br /&gt;
&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28j60&lt;br /&gt;
*ATmega2561 mit 128 kB Flash und 8 kB SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*Eigener TCP/IP-Stack mit TCP,UDP,ARP,ICMP. Socketbasiert, mehrere Verbindungen gleichzeitig möglich&lt;br /&gt;
*HTTP-Server mit CGI-Support&lt;br /&gt;
*SNTP, DHCP, DNS, Telnet, Twitter, DynDNS&lt;br /&gt;
*MP3-Streamingclient (VS10xx) (nur auf dem OpenMCP-Board)&lt;br /&gt;
*Einfache Programmierung, halbwegs gute Dokumentation, komplett GPL, Weiterentwicklung des [https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet CCCB-Boards]&lt;br /&gt;
*Läuft auch auf dem AVR-NETIO, myEthernet, ATXM2 und dem Xplain mit Erweiterung&lt;br /&gt;
&lt;br /&gt;
http://wiki.neo-guerillaz.de&lt;br /&gt;
&lt;br /&gt;
===Ethersex===&lt;br /&gt;
&lt;br /&gt;
*reines Firmware-Projekt&lt;br /&gt;
*läuft auf vielen verschiedenen AVR-Boards (u.a. Etherrape, AVR Net-IO,...)&lt;br /&gt;
*über Konfigurationsdateien leicht an eigene AVR-Boards anzupassen&lt;br /&gt;
*Anbindung über Ethernet (ENC28j60), Funk (RFM12), USB (Soft-Stack), USART&lt;br /&gt;
*TCP/IP, IPv4, IPv6, ZBUS (TCP/IP über RS232 oder RS485)&lt;br /&gt;
*IP-Routing zwischen den verschiedenen Schnittstellen&lt;br /&gt;
*OpenVPN&lt;br /&gt;
*Steuerung &amp;amp; Skripting über Ethersex Command (ECMD)&lt;br /&gt;
*Fertige Ansteuerung vieler gängiger Hardware (I2C, Onewire, LCDs, ADC, FS20,MMC/SD-Karten,...)&lt;br /&gt;
*ICMP,BOOTP,SMTP,NTP,DNS,IRC,Jabber/XMPP,HTTP,...&lt;br /&gt;
*GPLv3, Aktive Entwicklergemeinde&lt;br /&gt;
&lt;br /&gt;
http://ethersex.de/&lt;br /&gt;
&lt;br /&gt;
=== I/O Module mit Embedded AVR Webserver ===&lt;br /&gt;
&lt;br /&gt;
*Zum Fernsteuern und Abfragen von Sensoren&lt;br /&gt;
*Reines Firmware Projekt&lt;br /&gt;
*Läuft auf ATmega und Xmega ab 64kB + CP2201 Ethernet Controller&lt;br /&gt;
*Basiert auf uIP von Adam Dunkels&lt;br /&gt;
*TCP/IP v4, UDP, ARP, ICMP, DHCP CLient, HTTP Server, SMTP client, Socket Server (Telnet)&lt;br /&gt;
*Webserver mit dynamischen und statischen Seiten im Flash&lt;br /&gt;
*Mehrere Verbindungen gleichzeitig (konfigurierbar, je nach RAM Größe)&lt;br /&gt;
*Optionale Komponenten:&lt;br /&gt;
**Alarmierung von 8 Leitungen per Email&lt;br /&gt;
**Steuerung per RS232, USB oder Bluetooth (als Alternative zu HTTP und IP Socket)&lt;br /&gt;
**Massenspeicher SD/SDHC/MMC Karten mit FAT Filesystem&lt;br /&gt;
**I/O Erweiterung durch Schieberegister und serielle A/D Wandler&lt;br /&gt;
&lt;br /&gt;
Projekt-Homepage: http://stefanfrings.de/avr_io&amp;lt;br&amp;gt;&lt;br /&gt;
Fertigmodul erhältlich bei bei: http://chip45.com&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Ethernet]]&lt;/div&gt;</summary>
		<author><name>Stefanfrings de</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=75662</id>
		<title>Miniwebserver</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Miniwebserver&amp;diff=75662"/>
		<updated>2013-05-16T07:00:08Z</updated>

		<summary type="html">&lt;p&gt;Stefanfrings de: Titel korrigiert und Beschreibung verbessert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Winzig kleine Webserver =&lt;br /&gt;
In diesem Artikel möchte ich Informationen über alle Geräte sammeln, die folgende Eigenschaften besitzen:&lt;br /&gt;
*Ethernetanschluss (Buchse oder Anschlusspins für eine Buchse)&lt;br /&gt;
*Webseiten ausliefern&lt;br /&gt;
*Sehr kleine Abmessungen&lt;br /&gt;
&lt;br /&gt;
Keine Voraussetzung ist:&lt;br /&gt;
*Programme ausführen&lt;br /&gt;
*Weitere Anschlussmöglichkeiten&lt;br /&gt;
*Mailserver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kandidaten ==&lt;br /&gt;
&lt;br /&gt;
===VIPAR (ab 12 Euro)===&lt;br /&gt;
&lt;br /&gt;
Produkt noch nicht am Markt, erst angekündigt&lt;br /&gt;
Samples und EVAL ab August 2011&lt;br /&gt;
&lt;br /&gt;
* Internet Chip based on Cortex-M3 core and Sevenstax TCP/IP technology&lt;br /&gt;
* Integrated Ethernet MAC/PHY&lt;br /&gt;
* License: Commercial (royalties included in chip cost)&lt;br /&gt;
* Runs custom Web Application from SPI Flash or microSD-Card&lt;br /&gt;
* Configuration using a single XML file&lt;br /&gt;
* Web Server, ZeroConf, Auto-IP, Messenger, IPv4/IPv6, …&lt;br /&gt;
&lt;br /&gt;
Questions: http://www.vipar.eu&lt;br /&gt;
&lt;br /&gt;
===XPort (ab 45 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Herstellerspezifisches SDK oder Linux&lt;br /&gt;
*GPIOs&lt;br /&gt;
*1-3 UARTS&lt;br /&gt;
&lt;br /&gt;
===Picotux (ab 100 Euro)===&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
&lt;br /&gt;
===Etherrape (Bausatz 59 Euro)===&lt;br /&gt;
&lt;br /&gt;
* Kleinster Miniwebserver ohne SMD Teile, leider nicht ganz so winzig (100x80mm)&lt;br /&gt;
&lt;br /&gt;
*[http://www.lochraster.org/etherrape Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Bausatz mit Platine&lt;br /&gt;
* Gehäuse als Zubehör erhältlich&lt;br /&gt;
* Atmega 644, ENC28J60, 2MByte DataFlash&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Weitere Anwendungen auf der Platine&lt;br /&gt;
** RS232&lt;br /&gt;
** RS485&lt;br /&gt;
** Dallas OneWire(TM) Bus&lt;br /&gt;
** Webcam Anschluss&lt;br /&gt;
** Senden und empfangen von IR Fenbedienungssignalen&lt;br /&gt;
** Integration des ELV FS20 Systems in der Firmware vorbereitet&lt;br /&gt;
** Alle Signale des Atmel auf Wannenstecker herausgeführt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===AVR-Board mit Ethernet (ca. 30 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet Link zur Projektseite]&lt;br /&gt;
&lt;br /&gt;
* Miniwebserver ohne SMD Teile&lt;br /&gt;
* ENC28J60 als Ethernet Controller&lt;br /&gt;
* Atmega 32, ENC28J60&lt;br /&gt;
* RS232&lt;br /&gt;
* Alle freien Ports sind nach außen gelegt&lt;br /&gt;
* Firmware ist komplett OpenSource GPL Lizenz&lt;br /&gt;
&lt;br /&gt;
===FOX Board (139 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://elmicro.com/de/foxboard.html Elektronikladen.de]&lt;br /&gt;
*[http://www.acmesystems.it Hersteller]&lt;br /&gt;
&lt;br /&gt;
*Ethernetbuchse eingebaut&lt;br /&gt;
*Axis ETRAX LX100 Multi Chip Module&lt;br /&gt;
*32 Bit RISC CPU, 100MHz Takt, MMU, 8KB Cache&lt;br /&gt;
*4 MB Flash, 16 MB SDRAM&lt;br /&gt;
*10/100 Mbps Ethernet Port (RJ45-Buchse)&lt;br /&gt;
*2x USB-Port (Full-Speed Host)&lt;br /&gt;
*RS232-Port (TTL-Pegel) und I2C&lt;br /&gt;
*IDE, SCSI oder Wide-SCSI&lt;br /&gt;
*zwei Stiftleisten mit je 2x20 Pins&lt;br /&gt;
*3,3V-IOs, 5V-tolerant&lt;br /&gt;
*Versorgung: 5V=, ca. 280mA&lt;br /&gt;
*Abmessungen: 66mm x 72mm&lt;br /&gt;
*Ready-to-run Embedded Linux System (Kernel 2.6)&lt;br /&gt;
*Standardanwendungen: HTTP (Web-Server), FTP, Telnet, DHCP, SSH, PPP...&lt;br /&gt;
*Firmwareupdates jederzeit einfach via LAN-SDK, FTP-Client oder Web-Browser!&lt;br /&gt;
&lt;br /&gt;
=== ADDS-BF533-STAMP Blackfin Eval-Board (136.50 Euro excl. z.b bei Farnell) ===&lt;br /&gt;
&lt;br /&gt;
*ADSP-BF533 500 MHz Blackfin®-Prozessor&lt;br /&gt;
*128 MB SDRAM (64M x 16)&lt;br /&gt;
*4 MB FLASH-Speicher&lt;br /&gt;
*Ethernet-Controller SMSC 91C111&lt;br /&gt;
*serielle RS232-Schnittstelle&lt;br /&gt;
*E/A-Erweiterungsanschlüsse für Blackfin-Peripherie&lt;br /&gt;
**PPI&lt;br /&gt;
**SPORT0 &amp;amp; SPORT1&lt;br /&gt;
**SPI&lt;br /&gt;
**Timer&lt;br /&gt;
**IrDA&lt;br /&gt;
**2-Leiter-Schnittstelle&lt;br /&gt;
*JTAG-Schnittstelle für Fehlersuche und FLASH-Programmierung&lt;br /&gt;
*LEDs (3) und Taster (3)&lt;br /&gt;
*Netzteil&lt;br /&gt;
*fertiger ucLinux-Port :)&lt;br /&gt;
&lt;br /&gt;
=== ezTCP-Module (ab ca. 40 Euro)===&lt;br /&gt;
&lt;br /&gt;
*[http://www.eztcp.com/en/index_en.html Hersteller-Seite]&lt;br /&gt;
*[http://elmicro.com/de/eztcp.html Elektronikladen.de]&lt;br /&gt;
&lt;br /&gt;
*kleine Platine&lt;br /&gt;
*AVR ATmega* ist drauf&lt;br /&gt;
*RTL Netzwerkchip is drauf&lt;br /&gt;
*verschiedene Ausführungen: ezl-50 ist die kleinste / billigste&lt;br /&gt;
&lt;br /&gt;
=== AVR Net-IO Bausatz von Pollin (19,95 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [[AVR Net-IO Bausatz von Pollin]]&lt;br /&gt;
* Mitgelieferte Software muss durch eine andere Software ersetzt werden (diverse freie Software funktioniert)&lt;br /&gt;
&lt;br /&gt;
[http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html Shop bei pollin.de]&lt;br /&gt;
&lt;br /&gt;
=== myAVR / myEthernet Embedded Webserver (ca. 60 Euro) ===&lt;br /&gt;
&lt;br /&gt;
*[http://shop.myavr.de/index.php?sp=article.sp.php&amp;amp;artID=100065 Shop des Herstellers]&lt;br /&gt;
&lt;br /&gt;
*sehr kleine Platine&lt;br /&gt;
*ATmega644P fest auf der Platine&lt;br /&gt;
*MicroSD-Slot gleich auf der Platine&lt;br /&gt;
&lt;br /&gt;
=== CrumbX1-NET (ca 45 Euro) ===&lt;br /&gt;
&lt;br /&gt;
* [http://go.chip45.com/crumbx1-net-1.2 Shop des Herstellers]&lt;br /&gt;
&lt;br /&gt;
* Xmega 128 (8bit, 128kB Programmspeicher, 8kB Ram)&lt;br /&gt;
* CP2201 Ethernetcontroller mit MAC und Phy&lt;br /&gt;
* Ethernetübertrager onboard&lt;br /&gt;
* RJ45 Buchse&lt;br /&gt;
* Mini USB&lt;br /&gt;
* Micro SD/MMC Slot&lt;br /&gt;
* kann optional mit Bootloader bestellt werden&lt;br /&gt;
* Nur minimal größer als eine Streichholz-Schachtel&lt;br /&gt;
* kostenlose Software mit TCPIP Stack, Webserver, DHCP, Emailversand, etc.&lt;br /&gt;
* Steckplatz für optionales Power-Over-Ethernet (PoE) Addon Board&lt;br /&gt;
&lt;br /&gt;
=== [http://www.raspberrypi.org/ Raspberry PI] (ca. 30 EUR) ===&lt;br /&gt;
* Broadcom SoC, 700 MHz&lt;br /&gt;
* Modell A: 256, B: 512 MB RAM on Chip&lt;br /&gt;
* 1 x Fast Ethernet&lt;br /&gt;
* 2 x USB&lt;br /&gt;
* 1 x HDMI-Ausgang&lt;br /&gt;
* 1 x S-Video-Ausgang&lt;br /&gt;
* 1 x 3,5 mm Audio-Ausgang&lt;br /&gt;
* SD-Kartenslot für Betriebssystem&lt;br /&gt;
* 26 Pins (2 x 13 @ 2,54 mm):&lt;br /&gt;
** 2 x 5 V&lt;br /&gt;
** 2 x 3,3 V&lt;br /&gt;
** 5 x GND&lt;br /&gt;
** 17 GPIO-Pins mit Alternativfunktionen:&lt;br /&gt;
*** UART&lt;br /&gt;
*** I2C&lt;br /&gt;
*** SPI&lt;br /&gt;
*** 1 x PWM&lt;br /&gt;
* etwa Kreditkartengröße&lt;br /&gt;
* Versorgung über Micro-USB mit 1000 mA&lt;br /&gt;
* div. Gehäuse erhältlich&lt;br /&gt;
&lt;br /&gt;
=== Weitere Webserver ===&lt;br /&gt;
&lt;br /&gt;
* [[Avr Webserver mit Wiznet WIZ810MJ]]&lt;br /&gt;
* [[Einfacher und billiger Webserver mit AtMega32]]&lt;br /&gt;
* Arduino Uno (ca. 24 EUR) mit Ethernet Shield (ca. 35 EUR) oder Arduino Ethernet (ca. 48 EUR)&lt;br /&gt;
&lt;br /&gt;
== private Projekte ==&lt;br /&gt;
===avrETH1===&lt;br /&gt;
*winzige Maße: 32mm x 47.8mm x ~20mm (BxLxH)&lt;br /&gt;
*Microchip ENC28J60 Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 uC&lt;br /&gt;
*4MBit Atmel SPI Flash&lt;br /&gt;
*Webcam Support&lt;br /&gt;
*Temperaturlogger mit Ausgabe als Graph&lt;br /&gt;
*Stromversorgung über die freien Leitungen im Ethernet Kabel oder extern&lt;br /&gt;
&lt;br /&gt;
http://avr.auctionant.de/avrETH1/&lt;br /&gt;
&lt;br /&gt;
===ENC28J60 IO-Webserver===&lt;br /&gt;
*Platine: 74.9mm x 74.9mm&lt;br /&gt;
*Microchip [[ENC28J60]] Ethernetcontroller&lt;br /&gt;
*Atmel Atmega32 oder Atmega644 uC&lt;br /&gt;
*Software kompatibel zum AVR Net-IO von Pollin&lt;br /&gt;
*Div. Erweiterungsboards&lt;br /&gt;
&lt;br /&gt;
http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver&lt;br /&gt;
&lt;br /&gt;
===mega-eth===&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28J60&lt;br /&gt;
*SD/MMC-Slot&lt;br /&gt;
*FTDI USB/RS232-Wandler&lt;br /&gt;
*ATmega128 mit 64kBytes SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*eigener TCP/IP und TCP/UDP Stack&lt;br /&gt;
*eigener HTTP-Server&lt;br /&gt;
*eigener DHCP-Client&lt;br /&gt;
*Uhr-Synchronisation mit Zeit-Server&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/100177&lt;br /&gt;
&lt;br /&gt;
===MicroWebServer===&lt;br /&gt;
Kleinst-Webserver mit ENC28J60, Mega168 und Pfostenleiste für GPIOs auf 38x31mm².&lt;br /&gt;
&lt;br /&gt;
http://de.klinkerstein.m-faq.de/index.php/MicroWebServer&lt;br /&gt;
&lt;br /&gt;
===I/O===&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-402627.html&lt;br /&gt;
&lt;br /&gt;
===OpenMCP===&lt;br /&gt;
&lt;br /&gt;
*Platine 100mm x 80mm&lt;br /&gt;
*Microchip ENC28j60&lt;br /&gt;
*ATmega2561 mit 128 kB Flash und 8 kB SRAM&lt;br /&gt;
*Pfostenstecker für eigene Erweiterungen&lt;br /&gt;
*Eigener TCP/IP-Stack mit TCP,UDP,ARP,ICMP. Socketbasiert, mehrere Verbindungen gleichzeitig möglich&lt;br /&gt;
*HTTP-Server mit CGI-Support&lt;br /&gt;
*SNTP, DHCP, DNS, Telnet, Twitter, DynDNS&lt;br /&gt;
*MP3-Streamingclient (VS10xx) (nur auf dem OpenMCP-Board)&lt;br /&gt;
*Einfache Programmierung, halbwegs gute Dokumentation, komplett GPL, Weiterentwicklung des [https://berlin.ccc.de/wiki/AVR-Board_mit_Ethernet CCCB-Boards]&lt;br /&gt;
*Läuft auch auf dem AVR-NETIO, myEthernet, ATXM2 und dem Xplain mit Erweiterung&lt;br /&gt;
&lt;br /&gt;
http://wiki.neo-guerillaz.de&lt;br /&gt;
&lt;br /&gt;
===Ethersex===&lt;br /&gt;
&lt;br /&gt;
*reines Firmware-Projekt&lt;br /&gt;
*läuft auf vielen verschiedenen AVR-Boards (u.a. Etherrape, AVR Net-IO,...)&lt;br /&gt;
*über Konfigurationsdateien leicht an eigene AVR-Boards anzupassen&lt;br /&gt;
*Anbindung über Ethernet (ENC28j60), Funk (RFM12), USB (Soft-Stack), USART&lt;br /&gt;
*TCP/IP, IPv4, IPv6, ZBUS (TCP/IP über RS232 oder RS485)&lt;br /&gt;
*IP-Routing zwischen den verschiedenen Schnittstellen&lt;br /&gt;
*OpenVPN&lt;br /&gt;
*Steuerung &amp;amp; Skripting über Ethersex Command (ECMD)&lt;br /&gt;
*Fertige Ansteuerung vieler gängiger Hardware (I2C, Onewire, LCDs, ADC, FS20,MMC/SD-Karten,...)&lt;br /&gt;
*ICMP,BOOTP,SMTP,NTP,DNS,IRC,Jabber/XMPP,HTTP,...&lt;br /&gt;
*GPLv3, Aktive Entwicklergemeinde&lt;br /&gt;
&lt;br /&gt;
http://ethersex.de/&lt;br /&gt;
&lt;br /&gt;
=== I/O Module mit Embedded AVR Webserver ===&lt;br /&gt;
&lt;br /&gt;
*Zum Fernsteuern und Abfragen von Sensoren&lt;br /&gt;
*Reines Firmware Projekt&lt;br /&gt;
*Läuft auf ATmega und Xmega ab 64kB + CP2201 Ethernet Controller&lt;br /&gt;
*Basiert auf uIP von Adam Dunkels&lt;br /&gt;
*TCP/IP v4, UDP, ARP, ICMP, DHCP CLient, HTTP Server, SMTP client, Socket Server (Telnet)&lt;br /&gt;
*Webserver mit dynamischen und statischen Seiten im Flash&lt;br /&gt;
*Mehrere Verbindungen gleichzeitig (konfigurierbar, je nach RAM Größe)&lt;br /&gt;
*Optionale Komponenten:&lt;br /&gt;
**Alarmierung von 8 Leitungen per Email&lt;br /&gt;
**Steuerung per RS232, USB oder Bluetooth (als Alternative zu HTTP und IP Socket)&lt;br /&gt;
**Massenspeicher SD/SDHC/MMC Karten mit FAT Filesystem&lt;br /&gt;
**I/O Erweiterung durch Schieberegister und serielle A/D Wandler&lt;br /&gt;
&lt;br /&gt;
Projekt-Homepage: http://stefanfrings.de/avr_io&amp;lt;br&amp;gt;&lt;br /&gt;
Fertigmodul erhältlich bei bei: http://chip45.com&amp;lt;br&amp;gt;&lt;br /&gt;
Anwendungsbeispiel: http://stefanfrings.de/bfAlarm/index.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Kategorie:Ethernet]]&lt;/div&gt;</summary>
		<author><name>Stefanfrings de</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Raspberry_Pi_Einf%C3%BChrung&amp;diff=75535</id>
		<title>Raspberry Pi Einführung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Raspberry_Pi_Einf%C3%BChrung&amp;diff=75535"/>
		<updated>2013-05-08T07:21:42Z</updated>

		<summary type="html">&lt;p&gt;Stefanfrings de: /* I/O Module mit USB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Robert Knauer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Wettbewerb Header}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039;: &#039;&#039;Alle Informationen und Anleitungen in diesem Artikel beziehen sich auf das Model B mit erweitertem Arbeitsspeicher.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Raspberry_Pi.jpg|thumb|Der Raspberry Pi]]&lt;br /&gt;
Der &#039;&#039;&#039;Raspberry Pi&#039;&#039;&#039; ist ein Einplatinen-Computer im Kreditkarten-Format mit einem SoC (System-on-a-Chip) von Broadcom. Dieser verfügt über folgende Eigenschaften:&lt;br /&gt;
* eine 700MHz ARMv6-CPU&lt;br /&gt;
* eine Broadcom VideoCore IV GPU&lt;br /&gt;
* 512 MB Arbeitsspeicher&lt;br /&gt;
Außerdem kann der Raspberry Pi über folgende Schnittstellen mit der Außenwelt kommunizieren:&lt;br /&gt;
* 2 USB 2.0 Host-Anschlüsse&lt;br /&gt;
* einen Composite Video-Ausgang&lt;br /&gt;
* einen HDMI-Ausgang (Video+Audio)&lt;br /&gt;
* einen 3,5mm Klinke-Audio-Ausgang&lt;br /&gt;
* einen SD-/MMC-Karten-Slot (Unterstützung für SDIO und SDHC)&lt;br /&gt;
* einen Ethernet-Port (10/100 MBit)&lt;br /&gt;
* 21 GPIO-Pins, teilweise gedacht als [[UART]], [[SPI]] und [[I2C]]&lt;br /&gt;
Die Energieversorgung wird über einen microUSB-Anschluss gewährleistet. Man sollte jedoch darauf achten, dass der USB-Anschluss, über den man den Raspberry Pi mit Energie versorgt mindestens 700 mA liefern kann, da in der USB 2.0 Spezifikation nur 500 mA vorgesehen sind. In diesem Artikel wird noch darauf eingegangen, wie man sich selbst ein entsprechendes Netzteil bauen kann, alternativ funktioniert auch ein entsprechend starkes USB-Ladegerät in Verbindung mit einem USB-A auf microUSB-B Kabel. (siehe [[Raspberry Pi#Stromversorgung]])&lt;br /&gt;
&lt;br /&gt;
Um diese umfangreichen Möglichkeiten zu nutzen muss man mit einem anderen Computer ein Betriebssystem auf die SD-Karte laden, das dann vom Raspberry Pi gebootet wird. Am naheliegendsten ist hier natürlich Linux (Raspbian, Fedora, Debian und Arch Linux sind offiziell unterstützt), aber auch Plan 9 wurde schon auf dem kleinen Computer [http://www.heise.de/open/meldung/Plan-9-laeuft-auf-dem-Raspberry-1761392.html zum Laufen gebracht].&lt;br /&gt;
&lt;br /&gt;
In diesem Artikel soll Schritt für Schritt der Weg vom Anschließen des Computers über das Einrichten von Arch Linux ARM bis zum Verwenden der verschiedenen Schnittstellen des Raspberry Pi beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen &amp;amp; Zubehör ==&lt;br /&gt;
Der Raspberry Pi kann über verschiedene Quellen bezogen werden. Wichtig ist darauf zu achten, dass man das Model B mit 512 MB Arbeitsspeicher bestellt, da alle Anleitungen in diesem Artikel nur damit getestet sind und unter anderen Modellen eventuell nicht funktionieren. Ein in Deutschland ziemlich bekannter Elektronik-Versand, bei dem man den Raspberry Pi bestellen kann, ist Pollin, dort ist er zur Zeit für 39,95 € erhältlich. (Bestell-Nr.: 701 697, Stand: 31.12.2012)&lt;br /&gt;
&lt;br /&gt;
Doch neben dem eigentlichen Computer braucht man natürlich noch etwas Zubehör, wenn man es nicht eh schon zu Hause rumliegen hat:&lt;br /&gt;
* ein Netzteil, das 5V bei mindestens 700 mA auf einem microUSB-Stecker liefert (siehe [[Raspberry Pi#Stromversorgung]])&lt;br /&gt;
* eine SD(HC)-Speicherkarte&lt;br /&gt;
* einen SD(HC)-Cardreader an einem anderen Computer&lt;br /&gt;
* ein RJ45-Netzwerkkabel&lt;br /&gt;
* ein Ethernet-Netzwerk mit Zugang zum Internet&lt;br /&gt;
Mit diesem Zubehör kann man nur über SSH zugreifen, wenn man direkt am Raspberry Pi arbeiten will und später evtl. auch eine grafische Oberfläche einrichten will braucht man noch folgendes:&lt;br /&gt;
* ein HDMI-Kabel und einen Fernseher bzw. Monitor mit HDMI-Eingang &#039;&#039;&#039;oder&#039;&#039;&#039;&lt;br /&gt;
* ein Composite-Kabel und einen Fernseher mit entsprechendem Video-Eingang&lt;br /&gt;
* eine USB-Tastatur&lt;br /&gt;
* eine USB-Maus (für eine grafische Oberfläche)&lt;br /&gt;
* evtl. einen aktiven USB-Hub, wenn die Ports des Raspberry Pi nicht genug Leistung für Maus und Tastatur liefern können&lt;br /&gt;
&lt;br /&gt;
== Das Betriebssystem ==&lt;br /&gt;
Als Betriebssystem für die Anleitungen in diesem Artikel wird [http://archlinuxarm.org/ Arch Linux ARM] verwendet, das Meiste funktioniert jedoch auch unter anderen Linux-Distributionen und alles andere zumindest mit kleinen Anpassungen.&lt;br /&gt;
Es basiert auf den Prinzipien und teilweise auch der Software von [https://www.archlinux.org/ Arch Linux], hat aber vollständig unabhängige Paketquellen, in denen nur für ARM kompilierte Software verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Arch Linux ist ein gutes Betriebssystem für einen Computer wie den Raspberry Pi, da es am Anfang sehr leichtgewichtig ist und vorerst keine grafische Oberfläche installiert hat (was gut ist wenn man den Raspberry Pi als Server verwenden will). Andererseits kann aber auch problemlos eine grafische Oberfläche nachinstalliert werden, wenn man den Raspberry Pi als Desktop-Computer, HTPC oder ähnliches verwenden will.&lt;br /&gt;
&lt;br /&gt;
Man muss jedoch auch sagen, dass Arch Linux kein Betriebssystem für jemanden ist, der Linux noch nie verwendet hat. Man sollte schon etwas Erfahrung mit dem Arbeiten auf der Konsole haben, da grundlegende Dinge über Linux hier nicht erklärt werden.&lt;br /&gt;
Außerdem ist es teilweise notwendig, sich selbst weiterführende Informationen zu Arch Linux anzusehen, die in diesem Artikel verlinkt werden.&lt;br /&gt;
&lt;br /&gt;
== Anschluss &amp;amp; Installation ==&lt;br /&gt;
Nun muss man zuerst alles anschließen. Die Netzwerk-Buchse wird über das Netzwerk-Kabel mit dem Ethernet-Netzwerk verbunden. Hier ist wichtig, dass in dem Netzwerk ein DHCP-Server läuft (also IP-Adressen automatisch bezogen werden können) und Zugriff zum Internet möglich ist. Wenn man sich für die Variante mit eigenem Bildschirm entschieden hat muss man außerdem die HDMI-Buchse mit dem Fernseher oder Monitor bzw. den Composite-Ausgang mit dem Fernseher verbinden und Tastatur und Maus über USB anschließen.&lt;br /&gt;
Dann folgt die Installation von Arch Linux ARM auf die SD-Karte.&lt;br /&gt;
&lt;br /&gt;
Arch Linux ARM für Raspberry Pi kann man über folgende Links downloaden:&lt;br /&gt;
* [http://downloads.raspberrypi.org/images/archlinuxarm/archlinux-hf-2013-02-11/archlinux-hf-2013-02-11.zip.torrent Torrent-Download von Arch Linux ARM 2013-02-11]&lt;br /&gt;
* [http://downloads.raspberrypi.org/images/archlinuxarm/archlinux-hf-2013-02-11/archlinux-hf-2013-02-11.zip HTTP-Download von Arch Linux ARM 2013-02-11]&lt;br /&gt;
Wenn der etwa 194 MB große Download abgeschlossen ist und man über HTTP gedownloadet hat sollte man zuerst die Checksum überprüfen.&lt;br /&gt;
* SHA-1: 1d2508908e7d8c899f4a5284e855cb27c17645dc&lt;br /&gt;
Nachdem man das getan oder falls man über Torrent gedownloadet hat (dann passiert das automatisch) kann man das zip-Archiv entpacken.&lt;br /&gt;
&lt;br /&gt;
Man erhält eine etwa 1,9 GB große Datei namens archlinux-hf-2013-02-11.img. Diese muss man nun auf die SD-Karte bringen. Unter Linux funktioniert das mit dem kleinen Programm dd, das in den GNU coreutils enthalten ist und damit auf fast jedem System vorinstalliert sein sollte. Dazu gibt man folgendes in die Konsole ein (als root, /dev/sdX durch den Pfad zur Gerätedatei der SD-Karte ersetzen, Pfad der img-Datei anpassen):&lt;br /&gt;
* dd if=/pfad/zur/archlinux-hf-2013-02-11.img bs=1M of=/dev/sdX&lt;br /&gt;
Unter Windows kann man dafür [https://launchpad.net/win32-image-writer Image Writer for Windows] benutzen.&lt;br /&gt;
&lt;br /&gt;
Nachdem das Image auf die SD-Karte geschrieben ist muss man sich überlegen, ob man ein Display per HDMI anschließen wird oder nicht. Wenn man keines anschließen will (also nur SSH-Zugriff) oder sich noch nicht sicher ist, muss man die erste Partition der SD-Karte am Computer mounten und die Datei config.txt im Hauptverzeichnis editieren. Dort entfernt man das Raute-Zeichen vor &#039;&#039;&#039;hdmi_force_hotplug=1&#039;&#039;&#039;. Dadurch bootet der Raspberry Pi auch ohne, dass ein Display per HDMI angeschlossen ist. Danach entfernt man die Karte aus dem Cardreader des Computers und setzt sie in den Raspberry Pi ein. Dann verbindet man die Stromversorgung, indem man den microUSB-Stecker des Netzteils in die entsprechende Buchse auf der Platine steckt.&lt;br /&gt;
&lt;br /&gt;
== Der erste Start ==&lt;br /&gt;
Wenn man ein Display angeschlossen hat, erscheint nach ein paar Sekunden ein Login-Prompt auf dem Bildschirm. Als Username gibt man &#039;&#039;root&#039;&#039; ein, wenn man dann nach dem Passwort gefragt wird gibt man wieder &#039;&#039;root&#039;&#039; ein.&lt;br /&gt;
&lt;br /&gt;
Wenn man kein Display angeschlossen hat, muss man die IP-Adresse, die der Raspberry Pi sich vom DHCP-Server geholt hat, herausfinden. Wenn der DSL-Router diesen Dienst bereitstellt, kann man meistens auf der Web-Oberfläche eine Liste der verteilten IP-Adressen sehen. Alternativ kann man auch mit &#039;&#039;nmap&#039;&#039; einen Netzwerk-Scan machen, der die IP-Adressen von allen Computern im Netzwerk anzeigt. Das funktioniert unter Linux, indem man &#039;&#039;&#039;nmap -sn SUBNETZ&#039;&#039;&#039; im Terminal eingibt. Davor ersetzt man SUBNETZ durch das Subnetz, in dem auch der Raspberry Pi ist, in [https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR-Notation]. Wenn man z.B. in einem Netz ist, in dem IP-Adressen von &#039;&#039;192.168.1.0&#039;&#039; bis &#039;&#039;192.168.1.255&#039;&#039; verteilt werden, muss man &lt;br /&gt;
&#039;&#039;192.168.1.0/24&#039;&#039; verwenden.&lt;br /&gt;
&lt;br /&gt;
Nachdem man die IP-Adresse herausgefunden hat, verbindet man sich per SSH zu ihr und loggt sich als root, Passwort root ein. Unter Linux funktioniert das mit&lt;br /&gt;
* ssh root@IP-ADRESSE&lt;br /&gt;
Unter Windows verwendet man am besten [http://www.putty.org/ PuTTY].&lt;br /&gt;
&lt;br /&gt;
Egal für welche Möglichkeit man sich entschieden hat, sitzt man jetzt vor einer root-Shell des Raspberry Pi, erkennbar am Shell-Prompt &#039;&#039;&#039;[root@alarmpi ~]#&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Nun geht es an die Konfiguration von Arch Linux ARM, diese erfolgt vollständig über das Editieren von Dateien auf der Konsole.&lt;br /&gt;
&lt;br /&gt;
=== Lokalisierung ===&lt;br /&gt;
Man editiert die Datei /etc/locale.gen:&lt;br /&gt;
* nano /etc/locale.gen&lt;br /&gt;
und entfernt die Raute vor der Zeile mit der entsprechenden Sprache-Land-Kodierungs-Kombination, also z.B. vor &#039;&#039;&#039;de_DE.UTF-8 UTF-8&#039;&#039;&#039; für Deutschland.&lt;br /&gt;
Danach speichert man mit Strg+O -&amp;gt; Enter und Strg+X und erstellt die Lokalisierung neu:&lt;br /&gt;
* locale-gen&lt;br /&gt;
Danach editiert man die Datei /etc/locale.conf:&lt;br /&gt;
* nano /etc/locale.conf&lt;br /&gt;
Man ändert &#039;&#039;&#039;LANG=en_US.UTF-8&#039;&#039;&#039; zur entsprechenden Sprache, also z.B. &#039;&#039;&#039;LANG=de_DE.utf8&#039;&#039;&#039; und speichert mit Strg+0 -&amp;gt; Enter und Strg+X.&lt;br /&gt;
&lt;br /&gt;
=== Tastatur-Layout ===&lt;br /&gt;
Um das Tastatur-Layout auf der Konsole anzupassen, muss man die Datei /etc/vconsole.conf ändern:&lt;br /&gt;
* nano /etc/vconsole.conf&lt;br /&gt;
Man ändert &#039;&#039;&#039;KEYMAP=us&#039;&#039;&#039; zu z.B. &#039;&#039;&#039;KEYMAP=de&#039;&#039;&#039; für QWERTZ  und speichert wieder mit Strg+0 -&amp;gt; Enter und Strg+X.&lt;br /&gt;
&lt;br /&gt;
=== Zeitzone ===&lt;br /&gt;
Um die Zeitzone zu ändern muss man einen Symlink zu /etc/localtime erstellen:&lt;br /&gt;
* ln -sf /usr/share/zoneinfo/ZEITZONE /etc/localtime&lt;br /&gt;
Also für Deutschland (Europe/Berlin):&lt;br /&gt;
* ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime&lt;br /&gt;
&lt;br /&gt;
Um alle Änderungen zu übernehmen startet man den Raspberry Pi am besten neu:&lt;br /&gt;
* reboot&lt;br /&gt;
Wenn man per SSH verbunden war, wird die Verbindung geschlossen und man muss sich neu verbinden.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierung ==&lt;br /&gt;
Da das Image, das man auf die SD-Karte geschrieben hat, schon etwas veraltet sein kann, sollte man das System über die Paketverwaltung aktualisieren:&lt;br /&gt;
* pacman -Syu&lt;br /&gt;
Dieses Kommando downloadet die Datenbanken und alle neuen Pakete und installiert diese anschließend.&lt;br /&gt;
&lt;br /&gt;
Dieses Kommando sollte man jede Woche mindestens einmal ausführen, um das System aktuell zu halten. Arch Linux ARM muss nie neu installiert werden, allein durch dieses Kommando wird es immer aktuell gehalten.&lt;br /&gt;
&lt;br /&gt;
== Dateisystem vergrößern ==&lt;br /&gt;
Da das Image darauf ausgelegt ist, dass es auch auf nur 2GB großen SD-Karten geschrieben werden kann, ist auch das Haupt-Dateisystem etwa 2GB groß, selbst wenn man Arch Linux ARM auf eine größere SD-Karte geschrieben hat.&lt;br /&gt;
&lt;br /&gt;
Doch das ist kein großes Problem. Um das Haupt-Dateisystem so zu vergrößern, dass es die gesamte SD-Karte ausfüllt, muss man den Raspberry Pi ausschalten und die SD-Karte in einen Cardreader an einem Linux-PC einsetzen.&lt;br /&gt;
&lt;br /&gt;
In der folgenden Anleitung wird angenommen, dass die SD-Karte unter /dev/sdb und das Haupt-Dateisystem der SD-Karte unter /dev/sdb2 ist. Wenn das nicht zutrifft muss man die Pfade entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Zuerst muss man sicherstellen, dass keines der Dateisysteme gemountet ist:&lt;br /&gt;
* umount /dev/sdb1&lt;br /&gt;
* umount /dev/sdb2&lt;br /&gt;
Danach muss man einen Dateisystem-Test durchführen:&lt;br /&gt;
* fsck -n /dev/sdb2&lt;br /&gt;
... und das Journal entfernen:&lt;br /&gt;
* tune2fs -O &amp;quot;^has_journal&amp;quot; /dev/sdb2&lt;br /&gt;
Dann bearbeitet man die Partitionstabelle mit fdisk:&lt;br /&gt;
* fdisk /dev/sdb&lt;br /&gt;
Man kommt in eine Kommandozeile, in der man folgendes nacheinander eingibt:&lt;br /&gt;
* d&lt;br /&gt;
* 2&lt;br /&gt;
* n&lt;br /&gt;
* p&lt;br /&gt;
* 2&lt;br /&gt;
* &amp;lt;ohne Eingabe Enter&amp;gt;&lt;br /&gt;
* &amp;lt;ohne Eingabe Enter&amp;gt;&lt;br /&gt;
* w&lt;br /&gt;
Dadurch wird die zweite Partition gelöscht und neu angelegt, und zwar über den gesamten freien Bereich der SD-Karte.&lt;br /&gt;
Dann muss man wieder einen Dateisystem-Test durchführen:&lt;br /&gt;
* e2fsck -f /dev/sdb2&lt;br /&gt;
... und das Dateisystem vergrößern:&lt;br /&gt;
* resize2fs /dev/sdb2&lt;br /&gt;
Jetzt erfolgt erneut ein Dateisystem-Test:&lt;br /&gt;
* fsck -n /dev/sdb2&lt;br /&gt;
... und die Wiederherstellung des Journals:&lt;br /&gt;
* tune2fs -j /dev/sdb2&lt;br /&gt;
Jetzt kann man die SD-Karte aus dem Cardreader nehmen, in den Raspberry Pi einsetzen und ihn starten.&lt;br /&gt;
&lt;br /&gt;
Wenn alles glatt gelaufen ist bootet der Raspberry Pi ganz normal und man hat plötzlich mehr Speicherplatz zur Verfügung. Aus&lt;br /&gt;
&amp;lt;pre&amp;gt;# df -h /    &lt;br /&gt;
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf&lt;br /&gt;
/dev/root       1,8G    805M  869M   49% /&amp;lt;/pre&amp;gt;&lt;br /&gt;
wird bei einer 16GB SD-Karte zum Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;# df -h /    &lt;br /&gt;
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf&lt;br /&gt;
/dev/root        15G    905M   14G    7% /&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Dieser Abschnitt basiert auf einer [http://www.howtoforge.de/anleitung/wie-man-die-grose-von-ext3-partitionen-anpasst-ohne-daten-zu-verlieren/ Anleitung zum Verändern der Größe von ext3-Partitionen von HowtoForge].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Paketverwaltung ==&lt;br /&gt;
Arch Linux ARM setzt pacman als Paket-Manager ein. Das erste Kommando, das zur System-Aktualisierung, wurde schon in einem anderen Kapitel genannt:&lt;br /&gt;
* pacman -Syu&lt;br /&gt;
Dieses setzt sich aus zwei Teil-Kommandos zusammen:&lt;br /&gt;
* pacman -Sy&lt;br /&gt;
zum Downloaden der Paket-Datenbanken und&lt;br /&gt;
* pacman -Su&lt;br /&gt;
zum Downloaden und Installieren der neuen Pakete.&lt;br /&gt;
&lt;br /&gt;
Um ein neues Paket zu installieren verwendet man folgendes Kommando:&lt;br /&gt;
* pacman -S PAKETNAME&lt;br /&gt;
oder um davor noch die Datenbanken zu aktualisieren:&lt;br /&gt;
* pacman -Sy PAKETNAME&lt;br /&gt;
&lt;br /&gt;
Um ein Paket zu löschen verwendet man:&lt;br /&gt;
* pacman -R PAKETNAME&lt;br /&gt;
oder um alle danach nicht mehr benötigten Abhängigkeiten mit zu löschen:&lt;br /&gt;
* pacman -Rs PAKETNAME&lt;br /&gt;
&lt;br /&gt;
Es gibt noch viele weitere Kommandos, z.B. zum Suchen von Paketen, Anzeigen von Informationen, Auflisten von Dateien. Einen Überblick findet man im [https://wiki.archlinux.de/title/Pacman Arch Linux Wiki] oder eine Auflistung aller Optionen in der Manpage:&lt;br /&gt;
* man pacman&lt;br /&gt;
Nach der Installation sind standardmäßig alle fünf Paketquellen von Arch Linux ARM aktiviert, eine Liste aller enthaltenen Pakete findet man [http://archlinuxarm.org/packages auf der Website].&lt;br /&gt;
&lt;br /&gt;
== Datensicherung ==&lt;br /&gt;
Um neue Betriebssysteme auf dem Raspberry Pi auszuprobieren braucht man nicht zehn verschiedene SD-Karten, die man immer wechselt. Es reicht eine SD-Karte, von der man ein Backup macht, bevor man ein neues Betriebssystem aufspielt. Aber auch wenn man das nicht vorhat macht sich eine Datensicherung immer gut.&lt;br /&gt;
&lt;br /&gt;
Dafür gibt es unter Linux verschiedene Möglichkeiten, einmal natürlich das Tool dd, mit dem man den gesamten Inhalt der SD-Karte Byte für Byte auf ein anderes Medium, z.B. die Festplatte, kopieren kann. Hier werden aber auch eigentlich leere Teile der SD-Karte mit gesichert, wodurch bei einer 16GB SD-Karte auch (unkomprimiert) ein 16GB-Backup entsteht, egal wie viel Daten man nun eigentlich auf der Karte gespeichert hat. Abhilfe schafft partclone, das die einzelnen Partitionen sichert, und zwar auch nur die wirklich verwendeten Teile. Die Handhabung ist etwas komplexer als bei dd, eine gute Anleitung und ein ausführlicherer Vergleich der beiden Tools ist auf [http://www.bitblokes.de/2013/03/sd-karte-des-raspberry-pi-sichern-dd-oder-partclone/ bitblokes.de] zu finden.&lt;br /&gt;
&lt;br /&gt;
== SoC-Konfiguration ==&lt;br /&gt;
Generelle Einstellungen für den SoC, die noch vor dem Starten des Betriebssystems geladen werden, kann man in der Datei &#039;&#039;&#039;/boot/config.txt&#039;&#039;&#039; ändern.&lt;br /&gt;
&lt;br /&gt;
Hier ist es z.B. möglich, Parameter für die Video-Ausgabe zu setzen, die Speicher-Aufteilung zwischen CPU und GPU zu ändern oder die CPU zu übertakten. Generell sollte man eher vorsichtig mit diesen Optionen umgehen, da sie bei falscher Verwendung auch mal dazu führen können, dass das Betriebssystem nicht mehr bootet oder das System instabil wird.&lt;br /&gt;
&lt;br /&gt;
Eine genaue Auflistung der möglichen Konfigurations-Optionen findet man auf [http://elinux.org/RPiconfig eLinux.org].&lt;br /&gt;
&lt;br /&gt;
== Die GPIO-Schnittstelle ==&lt;br /&gt;
[[Datei:Raspberry_Pi_GPIO.jpg|thumb|Die GPIO-Schnittstelle (P1-Anschluss)]]&lt;br /&gt;
Für Bastler besonders interessant ist die GPIO-Schnittstelle, diese kann man über verschiedene Wege ansteuern.&lt;br /&gt;
=== Belegung der Schnittstelle ===&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Alle GPIO-Pins haben einen Pegel von 3,3V und sind &#039;&#039;&#039;nicht&#039;&#039;&#039; kompatibel zu 5V! Wenn man versucht, 5V anzuschließen, kann das zur Zerstörung des Raspberry Pi führen! Für Informationen zum Anschließen von 5V-Chips, siehe [[Pegelwandler]] oder [[Raspberry Pi#Erweiterungs-Boards]].&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;300&amp;quot; widths=&amp;quot;300&amp;quot;&amp;gt;&lt;br /&gt;
Datei:Raspberry_Pi_GPIO.svg|Der P1-Anschluss&lt;br /&gt;
Datei:Raspberry_Pi_GPIO_P2.svg|Der P2-Anschluss (eigentlich das JTAG-Interface der GPU, aber trotzdem mit ein paar nützlichen Pins)&lt;br /&gt;
Datei:Raspberry_Pi_GPIO_P5.svg|Der P5-Anschluss auf der Rückseite der Platine&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im oberen Bild ist die Belegung der Anschlüsse zu sehen, die man als GPIO oder zur Stromversorgung nutzen kann. Die Beschriftungen sind genau so wie auf der Platine angebracht und sollen eine Orientierung ermöglichen.&lt;br /&gt;
Die 3,3V Anschlüsse (P1-1, P1-17, P2-1 und P5-2) dürfen maximal mit 50 mA belastet werden. Bei den 5V Anschlüssen (P1-2, P1-4 und P5-1) gibt es keine feste Grenze, hier kommt es auf den aktuellen Stromverbrauch des restlichen Boards und der Leistung des Netzteils an. Die Pins GPIO2 (P1-3) und GPIO3 (P1-5) sind jeweils mit einem 1,8 kΩ Pull-Up-Widerstand ausgestattet.&lt;br /&gt;
&lt;br /&gt;
Der Anschluss P3 ist noch ein JTAG-Interface, der Anschluss P6 kann mit einem Reset-Knopf ausgestattet werden. Wenn man die beiden Pins verbindet verursacht das einen Soft Reset der CPU.&lt;br /&gt;
&lt;br /&gt;
Hier eine Übersicht der Alternativ-Funktionen der Pins:&lt;br /&gt;
* P1-03 (GPIO2): I2C SDA (siehe [[Raspberry Pi#Der_I2C-Bus]])&lt;br /&gt;
* P1-05 (GPIO3): I2C SCL (siehe [[Raspberry Pi#Der_I2C-Bus]])&lt;br /&gt;
&lt;br /&gt;
* P1-07 (GPIO4): GPCLK0 (General Purpose Clock)&lt;br /&gt;
&lt;br /&gt;
* P1-08 (GPIO14): UART TXD (siehe [[Raspberry Pi#Der_UART]])&lt;br /&gt;
* P1-10 (GPIO15): UART RXD (siehe [[Raspberry Pi#Der_UART]])&lt;br /&gt;
* P1-11 (GPIO17): UART RTS (siehe [[Raspberry Pi#Der_UART]])&lt;br /&gt;
&lt;br /&gt;
* P1-12 (GPIO18): PWM ([[Pulsweitenmodulation]])&lt;br /&gt;
* P1-13 (GPIO27): PCM (Puls-Code-Modulation) oder GPCLK1 (General Purpose Clock)&lt;br /&gt;
&lt;br /&gt;
* P1-19 (GPIO10): SPI MOSI (siehe [[Raspberry Pi#Die_SPI-Schnittstelle]])&lt;br /&gt;
* P1-21 (GPIO9): SPI MISO (siehe [[Raspberry Pi#Die_SPI-Schnittstelle]])&lt;br /&gt;
* P1-23 (GPIO11): SPI SCLK (siehe [[Raspberry Pi#Die_SPI-Schnittstelle]])&lt;br /&gt;
* P1-24 (GPIO8): SPI Chip Select 0 (siehe [[Raspberry Pi#Die_SPI-Schnittstelle]])&lt;br /&gt;
* P1-26 (GPIO7): SPI Chip Select 1 (siehe [[Raspberry Pi#Die_SPI-Schnittstelle]])&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung per sysfs ===&lt;br /&gt;
Ganz nach den UNIX-Prinzipien gibt es die Möglichkeit, auf die Schnittstelle über Dateien im sysfs zuzugreifen. Dafür existiert das Verzeichnis &#039;&#039;/sys/class/gpio/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um einen GPIO-Pin zu verwenden muss man ihn zuerst aktivieren, indem man die Pin-Nummer in &#039;&#039;/sys/class/gpio/export&#039;&#039; schreibt. Wenn man über die Kommandozeile z.B. Pin 4 aktivieren will benutzt man folgendes Kommando:&lt;br /&gt;
* echo 4 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
Dadurch wird automatisch ein Verzeichnis &#039;&#039;/sys/class/gpio/gpio4/&#039;&#039; erstellt. Nun kann man über die darin enthaltene Datei &#039;&#039;direction&#039;&#039; den Pin als Out- bzw. Input festlegen (standardmäßig sind alle Inputs):&lt;br /&gt;
* echo in &amp;gt; /sys/class/gpio/gpio4/direction&lt;br /&gt;
für einen Input und&lt;br /&gt;
* echo out &amp;gt; /sys/class/gpio/gpio4/direction&lt;br /&gt;
für einen Output. Jetzt kann man den Wert des Pins auslesen:&lt;br /&gt;
* cat /sys/class/gpio/gpio4/value&lt;br /&gt;
oder ihn setzen, wenn es ein Output-Pin ist:&lt;br /&gt;
* echo 1 &amp;gt; /sys/class/gpio/gpio4/value&lt;br /&gt;
* echo 0 &amp;gt; /sys/class/gpio/gpio4/value&lt;br /&gt;
Wenn man den Pin nicht mehr benutzen will sollte man ihn wieder deaktivieren:&lt;br /&gt;
* echo 4 &amp;gt; /sys/class/gpio/unexport&lt;br /&gt;
Dadurch verschwindet das Verzeichnis &#039;&#039;/sys/class/gpio/gpio4/&#039;&#039; wieder. All das kann man natürlich nicht nur auf der Shell verwenden, sondern auch in jeder Programmiersprache, indem man einfach in die entsprechenden Dateien schreibt bzw. aus ihnen liest.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel: Shell-Blinklicht ===&lt;br /&gt;
Dieses kleine Shellscript aktiviert den GPIO-Pin, den man als Argument übergeben hat, setzt ihn als Output und schaltet ihn alle 500ms um:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
## Check arguments:&lt;br /&gt;
if [[ ! $# -eq 1 ]]; then&lt;br /&gt;
        echo &amp;quot;Usage: $0 GPIO&amp;quot; &amp;gt; /dev/stderr&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
## Activate GPIO:&lt;br /&gt;
echo &amp;quot;Activating GPIO$1&amp;quot;&lt;br /&gt;
echo $1 &amp;gt; /sys/class/gpio/export || exit 1&lt;br /&gt;
## Create trap:&lt;br /&gt;
trap &amp;quot;echo &#039;Deactivating GPIO$1&#039; &amp;amp;&amp;amp; echo in &amp;gt; /sys/class/gpio/gpio$1/direction &amp;amp;&amp;amp; echo $1 &amp;gt; /sys/class/gpio/unexport&amp;quot; EXIT&lt;br /&gt;
## Set as output:&lt;br /&gt;
echo &amp;quot;out&amp;quot; &amp;gt; /sys/class/gpio/gpio$1/direction || exit 1&lt;br /&gt;
## Reset value:&lt;br /&gt;
echo 0 &amp;gt; /sys/class/gpio/gpio$1/value || exit 1&lt;br /&gt;
## Blink loop:&lt;br /&gt;
while true; do&lt;br /&gt;
        echo &amp;quot;Switching GPIO$1 on&amp;quot;&lt;br /&gt;
        echo 1 &amp;gt; /sys/class/gpio/gpio$1/value || exit 1&lt;br /&gt;
        sleep 0.5&lt;br /&gt;
        echo &amp;quot;Switching GPIO$1 off&amp;quot;&lt;br /&gt;
        echo 0 &amp;gt; /sys/class/gpio/gpio$1/value || exit 1&lt;br /&gt;
        sleep 0.5&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man an dem entsprechenden Pin eine LED anschließt eignet sich das Script gut zum Testen der GPIO-Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung per Python-Modul ===&lt;br /&gt;
Mit dem Modul [https://pypi.python.org/pypi/RPi.GPIO RPi.GPIO] kann man unter Python die GPIO-Pins steuern und auslesen. Auf der Projekt-Website gibt es auch ein Beispiel, mit dem man die Handhabung schnell lernt.&lt;br /&gt;
&lt;br /&gt;
Jedes Python-Script, das dieses Modul nutzen will, muss als root laufen.&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung mit Java ===&lt;br /&gt;
Das [http://pi4j.com/ Pi4J-Projekt] ermöglicht unter Java die Verwendung der GPIO-Pins, dem UART, des I2C-Bus und der SPI-Schnittstelle. Eine ausführliche Anleitung gibt es auf der Website.&lt;br /&gt;
&lt;br /&gt;
Jedes Java-Programm, dass dieses Modul nutzen will, muss als root laufen.&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung mit WiringPi ===&lt;br /&gt;
[https://projects.drogon.net/raspberry-pi/wiringpi/ WiringPi] bietet ein Kommandozeilen-Tool (&#039;&#039;&#039;gpio&#039;&#039;&#039;, Details siehe &#039;&#039;&#039;man gpio&#039;&#039;&#039;), das man auch als normaler Nutzer (ohne root-Rechte) verwenden kann und eine C-Bibliothek (Header-Datei &#039;&#039;wiringPi.h&#039;&#039; und Linker-Option &#039;&#039;-lwiringPi&#039;&#039;), mit der man die GPIO-Pins in C-Programmen verwenden kann.&lt;br /&gt;
&lt;br /&gt;
Auf der Website gibt es Beispiele und eine Installationsanleitung. Bei Arch Linux ARM ist es auch in den Paketquellen und kann per Paketverwaltung installiert werden:&lt;br /&gt;
* pacman -S wiringpi&lt;br /&gt;
&lt;br /&gt;
== Der I2C-Bus ==&lt;br /&gt;
Auch auf den I2C-Bus des Raspberry Pi kann man zugreifen. Die Pins dafür liegen an P1-03 (GPIO2, SDA) und P1-05 (GPIO3, SCL).&lt;br /&gt;
=== Ansteuerung per devfs ===&lt;br /&gt;
Den I2C-Bus kann man direkt über die Datei &#039;&#039;&#039;/dev/i2c-0&#039;&#039;&#039; erreichen.&lt;br /&gt;
=== Ansteuerung per i2c-tools ===&lt;br /&gt;
Komfortabler geht das aber über die i2c-tools. Dazu muss man erst einmal das Paket aus den Arch Linux ARM Paketquellen installieren:&lt;br /&gt;
* pacman -S i2c-tools&lt;br /&gt;
Nun muss man die nötigen Kernel-Module laden:&lt;br /&gt;
* modprobe i2c-bcm2708&lt;br /&gt;
* modprobe i2c-dev&lt;br /&gt;
Soll das beim Systemstart automatisch passieren, legt man eine *.conf-Datei im Verzeichnis &#039;&#039;&#039;/etc/modules-load.d/&#039;&#039;&#039; mit folgendem Inhalt an:&lt;br /&gt;
&amp;lt;pre&amp;gt;i2c-bcm2708&lt;br /&gt;
i2c-dev&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt sollten folgende Kommandozeilen-Tools funktionieren:&lt;br /&gt;
* &#039;&#039;&#039;i2cdetect&#039;&#039;&#039; zum Auflisten der I2C-Busse und zum Anzeigen der Eigenschaften und Geräte&lt;br /&gt;
* &#039;&#039;&#039;i2cdump&#039;&#039;&#039; zum Herausfinden von I2C-Registern&lt;br /&gt;
* &#039;&#039;&#039;i2cget&#039;&#039;&#039; zum Lesen von I2C-Registern&lt;br /&gt;
* &#039;&#039;&#039;i2cset&#039;&#039;&#039; zum Setzen von I2C-Registern&lt;br /&gt;
Die Manpages und Hilfe-Meldungen der einzelnen Tools geben Auskunft über die genaue Verwendung. Wichtig ist, dass man den I2C-Bus 0, &#039;&#039;&#039;nicht&#039;&#039;&#039; den I2C-Bus 1 verwendet. Ein kleines Beispiel gibt es auch in der Ausgabe 5 des MagPi im Artikel „Temperature Sensor“. Dort wird ein Temperatursensor per I2C ausgelesen.&lt;br /&gt;
&lt;br /&gt;
== Der UART ==&lt;br /&gt;
Die Pins für den UART liegen auch an P1. TXD an Pin 08 (GPIO14), RXD an Pin 10 (GPIO15) und RTS an Pin 11 (GPIO17).&lt;br /&gt;
&lt;br /&gt;
Zugreifen kann man über das devfs, genauer gesagt über die Datei &#039;&#039;&#039;/dev/ttyAMA0&#039;&#039;&#039;. Um zu testen, ob das funktioniert, kann man minicom benutzen:&lt;br /&gt;
* pacman -S minicom&lt;br /&gt;
* minicom -b 115200 -o -D /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
== Die SPI-Schnittstelle ==&lt;br /&gt;
Die Pins für die SPI-Schnittstelle liegen genau wie I2C und UART an P1. MOSI an Pin 19 (GPIO10), MISO an Pin 21 (GPIO9), SCLK an Pin 23 (GPIO11), CS0 an Pin 24 (GPIO8) und CS1 an Pin 26 (GPIO7).&lt;br /&gt;
&lt;br /&gt;
Der Zugriff erfolgt über die Dateien &#039;&#039;&#039;/dev/spidev0.0&#039;&#039;&#039; (Gerät an CS0) und &#039;&#039;&#039;/dev/spidev0.1&#039;&#039;&#039; (Gerät an CS1), in die man direkt schreiben und aus denen man auch direkt lesen kann.&lt;br /&gt;
&lt;br /&gt;
== Audio-Ausgabe ==&lt;br /&gt;
[[Datei:Raspberry_Pi_Audio.jpg|thumb|Der 3,5mm Klinke-Anschluss]]&lt;br /&gt;
Der Raspberry Pi verfügt über zwei Möglichkeiten der Audio-Ausgabe, einmal digital per HDMI und wenn kein Display angeschlossen ist wird automatisch auf die analoge Ausgabe per 3,5mm-Klinken-Anschluss umgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Nach der Installation von Arch Linux ARM funktioniert jedoch vorerst keine der beiden Möglichkeiten, da das nötige Kernel-Modul nicht automatisch geladen wird.&lt;br /&gt;
&lt;br /&gt;
Manuell lässt es sich mit &#039;&#039;&#039;modprobe&#039;&#039;&#039; laden, beim nächsten Neustart ist das Problem dann jedoch wieder da:&lt;br /&gt;
* modprobe snd_bcm2835&lt;br /&gt;
Wenn man will, dass das Modul bei jedem Start automatisch geladen wird, muss man eine *.conf Datei im Verzeichnis /etc/modules-load.d/ erstellen und dort den Namen des Moduls hineinschreiben. Es bietet sich z.B. der Name sound.conf an, über die Kommandozeile ist die Datei schnell erstellt:&lt;br /&gt;
* echo &amp;quot;snd_bcm2835&amp;quot; &amp;gt; /etc/modules-load.d/sound.conf&lt;br /&gt;
Jetzt sollte die Audio-Ausgabe problemlos funktionieren. Testen kann man das beispielsweise per &#039;&#039;&#039;aplay&#039;&#039;&#039;, das im Paket &#039;&#039;&#039;alsa-utils&#039;&#039;&#039; enthalten ist:&lt;br /&gt;
* pacman -S alsa-utils&lt;br /&gt;
* aplay name_der_datei.wav&lt;br /&gt;
In diesem Paket ist auch &#039;&#039;&#039;alsamixer&#039;&#039;&#039; enthalten, ein Programm mit dem man über eine ncurses-Oberfläche die Ausgabe-Lautstärke regeln kann.&lt;br /&gt;
&lt;br /&gt;
Man muss beachten, dass nur &#039;&#039;&#039;root&#039;&#039;&#039; und Nutzer in der Gruppe &#039;&#039;&#039;audio&#039;&#039;&#039; auf die Soundkarte zugreifen können. Wenn man nicht als &#039;&#039;&#039;root&#039;&#039;&#039; arbeiten will sollte man seinen Benutzer der Gruppe hinzufügen:&lt;br /&gt;
* gpasswd -a USERNAME audio&lt;br /&gt;
&lt;br /&gt;
=== Standard-Ausgabegerät ===&lt;br /&gt;
Normalerweise wird der Sound automatisch über HDMI ausgegeben, wenn das angeschlossene Gerät das unterstützt, andernfalls über den Klinke-Anschluss. Will man das ändern, z.B. weil man einen Monitor per HDMI angeschlossen hat, den Sound aber trotzdem über die Anlage hören will, geht das ganz schnell über die Kommandozeile:&lt;br /&gt;
* amixer -c 0 cset numid=3 &amp;lt;nummer&amp;gt;&lt;br /&gt;
Dabei muss man &#039;&#039;&amp;lt;nummer&amp;gt;&#039;&#039; durch eine 0 für automatisches Wechseln, eine 1 für den Klinke-Anschluss oder eine 2 für den HDMI-Anschluss ersetzen. Soll das bei jedem Systemstart automatisch ausgeführt werden, erstellt man bei Arch Linux eine Service-Datei für systemd, z.B. so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set Default Audio Output&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/amixer -c 0 cset numid=3 &amp;lt;nummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier ersetzt man wieder &#039;&#039;&amp;lt;nummer&amp;gt;&#039;&#039; durch das gewünschte Ziel, speichert die Datei unter &#039;&#039;/etc/systemd/system/default-audio.service&#039;&#039; ab und aktiviert den soeben erstellten Service noch:&lt;br /&gt;
* systemctl enable default-audio.service&lt;br /&gt;
Ab dem nächsten Systemstart wird dadurch das Ausgabegerät automatisch eingestellt.&lt;br /&gt;
&lt;br /&gt;
== Erweiterungs-Boards ==&lt;br /&gt;
Für die GPIO-Schnittstelle des Raspberry Pi gibt es verschiedene Erweiterungs-Boards, die zusätzliche Schnittstellen bereitstellen und 3,3V zu 5V Pegelwandler besitzen. Durch diese kann man den Raspberry Pi in bestehende, 5V-basierte Schaltungen und Projekte einbinden.&lt;br /&gt;
&lt;br /&gt;
=== Prototyping-Board für den Raspberry Pi ===&lt;br /&gt;
In der Ausgabe 16 des embedded projects journal wurde auf Seite 13 ein Prototyping-Board für den Raspberry Pi vorgestellt.&lt;br /&gt;
&lt;br /&gt;
Das Board besitzt eine Spannungsversorgung, an die man 7 bis 15V anschließen kann und die auch den Raspberry Pi mitversorgt. Dadurch wird ein per microUSB angeschlossenes Netzteil überflüssig. Außerdem gibt es einen Pegelwandler, der acht GPIO-Pins des Raspberry Pi als 5V-GPIO-Pins zur Verfügung stellt und einen I2C-Pegelwandler, durch den auch hier der Anschluss von 5V-Chips möglich wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen gibt es im embedded projects journal und auf der [http://bastelstube.rocci.net/projects/MBS19_RasPi-GPIO/RasPi-GPIO.html Website des Projekts].&lt;br /&gt;
&lt;br /&gt;
=== Berrybush Pi ===&lt;br /&gt;
Ebenfalls in der Ausgabe 16 des embedded projects journal wurde auf Seite 28 der „Berrybush Pi“ vorgestellt, der ein paar mehr Schnittstellen als das Prototyping-Board bietet.&lt;br /&gt;
&lt;br /&gt;
Auch dieses Board bietet eine Spannungsversorgung für den Raspberry Pi und acht 5V-GPIO-Pins, diese sind jedoch mit Darlington-Transistoren und LEDs zur Status-Anzeige ausgestattet. Außerdem gibt es eine 3,3V (sic) SPI-Schnittstelle, die einfach zum Raspberry Pi durchgeschleift wird, einen 5V-I2C-Bus (mit Pegelwandler zum Raspberry Pi), einen RS485-Bus und eine RS232-Schnittstelle, die jedoch in den RS485-Bus gespeist wird.&lt;br /&gt;
&lt;br /&gt;
Als kleines Highlight gibt es noch die Möglichkeit, ein LCD anzuschließen. Dafür sind Portexpander und Potentiometer für Helligkeit und Kontrast vorhanden.&lt;br /&gt;
&lt;br /&gt;
Genauere Informationen, Schaltpläne und Bilder gibt es im embedded projects journal.&lt;br /&gt;
&lt;br /&gt;
=== Arduino Shield Bridge ===&lt;br /&gt;
Mit diesem Board aus Spanien kann man Arduino-Aufsteckplatinen mit dem Raspberry Pi verwenden.&lt;br /&gt;
[http://www.cooking-hacks.com/index.php/raspberry-pi-to-arduino-shield-connection-bridge.html Cooking-hacks.com]&lt;br /&gt;
&lt;br /&gt;
Dazu existiert eine Library &amp;quot;arduPi&amp;quot;:&lt;br /&gt;
&amp;quot;In order to make complete the compatibility we have created the arduPi library which allows to use Raspberry with the same code used in Arduino. To do so, we have implemented conversion functions so that you can control in the same way as in Arduino all the I/O interfaces: i2C, SPI, UART, analog, digital, in Raspberry Pi.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== I/O Module seriell/USB ===&lt;br /&gt;
&lt;br /&gt;
Alternativ bieten sich Schnittstellen-Erweiterungen über seriellen Port oder USB an, zum Beispiel mit einem handelsüblichen AVR Mikrocontroller-Modul und der Firmware von Stefan Frings&lt;br /&gt;
[http://stefanfrings.de/avr_io/].&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
Um den Raspberry Pi hat sich inzwischen eine große Community gebildet, von der immer wieder neue Projekte mit und Erweiterungen für den Raspberry Pi entwickelt werden. Eine Quelle, über die man von den Projekten erfährt ist z.B. der offizielle [http://www.raspberrypi.org/ Raspberry Pi Blog], aber es gibt auch noch viele andere Möglichkeiten, sich zu informieren.&lt;br /&gt;
&lt;br /&gt;
Einige dieser Möglichkeiten und einige ausgewählte Projekte werden in diesem Artikel vorgestellt.&lt;br /&gt;
&lt;br /&gt;
=== Pideas ===&lt;br /&gt;
[http://pideas.co.uk/projects.php Pideas] ist eine Seite, auf der Projekte für den Raspberry Pi gesammelt werden.&lt;br /&gt;
&lt;br /&gt;
=== The MagPi ===&lt;br /&gt;
[http://www.themagpi.com/ The MagPi] ist ein freies Online-Magazin, das (normalerweise) monatlich erscheint und in dem interessante Projekte genauer vorgestellt werden. Außerdem gibt es Programmier-Tutorials, Anleitungen für Linux-Software und Interviews.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 1 ====&lt;br /&gt;
Die Ausgabe 1 vom Mai 2012 behandelt folgende Themen:&lt;br /&gt;
* „The Pioneers“ - eine kleine Übersicht, wie es zur Entwicklung des Raspberry Pi kam&lt;br /&gt;
* „Skutter“ - ein Roboterarm für den Raspberry Pi&lt;br /&gt;
* „RacyPy“ - eine Linux Live-CD, basierend auf Puppy Linux und speziell angepasst für einen leichten Einstieg in die Programmierung&lt;br /&gt;
* eine Anleitung zum Installieren von Debian in einer virtuellen Maschine&lt;br /&gt;
* „Scratch“ - eine Programmiersprache und Entwicklungsumgebung zum kinderleichten Einstieg in die Programmierung&lt;br /&gt;
* „the python pit“ - ein Einstieg in die Programmierung mit Python&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 2 ====&lt;br /&gt;
Die Ausgabe 2 vom Juni 2012 behandelt folgende Themen:&lt;br /&gt;
* „PiSetup“ - eine Anleitung zum Einrichten des Raspberry Pi&lt;br /&gt;
* „In Control“ - ein Einstieg in die GPIO-Programmierung mit dem Raspberry Pi und Python&lt;br /&gt;
* „Pi Dissection“ - ein genauerer Blick auf die Einzelteile des Raspberry Pi&lt;br /&gt;
* Fortsetzung von „Skutter“ aus Ausgabe 1&lt;br /&gt;
* „Command Line Clinic“ - eine Einführung in die Benutzung der Linux-Shell&lt;br /&gt;
* „Computer Music“ - eine Anleitung zur Installation von „Schism Tracker“, einem Sequencer-Programm&lt;br /&gt;
* Fortsetzung der Debian-Anleitung aus Ausgabe 1, diesmal mit einer Anleitung zum Einrichten und Verwenden von Python&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 3 ====&lt;br /&gt;
Die Ausgabe 3 vom Juli 2012 behandelt folgende Themen:&lt;br /&gt;
* eine Anleitung zum automatischen Starten der grafischen Oberfläche von Debian&lt;br /&gt;
* Fortsetzung von „In Control“ aus Ausgabe 2&lt;br /&gt;
* Fortsetzung von „Command Line Clinic“ aus Ausgabe 2&lt;br /&gt;
* Fortsetzung von „Skutter“ aus Ausgabe 1 und 2&lt;br /&gt;
* „To Protect and Serve your Raspberry Pi“ - eine einfache Anleitung, um die GPIO-Pins des Raspberry Pi vor Kurzschlüssen zu schützen&lt;br /&gt;
* „Meeting Pi“ - Vorschäge, wie man Kinder an den Raspberry Pi heranführen kann&lt;br /&gt;
* „The C Cave“ - ein C-Tutorial&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1 und 2&lt;br /&gt;
* „Programming Fundamentals“ - ein Artikel, der die Grundlagen (fast) aller Programmiersprachen auf einfachem Weg zeigen will&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 4 ====&lt;br /&gt;
Die Ausgabe 4 vom August 2012 behandelt folgende Themen:&lt;br /&gt;
* Fortsetzung von „In Control“ aus Ausgabe 2 und 3&lt;br /&gt;
* „3-Axis Accelerometer“ - eine Anleitung für einen Beschleunigungs-Sensor am Raspberry Pi&lt;br /&gt;
* „Kernow Pi Launch“ - ein Artikel darüber, wie der Raspberry Pi an Schulen gebracht wurde&lt;br /&gt;
* „MagPi Exclusive Interview“ - ein Interview mit Eben und Liz von der Raspberry Pi Foundation&lt;br /&gt;
* „How to customise your LXDE menu“ - eine Anleitung zum Anpassen von LXDE&lt;br /&gt;
* Fortsetzung von „Command Line Clinic“ aus Ausgabe 2 und 3&lt;br /&gt;
* Fortsetzung von „The C Cave“ aus Ausgabe 3&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1 und 3&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2 und 3&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 5 ====&lt;br /&gt;
Die Ausgabe 5 vom September 2012 behandelt folgende Themen:&lt;br /&gt;
* „Steady Hands“ - eine Anleitung zum Bau eines „Heißer Draht“-Spiels mit dem Raspberry Pi&lt;br /&gt;
* „Temperature Sensor“ - eine Anleitung zum Anschluss eines I2C-Temperatursensors an den Raspberry Pi&lt;br /&gt;
* „XBMC Media Center“ - eine Einführung in Rasbbmc, einer HTPC-Distribution für den Raspberry Pi&lt;br /&gt;
* „Squeezy or Wheezy?“ - ein Vergleich von Debian 6 „Squeeze“ und Debian 7 „Wheezy“&lt;br /&gt;
* Fortsetzung von „Command Line Clinic“ aus Ausgabe 2, 3 und 4&lt;br /&gt;
* Fortsetzung von „The C Cave“ aus Ausgabe 3 und 4&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1, 3 und 4&lt;br /&gt;
* „RasPiThon 2012“ - ein Bericht über den Rasbperry Pi Programmier-Marathon&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3 und 4&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 6 ====&lt;br /&gt;
Die Ausgabe 6 vom Oktober 2012 behandelt folgende Themen:&lt;br /&gt;
* „Skutter Returns“ - Fortsetzung von „Skutter“ aus Ausgabe 1, 2 und 3&lt;br /&gt;
* „Portable Power for your Pi“ - eine Anleitung für eine mobile Stromversorgung&lt;br /&gt;
* „Star Letter: An FET Buffer Stage for GPIO Access“ - eine Möglichkeit, wie man die GPIO-Pins des Raspberry Pi belastbarer machen kann&lt;br /&gt;
* „Pumpkin Pi“ - ein Kürbis mit Bewegungs-Sensor und RGB-LEDs&lt;br /&gt;
* „Camera Pi“ - ein Interview mit David Hunt, einem Bastler, der seine Kamera mit einem Raspberry Pi ausgestattet hat&lt;br /&gt;
* „Our Raspberry Pi Summer“ - ein Beispiel für ein kleines Spiel, das mit Scratch programmiert wurde&lt;br /&gt;
* „Baby steps in a Big World“ - ein Ada-Tutorial&lt;br /&gt;
* Fortsetzung von „The C Cave“ aus Ausgabe 3, 4 und 5&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4 und 5&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4 und 5&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 7 ====&lt;br /&gt;
Die Ausgabe 7 vom November 2012 behandelt folgende Themen:&lt;br /&gt;
* „Raspberry Pi &amp;amp; Arduino“ - ein Artikel über die Kommunikation zwischen Arduino und Raspberry Pi mithilfe von Python&lt;br /&gt;
* „A little Ray of Sunshine“ - eine Solar-Stromversorgung für den Raspberry Pi und andere USB-Geräte&lt;br /&gt;
* „The Raspberry Ladder Board“ - ein Board zum Einstieg in die GPIO-Programmierung mit dem Raspberry Pi&lt;br /&gt;
* „Interrupts and Other Activities with GPIO Pins” - eine Anleitung für Interrupts und GPIO-Pins im Allgemeinen auf dem Raspberry Pi&lt;br /&gt;
* „Raspbian“ - ein Interview mit Mike Thompson, dem Erfinder von Raspbian&lt;br /&gt;
* „Turbopi“ - eine Anleitung zum Übertakten des Raspberry Pi&lt;br /&gt;
* „Pi-Evolution“ - eine Übersicht über die Entwicklung des Raspberry Pi&lt;br /&gt;
* „Make“ - eine Einführung in GNU Make und Makefiles&lt;br /&gt;
* „Welcome to the C++ Cache!“ - eine Einführung in C++&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5 und 6&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5 und 6&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 8 ====&lt;br /&gt;
Die Ausgabe 8 vom Dezember 2012 behandelt folgende Themen:&lt;br /&gt;
* „Skutter Returns“ - Fortsetzung von „Skutter“ aus Ausgabe 1, 2 und 3 bzw. „Skutter Returns“ aus Ausgabe 6&lt;br /&gt;
* „The Santa Trap“ - Heimautomation mit dem Raspberry Pi&lt;br /&gt;
* „Control your Arduino board with Raspberry Pi and Python“ - ein Python-Modul zum Steuern eines Arduino&lt;br /&gt;
* „PiGauge“ - eine Anleitung, wie man Servo-Motoren übers Internet mithilfe des Raspberry Pi steuern kann&lt;br /&gt;
* „Quick2Wire“ - Erweiterungs-Board für den Raspberry Pi&lt;br /&gt;
* „Kickstarter“ - eine Vorstellung der Kickstarter-Kampagne, um The MagPi auf Papier zu bannen&lt;br /&gt;
* „Programming the Raspberry Pi: Getting Started with Python“ - eine kurze Vorstellung des gleichnamigen Buches von Simon Monk&lt;br /&gt;
* „pibow interview“ - ein Interview mit den Erfindern des PiBow, einem Gehäuse für den Raspberry Pi&lt;br /&gt;
* „CESIL Pi“ - ein CESIL Programmier-Tutorial für den Raspberry Pi&lt;br /&gt;
* Fortsetzung von „Welcome to the C++ Cache!“ aus Ausgabe 7&lt;br /&gt;
* Fortsetzung von „Baby steps in a Big World“ aus Ausgabe 6&lt;br /&gt;
* „MySQL Database Bootcamp“ - eine Einführung in MySQL&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5, 6 und 7&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 9 ====&lt;br /&gt;
Die Ausgabe 9 vom Februar 2013 (Januar wurde ausgelassen) behandelt folgende Themen:&lt;br /&gt;
* „adafruit Interview“ - Interview mit der Gründerin von adafruit, einem Shop für DIY Elektronik&lt;br /&gt;
* „WebIOPi“ - eine REST-Schnittstelle, um die GPIO-Pins des Raspberry Pi per Javascript zu steuern&lt;br /&gt;
* „Backup your Raspberry Pi“ - eine Anleitung für die Datensicherung der SD-Karte&lt;br /&gt;
* „Pi Interface Board Review Quick2Wire“ - ein genauerer Blick auf das Erweiterungs-Board „Quick2Wire“, das in Ausgabe 8 schon kurz gezeigt wurde&lt;br /&gt;
* „RISC OS Pi“ - eine Anleitung zur Installation von RISC OS auf dem Raspberry Pi&lt;br /&gt;
* „Installing &amp;amp; Configuring ArchLinux“ - eine Anleitung zur Installation von Arch Linux auf dem Raspberry Pi, die auch die Installation von XFCE umfasst&lt;br /&gt;
* „Introducing Vala“ - ein kleines Vala Programmier-Tutorial für den Raspberry Pi und das LedBorg Erweiterungs-Board&lt;br /&gt;
* Fortsetzung von „The C Cave“ aus Ausgabe 3, 4, 5 und 6&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5, 6 und 7&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5, 6, 7 und 8&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 10 ====&lt;br /&gt;
Die Ausgabe 10 vom März 2013 behandelt folgende Themen:&lt;br /&gt;
* Fortsetzung von „WebIOPi“ aus Ausgabe 9&lt;br /&gt;
* „Try a Cocktail of Projects“ - ein Artikel, der verschiedene Erweiterungs-Möglichkeiten für den Raspberry Pi zeigt&lt;br /&gt;
* „Backing up - part 2“ - Fortsetzung von „Backup your Raspberry Pi“ aus Ausgabe 9&lt;br /&gt;
* „Bash Gaffer Tape“ - ein Bash-Tutorial&lt;br /&gt;
* „Charm on the Raspberry Pi“ - ein Charm Programmier-Tutorial für den Raspberry Pi&lt;br /&gt;
* „C++ Cache”: Fortsetzung von „Welcome to the C++ Cache!“ aus Ausgabe 7 und 8&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5, 6, 7 und 9&lt;br /&gt;
* Fortsetzung von „the python pit“ aus Ausgabe 1, 2, 3, 4, 5, 6, 7, 8 und 9&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe 11 ====&lt;br /&gt;
Die Ausgabe 11 vom April 2013 behandelt folgende Themen:&lt;br /&gt;
* Heizungssteuerung mithilfe des Raspberry Pi über ein Smartphone&lt;br /&gt;
* eine Vorstellung vom „Power and I/O Expansion Board“&lt;br /&gt;
* eine Anleitung zum Einrichten eines WLAN-Access-Points auf dem Raspberry Pi (per USB-WLAN-Dongle)&lt;br /&gt;
* Vorstellung von der Minecraft Pi-Edition&lt;br /&gt;
* „Printing with Cups“: Configuring Cups&lt;br /&gt;
* „Setting up a simple intranet“ mit einer Anleitung zum Einrichten vom Apache HTTPD&lt;br /&gt;
* eine Einführung in die Assembler-Programmierung auf dem Raspberry Pi&lt;br /&gt;
* Fortsetzung von „Charm on the Raspberry Pi“ aus Ausgabe 10&lt;br /&gt;
* kurze Anleitung zum Verwenden von Farben auf der Kommandozeile&lt;br /&gt;
* Fortsetzung von „Scratch“ aus Ausgabe 1, 3, 4, 5, 6, 7, 9 und 10&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi multi-effects ===&lt;br /&gt;
Ein Musiker hat mit einem Raspberry Pi, einem Arduino Uno und einer USB-Soundkarte ein Gitarren-Effektboard gebaut und das Ganze in seinem Blog [https://guitarextended.wordpress.com/2013/01/31/raspberry-pi-multi-effects-overview-of-the-setup/ beschrieben]. Das alles sieht im [https://www.youtube.com/watch?v=NwJNeouLqgQ Video] noch etwas sperrig aus, es sollte aber kein Problem sein, die Soundkarte und den Raspberry Pi auch noch mit ins Effektboard zu integrieren.&lt;br /&gt;
&lt;br /&gt;
Als Software verwendet er Raspbian, also das Standard-Betriebssystem des Raspberry Pi, und [http://puredata.info/ Pure Data], eine Echtzeit-Umgebung für Audio-, Video- und Grafik-Verarbeitung. Diese ist jedoch auch in den Arch Linux ARM Paketquellen verfügbar, einem Versuch, das ganze auch mit Arch Linux auszuprobieren, steht also theoretisch nichts im Wege.&lt;br /&gt;
&lt;br /&gt;
Die Installation und Konfiguration von Pure Data hat er ebenfalls in seinem Blog [https://guitarextended.wordpress.com/2013/01/28/rpi-as-guitar-effects-processor-installing-and-configuring-pd/ beschrieben].&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi guitar tuner ===&lt;br /&gt;
Ein anderer Nutzer hat ein Gitarren-Stimmgerät gebaut. Dazu hat er einen Raspberry Pi, eine USB-Webcam zur Ton-Aufnahme, eine 7-Segment-Anzeige zur Anzeige des Tons und 15 LEDs zur Anzeige der Abweichung vom Ton verwendet.&lt;br /&gt;
&lt;br /&gt;
Ausgewertet und angesteuert wird das Ganze über ein selbstgeschriebenes Java-Programm, ein Video und ein paar zusätzliche Informationen gibt es auf [https://www.youtube.com/watch?v=oB4F5VhzQf8 YouTube].&lt;br /&gt;
&lt;br /&gt;
=== Circadian Lighting ===&lt;br /&gt;
Auch für Menschen, die sich mit dem Morgen manchmal schwer tun, gibt es ein Projekt mit dem Raspberry Pi, das im Blog [http://www.raspberrypi.org/archives/3267 vorgestellt wurde]. In Verbindung mit ein paar RGB-LEDs kann man den Raspbrry Pi zu einem Wecker machen, der einen nicht mit lautem, nervigen Piepsen aus dem Schlaf reißt, sondern langsam in Verbindung mit einem künstlichen Sonnenaufgang weckt. Fehlt nur noch ein Relais, über das die Kaffeemaschine angeschaltet wird, und der Morgen ist perfekt.&lt;br /&gt;
&lt;br /&gt;
Bei diesem Projekt gibt es sogar den [https://github.com/rasathus/circadianLighting Quellcode], eine [http://rasathus.blogspot.co.uk/2013/01/circadian-lighting-part-one.html Hardware-Liste] und ein [https://www.youtube.com/watch?v=Q9_tqoOkmCU Video], das einige der Funktionen zeigt. Und mit ein paar Python-Kenntnissen kann man alles seinen Bedürfnissen anpassen und erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Leaf ===&lt;br /&gt;
Die einfachsten Ideen sind doch manchmal die Besten. „Dr. Monk” hat in seinem Blog eine Pinbelegung des Raspberry Pi [http://www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.html veröffentlicht], die (in der richtigen Größe ausgedruckt) genau auf den P1-GPIO-Anschluss des Raspberry Pi passt. So vergisst man nie die Pinbelegung, wenn man gerade mal wieder mit dem Raspberry Pi bastelt und auch ein falsches Anschließen, das zur Zerstörung des Mini-Computers oder der angeschlossenen Teile führen kann, passiert nicht mehr so leicht.&lt;br /&gt;
&lt;br /&gt;
=== raspberry-tools ===&lt;br /&gt;
Eine Tool-Sammlung für den Raspberry Pi, veröffentlicht unter der GNU General Public License Version 2 und gehostet auf [https://github.com/rookies/raspberry-tools github]. Momentan enthält diese Sammlung nur ein Programm, es folgen aber noch weitere nützliche Tools.&lt;br /&gt;
&lt;br /&gt;
==== scope ====&lt;br /&gt;
Scope ist Teil von raspberry-tools. Es zeichnet digitale Signale von einem oder mehreren GPIO-Pins auf und bereitet die Daten für eine Auswertung mit [http://xoscope.sourceforge.net/ xoscope] auf.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich den Quellcode geholt hat, muss man erst einmal das Hauptprogramm für den Raspberry Pi kompilieren. Das geht entweder direkt auf dem Raspberry Pi oder per Cross-Compiler.&lt;br /&gt;
* g++ -o RasPi_logGPIO RasPi_logGPIO.cpp&lt;br /&gt;
Nachdem sowohl die entstandene Datei &#039;&#039;RasPi_logGPIO&#039;&#039; als auch das Script &#039;&#039;RasPi_logGPIO.sh&#039;&#039; im gleichen Ordner auf dem Raspberry Pi sind, kann man die Aufzeichnung starten:&lt;br /&gt;
* ./RasPi_logGPIO.sh [Liste mit GPIO-Pins] &amp;gt; ausgabedatei.txt&lt;br /&gt;
Für die Pins 14, 31 und 23 sieht das Kommando z.B. so aus:&lt;br /&gt;
* ./RasPi_logGPIO.sh 14 31 23 &amp;gt; ausgabedatei.txt&lt;br /&gt;
Die Aufzeichnung kann mit Strg+C gestoppt werden.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man die entstandene Datei (z.B. hier ausgabedatei.txt) normalisieren und ins xoscope-Format umwandeln, das funktioniert auch problemlos auf einem anderen Computer:&lt;br /&gt;
* ./RasPi_normalizeGPIO.py ausgabedatei.txt &amp;gt; ausgabedatei.dat&lt;br /&gt;
Nun entsteht die Datei &#039;&#039;ausgabedatei.dat&#039;&#039;, die man mit xoscope ansehen kann:&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;300&amp;quot; widths=&amp;quot;300&amp;quot;&amp;gt;&lt;br /&gt;
Datei:RasPiTools_scope_sample1.png|eine Beispiel-Aufnahme&lt;br /&gt;
Datei:RasPiTools_scope_sample2.png|die gleiche Aufnahme, vergrößert&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Dazu muss man nur die Datei laden und die entsprechenden Memory-Einträge anzeigen lassen. In diesem Beispiel ist Pin 14 in Mem A, Pin 31 in Mem B und Pin 23 in Mem C, also genau in der Reihenfolge, in der man die Pin-Nummern dem Programm übergeben hat.&lt;br /&gt;
&lt;br /&gt;
== Anhang ==&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
[[Datei:Raspberry_Pi_Power.jpg|thumb|Der microUSB-Anschluss zur Stromversorgung]]&lt;br /&gt;
Um den Raspberry Pi mit Strom zu versorgen gibt es verschiedene Möglichkeiten. Entscheidend ist nur, dass möglichst konstante 5V bei bis zu 700 mA auf einem microUSB-Stecker geliefert werden.&lt;br /&gt;
==== mit USB-Netzteil ====&lt;br /&gt;
Wenn man ein genügend starkes USB-Netzteil mit einem microUSB-Kabel verbindet hat man eine passende Stromversorgung für den Raspberry Pi.&lt;br /&gt;
Gut funktioniert zum Beispiel das iPhone-Ladegerät, aber auch andere, günstigere Netzteile sollten keine Probleme machen.&lt;br /&gt;
==== Netzteil selbst bauen ====&lt;br /&gt;
Wenn man kein USB-Netzteil zur Hand hat kann man auch selbst ein Steckernetzteil, das 5V Gleichspannung liefert, mit einem microUSB-Kabel zusammenlöten.&lt;br /&gt;
&lt;br /&gt;
Dafür braucht man erst einmal ein microUSB-Kabel und ein passendes Steckernetzteil. (siehe Abb. 1)&lt;br /&gt;
Man entfernt den USB-A-Stecker und befreit das Kabelende ein Stück von seinem Mantel, es kommen vier Adern zum Vorschein. (siehe Abb. 2)&lt;br /&gt;
Uns interessiert die grüne und die weiße Ader nicht, da wir keine Daten übertragen wollen.&lt;br /&gt;
Jetzt muss auch noch der Stecker vom Netzteil entfernt und die Adern abisoliert werden. (siehe Abb. 3)&lt;br /&gt;
Bei manchen Netzteilen ist eine Markierung für Plus- oder Minus-Pol angebracht. Wenn das nicht der Fall ist, muss man mit einem Multimeter nachmessen. (siehe Abb. 4)&lt;br /&gt;
Nun isoliert man auch noch die schwarze und rote Ader des USB-Kabels ab und verlötet die schwarze Ader mit dem Minus-Pol des Netzteils und die rote Ader mit dem Plus-Pol des Netzteils. Danach packt man um die Adern jeweils einen Schrumpfschlauch zur Isolation. Wenn man um die ganze Verbindung noch einen großen Schrumpfschlauch packt wird die Verbindung nochmal um einiges stabiler. (siehe Abb. 5)&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:RasPi_Netzteil_Selbstbau1.jpg|Abb. 1: Die Ausgangsmaterialien&lt;br /&gt;
Datei:RasPi_Netzteil_Selbstbau2.jpg|Abb. 2: Das USB-Kabel ohne Mantel mit der roten (+5V), schwarzen (GND), grünen (Data+) und weißen (Data-) Ader&lt;br /&gt;
Datei:RasPi_Netzteil_Selbstbau3.jpg|Abb. 3: Das Netzteil mit abisolierten Kabelenden&lt;br /&gt;
Datei:RasPi_Netzteil_Selbstbau4.jpg|Abb. 4: Das Multimeter zeigt eine positive Zahl an, daher ist das Kabel mit der roten Klemme der Plus-Pol, das Kabel mit der schwarzen Klemme der Minus-Pol.&lt;br /&gt;
Datei:RasPi_Netzteil_Selbstbau5.jpg|Abb. 5: Das fertige Netzteil, die Verbindung ist mit einem Schrumpfschlauch geschützt.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
=== USB-Geräte ===&lt;br /&gt;
[[Datei:Raspberry_Pi_USB.jpg|thumb|Die beiden USB Host-Anschlüsse]]&lt;br /&gt;
Generell kann man am Raspberry Pi alle USB-Geräte verwenden, die vom Linux-Kernel unterstützt werden und somit auch an anderen Linux-PCs funktionieren.&lt;br /&gt;
&lt;br /&gt;
Es ist allerdings zu beachten, dass die USB-Ports nur vergleichsweise wenig Strom liefern können (nicht die vollen 500 mA, die laut USB2.0 Standard maximal möglich sind), für größere Verbraucher wie z.B. 2,5-Zoll-Festplatten ohne externe Stromversorgung muss man daher einen externen USB-Hub mit Stromversorgung verwenden.&lt;br /&gt;
==== Maus &amp;amp; Tastatur ====&lt;br /&gt;
Da es für Mäuse und Tastaturen Standard-Profile gibt, die auch von allen (bis auf extrem wenige Ausnahmefälle) Geräten eingehalten werden, sollte es hier keine Probleme geben. Die Eingabegeräte sollten sofort verwendbar sein und auch Hot-Plugging stellt im Normalfall kein Problem dar.&lt;br /&gt;
==== USB-Sticks &amp;amp; USB-Festplatten ====&lt;br /&gt;
Wenn man seinem Raspberry Pi zusätzlichen Speicherplatz verpassen will bietet es sich an, USB-Sticks bzw. -Festplatten anzuschließen. Da es auch hier Standard-Profile gibt sollten diese sofort vom Linux-Kernel erkannt werden. Einhängen ([https://de.wikipedia.org/wiki/Mounten mounten]) muss man sie jedoch unter Arch Linux ARM generell selbst, wenn man nicht einen [https://de.wikipedia.org/wiki/Fstab fstab-Eintrag] erstellt hat oder eine Desktop-Oberfläche installiert hat, die das automatisch erledigt.&lt;br /&gt;
==== WLAN-Sticks ====&lt;br /&gt;
Wird der WLAN-Stick vom Kernel erkannt (erkennbar daran, dass ein entsprechendes Interface von &#039;&#039;&#039;ifconfig -a&#039;&#039;&#039; aufgelistet wird), kann man ein Netzwerk-Profil mit [https://wiki.archlinux.org/index.php/Netcfg netcfg] (Quasi-Standard unter ArchLinux, bei dem die Profile über Konfigurationsdateien erstellt werden), dem [https://wiki.archlinux.org/index.php/NetworkManager NetworkManager] oder [https://wiki.archlinux.org/index.php/Wicd Wicd] erstellen. Sollte die Karte nicht erkannt werden, hilft eventuell ein Blick auf die [https://wiki.archlinux.org/index.php/Wireless_Setup Wireless Setup] Seite im ArchLinux Wiki.&lt;br /&gt;
==== TV-Karten ====&lt;br /&gt;
Will man den Raspberry Pi als HTPC verwenden, kann es sinnvoll sein, eine TV-Karte per USB anzuschließen.&lt;br /&gt;
Hier gibt es generell 4 Möglichkeiten:&lt;br /&gt;
* &#039;&#039;&#039;DVB-T&#039;&#039;&#039;, also digitales Fernsehen, das per Funk ausgestrahlt wird - kostenlos, jedoch nicht überall verfügbar&lt;br /&gt;
* &#039;&#039;&#039;DVB-S&#039;&#039;&#039;, also digitales Fernsehen, das per Satellit ausgestrahlt wird - kostenlos und generell überall verfügbar, jedoch wird eine Satelliten-Schüssel benötigt&lt;br /&gt;
* &#039;&#039;&#039;DVB-C&#039;&#039;&#039;, also digitales Fernsehen, das über das Kabelnetz ausgestrahlt wird - Kosten für den Kabelanschluss fallen an, Sender-Angebot vom Kabelanbieter abhängig&lt;br /&gt;
* &#039;&#039;&#039;Analog-TV&#039;&#039;&#039;, also analoges Fernsehen, das über das Kabelnetz ausgestrahlt wird - Kosten für den Kabelanschluss fallen an, kein HD, Sender-Angebot vom Kabelanbieter abhängig&lt;br /&gt;
&lt;br /&gt;
Nicht alle Geräte werden von Linux unterstützt, eine Übersicht, die nach Übertragungstechnik (DVB-T/-S/-C oder Analog) und Anschluss-Art (beim Raspberry Pi immer USB) geordnet ist, findet man im [http://linuxtv.org/wiki/index.php/Hardware_Device_Information LinuxTVWiki], zu dem man natürlich auch selbst beitragen kann, wenn man ein Gerät getestet hat.&lt;br /&gt;
==== Soundkarten ====&lt;br /&gt;
Da der Klinke-Ausgang des Raspberry Pi nicht mit einem D/A-Wandler, sondern nur per PWM funktioniert, ist die Sound-Qualität nicht gerade überragend. Wenn man das verbessern will, oder wenn man Sound per Line-Eingang oder per Mikrofon aufnehmen will, bietet es sich an, eine USB-Soundkarte anzuschließen.&lt;br /&gt;
&lt;br /&gt;
Ist man unsicher, ob die Soundkarte unterstützt wird, hilft ein Blick ins [http://www.alsa-project.org/main/index.php/Matrix:Main Wiki vom ALSA-Projekt].&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [http://downloads.raspberrypi.org/images/archlinuxarm/archlinux-hf-2013-02-11/archlinux-hf-2013-02-11.zip.torrent Torrent-Download von Arch Linux ARM 2013-02-11]&lt;br /&gt;
* [http://downloads.raspberrypi.org/images/archlinuxarm/archlinux-hf-2013-02-11/archlinux-hf-2013-02-11.zip HTTP-Download von Arch Linux ARM 2013-02-11] (SHA-1: 1d2508908e7d8c899f4a5284e855cb27c17645dc)&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.raspberrypi.org/ offizielle Website des Raspberry Pi] (englisch)&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Raspberry_Pi Wikipedia: Raspberry Pi] (deutsch)&lt;br /&gt;
* [http://www.themagpi.com/ The MagPi] (englisch)&lt;br /&gt;
* [http://archlinuxarm.org/ Arch Linux ARM] (englisch)&lt;br /&gt;
* [https://www.archlinux.org/ Arch Linux] (englisch)&lt;br /&gt;
* [https://de.wikipedia.org/wiki/Arch_Linux Wikipedia: Arch Linux] (deutsch)&lt;br /&gt;
* [http://www.kammerath.net/asterisk-virtuelle-telefonanlage.html Asterisk auf dem Raspberry Pi] (deutsch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>Stefanfrings de</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=75527</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=75527"/>
		<updated>2013-05-07T09:14:49Z</updated>

		<summary type="html">&lt;p&gt;Stefanfrings de: Akku Typen und Spannungsbereich erweitert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo oder Nickel Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 7 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Diagramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC im Prinzip auch ist.  &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren heißt Block-Kommutierung und ist ein Kompromiss aus Aufwand und Ergebnis:&lt;br /&gt;
Idealerweise werden die Ströme im Stator so eingeprägt, dass der Statorfluss dem Rotorfluss immer um 90° vorauseilt. Nur so wird das ideale Drehmoment erzeugt (siehe Literatur zur permanenterregten Synchronmaschine). Allerdings hat dieses Verfahren, auch Feldorientierte Regelung oder Vektor-Regelung genannt, den Nachteil, dass meistens teure Positionssensorik für den Rotor nowendig ist und auch die nötige Rechenleistung stark ansteigt. Die komplette Regelung muss für jede PWM-Periode gerechnet werden, damit sich der Aufwand lohnt. &lt;br /&gt;
Im Fall der Block-Kommutierung ist der ideale Kommutierungszeitpunkt also der, bei dem das Stator-Feld dem Rotor-Feld im Mittel um 90 ° vorauseilt. Dieser ideale Kommutierungszeitpunkt ist wegen der als konstant angenommenen Rechenzeit für die Kommutierung drehzahlabhängig.&lt;br /&gt;
&lt;br /&gt;
Zur Erreichung einer höheren Maximaldrehzahl kann das Rotorfeld durch das Statorfeld im sogenannten Feldschwäch-Betrieb geschwächt werden. Es ergeben sich Feldschwäch-(Blind)ströme im Bereich der Nennströme.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann auch ein BLDC nicht ohne Kenntnis der Lage des Rotors kommutiert werden. Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Mikrocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motors erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja keinen fertigen Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung per Timer (30° Verzögerung) ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Je nach Komplexität des BLDC Controllers und des damit verbundenen Programmieraufwands ist es aber auch möglich (wie von sehr vielen Nutzern implementiert) die Kommutierung direkt nach dem Analog-Komparator Interrupt auszulösen - d.h. mit 0° Verzögerung. In diesem Fall spricht man von Phasenvoreilender (phaseadvance) Ansteuerung. Der Motor kann dadurch eine höhere Maximaldrehzahl erreichen, jedoch mit geringerem Drehmoment - die Stromaufnahme ist höher und der Wirkungsgrad geringer (siehe [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf AN1083, Seite 18]). Der Effekt ist ähnlich dem Feldschwächebetrieb einer Asynchronmaschine.&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motors lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine. Übrigens ist es empfehlenswert, den Sollwert etwas zu &amp;quot;dämpfen&amp;quot;, damit keine schlagartigen Änderungen des Duty-Cycles erfolgen können. Vor allem schlagartige Abbremsmanöver können starke Überspannungsspitzen hervorrufen, die den Regler zerstören können!&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
Anmerkung JB: Gerade an einem Festplattenmotor getestet, bei Drehung von der Hand lassen bis zu 600mVss sinusförmig auf dem Oszilloskop blicken, Frequenz bis zu 20 Hz, muss sich umeinen mehrpoligen Motor Handeln, so schnell hab ich nicht gedreht ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip eines Anlaufvorgangs eines sensorlosen BLDC ist folgendes:&lt;br /&gt;
- Man präge ein Feld ein, bei dem angenommen werden muss, dass der Motor diesem ab Stillstand auch folgt.&lt;br /&gt;
- Sobald diese Annahme durch Auftreten eines durch BEMF erzeugten Ereignisses bestätigt wird, kann in den geregelten Betrieb umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Komparator ===&lt;br /&gt;
&lt;br /&gt;
Wenn man sich für die Kommutierungs-Erkennung per Analogkomparator entscheidet, muss man noch ein sehr nützliches Feature von den AVRs kennen. Da man ja abwechslungsweise drei verschiedene Signale (BEMF_A...C) mit der Mittelpunktspannung vergleichen muss, aber nur ein einziger Analogkomparator vorhanden ist, muss man den sogenannten Analog-Multiplexer benutzen. Mit diesem in den AVRs integrierten Multiplexer kann man nun die Spannung am Pin &amp;quot;AIN0&amp;quot; mit einem beliebigen Analogeingang (ADC0...ADC7) vergleichen. Natürlich kann man nicht mehrere Kanäle gleichzeitig anwählen, da es nur einen einzigen Komparator gibt. Das ist für unsere Anwendung allerdings kein Problem, wir müssen immer nur eines der BEMF-Signale mit der Mittelpunktspannung vergleichen.&lt;br /&gt;
&lt;br /&gt;
Näheres dazu und wie man den Multiplexer benutzt erfährt man im Datenblatt des verwendeten Mikrocontrollers. Der entsprechende Abschnitt heisst &amp;quot;Analog Comparator Multiplexed Input&amp;quot; (unter &amp;quot;Analog Comparator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über [[UART]], [[SPI]], [[I2C]] oder mit einem Potentiometer vorgeben. Welche Ansteuerung man wählt hängt davon ab, wie und wo der Motor eingesetzt werden soll und ist deshalb jedem selber überlassen.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass sie die beiden Zustände &#039;&#039;Low&#039;&#039; und &#039;&#039;High&#039;&#039; mit einer fast perfekten Geraden verbindet!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00885a.pdf BLDC Theorie(AN885 Microchip)]&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Stefanfrings de</name></author>
	</entry>
</feed>