Introduction

या आठवड्याच्या असाइनमेंटमध्ये मी Embedded System मधील Networking आणि Communication यांची मूलभूत माहिती शिकलो. Microcontroller, Sensor आणि Actuator यांसारखी उपकरणे UART, I²C, SPI, Wi-Fi आणि Bluetooth यांसारख्या Wired आणि Wireless Communication पद्धती वापरून एकमेकांशी Data कसा पाठवतात आणि घेतात हे मला समजले. यामुळे IoT (Internet of Things) मध्ये जोडलेली उपकरणे एकमेकांशी कशी Communication करतात, Data Monitoring कसे करतात आणि विविध कामे Automatically कशी करतात याची मला चांगली समज मिळाली.

Group assignment

Task:

Network Use करून वायर्ड किंवा वायरलेस नोड (डिव्हाइस) तयार करणे आणि त्याला इनपुट व आउटपुट उपकरणांशी जोडणे.

Networking and communications

Networking and Communication

Networking आणि Communication मुळे इलेक्ट्रॉनिक उपकरणे एकमेकांशी Data शेअर करू शकतात. Microcontroller, Sensor आणि PCB यांसारखी उपकरणे Wired किंवा Wireless पद्धतीने जोडली जातात.

UART, Wi-Fi आणि Bluetooth यांसारख्या तंत्रज्ञानाद्वारे Data पाठवला आणि घेतला जातो. त्यामुळे Real-time Monitoring, Remote Control आणि Automation शक्य होते. हे शिकल्यामुळे IoT मधील उपकरणे एकमेकांशी कशी काम करतात याची मला चांगली समज मिळाली.

Embedded Networking

Embedded Networking म्हणजे Embedded Devices (Microcontroller, Sensor, Actuator) यांच्यामधील Communication होय. हे Communication Wired किंवा Wireless पद्धतीने होते. यामुळे Devices एकमेकांना Data पाठवू शकतात, System Monitor करू शकतात आणि Real-Time Control करू शकतात. याचा वापर IoT, Smart Home, Industrial Automation आणि Healthcare मध्ये केला जातो.

Embedded Networking मध्ये Wired आणि Wireless Communication वापरले जाते. Wired Communication साठी UART, I²C आणि SPI वापरले जातात. Wireless Communication साठी Wi-Fi आणि Bluetooth वापरले जातात. त्यामुळे अनेक Devices एकमेकांशी जोडले जातात.

Microcontroller, Sensor आणि इतर Embedded Devices हे Communication Protocols वापरून Digital Data ची देवाणघेवाण करतात. हे Protocols Data कसा Send, Receive आणि Process करायचा हे ठरवतात. त्यामुळे सर्व Devices व्यवस्थित आणि विश्वासार्हपणे काम करतात.

मुख्य Communication Protocols:

• UART – TX आणि RX Pins वापरून Serial Communication करते.
• I²C – SDA आणि SCL वापरून एकाच Bus वर अनेक Devices जोडते.
• SPI – MOSI, MISO, SCLK आणि CS Pins वापरून High-Speed Data Transfer करते.

हे Protocols Microcontroller, Sensors, Displays आणि इतर Electronic Components जोडण्यासाठी Embedded Systems मध्ये मोठ्या प्रमाणावर वापरले जातात.

Types of communication:-

  • Wired communication
  • Wireless communication


वायर्ड कम्युनिकेशन (Wired Communication) म्हणजे दोन किंवा अधिक devices मध्ये cable किंवा wire च्या मदतीने data transfer करणे. ही पद्धत fast, reliable आणि secure communication देते तसेच data loss खूप कमी असतो. Embedded Systems मध्ये microcontroller, sensors, display आणि इतर electronic components जोडण्यासाठी याचा मोठ्या प्रमाणावर वापर केला जातो. UART, I²C, SPI, CAN आणि Ethernet हे लोकप्रिय wired communication protocols आहेत. Industrial automation, robotics, automotive systems आणि इतर embedded applications मध्ये स्थिर आणि विश्वासार्ह communication साठी wired communication मोठ्या प्रमाणात वापरले जाते.

