Objetivo: treino regularmente de bicicleta, e no inverno os treinos são feitos em casa em bicicletário (aliás, também tenho feito em casa, e isso é outra história), quase todo mundo que treina assim usa um ventilador para soprar.
Eu tenho este, um simples outdoor com três botões de velocidade.

Eu encontrei seu esquema:

.
Como não tenho experiência com motores assíncronos e com o que acontecerá quando dois enrolamentos diferentes forem ligados simultaneamente ao mesmo tempo, decidi não correr riscos e não permitir isso, então conectei o relé da seguinte maneira:

Um relé liga o ventilador, o segundo muda a velocidade.
Acontece que eu uso duas velocidades, a primeira e a terceira, e continua sendo possível usar o ventilador no modo manual na segunda velocidade.
O bloco de retransmissão usou o seguinte:

O controlador usou o ESP8266:

Flashed no IDE do Arduino.
O código mais simples:
#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();
}
O principal é obter o seu código char auth [] = "Aqui está o seu código de autorização que será enviado para o correio após o registo no Blynk";
para controlar, você pode usar os links
blynk-cloud.com 'seu código de autorização' / update / V1? valor = 1 para desabilitar o primeiro relé
blynk-cloud.com 'seu código de autorização' / update / V1? valor = 0 para habilitar o primeiro relé da
mesma forma para o segundo
blynk- cloud.com 'seu código de autorização' / update / V2? value = 1 blynk-cloud.com 'seu código de autorização' / update / V2? value = 0
Inicialmente, usei este dispositivo e vários outros em casa para controle simples de vários dispositivos via Internet. Além disso, esses links podem ser usados com Alice através da habilidade "Brownie Kuzya" funciona corretamente para habilitar e desabilitar vários dispositivos.
Acontece que se você parar neste nível, você pode fazer um soquete inteligente com uma Alice a um custo de 250 rublos por peças e haverá 2 canais nele e também haverá um monte de conclusões gratuitas sobre o MK.
Nós continuamos adiante. O ventilador funciona, liga, desliga, etc. mas eu queria ainda mais automação. Inicialmente, pensei no sentido de receber dados diretamente no microcontrolador do sensor de potência. Eu até comecei a estudar o protocolo ANT +, mas surgiram dificuldades com o módulo ANT +, eles parecem estar à venda, mas alguns são caros, até que minhas mãos alcançaram a compra, e então tropecei acidentalmente em um aplicativo python cliente zwift que pode receber dados de minha conta. Para instalar $ pip install zwift-client, li um pouco sobre python e aprendi como ler meus dados, escrevi um pequeno 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)
Ele lê meus dados e quando o movimento começa, a ventoinha liga, e quando a potência é superior a 185 W, uma velocidade aumentada é ligada.
Em princípio, como tudo. Na verdade, a solução está inacabada, ainda há um monte de ideias para o seu desenvolvimento posterior e para o jogo (mudar a velocidade do ventilador ao entrar no draft) e a ideia de exibir informações sobre seus parâmetros, velocidade de cadência de potência em pás giratórias, controlar este e outros dispositivos diretamente do relógio, etc. .d. nunca haverá um fim.