Электрификация велосипеда (не электробайк)

18.10.2019
6
0
1
#1
Приветствую, друзья!
Задался тут целью за зиму электрифицировать вел.
Суть в том, что нередко катаю в темное время суток и хочу быть чуть более видимым на дороге. (Ну и немножко поиграться в электронщика)

Запланировано:
1) все работает от ардуино (сделано)
2) поворотники (стоят вместо затычек грипс) управляются сенсорными кнопками (сделано)
3) головной свет и задний габарит управляются фоторезистором(модуль с подстроечным резистором) (сделано)
4) стоп загорается по данным с акселерометра (не сделано пока что, но в принципе сложности не вижу)
5) вся эта история работает от 4-х параллельных 18650 (сделано)

Протестировано:
1) написан код для ардуино (чуть более чем весь натырен и перестроен)
2) разведено и протестировано в cirquits. (в нем нет сенсорной кнопки, поэтому на скрине обычные тактовые кнопки)
3) напаяно тап-ляп навесом на плату и уже с сенсорными кнопками - работает.

Какой помощи прошу у сообщества:
1) произвести ревизию кода и подобранных компонентов
2) совместно подумать о форм-факторе платы и накидать все в easyEDA так, чтобы можно было собрать это максимально компактно.
Я бы этот пункт с платой сделал сам, но врожденное рукожопие не позволяет

код вот:
Код:
int switchPinR=8;

int switchPinL=7;

int switchPinS=6;

int zad=4;

int ledPinR=10;

int ledPinL=12;

int svet=11;

boolean ledOn = false;



unsigned long timing;



int i=0;

int z=0;



void setup() {

// put your setup code here, to run once:

pinMode(switchPinR, INPUT);

pinMode(ledPinR, OUTPUT);

pinMode(switchPinL, INPUT);

pinMode(ledPinL, OUTPUT);

pinMode(switchPinS, INPUT);

pinMode(svet, OUTPUT);

pinMode(zad, OUTPUT);

Serial.begin(9600);



}



void loop() {

// put your main code here, to run repeatedly:



//Правый поворотник.





if (digitalRead(switchPinR) == HIGH)

{

digitalWrite(ledPinR, HIGH);

i=0;

while (i<4) {

ledOn = !ledOn;

digitalWrite(ledPinR, ledOn);

delay(400);

i++;

z++;

if (digitalRead(switchPinR) == LOW && z>=4) { break; }

}

}

else

{

digitalWrite(ledPinR, LOW);

z=0;

}



//Левый поворотник.



if (digitalRead(switchPinL) == HIGH)

{

digitalWrite(ledPinL, HIGH);

i=0;

while (i<4) {

ledOn = !ledOn;

digitalWrite(ledPinL, ledOn);

delay(400);

i++;

z++;

if (digitalRead(switchPinL) == LOW && z>=4) { break; }

}

}

else

{

digitalWrite(ledPinL, LOW);

z=0;

}



//Головной свет



if

  (millis() - timing > 1000){

  timing = millis();

  Serial.println ("10 seconds");



      if

           (digitalRead(switchPinS) == HIGH)

        {

        digitalWrite(svet, LOW);

          digitalWrite(zad, LOW);

        }





      else {

        digitalWrite(svet, HIGH);

          digitalWrite(zad, HIGH);

          }

  }



}
 

Вложения

Последнее редактирование:

Александр Симонов

Проходящий мимо
02.08.2018
304
56
38
#2
Не вижу в коде фоторезистора. И пользуйся кнопочкой Вставить - Код для кода, а то неудобно читать.
1571392791936.png
 
18.10.2019
6
0
1
#3
Не вижу в коде фоторезистора. И пользуйся кнопочкой Вставить - Код для кода, а то неудобно читать.
Поправил.
Фоторезистор работает как кнопка вкл-выкл и настраивается подстроечным.
В коде его можно найти в части с головным светом, переменная - int switchPinS=6;
 

Александр Симонов

Проходящий мимо
02.08.2018
304
56
38
#4
Поправил.
Фоторезистор работает как кнопка вкл-выкл и настраивается подстроечным.
В коде его можно найти в части с головным светом, переменная - int switchPinS=6;
Т.е. принудительного включения света нет? Лучше сделай трёхпозиционный переключатель: выкл - авто -вкл.
 
18.10.2019
6
0
1
#5
Т.е. принудительного включения света нет? Лучше сделай трёхпозиционный переключатель: выкл - авто -вкл.
Цель - максимально возможная автоматизация. Долгое подкручивание резистора для получения идеального результата.
Задача - избавление от кнопок. Полностью.

Лампу тормозов тоже можно через тактовую кнопку подключить. благо ход рычага тормоза позволяет.Но стоять будет именно гироскоп, если, конечно, критичных проблем не вызовет.
 
18.10.2019
6
0
1
#6
Друзья. Можно ли попросить о помощи развесить это добро в easyEDA.
Я в этом вопросе после нескольких попыток косорук и туп.
Если, конечно, вас не затруднит.

или хотя бы выложить компоненты правильные. я теряюсь в выборе :)

п.с. вешать это все планируется не на уно, а на нано.
 
#7
Приветствую, друзья!
Задался тут целью за зиму электрифицировать вел.
Суть в том, что нередко катаю в темное время суток и хочу быть чуть более видимым на дороге. (Ну и немножко поиграться в электронщика)