Individual assignment

Task :-
वायर्ड (Wired) किंवा वायरलेस (Wireless) नोड तयार करा, तो एकमेकांशी जोडा आणि त्याला इनपुट (Input) किंवा आउटपुट (Output) उपकरणांशी जोडून नेटवर्कद्वारे डेटा पाठवणे व स्वीकारणे.

या असाइनमेंटमध्ये मी दोन PCB बोर्डांमधील कम्युनिकेशन कसे होते हे शिकलो. TX आणि RX पिनचा वापर करून एका बोर्डवरून दुसऱ्या बोर्डवर डेटा कसा पाठवला आणि घेतला जातो हे समजले. तसेच IoT साठी ThingSpeak वर डेटा कसा पाठवायचा याचा प्रयोग केला. त्यामुळे वेगवेगळी उपकरणे एकमेकांशी माहितीची देवाणघेवाण कशी करतात हे मला समजले.

Information about UART, SPI, I2C

UART (Universal Asynchronous Receiver/Transmitter) हा एक Asynchronous Serial Communication Protocol आहे. यामध्ये दोन Data Lines वापरल्या जातात:

UART चा वापर Microcontroller, Sensor, Display आणि इतर Modules यांच्यामधील कमी अंतरावरील Communication साठी केला जातो.


UART (Universal Asynchronous Receiver/Transmitter) हे एक serial communication protocol आहे, जे microcontroller, sensors, computer आणि development boards यांच्यामध्ये data exchange करण्यासाठी वापरले जाते. UART मध्ये data एकावेळी 1 bit प्रमाणे पाठवला जातो आणि यासाठी clock signal ची गरज नसते. त्यामुळे ही पद्धत simple, easy आणि embedded systems मध्ये सर्वाधिक वापरली जाणारी communication method आहे.UART मध्ये दोन communication pins वापरले जातात: TX (Transmit) आणि RX (Receive).

हे full-duplex communication ला support करते, ज्यामुळे devices एकाच वेळी data पाठवू आणि receive करू शकतात.

ही पद्धत simple, reliable आणि implement करणे सोपे आहे.

Applications

मायक्रोकंट्रोलर्समधील Communication: दोन किंवा अधिक मायक्रोकंट्रोलर्स एकमेकांशी जोडण्यासाठी.

Module Connection: GPS, Bluetooth, Wi-Fi आणि GSM Modules मायक्रोकंट्रोलरला जोडण्यासाठी.

Debugging (त्रुटी शोधणे): Arduino IDE मधील Serial Monitor वापरून Code मधील चुका शोधण्यासाठी.

Data Exchange: मायक्रोकंट्रोलर आणि Computer यांच्यामध्ये माहिती पाठवणे किंवा प्राप्त करणे.

2. I²C

I²C (Inter-Integrated Circuit) हे एक Serial Communication Protocol आहे. याचा वापर Microcontroller ला Sensors आणि इतर Integrated Circuits (ICs) यांच्याशी जोडण्यासाठी केला जातो. यात फक्त दोन वायर वापरल्या जातात: SDA (Serial Data) ही Data पाठवण्यासाठी आणि SCL (Serial Clock) ही Data Synchronize करण्यासाठी वापरली जाते. I²C मध्ये Master-Slave पद्धतीने एकाच Communication Bus वर अनेक Devices जोडता येतात. त्यामुळे Embedded Systems मध्ये ही पद्धत सोपी, कमी Wire वापरणारी आणि कार्यक्षम Communication प्रदान करते.

Key Features

  • फक्त 2 वायर वापरल्या जातात: SDA आणि SCL.
  • एकाच बसवर अनेक डिव्हाइस जोडता येतात.
  • मास्टर-स्लेव्ह पद्धतीने डेटा देवाणघेवाण होते.
  • एम्बेडेड सिस्टिम आणि IoT प्रोजेक्टमध्ये मोठ्या प्रमाणात वापरले जाते.

