در آستانه انقلاب صنعتی چهارم
نویسنده : روابط عمومی پانا
تاریخ :2018/09/16
تعداد دیده شدن : 1104

در آستانه انقلاب صنعتی چهارم

 

در آستانه انقلاب صنعتی چهارم: IOT

(قسمت اول)

نویسنده : اکبر فردی

(این مقاله متعلق به شرکت پیش تازان فن آور پانا می باشد.)

 

مقدمه

طی سال هایی که بشر بر روی زمین زندگی کرده، در اعصار و ادوار مختلف دید و تفکر متفاوتی به دنیای پیرامون خود داشته است، از دوران اولیه که آرام آرام محیط اطراف خود را شناخت تا روزی که مکاتب مختلف تفکرات خود را در قالب نظریه های علمی منتشر کرد. این رشد و تکاپو همیشه پیشرفت هایی را به دنبال داشته است که برخی به قدری بزرگ و عظیم بوده اند که عصر جدیدی را در پیش روی بشر به وجود آورده اند.

عصر کامپیوتر و فناوری اطلاعات با ظهور کامپیوتر ها شروع شد و با اینترنت به اوج رسید. اما این پایان راه نبود. قصه ی پیشرفت بشر همیشه همین گونه بوده است که سوالی ایجاد می شود و گروهی در پی یافتن پاسخ تلاش می کنند و نهایتا به دو چیز دست پیدا می کند: اولی پاسخ سوال و راه حل مشکل است و دومی جهلی والاتر و سوالی بزرگتر، که در این سال ها این سوال بزرگتر و جهل والاتر همیشه پیشران پیشرفت بشری بوده است. امروز با پدیده ای به نام اینترنت اشیا روبه رو هستیم .

 

 

در این نوشتار هدف آشنایی با مفهوم IOT است. به علاوه سعی داریم چرایی اهمیت این بحث را از جوانب مختلف بررسی کنیم. همچنین دو پروژه عملی را نیز مرحله به مرحله انجام دهیم تا با فضای برنامه نویسی و کاری حوزه IOT   ملموس تر آشنا شویم.اما آنچه که به عنوان هدف اصلی این نوشته نوشته دنبال می شود این است که به مفهوم پایداری و اعتماد پذیری به سیستم های هوشمند. از طرف دیگر هدف نیز از ایجاد سیستم های کنترلی، سخت افزارهای هوشمندساز ،نرم افزار ها و اکوسیستم های مرتبط رسیدن به یک چرخه پویا است که بتواند در شرایط مختلف ، با امکان وقوع رویداد های متنوع همچنان به کار خود ادامه دهد.

 

 

اینترنت اشیا : IOT

به لحاظ فنی با مسئله جدیدی رو به رو نیستیم، چرا که مفاهیم مربوط به این حوزه که علاوه بر کامپیوترها، اشیا هم بتوانند به همدیگر متصل شوند، در دهه نود میلادی مطرح شده است. با یک نگاه کوتاه در میان استانداردها می توان به راحتی رد پای اینترنت اشیا را مشاهده کرد. اما در طول این سال ها به دلیل این که فناوری و تکنولوژی لازم برای پیاده سازی این مفهوم وجود نداشته، این طرح سال ها روی کاغذ مانده است. به لطف پیشرفت صنعت کامپیوتر در حوزه های نرم افزار و سخت افزار و بستر های شبکه ای اکنون به راحتی می توان پروتکل ها و معماری های مختلف اینترنت اشیا را پیاده سازی کرد. این بستر مطلوب این روزها به پیشرفت و محبوبیت این حوزه افزوده است، به طوری که هم اکنون تعداد وسایل متصل به هم بیشتر از تعداد آدم های روی کره زمین است. این افزونی، بازار اقتصادی بسیار مطلوبی را فراهم آورده است. اهمیت این بازار دو صد چندان می شود وقتی که رد پای اینترنت اشیا را در حوزه های مختلف صنعتی، شهری، پزشکی، هنری و منازل مسکونی مشاهده می کنیم و به جرات می توان گفت که با انقلابی بزرگتر از اینترنت مواجه هستیم. این ادعا تنها به دلیل ورود وسایل دیگر به جز کامپیوترها و موبایل ها به دنیای اینترنت نیست. در واقع IOT راهی برای پیاده سازی مباحثی مثل هوش مصنوعی و یادگیری ماشین نیز است.

 

 

به شیوه برنامه نویسان

