Fan für Zwift mit Alice

Hallo. Ich möchte mich im Voraus für die ungeschickten Lösungen, den Code und die Verarbeitung entschuldigen. Erstens habe ich sehr krumme Hände, und zweitens versuche ich es mit minimalem Aufwand und von dem, was zur Hand ist - die Hauptsache ist, dass es stabil funktioniert und die notwendigen Funktionen ausführt.



Zweck: Ich trainiere regelmäßig mit dem Fahrrad, und im Winter finden die Schulungen zu Hause auf einem Fahrradträger statt (ich habe es übrigens auch hausgemacht, und das ist eine andere Geschichte). Fast jeder, der so trainiert, benutzt einen Ventilator, um zu blasen.



Ich habe dies, ein einfaches Outdoor mit drei Geschwindigkeitstasten.







Ich fand sein Schema :





.

Da ich keine Erfahrung mit Asynchronmotoren habe und was passiert, wenn zwei verschiedene Wicklungen gleichzeitig eingeschaltet werden, habe ich beschlossen, kein Risiko einzugehen und dies nicht zuzulassen. Deshalb habe ich das Relais wie folgt angeschlossen:







Ein Relais schaltet den Lüfter ein, das zweite schaltet die Drehzahl.



Es stellt sich heraus, dass ich zwei Geschwindigkeiten verwende, die erste und die dritte, und es bleibt möglich, den Lüfter im manuellen Modus bei der zweiten Geschwindigkeit zu verwenden.



Der Relaisblock verwendete Folgendes:







Der Controller verwendete den ESP8266:







Flashte ihn in die Arduino IDE.



Der einfachste Code:



#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#define OUTPUT1  5
#define OUTPUT2  0


char auth[] = "           Blynk";

char ssid[] = "    ";
char pass[] = "    ";

BLYNK_WRITE(V1)
{
  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
digitalWrite(OUTPUT1, pinValue);
  // process received value
}
BLYNK_WRITE(V2)
{
  int pinValue = param.asInt();
  digitalWrite(OUTPUT2, pinValue);
}

void setup()
{

pinMode(OUTPUT1, OUTPUT);
pinMode(OUTPUT2, OUTPUT);
digitalWrite(OUTPUT1, HIGH );
digitalWrite(OUTPUT2, HIGH );

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:

}

void loop()
{
  Blynk.run();
}


Die Hauptsache ist, Ihren Code zu erhalten char auth [] = "Hier ist Ihr Autorisierungscode, der nach der Registrierung bei Blynk an Ihre E-Mail gesendet wird"; Zur

Steuerung können Sie die Links

blynk-cloud.com 'Ihre Codeberechtigung' / update / V1? value = 1 verwenden, um das erste Relais zu deaktivieren.

blynk-cloud.com 'Ihre Codeberechtigung' / update / V1? value = 0, um das erste Relais

ähnlich für das zweite

blynk- zu aktivieren. cloud.com 'Ihr Autorisierungscode' / update / V2? value = 1 blynk-cloud.com 'Ihr Autorisierungscode' / update / V2? value = 0



Anfangs habe ich dieses und mehrere andere Geräte zu Hause verwendet, um verschiedene Geräte einfach über das Internet zu steuern. Diese Links können auch mit Alice verwendet werden, indem die Fähigkeit "Brownie Kuzya" korrekt funktioniert, um verschiedene Geräte zu aktivieren und zu deaktivieren.



Es stellt sich heraus, dass Sie, wenn Sie auf dieser Ebene anhalten, eine intelligente Steckdose mit einer Alice zum Preis von 250 Rubel für Teile herstellen können. Es werden 2 Kanäle darin sein und es wird auch eine Reihe kostenloser Schlussfolgerungen zum MK geben.



Wir gehen weiter. Der Lüfter läuft, schaltet sich ein, aus usw. aber ich wollte noch mehr automatisierung. Anfangs dachte ich daran, Daten vom Leistungssensor direkt in den Mikrocontroller zu empfangen. Ich habe sogar angefangen, das ANT + -Protokoll zu studieren, aber es traten Schwierigkeiten mit dem ANT + -Modul auf, sie scheinen zum Verkauf zu stehen, aber einige sind teuer, bis ich den Kauf in die Hände bekam und dann versehentlich auf eine zwift-client-Python-Anwendung stieß, die Daten von meinem Konto empfangen kann. Um $ pip install zwift-client zu installieren, habe ich ein wenig über Python gelesen und gelernt, wie man meine Daten liest. Ich habe ein kleines Skript geschrieben:



import time
import requests
from zwift import Client
username = '  '
password = ' '
player_id =    

client = Client(username, password)
world = client.get_world(1)
world.player_status(player_id)
i=1
change1=1
change2=1
powVKL=185

venrabota0='https://blynk-cloud.com//update/V1?value=1'
venspeed0='https://blynk-cloud.com//update/V1?value=0'
venrabota1='https://blynk-cloud.com//update/V2?value=0'
venspeed1='https://blynk-cloud.com//update/V2?value=1'
requests.get(venrabota0, verify=False)
requests.get(venspeed0, verify=False)
print(' ')   
while i<10:
    poweruser=world.player_status(player_id).power
    cadenceuser=world.player_status(player_id).cadence
    heartrateuser=world.player_status(player_id).heartrate
    speeduser=world.player_status(player_id).speed//1000000
    print(': '+str(poweruser))
    print(': '+str(cadenceuser))
    print(': '+str(heartrateuser))
    print(': '+str(speeduser))
    
    if change1==1 and speeduser>1: 
        requests.get(venrabota1, verify=False)
        change1=0
    if change1==0 and speeduser<1: 
        requests.get(venrabota0, verify=False)
        change1=1   
        
    if change2==1 and poweruser>powVKL: 
        requests.get(venspeed1, verify=False)
        change2=0
    if change2==0 and poweruser<=powVKL: 
        requests.get(venspeed0, verify=False)
        change2=1   
            
    time.sleep(1) # Delay for 1 minute (60 seconds)


Es liest meine Daten und wenn die Bewegung beginnt, schaltet sich der Lüfter ein und wenn die Leistung mehr als 185 W beträgt, wird eine erhöhte Geschwindigkeit eingeschaltet.



Im Prinzip wie alles. Tatsächlich ist die Lösung noch nicht fertig, es gibt noch eine Reihe von Ideen für ihre Weiterentwicklung und für das Spiel (Ändern der Lüftergeschwindigkeit beim Eintritt in den Entwurf) und die Idee, Informationen über seine Parameter, die Trittfrequenz auf rotierenden Blades anzuzeigen, dieses und andere Geräte direkt von der Uhr aus zu steuern usw. .d. Es wird niemals ein Ende geben.



All Articles