Applications

  • OLED आणि LCD डिस्प्ले
  • तापमान (Temperature) आणि आर्द्रता (Humidity) सेन्सर
  • Real-Time Clock (RTC) मॉड्यूल

SDA (Serial Data Line):

SDA ही I²C Communication मधील डेटा वायर आहे. या वायरद्वारे Master Device (उदा. Microcontroller) आणि Slave Device (उदा. Sensor, Display किंवा Memory Chip) यांच्यामध्ये डेटा पाठवला आणि घेतला जातो. SDA ही SCL सोबत काम करून I²C Bus वर योग्य आणि विश्वासार्ह Communication करते.

SCL (Serial Clock Line):

SCL ही I²C Communication मधील Clock वायर आहे. ही वायर Data Transfer साठी आवश्यक Clock Signal पुरवते, ज्यामुळे Master आणि Slave Device यांच्यातील Communication योग्य वेळी आणि समक्रमित (Synchronized) पद्धतीने होते. Clock Signal नेहमी Master Device तयार करते.

3. SPI (Serial Peripheral Interface)

SPI (Serial Peripheral Interface) हे Serial Communication Protocol आहे. याचा वापर Microcontroller (Master) आणि Slave Devices जसे Sensor, Display, Memory Chip आणि SD Card यांच्यामध्ये Data Transfer करण्यासाठी केला जातो.

SPI मध्ये 4 वायर वापरल्या जातात:

  • MOSI (Master Out Slave In)
  • MISO (Master In Slave Out)
  • SCLK (Serial Clock)
  • SS/CS (Slave Select / Chip Select)

SPI ही Fast आणि Reliable Communication पद्धत आहे. त्यामुळे Embedded Systems मध्ये ज्या ठिकाणी High-Speed Data Transfer आवश्यक असतो, तेथे SPI चा वापर केला जातो.

(Key Features)

  • SPI मध्ये 4 Communication Lines वापरल्या जातात: MOSI, MISO, SCLK आणि CS/SS.
  • High-Speed आणि Full-Duplex Communication करते.
  • Master-Slave पद्धतीने काम करते.
  • UART आणि I²C पेक्षा जास्त वेगवान आहे.

उपयोग (Applications)

  • SD Card मॉड्यूल
  • Flash Memory
  • Sensors आणि Embedded Systems

MISO (Master In Slave Out):
MISO ही SPI Communication मधील Data Line आहे. या वायरद्वारे Slave Device कडून Master Device कडे Data पाठवला जातो. Master ला Data Receive करण्यासाठी MISO वापरली जाते.

MOSI (Master Out Slave In):
MOSI ही SPI Communication मधील Data Line आहे. या वायरद्वारे Master Device कडून Slave Device कडे Data पाठवला जातो. Sensor, Display आणि Memory Chip यांसारख्या Devices ला Data पाठवण्यासाठी MOSI वापरली जाते.

SCLK (Serial Clock):
SCLK ही SPI Communication मधील Clock Line आहे. ही Clock Signal देते, ज्यामुळे Master आणि Slave यांच्यामधील Data योग्य वेळी पाठवला आणि घेतला जातो. Clock Signal नेहमी Master Device तयार करते.

CS/SS (Chip Select / Slave Select):
CS/SS ही SPI Communication मधील Control Line आहे. Master Device कोणत्या Slave Device सोबत Communication करायचे ते CS/SS द्वारे ठरवते. CS/SS LOW असेल तर तो Slave Active होतो आणि Communication सुरू होते. CS/SS HIGH असेल तर तो Slave Inactive राहतो.

Comparison of UART, I²C and SPI

