<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ESP-IDF on Phillip Kühne</title><link>https://phillipkuehne.de/tags/esp-idf/</link><description>Recent content in ESP-IDF on Phillip Kühne</description><generator>Hugo</generator><language>de-DE</language><lastBuildDate>Sat, 01 Jun 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://phillipkuehne.de/tags/esp-idf/index.xml" rel="self" type="application/rss+xml"/><item><title>DMX-Board (2024)</title><link>https://phillipkuehne.de/projekte/dmx-board/</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate><guid>https://phillipkuehne.de/projekte/dmx-board/</guid><description>&lt;style&gt;&#10; div.splitbox {width:100%; overflow:auto;}&#10;&#10; div.splitbox div.column-left {&#10; width:48%;&#10; float:left;}&#10; div.splitbox div.column-right {&#10; width:48%;&#10; float:right;}&#10;&#10; @media only screen and (max-width: 600px) {&#10; div.splitbox div.column-left {&#10; width:100%;&#10; float:left;}&#10; div.splitbox div.column-right {&#10; width:100%;&#10; float:left;}&#10; }&#10; &lt;/style&gt;&lt;div class="splitbox"&gt;&lt;div class="column-left"&gt;&#10;&lt;p&gt;Im Rahmen des Studienmoduls &amp;ldquo;Mikrocontroller-Anwendungen&amp;rdquo; habe ich in&#10;Zusammenarbeit mit meinem Kommilitonen Tom Wahl dieses Board und die dazugehörige&#10;Software entwickelt.&#10;Technische Grundlage ist ein ESP32-Mikrocontroller von Espressif.&lt;/p&gt;&#10;&lt;p&gt;Ursprüngliches Ziel im Rahmen der Prüfungsleistung war es, eine einfache Aufnahme&#10;und Wiedergabe von Lichtprogrammen, also auf dem Eingang eingehenden Daten inklusive&#10;ihres Timings zu ermöglichen.&lt;/p&gt;&#10;&lt;p&gt;Nach Abschluss des Moduls wurde die Hardware dann auf Anfrage des Professors&#10;noch um GPIO-Klemmen erweitert. Ziel war es, die Platine als Anschauungs- und&#10;Versuchsobjekt in Lehrveranstaltungen nutzen zu können.&lt;/p&gt;&#10;&lt;p&gt;Mein Fokus bei diesem Projekt lag in der Software:&#10;Die als Prüfungsleistung eingereichte Software wurde direkt auf Grundlage des&#10;ESP-IDF entwickelt, ohne Verwendung des Arduino-Frameworks. Die Ansteuerung des&#10;DMX-Busses und der Bedienelemente (OLED-Display, Encoder) erfolgen über getrennte&#10;FreeRTOS-Tasks. So kann eine Priorisierung der Bedienung des DMX-Busses&#10;sichergestellt werden.&lt;/p&gt;&#10;&lt;p&gt;Zusätzlich erfolgt die Ansteuerung des DMX-Busses per DMA-Controller. Dies bietet&#10;sich an, da der DMX-Bus üblicherweise von einem zentralen Knoten (dessen Rolle&#10;wir hier übernehmen), dem Controller, bespielt wird. Eine DMX-Übertragung mit&#10;Daten für alle 512 Kanäle eines DMX-Universums benötigt ca. 22 ms. Geschieht&#10;dies nun mit der üblichen Framerate von 40 FPS, stellt man fest, dass der DMX-Bus&#10;fast durchgängig mit Daten bespielt wird. Da allerdings alle Daten bereits zu&#10;Beginn der Übertragung feststehen, wäre es ineffizient, diese unter Verwendung&#10;von CPU-Zeit durchzuführen.&lt;/p&gt;&#10;&lt;p&gt;Unter Verwendung von DMA kann der Mikrocontroller problemlos den DMX-Bus sowie&#10;die gesamte andere vorhandene Peripherie bedienen, wie im Screenshot des Logic Analyzers&#10;zu sehen ist.&lt;/p&gt;&#10;&#10;&#10;&lt;/div&gt;&lt;div class="column-right"&gt;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194513_721.jpg"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im oberen Teil diente vorübergehend als Logic Analyzer"&#10; data-title="Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im oberen Teil diente vorübergehend als Logic Analyzer" title="Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im oberen Teil diente vorübergehend als Logic Analyzer"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194513_721.jpg"&#10; alt="Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im oberen Teil diente vorübergehend als Logic Analyzer"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Versuchsaufbau der Schaltung auf Breadboard. Der Arduino Uno im oberen Teil diente vorübergehend als Logic Analyzer&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194327_099.jpg"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter."&#10; data-title="Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter." title="Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter."&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194327_099.jpg"&#10; alt="Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter."&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Erste zum Test geschriebene Software zur Ansteuerung eines RGBW-Strahlers. M steht hierbei für Mode, S ist bei RGB-Ansteuerung (Mode 0) nicht relevanter Zusatzparameter.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194546_0be.png"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX"&#10; data-title="Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX" title="Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/Notes_240626_194546_0be.png"&#10; alt="Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Parallele Ansteuerung der verschiedenen Datenbusse. Oben: DMX&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/IMG_0817.webp"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Schaltung als einfache CNC-gefräste Platine"&#10; data-title="Schaltung als einfache CNC-gefräste Platine" title="Schaltung als einfache CNC-gefräste Platine"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/IMG_0817.webp"&#10; alt="Schaltung als einfache CNC-gefräste Platine"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Schaltung als einfache CNC-gefräste Platine&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&lt;figure class="project-figure"&gt;&#10; &lt;div class="project-figure-media"&gt;&#10; &lt;a href="https://phillipkuehne.de/images/projects/dmx-board/IMG_20241206_134958.geaendert.jpg"&#10; &#10; class="lightbox-image"&#10; &#10; &#10; data-description="Gefertigte Platinen"&#10; data-title="Gefertigte Platinen" title="Gefertigte Platinen"&#10; &#10; &gt;&#10; &lt;img&#10; src="https://phillipkuehne.de/images/projects/dmx-board/IMG_20241206_134958.geaendert.jpg"&#10; alt="Gefertigte Platinen"&#10; &#10; &#10; loading="lazy"&#10; decoding="async"&#10; /&gt;&#10; &#10; &lt;span class="project-zoom-badge" aria-hidden="true"&gt;&#10; &lt;i class="fa fa-expand"&gt;&lt;/i&gt;&#10; &lt;/span&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&lt;figcaption&gt;&lt;p&gt;Gefertigte Platinen&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&#10;&#10;&#10;&#10;&lt;/div&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;/div&gt;</description></item></channel></rss>