TECHKRITI LECTURE SERIES Communication BY: Ashutosh Kumar COMMUNICATION SCOPE OF COMMUNICATION Telephones and Cell Phones SCOPE OF COMMUNICATION Internet SCOPE OF COMMUNICATION Wireless networks SCOPE OF COMMUNICATION Satellite Networks ESSENTIALS OF COMMUNICATION Communication Link Sender Data Receiver But this simple model requires many guarantees. GUARANTEES IN COMMUNICATIONS The communication link exists. The communication link is sound. The sender and receiver are the correct nodes. The sender is sending the correct data. The receiver is able to correctly interpret the incoming data. PROTOCOLS IN COMMUNICATION The standard rules that defines the parameters of communications and ensures these guarantees are called protocol. ADVANTAGES OF PROTOCOLS Standardized, so interoperability is ensured. Usually include error-detection and errorcorrection mechanisms. Are available as implemented chips that can be directly used. TYPES OF PROTOCOLS There are different ways of categorizing protocols First Categorization : Serial Mode Transfer Parallel Mode Transfer Second Categorization : Synchronous Mode Transfer Asynchronous Mode Transfer SERIAL AND PARALLEL MODE SENDER PARALLEL MODE SERIAL MODE RECIEVER SERIAL VS PARALLEL MODE Parameter Reliability Speed Power Cost Complexity Range Serial Mode Parallel Mode Reliable Slow Low Low High Long Serialiser/Deserialiser Unreliable Fast High High Low Short SYNCHRONOUS AND ASYNCHRONOUS MODE Pertains to sender-receiver synchronization. Sender sends data at a certain speed. For flexibility, protocols allow for multiple speeds. NEED OF SYNCHRONIZATION T/2 T RECEIVER SENDER 1 1 1 1 1 1 0 0 0 111 000 11 1 000 Suppose Sender sends data with a Time Period of T What if Receiver doesn’t know the speed and assume it to be say T/2 The Data received will be SYNCHRONOUS MODE Sender sends a clock signal along with data at every rising / falling edge of the clock, the data value is read by the receiver. SENDER 0 1 0 1 SENDER CLOCK 0 RECIEVER 1 1 0 ASYNCHRONOUS MODE There is no clock signal. The receiver and the sender communicate at a predetermined speed (bauds or bits per second). Baud Rate : Baud Rate is a measurement of transmission speed in asynchronous communication. The devices that allows communication must all agree on a single speed of information 'bits per second'. SYNCHRONOUS VS ASYNCHRONOUS MODE Parameter Reliability Cost Complexity Synchronous Reliable Expensive Complicated Asynchronous Error Prone Inexpensive Simple TRANSMISSION MODES SENDER RECIEVER Simplex Only one way transmission takes place TRANSMISSION MODES SENDER RECIEVER Half-Duplex Two way transmission takes place but only one end can communicate at a time TRANSMISSION MODES SENDER RECIEVER Full-Duplex Two way transmission takes place and both end can communicate simultaneously WIRED WIRELESS SERIAL COMMUNICATION POPULAR SERIAL COMMUNICATION STANDARDS RS-232 (using UART) Serial peripheral interface (SPI) System management bus (SMBus) Serial ATA (SATA) UART: Universal asynchronous receiver/transmitter ASYNCHRONOUS SERIAL COMMUNICATION TERMS Start bit—indicates the beginning of the data word Stop bit—indicates the end of the data word Parity bit—added for error detection (optional) Data bits—the actual data to be transmitted Baud rate—the bit rate of the serial port Throughput—actual data transmitted per sec (total bits transmitted-overhead) Example: 115200 baud = 115200 bits/sec If using 8-bit data, 1 start, 1 stop, and no parity bits, the effective throughput is: 115200 * 8 / 10 = 92160 bits/sec ASYNCHRONOUS SERIAL COMMUNICATION Serial communication implies sending data bit by bit over a single wire Asynchronous transmission is easy to implement but less efficient as it requires an extra 2-3 control bits for every 8 data bits. This method is usually used for low volume transmission CONNECTIONS Device1 RX TX GND TX Device2 RX GND ERROR DETECTION •Parity bit is HIGH when number of 1’s in the Data is odd. •Respectively, it is LOW when number of 1’s in the Data is even CODING Two simple commands : putchar(char); sends 8-bit characters through UART getchar(); receives 8-bit characters via UART WHERE TO CODE TRANSMITTER CODE RECIEVER CODE ANY QUESTIONS THIS FAR? WHAT IS A X-BEE XBee is the brand name from Digi International for a family of form factor compatible radio modules. HOW DOES THE XBEE WORK / HOW TO CONTROL IT? Every XBee works as a wireless serial connection (or network) and can be used like a normal COM port. You can easily hook up the XBee to a laptop or an arduino and you can send and receive data over long range. In fact, the only thing you need to do is connect power and connect one wire to the XBee for data receive or data send (or two if you want both). HOW TO CONFIGURE XBEE USING X-CTU? XCTU is a small utility program written by Digi/Maxstream. You can download this utility from the Digi website, www.Digi.com , under Supports/Drivers. Download the latest drivers onto you PC. HOW TO PROGRAM A XBEE Connect the Xbee to the usb wireless module or the breakout board or Xbee Explorer. Connect the board to the PC/laptop. Open X-CTU. And select PC Settings Tab from the Tabs Menu on the top of the page. QUERY 1. Select USB COMM. Port to the value of A-B Cable, display in the Device Manager setting. 2. Set the setting to the values of A-B Cable. 3. Click the Test/Query button 4. If the Com test / Query Modem dialogue appear with an error message: Check if you have set the baud rate, flow control, data bits, parity and stops bits in the dialogue same as the Cable settings. 5. If everything goes well, you will see the dialogue displayed as in step 4 in the picture below. You should take note of the firmware version displayed in the dialogue. This is important for upgrading your firmware later. Then click OK. Now, let's move on to do the configuration on the XBee. 1. Select the Modem Configuration Tab on the Main Tab Menu. 2. Click Read button, if this is your first time running the XCTU software, you will see the Question dialogue appear, and it asks if you want to update the configuration files, which is recommended. 3. If you click Yes button, You will see the Get new versions dialogue pop up 1. Then click the Web/file button. XCTU will start loading all the available firmware to your PC. 2. When XCTU is done with uploading, click the Done button. The Update Summary dialogue will pop up, displaying all the firmware for the XBee module. 3. Click OK. Baud Rate 1. With the Modem Configuration Tab Menu still selected, 2. click the Read button again. You will see all the current settings show up in the display area. 3. Scroll down to find Serial Interfacing folder. 4. Change the baudrate to 57600 bit/s. (This is the prefered value we are using .You can use any value you like.) 5. Click the Write button, (the one next to Read button), to save the setting. PAN ID • To set the PAN ID or Personnal Area Network ID, which is the unique number to assign to XBee so XBee can talk to the right Xbee in the same Network Area. • For example, if you are building a robot, and using only two XBees to communicate to each other, and you may want to avoid others that also using XBees for communication to be in the same Network Area. • You can specify any number from 0000 to FFFF for your PANID. The factory PANID default value is 3332. 1. Still select the Modem Configuration Tab, 2. scroll up to the top of display area, 3. Click at the PAN ID to change the value. 4. Then click the Write button again to save the PAN ID setting to the XBee flash memory. Ready to use • Now, you are set, the XBee modem is ready to use. • If you have another XBee, you can repeat the steps to configure the modem. • You are now ready to move to the next step for upgrading the firmware. • In case, you want to update your XBee firmware without using the XCTU utility program, you can use the Terminal program to do that as well. SPI – SERIAL PERIPHERAL INTERFACE SPI Serial ?? Because it works on serial mode of transfer. It is also synchronous and full duplex. Peripheral Interface. Because it has the capability of communicate with many nodes. How?? Let us see. SPI In SPI, the sender and receiver follows a masterslave relationship. There may be multiple nodes in the network. One node is master, the rest are slaves. The communication is always initiated by the master. The slaves can communicate only with the master. How do master selects the slave?? SPI SCHEMATICS: SINGLE SLAVE SPI PINS CLK is generated by Master and is used as the mode is synchronous. MOSI is Master Out Slave In: Data sent by Master to Slave. MISO is Master In Slave Out: Data sent by Slave to Master. S̅S̅ is slave select: Slave communicates with Master only if this pin’s value is set as LOW. SPI SCHEMATICS: SINGLE SLAVE Note one thing, if you use a single slave, you could save yourself a pin by hooking up the SS pin on the slave to GND and the SS on the master to VCC. SPI SCHEMATICS: MULTIPLE SLAVES DATA TRANSFER IN SPI M0 MASTE R MOSI MISO S0 M1 S1 M2 S2 M3 S3 M4 S4 M5 S5 M6 S6 M7 S7 SLAVE DATA TRANSFER IN SPI M1 MASTE R MOSI MISO S1 M2 S2 M3 S3 M4 S4 M5 S5 M6 S6 M7 S7 S0 M0 SLAVE DATA TRANSFER IN SPI M2 MASTE R MOSI MISO S2 M3 S3 M4 S4 M5 S5 M6 S6 M7 S7 S0 M0 S1 M1 SLAVE DATA TRANSFER IN SPI S0 MASTE R MOSI MISO M0 S1 M1 S2 M2 S3 M3 S4 M4 S5 M5 S6 M6 S7 M7 SLAVE SPI IN ATMEGA 8 SPI CODING SIMPLE SPI CODE char data = SPITransmit(‘a’); In case of master, the data is written on the register and send to the slave. In case of slave the data is written on the register and it waits for the master to transmit the data, when it also transmits its own data. MASTER CODE DDRB = 0b10110000; // configure SPI Master Pins ISR(INT0_vect) { // External Interrupt 0 data = SPITransmit(0x01); // when switch is pushed // send data } SLAVE CODE DDRB = 0b10000000; // configure SPI Slave Pins ISR(SPI_STC_vect) { // SPI Transceiver Interrupt data = SPDR ; // read the data if(data == 0x01){ PORTA = ~PORTA; // if data is correct toggle Led } } ANY QUESTIONS LEFT? CONTACT DETAILS Ashutosh Kumar ashukr@iitk.ac.in 261,hall-III 9005907695