FeatureUARTI²CSPI
Full FormUniversal Asynchronous Receiver/TransmitterInter-Integrated CircuitSerial Peripheral Interface
Communication TypeAsynchronousSynchronousSynchronous
Clock SignalNo external clockUses SCL (Clock)Uses SCLK (Clock)
Number of Wires2 (TX, RX)2 (SDA, SCL)4 (MOSI, MISO, SCLK, CS/SS)
Master/SlaveNo master/slave conceptSupports Master-SlaveSupports Master-Slave
Number of DevicesPoint-to-point (2 devices)Multiple devices on same busMultiple devices using separate CS pins
Data SpeedUp to a few MbpsStandard: 100 kbps, Fast: 400 kbps, High-Speed: 3.4 MbpsCan exceed 10 Mbps (depends on hardware)
Duplex ModeFull DuplexHalf DuplexFull Duplex
AddressingNo addressingUses 7-bit or 10-bit addressesNo addressing; uses Chip Select (CS)
ComplexitySimpleModerateModerate
Hardware CostLowLowHigher (more wires)
Best ForPC communication, Bluetooth, GPS, GSMSensors, EEPROM, RTC, OLED displaysSD cards, TFT displays, ADC/DAC, high-speed sensors

Summary

  • UART: दोन Devices मधील सोपे Communication करण्यासाठी वापरले जाते.
  • I²C: फक्त 2 वायर वापरून अनेक Low-Speed Devices जोडण्यासाठी वापरले जाते.
  • SPI: ज्या ठिकाणी High-Speed Communication आवश्यक असते, तेथे वापरले जाते.

group Assignment

या आठवड्याच्या Group Assignment मध्ये आम्ही दोन Microcontroller Boards मधील Wired आणि Wireless Communication शिकले.

Wireless Communication साठी आम्ही दोन ESP32 Boards वापरले आणि Wi-Fi च्या मदतीने कोणत्याही वायरशिवाय Data Exchange केले.

Wired Communication साठी आम्ही दोन Seeed XIAO ESP32-C3 Boards वापरले आणि Serial Communication Protocols वापरून Data Exchange केले.

या Activity मधून आम्हाला वेगवेगळ्या Communication Methods कशा काम करतात, Embedded Devices एकमेकांशी Data कसा Share करतात आणि IoT व Automation Systems मध्ये Networking कसे वापरले जाते याचा प्रत्यक्ष अनुभव मिळाला.

I used below codes for communication

Sender code

#include <WiFi.h>

const char* ssid = "YOUR_HOTSPOT_NAME";
const char* password = "YOUR_PASSWORD";

const char* serverIP = "192.168.43.100";   // Change to Receiver ESP32 IP

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nConnected");
}

void loop() {
  WiFiClient client;

  if (client.connect(serverIP, 80)) {
    client.println("Hello from ESP32");
    client.stop();
  }

  delay(2000);
}

Receiver code

#include <WiFi.h>

const char* ssid = "YOUR_HOTSPOT_NAME";
const char* password = "YOUR_PASSWORD";

WiFiServer server(80);

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nConnected");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();

  if (client) {
    while (client.connected()) {
      if (client.available()) {
        String msg = client.readStringUntil('\n');
        Serial.print("Received: ");
        Serial.println(msg);
      }
    }
    client.stop();
  }
}

दोन्ही ESP32 Boards मध्ये एकच Wi-Fi SSID आणि Password टाकल्यानंतर, दोन्ही Boards Wi-Fi Network ला यशस्वीपणे Connect झाले. त्यानंतर IP Address च्या मदतीने दोन्ही ESP32 Boards मध्ये Wireless Communication सुरू झाले.


Wireless Communication साठी आम्ही दोन ESP32 Boards वापरले. दोन्ही ESP32 Boards Wi-Fi द्वारे एकमेकांशी जोडले. एका ESP32 ने Sender (Transmitter) म्हणून Data पाठवला, तर दुसऱ्या ESP32 ने Receiver म्हणून तो Data स्वीकारला. या Communication साठी कोणत्याही Physical Wire ची गरज पडली नाही. या प्रयोगातून आम्हाला Wireless Data Exchange, ESP32 Wi-Fi Communication आणि IoT Applications मध्ये दोन Devices एकमेकांशी कसे संवाद साधतात याचा प्रत्यक्ष अनुभव मिळाला.

