Schlagwort-Archive: Arduino

BitBastelei #173 – Arduino Solar-Monitor

BitBastelei #173 - Arduino Solar-Monitor

(286 MB) 00:34:45

2015-11-08 11:00 🛈

Vor etwas längerer Zeit hatte ich einen USBASP mit ATMega8 zusammen mit diversen Stromsensoren ein Solarmonitoring gerbaut. Bis auf etwas bessere Befestigungen lief das System bisher fehlerfrei, jedoch muss nur für das Monitoring ein Netbook laufen um die Daten per USB anzunehmen und auf den Netzwerkanschluss weiterzuleiten. Da ohnehin eine Erweiterung ansteht machen wir es direkt richtig: Der USBASP wird durch einen deutlich größeren ATMega ersetzt, mit mehr Strom- und Spannungssensoren versorgt und erhält letztendlich eine passende Netzwerkkarte um die Daten ohne Umweg an meinen Server zu senden.

BitBastelei #169 – Hausbus: PCB-Prototyp

BitBastelei #169 - Hausbus: PCB-Prototyp

(218 MB) 00:18:33

2015-10-11 10:00 🛈

Im letzten Video hatte ich es ja schon angekündigt: Die ersten Boards sollen kommen. Tja, nun ist es soweit, also schnell zusammenlöten und schauen, dass alles passt. Selbstverständlich nicht ohne Besuch von Murphy.

Arduino: boolean vs. byte

Möchte man einen einfachen Status im an/aus-Format notieren ist üblicherweise ein Boolean der Dateityp der Wahl. Technisch gesehen unterstützt der bei Arduino verwendete ATMega jedoch immer nur 8-Bit-Register, sodass auch ein Boolean (1-Bit-Wert) intern meist als Byte (8-Bit-Wert) abgespeichert wird. Klingt nicht sehr effizient, aber kann man per Hand tatsächlich “besser” arbeiten?

Gehen wir von einem einfachen Beispiel aus: Wir möchten mehrere dieser Zustände speichern und auf deren Basis eine Entscheidung treffen. Für dieses Beispiel wird der Wert immer invertiert – in diesem Fall könnte man es auch kompakter Lösen, aber da es nur als Platzhalter für komplexeren Code gilt lasse ich das mal so stehen. Alle Beispiele sind Auszüge eines größeren Programms, die absoluten Größen also ohne weitere Aussagekraft.

Erster Versuch: Mit Boolean

boolean dir1 = false;
boolean dir2 = false;
boolean dir3 = false;
//[...]
if(dir1) {
  //Aktionen
  dir1 = false;
}else{
  dir1 = true;
}

//23.644 Byte Flash, 1.537 Byte RAM

Zum Vergleich mit einem einzigen “byte”-Wert, dessen einzelne Bits als Informationsspeicher verwendet werden sollen:

byte dir = 0x00;
//[...]
if(dir & 0x01) {
  //Aktionen
  bitSet(dir, 0x01);
}else{
  bitClear(dir, 0x01);
}

//23.650 Byte Flash, 1.535 Byte RAM

Schaut man auf das eigentliche Programm gewinnt die Variante mit Boolean – 6 Byte kleiner. Nicht wirklich verwunderlich – hat man ein ganzes Byte müsste sich direkt ein Sprung bei !=0 durchführen lassen. Mit Byte-Teilen ist ein Vergleich oder ein vorheriges UND nötig, welches zusätzliche Befehle und somit auch Speicher und CPU-Takte verschlingt. Schaut man jedoch auf den RAM dreht sich das Bild: Hier ist das einzelne Byte sparsamer. 2 Byte kommen mir jedoch etwas klein vor – ich fürchte hier hat der Compiler mit seinen Optimierungen einiges der boolean-Logik geschmissen, denn theoretisch sollte zur ersten Variante deutlich mehr Abstand sein.

Wie auch immer: Selbst ohne große Analyse zeigt sich, was ich schon erwartet hatte: Boolean spart Flash, Byte spart RAM. Welche Variante die sinnvollere ist hängt letztendlich vom jeweiligen Projekt ab. Da mir der RAM ausging war die Umstellung auf Byte eine gute Möglichkeit etwas zu sparen. Möglicherweise hätte es auch gereicht den Compiler nicht mit -Os anzuweisen, einen möglichst kleinen Code zu generieren.

Arduino® Pro Mini Pinout Cheat-Sheet

Ich arbeite auf Grund des geringen Preises häufig mit Arduino®-kompatiblen Boards der “Pro Mini”-Serie. Leider sind die Pins auf diesen Boards nicht nach der CPU sondern dem Standard der Arduino-IDE beschriftet. Bisher nutzte ich diverse Pinout Cheat-Sheets aus dem Netz, jedoch haben viele dieser Diagramme vertauschte Pins, welches bei mir in den letzten Wochen zu einigen fehlerhaften Aufbauten führten. Lange Rede kurzer Sinn: Ich werfe ein weiteres Cheat-Sheet in den Raum – hoffentlich mit weniger fehlerhaft beschrifteten Pins. Wenn doch etwas auffällt: Die Kommentare sind offen.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2015/08/prominipinout-1.2-300×212.png
[DA]

