Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 124 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
124
Dung lượng
4,08 MB
Nội dung
Đồ án tốt nghiệp Khoa Điện – Điện Tử LỜI CẢM ƠN Trong trình thực đề tài: “Nghiên cứuthiếtkếchếtạođiềukhiểnLedmatrậnSmartphonechạyhệđiềuhành Android” em xin chân thành cảm ơn đến quý Thầy, Cô giáo môn, khoa Điện – Điện tử tận tình giảng dạy, cung cấp cho em nhiều kiến thức suốt trình học tập trường đại học Nha Trang Xin gửi lời cảm ơn sâu sắc đến Thầy giáo Nhữ Khải Hoàn trực tiếp hướng dẫn đồ án cho em Cảm ơn Thầy tận tình bảo, hướng dẫn, cung cấp tài liệu, kinh nghiệm, học quý giá tạođiều kiện thuận lợi cho em hoàn thành đồ án Em xin chân thành cảm ơn gia đình bạn bè giúp đỡ mặt tinh thần vật chất để em hoàn thành tốt đồ án Một lần em xin kính chúc quý Thầy, Cô người mạnh khỏe, hạnh phúc ngày thành công sống Xin chân thành cảm ơn! Nha Trang, tháng 06 năm 2015 Sinh viên Nguyễn Khắc Huy GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử LỜI MỞ ĐẦU Lý chọn đề tài Ngày với phát triển mạnh khoa học – công nghệ, đời sống người ngày nâng cao rõ rệt nhờ ứng dụng thành tựu khoa học – công nghệ Nó thúc đẩy phát triển mạnh mẽ nhiều lĩnh vực có lĩnh vực Điện – Điện tử Những điện thoại thông minh Smartphone ngày cải tiến không phục vụ nhu cầu nghe, gọi, xem phim… mà thay chức máy tính (PC) Ưu điểm điện thoại nhỏ gọn, vi xử lý tốc độ ngày cao, nhớ lớn, tích hợp đầy đủ ứng dụng bản, kết nối không dây Bluetooth, Wifi, 3G, sử dụng nhiều liên tục… Chính vậy, Smartphone ưa chuộng thay cho máy tính phục vụ ứng dụng Hầu hết thiết bị di động tích hợp chuẩn truyền thông Bluetooth Nếu USB giúp chuẩn hóa kết nối thiết bị ngoại vi với máy tính (PC), Bluetooth coi chuẩn không dây tiêu chuẩn giúp kết nối hầu hết thiết bị phụ trợ thông qua giao tiếp không dây tai nghe, chuột, bàn phím, máy in, loa Sử dụng Bluetooth thiết bị nhúng giúp kết nối không dây dễ dàng với máy tính, điện thoại di động, máy tính bảng, laptop Từ mở nhiều ứng dụng điều khiển, giao tiếp, kết nối hệ thống nhúng thiết bị di động Trong đề tài em sử dụng SmartphonechạyhệđiềuhànhAndroid để điềukhiểnLedmatrận thông qua vi điềukhiển AVR Bluetooth ĐiềukhiểnLedmatrậnSmartphone thuận tiện việc cập nhật liệu, tiết kiệm thời gian, tính thẩm mỹ cao, không cần sử dụng máy tính Mục tiêu đề tài • – – Thiếtkếbảng quang báo Ledmatrận qua Bluetooth Phải hiển thị thông tin cần thiết, Bảng quang báo Ledmatrận cập nhật nội dung truyền liệu từ SmartphonechạyhệđiềuhànhAndroid qua Bluetooth • Xây dựng giao diện điềukhiểnLedmatrậnSmartphoneAndroid truyền liệu cho vi điềukhiển thông qua mô đun Bluetooth HC-06 GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử Đối tượng phạm vi nghiêncứu – Đối tượng nghiêncứuNghiêncứu mô đun Ledmatrận P10 màu đỏ, mô đun Bluetooth HC-06, vi điềukhiển AVR, hệđiềuhànhAndroid – Phạm vi nghiêncứu Tìm hiểu, thiếtkếbo mạch điềukhiểnLedma trận, ứng dụng mô đun Bluetooth HC-06, mô đun Ledmatrận P10 để thiếtkếbảng quang báo matrận 32 x 128 màu đỏ, hiển thị số chữ tiếng việt có dấu truyền thông qua Bluetooth Phương pháp nghiêncứu – Phương pháp lý thuyết: Cách cấp nguồn nguyên lý hoạt động mô đun Led – ma trận, kỹ thuật điều khển Ledma trận, kỹ thuật lập trình Android Phương pháp thực nghiệm: Thiết kế, chếtạo mạch điều khiển, bảng quang báo Ledma trận, xây dựng giao diện Android cho Smartphone Kết nối, chạy thử, kiểm tra, sửa chữa hoàn thiện Nội dung nghiêncứu – Nghiêncứu mô đun Ledma trận, mô đun Bluetooth HC-06 – Tìm hiểu Smartphone, nghiêncứu ứng dụng hệđiềuhànhAndroid viết giao diện điềukhiểnLedmatrận dựa Android – Thiếtkếbảng quang báo mô đun Ledmatrận – ThiếtkếđiềukhiểnLedmatrận – Đánh giá kết đạt phương hướng phát triển đề tài Sản phẩm không phục vụ cho đào tạomà ứng dụng vào thực tiễn xã hội Vì quang báo Led phổ biến, đáp ứng nhu cầu phát triển xã hội, tính thẩm mỹ, độ bắt mắt cao, dễ dàng cập nhật nội dung, tiện ích màLed mang lại Bố cục đồ án - Chương 1: Tổng quan hệđiềuhànhAndroidLed quang báo - Chương 2: Thiếtkế phần cứng hệ thống - Chương 3: Phần mềm lập trình hệ thống - Kết luận phương hướng phát triển đề tài Mặc dù nỗ lực, cố gắng trình thực đồ án với trình độ, kiến thức, kinh nghiệm thực tế hạn chế thời gian có hạn nên tránh khỏi sai sót định Do đó, em mong muốn nhận góp GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử ý, bảo quý Thầy, Cô ý kiến đóng góp bạn bè để đồ án hoàn thiện Em xin chân thành cảm ơn! GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử MỤC LỤC Hình 1.1: Mô hình kiến trúc tảng Android Hình 1.2: Vòng đời Activity 12 Hình 1.3: Sơ đồ chuyển đổi trạng thái Service 14 Hình 1.4: Chức Intent 15 Hình 1.5: Ví dụ Notification 18 Hình 1.6: Cấu trúc hình Project Android 19 Hình 1.7: Hình ảnh Led thực tế 26 Hình 1.8: Cấu tạo nguyên lý hoạt động Led .27 Hình 1.9: Ứng dụng đèn Led thực tế 29 Hình 2.1: Sơ đồ khối tổng quát hệ thống phần cứng 31 Hình 2.2: Atmega 32 loại chân cắm 33 Hình 2.3: Atmega 32 loại chân dán 33 Hình 2.4: Cấu trúc bên vi điềukhiển AVR 35 Hình 2.5: Cấu trúc nhớ vi điềukhiển Atmega 32 36 Hình 2.6: Thanh ghi bit vi điềukhiển Atmega 32 .37 Hình 2.7: Cấu trúc ghi trạng thái AVR 38 Hình 2.8: Hình ảnh thực tế IC 74HC595 41 Hình 2.9: Sơ đồ chân IC 74HC595 41 Hình 2.10: Ghép nối tiếp IC 74HC595 43 Hình 2.11: Hình ảnh thực tế IC 74HC138 43 Hình 2.12: Sơ đồ chân IC 74HC138 43 Hình 2.13: Nguyên tắc tạo ảnh cho Ledmatrận 45 Hình 2.14: Mô đun Ledmatrận P10 47 Hình 2.15: Sơ đồ chân mô đun Led P10 47 Hình 2.16: Sơ đồ nguyên lý kết nối mô đun Led P10 với vi điềukhiển Atmega32 48 Hình 2.17: Sơ đồ mạch in kết nối mô đun Led P10 với vi điềukhiển Atmega32 48 GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử Hình 2.18: Nguyên lý đưa liệu vào IC 74HC595 Ledmatrận P10 48 Hình 2.19: Nguyên lý quét mô đun Ledmatrận P10 49 Hình 2.20: Hình ảnh thực tế IC 74HC254 .49 Hình 2.21: Sơ đồ chân IC 74HC254 49 Hình 2.22: Sơ đồ nguyên lý mạch điềukhiển trung tâm Atmega 32 50 Hình 2.23: Sơ đồ mạch in khối điềukhiển trung tâm Atmega 32 50 Hình 2.24: Mô đun Bluetooth HC06 51 Hình 2.25: Cấu trúc khung truyền phổ biến 52 Hình 2.26: Mô hình sản phẩm thực tế 53 Hình 3.1: Giao diện phần mềm Proteus 8.0 54 Hình 3.2: Giao diện phần mềm Codevision AVR V2.05.0 .55 Hình 3.3: Lựa chọn Java Platform .57 Hình 3.4: Chọn phiên JDK phù hợp với Windowns 57 Hình 3.5: Chọn Workspace cho việc phát triển ứng dụng Android .58 Hình 3.6: Giao diện Eclipse 59 Hình 3.7: Tham chiếu đến Android SDK .60 Hình 3.8: Lựa chọn gói Android SDK (API) 60 Hình 3.9: Cài đặt Android SDK Manager 61 Hình 3.10: Chọn cài đặt Android Virtual Device 61 Hình 3.11: Cài đặt thông số cho Android Virtual Device .62 Hình 3.12: Khởi động Android Virtual Device 62 Hình 3.13: Thiết lập kích thước hình cho Android Virtual Device .63 Hình 3.14: Android Virtual Device khởi tạo .63 Hình 3.15: Giao diện SmartphoneAndroid giao tiếp với vi điềukhiển 68 GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử DANH SÁCH CÁC BẢNG BIỂU Bảng 1.1: So sánh hệđiềuhànhSmartphoneBảng 2.1: Chức hoạt động 74HC595 41 Bảng 2.2: Bảng giá trị logic IC 74HC138 44 GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử DANH SÁCH CÁC LƯU ĐỒ Lưu đồ 3.1: Lưu đồ thuật toán tổng quát quét Ledmatrận 65 Lưu đồ 3.2: Lưu đồ thuật toán quét hàng cột Ledmatrận 66 Lưu đồ 3.3: Lưu đồ thuật toán dịch chữ từ trái sang phải .67 GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp Khoa Điện – Điện Tử DANH SÁCH CÁC TỪ VIẾT TẮT PC: Máy vi tính JDK: Java Development Kit OHA: Open Handset Alliance GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy Đồ án tốt nghiệp 10 Khoa Điện – Điện Tử CHƯƠNG 1: TỔNG QUAN VỀ HỆĐIỀUHÀNHANDROID VÀ LED TRONG QUANG BÁO 1.1 Tổng quan hệđiềuhànhAndroid 1.1.1 Giới thiệu hệđiềuhànhAndroidAndroidhệđiềuhành dành cho thiết bị di động điện thoại, máy tính bảng netbooks Android phát triển Google, dựa tảng Linux kernel phần mềm nguồn mở khác Ban đầu đuợc phát triển Android Inc sau Google mua lại gần trở thành phần mềm đứng đầu liên minh OHA (với khoảng 78 thành viên bao gồm nhà sản xuất, nhà phát triển ứng dụng cho thiết bị di động mà dẫn đầu Google).[7] Tháng 11 năm 2007, OHA – Liên minh thiết bị cầm tay mở rộng đời với thành viên Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel T-Mobile Tháng 10 năm 2008, hệđiềuhànhAndroid thức trở thành phần mềm mã nguồn mở Tháng 12 năm 2008, có thêm 14 thành viên gia nhập dự án Android công bố, gồm có ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, Vodafone Group Plc Andorid phát triển nhằm cạnh tranh với hệđiềuhành di động khác iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian (Nokia), Samsung (Bada), WebOS (Palm) Android chiếm 75% thị phần điện thoại thông minh toàn giới vào thời điểm quý năm 2012, với tổng cộng 500 triệu thiết bị kích hoạt 1,3 triệu lượt kích hoạt ngày Sự thành công hệđiềuhànhkhiến trở thành mục tiêu vụ kiện liên quan đến phát minh, góp mặt gọi “cuộc chiến điện thoại thông minh” công ty công nghệ.[8],[9] Android có cộng đồng phát triển ứng dụng lớn, có khoảng 70.000 ứng dụng có sẵn cho Android liên tục đuợc cập nhật Ứng dụng GVHD: Th.s Nhữ Khải Hoàn SVTH: Nguyễn Khắc Huy - String bufferString = " - if(inputString.getText().toString() != "") - "; textToSend = inputString.getText().toString(); if(inputSpeed.getText().toString() != "") - speedToSend = inputSpeed.getText().toString(); - text = bufferString + textToSend + bufferString; - Toast.makeText(getBaseContext(), "Text "+textToSend, Toast.LENGTH_SHORT).show(); - length = text.length(); - m_DataEndCode = new String[length]; - Toast.makeText(getBaseContext(), "Chieu dai chuoi "+length, Toast.LENGTH_SHORT).show(); - mConnectedThread.sendDataBeginEnd("@"); - int mod = length / 255; - int div = length % 255; - Toast.makeText(getBaseContext(), "Phan nguyen "+mod, Toast.LENGTH_SHORT).show(); - Toast.makeText(getBaseContext(), "Phan du "+div, Toast.LENGTH_SHORT).show(); - mConnectedThread.sendData(String.valueOf(mod)); - mConnectedThread.sendData(String.valueOf(div)); - Toast.makeText(getBaseContext(), "speedToSend "+speedToSend, Toast.LENGTH_SHORT).show(); - mConnectedThread.sendData(speedToSend); - convertString(text); - SystemClock.sleep(1000); - for(int j = 0; j < m_DataEndCode.length; j++) - { - if(j > 15 && j < length - 16) - Toast.makeText(getBaseContext(), "ky tu thu "+j+" m_DataEndCode "+m_DataEndCode[j], Toast.LENGTH_SHORT).show(); - mConnectedThread.sendData(m_DataEndCode[j]); - } - mConnectedThread.sendDataBeginEnd("#"); - } - }); - } - public void On_Click_Thoat(View v) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("Xác nhận?"); - builder.setMessage("Bạn có muốn thoát không?"); - builder.setIcon(R.drawable.iconcancel); - builder.setPositiveButton("Có", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Toast.makeText(getApplicationContext(), "Chương trình thoát!", Toast.LENGTH_SHORT).show(); - finish(); - } - }); - builder.setNegativeButton("Không", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }); - AlertDialog dialog = builder.create(); - dialog.show(); - } - public String[] convertString( String text) - { - for(int i = 0; i < length; i++) { - switch(text.charAt(i)) { - case ' ': - m_DataEndCode[i] = "52"; - break; - case 'a': - m_DataEndCode[i] = "0"; - break; - case 'b': - m_DataEndCode[i] = "2"; - break; - case 'c': - m_DataEndCode[i] = "4"; - break; - case 'd': - m_DataEndCode[i] = "6"; - break; - case 'e': m_DataEndCode[i] = "8"; - break; case 'f': - m_DataEndCode[i] = "10"; - break; - case 'g': - m_DataEndCode[i] = "12"; - break; - case 'h': - m_DataEndCode[i] = "14"; - break; - case 'i': - m_DataEndCode[i] = "16"; - break; - case 'j': - m_DataEndCode[i] = "18"; - break; - case 'k': - m_DataEndCode[i] = "20"; - break; - case 'l': - m_DataEndCode[i] = "22"; - break; - case 'm': - m_DataEndCode[i] = "24"; - break; - case 'n': m_DataEndCode[i] = "26"; - break; case 'o': - m_DataEndCode[i] = "28"; - break; - case 'p': - m_DataEndCode[i] = "30"; - break; - case 'q': - m_DataEndCode[i] = "32"; - break; - case 's': - m_DataEndCode[i] = "34"; - break; - case 'r': - m_DataEndCode[i] = "36"; - break; - case 't': - m_DataEndCode[i] = "38"; - break; - case 'u': - m_DataEndCode[i] = "40"; - break; - case 'v': - m_DataEndCode[i] = "42"; - break; - case 'w': m_DataEndCode[i] = "44"; - break; case 'x': - m_DataEndCode[i] = "46"; - break; - case 'y': - m_DataEndCode[i] = "48"; - break; - case 'z': - m_DataEndCode[i] = "50"; - break; - case 'á': - m_DataEndCode[i] = "54"; - break; - case 'à': - m_DataEndCode[i] = "56"; - break; - case 'ả': - m_DataEndCode[i] = "58"; - break; - case 'ã': - m_DataEndCode[i] = "60"; - break; - case 'ạ': - m_DataEndCode[i] = "62"; - break; - case 'â': m_DataEndCode[i] = "64"; - break; case 'ấ': - m_DataEndCode[i] = "66"; - break; - case 'ầ': - m_DataEndCode[i] = "68"; - break; - case 'ẩ': - m_DataEndCode[i] = "70"; - break; - case 'ẫ': - m_DataEndCode[i] = "72"; - break; - case 'ậ': - m_DataEndCode[i] = "74"; - break; - case 'ă': - m_DataEndCode[i] = "76"; - break; - case 'ắ': - m_DataEndCode[i] = "78"; - break; - case 'ằ': - m_DataEndCode[i] = "80"; - break; - case 'ẳ': m_DataEndCode[i] = "82"; - break; case 'ẵ': - m_DataEndCode[i] = "84"; - break; - case 'ặ': - m_DataEndCode[i] = "86"; - break; - case 'đ': - m_DataEndCode[i] = "88"; - break; - case 'é': - m_DataEndCode[i] = "90"; - break; - case 'è': - m_DataEndCode[i] = "92"; - break; - case 'ẻ': - m_DataEndCode[i] = "94"; - break; - case 'ẽ': - m_DataEndCode[i] = "96"; - break; - case 'ẹ': - m_DataEndCode[i] = "98"; - break; - … - case '4': - m_DataEndCode[i] = "216"; - break; - case '5': - m_DataEndCode[i] = "218"; - break; - case '6': - m_DataEndCode[i] = "220"; - break; - case '7': - m_DataEndCode[i] = "222"; - break; - case '8': - m_DataEndCode[i] = "224"; - break; - case '9': - m_DataEndCode[i] = "226"; - break; - case '%': - m_DataEndCode[i] = "228"; - break; - case 'ý': - m_DataEndCode[i] = "230"; - break; - default: - break; - } } - return m_DataEndCode; - } - private BluetoothSocket createBluetoothSocket(BluetoothDevice device) throws IOException { - if(Build.VERSION.SDK_INT >= 10){ - try { - final Method m = device.getClass().getMethod("createInsecureRfcommSocketToServiceRecor d", new Class[] { UUID.class }); - return (BluetoothSocket) m.invoke(device, MY_UUID); - } catch (Exception e) { - Log.e(TAG, "Could not create Insecure RFComm Connection",e); - } - } - return device.createRfcommSocketToServiceRecord(MY_UUID); - } - @Override - public void onResume() { - super.onResume(); - Log.d(TAG, " onResume - try connect "); - BluetoothDevice device = null; - Set pairedDevices = btAdapter.getBondedDevices(); - if (pairedDevices.size() > 0) { - for (BluetoothDevice devices : pairedDevices) { - device = devices; - } } - Log.d(TAG, " onResume - try connect "+device); - try { - btSocket = createBluetoothSocket(device); - } catch (IOException e) { - errorExit("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + "."); - } - btAdapter.cancelDiscovery(); - Log.d(TAG, " Connecting "); - try { - btSocket.connect(); - Log.d(TAG, " Connection ok "); - } catch (IOException e) { - try { - btSocket.close(); - } catch (IOException e2) { - errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + "."); - } - } - Log.d(TAG, " Create Socket "); - mConnectedThread = new ConnectedThread(btSocket); - mConnectedThread.start(); - } - @Override - public void onPause() { - super.onPause(); - Log.d(TAG, " In onPause() "); - try - { btSocket.close(); - } catch (IOException e2) { - errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + "."); - } - } - private void checkBTState() { - if(btAdapter==null) { - errorExit("Fatal Error", "Bluetooth not support"); - } else { - if (btAdapter.isEnabled()) { - } else { - Log.d(TAG, " Bluetooth ON "); Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); - startActivityForResult(enableBtIntent, 1); - } - } - } - private void errorExit(String title, String message){ - Toast.makeText(getBaseContext(), title + " - " + message, Toast.LENGTH_LONG).show(); - finish(); - } - private class ConnectedThread extends Thread { - private final InputStream mmInStream; - private final OutputStream mmOutStream; - public ConnectedThread(BluetoothSocket socket) { - InputStream tmpIn = null; - OutputStream tmpOut = null; - try { - tmpIn = socket.getInputStream(); - tmpOut = socket.getOutputStream(); - } catch (IOException e) { } - mmInStream = tmpIn; - mmOutStream = tmpOut; - } - @Override - public void run() { - byte[] buffer = new byte[256]; - int bytes; - while (true) { - try { - bytes = mmInStream.read(buffer); h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget(); - } catch (IOException e) { - break; - } - } - } - public void write(String message) { - Log.d(TAG, " Data to send: " + message + " "); - byte[] msgBuffer = message.getBytes(); - try { - mmOutStream.write(msgBuffer); - } catch (IOException e) { - Log.d(TAG, " Error data send: " + e.getMessage() + " "); - } - } - public void sendDataBeginEnd(String message) { - Log.d(TAG, " Data to send: " + message + " "); - byte[] msgBuffer = message.getBytes(); - try { - mmOutStream.write(msgBuffer); - } catch (IOException e) { - Log.d(TAG, " Error data send: " + e.getMessage() + " "); - } - } - public void sendData(String message) { - Log.d(TAG, " Data to send: " + message + " "); - int bodyMessage = Integer.parseInt(message); - byte msgBuffer = (byte)(bodyMessage & 0xFF); - try { - mmOutStream.write(msgBuffer); - } catch (IOException e) { - Log.d(TAG, " Error data send: " + e.getMessage() + " "); - } - } } } - ... Tìm hiểu Smartphone, nghiên cứu ứng dụng hệ điều hành Android viết giao diện điều khiển Led ma trận dựa Android – Thiết kế bảng quang báo mô đun Led ma trận – Thiết kế điều khiển Led ma trận –... bị di động Trong đề tài em sử dụng Smartphone chạy hệ điều hành Android để điều khiển Led ma trận thông qua vi điều khiển AVR Bluetooth Điều khiển Led ma trận Smartphone thuận tiện việc cập nhật... vi nghiên cứu – Đối tượng nghiên cứu Nghiên cứu mô đun Led ma trận P10 màu đỏ, mô đun Bluetooth HC-06, vi điều khiển AVR, hệ điều hành Android – Phạm vi nghiên cứu Tìm hiểu, thiết kế bo mạch điều