ITСooky

IT-рецепты съедобные и не очень!

Бизиборд своими руками на Ардуино!

дата 19.02.2017

Бизиборд реально работает — малыш к нему подходит и залипает на пол часа, телевизор тоже такое же действие производит, но его вредно много!

Конечно, бизиборд можно было бы купить — если бы были деньги, если бы они не были тупыми (например провод с вилкой торчит из розетки или шпингалет висит на стене и ничего не открывает), если бы они не выгляели дешманскими — дешманский можно и самому сделать!

Сразу отказался от покраски. В домашних условиях негде сушить, нет проверенной краски — которая может и не высохнуть, а высохнув начать слезать, а малыш её есть. В качестве основы взял щит мебельный в Obi… Obi это такой магазин где одно и тоже можно купить за 500 и за 50 рублей. Например включатели на стену — красиво разложены выключатели фирмы Legrand, а в углу или сбоку стенда в куче валяются «такие же выключатели» за 80 рублей! Тоже самое с металлическими карабинами, это я вообще не понял сбоку начинаются от 40 рублей на стенде от 140 WTF!

Как все попилить, прикрутить это понятно, подробно буду рассказывать об электронике! Вот она прячется под Светильник ПанЭлектрик влагозащитный IP54 овал с решеткой а динамики прячутся под эээ такая решеточка в кухне кладется на слив.

Берем Arduino Nano подделка брал вот эту, к нему Винт Щит Доска брал вот этот, печатную плату маленькую для пайки того, что требует резисторов у меня вот такой набор, динамик 1 ОМ 8 Ватт вот такой , MP3 плеер DFplayer Mini вот такой и что удивительно кнопки, кнопки купил не в Китае а тут вот тут кнопки без фиксации разных цветов.

Это то что крупное, по мелочи у меня уже было: сопротивления, светодиоды, провода… провода взял ethernet’овские витая пара, попались такие, которые одной проволочкой идут, очень удобно для пайки! Вот так это выглядит в сборе.

Схема

Выглядит сложно, но так оно и есть!

Скетч

   
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

boolean s8 = false;
boolean p8 = false;
boolean s2 = false;
boolean p2 = false;
boolean s9 = false;
boolean p9 = false;
boolean s7 = false;
boolean p7 = false;
boolean s10 = false;
boolean p10 = true;
boolean b10 = false;
boolean led = false;
int n = 50; 
unsigned long start = 0;
unsigned long play = 0;
unsigned long del = 0;

