Operated by a hand crank.
Positive center is way more popular: gearspace.com/board/electronic-music-instruments-and-electronic-music-production/1222518-center-negative-vs-center-positive-power-supply.html
This notation is designed to be relatively easy to write. This is achieved by not drawing ultra complex ASCII art boxes of every component. It would be slightly more readable if we did that, but prioritizing the writer here.
Two wires are only joined if
but the following are:
+
is given. E.g. the following two wires are not joined:
|
--|--
|
|
--+--
|
Simple symmetric components:
-
,+
and|
: wireAC
: AC source. Parameters:e.g.:Hz
: frequencyV
: peak voltage
If only one side is given, the other is assumed to be at a groundAC_1Hz_2V
G
.C
: capacitorG
: ground. Often used together withDC
, e.g.:means applying a voltage of 10 V across a 10 Ohm resistor, which would lead to a current of 1 ADC_10---R_10---G
L
: inductorMICROPHONE
. As a multi-letter symmetric component, you can connect the two wires anywhere, e.g.or:---MICROPHONE---
| MICROPHONE |
SPEAKER
R
: resistorSQUID
: SQUID deviceX
: Josephson junction
Asymmetric components have multiple letters indicating different ports. The capital letter indicates the device, and lower case letters the ports. The wires then go into the ports:
D
: diodeSample usage in a circuit:a
: anode (where electrons can come in from)c
: cathode
Can also be used vertically like aany other circuit:--aDc--
We can also change the port order, the device is still the same due to capital| a D c |
D
:--cDa-- | Dac-- | Dca-- | --caD
DC
DC source. Ports:E.g. a 10 V source with a 10 Ohm resistor would be:p
: positiven
: negative
If only one side is given, the other is assumed to be at a the ground+---pDC_10_n---+ | | +----R_10------+
G
. We can also omitp
andm
in that case and assume thatp
is the one used, e.g. the above would be equivalent to:If the voltage is not given, it is assumed to be a potentiometer.DC_10---R_10---G
T
: transistor. The ports aresgTd
:Sample usage in a circuit:s
: sourceg
: gated
: gate
All the following are also equivalent:---+ | --sgTd--
| g --sTd-- | --Tsgd-- |
I
: electric current source. Ports:s
: electron sourced
: electron destination
V
: Voltmeter. Ports:If we don't need to specify explicit positive and negative sides, we can just use:p
: positiven
: negative
without any ports. This is notably often the case for AC circuits.---V---
Optionaly, we can also add the sides as in:
Numbers characterizing components are put just next to each component with an underscore. When there is only one parameter, standard units are assumed, e.g.:
means:Micro is denoted as
+-----+
| |
C_1p R_2k
| |
+-----+
- a capacitor with 1 pico Faraday
- a resistor with 2 k Ohms
u
.Wires can just freely come in and out of specs of a component, they are then just connected to the component, e.g.:
means applying a voltage of 10 V across a 10 Ohm resistor, which would lead to a current of 1 A
DC_10---R_10---G
If a component has more than two parameters, units are used to distinguish them when possible, e.g.:
means an AC source with:
AC_1kV_2MHz
- 1 kV voltage
- 1 MHz frequency
One more more electrical wires surrounded by an insulator.
Main implementations: the same as electronic switches: vacuum tubes in the past, and transistors in the second half of the 20th century.
The fundamental intuition about capacitors is that they never let electrons through.
They can only absorb electrons up to a certain point, but then the pushback becomes too strong, and current stops.
Therefore, they cannot conduct direct current long term.
For alternating current however, things are different, because in alternating current, electrons are just jiggling back and forward a little bit around a center point. So you can send alternating current power across a capacitor.
The key equation that relates Voltage to electric current in the capacitor is:
So if a voltage Heavyside step function is applied what happens is:More realistically, one may consider the behavior or the series RC circuit to see what happens without infinities when a capacitor is involved as in the step response of the series RC circuit.
- the capacitor fills up instantly with an infinite current
- the current then stops instantly
Ideally can be thought of as a one-way ticket gate that only lets electrons go in one direction with zero resistance! Real devices do have imperfections however, so there is some resistance.
First they were made out of vacuum tubes, but later semiconductor diodes were invented and became much more widespread.
The first diodes. These were apparently incredibly unreliable, especially for portable radios, as you had to randomly search for the best contact point you could find in a random polycrystalline material!!
And also quality was highly dependant on where the material was sourced from as that affected the impurities present in the material. Later this was understood to be an issue of doping.
It was so unreliable that vacuum tube diodes overtook them in many applications, even though crystal detectors are actually semiconductor diodes, which eventually won over!
For a long time, before artificial semiconductors kicked in, people just didn't know the underlying physical working principle of these detectors. What I cannot create, I do not understand basically.
This was the first generation of commercially successful radios.
It uses a crystal detector as its diode, which is a crucial element of the radio, thus its name.
They were superseded by transistor radios, which were much more reliable, portable and could amplify the signal received.
GPIO generally only supports discrete outputs.
But for some types of hardware, like LEDs and some motors, the system has some inertia, and if you switch on and off fast enough, you get a result similar to having an intermediate voltage.
So with pulse width modulation we can fake analog output from digital output in a good enough manner.
Notably used to connect:
- pin headers
- breadboard holes
You can buy large sets of them in combitation of male/male, male/female, female/female. Male/male is perhaps the most important
These often come pre-soldered on devboards, e.g. and allow for easy access to GPIO pins. E.g. they're present on the Raspberry Pi 2.
Why would someone ever sell a devboard without them pre-soldered!
Allows you to connect two adjacent pins of a pin header. Sometimes used as a hardware configuration interface!
Something where DC voltage comes in, and a periodic voltage comes out.
Oscillator made of an LC circuit.
www.reddit.com/r/Optics/comments/18f6bdt/comment/kcsiook/ mentions:
LEDs are broadband by nature, since the spontaneous emission broadly speaking reflects the overlap of the Fermi distribution and the density of states
Direct and indirect band gaps is an important part of why diodes don't emit light apparently.
Bibliography:
- www.quora.com/What-is-the-difference-between-an-LED-and-a-diode
- youtu.be/9BDTtcRMxpA?t=388 from Video 11. "How LEDs work by VirtualBrain" explains the geometry aspect well
Apparently fundamentally LEDs in principle work as photodetectors, but
It resists to change in electric current. Well seen at: Video 27. "LC circuit by Eugene Khutoryansky (2016)".
Although transistors were revolutionary, it is fun to note that they were just "way cheaper and more reliable and smaller" versions of exactly the main functions that a vacuum tube could achieve
People had already patented a lot of stuff before without being able to make them work. Nonsense.
As the name suggests, this is not very sturdy, and was quickly replaced by bipolar junction transistor.
By William Shockley in 1948 also at Bell Labs Murray Hill.
As of 2020, not used anymore in logic gates, but still used in amplifiers.
By Andy Haas, an experimental particle physics professor: as.nyu.edu/content/nyu-as/as/faculty/andy-haas.html What an awesome dude!
899 USD as of 2022, takes a year to ship as they gather up a lot of orders before producing.
Sounds so cool, especially the multi functionality. Shame so expensive.
They do seem to have been very innovative, and have had a very good work culture. They also had a huge impact on the Silicon Valley startup scene.
Some products they are known for:
- oscilloscopes
- Atomic clocks, notably highly portable ones, see e.g. Video "Inside the HP 5061A Cesium Clock by CuriousMarc (2020)"
- pocket calculator
In a way, Agilent represents the most grassroots electronics parts of HP from before they became overly invested in laptops and fell.
They spun out the electronics part as Keysight in 2014, becoming life science only.
This is the cutest product name ever.
Since 1992, Mr. SQUID has been the standard educational demonstration system for undergraduate physics lab courses.
YBCO device, runs on liquid nitrogen.
This is how electronic circuits are normally prototyped!
Once you validate them like this, the next step is usually to move on to printed circuit boards for more reliable production setups.
Breadboards are a thing of beauty and wonder.
Bluetooth support: not enough RAM for it, though in principle its chip/transceiver could support it! microbit-micropython.readthedocs.io/en/v1.0.1/ble.html
Supported editors: microbit.org/code/
MicroPython web editor and compiler: python.microbit.org/v/2
Everything in this section is tested on the Micro Bit v1 from Micro Bit v1 unless otherwise noted.
Bibliography:
Microbit simulator using some Microsoft framework.
TODO the Python code from there does not seem to run on the microbit via
uflash
, because it is not MicroPython.support.microbit.org/support/solutions/articles/19000111744-makecode-python-and-micropython explains.
forum.makecode.com/t/help-understanding-local-build-options/6130 asks how to compile locally and suggests it is possible. Seems to require Yotta, so presumably compiles?
Presumably this is because Microsoft ported their MakeCode thing to the MicroBit, and the Micro Bit foundation accepted them.
E.g. there toggling a LED:
but the code that works locally is a completely differently named API
Microsoft going all in on adopt extend extinguish from an early age!
led.toggle(0, 0)
set_pixel
:
microbit.display.set_pixel(0, 0, )
When plugged into Ubuntu 22.04 via the USB Micro-B the Micro Bit mounts as:
e.g.:
for username
/media/$USER/MICROBIT/
/media/ciro/MICROBIT/
ciro
.Loading the program is done by simply copying a
The file name does not matter, only the
.hex
binary into the image e.g. with:
cp ~/Downloads/microbit_program.hex /media/$USER/MICROBIT/
.hex
extension.The back power light flashes while upload is happening.
Flashing takes about 10-15 seconds for the 1.8 MB scroll display hello world from microbit-micropython.readthedocs.io/en/v1.0.1/tutorials/hello.html:
and the program starts executing immediately after flash ends.
from microbit import *
display.scroll("Hello, World!")
You can restart the program by clicking the reset button near the USB. When you push down the program dies, and it restarts as soon as you release the button.
To use a prebuilt firmware, you can just use
What that does is:
uflash
, tested on Ubuntu 22.04:
git clone https://github.com/bbcmicrobit/micropython
cd micropython
git checkout 7fc33d13b31a915cbe90dc5d515c6337b5fa1660
uflash examples/led_dance.py
- convert the MicroPython code to bytecode
- join it up with a prebuilt firmware that ships with uflash which contains the MicroPython interpreter
- flashes that
To build your own firmware see:
Got it working: Compile MicroPython code for Micro Bit locally on Ubuntu 22.04 with your own firmware
TODO didn't manage from source Ubuntu 22.04, their setup bitrotted way too fast... it's shameful even. Until I gave up and went for the magic Docker of + github.com/bbcmicrobit/micropython, and it bloody worked:
git clone https://github.com/bbcmicrobit/micropython
cd micropython
git checkout 7fc33d13b31a915cbe90dc5d515c6337b5fa1660
docker pull ghcr.io/carlosperate/microbit-toolchain:latest
docker run -v $(pwd):/home --rm ghcr.io/carlosperate/microbit-toolchain:latest yt target bbc-microbit-classic-gcc-nosd@https://github.com/lancaster-university/yotta-target-bbc-microbit-classic-gcc-nosd
docker run -v $(pwd):/home --rm ghcr.io/carlosperate/microbit-toolchain:latest make all
# Build one.
tools/makecombinedhex.py build/firmware.hex examples/counter.py -o build/counter.hex
cp build/counter.hex "/media/$USER/MICROBIT/"
# Build all.
for f in examples/*; do b="$(basename "$f")"; echo $b; tools/makecombinedhex.py build/firmware.hex "$f" -o "build/${b%.py}.hex"; done
The pre-Docker attempts:
sudo add-apt-repository -y ppa:team-gcc-arm-embedded
sudo apt update
sudo apt install gcc-arm-embedded
sudo apt install cmake ninja-build srecord libssl-dev
# Rust required for some Yotta component, OMG.
sudo snap install rustup
rustup default 1.64.0
python3 -m pip install yotta
The line:
warns:
and then the update/
sudo add-apt-repository -y ppa:team-gcc-arm-embedded
E: The repository 'https://ppa.launchpadcontent.net/team-gcc-arm-embedded/ppa/ubuntu jammy Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
sudo apt-get install gcc-arm-embedded
fails, bibliography:Attempting to install Yotta:
or:
was failing with:
Running:
did not help. Bibliography:
sudo -H pip3 install yotta
python3 -m pip install --user yotta
Exception: Version mismatch: this is the 'cffi' package version 1.15.1, located in '/tmp/pip-build-env-dinhie_9/overlay/local/lib/python3.10/dist-packages/cffi/api.py'. When we import the top-level '_cffi_backend' extension module, we get version 1.15.0, located in '/usr/lib/python3/dist-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so'. The two versions should be equal; check your installation.
python3 -m pip install --user cffi==1.15.1
From a clean virtualenv, it appears to move further, and then fails at:
So we install Rust and try again, OMG:
which at the time of writing was
Building wheel for cmsis-pack-manager (pyproject.toml) ... error
error: [Errno 2] No such file or directory: 'cargo'
sudo snap install rustup
rustup default stable
rustc 1.64.0
, and then OMG, it worked!! We have the yt
command.However, it is still broken, e.g.:
blows up:
bibliography:
git clone https://github.com/lancaster-university/microbit-samples
cd microbit-samples
git checkout 285f9acfb54fce2381339164b6fe5c1a7ebd39d5
cp source/examples/invaders/* source
yt clean
yt build
annot import name 'soft_unicode' from 'markupsafe'
Official support is abysmal, very focused on MicroPython and their graphical UI.
The setup impossible to achieve as it requires setting up the Yotta, just like the impossible to setup Compile MicroPython code for Micro Bit locally on Ubuntu 22.04 with your own firmware setup.
So we just use github.com/lancaster-university/microbit-samples + github.com/carlosperate/docker-microbit-toolchain:
.hex file size for the hello world was 447 kB, much better than the MicroPython hello world downloaded from the website which was about 1.8 MB!
docker pull ghcr.io/carlosperate/microbit-toolchain:latest
git clone https://github.com/lancaster-university/microbit-samples
cd microbit-samples
git checkout 285f9acfb54fce2381339164b6fe5c1a7ebd39d5
# Select a sample, builds one at a time. The default one is the hello world.
cp source/examples/hello-world/* source
# Build and flash.
docker run -v $(pwd):/home --rm ghcr.io/carlosperate/microbit-toolchain:latest yotta build
cp build/bbc-microbit-classic-gcc/source/microbit-samples-combined.hex "/media/$USER/MICROBIT/"
If you try it again for a second time from a clean tree, it fails with:
presumably because after Yotta died it started using GitHub as a registry... sad. When will people learn. Apparently we were at 5000 API calls per hour. But if you don't clean the tree, you will be just fine.
warning: github rate limit for anonymous requests exceeded: you must log in
Identification: kitronik.co.uk/blogs/resources/explore-micro-bit-v1-microbit-v2-differences The easiest thing is perhaps the GPIO notches.
- microbit/micropython/uart.py: the Micro BIt comes with a UART simulator via the USB connection, it is very convenient: support.microbit.org/support/solutions/articles/19000022103-outputing-serial-data-from-the-micro-bit-to-a-computer To output data to the computer simply use Python
print
. To receive you can e.g. use GNU screen:It appears to be very unreliable however, some times it shows up, sometimes it doesn't.screen /dev/ttyACM0 115200
Pinout overview: makecode.microbit.org/device/pins Basically 0, 1, and 2 are the truly generic ones. They can also serve as ADCs.
Micropython documentation: microbit-micropython.readthedocs.io/en/latest/pin.html
In the 2010's/2020's, many people got excited about getting children in to electronics with cheap devboards, notably with Raspberry Pi and Arduino.
While there is some potential in that, Ciro Santilli always felt that this is very difficult to do, while also keeping his sacred principle of backward design in mind.
The reason for this is that "everyone" already has much more powerful computers at hand: their laptops/desktops and even mobile phones as of the 2020s. Except perhaps if you are thing specifically about poor countries.
Therefore, the advantage using such devboards for doing something that could useful must come from either:
- their low cost. This would be an important consideration if you were to mass produce your product, but that is not going to be the case for learners, at least initially.
- their portability, and closely linked their ability to act as sensors
- their ability to act as actuators, which is often missing from regular computers
- them having hardware accelerators that are not normally present in regular computers, e.g. FPGAs or AI accelerators. And then the demo project must demonstrate that the project is able to do something significantly faster/cheaper on the devboard than on a desktop computer.
Many devborads require a 5V power supply.
For battery power you need a transformer.
Many/most microcontroller boards have analog-to-digital converters built into them, it is very convenient. E.g. it is the case for the Raspberry Pi Pico.
When Ciro Santilli was studying electronics at the University of São Paulo, the courses, which were heavily inspired from the USA 50's were obsessed by this one! Thinking about it, it is kind of a cool thing though.
That Wikipedia page is the epitome of Wikipedia failure to explain things in a way that is of any interest to any learner. Video 24. "Tutorial on LC resonant circuits by w2aew (2012)" is the opposite.
Both are harmonic oscillators.
In the LC circuit:
- the current current may be seen as the velocity and containing the kinetic energy
- the charge stored in the capacitor as the potential energy
You can kickstart motion in either of those systems in two ways:
- charge the capacitor, i.e. pull the string, and then let it go, i.e. close the circuit. This is the simpler one to realise. Shown concretely at: Video 25. "LC circuit dampened oscillations on an oscilloscope by Queuerious Guy (2014)"
- give speed to the mass, i.e. make a current pass through the inductor
He participated in the development of the electrical telegraph, and he did some good modeling work that improved the foundations of the field, notably creating the telegrapher's equations.
He was one of those idealists who just want to do some cool work even if they have to starve for it, people had to get a state pension for him for his contributions. Nice guy. en.wikipedia.org/w/index.php?title=Oliver_Heaviside&oldid=1230097796#Later_years_and_views:
He also never married: www.nndb.com/people/627/000204015/
In 1896, FitzGerald and John Perry obtained a civil list pension of £120 per year for Heaviside, who was now living in Devon, and persuaded him to accept it, after he had rejected other charitable offers from the Royal Society.
Mostly on vintage electronics. Lots of focus on microwave, which he has worked a lot with.
Has been going wild with restoration and reverse engineering of the Apollo moon mission.
Marc Verdiell is a human electrical engineer best known for being the creator and host of the CuriousMarc YouTube channel.
Marc made $58.4m from the sale of LightLogic, an optoelectronics company he founded, to Intel in 2001:
- www.courthousenews.com/inventor-barred-from-proceeds-of-intel-buyout/. His full name is actualy Jean-Marc Verdiell. ppubs.uspto.gov/dirsearch-public/print/downloadPdf/20160274316 also suggests he may have a seldom used middle name "André", though that would be unusual in French custom
- mergr.com/intel-acquires-lightlogic
Company founded by Marc Verdiell in his garage, and later acquired by Intel which was going on a optoelectronics buying spree. The division was later sold off in 2023 of course during more difficult times: www.theregister.com/2023/10/31/intel_silicon_photonics_jabil/
It's hard to understand exactly what the company did by Googling it nowadays. Sad and usual fate. Presumably something related to transceiver for fiber-optic communication. Only the patents remain: patents.google.com/?assignee=lightlogic&oq=lightlogic to tell its story to the brave.
This mostly faceless German dude is awesome!