قشر برنامه نویس و توسعه دهنده همیشه از تکنولوژی های نو استقبال کرده است. این انعطاف پذیری در پذیرش تنوعات همیشه نیازمند به روز بودن و آگاهی از نحوه کارکرد تکنولوژی هایی است که با سرعت بسیار زیادی عرضه می شوند. فضای کاری اینترنت چیزها نیز از این قاعده مستثنی نیست. البته شاید برخی افراد بگویند که نهایتا به هر حال برنامه نویسی هستیم؛ بله این درست است اما فضا حال و هوای متفاوتی دارد. در این بخش به تشریح و پیاده سازی دو ساختار بسیار ساده می پردازیم. نمونه اول یک ساختار سنسور PIR به همراه یک سروو موتور است که تحت بُرد رَزبری پای کنترل خواهد شد. نمونه دوم هم پیاده سازی یک سنسور دما و رطوبت در کنار یک فن خنک کننده است. این دو مرحله به ما کمک خواهد کرد تا دید واضح تری از چیزهای متصل داشته باشیم و به درک بهتری از جریان اطلاعات در سیستم ها برسیم. همچنین با نحوه آرایش و معماری یک سیستم مبتنی بر اینترنت اشیا هم آشنا شویم.

 

سنسور تشخیص حرکت + سروو موتور

قطعاتی که برای این مرحله نیاز داریم به شرح زیر است:

•           برد رزبری پای

•           برد برد

•           ماژول سنسور  PIR

•           سروو موتور

•           سیم جامپر

 

معماری

ساختار پیاده سازی مدل اول چیزی شبیه تصویر زیر است. برد رزبری پای بعد از نصب شدن سیستم عامل آماده برنامه نویسی است. می توانیم با استفاده از نرم افزار های putty و vncserver در بستر وای فای به دسکتاپ رزبری پای دسترسی پیدا کنیم. این راه این مزیت را دارد که بدون نیاز به نمایشگر اضافی میتوان به رزبری پای متصل شد.

در این پروژه ما از سروو موتورSG5010  استفاده کرده ایم .(شما می توانید از مدل های دیگر استفاده کنید). این موتور دارای 3 سیم است، دو سیم برای ولتاژ و اتصال به زمین و سیم سوم برای دریافت دستور از پین.

سنسور PIR نیز ساختاری مشابه دارد. با این تفاوت که سیم سوم سنسور برای دریافت داده است.

 

 

برای کدنویسی سیستم ابتدا باید بدانیم که نهایتا سیستم برای ما چه کار خواهد کرد. در واقع ما نیاز داریم که سنسور PIR در صورت تشخیص حرکت موتور 180 درجه باز و بسته کند. کدنویسی این روند به زبان پایتون به شکل زیر خواهد بود.

1. import RPi.GPIO as GPIO 

2. import time

3. GPIO.setmode(GPIO.BOARD)

4. pirpin = 37

5. ledpin = 36

6. servoPIN = 11

7.        

8. GPIO.setmode(GPIO.BOARD)

9. GPIO.setup(servoPIN, GPIO.OUT)

10. GPIO.setup(pirpin, GPIO.IN)

11. GPIO.setup(ledpin, GPIO.OUT)

12.      

13. p = GPIO.PWM(servoPIN, 50)# GPIO 11 

14. for PWM with 50 Hz

15. p.start(2.5)# Initialization

16. angle1 = 10 duty1 = float(angle1) / 10 + 2.5

17. angle2 = 160

18. duty2 = float(angle2) / 10 + 2.5

19.      

20. def blink():

21. p.ChangeDutyCycle(duty2)

22. time.sleep(0.2)

23. GPIO.output(ledpin, True)

24. time.sleep(0.2)

25. GPIO.output(ledpin, False)

26.  time.sleep(0.2)

27. GPIO.output(ledpin, True)

28. time.sleep(0.2)

29. GPIO.output(ledpin, False)

30. time.sleep(0.2)

31.      

32. def off():

33. p.ChangeDutyCycle(duty1)

34. time.sleep(0.8)

35. GPIO.output(ledpin, False)

36.      

37. while True:

38. if GPIO.input(pirpin) == False:

39. off()

40. print("data not recived")

41.      

42. if GPIO.input(pirpin) == True:

43. print("reciving data ...")

44. blink()

45.      

برای ایجاد رابط کاربری و کنترل برد می توانید از اپلیکیشن cayenne استفاده کنید. این نرم افزار به راحتی با وای فای به رزبری پای متصل می شود و می توانید به صورتی گرافیکی و بدون نیاز به کدنویسی رابط کاربری سیستم هوشمند خود را ایجاد نمایید.

 

 

سنسور تشخیص دما + فن خنک کننده

قطعات مورد نیاز برای این پروژه به شرح زیر است:

•           برد آردئینو

•           برِد برد(Bread Board)

•           سنسور دما و رطوبت

•           فن کیس

•           سیم جامپر

 

معماری