We also tried wired communication of XIAO ESP32-C3 two boards

दोन XIAO ESP32-C3 Development Boards मध्ये Serial Communication च्या मदतीने Wired Communication केले. पहिल्या Board चा TX (Transmit) Pin दुसऱ्या Board च्या RX (Receive) Pin ला जोडला आणि पहिल्या Board चा RX Pin दुसऱ्या Board च्या TX Pin ला जोडला. त्यामुळे दोन्ही Boards मध्ये Data पाठवणे आणि घेणे शक्य झाले. Transmitter आणि Receiver Programs Upload केल्यानंतर, दोन्ही Boards ने Serial Monitor च्या मदतीने यशस्वीपणे Data Exchange केला.

Communication साठी खालील Codes वापरले.

Board 1

#include <HardwareSerial.h>

HardwareSerial mySerial(1);

void setup() {
  Serial.begin(115200);
  mySerial.begin(9600, SERIAL_8N1, 20, 21);   // RX, TX
  Serial.println("Type a message and press Enter:");
}

void loop() {

  // Send message typed in Serial Monitor
  if (Serial.available()) {
    String msg = Serial.readStringUntil('\n');
    msg.trim();

    mySerial.println(msg);

    Serial.print("You: ");
    Serial.println(msg);
  }

  // Receive reply
  if (mySerial.available()) {
    String reply = mySerial.readStringUntil('\n');
    reply.trim();

    Serial.print("Board2: ");
    Serial.println(reply);
  }
}

Board 2

#include <HardwareSerial.h>

HardwareSerial mySerial(1);

void setup() {
  Serial.begin(115200);
  mySerial.begin(9600, SERIAL_8N1, 20, 21);   // RX, TX
  Serial.println("Ready");
}

void loop() {

  // Receive message
  if (mySerial.available()) {
    String msg = mySerial.readStringUntil('\n');
    msg.trim();

    Serial.print("Board1: ");
    Serial.println(msg);
  }

  // Send reply typed in Serial Monitor
  if (Serial.available()) {
    String reply = Serial.readStringUntil('\n');
    reply.trim();

    mySerial.println(reply);

    Serial.print("You: ");
    Serial.println(reply);
  }
}

Communication Protocol

Communication Protocol म्हणजे अशी नियमांची (Rules) प्रणाली जी Electronic Devices मध्ये Data योग्य आणि सुरक्षितपणे पाठवण्यासाठी वापरली जाते. या नियमांमुळे वेगवेगळ्या कंपन्यांची Devices एकमेकांशी कोणत्याही अडचणीशिवाय Communication करू शकतात.

TCP/IP Protocol

TCP/IP हे Internet मध्ये सर्वाधिक वापरले जाणारे Communication Protocol आहे. हे Data ला लहान Packets मध्ये विभागते, ते Network द्वारे पाठवते आणि Destination वर पुन्हा एकत्र करून योग्य Data Transfer करते.

Other Communication Protocols

  • HTTP – Websites उघडण्यासाठी वापरले जाते.
  • FTP – Files पाठवण्यासाठी आणि Download करण्यासाठी वापरले जाते.
  • SMTP – Emails पाठवण्यासाठी वापरले जाते.

MIT App Inventor म्हणजे काय?

MIT App Inventor हे MIT (Massachusetts Institute of Technology) ने तयार केलेले Free आणि Web-Based Platform आहे. यामध्ये Drag-and-Drop Blocks च्या मदतीने Android Applications तयार करता येतात. या App च्या मदतीने ESP32 सारख्या Devices सोबत Wi-Fi किंवा Bluetooth द्वारे Communication करता येते. त्यामुळे IoT आणि Embedded Systems Projects साठी हे एक सोपे आणि उपयुक्त Tool आहे.

Experience

