Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TinyAudioBoot

Audio Bootloader for Attiny85 Microcontrollers

What?

You can simply program an Attiny85 via the audio output of a PC, Smartphone or audio-player.

Only a low-part count circuit is needed.

The bootloader presented here has the following features:

  • low memory footprint: ~1KB
  • [full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)
  • automatic Baudrate detection and callibration
  • very simple circuit: two 10 k resistors and a 100 nF capacitor are needed to connect the microcontroller to the audio output of the PC or audio player
  • one pin for data transmission is needed
  • an optional led indicator, needs an extra pin, for the state of the boot loader
  • as hex/binary to wav converter, programmed in java, is also available. It works on win and linux

Why?

In some cases it is simpler to play an audio file to program a microcontroller than to install an IDE and dig up a programming dongle !

A good starting point for using this bootloader can be found here: 8bitmixedtape synthesizer. A collection of ready-to-play files.

How?

installing the bootloader on the Attiny85

Firtly, the bootloader must be flashed onto the microcontroller with an ISP programmer. You can use an [Arduino-Uno as ISP-pogrammer] (https://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren)

There are precompiled HEX files (one file per configuration) e.g.:

AudioBootAttiny85_AudioPB4_LedPB1_V3_1.hex

AudioPB4 means: PB4 is the audio input pin LEDPB1 means: The LED signal is on PB1

Some fuses have to be programmed too (for the ATTiny85):

Extended: 0xFE
HIGH: 0xDD
LOW: 0xE1

With these settings the ATTiny will run at 16Mhz

If you are using avrdude this is the commandl ine to set the fuses (for a serial com called ttyACM0):

avrdude -P /dev/ttyACM0 -b 19200 -c avrisp -p t85 -U efuse:w:0xfe:m -U hfuse:w:0xdd:m -U lfuse:w:0xe1:m

This is the command line to program the bootloader with audio input at PB3 and Led at PB1 (again for ttyACM0):

avrdude -v -pattiny85 -c avrisp -P/dev/ttyACM0 -b19200 -Uflash:w:/home/dusjagr/Arduino/AttinySound-master/AudioBoot/AudioBootAttiny85_InputPB3_LEDPB1.hex:i

bootloader operation

  1. After reset the bootloader waits for about 5 seconds for a signal from the audio input. During this period the LED blinks at 1/2 Hz

  2. If there was no signal, the bootloader starts the main program from flash

  3. If there was a signal, the bootloader starts receiving the new program data an flashes it

The sound volume has to be adjusted to a suitable value (some trial and error needed here). On most PCs the AudioBootloader should work with a volume setting of 70% .

creating the WAV file

Arduino IDE integration

You could directly integrate the wav-file generator into your Arduino IDE to program your sketches:

[full Arduino IDE integration] (https://github.com/8BitMixtape/8Bit-Mixtape-NEO/wiki/3_3-IDE-integration)

HEX to WAV java Progam

There is a java program in this repository to convert the hex files to wav files.

AudioBootAttiny85.jar

You can start by just clicking on it, if supported by your operating system or from the command line (see below). The wav-file is created and stored in the same directory where you started the java program.

You can also use AudioBootAttiny85.jar directly from the command line without starting the GUI with the following command:

java -jar AudioBootAttiny85.jar someExampleFile.hex

This might be useful if you want to integrate it in your own applications.

interfacing the Attiny85 with the audio line

You need two resistors and a capacitor as shown in the schematic below. You could also add a LED as status indicator for the bootloader. It allows to see if the bootloader has started and to quickly check if programming is underway due to the different blinking pattern.

About

No description, website, or topics provided.

Resources

Stars

42 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages