Summer Internship 2016

Week 3 (June 20 - June 26)

Day 13

Common lecture

Prof. Gadre brought up the concept of polling vs. interrupt. The difference between polling and interrupt is whether the software asks, or the hardware tells it. Participants were engaged in an activity of implementing both the methods in a multimeter with a seven –segment based display. Next, more emphasis was laid on the concept of interrupt. The different types of interrupts, being maskable or non-maskable and vectored or non-vectored, the executional differences between a normal and an interrupt subroutine were discussed.

Next, the differences between a macro and a subroutine were highlighted and the advantages of one over the other discussed. Also, the concept of blocking and non-blocking subroutines were introduced which concluded the morning session.

Track A-MSP430

During the afternoon session, the participants actively implemented the concept of interrupt using their launch pads and CCS .The interrupt was provided using the on-board switch and its occurrence toggled the state of the on-board LED.

The various maskable and non maskable interrupts present in MSP430 were discussed. The various registers involved in the process were unravelled. The concept of vectored and non-vectored interrupt was also revisited.

The session ended with a brief introduction of the clock module and its various available sources in MSP430.

Track B-BeagleBone

Post lunch session started with the doubts of participants being cleared by Nikhilesh Prasannakumar (senior mentor at TICEPD and Training and Research Faculty at NSIT). Thereafter, everyone’s BBB was updated and rectified so that no further technical issues be generated. The session concluded with him explaining the basics of networks, IPs, routers, switches etc.

Day 14

Common lecture

The day began with Prof. Gadre discussing numerous project ideas with the participants. The projects had varied applications and affected the environment differently .Few of them involved user interactive games while others dealt with solving issues of the society at large. Few of them also aimed at improving the existing teaching standards.

Next in queue was an elaborate discussion upon how to choose an apt microcontroller for a particular application. The key factors to be considered included power supply, maximum frequency of available modules, functionalities available and number of GPIO pins. The optimal frequency ranges, Nyquist criterion and its relation to dynamic power dissipation were discussed.

Track A-MSP430

In the afternoon lecture, the various clock sources and the timer module were discussed. The idea of using a crystal as an external clock was explored. All the registers involved in the timer module were discussed in great detail. Also the participants implemented the concept of pulse width modulation using the available timer module on their launchpads which concluded the day.

Track B-BeagleBone

First hour of the session was dedicated to the revision of the basic concepts and programming of the BeagleBone in Python. The issues faced by the students were immediately entertained by their respective mentors.

This was followed by an introduction to the Internet of Things (IoT). Thingspeak platform was introduced which allows users to create channels and fields to upload data on the internet and even obtain a graphical representation of the same. Related functions in Python were discussed to upload data from the BeagleBone and get the response from the server.

Day 15

Common lecture

Prof. Gadre showed a microcontroller based circuit having three controls to change the intensity of an RGB led. Participants were taught how to actually provide the Roti, Kapda, Makaan and Internet in their final PCB. The power supply, reset pin and clock connections were shown. The connections required to program the microcontroller using the JTAG (Joint Test Action Group) were also laid emphasis on. This exercise of understanding a simple circuit took the participants a step closer to their projects. The PWM signal generation to change the intensity, the use of transistors for higher current capabilities, coarse and fine adjustment of the potentiometer, gave the participants a great insight into circuit designing! This further led to a discussion over the project ideas of the participants.

Track A-MSP430

The participants started with the code for toggling the LED after every sec with the help of a timer, which was introduced in the previous lecture.

The lecture then proceeded with ADCs. MSP430G2553 has a 10 bit ADC. The various features of this ADC were discussed. The very concept of the analog to digital conversion, the appropriate sampling rate, the time required for the controller to produce the corresponding digital value, the various input channels of ADCs and the Sample and Hold Circuitry of the ADC were covered in detail. Successive Approximation ADC was also explained.

Abhishek Kapoor during MSP430 lectures

Abhishek Kapoor guiding the students with the ADC code

Track B-BeagleBone

