Lucid Dreaming Device (tACS)

This headset uses transcrainial alternating current stimulation to induce lucid dreaming in wearers!

Similar projects worth following
Lucid dreaming is a state where one who is dreaming is also aware that they are dreaming and can control it... a very cool blend of the subconscious and conscious parts of the mind.

This headset is being designed based off of a study that was published earlier this year (2014) which claimed that around 70% of participants who had no experience with lucid dreaming reported lucid dreams when certain parts of the brain where stimulated with a very small 40Hz alternating current around 2mA peak to peak.

When I read the study I immediately started to work on my own device so I could test this out for myself and thus this project was born.

Currently the device is almost ready for testing and I am waiting for more parts from Digikey and Oshpark to arrive to finish the RevA board. Then I will have to actually make the electrodes that will be placed on the points of the head outlined by the study. And finally everything will be made into a headset and testing will ensue.

The hardware for this project was designed to make the software much easier to write. The main goal of the device is to provide the 40Hz signal to the electrodes at a certain times in the morning specified by the user.


Microcontroller - Currently using the ATMEGA328p doing basic things such as reading the RTC turning on the oscillator, controlling the digital pot. Uses the external 16MHz crystal

Oscillator - There is quadrature oscillator using two op-apmps located on one of the lm358's. The oscillator is designed to generate a 40Hz sine wave which is then passed through the digital pot and eventually to the current regulator. The frequency generated is tuned by the 20k pot.

Digital Pot - used to control the amplitude of the signal. It allows the current through the electrodes to 'ramp up' slowly so that the wearer is not woken by a sudden application of current.

Current Regulator - regulates the current through the electrodes. I designed it to supply a current of 2mA when fed a 1 volt signal. This uses one op-amp located in the other lm358.

Real Time Clock - using the pcf8563 because it has alarm capabilities, which are used to wake the microcontroller from sleep. This allows the user to set a time for the device to wake up and send the current through the electrodes.

**Make sure to check out the GitHub page to get all of the files that I have been using for this project including:

  • Schematic pdf and the actual .sch files
  • Board files for KiCad
  • Bill of Materials listing all parts with some links to Digikey parts
  • All code I have been using

Here is a nice picture of the RevA board. I just fixed the only problem I found on the chip and am waiting on the boards to come in from Oshpark and then I will make the final RevA for testing.


I am using arduino in this project because there are already libraries available for the RTC and I am lazy. The board is programmed via the icsp header in the top right hand corner of the board where the top right hand pin is the ground pin. You will need a programmer such as a USBtinyISP from ebay, any avr programmer that can program using a 6pin isp port will work.

After the board was created I burned the arduino bootloader onto it in the arduino ide, then any code can be uploaded by going to file - upload using programmer. In tools, the board is Arduino Dueminlanove w/ Atmega328, and the programmer is whatever programmer you are using in my case the USBtinyISP.

Again all software will be available on the GitHub page that is linked on the left of the main project page. If you can't find it my name is breadboardbasics on GitHub and the repository is called Lucid.

Also in my opinion the current limiter was the hardest aspect of this project so far. I posted a thread on physicsforums about it. If you are interested my name on physicsforums is HHOboy. Here is a link: Forum Thread

Please let me know if you have any questions or feedback about this project. This is my first time using Hackaday and GitHub so I am still finding my way around. Thanks for looking!

  • 1 × 9 Volt Battery Power Source
  • 2 × 22pF Cap
  • 4 × .22uF Cap
  • 4 × 10uF Cap
  • 2 × Diodes Switching

View all 16 components

  • Log 1

    Tyler Sisk03/09/2015 at 02:14 1 comment

    Update! - I have finished the headband and tried out the device one night. Unfortunately I did not have any dreams that night because I was not used to wearing the headband and was anxious about lucid dreaming. For the electrodes I 3-D printed two housings and cut out two copper squares that went in the bottom of the electrode housing. On top of that I cut some paper towel squares that would be soaked in saline so that they are conductive. The saline soaked paper towels were the part actually in contact with my head. I also laser cut a wooden bracket for the board to sit on and connect to a head band so that I could wear it.

    As far as the experiment went, I could definitely tell that the electrodes were passing current through my head. I was running the output at 250 micro amps and there was a slight tingling feeling that I could feel when it was on. Also when I placed the electrodes near my eyes, I could see fast, faint flashes called phosphenes which are normal. I awoke many times during the night because I was anxious and restless. I woke up many times after the device turned on around 5am or so and witnessed the 2 minute intervals of stimulation and could slightly feel them. I could not go in to a heavy sleep and am almost certain that I had no dreams. Hopefully repeated trials will allow me to get over my anxiety and I can get into a deeper sleep.

    I need to make some improvements to the device that will help me sleep better with it on and be overall more convenient to use. First I think that the electrodes much bigger than they should be so I will redesign the housings and make them much smaller. The wooden piece that holds the board onto the headband can also be made smaller. I want to use conductive thread in the headband instead of regular wires for the electrodes in order to make everything neater and easier to use. I also plan on making a GUI that will streamline the programming process and make it easier for others with no coding background to use, it should also make it much easier for me to use. Also as you can see below, after using the electrodes the copper plates had a significant amount of corrosion on them, so I will be changing those to stainless steel.

    Finally the electrode layout on my head wasn't the best. I don't believe that I had them in the exact positions given by the study, also the study called for 4 2in x 2in electrodes and I only used two on one side of my head, so I will be adding two more for the other side of my head.

    Here are some pictures of everything. Remember that there are lots of files for this project on my gethub page that was linked to at the top of this page. Thanks for following along!

View project log

Enjoy this project?



steeph wrote 08/04/2018 at 23:55 point