Запланировано:
1) все работает от ардуино (сделано)
2) поворотники (стоят вместо затычек грипс) управляются сенсорными кнопками (сделано)
3) головной свет и задний габарит управляются фоторезистором(модуль с подстроечным резистором) (сделано)
4) стоп загорается по данным с акселерометра (не сделано пока что, но в принципе сложности не вижу)
5) вся эта история работает от 4-х параллельных 18650 (сделано)

Протестировано:
1) написан код для ардуино (чуть более чем весь натырен и перестроен)
2) разведено и протестировано в cirquits. (в нем нет сенсорной кнопки, поэтому на скрине обычные тактовые кнопки)
3) напаяно тап-ляп навесом на плату и уже с сенсорными кнопками - работает.

Какой помощи прошу у сообщества:
1) произвести ревизию кода и подобранных компонентов
2) совместно подумать о форм-факторе платы и накидать все в easyEDA так, чтобы можно было собрать это максимально компактно.
Я бы этот пункт с платой сделал сам, но врожденное рукожопие не позволяет

код вот:
Код:
int switchPinR=8;

int switchPinL=7;

int switchPinS=6;

int zad=4;

int ledPinR=10;

int ledPinL=12;

int svet=11;

boolean ledOn = false;



unsigned long timing;



int i=0;

int z=0;



void setup() {

// put your setup code here, to run once:

pinMode(switchPinR, INPUT);

pinMode(ledPinR, OUTPUT);

pinMode(switchPinL, INPUT);

pinMode(ledPinL, OUTPUT);

pinMode(switchPinS, INPUT);

pinMode(svet, OUTPUT);

pinMode(zad, OUTPUT);

Serial.begin(9600);



}



void loop() {

// put your main code here, to run repeatedly:



//Правый поворотник.





if (digitalRead(switchPinR) == HIGH)

{

digitalWrite(ledPinR, HIGH);

i=0;

while (i<4) {

ledOn = !ledOn;

digitalWrite(ledPinR, ledOn);

delay(400);

i++;

z++;

if (digitalRead(switchPinR) == LOW && z>=4) { break; }

}

}

else

{

digitalWrite(ledPinR, LOW);

z=0;

}



//Левый поворотник.



if (digitalRead(switchPinL) == HIGH)

{

digitalWrite(ledPinL, HIGH);

i=0;

while (i<4) {

ledOn = !ledOn;

digitalWrite(ledPinL, ledOn);

delay(400);

i++;

z++;

if (digitalRead(switchPinL) == LOW && z>=4) { break; }

}

}

else

{

digitalWrite(ledPinL, LOW);

z=0;

}



//Головной свет



if

  (millis() - timing > 1000){

  timing = millis();

  Serial.println ("10 seconds");



      if

           (digitalRead(switchPinS) == HIGH)

        {

        digitalWrite(svet, LOW);

          digitalWrite(zad, LOW);

        }





      else {

        digitalWrite(svet, HIGH);

          digitalWrite(zad, HIGH);

          }

  }



}
Можно избавится от резисторов, поставить меньшие транзисторы (если планируется моргать одним светиком можно вообще их убрать) А по поводу розводки платы вы хотите серийное производство настроить?) Проще и быстрее для одноразового повторения на мелкой двухсторонней печатке розвести и спаять.
 
Последнее редактирование:
#8
Можно избавится от резисторов, поставить меньшие транзисторы (если планируется моргать одним светиком можно вообще их убрать) А по поводу розводки платы вы хотите серийное производство настроить?) Проще и быстрее для одноразового повторения на мелкой двухсторонней печатке розвести и спаять.
Вообще первым делом когда(если) все наконец приедет, соберу на макетке для теста.
Плату хочу исключительно для эстетического удовольствия - не так уж она и дорога.
Диодики по 1А/5в зажигать на малых транзисторах можно, но не хочется. то есть я не иду за результатом любой ценой, нужен каеф.
Собственно плату уже раскидал. Единственное, что, уже вижу, что надо изменить - ширина дорожек токоведущих.
 

Вложения

#9
Вообще первым делом когда(если) все наконец приедет, соберу на макетке для теста.
Плату хочу исключительно для эстетического удовольствия - не так уж она и дорога.
Диодики по 1А/5в зажигать на малых транзисторах можно, но не хочется. то есть я не иду за результатом любой ценой, нужен каеф.
Собственно плату уже раскидал. Единственное, что, уже вижу, что надо изменить - ширина дорожек токоведущих.
Вообще первым делом когда(если) все наконец приедет, соберу на макетке для теста.
Плату хочу исключительно для эстетического удовольствия - не так уж она и дорога.
Диодики по 1А/5в зажигать на малых транзисторах можно, но не хочется. то есть я не иду за результатом любой ценой, нужен каеф.
Собственно плату уже раскидал. Единственное, что, уже вижу, что надо изменить - ширина дорожек токоведущих.
Хотелось бы схемку взглянуть? А как вы собираетесь устанавливать диоды? Я так понимаю это сверх яркие или что то в этом духе?
 
#10
Хотелось бы схемку взглянуть? А как вы собираетесь устанавливать диоды? Я так понимаю это сверх яркие или что то в этом духе?
Не совсем понял о какой схемке речь идет, но в поворотниках, что будут вставлены взамен заглушек руля будут да, диоды. С моделью пока не определился, заказал несколько, посмотрю какие больше устроят. Их также на плату скорее всего размещу, на другую, естественно.
Защищаться они будут 3д печатным неким рассеивателем.
Головной свет будет в виде либо несколько модифицированного конвоя s2+, либо другого (не помню какой, но работает напрямую от юсб, по яркости субъективно не хуже конвоя)
Сзади будет фонарь тоже заводского исполнения. Он гарантированно яркий и удобный.