The session was mainly dedicated to resolution of doubts from previous lectures and discussion of project ideas that the participants had. All participants shared their design ideas (which they were supposed to implement in the coming week) with their mentors. Some of the projects discussed were:

  1. BBB-based Serial Terminal Server
  2. BBB-based door opening system
  3. Automatic plant watering system

Day 16

Common lecture

Day 16 of the workshop began with introduction to communication protocols. The protocols can be broadly classified into serial or parallel, wired or wireless, inter or intradevice, synchronous or asynchronous. The three important physical communication interfaces stressed upon were UART, I2C and SPI. UART is the oldest and most commonly used asynchronous serial communication protocol. Serial protocols RS232, RS422 and RS485, which are based on UART, were further discussed in detail followed by the introduction of PRNG (Pseudo Random Number Generator). It was seen that random number can be generated using LFSR (Linear Feedback Shift Register) or using the noise produced by electrical components like resistors and diodes by using them as ADC inputs.

Track A-MSP430

Coding part of MSP430 continued and participants were given the all in one peripheral motherboard called “The Voyager”. A group of two people were given a board to work upon. The participants used the required input or output devices present in the board to directly make connections to their launch pads using connecting wires. The first activity involved using the ADC input from an LDR and displaying the intensity of light in the form of a bar graph on the 12 charlieplexed LEDs. The session concluded with the introduction of implementation of UART protocol.

VOYAGER-Peripheral interfacing experimenter board The VOYAGER is a starter kit for all the embedded enthusiasts who wish to interface a vast multitude of hardware components with their microcontroller, giving it the stature of a motherboard. It has been designed at CEDT, NSIT. All commonly used devices like LCD, 4 digit seven-segment display, shift registers, RTC, LDR etc. are provided on a single board which are simple to connect and use. The best thing about this board is that it can be used with any microcontroller that works on 5V or 3.3V.It is an easy-to-use handy product which requires to be uploaded with the desired code and you are good to go!

Track B-BeagleBone

The session started with discussing the problems faced by the students in compiling and executing programmes on the BeagleBone. The reasons for the error messages were talked upon in detail, which gave a better insight into the working of the BBB and its operating system. This was followed by an introduction to the sys and signal libraries which are required to set the configuration of the BBIO pins to default. Device tree generator, which allows users to create files setting up the required pin configuration, was discussed briefly. Various other commands for further exploration and functionality control were discussed.

Day 17

Common lecture

The common lecture began with a discussion on how to program the target IC in our project. Then, Prof. Gadre went on to elaborate upon the basic electronics components like Resistors, Capacitors and Inductors. The double sided PCB fabrication was also talked about. Later, the principle behind the Temperature Compensated Crystal Oscillator being used to improve the stability of RTC was explained. The tear down of a fit bit clone, and a discussion on the processing techniques of the old vs. modern microcontrollers followed next.

Resistor Capacitor Integrated Circuits

Post tea break, he went on to discuss the significance of independent Digital and Analog Vcc pins in the ICs.The reason behind connecting the capacitor between the Vcc and Gnd pins of the IC was explored in great detail. The impact of wrongly placing the capacitor and laying the tracks in the board layout was also explained. This ensured that the participants would be careful enough while making their project. The session ended with a brief introduction to Programmable Logic Devices. The applications and classification of PLDs were discussed briefly.

Track A-MSP430

The session was dedicated to communicating using UART protocol. A code which took input from the keyboard and displayed the data received by the microcontroller on Putty was explained and implemented. A lecture on interfacing LCD was planned for the next day.

Track B-BeagleBone

The emphasis was on project-specific doubts of all the participants. Once the participants were confident about the various aspects of their respective projects, after having exhaustive discussions with their mentors, they started working on it with full enthusiasm.

Day 18

Track A-MSP430

The lecture headed by Abhishek Kapoor, was about interfacing the LCD with MSP430G2553. Firstly, the data sheet of LCD was thoroughly discussed and the important features were highlighted. After the tea break everybody dwelled into the coding part of the LCD that was implemented using two methods: using _busyflag and using_delay.

The code was explained and later implemented.