Trittfrequenz auf Arduino


Ich grüße alle hektisch!

Von Zeit zu Zeit trete ich ziemlich aktiv in örtlichen Parks. Und dann wurde mir klar, dass ich sie vielleicht nicht richtig aufgezogen habe. Ich begann das Thema zu studieren. Cyclopedia behauptet, dass die durchschnittliche Trittfrequenz zwischen 80 und 110 U / min liegen sollte. OK. Sie benötigen also einen Fahrradcomputer mit Trittfrequenzsensor. China wollte nicht nehmen. Naryl Sigma 16.12 STS + Cadence für 2900 Rubel. Der Preis ist nicht billig, aber auf dem Hof ​​sind Kryzys und ich sozusagen arbeitslos. B-) Ich habe es herausgefunden und entschieden ... Tatsächlich wird die Rolle des Fahrradcomputers für mich von einer Reihe von iPhones, Cyclometer- Programmen und Casio STB-1000- Uhren gespielt- und dieser Haufen ist ganz gut mit mir. Und das Trittfrequenzzeugnis wird nur für einige Zeit benötigt. Dann gewöhnt sich der Körper und eine ständige Überwachung macht keinen Sinn. Mit einem Wort, es kam das Verständnis, dass wir einen vorübergehenden Mist aus Scheiße und Stöcken von Arduino und Aktien sammeln müssen .

Idee: Wir haben zwei LEDs am Lenkrad angebracht - grün und rot. Grün - Trittfrequenz ist normal. Rot bzw. Nr. Dann kam er auf die Idee, dass Rot nur brennt, wenn die Geschwindigkeit über dem Normalwert liegt. Die Batterien fressen also weniger.

Implementierung:
- Auf der "Feder" eines Reed-Schalters aus einem nahe gelegenen Radiogeschäft, auf der "Pleuelstange" ein Neodym-Magnet
- Ich schiebe die LEDs in die chinesische Hülle
- Der Controller spielt die Rolle des Arduino Pro Mini 3,3 V 8 MHz.

Ich habe das Ganze mit UNO auf einem Steckbrett zusammengebaut (es ist einfacher zu nähen und zu entwerten ) Anstelle eines Reed-Schalters ein Uhrknopf.


Und die Skizze mit der Ausgabe der Daten an den Port hochgeladen.
Testskizze:
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount;  //      
int count4period;  //     

//           :
long time;  //       
long lastTime;  //      
int period;  //   

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
  
  lastTime = millis();  //     
  
  Serial.begin(9600);  //     
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  time = millis();  //      
  period = time - lastTime;  //      
 
  Serial.println(period);  //     
  Serial.println(count4period);  //     
  
  if (count4period >= 6 && count4period <= 9)
  {
    Serial.println ("Green");  //     
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        Serial.println ("Red");  //     
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          Serial.println ("LOW CADENCE");  //     
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
     }
      
  lastTime = time;  //     
  lastCount = count;  
}


Alles ok. Alles arbeitet.


Dann setzte er das alles wieder auf ein Steckbrett und steckte einen Nerz.


Hier ist übrigens das Diagramm:

Ich habe nur drei Batterien, weil zwei wenige sein werden und Fritz nicht drei zeigt.

Und so sieht die chinesische Fahrradgröße aus:


Bei der Analyse und beim Löten musste

ich nur ein Licht löten , weil das zweite transparente tatsächlich rot ist.

So sah er am Ende der Operation aus:

Beim Durchdenken des Projekts wurde angenommen, dass anstelle von grünen und roten LEDs zwei RGBs angebracht werden könnten, aber es gab keine im nächsten Elektrofachgeschäft, weil wir das haben, was wir haben.

Nun, ich steckte den Reed-Schalter in ein Plastikrohr und versiegelte ihn mit einer Klebepistole.


Und so, was ist mit den Kosten ... Ich musste nur Geld für einen Reed-Schalter (15 Rubel), drei AA-Batterien (86 Rubel) und Neodym-Magnete ausgeben (ich kaufte sie Stsuko, weil ich nach einem Abfluss suchte, aber ich war nicht bereit, mit Ali (160 Rubel) zu warten). Der Rest lag in Kisten herum und wartete auf die Anwendung. Hier ist sogar ein Hauptdraht einer toten Coolermaster-Maus angebracht:


Es gibt noch wenige Leute ...







Beachtung! Ich werde mich freuen, in den Kommentaren einen Laib mit Hörnern zu sehen;) Aber im Ernst. Tatsächlich war es möglich, Atmega8 L ruhig anstelle eines ganzen Arduino zu verwenden und zwei Schnitte an den Lichtern aufzugeben und sie mit PWM zu steuern. Aber im zashashnik habe ich nur das Übliche und es gibt keinen Halter für die 18650 Batterie, um dieses Geschäft anzutreiben. Vielleicht später ...

... die letzte Skizze. (Schlagen Sie nicht den "Programmierer", den er schreibt, so gut er kann):
Cadence_1.0
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount = 0;  //      
int count4period = 0;  //     

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  if (count4period >= 6 && count4period <= 9) {
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
    }
      
  lastCount = count;  
}



Fotos vor Ort:




... und bis zum Äußersten


Für ein Snack-Video:


PS Ein Artikel kann nicht ohne Aufforderung nachgedruckt werden - Typ ©. Das Projekt kann verbessert und überarbeitet werden. Alles eine fruchtbare Arbeitswoche! Und ich fahre Fahrrad!

PPS Today hat einen Testlauf durchgeführt. Schlussfolgerungen:
- Alles funktioniert gut. Der Fehler wurde nur einmal bemerkt. Anscheinend ist ein Geschwätz ausgerutscht.
- Es lohnt sich, RGB-LEDs zu verwenden - bei strahlendem Sonnenschein wird es klarer.

All Articles