English Click this button for the international website

Bliksem & onweer: Arduino Halloween project

Voor Halloween wilde ik dit jaar wat leuke kleine hobbyprojecten doen met dingen die ik al had liggen. Dit project gaat over het simuleren van de donder en bliksem van een onweersbui gebruik makend van een Arduino Nano, LED’s en een DFPlayer Mini MP3 player module (zie de documentatie). Het was eenvoudig te bouwen en het werkte heel goed. Dus hier is de beschrijving, voor iedereen die ook zijn/haar gasten volgend jaar wil verrassen (of bang maken).

Merk op dat dit geen “sound to light”-systeem is. De schets flitst eerst (willekeurig) de LED’s en speelt vervolgens het geluidsbestand af, na een korte (willekeurige) vertraging. Ik denk dat dit realistischer is dan het knipperen van de LED’s als reactie op het volume van het geluid zoals andere projecten/systemen dat doen. Licht reist veel sneller dan geluid. Daarom zul je tijdens een ‘echte’ onweersbui eerst de flitsen zien. Het geluid komt daar achteraan, de vertraging is afhankelijk van hoe ver weg de onweersbui is.

Bliksem en donder met Arduino: benodigdheden

De onderdelen die gebruikt zijn voor dit project:

Je kunt natuurlijk ook een ander type 12V LED-verlichting gebruiken. De MP3-bestanden (zie beneden) zijn bij elkaar kleinen dan 6MB, dus elk SD-kaartje is geschikt.

Bliksem en onweer: Arduino Halloween project, DFPLayer Mini MP3 module
Bliksem en onweer: Arduino Halloween project, DFPLayer Mini MP3 module

De Arduino-bliksemsimulator bouwen

Het bouwen van de simulator is redelijk eenvoudig, zie ook onderstaande afbeeldingen:

  1. De 12V voeding wordt verbonden met de rode power-rail op het breadboard.
    De LEDs krijgen 12V vanaf de power rail op het breadboard (rode draad).
    De Arduino Nano krijgt 12V van de power-rail op zijn Vin pin (rode draad) en de GND pin van de Nano is aangesloten op de blauwe aarde-rail van het breadboard (blauwe draad).
  2. De DFPlayer Mini krijgt 5V op zijn VCC pin vanaf de Nano (rode draad).
    De RX pin van de DFPlayer gaat naar pin 10 op de Nano (zwarte draad) via een 1K weerstand.
    De TX pin van de DFPlayer gaat naar pin 11 op de Nano (paarse draad) via een 1K weerstand.
    De BUSY pin van de DFPlayer gaat naar pin 12 op de Nano (witte draad).
    De DAC-L (groene draad) en DAC-R (gele draad) gaan naar de stereo geluidsversterker.
    De GND pin van de DFPlayer gaat naar de blauwe aarde-rail (blauwe draad).
  3. De MOSFET GATE pin (links) gaat naar Nano pin 9 (oranje draad).
    De MOSFET DRAIN pin (midden) gaat naar de aarde-aansluiting van de LED-strip (zwarte draad).
    De MOSFET SOURCE pin (rechts) gaat naar de blauwe aarde-rail (zwarte draad).
  4. De aarde van de geluidsversterker is aangesloten op de blauwe aarde-rail.
Bliksem en onweer: Arduino Halloween project met DFPlayer, breadboardweergave
Bliksem en onweer: Arduino Halloween project met DFPlayer, breadboardweergave

 

Zorg ervoor dat de aarde van de voeding, Arduino, MOSFET, DFplayer en audioverbinding onderling verbonden is. Zorg er ook voor dat de 12V is aangesloten op de juiste pin (Vin) van de Nano.

Zorg ervoor dat u de polarisatie van 12V en aarde van de voeding en de LED’s goed hebt.

Ik heb een paar draden met krokodillenklemmen gebruikt om de LED’s en audio gemakkelijk op het breadboard aan te sluiten.

Bliksem en onweer: Arduino Halloween project met DFPlayer, bedrading
Bliksem en onweer: Arduino Halloween project met DFPlayer, bedrading

Bliksem- en onweersgeluiden in MP3-bestandsformaat

Ik heb 17 verschillende bliksem- en dondergeluiden in een .zip-bestand verzameld. Ze kunnen worden gedownload via de onderstaande link. De bestanden (0001.mp3 tot 0017.mp3) moeten in een map met de naam ‘mp3’ op de SD-kaart worden geplaatst. De kaart mag FAT16 of FAT32 geformatteerd zijn.

De Arduino programmeren

Je kunt de schets op de gebruikelijke manier uploaden naar de Arduino, met behulp van de USB-kabel. De Nano krijgt zijn stroom van de 12V-voeding, niet van USB. Dus na het uploaden kunt je de USB-kabel loskoppelen.

De schets gebruikt de DFRobotDFPlayerMini library, kijk op de GitHub-pagina voor meer informatie en technische details.

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

int ledPin = 9;    // LEDs (via MOSFET) connected to pin 9
int rxPin = 10;    // DFplayer RX to Arduino pin 10
int txPin = 11;    // DFplayer TX toArduinopin 11
int busyPin = 12;  // DFplayer BUSY connected to pin 12

