Networking and Communications

purposes
   location
   parallelism
   modularity
   interference

wired
   UART, USART, SERCOM, PIO, bit-bang
   asynchronous serial
      RS-232, RS-422, RS-485
      serial broadcast
         ATtiny412
         ATtiny45
            components video
            hello.bus.45.bridge board traces traces+exterior interior
            hello.bus.45.node board traces traces+exterior interior
            hello.bus.45.c makefile
      hop-count
         chip LED strip
         hello.hop-LED.t1624 board components top interior
            hello.hop-LED.t1624.ino hello.hop-LED.py video
      broad-hop
         hello.broadhop-LED.t1624 board components top interior
            hello.broadhop-LED.t1624.ino hello.broadhop-LED.py video
            hello.broadhop-serial.D11C board components top bottom holes interior
   synchronous serial
      SPI
         SDI/SDO/CS/SCK (serial data in/serial data out/chip select/serial clock)
         PICO/POCI (peripherial in controller out, peripheral out controller in)
         MISO/MOSI (master/slave → main/secondary)
         library library
         SD memory cards
            specification FAT
            hello.uSD.RP2040 board components top bottom holes interior
               hello.uSD.RP2040.py video
            hello.uSD.D11C board components traces traces+exterior interior
               hello.uSD.D11C.ino video
            hello.uSD.44 board components traces traces+exterior interior
               hello.uSD.44.read.c make output
      I2C, TWI
         SCL/SDA, pull-ups
         Qwiic STEMMA
         library library hardware software
         hello.I2C.t1614 board components traces traces+exterior interior 
            hello.I2C.ino video
         ATtiny412
      I3C
   asynchronous unclocked
      ATP
         hello.ATP.RP2040 board components traces interior
            send receive timing video
   USB
      TinyUSB
      CircuitPython HID MIDI
      Arduino HID MIDI
   Ethernet
      chip module
   CAN, LIN
   MODBUS
   DMX

wireless
   radios
      oscillator, mixer, PA, LNA, IF, I/Q, demod, baseband, filters
   antennas
      Q, antenna gain, impedance matching, short antennas
      FabFi
   single-chip
      ESP32 (2.4 GHz Wi-Fi, Bluetooth, 32-bit) versions
         ESP32-C3 module
            hello.button-blink.C3 board components traces interior
               hello.Web-blink.C3.py microdot.py microdot_asyncio.py video
               hello.BLE-blink.C3.py blueart.py hello.BLE-blink.C3.html video
                  NUS Web Bluetooth
         ESP32-WROOM pins
            hello.ESP32-WROOM board components traces traces+exterior holes interior
               Web client video
               Web server video
               UDP video
               Bluetooth serial video
               802.11 LR
         ESP32-CAM 
            hello.ESP32-CAM board components traces traces+exterior holes interior
            camera video
      ESP8266 (2.4 GHz Wi-Fi, 8-bit)
         chip module board power
            hello.ESP-01 board components traces traces+exterior holes interior
               Web server video
            hello.ESP-WROOM-02D board components traces traces+exterior holes interior
               Access point video
      MFRC522 (13.56 MHz RFID)
         chip module library security
            hello.MFRC522.t1614 board components traces traces+exterior interior video
      nRF24L01+ (2.4 GHz ISM)
         chip module library project antennas
         hello.nRF24L01P.44 board components traces traces+exterior interior
      nRF905 (433/868/915 MHz ISM)
         chip module library
      RN4871 (2.4 GHz Bluetooth)
         chip module commands
         hello.RN4871.ftdi board components traces traces+exterior interior video
      CC2541 (2.4 GHz Bluetooth)
         chip HC-08 HM-10 HM-11 commands
         hello.HM-11.ftdi board components traces traces+exterior interior video
      nRF52 (2.4 GHz Bluetooth, ISM)
         chip module project project
      CYW43438 (2.4 GHz, Wi-Fi, Bluetooth, FM)
         chip module board
      RFM95/6/7/8 (433/470/868/915 MHz LoRa)
         chip module LoRaWAN
      SX1276 (137-1050 MHz LoRa)
         chip board ExpressLRS
      SIM800L (GSM)
         module
   software radio
   OpenWrt

OSI layers
   7: application (HTTP)
   6: presentation (SSL)
   5: session (RPC)
   4: transport (TCP, UDP)
   3: network (IP)
   2: data link (MAC)
   1: physical (PHY)

physical media
   capacity
      bandwidth * log_2 (signal/noise)
   wired
      single-ended, differential, powerline
      open collector, open drain
      transmission (pass) gate, tri-state
      transmission line
      waveguide
      SONET optical fiber
   wireless
      RF
         FCC Part 15 ISM
         802.11 Wi-Fi sensing
         802.15 ZigBee 6LoWPAN
         Bluetooth BLE GATT GAP UUID Services app stack
      optical
         transmitter receiver LiFi RGB
      acoustic

modulation
   PCM: Pulse-Code Modulation
   PPM: Pulse-Position Modulation
   OOK: On-Off Keying
   FSK: Frequency-Shift Keying
   BPSK: Binary Phase-Shift Keying
   QAM: Quadrature Amplitude Modulation
   OFDM: Orthogonal Frequency-Division Multiplexing
   FHSS: Frequency-Hopping Spread Spectrum
   DSSS: Direct-Sequence Spread Spectrum
   UWB:  Ultra-WideBand

channel sharing
   ALOHA
   Master-Secondary
   Token Ring
   TDMA: Time-Division Multiple Access
   FDMA: Frequency-Divsion Multiple Access
   CSMA: Carrier-Sense Multiple Access
      CD: Collision Detection
      CA: Collision Avoidance
      1-persistent: transmit when clear
      nonpersistent: random backoff
      p-persistent: probability to transmit
   CDMA: Code-Division Multiple Access
   MIMO: Multiple-Input Multiple-Output
   "PDMA": Physical-Division Multiple Access

errors
   detection, correction
   block, convolution codes
   parity, checksum, Hamming, Reed-Solomon, Turbo

networking
   Internet protocols
      RFCs example example
      IPv4, IPv6
         unrouted, routed, unicast, multicast, broadcast addresses
      DNS DHCP NAT PAT private
      UDP, TCP
      HTTP
      BGP AODV ROLL
      sockets
         udpsnd.js udprcv.js video
         udpsnd.py udprcv.py
         udpsnd.c udprcv.c
         WebSockets
      Wireshark
      SLIP
         slattach route
         hello.bus.45.SLIP.c makefile udp_slip.py video
      IoT, event
   APA

assignment
   individual assignment:
      design, build, and connect wired or wireless node(s)
      with network or bus addresses and local input &/or
      output device(s)
   group assignment:
      send a message between two projects