{ "cells": [ { "cell_type": "markdown", "id": "1a2b0e03", "metadata": {}, "source": [ "# [cbe61622](https://jckantor.github.io/cbe61622)\n", "\n", "\n", "## [Chapter 1.0 CBE 61622](https://jckantor.github.io/cbe61622/01.00-CBE_61622.html)\n", "\n", "### [1.1 Configuring a Workstation](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html)\n", "- [1.1.1 Student Workstation](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.1-Student-Workstation)\n", "- [1.1.2 Laboratory Workstation](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.2-Laboratory-Workstation)\n", "- [1.1.3 Raspberry Pi](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.3-Raspberry-Pi)\n", " - [1.1.3.1 Assemble a Raspberry Pi Workstation](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.3.1-Assemble-a-Raspberry-Pi-Workstation)\n", " - [1.1.3.2 Install Raspberry Pi OS](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.3.2-Install-Raspberry-Pi-OS)\n", "- [1.1.4 Digilent Analog Discovery Studio](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.4-Digilent-Analog-Discovery-Studio)\n", "- [1.1.5 Analog Devices Parts Kit ADALP2000](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.5-Analog-Devices-Parts-Kit-ADALP2000)\n", "- [1.1.6 Additional Components](https://jckantor.github.io/cbe61622/01.01-Configuring-a-Workstation.html#1.1.6-Additional-Components)\n", "* Markdown Links\n", " - [SD Card Formatter](https://www.sdcard.org/downloads/formatter/)\n", " - [Raspberry Pi Imager](https://www.raspberrypi.org/software/)\n", " - [AD8226 Instrumentation amp](https://www.analog.com/en/products/ad8226.html)\n", " - [ADTL082 JFET op amp](https://www.analog.com/en/products/adtl082.html)\n", " - [AD8542 dual CMOS dual rail-to-rail op amp](https://www.analog.com/en/products/ad8542.html)\n", " - [OP482 high speed JFET quad op amp](https://www.analog.com/en/products/op482.html)\n", " - [OP484 precision rail-to-rail I/O quad op amp](https://www.analog.com/en/products/op484.html)\n", " - [OP27 low noise, precision op amp](https://www.analog.com/en/products/op27.html)\n", " - [OP37 precision op amp](https://www.analog.com/en/products/op37.html)\n", " - [OP97 low power, high precision](https://www.analog.com/en/products/op97.html)\n", " - [LTC1541 micropower amp, comparator, reference](https://www.analog.com/en/products/ltc1541.html)\n", " - [AD8210 current shunt monitor](https://www.analog.com/en/products/ad8210.html)\n", " - [AD22151 magnetic field sensor](https://www.analog.com/en/products/ad22151g.html)\n", " - [ADXL327 3-axis accelerometer](https://www.analog.com/en/products/adxl327.html)\n", " - [AD22100 voltage temperature sensor](https://www.analog.com/en/products/ad22100.html)\n", " - [AD592 current temperature sensor](https://www.analog.com/en/products/ad592.html)\n", " - [TMP01 temperature controller](https://www.analog.com/en/products/tmp01.html)\n", " - [OP999 PIN photodiode](https://www.ttelectronics.com/TTElectronics/media/ProductFiles/Optoelectronics/Datasheets/OP993-999.pdf)\n", " - [LT3092 programmable current source](https://www.analog.com/en/products/lt3092.html)\n", " - [LTM8067 isolated dc-to-dc converter](https://www.analog.com/en/products/ltm8067.html)\n", " - [LT3080 adjustable 1.1A LDO](https://www.analog.com/en/products/lt3080.html)\n", " - [AD654 voltage-to-frequency converter](https://www.analog.com/en/products/ad654.html)\n", " - [AD5626 12-bit nanoDAC](https://www.analog.com/en/products/ad5626.html)\n", " - [AD7920 12-bit 250kSPS SPI ADC](https://www.analog.com/en/products/ad7920.html)\n", " - [SN74HC273 octal flip-flop](https://www.ti.com/product/SN74HC273)\n", " - [2N3904 general purpose NPN BJT](https://www.onsemi.com/pdf/datasheet/2n3903-d.pdf)\n", " - [2N3906 general purpose PNP BJT](https://www.onsemi.com/pdf/datasheet/2n3906-d.pdf)\n", " - [IRF510 power MOSFET](https://www.vishay.com/docs/91015/sihf510.pdf)\n", " - [TIP31CFS NPN Power](https://alltransistors.com/adv/pdfdatasheet_st/tip31c.pdf)\n", " - [TIP32CFS PNP Power](https://alltransistors.com/adv/pdfdatasheet_st/tip32c.pdf)\n", " - [ZVN2110A N-channel DMOS FED]()\n", " - [28BJY-48 Stepper Motors and ULN2003 Driver Board](https://www.amazon.com/ELEGOO-28BYJ-48-ULN2003-Stepper-Arduino/dp/B01CP18J4A)\n", "\n", "### [1.10 Workstation Learning Exercises](https://jckantor.github.io/cbe61622/01.10-Workstation-Learning-Exercises.html)\n", "- [1.10.1 Understanding PWM](https://jckantor.github.io/cbe61622/01.10-Workstation-Learning-Exercises.html#1.10.1-Understanding-PWM)\n", "- [1.10.2 Characterizing noise in a MEMS device.](https://jckantor.github.io/cbe61622/01.10-Workstation-Learning-Exercises.html#1.10.2-Characterizing-noise-in-a-MEMS-device.)\n", "\n", "### [1.20 Semester Projects](https://jckantor.github.io/cbe61622/01.20-Projects.html)\n", "- [1.20.1 Potentiostat/Galvanostat/EIS Device](https://jckantor.github.io/cbe61622/01.20-Projects.html#1.20.1-Potentiostat/Galvanostat/EIS-Device)\n", "- [1.20.2 CO2 Sensor for Absorption Experiments](https://jckantor.github.io/cbe61622/01.20-Projects.html#1.20.2-CO2-Sensor-for-Absorption-Experiments)\n", "- [1.20.3 Microsope](https://jckantor.github.io/cbe61622/01.20-Projects.html#1.20.3-Microsope)\n", "* Markdown Links\n", " - [[overview](https://learn.adafruit.com/adafruit-scd-40-and-scd-41)\n", " - [[SCD-40 product page](https://www.adafruit.com/product/5187)\n", " - [[SCD-41 product page](https://www.adafruit.com/product/5190)\n", " - [product page](https://www.seeedstudio.com/Wio-RP2040-mini-Dev-Board-p-4933.html)\n", " - [[Tom's Hardware Review](https://www.tomshardware.com/reviews/arduino-nano-rp2040-connect)\n", " - [[Tom's Hardware Review](https://www.tomshardware.com/reviews/adafruit-feather-rp2040)\n", "\n", "\n", "## [Chapter 2.0 Analog Circuits and Signals](https://jckantor.github.io/cbe61622/02.00-Analog-Circuits-and-Signals.html)\n", "\n", "### [2.8 Basics of Linear DC Circuits](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html)\n", "- [2.8.1 Dimensions and Units](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.1-Dimensions-and-Units)\n", "- [2.8.2 Kirchhoff's rules](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.2-Kirchhoff's-rules)\n", "- [2.8.3 Ohm's law](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.3-Ohm's-law)\n", "- [2.8.4 Ideal Voltage and Current Sources](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.4-Ideal-Voltage-and-Current-Sources)\n", "- [2.8.5 Resistor Networks](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.5-Resistor-Networks)\n", " - [2.8.5.1 Voltage Divider](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.5.1-Voltage-Divider)\n", "- [2.8.6 Capacitors](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.6-Capacitors)\n", "- [2.8.7 Inductors](https://jckantor.github.io/cbe61622/02.08-Linear-DC-Circuits.html#2.8.7-Inductors)\n", "* Markdown Figures\n", " - [https://upload.wikimedia.org/wikipedia/commons/6/68/Resistivity_geometry.png](https://upload.wikimedia.org/wikipedia/commons/6/68/Resistivity_geometry.png)\n", " - [https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Ohms_law_voltage_source.svg/200px-Ohms_law_voltage_source.svg.png](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Ohms_law_voltage_source.svg/200px-Ohms_law_voltage_source.svg.png)\n", " - [https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Ohms_law_current_source.svg/200px-Ohms_law_current_source.svg.png](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Ohms_law_current_source.svg/200px-Ohms_law_current_source.svg.png)\n", " - [https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Resistive_divider2.svg/200px-Resistive_divider2.svg.png](https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Resistive_divider2.svg/200px-Resistive_divider2.svg.png)\n", "\n", "### [2.10 Operational Amplifiers](https://jckantor.github.io/cbe61622/02.10-Operational-Amplifiers.html)\n", "- [2.10.1 Feedback](https://jckantor.github.io/cbe61622/02.10-Operational-Amplifiers.html#2.10.1-Feedback)\n", "* Markdown Figures\n", " - [http://fourier.eng.hmc.edu/e84/lectures/figures/OpAmp0.gif](http://fourier.eng.hmc.edu/e84/lectures/figures/OpAmp0.gif)\n", "\n", "\n", "## [Chapter 3.0 Analog Measurement](https://jckantor.github.io/cbe61622/03.00-Analog-Measurement.html)\n", "\n", "### [3.1 Low-Level Measurement](https://jckantor.github.io/cbe61622/03.01-Low-Level-Measurment.html)\n", "- [3.1.1 References](https://jckantor.github.io/cbe61622/03.01-Low-Level-Measurment.html#3.1.1-References)\n", "- [3.1.2 Limits to Measurements](https://jckantor.github.io/cbe61622/03.01-Low-Level-Measurment.html#3.1.2-Limits-to-Measurements)\n", " - [3.1.2.1 Shot Noise](https://jckantor.github.io/cbe61622/03.01-Low-Level-Measurment.html#3.1.2.1-Shot-Noise)\n", " - [3.1.2.2 Johnson-Nyquist Noise](https://jckantor.github.io/cbe61622/03.01-Low-Level-Measurment.html#3.1.2.2-Johnson-Nyquist-Noise)\n", "- [3.1.3 Chemical Applications](https://jckantor.github.io/cbe61622/03.01-Low-Level-Measurment.html#3.1.3-Chemical-Applications)\n", "* Markdown Figures\n", " - [https://upload.wikimedia.org/wikipedia/commons/4/42/Photon-noise.jpg](https://upload.wikimedia.org/wikipedia/commons/4/42/Photon-noise.jpg)\n", "* Markdown Links\n", " - [Low Level Measurements Handbook - 7th Edition (Kiethley)](https://download.tek.com/document/LowLevelHandbook_7Ed.pdf)\n", " - [Poisson Process - Wolfram MathWorld](https://mathworld.wolfram.com/PoissonProcess.html)\n", " - [A frequency-domain derivation of shot noise](https://core.ac.uk/download/pdf/33125817.pdf)\n", " - [source](https://commons.wikimedia.org/wiki/File:Photon-noise.jpg)\n", "\n", "### [3.2 Sampling Continuous Time Signals](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html)\n", "- [3.2.1 Sampling signals](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.1-Sampling-signals)\n", "- [3.2.2 Reconstruction](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.2-Reconstruction)\n", " - [3.2.2.1 Anti-aliasing](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.2.1-Anti-aliasing)\n", "- [3.2.3 Fourier Analysis](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.3-Fourier-Analysis)\n", " - [3.2.3.1 Complex sinusoids as an Orthonormal Basis](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.3.1-Complex-sinusoids-as-an-Orthonormal-Basis)\n", " - [3.2.3.2 Application to Real functions](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.3.2-Application-to-Real-functions)\n", " - [3.2.3.3 Frequency domain interpretation](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.3.3-Frequency-domain-interpretation)\n", " - [3.2.3.4 Application to Sampled data](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.3.4-Application-to-Sampled-data)\n", "- [3.2.4 numpy.fft](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.4-numpy.fft)\n", "- [3.2.5 Examples of Fourier Transforms](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.5-Examples-of-Fourier-Transforms)\n", "- [3.2.6 Euler's Formula](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.6-Euler's-Formula)\n", "- [3.2.7 Sinusoidal signals](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.7-Sinusoidal-signals)\n", "- [3.2.8 Discrete Fourier Transform](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.8-Discrete-Fourier-Transform)\n", "- [3.2.9 Inverse Discrete Fourier Transform](https://jckantor.github.io/cbe61622/03.02-Sampling-Continuous-Time-Signals.html#3.2.9-Inverse-Discrete-Fourier-Transform)\n", "* Markdown Links\n", " - [Levitating helicopter](https://youtu.be/yr3ngmRuGUc)\n", " - [Wagon Wheel Effect](https://youtu.be/QOwzkND_ooU)\n", " - [4 degree Graphene](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Moire_of_twisted_bilayer_graphene.svg/357px-Moire_of_twisted_bilayer_graphene.svg.png)\n", "\n", "\n", "## [Chapter 4.0 Chemical Instrumentation](https://jckantor.github.io/cbe61622/04.00-Chemical_Instrumentation.html)\n", "\n", "### [4.10 Potentiostats and Galvanostats](https://jckantor.github.io/cbe61622/04.10-Potentiostats-and-Galvanostats.html)\n", "- [4.10.1 References](https://jckantor.github.io/cbe61622/04.10-Potentiostats-and-Galvanostats.html#4.10.1-References)\n", "- [4.10.2 Application to Electrical Impedence Spectroscopy](https://jckantor.github.io/cbe61622/04.10-Potentiostats-and-Galvanostats.html#4.10.2-Application-to-Electrical-Impedence-Spectroscopy)\n", "\n", "\n", "## [Chapter 5.0 Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.00-Raspberry-Pi-Pico.html)\n", "\n", "### [5.1 Interfacing with Micropython on the Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html)\n", "- [5.1.1 Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html#5.1.1-Raspberry-Pi-Pico)\n", "- [5.1.2 Comaptible Hardware](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html#5.1.2-Comaptible-Hardware)\n", "- [5.1.3 Development Environments](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html#5.1.3-Development-Environments)\n", " - [5.1.3.1 Activity](https://jckantor.github.io/cbe61622/05.01-Getting_Started.html#5.1.3.1-Activity)\n", "* Markdown Figures\n", " - [https://www.raspberrypi.org/documentation/microcontrollers/images/Pico-R3-SDK11-Pinout.svg](https://www.raspberrypi.org/documentation/microcontrollers/images/Pico-R3-SDK11-Pinout.svg)\n", "* Markdown Links\n", " - [RP2040 Microcontroller Datasheet](https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf)\n", " - [Raspberry Pi Pico Datasheet](https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf)\n", " - [Raspberry Pi Pico Python SDK](https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-python-sdk.pdf)\n", " - [Github: Cytron Maker Pi Pico](https://github.com/CytronTechnologies/MAKER-PI-PICO)\n", " - [Jupyter MicroPython Kernel](https://github.com/goatchurchprime/jupyter_micropython_kernel)\n", " - [MicroPython on ESP Using Jupyter Notebook](https://towardsdatascience.com/micropython-on-esp-using-jupyter-6f366ff5ed9)\n", " - [jupyter-micropython-upydevice](https://pypi.org/project/jupyter-micropython-upydevice/)\n", "\n", "### [5.2 Grove Starter Kit for Raspberry Pi Pico](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html)\n", "- [5.2.1 Communication methods](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2.1-Communication-methods)\n", "- [5.2.2 I2C Protocol](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2.2-I2C-Protocol)\n", "- [5.2.3 I2C Pinout](https://jckantor.github.io/cbe61622/05.02-Seeed_Grove_Pico_Starter_Kit.html#5.2.3-I2C-Pinout)\n", "* Markdown Figures\n", " - [https://microcontrollerslab.com/wp-content/uploads/2021/01/Raspberry-Pi-Pico-pinout-diagram.svg](https://microcontrollerslab.com/wp-content/uploads/2021/01/Raspberry-Pi-Pico-pinout-diagram.svg)\n", "* Markdown Links\n", " - [Grove Starter Kit for Raspberry Pi Pico](https://www.seeedstudio.com/Grove-Starter-Kit-for-Raspberry-Pi-Pico-p-4851.html)\n", " - [Wiki for Grove Starter Kit for Raspberry Pi Pico](https://wiki.seeedstudio.com/Grove_Shield_for_Pi_Pico_V1.0/)\n", "\n", "### [5.3 LCD1602](https://jckantor.github.io/cbe61622/05.03-LCD1602.html)\n", "- [5.3.1 Using the LCD 16x2 display](https://jckantor.github.io/cbe61622/05.03-LCD1602.html#5.3.1-Using-the-LCD-16x2-display)\n", " - [5.3.1.1 Exercises](https://jckantor.github.io/cbe61622/05.03-LCD1602.html#5.3.1.1-Exercises)\n", "- [5.3.2 A simplified LCD16x2 class](https://jckantor.github.io/cbe61622/05.03-LCD1602.html#5.3.2-A-simplified-LCD16x2-class)\n", "- [5.3.3 A Simple Clock](https://jckantor.github.io/cbe61622/05.03-LCD1602.html#5.3.3-A-Simple-Clock)\n", "* Markdown Links\n", " - [Seeed Grove 16x2 display](https://wiki.seeedstudio.com/Grove-16x2_LCD_Series/)\n", " - [lcd1602.py](http://47.106.166.129/Embeded/pico-micropython-grove/blob/master/I2C/lcd1602.py)\n", " - [datasheet](https://github.com/SeeedDocument/Grove-16x2_LCD_Series/raw/master/res/JDH_1804_Datasheet.pdf)\n", "\n", "\n", "## [Chapter 6.0 Device Coding](https://jckantor.github.io/cbe61622/06.00-Coding-for-Device-Control.html)\n", "\n", "### [6.1 Managing Multiple Devices with an Event Loop](https://jckantor.github.io/cbe61622/06.01-Simple_Event_Loop.html)\n", "- [6.1.1 Activity](https://jckantor.github.io/cbe61622/06.01-Simple_Event_Loop.html#6.1.1-Activity)\n", "\n", "### [6.2 Coding for Device Control](https://jckantor.github.io/cbe61622/06.02-Coding-Paradigms.html)\n", "- [6.2.1 The Coding Challenge](https://jckantor.github.io/cbe61622/06.02-Coding-Paradigms.html#6.2.1-The-Coding-Challenge)\n", "- [6.2.2 Coding Paradigms](https://jckantor.github.io/cbe61622/06.02-Coding-Paradigms.html#6.2.2-Coding-Paradigms)\n", "- [6.2.3 Single threaded, imperative coding](https://jckantor.github.io/cbe61622/06.02-Coding-Paradigms.html#6.2.3-Single-threaded,-imperative-coding)\n", "- [6.2.4 Discuss](https://jckantor.github.io/cbe61622/06.02-Coding-Paradigms.html#6.2.4-Discuss)\n", "\n", "### [6.3 Coding Paradigms for Device Control](https://jckantor.github.io/cbe61622/06.03-Coding-Paradigms.html)\n", "- [6.3.1 The Coding Challenge](https://jckantor.github.io/cbe61622/06.03-Coding-Paradigms.html#6.3.1-The-Coding-Challenge)\n", "- [6.3.2 Coding Paradigms](https://jckantor.github.io/cbe61622/06.03-Coding-Paradigms.html#6.3.2-Coding-Paradigms)\n", "- [6.3.3 Single threaded, imperative coding](https://jckantor.github.io/cbe61622/06.03-Coding-Paradigms.html#6.3.3-Single-threaded,-imperative-coding)\n", "- [6.3.4 Discuss](https://jckantor.github.io/cbe61622/06.03-Coding-Paradigms.html#6.3.4-Discuss)\n", "\n", "### [6.4 Event Driven Programming](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html)\n", "- [6.4.1 Project Idea: Ultra Low-Cost Syring Pump](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html#6.4.1-Project-Idea:-Ultra-Low-Cost-Syring-Pump)\n", "- [6.4.2 Button](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html#6.4.2-Button)\n", " - [6.4.2.1 Polling](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html#6.4.2.1-Polling)\n", " - [6.4.2.2 Timer](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html#6.4.2.2-Timer)\n", "- [6.4.3 Interrupt Requests and Service Routines: IRQ/ISR](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html#6.4.3-Interrupt-Requests-and-Service-Routines:-IRQ/ISR)\n", " - [6.4.3.1 Capturing data via IRQ/ISR's](https://jckantor.github.io/cbe61622/06.04-Event-Driven-Programming.html#6.4.3.1-Capturing-data-via-IRQ/ISR's)\n", "* Markdown Links\n", " - [OMIS: The Open Millifluidic Inquiry System for small scale chemical synthesis and analysis](https://www.sciencedirect.com/science/article/pii/S246806721830052X#!)\n", " - [5mm to 8mm Flex shaft coupler](https://www.adafruit.com/product/1175)\n", " - [Gear driven cart](https://www.ebay.com/itm/153907301881)\n", " - [3D printed part](https://www.thingiverse.com/thing:539490)\n", " - [Compact design by replacing plunger](https://github.com/koendv/paste_dispenser)\n", " - [Spur gear design](https://ieeexplore.ieee.org/document/8584685)\n", " - [Traveling nut - ultra low cost](https://www.instructables.com/Linear-Actuator-Stepper-Motor/)\n", " - [Traveling nut design](https://www.thingiverse.com/thing:4774416)\n", " - [3 way check valve](https://www.meddeviceonline.com/doc/3-way-check-valve-0001)\n", " - [Blunt tip dispensing Syringes](https://www.amazon.com/s?k=glue+injector+syringe)\n", " - [Arduino Nano RP2040 Connect](https://store-usa.arduino.cc/products/arduino-nano-rp2040-connect-with-headers?selectedStore=us)\n", " - [Writing interrupt handlers](https://docs.micropython.org/en/latest/reference/isr_rules.html)\n", "\n", "### [6.5 PIO Programming](https://jckantor.github.io/cbe61622/06.05-PIO-Programming.html)\n", "- [6.5.1 Setting multiple pins from Python](https://jckantor.github.io/cbe61622/06.05-PIO-Programming.html#6.5.1-Setting-multiple-pins-from-Python)\n", "- [6.5.2 Writing Stepper Steps to pins](https://jckantor.github.io/cbe61622/06.05-PIO-Programming.html#6.5.2-Writing-Stepper-Steps-to-pins)\n", "- [6.5.3 Interacting PIO programs](https://jckantor.github.io/cbe61622/06.05-PIO-Programming.html#6.5.3-Interacting-PIO-programs)\n", "* Markdown Links\n", " - [RP2040 Datasheet Section 3.4](https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf)\n", "\n", "\n", "## [Chapter 7.0 Interfacing with Laboratory Equipment](https://jckantor.github.io/cbe61622/07.00-Interfacing_with_Laboratory_Equipment.html)\n", "\n", "### [7.1 Stepper Motors](https://jckantor.github.io/cbe61622/07.01-Stepper-Motors.html)\n", "- [7.1.1 Stepper Motors](https://jckantor.github.io/cbe61622/07.01-Stepper-Motors.html#7.1.1-Stepper-Motors)\n", "- [7.1.2 Unipolar Stepper Motors](https://jckantor.github.io/cbe61622/07.01-Stepper-Motors.html#7.1.2-Unipolar-Stepper-Motors)\n", "- [7.1.3 Driving the 28BYJ-48 Stepper Motor](https://jckantor.github.io/cbe61622/07.01-Stepper-Motors.html#7.1.3-Driving-the-28BYJ-48-Stepper-Motor)\n", "- [7.1.4 Programmable Input/Ouput (PIO)](https://jckantor.github.io/cbe61622/07.01-Stepper-Motors.html#7.1.4-Programmable-Input/Ouput-(PIO))\n", "* Markdown Figures\n", " - [https://cdn-learn.adafruit.com/assets/assets/000/016/234/original/components_IMG_4810_crop.jpg?1398735192](https://cdn-learn.adafruit.com/assets/assets/000/016/234/original/components_IMG_4810_crop.jpg?1398735192)\n", " - [https://cdn-learn.adafruit.com/assets/assets/000/016/342/original/components_IMG_4837.jpg?1399130432](https://cdn-learn.adafruit.com/assets/assets/000/016/342/original/components_IMG_4837.jpg?1399130432)\n", " - [https://cdn-learn.adafruit.com/assets/assets/000/016/343/large1024/components_winding_types_2.png?1399130808](https://cdn-learn.adafruit.com/assets/assets/000/016/343/large1024/components_winding_types_2.png?1399130808)\n", " - [https://cdn-learn.adafruit.com/assets/assets/000/016/349/medium640/components_unipolar_5.png?1399131989](https://cdn-learn.adafruit.com/assets/assets/000/016/349/medium640/components_unipolar_5.png?1399131989)\n", " - [https://m.media-amazon.com/images/S/aplus-seller-content-images-us-east-1/ATVPDKIKX0DER/A2WWHQ25ENKVJ1/B01CP18J4A/cZgPvVZSJSP._UX970_TTW__.jpg](https://m.media-amazon.com/images/S/aplus-seller-content-images-us-east-1/ATVPDKIKX0DER/A2WWHQ25ENKVJ1/B01CP18J4A/cZgPvVZSJSP._UX970_TTW__.jpg)\n", "* Markdown Links\n", " - [How to use a stepper motor with the Raspberry Pi Pico](https://www.youngwonks.com/blog/How-to-use-a-stepper-motor-with-the-Raspberry-Pi-Pico)\n", " - [Control 28BYJ-48 Stepper Motor with ULN2003 Driver & Arduino](https://lastminuteengineers.com/28byj48-stepper-motor-arduino-tutorial/)\n", " - [28BYJ-48 stepper motor and ULN2003 Arduino (Quick tutorial for beginners)](https://www.youtube.com/watch?v=avrdDZD7qEQ)\n", " - [Stepper Motor - Wikipedia](https://en.wikipedia.org/wiki/Stepper_motor)\n", " - [Adafruit](https://learn.adafruit.com/all-about-stepper-motors/types-of-steppers)\n", " - [Adafruit](https://learn.adafruit.com/all-about-stepper-motors/types-of-steppers)\n", " - [Elegoo, for example, sells kits of 5 motors with ULN2003 5V driver boards](https://www.elegoo.com/products/elegoo-uln2003-5v-stepper-motor-uln2003-driver-board)\n", " - [UNL2003](https://en.wikipedia.org/wiki/ULN2003A)\n", " - []()\n", " - [[github]](https://github.com/tinkertechtrove/pico-pi-playinghttps://github.com/tinkertechtrove/pico-pi-playing)\n", " - [[youtube]](https://www.youtube.com/channel/UCnoBIijHK7NnCBVpUojYFTA/videoshttps://www.youtube.com/channel/UCnoBIijHK7NnCBVpUojYFTA/videos)\n", " - [Raspberry Pi Pico PIO - Ep. 1 - Overview with Pull, Out, and Parallel Port](https://youtu.be/YafifJLNr6I)\n", "\n", "### [7.2 Stepper Motor Control via I2C](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html)\n", "- [7.2.1 Particle CLI](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.1-Particle-CLI)\n", " - [7.2.1.1 Installation](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.1.1-Installation)\n", " - [7.2.1.2 Utility functions](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.1.2-Utility-functions)\n", " - [7.2.1.3 Login to Particle](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.1.3-Login-to-Particle)\n", " - [7.2.1.4 Select a device](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.1.4-Select-a-device)\n", "- [7.2.2 Project: Motor Control](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.2-Project:-Motor-Control)\n", " - [7.2.2.1 Grove I2C Motor Driver V1.3](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.2.1-Grove-I2C-Motor-Driver-V1.3)\n", "- [7.2.3 Prototype](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3-Prototype)\n", " - [7.2.3.1 Create Project](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3.1-Create-Project)\n", " - [7.2.3.2 Change working directory](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3.2-Change-working-directory)\n", " - [7.2.3.3 Add relevant libraries](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3.3-Add-relevant-libraries)\n", " - [7.2.3.4 Create source file](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3.4-Create-source-file)\n", " - [7.2.3.5 Compiling](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3.5-Compiling)\n", " - [7.2.3.6 Flash firmware](https://jckantor.github.io/cbe61622/07.02-Stepper_Motor_Control_via_I2C.html#7.2.3.6-Flash-firmware)\n", "* Markdown Figures\n", " - [https://files.seeedstudio.com/wiki/Grove-I2C_Motor_Driver_V1.3/img/I2CMotorDriver-1.jpg](https://files.seeedstudio.com/wiki/Grove-I2C_Motor_Driver_V1.3/img/I2CMotorDriver-1.jpg)\n", "* Markdown Links\n", " - [SeeedStudio Documentation](https://wiki.seeedstudio.com/Grove-I2C_Motor_Driver_V1.3/)\n", " - [Github repository](https://github.com/Seeed-Studio/Grove_I2C_Motor_Driver_v1_3)\n", "\n", "### [7.3 Wifi](https://jckantor.github.io/cbe61622/07.03-Wifi-with-ESP-01.html)\n", "- [7.3.1 ESP01 class](https://jckantor.github.io/cbe61622/07.03-Wifi-with-ESP-01.html#7.3.1-ESP01-class)\n", "* Markdown Links\n", " - [Raspberry Pi Pico Pinout Diagram](https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf)\n", " - [ESP8266 Wikipedia article](https://en.wikipedia.org/wiki/ESP8266)\n", " - [ESP8266 Non-OS AT Instruction Set](https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf)\n", " - [ESP8266 AT Commands from Electronics Hub](https://www.electronicshub.org/esp8266-at-commands/)\n", " - [AT Command Reference](http://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/)\n", " - [Webserver Using Pi Pico and ESP01](https://www.instructables.com/Webserver-Using-Pi-Pico-and-ESP01/)\n", " - [Connect ESP-01S (ESP8266) to Raspberry Pi Pico/MicroPython, using AT Command](http://helloraspberrypi.blogspot.com/2021/02/connect-esp-01s-esp8266-to-raspberry-pi.html)\n", " - [Using AT commands on the ESP8266](https://learn.circuit.rocks/using-at-commands-on-the-esp8266)\n", " - [Pico/MicroPython + ESP-01S (AT Command) act as TCP Client connect to Raspberry Pi/Python TCP Server](http://helloraspberrypi.blogspot.com/2021/02/picomicropython-esp-01s-at-command-act.html)\n", " - [Raspberry Pi Pico Micropython ESP8266 Library](https://github.com/noyelseth/rpi-pico-micropython-esp8266-lib)\n", " - [Raspberry Pi Pico gets WiFi via an ESP01 and UART](https://youtu.be/02yfpA3h_w8https://youtu.be/02yfpA3h_w8)\n", "\n", "\n", "## [Chapter 8.0 Raspberry Pi](https://jckantor.github.io/cbe61622/08.00-Raspberry-Pi.html)\n", "- [8.0.1 Hardware](https://jckantor.github.io/cbe61622/08.00-Raspberry-Pi.html#8.0.1-Hardware)\n", "\n", "### [8.1 Setting up the Raspberry Pi for Lab Use](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html)\n", "- [8.1.1 Setup Procedures](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.1-Setup-Procedures)\n", " - [8.1.1.1 Step 0. Learn some Simple Linux Commands](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.1.1-Step-0.-Learn-some-Simple-Linux-Commands)\n", " - [8.1.1.2 Step 1. Create an OS Image](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.1.2-Step-1.-Create-an-OS-Image)\n", " - [8.1.1.3 Step 2. Assemble Case Hardware](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.1.3-Step-2.-Assemble-Case-Hardware)\n", " - [8.1.1.4 Step 3. Initial Configuration](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.1.4-Step-3.-Initial-Configuration)\n", " - [8.1.1.5 Step 4. Update Installed Packages](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.1.5-Step-4.-Update-Installed-Packages)\n", "- [8.1.2 Step 5. Configure Options](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2-Step-5.-Configure-Options)\n", " - [8.1.2.1 Step 6. SSH Connectivity](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.1-Step-6.-SSH-Connectivity)\n", " - [8.1.2.2 Step 7. VNC Connectivity](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.2-Step-7.-VNC-Connectivity)\n", " - [8.1.2.3 Step 8. Other Software Installations](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.3-Step-8.-Other-Software-Installations)\n", " - [8.1.2.3.1 WaveForms (Digilent)](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.3.1-WaveForms-(Digilent))\n", " - [8.1.2.3.2 Python Libraries](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.3.2-Python-Libraries)\n", " - [8.1.2.3.3 [ImageJ](https://imagej.net/platforms/pi) (Not working!)](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.3.3-[ImageJ](https://imagej.net/platforms/pi)-(Not-working!))\n", " - [8.1.2.4 JupyterHub and JupyterLab](https://jckantor.github.io/cbe61622/08.01-Raspberry-Pi-Setup.html#8.1.2.4-JupyterHub-and-JupyterLab)\n", "* Markdown Links\n", " - [Linux](https://en.wikipedia.org/wiki/Linux)\n", " - [Basic Linux Commands for Beginners](https://maker.pro/linux/tutorial/basic-linux-commands-for-beginners)\n", " - [Raspberry Pi Imager](https://www.raspberrypi.com/software/)\n", " - [RealVNC Viewer](https://www.realvnc.com/en/connect/download/viewer/)\n", " - [NEON SIMD unit](https://tttapa.github.io/Pages/Raspberry-Pi/NEON/index.html)\n", " - [ImageJ](https://imagej.net/platforms/pi)\n", "\n", "### [8.2 RPI Library tests](https://jckantor.github.io/cbe61622/08.02-rpi-test-libraries.html)\n", "- [8.2.1 Show numpy configuration](https://jckantor.github.io/cbe61622/08.02-rpi-test-libraries.html#8.2.1-Show-numpy-configuration)\n", "- [8.2.2 Matrix Multiplication Benchmark](https://jckantor.github.io/cbe61622/08.02-rpi-test-libraries.html#8.2.2-Matrix-Multiplication-Benchmark)\n", "- [8.2.3 Matplotlib Demonstration](https://jckantor.github.io/cbe61622/08.02-rpi-test-libraries.html#8.2.3-Matplotlib-Demonstration)\n", "- [8.2.4 Scipy Demonstration](https://jckantor.github.io/cbe61622/08.02-rpi-test-libraries.html#8.2.4-Scipy-Demonstration)\n", "\n", "### [8.3 RPI Camera Module](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html)\n", "- [8.3.1 PiCamera](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html#8.3.1-PiCamera)\n", " - [8.3.1.1 Camera preview](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html#8.3.1.1-Camera-preview)\n", " - [8.3.1.2 Capture to stream and display](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html#8.3.1.2-Capture-to-stream-and-display)\n", " - [8.3.1.3 Camera Settings](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html#8.3.1.3-Camera-Settings)\n", " - [8.3.1.4 Capture to numpy array](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html#8.3.1.4-Capture-to-numpy-array)\n", " - [8.3.1.4.1](https://jckantor.github.io/cbe61622/08.03-rpi-picamera_test.html#8.3.1.4.1)\n", "* Markdown Links\n", " - [here](https://www.raspberrypi.com/documentation/accessories/camera.html)\n", " - [PiCamera](https://picamera.readthedocs.io/en/release-1.13/api_camera.html)\n", "\n", "\n", "## [Chapter 9.0 Enabling the Internet of Things](https://jckantor.github.io/cbe61622/09.00-Enabling_the_Internet_of_Things.html)\n", "- [9.0.1 Background](https://jckantor.github.io/cbe61622/09.00-Enabling_the_Internet_of_Things.html#9.0.1-Background)\n", "- [9.0.2 Implementation for CBE-Virtual-Laboratory](https://jckantor.github.io/cbe61622/09.00-Enabling_the_Internet_of_Things.html#9.0.2-Implementation-for-CBE-Virtual-Laboratory)\n", "- [9.0.3 Useful Apps and Links](https://jckantor.github.io/cbe61622/09.00-Enabling_the_Internet_of_Things.html#9.0.3-Useful-Apps-and-Links)\n", "* Markdown Links\n", " - [MQTT.org](MQTT.org)\n", " - [Using MQTT to send and receive data for your next project](https://opensource.com/article/18/6/mqtt)\n", " - [How MQTT is advancing automation and control](https://www.flowcontrolnetwork.com/process-control-automation/article/21122615/how-mqtt-is-advancing-automation-and-control)\n", " - [MQTT, open SCADA publish/subscribe protocol is getting what it needs to go industrial](https://www.controlglobal.com/articles/2019/mqtt-open-scada-publishsubscribe-protocol-is-getting-what-it-needs-to-go-industrial/)\n", " - [Two Way communication Using MQTT and Python](http://www.steves-internet-guide.com/two-way-communication-mqtt-python/)\n", " - [Reporting temperature using our Particle Argon through MQTT and the TICK stack](https://www.youtube.com/watch?v=AxC_ykketIg&ab_channel=wcltalkstech)\n", "\n", "### [9.1 Publishing an Experiment via MQTT](https://jckantor.github.io/cbe61622/09.01-Publishing_an_Experiment_via_MQTT.html)\n", "- [9.1.1 Installations](https://jckantor.github.io/cbe61622/09.01-Publishing_an_Experiment_via_MQTT.html#9.1.1-Installations)\n", "- [9.1.2 Publishing a real-time simulation via MQTT](https://jckantor.github.io/cbe61622/09.01-Publishing_an_Experiment_via_MQTT.html#9.1.2-Publishing-a-real-time-simulation-via-MQTT)\n", " - [9.1.2.1 Proof of Concept](https://jckantor.github.io/cbe61622/09.01-Publishing_an_Experiment_via_MQTT.html#9.1.2.1-Proof-of-Concept)\n", "- [9.1.3 Version 1](https://jckantor.github.io/cbe61622/09.01-Publishing_an_Experiment_via_MQTT.html#9.1.3-Version-1)\n", "* Markdown Links\n", " - [SimPy](https://simpy.readthedocs.io/en/latest/)\n", "\n", "### [9.2 Accessing a Remote Experiment via MQTT](https://jckantor.github.io/cbe61622/09.02-Accessing_a_Remote_Experiment_via_MQTT.html)\n", "- [9.2.1 Installations](https://jckantor.github.io/cbe61622/09.02-Accessing_a_Remote_Experiment_via_MQTT.html#9.2.1-Installations)\n", "- [9.2.2 Remote Operation of a Laboratory Experiment](https://jckantor.github.io/cbe61622/09.02-Accessing_a_Remote_Experiment_via_MQTT.html#9.2.2-Remote-Operation-of-a-Laboratory-Experiment)\n", "- [9.2.3 Version 1](https://jckantor.github.io/cbe61622/09.02-Accessing_a_Remote_Experiment_via_MQTT.html#9.2.3-Version-1)\n", "\n", "### [9.3 Accessing MQTT Devices](https://jckantor.github.io/cbe61622/09.03-Miscellaneous_Notes.html)\n", "- [9.3.1 Installing paho-mqtt library](https://jckantor.github.io/cbe61622/09.03-Miscellaneous_Notes.html#9.3.1-Installing-paho-mqtt-library)\n", "- [9.3.2 Particle Argon](https://jckantor.github.io/cbe61622/09.03-Miscellaneous_Notes.html#9.3.2-Particle-Argon)\n", "- [9.3.3 Receiving data from Particle Argon device](https://jckantor.github.io/cbe61622/09.03-Miscellaneous_Notes.html#9.3.3-Receiving-data-from-Particle-Argon-device)\n", "\n", "\n", "## [Chapter 10.0 Computer Vision](https://jckantor.github.io/cbe61622/10.00-Computer-Vision.html)\n", "- [10.0.1 Outline](https://jckantor.github.io/cbe61622/10.00-Computer-Vision.html#10.0.1-Outline)\n", "- [10.0.2 Light, Perception, and Color](https://jckantor.github.io/cbe61622/10.00-Computer-Vision.html#10.0.2-Light,-Perception,-and-Color)\n", "- [10.0.3 Lenses and Image Formation](https://jckantor.github.io/cbe61622/10.00-Computer-Vision.html#10.0.3-Lenses-and-Image-Formation)\n", "- [10.0.4 Image Sensors](https://jckantor.github.io/cbe61622/10.00-Computer-Vision.html#10.0.4-Image-Sensors)\n", "- [10.0.5 Macro/Micro Photography](https://jckantor.github.io/cbe61622/10.00-Computer-Vision.html#10.0.5-Macro/Micro-Photography)\n", "* Markdown Links\n", " - [Raspberry Pi Camera Module 2](https://www.raspberrypi.com/products/camera-module-v2/)\n", " - [Sony IMX219 sensor](https://github.com/rellimmot/Sony-IMX219-Raspberry-Pi-V2-CMOS)\n", " - [Raspberry Pi HQ Camera]()\n", " - [Arducam](https://www.arducam.com/)\n", " - [Arducam High-Resolution Autofocus Camera](https://www.arducam.com/16mp-autofocus-camera-for-raspberry-pi/)\n", " - [Weewoday OV5647 1080p](https://www.amazon.com/Pieces-Megapixels-Sensor-Compatible-Raspberry/dp/B08M9RY3DQ/)\n", " - [Grove - Thermal Imaging Camera - MLX90641 BCB 16x12 IR Array with 55° FOV](https://www.seeedstudio.com/Grove-Thermal-Imaging-Camera-MLX90641-BCB-16x12-IR-Array-with-55-FOV-p-5265.html)\n", " - [Mitakon Zhongyi 20mm f/2 4.5x Super Macro Lens](https://www.bhphotovideo.com/c/product/1307521-REG/mitakon_zhongyi_mtk20mf2ai_20mm_f_2_4_5x_super.html)\n", " - [Venus Optics Laowa 25mm f/2.8 2.5-5X Ultra Macro Lens](https://www.bhphotovideo.com/c/product/1526143-REG/venus_optics_ve2528nz_laowa_25mm_f_2_8_2_5_5x.html)\n", " - [Yasuhara Nanoha Macro Lens 5:1](https://www.bhphotovideo.com/c/product/852859-REG/YASUHARA_YA24_NAN5M_Nanoha_Macro_Lens_5_1.html)\n", " - [Venus Optics Laowa 24mm f/14 Probe Lens](https://www.bhphotovideo.com/c/product/1430596-REG/venus_optics_laowa_24mm_f_14_probe.html)\n", " - [Edmund Scientific. Understanding Microscopes and Objectives](https://www.edmundoptics.com/knowledge-center/application-notes/microscopy/understanding-microscopes-and-objectives/)\n", " - [MJKZZ. Using Microscope Objectives For Beginners](https://www.mjkzz.com/single-post/2016/08/10/Using-Microscope-Objectives-For-Beginners)\n", " - [Hayear Lenses and Accessories](https://www.amazon.com/stores/page/B8FE1052-BA43-4FA2-99E8-3AC4A9A05A29)\n", "\n", "### [10.1 Image Capture](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html)\n", "- [10.1.1 References](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.1-References)\n", "- [10.1.2 Light](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.2-Light)\n", "- [10.1.3 Perception](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.3-Perception)\n", " - [10.1.3.1 Color Gamut](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.3.1-Color-Gamut)\n", " - [10.1.3.2 Lens and Aperture](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.3.2-Lens-and-Aperture)\n", " - [10.1.3.3 Sensor](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.3.3-Sensor)\n", " - [10.1.3.4 Camera as a System](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.3.4-Camera-as-a-System)\n", "- [10.1.4 Software Tools](https://jckantor.github.io/cbe61622/10.01-rpi-image-capture.html#10.1.4-Software-Tools)\n", "* Markdown Figures\n", " - [https://i.pinimg.com/originals/ef/57/92/ef579242f3a4c24fe01d543f04a656b7.jpg](https://i.pinimg.com/originals/ef/57/92/ef579242f3a4c24fe01d543f04a656b7.jpg)\n", " - [http://hci.cs.siue.edu/NSF/Files/Semester/Week9-2/PPT-Text/images/Image13.png](http://hci.cs.siue.edu/NSF/Files/Semester/Week9-2/PPT-Text/images/Image13.png)\n", " - [https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/CIE_1931_Luminosity.png/640px-CIE_1931_Luminosity.png](https://upload.wikimedia.org/wikipedia/commons/thumb/7/72/CIE_1931_Luminosity.png/640px-CIE_1931_Luminosity.png)\n", " - [https://static3.olympus-lifescience.com/data/olympusmicro/primer/lightandcolor/images/humanvisionfigure6.jpg?rev=63C6](https://static3.olympus-lifescience.com/data/olympusmicro/primer/lightandcolor/images/humanvisionfigure6.jpg?rev=63C6)\n", " - [https://www.ecse.rpi.edu/~schubert/Light-Emitting-Diodes-dot-org/chap16/F16-02%20Photopic%20mesopic%20scotopic%20vision.jpg](https://www.ecse.rpi.edu/~schubert/Light-Emitting-Diodes-dot-org/chap16/F16-02%20Photopic%20mesopic%20scotopic%20vision.jpg)\n", " - [https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cie_Chart_with_sRGB_gamut_by_spigget.png/430px-Cie_Chart_with_sRGB_gamut_by_spigget.png](https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cie_Chart_with_sRGB_gamut_by_spigget.png/430px-Cie_Chart_with_sRGB_gamut_by_spigget.png)\n", " - [https://image1.slideserve.com/2952580/slide8-l.jpg](https://image1.slideserve.com/2952580/slide8-l.jpg)\n", " - [https://static.techspot.com/articles-info/850/images/CMOS-j_1100.webp](https://static.techspot.com/articles-info/850/images/CMOS-j_1100.webp)\n", " - [https://www.arducam.com/wp-content/uploads/2020/11/sony-image-sensor-back-illuminated-and-front-illuminated-22.jpg](https://www.arducam.com/wp-content/uploads/2020/11/sony-image-sensor-back-illuminated-and-front-illuminated-22.jpg)\n", " - [https://static.techspot.com/articles-info/850/images/Module-GS5-S-j_1100.webp](https://static.techspot.com/articles-info/850/images/Module-GS5-S-j_1100.webp)\n", " - [https://www.arducam.com/wp-content/uploads/2019/04/ov5642_diagram.jpg](https://www.arducam.com/wp-content/uploads/2019/04/ov5642_diagram.jpg)\n", " - [https://www.arducam.com/wp-content/uploads/2020/11/BLOCK-DIAGRAM-1024x564.png](https://www.arducam.com/wp-content/uploads/2020/11/BLOCK-DIAGRAM-1024x564.png)\n", " - [https://www.raspberrypi.com/app/uploads/2020/05/Libcamera-Diagrams-01-500x334.jpg](https://www.raspberrypi.com/app/uploads/2020/05/Libcamera-Diagrams-01-500x334.jpg)\n", " - [https://www.raspberrypi.com/app/uploads/2020/05/Libcamera-Diagrams-02-500x334.jpg](https://www.raspberrypi.com/app/uploads/2020/05/Libcamera-Diagrams-02-500x334.jpg)\n", "* Markdown Links\n", " - [rpi-camera github repository](https://github.com/kmiikki/rpi-camera)\n", " - [pdf](https://core.ac.uk/download/pdf/46565912.pdf)\n", " - [Steropi Blog](https://stereopi.com/blog/deep-ultraviolet-imaging-using-raspberry-pi-hq-camera)\n", " - [Giving Linux a Camera Stack: libcamera's 3 Years Journey and Exciting Future](https://youtu.be/r8ByyJzSKG8)\n", " - [OV5642 Data Sheet](https://www.uctronics.com/download/cam_module/OV5642DS.pdf)\n", " - [IMX477 Data Sheet](https://www.arducam.com/sony/imx477/)\n", "\n", "### [10.2 Machine Vision Applications](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html)\n", "- [10.2.1 Lenses](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.1-Lenses)\n", " - [10.2.1.1 Fixed focal length lenses](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.1.1-Fixed-focal-length-lenses)\n", " - [10.2.1.2 Macro and Variable Magnification Lenses](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.1.2-Macro-and-Variable-Magnification-Lenses)\n", " - [10.2.1.3 Telecentric Lenses](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.1.3-Telecentric-Lenses)\n", "- [10.2.2 Sensing Design](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.2-Sensing-Design)\n", " - [10.2.2.1 Raspberry Pi HQ Camera (Sony IMX477)](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.2.1-Raspberry-Pi-HQ-Camera-(Sony-IMX477))\n", " - [10.2.2.2 30mm Optical Cage](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.2.2-30mm-Optical-Cage)\n", " - [10.2.2.3 Arducam](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.2.3-Arducam)\n", " - [10.2.2.4 Picamera](https://jckantor.github.io/cbe61622/10.02-Machine-Vision.html#10.2.2.4-Picamera)\n", "* Markdown Figures\n", " - [https://cdn-shop.adafruit.com/970x728/4562-00.jpg](https://cdn-shop.adafruit.com/970x728/4562-00.jpg)\n", " - [https://productimages.edmundoptics.com/3613.jpg?w=225&quality=100&ver=637710189070260316](https://productimages.edmundoptics.com/3613.jpg?w=225&quality=100&ver=637710189070260316)\n", " - [Technical Drawing](https://www.waveshare.com/img/devkit/accBoard/Raspberry-Pi-HQ-Camera/Raspberry-Pi-HQ-Camera-details-15.jpg)\n", "* Markdown Links\n", " - [Arducam](https://www.arducam.com/best-m12-c-cs-mount-lenses/)\n", " - [Raspberry Pi 16mm](https://www.adafruit.com/product/4562)\n", " - [Edmund Infiniprobe 0-3.2x](https://www.edmundoptics.com/p/infiniprobe-s-32-video-microscope-0-32x/15606/)\n", " - [EO Imaging Lab 2.2: Telecentricity](https://www.youtube.com/watch?v=O-NeZcmYyJ4&ab_channel=EdmundOptics)\n", " - [Thorlabs Tutorial](https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=10762)\n", " - [Edmund Optical](https://www.edmundoptics.com/c/telecentric-lenses/1003/)\n", " - [B&H](https://www.bhphotovideo.com/c/buy/telecentric-lenses/ci/34857/N/3564657627)\n", " - [Waveshare](https://www.waveshare.com/raspberry-pi-hq-camera.htm)\n", " - [Thor Labs 30mm Cage Components](https://www.thorlabs.com/navigation.cfm?guide_id=2004)\n", " - [Sony IMX477](https://www.arducam.com/product-category/cameras-for-raspberrypi/raspberry-pi-camera-raspistill-raspvivid/raspberry-pi-high-quality-12mp-imx477-camera/)\n", "\n", "### [10.10 Case Study: Particle Counting](https://jckantor.github.io/cbe61622/10.10-Case-Study-Particle-Counting.html)\n", "- [10.10.1 Books and References](https://jckantor.github.io/cbe61622/10.10-Case-Study-Particle-Counting.html#10.10.1-Books-and-References)\n", "- [10.10.2 Python Packages for Computer Vision](https://jckantor.github.io/cbe61622/10.10-Case-Study-Particle-Counting.html#10.10.2-Python-Packages-for-Computer-Vision)\n", " - [10.10.2.1 File Formats](https://jckantor.github.io/cbe61622/10.10-Case-Study-Particle-Counting.html#10.10.2.1-File-Formats)\n", " - [10.10.2.2 Image Metadata](https://jckantor.github.io/cbe61622/10.10-Case-Study-Particle-Counting.html#10.10.2.2-Image-Metadata)\n", " - [10.10.2.3 Calibrating Monitors](https://jckantor.github.io/cbe61622/10.10-Case-Study-Particle-Counting.html#10.10.2.3-Calibrating-Monitors)\n", "* Markdown Links\n", " - [link](https://www.elsevier.com/books/feature-extraction-and-image-processing-for-computer-vision/nixon/978-0-12-814976-8?countrycode=US&format=print&utm_source=google_ads&utm_medium=paid_search&utm_campaign=usashoppinglr&gclid=Cj0KCQiA7oyNBhDiARIsADtGRZYaMYLGnWyLuobOVDBjKabaFfe8nSTA5m2zmH0BYBN_AFdnKwpU_jkaArGkEALw_wcB&gclsrc=aw.ds)\n", " - [[Hesburgh Library](https://link-springer-com.proxy.library.nd.edu/book/10.1007%2F978-1-84882-935-0)\n", " - [[Szeliski Web Page and Materials](https://szeliski.org/Book/)\n", " - [[Preprint of 2nd Edition](https://www.dropbox.com/s/8bf4feleifhrvl6/SzeliskiBookDraft_20210930.pdf?dl=0)\n", " - [Amazon](https://www.amazon.com/Raspberry-Computer-Vision-Programming-applications/dp/1800207212)\n", " - [Introduction to Computer Vision Using OpenCV and the Raspberry Pi](https://www.circuitbasics.com/introduction-to-computer-vision-using-opencv-and-raspberry-pi/)\n", " - [pdf](https://www.diva-portal.org/smash/get/diva2:20007/fulltext01.pdf)\n", " - [pdf](http://www.rit-mcsl.org/Lippman2000/Spectral/TechnicalPapers/SpecEstimRGBCamera_Chiba99.pdf)\n", " - [NumPy]()\n", " - [Matplotlib]()\n", " - [scipy.ndimage](https://docs.scipy.org/doc/scipy/tutorial/ndimage.html)\n", " - [scikit-image](https://scikit-image.org/)\n", " - [Pillow](https://pillow.readthedocs.io/en/stable/)\n", " - [Pillow-SIMD](https://github.com/uploadcare/pillow-simd)\n", " - [Imageio](https://github.com/imageio/imageio)\n", " - [OpenCV/cv2](https://opencv.org/)\n", " - [books](https://opencv.org/books/)\n", " - [Mahotas](https://mahotas.readthedocs.io/en/latest/)\n", " - [SimpleITK]()\n", " - [book](https://itk.org/ItkSoftwareGuide.pdf)\n", " - [ImageMagick](https://imagemagick.org)\n", " - [Wand](https://pypi.org/project/Wand/)\n", " - [XnView MP](https://www.xnview.com/en/xnviewmp/)\n", " - [cImage](https://github.com/bnmnetp/cImage)\n", " - [PIL]()\n", " - [SimpleCV](http://simplecv.org/)\n", "\n", "### [10.11 Experiments with Computer Vision](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html)\n", "- [10.11.1 Developing a Process](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1-Developing-a-Process)\n", " - [10.11.1.1 Python Imports](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.1-Python-Imports)\n", " - [10.11.1.2 Reading images](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.2-Reading-images)\n", " - [10.11.1.3 Cropping](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.3-Cropping)\n", " - [10.11.1.4 Channels and Histograms](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.4-Channels-and-Histograms)\n", " - [10.11.1.5 Creating a composite channel](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.5-Creating-a-composite-channel)\n", " - [10.11.1.6 Histogram equalization](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.6-Histogram-equalization)\n", " - [10.11.1.7 Blur filter](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.7-Blur-filter)\n", " - [10.11.1.8 Thresholding/Segmentation](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.8-Thresholding/Segmentation)\n", " - [10.11.1.9 Morphological Transformation](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.9-Morphological-Transformation)\n", " - [10.11.1.10 Finding Objects](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.10-Finding-Objects)\n", " - [10.11.1.11 Finding and Displaying Particles](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.11-Finding-and-Displaying-Particles)\n", " - [10.11.1.12 Creating a Training Set](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.12-Creating-a-Training-Set)\n", " - [10.11.1.13 What did we learn about our application?](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.1.13-What-did-we-learn-about-our-application?)\n", "- [10.11.2 Particle Labeling Classes](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.2-Particle-Labeling-Classes)\n", "- [10.11.3 Demonstrations](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.3-Demonstrations)\n", " - [10.11.3.1 Thresholding](https://jckantor.github.io/cbe61622/10.11-Experiments-with-Computer-Vision.html#10.11.3.1-Thresholding)\n", "* Markdown Links\n", " - [color space](https://en.wikipedia.org/wiki/Color_space)\n", "\n", "### [10.12 Test Driven Development](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html)\n", " - [10.12.1 What did we learn about our application?](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1-What-did-we-learn-about-our-application?)\n", "- [10.12.1 Test Driven Development, or *Festina Lente* (\"make haste, slowly\")](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1-Test-Driven-Development,-or-*Festina-Lente*-(\"make-haste,-slowly\"))\n", " - [10.12.1.1 Labeler Class](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1.1-Labeler-Class)\n", " - [10.12.1.2 Loading image files](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1.2-Loading-image-files)\n", " - [10.12.1.3 Image Rescaling and Cropping](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1.3-Image-Rescaling-and-Cropping)\n", " - [10.12.1.4 Channel Class](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1.4-Channel-Class)\n", " - [10.12.1.5 Integrating Channels into Labeler](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1.5-Integrating-Channels-into-Labeler)\n", " - [10.12.1.6 Additional Channel Methods](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.1.6-Additional-Channel-Methods)\n", "- [10.12.2 Particle Class](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.2-Particle-Class)\n", "- [10.12.3 Classes](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.3-Classes)\n", "- [10.12.4 Demonstrations](https://jckantor.github.io/cbe61622/10.12-Test-Driven-Development.html#10.12.4-Demonstrations)\n", "* Markdown Links\n", " - ['k']((r + g + b)\n", " - ['k']()\n", "\n", "### [10.13 Computer Vision Case Study: Creating an Application](https://jckantor.github.io/cbe61622/10.13-Computer-Vision-Application.html)\n", "- [10.13.1 Application](https://jckantor.github.io/cbe61622/10.13-Computer-Vision-Application.html#10.13.1-Application)\n", "- [10.13.2 Demonstrations](https://jckantor.github.io/cbe61622/10.13-Computer-Vision-Application.html#10.13.2-Demonstrations)\n", "\n", "\n", "## [Appendix A. A.0 Python Source Library](https://jckantor.github.io/cbe61622/A.00-Appendices.html)\n", "\n", "### [A.1 Resources](https://jckantor.github.io/cbe61622/A.01-Resources.html)\n", "- [A.1.1 Data Acquistion, Instrumentation, and Control Companies](https://jckantor.github.io/cbe61622/A.01-Resources.html#A.1.1-Data-Acquistion,-Instrumentation,-and-Control-Companies)\n", "- [A.1.2 IoT Devices and Services](https://jckantor.github.io/cbe61622/A.01-Resources.html#A.1.2-IoT-Devices-and-Services)\n", "- [A.1.3 Software Platforms](https://jckantor.github.io/cbe61622/A.01-Resources.html#A.1.3-Software-Platforms)\n", "* Markdown Links\n", " - [National Instruments](https://www.ni.com/en-us.html)\n", " - [Adafruit](https://www.adafruit.com/about)\n", " - [DFRobot](dfrobot.com)\n", " - [National Control Devices](https://ncd.io/)\n", " - [Particle.io](particle.io)\n", " - [SeeedStudio](seeedstudio.com)\n", " - [\"Grove\"](https://wiki.seeedstudio.com/Grove_System/)\n", " - [Arduino](https://www.arduino.cc/)\n", " - [AWS IoT](https://aws.amazon.com/iot/)\n", " - [Blynk](https://blynk.io/)\n", " - [Internet of Things (IoT) of IBM Cloud](https://www.ibm.com/cloud/internet-of-things)\n", " - [Node-RED](https://nodered.org/)\n", " - [Node.js](https://nodejs.org/en/)\n", " - [PlatformIO](https://platformio.org/)\n", "\n", "### [A.2 Downloading Python source files from github](https://jckantor.github.io/cbe61622/A.02-Downloading_Python_source_files_from_github.html)\n", "- [A.2.2 Method 2. Cloning a git repository](https://jckantor.github.io/cbe61622/A.02-Downloading_Python_source_files_from_github.html#A.2.2-Method-2.-Cloning-a-git-repository)\n", " - [A.2.2.1 Commit and push changes](https://jckantor.github.io/cbe61622/A.02-Downloading_Python_source_files_from_github.html#A.2.2.1-Commit-and-push-changes)\n", "- [A.2.3 Method 3. Using pip to install from a github repository](https://jckantor.github.io/cbe61622/A.02-Downloading_Python_source_files_from_github.html#A.2.3-Method-3.-Using-pip-to-install-from-a-github-repository)\n", "- [A.2.4 Summary and recommended practices](https://jckantor.github.io/cbe61622/A.02-Downloading_Python_source_files_from_github.html#A.2.4-Summary-and-recommended-practices)\n", "* Markdown Links\n", " - [setuptools](https://setuptools.readthedocs.io/en/latest/)\n", "\n", "### [A.3 Getting Started with Pymata4](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html)\n", "- [A.3.1 Hardware Setup and Software Installations](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html#A.3.1-Hardware-Setup-and-Software-Installations)\n", "- [A.3.2 Basic Usage](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html#A.3.2-Basic-Usage)\n", "- [A.3.3 Blinker](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html#A.3.3-Blinker)\n", "- [A.3.4 Handling a Keyboard Interrupt](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html#A.3.4-Handling-a-Keyboard-Interrupt)\n", "- [A.3.5 Getting Information about the Arduino](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html#A.3.5-Getting-Information-about-the-Arduino)\n", "- [A.3.6 Temperature Control Lab Shield](https://jckantor.github.io/cbe61622/A.03-Getting-Started-with-Pymata4.html#A.3.6-Temperature-Control-Lab-Shield)\n", "* Markdown Links\n", " - [Pymata4](https://github.com/MrYsLab/pymata4)\n", " - [concurrent Python threads](https://mryslab.github.io/pymata4/concurrency/)\n", " - [pymata-express](https://github.com/MrYsLab/pymata-express)\n", " - [Python asyncio package](https://docs.python.org/3/library/asyncio.html)\n", " - [modifications to the Firmata server sketch](https://www.instructables.com/Going-Beyond-StandardFirmata-Adding-New-Device-Sup/)\n", " - [Pymata4 API documentation](http://htmlpreview.github.io/?https://raw.githubusercontent.com/MrYsLab/pymata4/master/html/pymata4/index.html)\n", " - [Firmata protocol](https://github.com/firmata/protocol/blob/master/protocol.md)\n", "\n", "### [A.4 Scheduling Real-Time Events with Simpy](https://jckantor.github.io/cbe61622/A.04-Scheduling-Real-Time-Events-with-Simpy.html)\n", "- [A.4.1 Blinkers](https://jckantor.github.io/cbe61622/A.04-Scheduling-Real-Time-Events-with-Simpy.html#A.4.1-Blinkers)\n", "- [A.4.2 Asyncio](https://jckantor.github.io/cbe61622/A.04-Scheduling-Real-Time-Events-with-Simpy.html#A.4.2-Asyncio)\n", "* Markdown Links\n", " - [Simpy](https://simpy.readthedocs.io/en/latest/index.html)\n", " - [real-time simulation](https://simpy.readthedocs.io/en/latest/topical_guides/real-time-simulations.html)\n", "\n", "\n", "## [Appendix B. B.0 Working with Particle](https://jckantor.github.io/cbe61622/B.00-Working_with_Particle.html)\n", "- [B.0.1 Why Particle?](https://jckantor.github.io/cbe61622/B.00-Working_with_Particle.html#B.0.1-Why-Particle?)\n", "- [B.0.2 Particle Argon](https://jckantor.github.io/cbe61622/B.00-Working_with_Particle.html#B.0.2-Particle-Argon)\n", "* Markdown Figures\n", " - [https://docs.particle.io/assets/images/argon/argon-top.png](https://docs.particle.io/assets/images/argon/argon-top.png)\n", "* Markdown Links\n", " - [Particle.io](particle.io)\n", " - [Arduino.cc](arduino.cc)\n", " - [Particle founded in 2012](https://blog.particle.io/spark-is-now-particle/)\n", " - [hardware datasheet](https://docs.particle.io/datasheets/wi-fi/argon-datasheet/)\n", " - [Device OS API](https://docs.particle.io/reference/device-os/firmware/argon/)\n", "\n", "### [B.1 Particle Command Line Interface](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html)\n", "- [B.1.1 Installation of the Particle command line interface](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html#B.1.1-Installation-of-the-Particle-command-line-interface)\n", "- [B.1.2 Login to Particle](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html#B.1.2-Login-to-Particle)\n", "- [B.1.3 Demonstrations](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html#B.1.3-Demonstrations)\n", " - [B.1.3.1 Flashing Tinker firmware](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html#B.1.3.1-Flashing-Tinker-firmware)\n", " - [B.1.3.2 Toggle on-board led](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html#B.1.3.2-Toggle-on-board-led)\n", " - [B.1.3.3 Reading Grove Light Sensor V1.2](https://jckantor.github.io/cbe61622/B.01-Particle_CLI.html#B.1.3.3-Reading-Grove-Light-Sensor-V1.2)\n", "* Markdown Figures\n", " - [Particle Argon](https://images.ctfassets.net/ity165ek7v1z/5x0EeKXhRxrgA2Ebgnqnik/654abeb410afd7f10fd3f99b5d871599/prototype.jpeg?w=510&h=340&q=80&fm=webp)\n", " - [https://static-cdn.seeedstudio.site/media/catalog/product/cache/9d0ce51a71ce6a79dfa2a98d65a0f0bd/h/t/httpsstatics3.seeedstudio.comseeedimg2016-10po8b7qd0xnlnchgogziq9g3d.jpg](https://static-cdn.seeedstudio.site/media/catalog/product/cache/9d0ce51a71ce6a79dfa2a98d65a0f0bd/h/t/httpsstatics3.seeedstudio.comseeedimg2016-10po8b7qd0xnlnchgogziq9g3d.jpg)\n", "* Markdown Links\n", " - [Particle command line interface](https://docs.particle.io/tutorials/developer-tools/cli/)\n", " - [Tinker](https://docs.particle.io/tutorials/developer-tools/tinker/photon/)\n", "\n", "### [B.2 Coding for Particle](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html)\n", "- [B.2.1 Installation of the Particle command line interface](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html#B.2.1-Installation-of-the-Particle-command-line-interface)\n", "- [B.2.2 Login to Particle](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html#B.2.2-Login-to-Particle)\n", "- [B.2.3 Blinking LED Demo](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html#B.2.3-Blinking-LED-Demo)\n", " - [B.2.3.1 Blinking LED Code](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html#B.2.3.1-Blinking-LED-Code)\n", " - [B.2.3.2 Compiling](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html#B.2.3.2-Compiling)\n", " - [B.2.3.3 Flashing binary to device](https://jckantor.github.io/cbe61622/B.02-Particle_Coding.html#B.2.3.3-Flashing-binary-to-device)\n", "\n", "### [B.3 Particle Command Line Interface (CLI)](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html)\n", "- [B.3.1 Particle CLI](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.1-Particle-CLI)\n", " - [B.3.1.1 Installation](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.1.1-Installation)\n", " - [B.3.1.2 Utility functions](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.1.2-Utility-functions)\n", " - [B.3.1.3 Login to Particle](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.1.3-Login-to-Particle)\n", " - [B.3.1.4 Select a device](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.1.4-Select-a-device)\n", "- [B.3.2 Project: Timer display](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2-Project:-Timer-display)\n", " - [B.3.2.1 Particle Argon](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.1-Particle-Argon)\n", " - [B.3.2.2 Grove 4-Digit Display](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.2-Grove-4-Digit-Display)\n", " - [B.3.2.3 Grove Shield FeeatherWing](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.3-Grove-Shield-FeeatherWing)\n", " - [B.3.2.4 Create Project](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.4-Create-Project)\n", " - [B.3.2.5 Change working directory](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.5-Change-working-directory)\n", " - [B.3.2.6 Add relevant libraries](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.6-Add-relevant-libraries)\n", " - [B.3.2.7 Create source file](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.7-Create-source-file)\n", " - [B.3.2.8 Compiling](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.8-Compiling)\n", " - [B.3.2.9 Flash firmware](https://jckantor.github.io/cbe61622/B.03-Particle-CLI.html#B.3.2.9-Flash-firmware)\n", "* Markdown Figures\n", " - [https://docs.particle.io/assets/images/argon/argon-pin-markings.png](https://docs.particle.io/assets/images/argon/argon-pin-markings.png)\n", " - [https://files.seeedstudio.com/wiki/Grove-4-Digit_Display/img/Grove-4_digit_display.jpg](https://files.seeedstudio.com/wiki/Grove-4-Digit_Display/img/Grove-4_digit_display.jpg)\n", " - [https://cdn-shop.adafruit.com/1200x900/4309-05.jpg](https://cdn-shop.adafruit.com/1200x900/4309-05.jpg)\n", "* Markdown Links\n", " - [Particle command line interface](https://docs.particle.io/reference/developer-tools/cli/)\n", " - [Grove 4-Digit Display](https://wiki.seeedstudio.com/Grove-4-Digit_Display/)\n", " - [Argon Starter Kit](https://store.particle.io/collections/prototyping-hardware/products/iot-starter-kit)\n", " - [Grove 4-Digit Display](https://wiki.seeedstudio.com/Grove-4-Digit_Display/)\n", " - [Documentation](https://github.com/Seeed-Studio/Grove_4Digital_Display)\n", "\n", "### [B.4 Ultrasonic Distance Ranger](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html)\n", "- [B.4.1 Particle CLI](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.1-Particle-CLI)\n", " - [B.4.1.1 Installation](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.1.1-Installation)\n", " - [B.4.1.2 Utility functions](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.1.2-Utility-functions)\n", " - [B.4.1.3 Login to Particle](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.1.3-Login-to-Particle)\n", " - [B.4.1.4 Select a device](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.1.4-Select-a-device)\n", "- [B.4.2 Project Hardware](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.2-Project-Hardware)\n", " - [B.4.2.1 Grove Ultrasonic Ranger](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.2.1-Grove-Ultrasonic-Ranger)\n", " - [B.4.2.2 Grove 4 Digit Display](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.2.2-Grove-4-Digit-Display)\n", "- [B.4.3 Implementation](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3-Implementation)\n", " - [B.4.3.1 Create Project](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3.1-Create-Project)\n", " - [B.4.3.2 Change working directory](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3.2-Change-working-directory)\n", " - [B.4.3.3 Add relevant libraries](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3.3-Add-relevant-libraries)\n", " - [B.4.3.4 Create source file](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3.4-Create-source-file)\n", " - [B.4.3.5 Compiling](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3.5-Compiling)\n", " - [B.4.3.6 Flash firmware](https://jckantor.github.io/cbe61622/B.04-Ultrasonic_Distance_Ranger.html#B.4.3.6-Flash-firmware)\n", "* Markdown Figures\n", " - [https://files.seeedstudio.com/wiki/Grove_Ultrasonic_Ranger/img/Ultrasonic.jpg](https://files.seeedstudio.com/wiki/Grove_Ultrasonic_Ranger/img/Ultrasonic.jpg)\n", "* Markdown Links\n", " - [SeeedStudio description](https://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger/)\n", " - [pulseIn()](https://docs.particle.io/reference/device-os/firmware/argon/#pulsein-)\n", "\n", "### [B.5 Simple Stop Watch using Interrupts](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html)\n", "- [B.5.1 Particle CLI](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.1-Particle-CLI)\n", " - [B.5.1.1 Installation](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.1.1-Installation)\n", " - [B.5.1.2 Utility functions](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.1.2-Utility-functions)\n", " - [B.5.1.3 Login to Particle](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.1.3-Login-to-Particle)\n", " - [B.5.1.4 Select a device](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.1.4-Select-a-device)\n", "- [B.5.2 Project: Simple Stop Watch](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.2-Project:-Simple-Stop-Watch)\n", " - [B.5.2.1 Grove Button](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.2.1-Grove-Button)\n", "- [B.5.3 Solution 1: Using clickButton library](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3-Solution-1:-Using-clickButton-library)\n", " - [B.5.3.1 Create Project](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3.1-Create-Project)\n", " - [B.5.3.2 Change working directory](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3.2-Change-working-directory)\n", " - [B.5.3.3 Add relevant libraries](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3.3-Add-relevant-libraries)\n", " - [B.5.3.4 Create source file](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3.4-Create-source-file)\n", " - [B.5.3.5 Compiling](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3.5-Compiling)\n", " - [B.5.3.6 Flash firmware](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.3.6-Flash-firmware)\n", "- [B.5.4 Solution 2: Interrupt Service Routine (ISR)](https://jckantor.github.io/cbe61622/B.05-Simple_Stop_Watch_using_Interrupts.html#B.5.4-Solution-2:-Interrupt-Service-Routine-(ISR))\n", "* Markdown Links\n", " - [pull-down resistor](https://www.seeedstudio.com/blog/2020/02/21/pull-up-resistor-vs-pull-down-differences-arduino-guide/)\n", "\n", "### [B.6 Communicating via TCP](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html)\n", "- [B.6.1 Particle CLI](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.1-Particle-CLI)\n", " - [B.6.1.1 Installation](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.1.1-Installation)\n", " - [B.6.1.2 Utility functions](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.1.2-Utility-functions)\n", " - [B.6.1.3 Login to Particle](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.1.3-Login-to-Particle)\n", " - [B.6.1.4 Select a device](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.1.4-Select-a-device)\n", "- [B.6.2 Project Considerations](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.2-Project-Considerations)\n", "- [B.6.3 Implementation](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.3-Implementation)\n", " - [B.6.3.1 Create Project](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.3.1-Create-Project)\n", " - [B.6.3.2 Change working directory](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.3.2-Change-working-directory)\n", " - [B.6.3.3 Create source file](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.3.3-Create-source-file)\n", " - [B.6.3.4 Compiling](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.3.4-Compiling)\n", " - [B.6.3.5 Flash firmware](https://jckantor.github.io/cbe61622/B.06-Communicating _via_TCP.html#B.6.3.5-Flash-firmware)" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 5 }