SoftwareSerial mySoftwareSerial(rxPin, txPin);
DFRobotDFPlayerMini myDFPlayer;

void setup()
{

  pinMode(ledPin, OUTPUT);
  pinMode(busyPin, INPUT);

  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  Serial.println(F("Initializing DFPlayer..."));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin. Check connection and SD card, or reset the Arduino."));
    while (true);
  }

  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.setTimeOut(500);                   // Set serial communictaion time out 500ms
  myDFPlayer.volume(30);                        // Set volume value (0~30).
  myDFPlayer.EQ(DFPLAYER_EQ_BASS);              // Set EQ to BASS (normal/pop/rock/jazz/classic/bass)
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);  // Set device we use SD as default
  myDFPlayer.enableDAC();                       // Enable On-chip DAC
}

void loop()
{
  int flashCount = random (3, 15);        // Min. and max. number of flashes each loop
  int flashBrightnessMin =  10;           // LED flash min. brightness (0-255)
  int flashBrightnessMax =  255;          // LED flash max. brightness (0-255)

  int flashDurationMin = 1;               // Min. duration of each seperate flash
  int flashDurationMax = 50;              // Max. duration of each seperate flash

  int nextFlashDelayMin = 1;              // Min, delay between each flash and the next
  int nextFlashDelayMax = 150;            // Max, delay between each flash and the next

  int thunderDelay = random (500, 3000);  // Min. and max. delay between flashing and playing sound
  int thunderFile = random (1, 17);       // There are 17 soundfiles: 0001.mp3 ... 0017.mp3
  int loopDelay = random (5000, 30000);   // Min. and max. delay between each loop

  Serial.println();
  Serial.print(F("Flashing, count: "));
  Serial.println( flashCount );

  for (int flash = 0 ; flash <= flashCount; flash += 1) { // Flashing LED strip in a loop, random count

    analogWrite(ledPin, random (flashBrightnessMin, flashBrightnessMax)); // Turn LED strip on, random brightness
    delay(random(flashDurationMin, flashDurationMax)); // Keep it tured on, random duration

    analogWrite(ledPin, 0); // Turn the LED strip off
    delay(random(nextFlashDelayMin, nextFlashDelayMax)); // Random delay before next flash
  }

  Serial.print(F("Pausing before playing thunder sound, milliseconds: "));
  Serial.println(thunderDelay);
  delay(thunderDelay);

  Serial.print(F("Playing thunder sound, file number: "));
  Serial.println(thunderFile);
  myDFPlayer.playMp3Folder(thunderFile);
  delay(1000); // Give the DFPlayer some time

  while (digitalRead(busyPin) == LOW) { // Wait for the DFPlayer to finish playing the MP3 file
  }

  Serial.print(F("Pausing before next loop, milliseconds: "));
  Serial.println(loopDelay);
  delay(loopDelay);

}
Geekcreit® ATmega328P Arduino Compatible Nano V3 Improved Version With USB Cable
Getest en aanbevolen door OneGuyOneBlog.com:

Geekcreit® ATmega328P Arduino Compatible Nano V3 Improved Version With USB Cable
Banggood.com
DFPlayer Mini MP3 Player Module For Arduino
Getest en aanbevolen door OneGuyOneBlog.com:

DFPlayer Mini MP3 Player Module For Arduino
Banggood.com
5M Cool White 3528 SMD LED Strip Light Non-Waterproof 12V DC 300 LED
Getest en aanbevolen door OneGuyOneBlog.com:

5M Cool White 3528 SMD LED Strip Light Non-Waterproof 12V DC 300 LED
Banggood.com
5Pcs IRFZ44N Transistor N-Channel International Rectifier Power Mosfet
Getest en aanbevolen door OneGuyOneBlog.com:

5Pcs IRFZ44N Transistor N-Channel International Rectifier Power Mosfet
Banggood.com
300Pcs 1% 1/4W Metal Film Resistor Resistance 30 Values Assortment Kit
Getest en aanbevolen door OneGuyOneBlog.com:

300Pcs 1% 1/4W Metal Film Resistor Resistance 30 Values Assortment Kit
Banggood.com
8.5 x 5.5cm 400 Tie Points 400 Holes Solderless Breadboard Bread Board
Getest en aanbevolen door OneGuyOneBlog.com:

8.5 x 5.5cm 400 Tie Points 400 Holes Solderless Breadboard Bread Board
Banggood.com
65 Pcs Breadboard Jumper Connect Cable Adapter Cable
Getest en aanbevolen door OneGuyOneBlog.com:

65 Pcs Breadboard Jumper Connect Cable Adapter Cable
Banggood.com
8G Micro SD TF Micro SD Card For Cell Phone MP3 MP4 Camera
Getest en aanbevolen door OneGuyOneBlog.com:

8G Micro SD TF Micro SD Card For Cell Phone MP3 MP4 Camera
Banggood.com
DANIU 42cm 10pcs Alligator Clips Electrical DIY Test Leads
Getest en aanbevolen door OneGuyOneBlog.com:

DANIU 42cm 10pcs Alligator Clips Electrical DIY Test Leads
Banggood.com
9 Reacties

Voeg een reactie toe

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *