Cranial Stimulator using Arduino

Parts and materials

Arduino Nano R3
2N3904 transistor
2N3906 transistor
Fairchild semiconductor 1n4004. image 1N4007 – High Voltage, High Current Rated Diode
Rotary potentiometer (generic)
LED (generic)
Pushbutton Switch, Momentary
Slide Switch
Output Audio trafo from old MW radio
resistors and capacitors

Tools and machinery that are required

Soldering iron (generic)
Solder Wire, Lead Free

Harmonic frequencies are used in cranial electro stimulation to help balance the chemistry of the brain.
The brain harmonic frequencies, by interacting with the body’s control centre, give a wide range of advantages in a painless and non-invasive way, with little or no adverse effects:

  • Helps to relieve tension
  • Recover mental clarity and sharpness
  • Aids in the treatment of addictions and cravings
  • Insomnia treatment
  • Make meditation more enjoyable
  • Pain treatment, and so forth…

A project for creating such a gadget was recently published in a local magazine, however the device was very sophisticated, containing six Integrated Circuits.

A comparable gadget may be created in a very easy fashion using an Arduino microcontroller and a few discrete parts.

The fundamental concept and code for this project came from the forum.

I added a basic 20-minute timer to the code, which is the suggested duration for this sort of experiment.
This time may easily be changed in the code in line:

timerCount = 20  60  10; ////(20 mins  60 sec  10 * 1 deciseconds)

I also included a button to toggle between Brain Tuner and Bio Tuner modes.

Arduino creates two frequencies (111 Hz and 1110 Hz), which are modulated by a third frequency and then multiplexed by an audio transformer before being applied to the earlobes.

The device is easy to put together and just has a few parts:

Microcontroller Arduino Nano

A discrete element board with four transistors, a number of resistors and diodes, as well as a transformer

I’m utilising a transformer from an old radio receiver’s output audio stage, and more specific trafo features may be found on the above-mentioned thread.

  • Two potentiometers
  • Button
  • two leds
  • and Ears Clips

Now let’s have a look at how the gadget actually works.

An oscilloscope will be connected to the output for this reason, allowing us to follow the form of the output signal.

To do this, a 1.5 kiloohm resistor is connected in parallel to the output.

The first potentiometer will regulate current in the electrodes, and you may adjust it while using the gadget based on your ear feeling.

You should only adjust it to the point where you can feel minor tingling or a little more, as too much current can cause discomfort.

Other potentiometers regulate the signal interrups, which can range from 0.5 to 5Hz.

The signal we observe on the oscilloscope screen is the same as the commercial Bob Beck Brain Tuner, which costs around $150.

The gadget also features a Bio Tuner mode, which is activated by the switch, and the structure of this signal may be seen on an oscilloscope.

The timer is started by pressing the yellow button.

The LED remains on until 20 minutes have passed, after which it goes off.

Because of the nature of this presentation, I cut the length down to one minute.

A relay can be attached to the timer in addition to the LED to physically regulate the length of the therapy.

You can see two schematic diagrams at the link with a thorough description, one of which depicts merely Brain Tuner and the other of which contains Bio Tuner mode and timer but is more difficult to create.

It is essential to note that the gadget should be powered by a battery that will last a long period owing to its low consumption.

This gadget is not intended for medical use.

I can’t claim or show that this gadget has any therapeutic value, but if you’re interested in giving it a shot, the circuit is so inexpensive and simple to make that it’s worth a shot.

Finally, the gadget is enclosed in an appropriate PVC box with a self-adhesive color label.


long time_;

int gate_ = 0;
long gate_contador = 0;
int gate5 = 0;
int gate_2 = 0;

int array_time_gate[] = {0, 200, 500, 1000, 1500, 2000}; // gate values 5 Hz to 0.5 Hz (200 ms to 2s aprox)
int startButton = 13; //pin recieving info from start button
int startLED = 4;   
unsigned long timerCount = 0; // variable to hold our timer info
#include <PWM.h> // library frequency "PWM"

void setup() {
  pinMode(startButton, INPUT_PULLUP); //set pin as recieving info
  pinMode(startLED, OUTPUT); 
  digitalWrite(startLED, LOW); 

  SetPinFrequencySafe(9, 111); // 111 Hz to pin PWM 9
  pwmWrite(9, 50 * 2.55); // 50% duty Cicle

  SetPinFrequencySafe(3, 1110); // 1110 Hz to pin PWM 3
  pwmWrite(3, 50 * 2.55); // 50% duty Cicle

void loop() {
if (digitalRead(startButton) == HIGH) 
    { //if the start button has be pushed
     timerCount = 20  60  10; //set timer to approximately 5 mins 
     //(20 mins   60 sec  10 * 1 deciseconds)
     //this is set up to restart the timer whenever the start 
     //button is pushed
     //not extremely exact since that is not what I needed for this project
     //if you are looking for something more exact, look into 
     //SimpleTimer() Arduino funtions and libraries:
  if (timerCount != 0)
   { //if the count down timer is still running
     digitalWrite(startLED, HIGH); 
     //tell the control pin to provide power to the project
     timerCount = timerCount - 1; 
     //count down of a decisecond (0.1 sec)
     //delay for timercCount refrence of a decisecond
   else { //if the timer has run out
     digitalWrite(startLED, LOW);
  time_ = millis(); // read time since arduino power on

  gate_ = analogRead (0); // read pin A0 values of the "arduino nano" seleccionated with potentiometer 10K
  gate = map(gate, 0, 1023, 0, 6); // 0 to 6 >>> 5 Hz to 0.5 Hz (200 ms to 2s aprox)
  if (gate_ > 5) {
    gate_ = 5;
  gate_ = array_time_gate[gate_]; // read array fron potentiometer

  if (gate_ != 0) { //active gate
    gate(); // call to gate subroutine

  if (gate_ == 0 && gate_2 == 1) { //reactivate frequencies
    SetPinFrequencySafe(9, 111); // 111 Hz to pin PWM 9
    pwmWrite(9, 50 * 2.55); // 50% duty Cicle

    SetPinFrequencySafe(3, 1110); // 1110 Hz to pin PWM 3
    pwmWrite(3, 50 * 2.55); // 50% duty Cicle
    gate_2 = 0;

void gate() { // gate subroutine
  if (gate > gate5 + 2 || gate < gate5 - 2) {
    gate_contador = millis();
    gate5 = gate_;
    gate_2 = 1;

  if (gate_2 == 0 && time_ >= gate_contador) { // desactivate pin9 and pin3
    pwmWrite(9, 0);
    pwmWrite(3, 0);
    gate_contador = gate_ + millis(); // selected gate valued + current time
    gate_2 = 1;

  if (gate_2 == 1 && time_ >= gate_contador) { // active pin9 and pin3
    pwmWrite(9, 50 * 2.55);
    pwmWrite(3, 50 * 2.55);
    gate_contador = gate_ + millis(); // selected gate value + current time
    gate_2 = 0;

Listen to understand not to Answer


“Have a timely Pivot” – KP

Nothing can destroy a person, But it’s own mindset can


Helping Hands.

About the author


View all posts

Leave a Reply

Your email address will not be published.