या प्रयोगातून मला HC-06 Bluetooth Module Arduino सोबत Serial Communication द्वारे कसे काम करते हे समजले. Mobile Phone ला Bluetooth Module सोबत Pair करून Custom Mobile Application च्या मदतीने LED वायरलेस पद्धतीने Control करायला शिकलो. यामुळे Bluetooth आधारित Embedded System Applications बद्दल माझे ज्ञान वाढले.

Control LED using MIT App Inventor

Open MIT App Inventor.

ThingSpeak

ThingSpeak

ThingSpeak – Task

ThingSpeak वापरून IoT आणि Network Communication शिकणे आणि Sensor मधून मिळणारा data Internet वर पाठवून तो online monitor करणे हा मुख्य task होता. ThingSpeak वापरताना Channel, Field, API Key आणि data visualization यांचा वापर केला.

Work

या Individual Assignment मध्ये मी ThingSpeak चा अभ्यास केला. ThingSpeak मध्ये Channel तयार करून Sensor कडून मिळणारा data Internet च्या माध्यमातून Cloud वर पाठवला. Channel मधील Field मध्ये data store केला आणि त्याचा Graph च्या मदतीने online monitoring केला. यामधून IoT, Network Communication, Cloud Data Storage आणि Data Monitoring यांची basic माहिती मिळाली.

ThingSpeak म्हणजे काय?

ThingSpeak हे IoT साठी वापरले जाणारे Internet-based platform आहे. याच्या मदतीने Sensors किंवा Microcontroller कडून मिळालेला data Internet वर पाठवून Cloud मध्ये store आणि monitor करता येतो.

ThingSpeak चा वापर Sensor Data Monitoring, IoT Projects, Data Logging, Graphs आणि Remote Monitoring यासाठी केला जातो.

Simple:

Sensor Data → Microcontroller → Internet → ThingSpeak Cloud → Graph / Monitoring

ThingSpeak Interface

ThingSpeak मध्ये IoT project साठी वेगवेगळे भाग वापरले जातात.

Channel – Sensor चा data store करण्यासाठी.

Fields – वेगवेगळ्या Sensor values store करण्यासाठी.

API Key – Device आणि ThingSpeak यांच्यामध्ये data communication करण्यासाठी.

Charts / Graphs – Sensor data graph स्वरूपात पाहण्यासाठी.

Channel Settings – Channel चे नाव आणि Fields configure करण्यासाठी.

Data – Sensor कडून आलेला data पाहण्यासाठी आणि monitor करण्यासाठी.

ThingSpeak Working Process

सर्वप्रथम ThingSpeak वर account तयार करून नवीन Channel तयार केला.

Channel मध्ये आवश्यक Fields तयार केले.

Microcontroller आणि Sensor यांना connect केले.

Microcontroller मध्ये आवश्यक programming code लिहिला.

Wi-Fi च्या मदतीने Microcontroller ला Internet शी connect केले.

API Key च्या मदतीने Sensor data ThingSpeak Channel वर पाठवला.

ThingSpeak मध्ये आलेला data Field मध्ये store केला.

Stored data Graph च्या स्वरूपात पाहिला.

Sensor value बदलल्यावर ThingSpeak वर नवीन data update झाला.

Program मध्ये error असल्यास Serial Monitor आणि ThingSpeak data तपासून आवश्यक बदल केले.

ThingSpeak Working

ThingSpeak मध्ये सर्वप्रथम Channel तयार करून त्यामध्ये आवश्यक Fields configure केले जातात. Sensor Microcontroller शी जोडला जातो आणि Microcontroller Sensor कडून data घेतो. Wi-Fi च्या मदतीने हा data Internet वर पाठवला जातो. API Key च्या माध्यमातून data ThingSpeak Channel मध्ये update केला जातो. ThingSpeak मध्ये प्राप्त झालेला data Cloud मध्ये store होतो आणि तो Graph किंवा Chart च्या स्वरूपात पाहता येतो. त्यामुळे Sensor data कुठूनही online monitor करता येतो. काही error आल्यास Serial Monitor आणि Channel data तपासून Testing आणि Debugging केले जाते.