در این ساختار هدف دریافت اطلاعات از سنسور دما است. سپس سعی داریم برنامه ای بنویسیم که در صورت عبور دما از یک مقدار مشخص فن را روشن کند. برای شروع کار کافیست برد آردئینو را به کامپیوتر متصل کنیم و بعد همه چیز آماده کد زدن است. کد برنامه مشابه شکل زیر خواهد بود.

 

1. #include < OneWire.h >

2. int fanPin = 12; // DS18S20 Temperature chip i/o 

3. OneWire ds(2); // on pin 2 

4. void setup(void) { // initialize inputs/outputs // start serial port at baud rate of 9600 

5. pinMode(fanPin, OUTPUT); 

6. Serial.begin(9600); 

7. } 

8. void loop(void) { //For conversion of raw data to C 

9. int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract; 

10. byte i; 

11.byte present = 0; 

12. byte data[12]; 

13. byte addr[8]; //Find all devices connected on oneWire Bus 

14. if (!ds.search(addr)) { 

15. Serial.print("No more addresses.\n"); 

16. ds.reset_search(); 

17. return; 

18. } 

19. Serial.print("R="); 

20. for (i = 0; i < 8; i++) { 

21. Serial.print(addr[i], HEX); 

22.  Serial.print(" "); 

23. } 

24. if (OneWire::crc8(addr, 7) != addr[7]) { 

25. Serial.print("CRC is not valid!\n"); 

26. return; 

27. } 

28. if (addr[0] == 0x10) { 

29. Serial.print("Device is a DS18S20 family device.\n"); 

30. } else if (addr[0] == 0x28) { 

31. Serial.print("Device is a DS18B20 family device.\n"); 

32. } else { 

33. Serial.print("Device family is not recognized: 0x"); 

34. Serial.println(addr[0], HEX); 

35.return; 

36. } 

37. ds.reset(); 

38. ds.select(addr); 

39. ds.write(0x44, 1); // start conversion, with parasite power on at the end 

40. delay(1000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. 

41. present = ds.reset(); 

42. ds.select(addr); 

43. ds.write(0xBE); // Read Scratch pad  

44. Serial.print("P="); 

45. Serial.print(present, HEX); 

46. Serial.print(" "); 

47. for (i = 0; i < 9; i++) { // we need 9 bytes 

48. data[i] = ds.read(); 

49. Serial.print(data[i], HEX); 

50. Serial.print(" "); 

51. } 

52. Serial.print(" CRC="); 

53. Serial.print(OneWire::crc8(data, 8), HEX); 

54. Serial.println(); //Conversion of raw data to C 

55. LowByte = data[0]; 

56. HighByte = data[1]; 

57. TReading = (HighByte << 8) + LowByte; 

58. SignBit = TReading & 0x8000; // test most sig bit 

59. if (SignBit) // negative 

60. { 

61. TReading = (TReading ^ 0xffff) + 1; // 2's comp 

62. } 

63. Tc_100 = (6 * TReading) + TReading / 4; // multiply by (100 * 0.0625) or 6.25 

64. Whole = Tc_100 / 100; // separate off the whole and fractional portions 

65. Fract = Tc_100 % 100; 

66. Serial.print("Temprature:"); 

67. if (SignBit) // If its negative 

68. { 

69. Serial.print("-"); 

70. } 

71. Serial.print(Whole); 

72. Serial.print("."); 

73. if (Fract < 10) { 

74. Serial.print("0"); 

75. } 

76. if (Fract > 29) { 

77. digitalWrite(fanPin, HIGH); 

78. Serial.print("\n"); 

79. Serial.print("fan is working"); 

80. } 

81. Serial.print(Fract); 

82. Serial.print("\n"); 

83. if (Fract > 31) { 

84. digitalWrite(fanPin, HIGH); 

85. Serial.print("fan is working"); 

86. Serial.print("\n"); 

87. } 

88. if (Fract < 29) { 

89. digitalWrite(fanPin, LOW); 

90. Serial.print("fan is off"); 

91. Serial.print("\n"); 

92. } //End conversion to C 

93. } 

 

در ابعاد بزرگتر با ذهنی نقاد

با تشریح و بررسی دو مثال بالا باید توانسته باشید ذهنیت خوبی از اکوسیستم برنامه نویسی و کار IOT به دست آورید. ولی این سوال در اینجا ایجاد می شود که آیا واقعا همه کار همین است؟ پاسخ  منفی است! چرا که ما این سیستم ها را برای ابعاد بزرگتر و شرایط پیچیده تر نیاز داریم. شرایطی که باید در آن مواردی مثلی قطعی برق یا اینترنت و همگام سازی قسمت های هوشمند دیگر با هم مواردی از مسائل دنیای واقعی هستند.

 

 

فرض کنید باغچه ی خانه ای با استفاده از روش های مرسوم هوشمند شده است، و کاربر دستور آغاز آبیاری را به سیستم فرستاده است. در این میان دسترسی کاربر به اینترنت قطع می شود و سیستم آبیاری در حال کارکردن است. ادامه ماجرا به راحتی قابل پیش بینی است: خسارت و خرابکاری و به بار آمدن ضررهای غیر قابل جبران. می توانید مثال را برای موارد خطرناک تر  مثل اجاق گاز یا بخاری و ... نیز تصور کنید.

 

شرایط دنیای واقعی باید در تمامی موارد لحاظ شده و سیستمی کامل را ارائه دهد تا بتوان محیط را به کنترل درآورد. در مواردی می توان با برنامه نویسی شرایطی را برای موارد مختلف تعیین کرد که در صورت بروز مشکلی پیش نیاید. اما در مواردی تعداد این شرایط به قدری زیاد می شود که بایستی واحدی در سیستم تعبیه شود که بر عملکرد قسمت های مختلف نظارت داشته باشد. این کار علاوه بر کاهش خطرات احتمالی و افزایش اطمینان به سیستم باعث افزایش سطح هوشمندی نیز می شود.

 

 

بیایید داستان را از ابتدا مرور کنیم. هدف ما اتصال سنسورها و قطعات و ابزار مختلف در دنیای اطرافمان بود. این کار به اتوماسیون بیشتر کارها کمک میکرد و ما در انجام دادن کارها راحت تر می شدیم. در مواردی از کار به این مسئله رسیدیم که اتصال همه چیز به هم راه حل کافی نیست. ما به سطحی از هوشمندی در سیستم نیازمندیم که بتواند در شرایط تعیین شده ای سیستم را اداره کند. نهایتا به دلیل اهمیت و حجم بالای این کار کنترلی، نیاز به واحد جداگانه ای را در سیستم احساس کردیم. خب حال پاسخ این نیاز چیست؟ QNAP Qboat Sunny راه حل بهینه و معقولی به نظر می رسد.

این برد در دنیای سخت افزارها در دسته مینی سرور ها قرار می گیرد. کارکرد سرورها به این شکل است که در یک شبکه می توانند پیغام ها و درخواست ها و دستورهای کلاینت های حاضر در شبکه را مدیریت کنند. همچنین خود سرورها قابلیت اجرای برنامه هایی روی کلاینت ها را دارند. این کاربردها به نقش مهم و ضروری یک سرور و یا مینی سرور در مدیریت جریان داده در سیستم اشاره دارد.

 

 

معماری هایی که قبلا بررسی کردیم فاقد بخش ناظر و مدیریت کننده بود. اما با اضافه کردن Qboat sunny به سیستم می توان خود سیستم هوشمند را هوشمندتر کرد. برای مثال در نمونه حوادث ذکر شده در قسمت های قبلی سیستم مینی سرور مرکزی در هنگام بروز حالت نامطلوب مدیریت را در دست میگیرد. این کار علاوه بر رفع خطر و ناهنجاری از واحد حادثه دیده، سایر قسمت های سیستم را نیز در صورت لزوم با شرایط منطبق می سازد. برای مثال فرض کنید پردازش در قسمتی از خانه افزایش یافته است و در قسمت دیگر پردازنده ای بدون پردازش مانده است. این جاست کهQboat sunny  وارد عمل میشود و پردازش ها را در سیستم ها تقسیم میکند تا علاوه بر افزایش سرعت پردازش، نهایت استفاده بهینه از سیستم نیز محقق شود.

 

 

نتیجه گیری

سیستم های هوشمند و مبتنی بر اینترنت اشیا با وجود کارایی بالا بایستی در یک محیط پایدار و پویا پیاده سازی شوند تا انعطاف پذیری لازم برای پاسخگویی در شرایط مختلف را داشته باشند.

در این نوشته با اکوسیستم کاری IOT آشنا شدیم و مشکلات و نواقص معماری های حاضر را بررسی کردیم، و نهایتا به یک پاسخ هوشمندانه برای رفع نقص رسیدیم. Qnap qBoat Sunny یک مینی سرور قدرتمند و پاسخی برای نیازهای امروز در حوزه  IOT است.

 

 

در این نوشته به معرفی اولیه این بُرد پرداختیم. به علت کثرت ویژگی ها و کارکردهای زیاد  Qboat Sunny ادامه بررسی آن را در قسمت دوم دنبال خواهیم کرد. چرا که بررسی عمیق تر و دقیق تر این سخت افزار راه حل های بیشتری را برای ما به ارمغان می آورد.

 

MYMDsLoading
X
Close
MYMDsLoading