But: Je m'entraîne régulièrement à vélo, et en hiver, les entraînements ont lieu à la maison sur un porte-vélos (au fait, je l'ai aussi fait maison, et c'est une autre histoire), presque tous ceux qui s'entraînent comme ça utilisent un ventilateur pour souffler.
J'ai ceci, un simple extérieur avec trois boutons de vitesse.
J'ai trouvé son schéma:
.
Comme je n'ai aucune expérience avec les moteurs asynchrones et que se passera-t-il lorsque deux enroulements différents seront allumés simultanément en même temps, j'ai décidé de ne pas prendre de risques et de ne pas permettre cela, j'ai donc connecté le relais comme suit:
un relais allume le ventilateur, le second commute la vitesse.
Il s'avère que j'utilise deux vitesses, la première et la troisième, et il reste possible d'utiliser le ventilateur en mode manuel à la deuxième vitesse.
Le bloc de relais utilisait ce qui suit:
Le contrôleur a utilisé l'ESP8266: je le
clignotais dans l'IDE Arduino.
Le code le plus simple:
#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();
}
L'essentiel est d'obtenir votre code char auth [] = "Voici votre code d'autorisation qui sera envoyé à votre messagerie après votre inscription sur Blynk";
pour contrôler, vous pouvez utiliser les liens
blynk-cloud.com 'votre code d'autorisation' / update / V1? value = 1 pour désactiver le premier relais
blynk-cloud.com 'votre code d'autorisation' / update / V1? value = 0 pour activer le premier relais de la
même manière pour le deuxième
blynk- cloud.com 'votre code d'autorisation' / update / V2? value = 1 blynk-cloud.com 'votre code d'autorisation' / update / V2? value = 0
Au départ, j'ai utilisé cet appareil et plusieurs autres à la maison pour un contrôle simple de divers appareils via Internet. En outre, ces liens peuvent être utilisés avec Alice grâce à la compétence «Brownie Kuzya» fonctionne correctement pour activer et désactiver divers appareils.
Il s'avère que si vous vous arrêtez à ce niveau, vous pouvez créer une prise intelligente avec une alice au coût de 250 roubles pour les pièces et il y aura 2 canaux et il y aura également un tas de conclusions gratuites sur le MK.
Nous continuons plus loin. Le ventilateur fonctionne, s'éteint, etc. mais je voulais encore plus d'automatisation. Au départ, j'ai pensé dans le sens de la réception des données directement dans le microcontrôleur à partir du capteur de puissance. J'ai même commencé à étudier le protocole ANT +, mais des difficultés sont survenues avec le module ANT +, ils semblent être en vente, mais certains sont chers, jusqu'à ce que mes mains aient atteint l'achat, puis je suis tombé accidentellement sur une application python client zwift qui peut recevoir des données de mon compte. Pour installer $ pip install zwift-client, j'ai lu un peu sur python et j'ai appris à lire mes données, j'ai écrit un petit script:
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)
Il lit mes données et lorsque le mouvement commence, le ventilateur s'allume, et lorsque la puissance est supérieure à 185 W, une vitesse accrue est activée.
En principe, comme tout. En fait, la solution est inachevée, il y a encore un tas d'idées pour son développement ultérieur et pour le jeu (changer la vitesse du ventilateur quand il entre dans le projet) et l'idée d'afficher des informations sur ses paramètres, la vitesse de cadence de puissance sur les pales en rotation, contrôler cela et d'autres appareils directement depuis l'horloge, etc. .ré. il n'y aura jamais de fin.