All Entries (Page 32)

USB/Serial PWM Fan Controller Using an Arduino Entry created on 2020-11-22 (edited 2021-10-15) Authors: steeph (370) Categories: Arduino (4) Case Modding (11) Code (31) Computer (78) DIY (16) Electronics (16) Fans (1) Hardware (16) Projects (41) incomplete (22) Languages used: en (255) Topics: Projects → Arduino (4) Projects → Case Modding (9) edit

I wanted to be able to control the speed of the fans in my big NAS, Fred, individually. Even though the mainboard in use has five PWM fan connectors, the chipset can only control the speed of all fans together. There are probably good fan controllers commercially available that solve this problem better than I did. But they seemed overpriced and it seemed like a fun learning project for me.

The fan controller that I made uses an Arduino Nano clone that listens to it's serial port, waiting for a command to change the speed of a fan. When a command is recognised the continuous PWM signal for that fan is changed accordingly. It's possible to control up to six fans this way with an Arduino Nano. I'm only using three though since I only have three fan groups that need to be controlled separately.

The Arduino sketch/C code for the Arduino Nano that I used is as follows.




//fan speed sensor wire attached to digital pin 2 with a 10kohm pullup resistor
//fan PWM control wire attached directly to digital pin 9

#include <PWM.h> //include PWM library http://forum.arduino.cc/index.php?topic=117425.0

volatile int half_revolutions1; //allow half_revolutioins to be accesed in intterupt
volatile int half_revolutions2; //allow half_revolutioins to be accesed in intterupt
int rpm1; //set rpm as an integer
int rpm2; //set rpm as an integer
int pwm=255;
const byte numChars = 5;
char receivedChars[numChars];

boolean newData = false;

void setup()
{
  InitTimersSafe(); //not sure what this is for, but I think i need it for PWM control?
  bool success = SetPinFrequencySafe(9, 25000); //set frequency to 25kHz
  pwmWrite(9, 51); // 51=20% duty cycle, 255=100% duty cycle

  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  analogWrite(5, 170);
  analogWrite(6, 255);
  pinMode(2,INPUT_PULLUP); //set RPM pin to digital input
  pinMode(3,INPUT_PULLUP); //set RPM pin to digital input
  half_revolutions1 = 0;
  rpm1 = 0;
  half_revolutions2 = 0;
  rpm2 = 0;

  Serial.begin(9600);
}



void loop()
{
  sei(); //enable intterupts
  attachInterrupt(0, fan_rpm1, RISING); //record pulses as they rise
  delay(1000);
  detachInterrupt(0);
  attachInterrupt(1, fan_rpm2, RISING); //record pulses as they rise
  delay(1000);
  detachInterrupt(1);
  cli(); //disable intterupts

  rpm1 = (half_revolutions1/2)*60;

  Serial.print("1");
  Serial.println(rpm1);

  rpm2 = (half_revolutions2/2)*60;

  Serial.print("2");
  Serial.println(rpm2);

  rpm1 = 0;
  half_revolutions1 = 0;

  rpm2 = 0;
  half_revolutions2 = 0;

  pwm = 255;
  recvWithStartEndMarkers();
  processCommand();
}

void fan_rpm1()
{
  ++half_revolutions1; //increment before returning value
}


void fan_rpm2()
{
  ++half_revolutions2; //increment before returning value
}


void recvWithStartEndMarkers() {
    static boolean recvInProgress = false;
    static byte ndx = 0;
    char startMarker = 's';
    char endMarker = '\n';
    char rc;
 
    while (Serial.available() > 0 && newData == false) {
        rc = Serial.read();

        if (recvInProgress == true) {
            if (rc != endMarker) {
                receivedChars[ndx] = rc;
                ndx++;
                if (ndx >= numChars) {
                    ndx = numChars - 1;
                }
            }
            else {
                receivedChars[ndx] = '\0'; // terminate the string
                recvInProgress = false;
                ndx = 0;
                newData = true;
            }
        }

        else if (rc == startMarker) {
            recvInProgress = true;
        }
    }
}

void processCommand() {
    if (newData == true) {
        Serial.print("s");
        Serial.println(receivedChars);
        switch (receivedChars[0])
        {
            case '1':
                receivedChars[0] = '0';
                sscanf(receivedChars, "%d", &pwm);
                analogWrite(5, pwm);
                break;
            case '2':
                receivedChars[0] = '0';
                sscanf(receivedChars, "%d", &pwm);
                analogWrite(6, pwm);
                break;
            case '3':
                receivedChars[0] = '0';
                sscanf(receivedChars, "%d", &pwm);
                
                break;
//            default:
//                Serial.println("I don't know what that means.");
        }
        newData = false;
    }
}