BitBastelei #160 – Arduino-RGB-LED-Spaß

BitBastelei #160 - Arduino-RGB-LED-Spaß

(347 MB) 00:18:04

2015-08-09 10:00 🛈

Das Chaos Communication Camp steht vor der Tür – wichtigste Zutat? Blinkenlights! Gezeigt werden gleich 3 Konzepte für RGB-LEDs am Arduino Pro Mini:
– RGB-Streifen mit HL1606-Controller
– “Klassischer” RGB-Streifen mit MOSFETs
– RGB-Knoten auf Basis des RGB-CTL aus BitBastelei #11

Weitere Links:

BitBastelei #153 – Hausbus: Planung & Prototyp

BitBastelei #153 - Hausbus: Planung & Prototyp

(32 MB) 00:20:58

2015-06-14 10:00 🛈

Auch wenn die Temperaturen nicht grade zum Basteln einladen: Etwas Fortschritt gibt es beim Hausbus. Wegen des geringen Preises und der einfachen Anpassbarkeit geht es erst mal auf Arduino-Basis. Da das Protokoll nicht sonderlich komplex ist lässt sich später immer noch auf ARM o.Ä. umstellen. Da die Shields für die angedachten Pro-Minis etwas überdimensioniert sind muss ein eigenes Mini-Shield her. IC-Technisch werde ich mich an iSysBus und den diversen Ardunio-Shields orientieren. Ein Breadboard-Test konnte bereits Steuerbefehle empfangen und senden. Passende PCBs sind inzwischen bestellt, die Schaltpläne und Boarddaten gibt es wenn der erste Prototyp grundsätzlich läuft.

BitBastelei #150 – Hausbus-Überblick & Ausblick

BitBastelei #150 - Hausbus-Überblick & Ausblick

(111 MB) 00:16:40

2015-05-24 10:00 🛈

Die hier verwendete Hausautomation ist ein Thema, um das ich bei Nachfragen gerne einen Bogen gemacht habe. Zwar läuft das System seit über 6 Jahren ohne Ausfälle, die verwendete Technik ist allerdings “gewachsen”. Passend zur 150. Folge habe ich mich doch mal aufgerafft um Ordnung zu schaffen. Hier gibt es einen Überblick über die momentan laufende Technik und einen ersten Ausblick auf die kommenden Modernisierungsmaßnahmen.

Part 2: TBA

Links:

BitBastelei #142 – Arduino als Kühlschrankmonitor mit DS18B20

BitBastelei #142 - Arduino als Kühlschrankmonitor mit DS18B20

(100 MB) 00:28:30

2015-03-29 10:00 🛈

Passend zum gestrigen Arduino-Day habe auch ich ein (kompatibles) Board ausgegraben. Das Ziel: Mein Kühlschrank. Diesen möchte ich bei Sonnenschein über einen Inverter an meiner Solaranlage betreiben, um unschöne Probleme zu vermeiden wäre es aber eine gute Idee die Temperatur im Auge zu behalten. Punkt für Arduino – durch die vielen Libraries lässt sich das Ganze in wenigen Minuten erledigen.

Als Bonus werfe ich einen Blick auf die Sleep-Modes, also die Möglichkeit den µC schlafen zu legen um weiteren Strom zu sparen.

Links zum Video:

BitNotice #77 – Arduino Pro Mini Klon

BitNotice #77 - Arduino Pro Mini Klon

(51 MB) 00:08:32

2015-01-06 21:56 🛈

Eigentlich war ich nie ein wirklicher Fan des Arduinos – natürlich ist er praktisch um eine Schaltung auszuprobieren oder rumzuspielen, für “richtige” Einsätze ist er aber viel zu ineffizient und teuer. Zumindest bei Letzterem muss ich jetzt meine Aussage zurückziehen. Dieses kleine Board, welches meist unter dem Begriff “Arduino Pro Mini” zu finden ist und einen ATMega 328P beheimatet, kostet grade einmal 1,50€ und ist somit günstiger als ich den Chip selbst bekommen kann. Praktischerweise befinden sich auch gleich noch ein 16MHz Quarz, Kleinkram, die obligatorische LED und ein 5V Linearregler an Board. Letzterer kann auch übersprungen und die 5V-Schine direkt von einem Netzteil oder Schaltregler gespeist werden. Auch ist bereits ein Arduino-Bootloader installiert – um diesen nutzen zu können ist eine RS232-Verbindung zum PC notwendig. Ich verwende hier einen einfachen USB-Adapter, dieser ist zwar nicht optimal aber läuft. Auf Grund der Größe, möglichkeit auch ohne Arduino-IDE eigene Programme nutzen zu können und nicht zuletzt des Preises dürfte sich diese Platform zukünftig an so einigen meienr Projekte wiederfinden.

BitBastelei #124 – Bipolar-Transistoren: Funktion & Berechnung des Vorwiderstands

BitBastelei #124 - Bipolar-Transistoren: Funktion & Berechnung des Vorwiderstands

(42 MB) 00:20:16

2014-11-23 11:00 🛈

Funktionsweise eines BJT sowie Berechnung des Vorwiderstands für den Betrieb an einem Arduino.