void setup () {

Serial.begin (9600);
 mp3_set_serial (Serial);   
   delay (100); 
    mp3_set_volume (25);
    delay (100);
pinMode(11, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
}

void loop () {  
  analogWrite(6, 250);
  analogWrite(5, 165);
  
   if ((digitalRead(8) == HIGH) && (p8 != 1) )
  {  
s8 = 1;
} 
 if ((s8 == 1) && (p8 != 1)) 
 {
   delay (100);    
mp3_stop ();
delay (100); 
mp3_set_volume (14);
delay (100);
mp3_play (6);
    start = millis();
    play = 7000;
   p8 = 1;
 }
 
    if ((digitalRead(2) == HIGH) && (p2 != 1) )
  {  
s2 = 1;
} 
 if ((s2 == 1) && (p2 != 1)) 
 {
   delay (100);    
mp3_stop ();
delay (100); 
mp3_set_volume (14);
delay (100);
mp3_play (5);
    start = millis();
    play = 40000;
   p2 = 1;
 }
 
     if ((digitalRead(9) == HIGH) && (p9 != 1) )
  {  
s9 = 1;
} 
 if ((s9 == 1) && (p9 != 1)) 
 {
   delay (100);    
mp3_stop ();
delay (100); 
mp3_set_volume (14);
delay (100);
mp3_play (2);
    start = millis();
    play = 3000;
   p9 = 1;
 }
 
      if ((digitalRead(7) == HIGH) && (p7 != 1) )
  {  
s7 = 1;
} 
 if ((s7 == 1) && (p7 != 1)) 
 {
   delay (100);    
mp3_stop ();
delay (100); 
mp3_set_volume (14);
delay (100);
mp3_play (3);
    start = millis();
    play = 11000;
   p7 = 1;
 }
 
 
       if ((digitalRead(10) == HIGH) && (p10 != s10) )
  {  
p10 = 0;
b10 = 1;
   delay (100);    
mp3_stop ();
delay (100); 
mp3_set_volume (14);
delay (100);
mp3_play (1);
    start = millis();
    play = 3000;

 }
 
        if ((digitalRead(10) == LOW) && (p10 == s10) )
  {  
p10 = 1;
b10 = 1;
   delay (100);    
mp3_stop ();
delay (100); 
mp3_set_volume (14);
delay (100);
mp3_play (1);
    start = millis();
    play = 3000;

 }
 
 
 if (digitalRead(12) == LOW)
  { analogWrite(11, 0);  
  }
 
 if (digitalRead(12) == HIGH)
  {  
    
  del = del + 1;  
    
    
    if (del > 100)
    {
    
      analogWrite(11, n);  
  
  if (led == 1)
  {
    n = n + 1;
  }
   if (led == 0)
  {
    n = n - 1;
  }
  
  if (n > 130)
  {
    led = 0;
  }
  if (n < 2)
  {
    led = 1;
  }  
  
   del = 0;
    }
   
    
 }
 
 
 
 if ((millis() - start >  play) && ((p8 == 1) || (p2 == 1) || (p9 == 1) || (b10 == 1) || (p7 == 1)))
{
p8 = 0;
s8 = 0;
p2 = 0;
s2 = 0;
p9 = 0;
s9 = 0;
p7 = 0;
s7 = 0;
b10 = 0;
delay (100);    
mp3_stop ();
}
 
  

} 

Нажимаем кнопку играет аудио
Музыка играет от кнопок и от однокнопочного выключателя. Библиотеку для DfPlayer брал эту https://github.com/DFRobot/DFPlayer-Mini-mp3. В отличие от предыдущего MP3 плеера этот отличается некой автономностью — послал команду играть, и он сам играет, но надо послать и команду, чтобы остановился — поэтому вместе с названием файла указываю и продолжительность. Звуки брал тут, очень слишком настоящие, но мне понравились http://www.orangefreesounds.com/farm-sounds/. Файлы на SD карте надо класть в папку MP3 и именовать 0001.mp3 и так далее.

Кстати, кнопки без защиты от ложного срабатывания (если кто-то включает свет или холодильник мотор возникают помехи в сети и может сработать), но пока это считаю за плюс, иногда бизиборд сам кукарекает!

Вставляем вилку в розетку, и лампочка начинает мигать
Для провода использовал такие тросики для крепежа багажа, они тянутся. Для прикрытия светодиода используются повторители поворота для ваз вот такие.

Нажимаем двукнопочный выключатель — загораются светодиоды
Они тоже прикрыты повторителями поворота. Светодиоды подключены к ШИМ(Fade) пинам, чтобы регулировать яркость — синий светодиод светит заметно ярче зеленого и желтого, может, конечно, плохо припаял. Тут вообще ничего не программировал — смотрите по схеме, выключатель включает заземление.

Телефон настоящий
Телефонный аппарат настоящий, не в том смысле, что куплен в MVideo за баснословные 790 рублей, а то, что он подключен к VoIP шлюзу подделку под Linksys SPA3000, вот этому старому! Это дает гудки, а если нажать **** попадаем в меню, где робот что-то говорит по-английски, а потом начинает озвучивать нажатые цифры!

Перспектива
Повесить на бизиборд старый Android планшет. Можно что-то придумать с датчиками и моторчиками. Можно добавить еще кнопок, но пинов не осталось, как-то делают через один аналоговый и кучу сопротивлений!

  • Yuri Alfim

    Вообще Супер! прям есть желание повторить

  • Алексей Арсеньев

    можно расширить количество пинов через I2C интерфейс