Computer-controlled Signal-randomized Translingual Neurostimulator
by quicksilv3rflash in Circuits > Electronics
48 Views, 1 Favorites, 0 Comments
Computer-controlled Signal-randomized Translingual Neurostimulator
This project was commissioned by Diego in Canada in order to work with the MathAddict browser extension, whose GitHub repository may be found here, which itself builds off of MathAcademy. This system then controls the previously-built signal-randomized translingual neurostimulator using an Arduino Nano as a bridge between the computer and the translingual neurostimulator, enabling the neurostimulator to be USB-controlled.
Supplies
See ordering instructions and design files here:
https://www.instructables.com/Signal-randomized-Translingual-Neurostimulator-TLN/
https://www.amazon.com/Cable-Matters-Mini-Feet-Black/dp/B00UUBS0SS
Silicone-insulated wire, 20 gauge, 2 conductors
https://www.amazon.com/TUOFENG-Silicone-Electrical-Conductor-Parallel/dp/B0981P286D
https://www.amazon.com/50PCS-MPSA06-NPN-Transistors-TO92/dp/B0DMT35ZLR
Resistors, 1.5k, 3.3k, and 10k, all 250mW
https://www.amazon.com/Molence-Resistor-Resistors-Assortment-Experiments/dp/B0C5N47J51
https://www.amazon.com/Capacitance-Transparent-Electronic-Professionals-Enthusiasts/dp/B0GDS6L12N
https://www.amazon.com/Tulead-Perfboard-Prototyping-Circuit-Experiment/dp/B07V9LSJLZ
Arduino Nano clone with CH340 USB-to-TTL serial converter, best found through ebay -- item listings are named things like "MINI USB Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller board for arduino"
https://www.ebay.com/itm/177244633950
https://www.truevalue.com/product/helmsman-11-5-oz-aerosol-high-gloss-spar-urethane/
https://www.homedepot.com/p/Gorilla-1-in-x-1-67-yd-Black-Heavy-Duty-Mounting-Tape-6055002/308910063
https://www.homedepot.com/p/3M-ScotchBlue-1-88-In-x-60-Yds-Original-Multi-Surface-Painter-s-Tape-3-Rolls-2090-48EP3/305218415
https://www.amazon.com/GuruNanda-DentalGuru-Gum-Massager-Toothbrush/dp/B0CHGQ4VHY
https://www.amazon.com/Distilled-Steam-Distilled-Drinking-Appliances-Medical/dp/B0FX43RGCT
Isopropanol (91%)
https://www.amazon.com/Isopropyl-Alcohol-Antiseptic-Topical-Solution/dp/B0FNK4FQLC
Rectangular food storage container
https://www.walmart.com/ip/Rubbermaid-Red-Plastic-Food-Storage-Container-3-Count/16664882
Lithium-Ion cells with built-in protection circuit (450mAh)
https://www.amazon.com/dp/B0CQ71ZS1X
Soldering iron (I'm using a MINIWARE TS100 -- since replaced by the TS101)
https://www.amazon.com/NovelLife-TS101-Soldering-Adjustable-Temperature/dp/B0BLNHB11B
Solder (SN100C alloy, 3% NC601 flux, 0.032" diameter)
https://www.amazon.com/FCT-SN100C-NC601-Clean-Solder/dp/B07RWRSYKK
AVR programmer (Atmel-ICE)
https://www.digikey.com/en/products/detail/microchip-technology/ATATMEL-ICE/4753379
Pin header (1x4, 2.54mm spacing)
https://www.digikey.com/en/products/detail/w%C3%BCrth-elektronik/61300411121/4846827
Personal computer (I'm using a CHUWI MiniBook X N100 -- since replaced by MiniBook X N150)
https://www.chuwi.com/product/items/chuwi-minibook-x-n100.html
Atmel Studio (version 7.0.2389)
https://sourceforge.net/projects/gcbasic/files/Support%20Files/ATMELCompilers/ATMEL7Studio_installer-7.0.2389-full.exe/download
Flash Modified Firmware to TLNS Board
The modified TLNS firmware is found on this project's GitHub repository,
https://github.com/quicksilv3rflash/computer-controlled-signal-randomized-translingual-neurostimulator
at /2026_04_02_TLNS_firmware/TLNS/main.c
Follow the TLNS firmware flashing instructions at
https://www.instructables.com/Signal-randomized-Translingual-Neurostimulator-TLN/
steps 9 through 14, but using the modified firmware linked above.
For the firmware flashing process, it is necessary to have a battery attached to the TLNS board (or an alternate means of powering it), but the battery is not required for operation of the final device configuration, as it draws USB power from the computer it is connected to.
Device Schematic
This schematic shows how the TLNS device is connected to the Arduino Nano, the five additional discrete components required to facilitate communication, and the single component which must be removed from the TLNS board to allow for proper operation.
Solder the Arduino Nano and Communication Bridge Circuitry to Perfboard
Solder the Arduino Nano to the perfboard, then add the communication bridge circuitry and output lead wires. The output wires from the MPSA06 transistor on the perfboard can now be connected to the TLNS device, across switch K1.
Install Local Drivers for CH340 USB-to-TTL Serial Converter IC
The CH340 integrated circuit on the Arduino Nano requires its own driver software to work properly with the computer. Sparkfun has created a detailed and useful guide to installing the required driver software at
https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all
There is also additional information -- and yet more potential driver installation files -- (though it appears partially out-of-date) at
https://sparks.gogo.co.nz/ch340.html
Flash Firmware to Arduino Nano
The Arduino Nano firmware is found on this project's GitHub repository,
https://github.com/quicksilv3rflash/computer-controlled-signal-randomized-translingual-neurostimulator
at /2026_05_11_arduino_bridge_firmware/2026_05_11_arduino_bridge_firmware.ino
The Arduino Nano bridge firmware was written and flashed using Arduino 2.3.6 on Linux Mint. It *should* work with any version of the Arduino IDE, but I am noting the precise version number and operating system used in the event that there are any compatibility issues of which I am unaware. Open the firmware in the Arduino IDE, select the correct port (Tools > Port > [should be the only available option, /dev/ttyUSB0 on my system]), board (Tools > Board > Arduino Nano), and bootloader variant (Tools > Processor > Atmega328P (Old Bootloader) ), then press Ctrl+R and then Ctrl+U.
Remove Resistor R5 From the TLNS Device
Remove resistor R5 from the TLNS board. It is an imperial 0603 resistor (1608 metric), so it is easy to simultaneously reflow both of its solder joints and remove it from the board with the tip of the soldering iron.
Solder 3.3kOhm Resistor to the TLNS Device
Solder the 3.3kOhm resistor to the TLNS device as shown.
Solder the Wires Between the Arduino Nano Board and the TLNS Device
The remaining wires between the Arduino Nano and the TLNS device can now be soldered.
Test Device With Webpage Invoking Web Serial API
The test webpage is available at
https://www.neuroplustech.com/gedge_serial.html
if you wish to use it to test your hardware configuration. It is also in the project's GitHub repository,
https://github.com/quicksilv3rflash/computer-controlled-signal-randomized-translingual-neurostimulator
as gedge_serial.html if you would prefer a local copy.
Design Notes
The original design notes for this project may be of use to you, so they are included here.
Communication Protocol From the Computer to the Arduino Nano
The computer is connected to the Arduino Nano using a USB cable, and the Arduino's CH340 integrated circuit identifies itself to the computer as a serial COM port. Commands are then sent from the computer to the Arduino Nano at 115200 baud. These commands are in the format F#####I##D###### (e.g. F00200I17D000500) -- while designed with all integer values in mind, and assuming that the numeric portions would be fixed-length, the implementation in the code allows for more flexible input. The first character can be any letter, as the code simply checks if it is a non-zero value, but the second and third characters must be 'I' and 'D'. The length of the numbers is unlimited (within the Arduino Nano's 2kB of available memory). The first number, frequency, after 'F' and before 'I', is read as a string and then converted with a .toDouble() function -- a decimal point could be used to request a fractional value if desired. The second number, intensity, after 'I' and before 'D', is read as a string and then converted with a .toInt() function -- it must be an integer between 0 and 20, inclusive. The third number, duration (in milliseconds), after 'D', is read as a string and converted with a .toDouble() function -- a decimal point could be used to request a fractional value if desired.
Mechanism of Operation of the Arduino Nano Bridge Firmware
The Arduino Nano bridge firmware listens to the COM port at 115200 baud for a command in the format described in the previous step, and then converts it to a pulse train and an analog value produced using pulse width modulation.
Communication Protocol From the Arduino Nano to the TLNS Device
The Arduino Nano outputs a pulse-width modulated analog value and a pulse train -- the analog value defines the output pulse width of the translingual neurostimulator, ranging between 20 microseconds and 80 microseconds in 20 microsecond steps, and the pulse train defines the frequency with which the translingual neurostimulator produces these pulses -- one digitalWrite(2, HIGH); command in the Arduino corresponds to one pulse from the translingual neurostimulator.
Mechanism of Operation of the Modified TLNS Firmware
As with the previous signal-randomized translingual neurostimulator design, the selection of the active electrode is randomized -- the connected computer controls the duration and frequency of output pulses, but not which electrode is being activated; which electrode on the grid is activated is reselected pseudorandomly within the TLNS device for each output pulse.