Communications How to get something to almost talk to something else Raffi Krikorian MAS.863 1 December 2003 Getting stuff from A to B • Over wires – Traces on a PCB, wire from peripheral to computer… • Over the air – Optical pules, radio waves… • Inter-media – Putting it all together Over wires Wiring two PICs together (v1.0) • Parallel connection • As many wires as “simultaneous” bits • To transmit a 0xF, bring the lower four wires high, & the rest low Wiring two PICs together (v2.0) • Serial connection • Using minimal number of wires to transmit “in time” • To transmit 0xF (low bit first), send high for 4 time units, then 4 low Parallel vs. Serial • Really fast • Usage of large numbers of pins – Requires bigger ICs • Large number of wires/traces – Space requirements on board (imagine modella) – Large bundle of wires if off board • Minimum number of pins (1 to 3) and wires • Requires inter-device agreements and synchronization – Speed (baud rate) – Bit framing • Requires extra software or hardware (USART) Synchronous Serial • Clock on one wire, and synchronized data on other • Usually used to connect microcontrollers/processors to peripherals • SPI (Serial Peripheral Interface) -- 1 wire for each dir + 1 clock wire • I2C (Inter IC) -- 1 wire for bidirectional data (direction is handled by protocol) + 1 clock wire Asynchronous Serial • Remove the clock wire • Need way to synchronize clocks due to clock drift – Agree on a speed – Use start bit to start running clocks – Transmit/Receive data – Stop clocks Asynchronous Serial Framing • Agree on how the bytes/bits are to be sent • 8N1 : 8 data bits, no parity bit, 1 stop bit – Parity bits are the check against error – Stop bit indicate how long the line has to be quiet between bytes • Transmit least significant bit (LSB) first – Above transmitting b’11010110’ Serial standards and ICs • RS-232 – – – – MAX202 (pref. 203) 12V levels 15m max cable length P2P between devices • RS-485 – – – – LTC1481 5V differential signals Kms max cable length Can be used as multidrop between devices Serial from the IC • Hardware USART good – PIC16F876 has it built in • Can use external peripheral – and use some other wired communication from microcontroller/processor to peripheral) • “Bit bang” the serial line – Rely on a compiler to do this work USB • • • • Universal Serial Bus 12 Mbit/sec 5m cable length Use http://www.dlpdesign.com/usb/ – Have USB ICs – Premade boards that have a parallel (DLPUSB245M) and serial (DLP-USB232M) interface that convert to USB Over the air Radio • Modulate a carrier frequency with data – AM modulation takes a carrier frequency and plays with its amplitude – FM plays with the instantaneous frequency of the carrier • AM is relatively simple – but most “natural noise” is AM Don’t build a radio! • Get a chip and just send serial data • Nordic VLSI nRF401 – Single chip 433MHz – 200 kbps @ 100 meters • Texas Instruments TRF6900 – Mostly single chip 900MHz – 38.4 kbps @ 100 meters • rfPIC Microcontrollers – PIC with built in FM transmitters Infra-red • Use IR transmitter (diode) and IR receiver (photoresistor) • Hook it up like a LED and just turn it on and off • Problems with surrounding noise and base illumination levels Don’t rebuild IrDA! • Unless you are doing something really simple – Hook IR transceiver to a USART • MAX3120 – Single chip IRDA modulator : hook one end to USART other end to IR transceiver – 115 kbps @ 1 m 802.11b • Wireless LAN – 2.4 GHz – Internet Protocol based radio – 11 Mbit/sec @ 30 m • Spoof a PCMCIA bus and just wire yourself into a Orinoco Gold card – Saves you from having to get the analogs right • IOSoft 802.11b development kit for the PIC – http://www.iosoft.co.uk/wlan2.php Inter-media Internet Protocol • Unreliable packet based protocol • IPv4 = RFC791 • Addressing – IPv4 addresses are 4 bytes wide – Obtain address either statically or via DHCP – Not necessarily globally unique due to NAT (waiting for IPv6) • Routing IPv4 packet • The beginning of every IP packet starts with 20 bytes of this header (the options and the padding are optional) • “Data” immediately precedes this header User Datagram Protocol (RFC768) • Unreliable packet layer on top of IP • UDP allows for fast access to send packets – Packets are small – Packets are “one-offs”, you send the bytes and are done • No flow control, no congestion control, no guarantees • Trivial as an implementation Transmission Control Protocol (RFC793) • Creates a virtual “stream” on top of the Internet – Reliable, in-order packets – Uses bandwidth responsibly • Non-trivial for implementation • Still areas of research to make it efficient, determine whether it is a “stable” system Using IP • Using IP protocols • Serial line (over RS-232 or RS-485) or simple radio – Probably the best and easiest bet – SLIP (RFC1055) as packet framing or, – PPP (RFC 1661) as a control protocol • Ethernet (CS8900) and 802.11 – Need to implement ARP (RFC826)