1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Điều khiển thiết bị qua internet dùng raspberry PI 2 thông qua wi fi

118 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐIỆN - ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG ĐIỀU KHIỂN THIẾT BỊ QUA INTERNET DÙNG RASPBERRY PI THÔNG QUA WIFI GVHD: ThS NGUYỄN VĂN NGA SVTH: CAO VĂN TIẾN MSSV: 12141228 SVTH: NGUYỄN MINH NGHĨA MSSV: 12141145 SKL004350 Tp Hồ Chí Minh, tháng 07/2016 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ-CÔNG NGHIỆP - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: Điều Khiển Thiết Bị Qua Internet Dùng Raspberry PI Thông Qua Wi-Fi GVHD: ThS.Nguyễn Văn Nga SVTH: Cao Văn Tiến - Nguyễn Minh Nghĩa MSSV: 12141228 - 12141145 Tp Hồ Chí Minh - 7/2016 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ-CÔNG NGHIỆP - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: Điều Khiển Thiết Bị Qua Internet Dùng Raspberry PI Thông Qua Wifi GVHD: ThS.Nguyễn Văn Nga SVTH : Cao Văn Tiến - Nguyễn Minh Nghĩa MSSV: 12141228 - 12141145 Tp Hồ Chí Minh - 7/2016 TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC Tp HCM, ngày tháng năm 2016 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: Cao Văn Tiến Nguyễn Minh Nghĩa Kỹ thuật Điện - Điện tử Đại học quy 2012 I TÊN ĐỀ TÀI: Điều Khiển Thiết Bị Qua Internet Dùng Raspberry PI Thông Qua WiFi II NHIỆM VỤ Các số liệu ban đầu: - Tìm hiểu thơng tin qua mạng Sách “Các giải pháp lập trình C# tổng biên dịch Nguyễn Ngọc Bình Phương – Thái Thanh Phong, Chịu trách nhiệm xuất bản: TS NguyễnXuânThủy ” Arduino Microcontroller: Processing for Everyone! PartI StevenF.Barrett 2010 Arduino Microcontroller: Processing for Everyone!PartII StevenF.Barrett 2010 John Boxall, “Arduino Workshop”, William Pollock, 2013 Massimo Banzi, “Getting Started with Arduino”, O’Reilly Media, 2009 Sách “Thực hành điện tử công suất” tác giả ThS.Hồng Ngọc Văn Nội dung thực hiện: - Tìm hiểu Kit Arduino UNO Kit Raspberry PI với hệ điều hành Win 10 Iot - Viết ứng dụng điều khiển cho Raspberry PI lập trình cho Arduino UNO - Tìm hiểu hệ điều hành Android viết ứng dụng hệ điều hành - Tìm hiểu đặc tính Module Esp8266, cảm biến PIR, cảm biến ánh sáng cảm biến LM35 - Vẽ mạch in kết nối Module lại với III NGÀY GIAO NHIỆM VỤ: IV NGÀY HOÀN THÀNH NHIỆM VỤ: V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Nguyễn Văn Nga CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP LỜI CAM ĐOAN Đề tài tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Cao Văn Tiến - Nguyễn Minh Nghĩa LỜI CẢM ƠN Lời cảm ơn xin gửi tới thầy Nguyễn Văn Nga, thầy bận công việc giảng dạy, thầy đồng ý hướng dẫn đồ án tốt nghiệp cho nhóm chúng em Trong q trình làm đồ án, thầy ln bảo, nhắc nhở để chúng tơi vượt qua khó khăn hồn thành đồ án tiến độ Bên cạnh đó, với lời nhận xét, góp ý thầy giúp chúng tơi có định hướng đắn thực đề tài Chúng xin bày tỏ lòng biết ơn sâu sắc tới quý thầy cô khoa Điện-Điện Tử Quý thầy cô người dạy dỗ, truyền đạt cho từ kiến thức nhất, đồng thời thường xuyên giúp đỡ nhiệt tình chúng tơi có khó khăn vấn đề nghiên cứu đề tài, tạo điều kiện thuận lợi để chúng tơi có mơi trường, điều kiện nghiên cứu tốt Cuối cùng, chúng tơi khơng quên gửi lời cảm ơn sâu sắc tới gia đình, người thân bạn bè nguồn động viên to lớn hỗ trợ mặt tinh thần vật chất để chúng tơi có thêm động lực tự tin để hoàn thành đồ án Xin chân thành cảm ơn! Người thực đề tài Cao Văn Tiến – Nguyễn Minh Nghĩa MỤC LỤC TRANG BÌA i NHIỆM VỤ ĐỒ ÁN ii LỊCH TRÌNH iii CAM ĐOAN iv LỜI CẢM ƠN v MỤC LỤC vi LIỆT KÊ HÌNH VẼ vii LIỆT KÊ BẢNG VẼ viii TÓM TẮT ix CHƯƠNG 1.TỔNG QUAN 1.1 Đặt vấn đề 1.2 Mục tiêu 1.3 Nội dung nghiên cứu 1.4 Giới hạn 1.6 Bố cục CHƯƠNG 2.CƠ SỞ LÝ THUYẾT 2.1Công nghệ không dây Wifi 2.1.1Lịch sử hình thành phát triển Wi-Fi 2.1.2 Khái niệm Wi-Fi 2.1.3Ưu điểm công nghệ Wi-Fi 2.1.4Khuyết điểm công nghệ Wi-Fi 2.1.5 Các tầng giao thức Wi-Fi 2.2 Hệ thống điều hành Android 2.2.1 Khái niệm 2.2.2 Lịch sử phát triển 2.2.3 Các phiên Android 2.2.4 Ưu nhược điểm Android 15 2.2.5 Giới thiệu tảng Android 17 2.2.5.1 Giới hạn thiết bị cầm tay 17 2.2.5.2 Kiến trúc hệ điều hành Android 18 2.2.5.3 Chu kỳ ứng dụng Android 21 2.3 Chuẩn truyền nối tiếp I2C 24 2.3.1 Đặc điểm truyền thông I2C 2.3.2 2.4 Qúa trình truyền nhận hai thiết bị trê Hệ thống phần cứng 2.4.1 Module Esp8266 2.4.2 Kit Arduino 2.4.3 Kit Raspberry PI2 2.4.4 Các cảm biến PIR, LM35, ánh sáng CHƯƠNG 3.TÍNH TỐN VÀ THIẾT KẾ 37 3.1 Giới thiệu 3.2 Tính tốn thiết kế phần cứng 3.2.1 Thiết kế sơ đồ khối hệ thống 3.2.1.1 Yêu cầu hệ thống 3.2.1.2 Sơ đồ khối chức khối 3.2.2 Tính toán thiết kế mạch 3.2.2.1 Khối cảm biến LM35 3.2.2.2 Khối cảm biến PIR 3.2.2.3 Khối cảm biến ánh sáng 3.2.2.4 Khối ngõ công suất 3.2.2.5 Khối nguồn 3.3 Sơ đồ nguyên lý toàn mạch CHƯƠNG THI CÔNG HỆ THỐNG 4.1 Giới thiệu 4.2 Thi công hệ thống 4.2.1 Thi công bo mạch 4.2.2 Lắp ráp kiểm tra 4.3 Đóng gói thi cơng mơ hình 4.3.1 Đóng gói điều khiển 4.3.2 Thi công mô hình 4.4 Lập trình hệ thống 4.4.1 Lưu đồ giải thuật 4.4.2 Phần mềm lập trình cho Arduino UNO 4.4.3 Phần mềm lập trình cho Win 10 Iot core 4.4.4 Phần mềm lập trình cho Android Studio 4.5 Giới thiệu tảng Win10 Iot Core 4.5.1 Giới thiệu sơ lược tảng Win10 Iot 4.5.2 Hướng dẫn cài đặt 4.6 Giới thiệu trang Web Thingspeak 80 4.7 Viết tài liệu hướng dẫn sử dụng, thao tác 81 4.6.1 Viết tài liệu hướng dẫn sử dụng 81 4.6.2 Quy trình thao tác 81 CHƯƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 83 5.1 Cảm biến 83 5.2 Module Esp8266 83 5.3 Kit Raspberry PI 83 5.4 Kit Arduino UNO 84 5.5 Chương trình giao diện điều khiển hệ điều hành Android 84 5.6 Kết - Đánh giá 84 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 85 6.1Kết luận 85 6.2Hướng phát triển 85 TÀI LIỆU THAM KHẢO 86 PHU LỤC 88 LIỆT KÊ HÌNH VẼ Hình Hình 2.1: Các ph Hình 2.2: Giao d Hình 2.3: Cấu tr Hình 2.4: Activi Hình 2.5: Chu k Hình 2.6: Chuẩn Hình 2.7: Khung Hình 2.8: Ghi Hình 2.9: Đọc d Hình 2.10: Modu Hình 2.11: Modu Hình 2.12: Kit Ra Hình 2.13: Module thực tế PIR Hình 2.14: Sơ đồ Hình 2.15: Quá Trình Phát Hiện Vật Hình 2.16: Cảm b Hình 2.17: Cảm b Hình 3.1:Sơ lược mơ hình điều khiển Hình 3.2: Sơ đồ Hình 3.3 Sơ đồ Hình 3.4: Sơ đồ Hình 3.5: Sơ đồ Hình 3.6: Modu Hình 3.7: Sơ đồ Hình 3.8: Sơ đồ Hình 4.1: Sơ đồ Hình 4.2: Sơ đồ Hình 4.3: Mơ hì Hình 4.4: Lưu đ Hình 4.5: Ardui Hình 4.6: Driver PHỤ LỤC dtostrf(Value_AmbientLight_LDR, 4, 1, str_field3); delay(1000); sprintf(buff, "/channels/118403/fields/4/last"); Serial.println(buff); rest.get((const char*)buff); if(rest.getResponse(response, 266) == HTTP_STATUS_OK){ strId = ""; strData = ""; getData(); value_data1= strId.toInt(); controldata1=value_data1; if(controldata1==1||controldata1==1.0){ digitalWrite(relay1,HIGH); } else if(controldata1==0||controldata1==0.1){ digitalWrite(relay1,LOW); } } else{ hardReset(); resetFunc(); clearBuffer(); } delay(4000); if(digitalRead(5) == HIGH){ dtostrf(1, 1, 0, str_field4); } else { dtostrf(0, 1, 0, str_field4); } delay(1000); sprintf(buff, "//update?key=DQIJ2P6EFE1XJ1XC&field1=%s&field2=%s&field3=%s&field4",str _field1,str_field2,str_field3,str_field4); Serial.println(buff); rest.get((const char*)buff); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC Code chương trình Ardunio: void ReceiveData(int byteCount) { Mode = Wire.read(); Pin = Wire.read(); Value = Wire.read(); if (Mode == 2) { digitalWrite(Pin, Value); } #ifdef _DEBUG_ Serial.print(Mode); Serial.print(" "); Serial.print(Pin); Serial.print(" "); Serial.println(Value); #endif } void SendData() { switch (Mode) { case 0: Responseone[0] = (byte)Value_AmbientLight_LDR; Responseone[1] = (byte)((Value_PassiveIR == true) ? : 0); Responseone[2] = (byte)((Value_Temperature < 0) ? : 1); Serial.println(Value_Temperature); Serial.println(Value_PassiveIR); Responseone[3] = (byte)((Value_Temperature < 0) ? (Value_Temperature*(1)) : Value_Temperature); Responseone[4] = (digitalRead(5) == HIGH) ? : 0; Responseone[5] = (digitalRead(6) == HIGH) ? : 0; Responseone[6] = (digitalRead(7) == HIGH) ? : 0; Responseone[7] = (digitalRead(8) == HIGH) ? : 0; break; Responseone[0] = (digitalRead(0) == HIGH) ? : 0; Responseone[1] = (digitalRead(1) == HIGH) ? : 0; Responseone[2] = (digitalRead(3) == HIGH) ? : 0; Responseone[3] = (digitalRead(4) == HIGH) ? : 0; Responseone[4] = (digitalRead(5) == HIGH) ? : 0; Responseone[5] = (digitalRead(6) == HIGH) ? : 0; Responseone[6] = (digitalRead(7) == HIGH) ? : 0; Responseone[7] = (digitalRead(8) == HIGH) ? : 0; Responseone[8] = (digitalRead(9) == HIGH) ? : 0; Responseone[9] = (digitalRead(9) == HIGH) ? : 0; Responseone[10] = (digitalRead(9) == HIGH) ? : 0; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC Responseone[11] = (digitalRead(12) == HIGH) ? : 0; Responseone[12] = (digitalRead(A2) == HIGH) ? : 0; Responseone[13] = (digitalRead(A3) == HIGH) ? : 0; break; Responseone[0] = (digitalRead(Pin) == HIGH) ? : 0; break; default: break; } Wire.write(Responseone, 14); } void getData(){ int i=0,j=0,k=0; for (i = 0; i < 10; i++){ if((response[i] == '\r') || (response[i] == '\n')) { } else{ strId += response[i]; } if (response[i] == '\n'){ i++; break; } } Serial.println(""); Serial.print("ID : "); Serial.print(strId); Serial.print("\n\n"); for (j = i; j < (i+20); j++){ if((response[j] == '\r') || (response[j] == '\n')) { } else{ strData += response[j]; } if (response[j] == '\n'){ j++; break; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC } } boolean hardReset() { String tmpData; } Code Chương Trình Chính Của Android Studio public class MainActivity extends Activity { Button update, back; Button on1, off1,on2, off2, on3, off3, on4, off4 ; TextView tv_nhietdo,tv_humity,tv_pir, test; public String dk1 = "0", dk2 = "0", dk3 = "0" , dk4 ="0"; CheckBox checkAuto; Integer a=0; String get_nhietdo; String get_humity; String get_pir; / Khai báo biến để lưu liệu hiển thị public static final String PREFS = "Prefs"; public static final String Nhietdo = "Nhietdo"; public static final String Humity = "Humity"; public static final String Pir = "Pir"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); back = (Button) findViewById(R.id.back); update = (Button) findViewById(R.id.update2); on1 = (Button) findViewById(R.id.btn112); off1 = (Button) findViewById(R.id.btn122); on2 = (Button) findViewById(R.id.btn212); off2 = (Button) findViewById(R.id.btn22); on3 = (Button) findViewById(R.id.btn312); off3 = (Button) findViewById(R.id.btn322); on4 = (Button) findViewById(R.id.btn412); off4 = (Button) findViewById(R.id.btn42); checkAuto = (CheckBox) findViewById(R.id.checkBox); tv_nhietdo = (TextView) findViewById(R.id.data32); tv_humity = (TextView) findViewById(R.id.data12); tv_pir = (TextView) findViewById(R.id.data22); loadPrefs(); callAsynchronousTask(); if (isNetworkAvailable()) { new MyAsyncTaskUpdate().execute(); } checkAuto.setOnCheckedChangeListener(new OnCheckedChangeListener() { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (checkAuto.isChecked()) { a = 1; } else { a = 0; } } }); update.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isNetworkAvailable()) { new MyAsyncTaskUpdate().execute(); savePrefs(); } else { Toast.makeText(getApplicationContext(), "Vui lòng kiểm tra lại kết nối Internet !", Toast.LENGTH_SHORT).show(); } } }); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent back = new Intent(MainActivity.this, ManHinhChinh.class); startActivity(back); } }); on1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk1 = "1"; } }); off1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk1="0"; } }); on2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk2 = "1"; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC } }); off2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk2="0"; } }); on3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk3 = "1"; } }); off3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk3="0"; } }); on4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk4 = "1"; } }); off4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dk4="0"; } }); } // Hàm Auto Get liệu public void callAsynchronousTask() { final Handler handler = new Handler(); Timer timer = new Timer(); TimerTask doAsynchronousTask = new TimerTask() { @Override public void run() { handler.post(new Runnable() { public void run() { if (isNetworkAvailable()) { if (a == 1) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC try { new MyAsyncTaskUpdate().execute(); } catch (Exception e) { // TODO Auto-generated catch block } } } else { Toast.makeText(getApplicationContext(), "Xin vui lòng kiểm tra lại kết nối Internet !", Toast.LENGTH_SHORT).show(); } } }); } }; timer.schedule(doAsynchronousTask, 0, 10000);} / Hàm Get liệu từ Thing Speak public void postData2() { HttpRequest mReq = new HttpRequest(); get_nhietdo = mReq.sendGet("https://thingspeak.com/channels/118403/field/1/last"); get_pir = mReq.sendGet("https://thingspeak.com/channels/118403/field/2/last"); get_humity = mReq.sendGet("https://thingspeak.com/channels/118403/field/3/last"); get_nhietdo = get_nhietdo.substring(0, 2); get_pir = get_pir.substring(0,1); get_humity = get_humity.substring(0,3); // for (int i = 0; i

Ngày đăng: 26/12/2021, 17:46

Xem thêm:

TỪ KHÓA LIÊN QUAN

w