I too wish this project would get another update. If not, it would be great if we could get the schematic to edit/finalize. 

  Are you sure? yes | no

Charles Carabott wrote 09/06/2017 at 18:31 point

Hi Tyler. Is the project finished yet? I'm definitely interested In buying or building this device

  Are you sure? yes | no

Chrissou06 wrote 06/12/2015 at 09:19 point

Hi Tyler!

Thanks for doing this ! I wondering if you ever experienced lucid dreams on your own ?

Anyway I'll be the first to buy one of your clone when you'll get result ! I'm a super fan

Good luck

  Are you sure? yes | no

Tyler Sisk wrote 06/19/2015 at 20:16 point


I have had one lucid dream before but not when wearing the headset, however I still have only tested the headset twice and both times everything was still not working the best. I am almost done with the next prototype using the same board but a much better electrode and headband setup and will be updating the project soon. Thanks for your interest!

  Are you sure? yes | no

c.lamport wrote 04/30/2015 at 13:52 point

I've heard some conflicting information between the lucid dreaming using tACS vs tDCS, can you link me to a whitepaper? Also, any success with lucid dreaming yet?

  Are you sure? yes | no

Tyler Sisk wrote 04/30/2015 at 13:59 point

Hi, here is a link to the paper I am referencing.

Also no success yet I have only tried two nights, however I just got a new headset made that is much more comfortable to wear while sleeping. I plan on starting to work on the project much more starting next week when I get out of school.

  Are you sure? yes | no

steeph wrote 03/10/2015 at 10:06 point

Hey, thanks for putting effort into this. We really need a good open tACS device.

Why do you use a digital potentiometer and not an A/D converter? I find this to be the main problem of OpenStim because you can't get down to very low currents. But the components list tells me you chose a different approach. Maybe the schematics would answer my question already. Could you post or link these or maybe the github page?

  Are you sure? yes | no

Tyler Sisk wrote 03/10/2015 at 13:15 point

Hey thanks for checking the project out! Here is a link to the pdf on the github page: just click the "view raw" link to download the file. 

The digital pot allows me to contol the amount of current in software, and I did consider using PWM but I didn't want the actual PWM frequency in the output so it would have required some filtering circuitry which I didn't want to fool with.

If I were to redo the board I think that I would choose a slightly different approach for this. Hopefully the schematics help but yes you can get down to very low currents with this design. 

  Are you sure? yes | no

steeph wrote 03/11/2015 at 05:49 point

Ah, I see, separate oscillator. That makes sense. If I understand this correctly, you can't control the frequency in software. This would be a nice feature to have since different frequencies may have different effects and we are still at the very beginning of experimenting with this.

If you don't mind answering some more questions:

Did you measure the current with the scope, like with a µCurrent? How accurate would you say is it?

Did you test how well it reacts to sudden and strong changes in the resistance (electrodes getting out of place, heavy sweating).

What current do you use? Does it ramping? What's the highest current it can produce?

I'm asking more for the hardware here, I haven't looked into the code, yet.

And, a question not exactly related to the device: How high would you go with the current if you know it helped better? Like, if it would turn out that it would be perfectly reliable for LD induction at 3 mA or more. Would you do it?

  Are you sure? yes | no

steeph wrote 03/11/2015 at 06:07 point

OK, I looked at the code (that is simple, man). So I remove the question about ramping.

What other things to you plan to include?

  Are you sure? yes | no

Tyler Sisk wrote 03/22/2015 at 20:52 point

Yep, you are right I can't control the frequency or wave type through software which is definitely a con of doing it with the oscillator. After testing with the current revision hardware I plan on creating a new revision that will use a DDS chip such as the AD9837 where I can set frequency through software. The reason I didn't use it to begin with is I simply didn't know about them haha.

The current is measured with my scope or multimeter, I don't own a uCurrent, but it should still be fairly accurate, my multimeter has a resolution of 10uA. Also the current should't be a very critical parameter as far as accuracy goes. 

I did not test it for sudden loads but that is something I should definitely do, thanks for the inquiry.

As far as you question about how high I would go with the current, I would not go very high. In my last test I only used .25mA and I could still slightly feel it. I tried it at around 1.5mA and I was getting those flashes in the eyes and could really feel my skin tingling under the electrodes (It is kind of scary haha).

Currently I am working on converting all the code to pure C and writing a script that will program the device easily, prompting for different parameters such as the time to wake up and current and then automatically programming the device. Before I had to manually go in and manually change the parameters in either Atmel Studio or Arduino and then upload it which is a hassle right before bed.

After the new code is done I am going to work more on the electrodes and headset to make it more comfortable and easier to sleep in.


  Are you sure? yes | no

steeph wrote 03/22/2015 at 23:02 point

Thanks for your detailed reply. I like what you have planned. I wish I could help somehow. My knowledge about electronics is still below yours it seems. But I'll definitely test the next revision.

Whether you use a DDS or generate the frequency directly in the Atmel, the crucial part is the current control. Using a DDS doesn't sound as flexible. And I don't think it would have to be a perfect sine wave. But I'm not trying to talk you into doing it my way.

  Are you sure? yes | no

PointyOintment wrote 01/08/2015 at 18:33 point

How did you encode those images? I've never seen images that load like that before.

  Are you sure? yes | no

Tyler Sisk wrote 01/08/2015 at 20:25 point

Hmm.. I know that I used some sort of online jpeg compressor because the original pictures were to big but other than that I'm not sure. Are they fast or something?

  Are you sure? yes | no

PointyOintment wrote 01/08/2015 at 23:52 point

The load first in blurry black-and-white from top to bottom, and then the color loads from top to bottom.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates