OLYMPIC TIN HỌC SINH VIÊN VIỆT NAM NĂM 2018
Thư viện cho khối thi “Phần mềm nguồn mở” Thư viện nguồn mở chínhArduino ESP32: dự án phần cứng nguồn mở của thế giới, được hỗ trợ bởi cộng đồng IoT Maker Vietnam [1] Scikit Learn: scikit-learn là bộ công cụ sử dụng ngôn ngữ python, hỗ trợ các thuật toán khai phá dữ liệu và học máy. [2] M.E.O 2.0 Project: nền tảng mã nguồn mở Việt Nam của nhóm Maker Hanoi được xây dựng dựa trên NodeRed và một số IoT Platform sẵn có. Dự án có thiết kế mở cả phần cứng dưới dạng board mạch đồng hồ thông minh sử dụng chip Esp32. [3]
Các đội tuyển sẽ đọc, nghiên cứu, phân tích, và tìm hiểu các thư viện, dự án nguồn mở này để nắm được các chức năng chính, các giao tiếp, các thành phần (module) chính, cách sử dụng và cách mở rộng tính năng trong bộ thư viện và dự án.
Nội dung đề thi cho phần thi “Phần mềm nguồn mở” (viết tắt PMNM) sẽ bao gồm: ● Thêm mới hoặc cải tiến tính năng cho một dự án PMNM là M.E.O Project và ESP32, sử dụng bộ công cụ scikit-learn trong vòng 8 tiếng tại nơi thi (theo phong cách Hackathon [5]). Yêu cầu "thêm mới/cải tiến" sẽ được Ban Tổ Chức công bố trước khi thí sinh vào phòng thi. ● Thực nghiệm, tích hợp M.E.O Project, thiết bị ESP32 với scikit-learn và trình diễn trước Ban Tổ Chức. PythonPython (cùng HTML, JavaScript và CSS) là ngôn ngữ lập trình được chọn sử dụng trong nội dung thi “Mã nguồn mở” năm nay xoay quanh chủ đề phát triển các ứng dụng nguồn mở trên nền tảng IoT và điện toán đám mây. Arduino Arduino là một cộng đồng mã nguồn mở thiết bị nhúng bao gồm cả phần cứng và Arduino IDE. Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành. Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động. Đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép người dùng viết các chương trình cho Arduino bằng ngôn ngữ C hoặc C++. GitGit là công cụ quản lý mã nguồn được sử dụng rất nhiều tại các dự án mã nguồn mở trên thế giới. Sinh viên cần thiết phải tìm hiểu Git và sử dụng git để nộp kết quả bài thi thông qua git diff và đẩy pull request lên tới kho mã nguồn của BTC. Thư viện phụ thuộcNodeRed: nền tảng hỗ trợ kết nối nhiều loại thiết bị IoT, các API và các dịch vụ từ các nhà cung cấp khác. NodeRed cung cấp các tiện ích hỗ trợ thông qua giao diện trực quan với yếu tố chính là các luồng làm việc (flow). Người dùng có thể định nghĩa, tuỳ chỉnh các luồng làm việc theo đầu vào (input) để nhận dữ liệu từ các hệ thống, biến đổi chuyển hoá dữ liệu (function) để gửi dữ liệu đến các hệ thống bên ngoài thông qua các đầu ra (output). Trong M.E.O Project [3] đã tích hợp sẵn NodeRed [4] và định nghĩa sẵn input, output để giúp người phát triển làm việc mới mạch esp32. numpy [8]: thư viện cơ bản phục vụ cho việc tính toán khoa học: biểu diễn và hỗ trợ các phép toán trên ma trận, hỗ trợ các phép toán đại số tuyến tính Scipy [9]: thư viện hỗ trợ để thực hiện các phép toán Các thư viện sử dụng trên Arduino ESP32: [10] [11] [12] [13]
Hình ảnh mẫu thiết bị đồng hồ thông minh ESP32 Tính năng chính: có màn hình hiển thị Oled 1.3, cảm biến 6050 - gia tốc và gyro, đồng hồ thời gian thực ds3231, bộ thu phát điều khiển hồng ngoại IR.
Dữ liệu mẫu được thu thập bằng thiết bị và gán nhãn theo các hành động có sẵn. Mô tả sơ bộ của dữ liệu gồm 7 thuộc tính và 1 nhãn: - Ax: số thực mô tả toạ độ - Ay: số thực mô tả toạ độ - Az: số thực mô tả toạ độ - Yaw: số thực mô tả toạ độ - Pitch: số thực mô tả - Roll: số thực mô tả - Time: đơn vị millisecond, tổng thời gian thu thập dữ liệu - Category: nhãn thể hiện loại hành động của bộ dữ liệu Những điểm mới và thay đổi trong cuộc thi OLP FOSS 2018So với các cuộc thi Olympic Nguồn mở những năm 2013 trở về trước, cuộc thi OLP FOSS 2018 có những điểm thay đổi như sau:
Về hướng ra đề thiBài thi sẽ tập trung vào việc xây dựng thêm a) dịch vụ kết nối thiết bị ESP32 với M.E.O và NodeRed để giải quyết một bài toán IoT và b) thu thập và xử lý các dữ liệu từ ESP32. Tất cả các dịch vụ được yêu cầu đóng gói và chạy trên Docker container. Đề bài sẽ được công bố ngay trước khi thi. Về số lượng sinh viên tham gia
Về môi trường phát triểnA. Laptop: Khuyến khích cấu hình laptop như bên dưới hoặc tương đương.
B. Môi trường:
C. Công cụ:
Tiêu chí đánh giáMột số tiêu chí đánh giá kết quả cuộc thi là:
Gợi ýĐể thực hiện tốt bài thi, thí sinh cần làm quen với M.E.O, ESP32, scikit-learn và cần nắm vững các thao tác làm việc với Docker. Thời gian làm bàiThời gian cho cuộc thi trong ngày là 07 (bảy) tiếng, từ 07h30 sáng tới 14h30 trong ngày thi. Sau đó các đội cần trình bày sản phẩm từ 14h30 tới 15h30. Giải thưởngTheo qui chế của OLP Tin học [6], giải chính thức gồm giải nhất, giải nhì và giải ba. Hội đồng giám khảo sẽ căn cứ vào chất lượng các bài thi để đề nghị số lượng giải thưởng. Thông tin tham khảo[1] Docker: https://github.com/espressif/arduino-esp32 [2] Scikit-learn: http://scikit-learn.org/stable/ [3] M.E.O Project: https://github.com/makerhanoi/meo-guide [4] NodeRed: https://nodered.org/ và https://github.com/node-red [5] Hackathon là gì: https://en.wikipedia.org/wiki/Hackathon [6] Chương trình tổng thể: http://www.olp.vn/olympic/noi-quy [7] Arduino Ide https://www.arduino.cc/en/Main/OldSoftwareReleases [8] Numpy http://www.numpy.org/ [9] Scipy https://www.scipy.org/ [10] Oled 1.3 (SH1106) - u8g2 : https://github.com/olikraus/u8g2 [11] Mpu6050 – i2cdev : https://github.com/jrowberg/i2cdevlib [12] Ds3231: https://github.com/jarzebski/Arduino-DS3231 & http://arduino.vn/bai-viet/369-giao-tiep-i2c-va-su-dung-module-realtime-clock-ds1307 [13] IR library: https://github.com/z3t0/Arduino-IRremote
Các cộng đồng nguồn mở hỗ trợ cho cuộc thi Vietnam OpenStack Facebook: https://www.facebook.com/VietOpenStack/ Group: https://www.facebook.com/groups/vietstack/ Slack: https://vietops.herokuapp.com/
Docker Hanoi Facebook: https://www.facebook.com/dockerhanoi Group: https://www.facebook.com/groups/containervietnam/
Maker Hanoi Website: https://makerhanoi.org Facebook: https://www.facebook.com/makerhanoi/ Meetup: https://www.meetup.com/Ha-Noi-Maker-Meetup/ |
Tin tức > Mùa hè sáng tạo >