Einfacher Bausatz zum Hörbarmachen von Sensordaten gesucht

Dieses Thema im Forum "Lötkunst" wurde erstellt von arz, 10. August 2011.

  1. arz

    arz Tach

    hallo,

    ich habe folgendes anliegen:

    für ein projekt, bei dem messdaten eines sensors hörbar gemacht werden sollen, brauch ich eine empfehlung für einen synth bausatz, bzw ein fertiges einfaches "modul"

    die minimal anforderungen sind folgende:

    - 1 oszillator, tonhöhe per steuerspannung +poti ändern
    - 1 lp filter, cutoff per poti ändern
    - möglichst klein ("~zigarettenschachtel")
    - stromversorgung batterie, zb 9v block
    - kopfhörerausgang

    optional:
    - decay hüllkurve
    - clock

    + gerne weitere parameter


    ich bin also auf der suche nach einem kleinen bausatz der den o.g. anforderungen entspricht und ohne tiefgehende löterfahrung zu machen ist.

    möglich wären auch halbfertige sachen wie zb sowas:
    http://www.bugbrand.co.uk/index.php?mai ... ucts_id=34



    ich bin für alle tipps + ggf auch andere foren in denen sowas diskutiert wird, dankbar,

    grüße
    arz
     
  2. Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    Mhm... welcher Sensor denn und über welches Interface/Schnittstelle? Welche Daten kriegste da von deinem Sensor?
    Vom Gefühl her würd ich dir ja zum Programmieren tendieren, da ich jetzt aber mal voreingenommen davon ausgehe, dein Sensor wird dir digitale Daten liefern. Ich mach so was öfter für Kunst-/Performanceprojekte, aber dann halt gleich (fast) alles digital (Supercollider).
     
  3. mik93

    mik93 Tach

    Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    der diy synth von doepfer fällt mir da ein - ich frage mich aber auch wie du die sensor daten in eine sinnvolle steuerspannung umwandeln willst.
    klingt für mich auch mehr nach was mit digital technik
     
  4. arz

    arz Tach

    Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    hallo,
    der sensor ist ein beschleunigungsaufnehmer.
    es kam die idee auf, das signal vor dem ad wandler abzugreifen und damit im wesentlichen einen oszillator zu steuern.
    der ausgabebereich liegt zwischen -3V und 3V. ggf muss das signal an der stelle noch etwas verstärkt werden.
    hab mich selber etwas gewundert, dass das thema aufkam es NICHT digital lösen zu wollen. wäre auch erstmal ein versuch.
    der doepfer diy synth ist natürlich eine gute sache, für meinen zweck aber evtl etwas überdimensioniert. (auch von den abmaßen)

    nach dem ad wandler gibt der sensor die daten mit 500hz aus. hat jmd eine idee wie man sowas digital umsetzen kann?
    da hab ich nämlich noch weniger ahnung, wie eine lösung ohne rechner aussehen kann. eine testlösung mit rechner + puredata existiert, das ist kein problem.
    die aufgabe ist es jetzt., das in ne kleine box zu packen.

    bin für alle anregungen dankbar!

    gruß
    arz
     
  5. Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    Um welchen Sensor handelt es sichs denn genau? Ich hab vor kurzem bei einem Theaterprojekt den hier verwendet, hat deiner vielleicht den gleichen Chip (BMA020 - Bosch glaub ich)? Der hier spuckt jedenfalls über den seriellen Port Zahlen zwischen 0 und 1 auf allen drei Achsen aus, durch Delta kann man dann halt die Beschleunigung ausrechnen und sich ein analoges Signal (naja, PWM halt) ausgeben lassen. Aber PWM in DC umzuwandeln is ja auch keine Hexerei. Hast du denn ein Oszilloskop und kannst sehen, welche Signale der Chip vor dem A/D Wandler ausgibt? Ich kann mir irgendwie so schlecht vorstellen, dass da was brauchbares rauskommt - vielleicht lieg ich aber auch falsch...
     
  6. arz

    arz Tach

    Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    Hallo,

    im moment steht dieser sensor:
    Analog Devices ADXL327 (http://www.autex.spb.ru/ad/ADXL327.pdf)
    zur verfügung.

    das steckt aber alles noch in der planungsphase, die vorgabe ist im prinzip:
    beschleunigungsaufnehmer + irgendeine sonifikation der daten (analog oder auch digital) in einer kleinen box, batteriebetrieben mit kopfhörerausgang.

    wie man sowas mittels rechner digital umsetzen kann ist klar.
    bei einer analogen umsetzung (box) habe ich zumindest eine vorstellung wie das aussehen könnte, bei einer digitalen lösung (box) erstmal nicht.
    evtl. hast du ja einen tipp für mich, wie man das angehen kann, also was braucht man, wie programmiert man den chip, der dann die sonifikation der daten macht, was für bauteile braucht man ... etc ... bin für jeden tipp dankbar.
    wie sah denn deine lösung mit dem von dir verwendeten o.g. sensor aus ?

    danke und grüße!
     
  7. Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    Hej!

    Also ich hab das dann mit einem Atmega (JeeNode, so ein ArduinoClone mit eingebautem Radio) gelöst. Mein Code sieht so aus, da is allerdings auch noch ein zweiter Sensor mit dabei + das ganze Zeug für die drahtlose Übertragung, das brauchst du eigentlich alles nicht, d.h. den Code könnte man locker noch entschlacken. Der Einfachheit hab ich jetzt den Code einfach 1 zu 1 reinkopiert:

    Code:
    /* -----------   Double/Act   --------------- 
    
    Port 3 - GravityPLug
    Port 1 - FSR
     
     */
    
    // Include the SimpleMessageSystem library
    
    
    #include <SimpleMessageSystem.h> 
    #include <Ports.h>
    #include <RF12.h>
    
    PortI2C gravBus1 (3); // Gravity Plug on Port 3
    GravityPlug gravity1 (gravBus1);
    
    Port port1 (1); // FSR-Finger on Port 1
    
    int pinA1 = 0;//, pinA2 = 1; 
    int pinD1 = 4;//, pinD2 = 5;   
    
    char myNodeID = 'C';    ///
    
    int centx, centy, centz; 
    int oldx, oldy, oldz;
    int deltx, delty, deltz;
    int moveSpeed = 0;
    int fsr = 0;
    
    //int centx2, centy2, centz2; 
    //int oldx2, oldy2, oldz2;
    //int deltx2, delty2, deltz2;
    //int moveSpeed2 = 0;
    
    //  int pot1 = 100, pot2 = 200, magnet = 300, trig = 400;
    
    // define a variable/byte structure for our message 
    typedef struct {
      char nodeID;   // the node where gravity was measured
      char msgID;      // what kind of message - 'g' for gravity data
      int x, y, z, moveSpeed;   // four 16bit  numbers (high-res, 0 - 65535)
    //  int x2, y2, z2, moveSpeed2;   // four 16bit  numbers (high-res, 0 - 65535)
    //  int pot1, pot2, magnet, trig;
      int fsr;
    } fingerMessage;
    
    void setup()
    {
    //  // status LED ein
    //  pinMode(pinD1, OUTPUT); 
    //  digitalWrite(pinD1, 1);
      
    //  digitalWrite(pinD2, HIGH); // pullup resistor
    
      Serial.begin(115200); //Baud set at 9600 for compatibility, CHANGE!
    
      gravity1.begin();
    //  gravity2.begin();
      delay(50);
      Serial.print("JN ");  Serial.print(myNodeID); Serial.println(": Gravity1, (noch nicht 2) inits done.");
      delay(50);
    
      rf12_initialize(myNodeID, RF12_868MHZ, 193);
    
      delay(50);
      Serial.print("JN "); Serial.print(myNodeID); Serial.println(": RF init done.");
      delay(50);
      pinMode(pinD1, OUTPUT);
      digitalWrite(pinD1, HIGH);
    
    } 
    
    void loop()
    {   
      const int* p = gravity1.getAxes();
    
      // x is  -210, +270;
      centx = p[0]; 
      if (centx > 512) { centx = centx - 1024; };
      deltx = centx - oldx; 
      oldx = centx;
    
      // y is -250, +220;
      centy = p[1]; 
      if (centy > 512) { centy = centy - 1024; };
      delty = centy - oldy; 
      oldy = centy;
    
      // z = -250, +220;
      centz = p[2]; 
      if (centz > 512) { centz = centz - 1024; };
      deltz = centz - oldz; 
      oldz = centz;
    
      // delta is amount of change from last frame (sqrt(x2 + y2 + z2));
      moveSpeed = int (pow( float(deltx * deltx) + float(delty * delty) + float(deltz * deltz), 0.5));
    
      // make sure they get sent as 512 +- 250 or so
      centx = centx + 512;
      centy = centy + 512;
      centz = centz + 512;
      
      // und dasselbe fuer centx2 etc etc 
    
      fsr = analogRead(pinA1); 
    //  pot2 = analogRead(pinA2);
      
      // COMMENT/UNCOMMENT AS NEEDED:      
              // send direct via USB / ArduinoSMS
      sendGravitySMS();
              // send via RF
      sendGravityRF();
    
      delay(20); 
    }
    
    void sendGravitySMS() { 
      messageSendChar(myNodeID);
      messageSendChar('g');
      messageSendInt(centx); 
      messageSendInt(centy);
      messageSendInt(centz); 
      messageSendInt(moveSpeed);
      messageSendInt(fsr);
      
        // add centx2 etc 
      
    //  messageSendInt(pot1);
    //  messageSendInt(pot2);
    //  messageSendInt(magnet);
    //  messageSendInt(trig);
    
      messageEnd(); // Terminate the message being sent
    }
    
    void sendGravityRF() {
      
      rf12_recvDone();
      
      fingerMessage fingMsg; 
    
      fingMsg.nodeID = myNodeID;  
      fingMsg.msgID = 'f';    // f for FINGER!
      fingMsg.x = centx; 
      fingMsg.y = centy; 
      fingMsg.z = centz; 
      fingMsg.moveSpeed = moveSpeed;
      fingMsg.fsr = fsr;
    
        // add centx2 etc 
      
    //  fingMsg.pot1 = pot1; 
    //  fingMsg.pot2 = pot2; 
    //  fingMsg.magnet = magnet; 
    //  fingMsg.trig = trig; 
      
      if(rf12_canSend() ){
        rf12_sendStart(0, &fingMsg, sizeof fingMsg);
      //  Serial.println(">");  // so LED blinks when sending
      } else {
          Serial.println("RF could not send");
      }
    }
    
    Statt den ganzen Radio/Serial/bla Zeug würdest du halt einfach z.B.
    Code:
    AnalogWrite(moveSpeed, Pinx);
    
    machen, dann würdest du eine PWM auf Pinx rausschicken, die dann entweder eh gleich ein pulsweitenmodulierter Oszillator wär oder du baust halt noch Zeug drum rum, damit du mit dem Signal irgendwas anderes ansteuerst.
    He und wenn du magst: Ich hab noch einen von diesem Sensor hier rumliegen, kann ich dir gern zum Rumprobieren borgen, ich wohn auch in Berlin.
     
  8. arz

    arz Tach

    Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    hallo,

    erstmal danke für den input und das angebot. bevor ich lostesten kann, muss ich noch ein bisschen grundlagenforschung betreiben und mir einen überblick verschaffen ... :)

    wenn ich das richtig sehe, bräuchte man mit der von dir beschriebenen lösung:

    -den sensor
    -den atmega chip (um aus den sensordaten verwertbare daten zu machen)
    + dann noch eine analoge oder digitale lösung zur klangerstellung + audio out

    bräuchte man für eine rein digitale lösung denn noch einen extra soundchip, oder wäre das (inkl kopfhörer out) mit dem atmega chip zu realisieren?
    eine rein digitale lösung scheint mir bei näherer betrachtung , wenn realisierbar, sinnvoller als eine analoge ....

    du siehst , ich hab da noch große lücken,, aber ist ein spannendes projekt ....
     
  9. Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    Ja, so stimmt das im Großen und Ganzen.
    Audio mit Atmegas, naja, das geht aber is ein bissl kompliziert für das, was man rauskriegt find ich. Es kommt halt drauf an, wie ehrgeizig du bei dem Projekt bist, dass das ganze auch 'super' klingen soll. Du kannst auf jeden Fall halt Pulswellen in verschiedenen Frequencen ausgeben, das is aber meines Wissens nach schon fast alles. Aufm Arduino Playground kann man Infos zu Audio mit Arduino nachgucken - wollt ich grad machen, dann bin ich auf das hier gestoßen: http://arduino.cc/en/Tutorial/ADXL3xx Wär ja mal ein Anfangspunkt!
     
  10. arz

    arz Tach

    Re: Einfacher Bausatz zum Hörbarmachen von Sensordaten gesuc

    ... kannst du mir evtl einen kleinen extra soundchip empfehlen der zu dem eben besprochenen setup passen würde? ( wenn das mit einem Atmega zu aufwändig ist, bzw klanglich nicht ausreicht )

    danke mal soweit,,, ich melde mich bestimmt nochmal mit weiteren fragen.
     

Diese Seite empfehlen