Well, how should I put it? It works, usually.

(tbc?)

(tba:photos)

Comment via email
Zeo Mobile Teardown Entry created on 2021-07-14 (edited 2021-10-15) Authors: steeph (370) Categories: Electronics (16) Projects (41) Shared (17) ZEO (1) Languages used: de (88) edit

2015 habe ich mir mal ein Zeo Mobile genauer angeschaut und im Schlafhacking-Blog darüber geschrieben.

Hintergrund: Das Zeo war ein Gerät ("war, weil es schon lange nicht mehr hergestellt und vertrieben wird), das anhand von Bewegungsdaten, EOG und EEG ein Schlafprofil des Trägers eines Stirnbandes erstellte. Es war wahrscheinlich das erste Gerät seiner Art, das diesen Einsatzzweck einfach benutzbar, mit cloudbasierter Software für Normalconsumer und - dafür, dass es quasi kein richtiges Konkurrenzprodukt gab - ziemlich günstig, bedient hat. Ich weiß gar nicht, woran der Hersteller, Zeo, Inc., ehem. Axon Labs) gescheitert ist. Er war dem heutigen Trend so weit voraus und hat alles geboten, was den Benutzern von heutigen, ähnlichen Geräten für den Zweck der Verbesserung der Schlafqualität wichtig ist, dass man ihn eher als Innovator als als seiner Zeit voraus bezeichnen kann. Anyways, es gab/gibt hauptsächlich zwei Geräte: Das Zeo Bedside, bestehend aus Nachttisch-Empfangsgerät, Kopfband, USB-/serieller Schnittstelle und Windows-Software, und das Zeo Mobile, ein Bluetooth-fähiges Kopfband mit Smartphone-App. Für ersteres wurde von einem (Ex-)Entwickler des Gerätes eine modifizierte Firmware (Version 2.6.3R) in Umlauf gebracht, die es ermöglicht, über USB die Rohdaten der Sensoren zu empfangen und so eigene Software zu benutzen. Damit hat während des kommerziellen Untergangs Zeos nicht nur er meinen Respekt gewonnen, sondern auch das Zeo Bedside neue Einsatzmöglichkeiten und eine Fan-Community von technik-interessierten Klarträumern. Für das neuere Zeo Mobile gibt es zwar auch eine Android-App, mit der man das Gerät ohne Konto auf dem nicht mehr existeierenden Zeo-Server weiterbenutzen kann, aber aus dem einfachen Grund, dass es nicht einfach möglich ist, Rohdaten aus dem Gerät zu bekommen, haben die Zeo Mobiles bei weitem nicht die Beliebtheit unter Hobbyisten, die die wenigen noch in Umlauf befindlichen Zeo Bedsides genießen.

Also, 2015 habe ich mir mal ein Zeo Mobile genauer angeschaut und im Schlafhacking-Blog darüber geschrieben: Zeo Mobile Teardown

Eigentlich wollte ich noch einige weitere Links hier einbauen, wie zum Beispiel zu der Entwickler-Webseite und zu ein paar interessanten Software-Projekten, die die Daten der Rohdaten-Firmware des Zeo Bedside nutzen. Leider kann ich die Firmware selbst nicht mehr finden und auch die relevanten Informationen sind nur noch im Internet Archive zu finden. Dort sind die Software-Downloads aber nicht archiviert, weshalb sich der Rest erübrigt. Sehr schade. Ich hoffe jemand wird die Sachen noch mal öffentlich zur Verfügung stellen. Ich habe sie leider nicht bei mir, weil ich nie ein Zeo selbst bespielt habe.

Vielleicht nehme ich den letzten Absatz wieder zurück. Hier ein paar URLs, die oben vielleicht fehlen (habe gerade keine Lust, sie in line zu bringen):

  • https://www.gwern.net/docs/zeo/index
  • https://www.gwern.net/docs/zeo/firmware-v2.6.3R-zeo.img
  • https://www.openyou.org/2013/06/11/zeo-firmware-and-raw-data-api-on-openyou-github/
  • http://eric-blue.com/2013/06/09/life-beyond-zeo/
  • https://github.com/evsc/zeoLibrary
  • https://github.com/openyou/zeo-firmware
  • https://github.com/openyou/zeo-raw-data-api
  • https://github.com/openyou/zeo-android-api
  • https://www.klartraumforum.de/forum/showthread.php?tid=9523
  • http://www.sleepstreamonline.com/rdl/
  • https://web.archive.org/web/20120422001938/http://sourceforge.net/projects/zeorawdata
  • https://web.archive.org/web/20110307193953/http://sourceforge.net/projects/zeodecoderview
  • https://sourceforge.net/projects/rxtxlibrary/files/rxtxlibrary/
  • https://sourceforge.net/projects/zeolab/
  • https://sourceforge.net/projects/zeolib/
  • https://web.archive.org/web/20120924070141/http://developers.myzeo.com/raw-data-library/
  • https://www.klartraumforum.de/forum/forumdisplay.php?fid=29 (Inhalt nur eingeloggt sichtbar)
Comment via email
Rock die Burg Entry created on 2021-04-02 (edited 2021-10-15) Authors: steeph (370) Categories: Events (22) Fallen Fortress Open Air (10) Festivals (10) Music (5) Rock die Burg (10) Languages used: de (88) Topics: Events → Festivals (10) edit
This entry is referencing the entry 'Rock die Burg'.

CC0 licence logo
To the extent possible under law, steeph has waived all copyright and related or neighboring rights to this work.

Hier könnte ich mal erzählen, was Rock die Burg war und warum wie meine Geschichte dieses Alternative Rock Festival geht. Wenn ichmal Zeit und Lust finde es mal für ausreichend relevant halte.

Na, dann fange ich mal an.

Meine Fotos des Events aus den Jahren 2006 bis 2014 zu sehen.

2004 haben sich Liebhaber des alternativen Rocks in Bad Dürkheim zusammengetan und ein Rock-Festival ins Leben gerufen, das nicht nur den Bad Dürkheimer Jugendlichen das Angebot an Live-Konzerten erweiterte, sondern auch jungen Bads aus der Gegend eine Möglichkeit, vor einem Publikum aufzutreten, das größer ist und einen demografisch weiteren Einzug hat als die Konzerte, die damals schon regelmäßig im JuKiB (vorher Haus der Jugend) veranstaltet wurden. Der Name bezieht sich auf den ursprünglichen Veranstaltungsort: Den Burghof der Burgruine Hardenburg. Dort wurde in der Tat die Burg gerockt, auch wenn aus Sicherheits- und anderen Gründen der Zugang zu den meisten Teilen der Burgruine für Besucher gesperrt war.

Damals (2004) musste ich noch heftig von einem Freund überredet werden, zum Festival mitzukommen. Aber ich bin froh, die Gelegenheit genutzt zu haben. (Alleine wäre ich nicht darauf gekommen, die Veranstaltung zu besuchen.) Seit dem habe ich aber keine einzige Auflage von Rock die Burg verpasst. In den ersten Jahren als einfacher Besucher und betrunkener Hobby-Fotograf, später als einigeraßen aktives Vereinsmitglied, Aufbauhelfer, Webadmin und quasi offizieller (aber immer noch angetrunkener) Fotograf.

Vielleicht würde sich irgendwann mal ein Besucher dieser Seite für die Geschichte der Veranstaltung interessieren, die ich aus meiner aktiveren Zeit (ab ca. 2009) auch detailliert aufschreiben könnte. Aber ich bezweifle das jetzt einfach mal und beschränke mich hier darauf, das Festival erwähnt, meine Fotos verlinkt und meinem nostalgischen Mitteilungsbedürfnis der Tatsache, dass es sich um ein richtig geiles, kleines Festival mit einer sehr guten Musikauswahl und Stimmung handelte, grundlegend nachgegangen zu sein. Vielleicht werde ich mal noch einen zweiten Eintrag darüber schreiben oder diesen hier ergänzen, wenn ich Lust habe, ein paar Geschichtchen von den Festivals und aus der Orga aufzuschreiben, die damalige Besucher interessant finden könnten. Haut mich ruhig an, Falls Interesse besteht.

Ein Link mit Rückblicken aller Rock die Burgs mit Fotos, Videos und Line-Ups

Leider (jedenfalls für mich) hat sich das Genre der auftretenden Bands aus in diesem kurzen Eintrag nich genannten Gründen über die letzten Jahre immer weiter auf Hardcore eingefahren. Gute Musik und gute Bands, aber das weniger abwechslungsreiche und weniger auf Newcomer ausgerichtete Booking hat Rock die Burg zu einem anderen Festival gemacht. Als dann auch noch der Platz hinter der Burg nicht mehr für diese Veranstaltung zur Verfügung gestellt wurde und das Festival umziehen musste, wurde die Wandlung zu Recht durch eine Umbenennung abgeschlosen. Das Fallen Fortress Open Air ist nahtlos aus Rock die Burg hervorgegangen und eine sehr gute Namensgebung aus allerlei Gründen, die der Geschichte angemessen referenziert. Aber es ist ein anderes Festival und kein direkter Ersatz für Rock die Burg, weshalb ich die Meinung vertrete, dass irgendwann mal, vielleicht bald, vielleicht in ein paar Jahren, mal nostalgische Fans des alten Rock die Burg das Projekt angehen sollten, eine Veranstaltung nach den Grundsätzen, Zielen und dem Vorbild des ursprünglichen Rock die Burg auf dem ursprünglichen Gelände, dem tatsächlichen Burghof zu veranstalten. Falls jemand mitmachen möchte: Ich wäre auf jeden Fall dabei.

Comment via email
wohin? Entry created on 2021-10-15 Authors: Andrea Reinhardt (14) Categories: Gedichte (10) Languages used: de (88) Topics: Poetry (12) edit

wohin?
wozu?
mit wem?
wie lange?
jede frage ohne Antwort,
aber würdest Du einen Schritt gehen
wäre auch nur die erste Antwort sicher?
hättest Du soviel Mut? egal ist aber
auch keine Lösung, die Hoffnung auf morgen
führt Dich nicht, sondern
das winzige Glück
im jetzt

Copyright 1998 Andrea Reinhardt

sentimentaler fatalismus Entry created on 2021-09-23 Authors: Andrea Reinhardt (14) Categories: Gedichte (10) Languages used: de (88) Topics: Poetry (12) edit

nichts klappt
dann rufst du an
deine stimme.....
was mache ich
wenn du
nicht anrufst
nie mehr anrufst
das überlebe ich nicht
aber wahrscheinlich
klappt dann
noch nicht mal
das

Copyright 1998 Andrea Reinhardt

Definition Of Summer Entry created on 2021-09-11 Authors: steeph (370) Categories: Definition (1) Silly (32) Skin (1) Summer (2) Languages used: en (255) edit

Summer is the aggregate of all nights in which you can lay in wet grass at 3am and enjoy a fresh wind on your bare skin.

Comment via email
Entry created on 2021-09-02 Authors: steeph (370) Categories: Band Name Ideas (3) Domain Name Ideas (1) Silly (32) Thoughts (72) Languages used: de (88) en (255) edit

If I had a band to name, I'd name it Feiera, because feiera.band is still available and costs only 2,50 a month.

Comment via email
The Three Bad Reasons Why I Don't Use Git Entry created on 2021-09-01 Authors: steeph (370) Categories: Computer (78) Git (1) Personal (13) Software (52) Version Control (1) Languages used: en (255) edit

1. Github or other public Git repositories: Wouldn't be complete

Haven't published everything always, don't want to publish everything, would want to include everything but couldn't. So using public Git repositories would always be accompanied by a feeling of imperfection.

2. I've never used Git for anything really.

Apart from cloning and occasionally updating others' repositories I've never used them. I'm not used to using Git and I don't struggle with not using it. So starting to do so now would require me to hurdle quite some hurdle. I never used it. Why would I start now?

3. It's too late to start now.

I've noticed that the point where it would have been a good idea and would have made a lot of sense to get accustomed to using Git has long passed. So by starting now or in the future I would admit that I didn't take the hurdle when it would have been the right thing to do - when the best time to do so was near the present. I would admit to doing some things not the right way in the past if I would start to do them right from now on. It's easier to pretend that the way it always has been is the right way - the way I'm used to doing things.

That all makes no logical sense. It would be an improvement to start using Git for some things, be it coding projects, any category of texts that I have on my computers, any collection of files, ... The costs of these improvements would be hard disk space, which isn't all that rare for me nowadays and getting used to using Git, which isn't complicated.

So why don't I even try to use it in some cases? Well, I've just honestly told you my three reasons.

Comment via email
Go To Navigation Page
Show/Hide Navigation
Mastodon