A hands-on “artificial spiking neuron” running the Izhikevich model on an ESP32, with a desktop GUI for visualization, interaction, and data export.
developed by M.J.Y. Zimmermann
maintained by P. Rignanese & A. Koumoundourou
based on an original idea by T. Baden
This project is licensed under the GNU General Public License v3.0
The hardware is licensed under the CERN-OHL-S-2.0
- What is Spikeling?
- Spikeling in academia & outreach
- A brief summary of Spikeling functions
- Documentation
- Contributing
- License
Spikeling is an open-source neuroscience education platform designed to make core neurophysiology concepts teachable through hands-on experimentation, even in settings where traditional wet-lab electrophysiology is impractical.
In many degree programs, students learn about action potentials and synaptic signalling largely through lectures or static datasets because living preparations, microscopes, amplifiers, and specialist supervision do not scale well to large cohorts. Spikeling addresses this gap with a low-cost “in silico neuron” implemented in hardware.
The device runs the computationally efficient and versatile Izhikevich spiking neuron model in real time on an ESP32-based microcontroller, providing electrophysiology-style interaction: controlled stimulation, measurable membrane-voltage dynamics, spike output, and parameter manipulation to explore firing regimes, adaptation, and input integration.
A dedicated cross-platform desktop GUI supports real-time plotting, experiment control, and recording/export to standard formats—enabling teaching modules that extend beyond neurophysiology into protocol design, data collection, analysis pipelines, and model-based reasoning.
The spikeling project emerged from local needs to teach neuroscience class modules for direct interaction with neuron physiology, data analysis, fluorescence imaging, protocol design, etc.
The aim was to provide hands-on experience on how neurons encode information and how diverse variables modulates their activities, while engaging students with crucial aspects of data collection, experimental limitations, methodology and statistical analysis.
Spikeling is currently used in university teaching, computational neuroscience training, and outreach events. It is intentionally open (hardware + firmware + software) so educators can customize activities for their courses and contribute back to a shared pool of teaching material.
Spikeling implements the Izhikevich model, which “reproduces spiking and bursting behaviour of known type of cortical neurons. The model combines the biologically plausibility of Hodgkin-Huxley-type dynamics and the computational efficiency of integrate-and-fire neurons” E. M. Izhikevich, "Simple model of spiking neurons, 2003". This makes it well-suited for teaching as learners can move quickly between hypothesis → stimulation → observation → interpretation.
Neurophysiology concepts are taught through electrophysiology-style interaction: students apply controlled inputs and directly observe membrane-voltage dynamics, thresholding, spike generation, and adaptation. This supports practical teaching objectives such as protocol design, parameter sensitivity, and reproducible experimentation.
- Patch-clamp style stimulation (current injection): A simulated patch-clamp interface allows students to inject controlled current steps and waveforms. Learners can vary amplitude, duration, and timing to explore excitability, threshold, refractory effects, and spike-frequency adaptation.
- Photo-sensitive input (photodiode / “photoreceptor”): Spikeling includes a photodiode input that mimics sensory-driven current input. Students can test simple stimuli (e.g., flashlight pulses) and progress to controlled protocols using an external LED driven via the stimulus port (frequency/intensity). Advanced discussions can include response dynamics such as effective decay/recovery behaviour under repeated stimulation.
- Synapses and networks (dendrites + axon): Each unit provides two dendritic inputs with gain and polarity control (supporting excitatory and inhibitory effects) and one axonal spike output. This enables multi-unit experiments on coincidence detection, inhibition-driven gating, synchrony, and simple network motifs. Auxiliary units can be stimulated synchronously to keep network experiments controlled and reproducible.
Together, these features let students reproduce classic teaching experiments: step-current response curves, threshold measurements, adaptation quantification, sensory-driven spiking, and basic synaptic/network computations—using the same device and workflow.
Left: Drawing on the acrylic cover of the Spikeling version 2.2, representing the controls knobs along with the input/ouput jacks.
Right: Spikeling GUI displaying the unit membrane voltage (red trace) while being light-stimulated by a controlled LED (blue trace) which generates input current (green trace).
Spikeling is designed to extend practical teaching beyond “watching spikes” into the full experimental workflow: recording, quality control, basic quantification, and export for reproducible analysis. This is particularly valuable in neuroscience curricula where students may have limited exposure to programming and data pipelines, yet are expected to interpret real experimental data.
Any data generated by Spikeling can be saved and exported for downstream analysis. The GUI also provides a lightweight, built-in analysis layer that helps students validate recordings and immediately compute core measures such as spike detection and trial-averaged responses. This supports in-class demonstrations, rapid iteration during labs, and structured home assignments.
For advanced data analysis and basic statistics, python notebooks are provided to serve as template for the teaching staff. We are engage with the Spikeling community where users could share courses, exercises and data analysis scripts to be widely used in neuroscience and coding courses.
- Recording & export: save time series (e.g., Vm, stimulus, derived currents, triggers) and export to standard formats (e.g., CSV) compatible with Python, MATLAB, R, Excel, etc.
- Basic QC and annotation: quickly verify signal integrity, confirm stimulus timing, and identify artefacts before committing to a full analysis workflow.
- Spike detection and raster plots: detect spikes from membrane-voltage traces and visualize them as rasters to introduce spike trains, variability, and stimulus-locked responses.
- Trial alignment, looping, and averaging: repeat identical stimulus protocols, align trials, and compute averaged traces and spike-rate summaries—making it easy to teach concepts like reliability, response variability, and signal-to-noise.
- Bridge to coding modules: provide exported datasets and template Python notebooks so teaching staff can scaffold progressively from GUI-based inspection to student-written analysis code.
In short, Spikeling supports a gradual learning curve: students can begin with GUI-based inspection and built-in metrics, then transition to reproducible, script-based analysis using the exact same datasets—mirroring modern research practice.
The Neuron Generator is an interactive space for exploring the Izhikevich model beyond “playing with a few knobs”. It is designed to help students connect model parameters to observable firing behaviours (e.g., tonic spiking, bursting, adaptation, rebound, irregular firing), and to build intuition for how different neurons can emerge from the same compact set of equations.
In practice, the Neuron Generator lets learners rapidly prototype neuron “types” by adjusting Izhikevich parameters and immediately observing how the neuron responds to standardized stimuli. This encourages a scientific workflow: formulate a hypothesis (e.g., “increasing adaptation should reduce firing rate over time”), test it with controlled stimulation, then iterate.
- Explore firing regimes: interactively vary Izhikevich parameters and observe changes in excitability, thresholding, bursting, and adaptation.
- Compare neurons under identical protocols: run the same stimulus recipe on multiple parameter sets to build mechanistic intuition.
- Create & share presets: save custom neuron parameter sets for labs, assignments, or reproducible classroom demonstrations.
- Bridge theory and experiment: connect equations/parameters to patch-clamp-style readouts (Vm traces, spike trains, firing-rate changes).
Spikeling includes a dedicated Stimulus Generator to teach one of the most important (and often under-taught) parts of experimental neuroscience: protocol design. While Spikeling board only has a simple repeated square-wave stimulus (useful for classic current-step experiments and LED/light stimulation), the Stimulus Generator encourages students to move beyond “turning knobs” and instead design inputs that directly test experimental hypotheses.
Users can create and iterate custom stimuli—such as step families, sinusoids, chirps, pulse trains, and binary/noise-like sequences— then apply them to current injection or light stimulation. A built-in stimulus preview allows learners to verify waveform timing, amplitude, and repetition structure before running an experiment, reinforcing good practice around sanity checks and reproducibility.
- From standard to custom protocols: start with square pulses and progress to structured waveforms used in electrophysiology and systems neuroscience.
- Preview before running: confirm duration, inter-stimulus intervals, amplitude scaling, and repetition count to avoid protocol errors.
- Reproducible experimentation: define explicit parameters to enable trial averaging and fair comparisons across neuron modes or conditions.
- Hypothesis-driven design: link stimulus structure to questions like threshold, adaptation time constants, resonance, and response reliability under noise.
A key strength of Spikeling is that it can be scaled from a single “neuron” demo to small, interpretable networks. Each unit provides an axonal spike output and two dendritic (synaptic) inputs, enabling multiple Spikelings to be physically connected and studied as a functional circuit. This makes it possible to teach network-level computation using the same workflow as single-cell experiments: controlled stimulation, direct observation, and quantitative comparison.
Importantly, each synaptic input can be configured as excitatory or inhibitory (via the synaptic gain control), allowing learners to explore how the sign and strength of coupling shapes membrane dynamics and spiking output. The GUI supports multi-recording by plotting and saving, in the same session, the activity of the main unit alongside the incoming synaptic streams (and, when available, the associated presynaptic signals), which is essential for teaching causality, timing, and interaction effects.
- Excitation vs inhibition: set synaptic gain positive or negative to illustrate recruitment of spiking vs suppression/gating.
- Timing-dependent effects: compare synchronous vs offset inputs to demonstrate coincidence detection and integration windows.
- Simple circuit motifs: build and test canonical motifs (feedforward excitation, inhibitory gating, E/I balance, two-input integration).
- Multi-channel recording: visualize and export multiple traces simultaneously (main Vm, stimulus, synaptic inputs, and optional partner activity) for downstream analysis.
Multi-unit / synaptic networking example recorded in the GUI. Left: excitatory synaptic drive increases firing probability and can recruit spikes in the postsynaptic neuron. Right: inhibitory synaptic drive suppresses spiking and gates responses despite ongoing stimulation. In both cases, synaptic streams and membrane activity are visualised together, enabling direct comparison of circuit configurations.
Because Spikeling produces real-time membrane-voltage traces (and therefore a known spike train), it provides an ideal “ground truth” signal to introduce students to calcium imaging and the relationship between spikes, intracellular calcium dynamics, and measured fluorescence. The GUI can transform spiking activity into a simulated calcium concentration transient, and then into a simulated fluorescence signal, allowing learners to explore how imaging readouts relate to the underlying electrophysiology.
Students can manipulate variables that mirror real experimental constraints—both on the acquisition side (e.g., frame rate, detector gain, noise level) and on the biophysical/indicator side (e.g., baseline calcium, decay time constant, spike-triggered calcium increment, indicator affinity / dissociation constant, brightness, and photobleaching-like effects). This helps learners understand why calcium traces are not a direct copy of spikes, and why interpretation depends on both biology and measurement.
For increased realism, the simulation can be switched from a linear fluorescence model to a non-linear saturating model, illustrating common limitations such as dynamic range, saturation at high activity, and the consequences for comparing firing rates across conditions.
Imaging simulation in the GUI: linear (left) and saturating / non-linear (right) fluorescence models (green) generated from simulated calcium concentration dynamics (pink).
The objective is to familiarise students with the type of data they will encounter in modern systems and circuit neuroscience: signals that are indirect, noisy, and shaped by both the underlying biology and the measurement apparatus. This creates a natural pathway to discussing experimental limitations (sampling, noise, saturation, bleaching) and good analysis practice.
In advanced modules, students can analyse the simulated imaging data and implement spike inference methods, then directly compare inferred spikes to the known “ground truth” spike train that generated the fluorescence trace—turning a common challenge in imaging into a controlled, teachable problem.
Spikeling is accompanied by a set of suggested exercises designed to help teaching staff run structured practicals with minimal setup. The exercises are intended to create a concrete bridge between core neurophysiology concepts taught in lectures and a responsive, real-time in silico neuron model that students can stimulate, measure, and analyse.
Beyond technical skills, the exercises are also a vehicle for introducing scientific reasoning and epistemology: how a concept becomes knowledge, what it means to test a hypothesis, and how results can support, constrain, or falsify an interpretation. In advanced modules, students can be asked to design their own experiment as an assignment—emphasising good practice in methodology and protocol design (controls, parameter choices, repeatability, and appropriate analysis), rather than treating “methods” as a checklist.
- Ready-to-run practicals: structured activities covering excitability, threshold, adaptation, synaptic integration, and basic networks.
- Analysis-focused assignments: exported datasets for plotting, spike detection, summary metrics, and interpretation.
- Open-ended projects: student-designed stimuli and protocols to answer a defined question (with clear evaluation criteria).
We encourage educators to adapt and extend these exercises to match their curricula. Our goal is to grow a shared pool of teaching material where users can contribute new exercises, datasets, and analysis notebooks—making Spikeling progressively more useful across institutions and course formats.
It covers:
- Getting started (hardware overview, connections, first experiment)
- Firmware (flashing, configuration, serial protocol)
- GUI user guide (controls, plotting, recording/export, troubleshooting)
- Teaching materials (suggested lab exercises, workflows, assignments)
- Advanced modules (synapses/networks, stimulus design, fluorescence imaging simulation, emulator mode)
Docs website: https://opensourceneuro.github.io/Spikeling/
Firmware documentation: https://opensourceneuro.github.io/Spikeling/Firmware/Spikeling_V3
Releases (pre-built GUI): https://github.com/OpenSourceNeuro/Spikeling/releases
Spikeling is an open hardware + open software teaching platform. Contributions are welcome across hardware, firmware, GUI/software, documentation, and teaching materials.
- Report bugs / request features: open an issue
https://github.com/OpenSourceNeuro/Spikeling/issues - Submit improvements: open a pull request
https://github.com/OpenSourceNeuro/Spikeling/pulls - Share teaching content: contribute new exercises, worksheets, datasets, and analysis notebooks (with learning goals and expected outcomes) so other instructors can reuse them.
- your OS (Windows/macOS/Linux) + Spikeling GUI version
- firmware version (and board revision if known)
- clear steps to reproduce + what you expected vs what happened
- screenshots/logs and (when relevant) a short exported CSV
- Keep PRs focused (one improvement per PR when possible).
- Follow existing style and folder structure.
- For GUI changes: include a screenshot/GIF and note any new dependencies.
- For firmware changes: document parameters/commands and keep backward compatibility when reasonable.
- For docs/exercises: include learning objectives, required materials, and approximate duration.
Spikeling is used in teaching and outreach worldwide. If you adapt it for a course, workshop, or public event, please consider contributing back:
- photos (with permission), module outlines, and lab handouts
- custom neuron presets and stimulus protocols
- analysis notebooks and grading rubrics
All contributors will be acknowledged via GitHub history, and substantial contributions can be credited in documentation and release notes.
Spikeling is released under open-source / open-hardware licenses:
-
Software & firmware: GNU General Public License v3.0 (GPL-3.0)
SeeLICENSE.txt(and individual file headers where applicable). -
Hardware: CERN Open Hardware Licence – Strongly Reciprocal v2.0 (CERN-OHL-S-2.0)
See theLICENSES/folder for the full text and attribution of hardware design files.
If you reuse Spikeling in a course, workshop, publication, or derivative project, please keep the appropriate license notices and cite the project where relevant.





