Algorithms 02 – Link list 

Linked List (Danh sách liên kết) là một trong những cấu trúc dữ liệu nền tảng trong lập trình. Nó được hình thành từ một chuỗi các nút (nodes), trong đó mỗi node lưu giá trị (value) và một con trỏ (pointer) trỏ đến node tiếp theo trong danh sách. Cấu trúc này đặc biệt hữu ích khi làm việc với dữ liệu động hoặc các thao tác chèn, xoá phần tử thường xuyên.

Lưu ý: Bài viết này dành cho người mới bắt đầu. Tác giả chia sẻ lại quá trình tự học, với mong muốn truyền cảm hứng và củng cố kiến thức cho cộng đồng. Nếu bạn đã có kinh nghiệm, hãy tiếp tục luyện ở cấp độ cao hơn hoặc thử viết lại, giảng giải lại – vì đó là cách hiệu quả nhất để ghi nhớ và rèn luyện tư duy thuật toán.

1. Hiểu Linked List qua ví dụ trực quan

Hãy tưởng tượng Linked List giống như chuỗi ticket trên Jira hoặc Trello – mỗi ticket có liên kết “Next” dẫn đến ticket kế tiếp.

Trong thực tế, bạn bắt gặp Linked List ở rất nhiều nơi:

  • Chức năng Undo/Redo trong Excel hoặc VS Code chính là ví dụ điển hình của Doubly Linked List:
    • Ctrl + Z → đi lùi (prev)
    • Ctrl + Y → đi tới (next)
  • Trình duyệt web khi bạn nhấn Back hoặc Forward — chính là bạn đang di chuyển trong một Linked List hai chiều biểu diễn lịch sử truy cập.

2. Các loại Linked List phổ biến

Singly Linked List

Mỗi node chỉ có một con trỏ next trỏ đến node tiếp theo.

  • Duyệt được từ head → tail nhưng không thể quay lại.
  • Ưu điểm: đơn giản, tiết kiệm bộ nhớ, thao tác chèn hoặc xoá ở đầu danh sách nhanh (O(1)).
  • Nhược điểm: không thể truy cập ngược; muốn tìm node trước phải duyệt từ đầu.
  • Bài tập tiêu biểu: LeetCode 206 – Reverse Linked List.

Doubly Linked List

Mỗi node có cả hai con trỏ prev và next, cho phép duyệt hai chiều.

  • Duyệt được theo cả hai hướng.
  • Chèn/Xoá ở giữa thuận tiện hơn Singly List.
  • Tốn thêm bộ nhớ để lưu prev.
  • Cần cẩn trọng khi cập nhật con trỏ để tránh lỗi trỏ sai.

Circular Linked List

Node cuối cùng (tail) trỏ ngược lại node đầu (head), tạo thành vòng khép kín.

  • Duyệt từ bất kỳ node nào cũng có thể đi qua toàn bộ danh sách.
  • Ứng dụng trong round-robin scheduling hoặc các hệ thống cần vòng lặp liên tục.
  • Cần xác định điều kiện dừng rõ ràng để tránh vòng lặp vô hạn.

3. So sánh Linked List và Array

Tiêu chíArrayLinked List
Truy cập theo indexO(1)O(n)
Chèn/Xoá phần tửO(n)O(1) (nếu có pointer)
Bộ nhớCấp phát cố địnhĐộng, linh hoạt hơn
Ứng dụngDB Index, Static ArrayUndo/Redo, Cache, LRU Cache

4. Các bài tập LeetCode nổi bật

  • 206. Reverse Linked List → Đảo chiều con trỏ, dùng ba biến prevcurrnext.
  • 141. Linked List Cycle → Phát hiện vòng lặp bằng hai con trỏ nhanh–chậm (fast–slow pointers).
  • 21. Merge Two Sorted Lists → Gộp hai danh sách đã sắp xếp, cẩn thận trỏ đúng pointer.
  • 146. LRU Cache → Kết hợp HashMap (O(1) lookup) và Doubly Linked List (O(1) reorder, delete).

5. Ví dụ code Python cơ bản

class Node:
    def __init__(self, val):
        self.val = val
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def insert_head(self, val):
        node = Node(val)
        node.next = self.head
        self.head = node

    def insert_end(self, val):
        node = Node(val)
        if not self.head:
            self.head = node
            return
        curr = self.head
        while curr.next:
            curr = curr.next
        curr.next = node

    def print_list(self):
        curr = self.head
        while curr:
            print(curr.val, end=" -> ")
            curr = curr.next
        print("None")

6. Cách học và luyện tập hiệu quả

Trước khi code, hãy vẽ sơ đồ Linked List trên giấy. Hầu hết lỗi sai khi thao tác với Linked List đến từ việc trỏ nhầm con trỏ (pointer), vì vậy hãy chắc chắn hiểu hướng đi của next và prev trước khi chạy code.

  • Tập trung vào 4 nhóm bài: reverse list, detect cycle, merge lists, remove node, và LRU cache.
  • Trong phỏng vấn backend/frontend, bạn thường được hỏi về trade-off giữa Array và Linked List.
  • Chuẩn bị sẵn template Node và LinkedList để code nhanh hơn.
  • Luôn tính trước time/space complexity để tối ưu giải pháp.

7. Tư duy rèn luyện quan trọng

Khi luyện Linked List, hãy bắt đầu bằng danh sách ngắn: [1 → 2 → 3 → None] hoặc [10 → 20 → 30 → 40 → None].

Với list ngắn, bạn dễ quan sát thay đổi sau từng thao tác insert, delete, reverse. Nếu gặp lỗi trỏ sai, việc in list nhỏ giúp phát hiện nhanh. Khi logic đã vững, hãy thử với test case lớn hơn.

Ngoài ra, hãy viết thêm helper function như print_list() hoặc to_array() để trực quan hóa dữ liệu sau mỗi bước.

8. Kết luận

  • Linked List là nền tảng của nhiều cấu trúc dữ liệu khác như Stack, Queue, Graph và Cache.
  • Hiểu bản chất con trỏ quan trọng hơn việc học thuộc công thức.
  • Vẽ – Mô phỏng – Code – Tối ưu: đó là chu trình học hiệu quả nhất.

Tổng kết: Khi nắm vững Linked List, bạn sẽ hiểu sâu hơn cách dữ liệu vận hành trong bộ nhớ và mở rộng tư duy sang các cấu trúc phức tạp như Tree, Graph, Heap hay HashMap. Hiểu rõ bản chất trước, tối ưu sau – đó là tư duy đúng đắn khi học thuật toán.

Algorithms 01: Dynamic Programming on Graphs

Bài viết này hệ thống lại bản chất của Dynamic Programming khi áp dụng trên cấu trúc đồ thị (graph). Tôi trình bày theo từng mục rõ ràng nhằm giúp người đọc hiểu trọng tâm và cách tiếp cận — đặc biệt phù hợp cho người mới học hoặc muốn ôn lại khái niệm.

1. Ý tưởng cốt lõi (Core Idea)

Trong các bài toán DP cổ điển (ví dụ: Fibonacci, Knapsack), các trạng thái thường có thứ tự tự nhiên từ 1 đến n. Trên đồ thị, mối quan hệ phụ thuộc giữa các đỉnh (nodes) không có thứ tự cố định, do đó cần xác định một thứ tự tính toán phù hợp để đảm bảo các phụ thuộc được thỏa mãn trước khi tính giá trị của một đỉnh.

Topological order là thứ tự các đỉnh của một đồ thị có hướng sao cho nếu tồn tại cạnh u → v thì u xuất hiện trước v. Nếu đồ thị là DAG (Directed Acyclic Graph), ta có thể thực hiện topological sort và dùng thứ tự này để làm DP một cách an toàn. Nếu đồ thị có chu trình (cycle), topological sort không khả dụng; trong trường hợp đó ta sử dụng các kỹ thuật khác như DFS kết hợp memoization hoặc thuật toán lặp relax kiểu Bellman–Ford / Floyd–Warshall cho tới khi các giá trị hội tụ.

Ví dụ minh hoạ: để tính giá trị của đỉnh 4 (giả sử giá trị là tổng đường đi từ 1 đến 4), ta cần trước kết quả của các đỉnh 2 và 3; để có 2 và 3 ta phải có kết quả của 1. Vì vậy cần sắp xếp thứ tự sao cho mỗi đỉnh được tính sau các đỉnh mà nó phụ thuộc.

Cho ví dụ topo = [1, 2, 3, 4], ta sẽ tính như sau:

dp[1] = base
dp[2] = f(dp[1])
dp[3] = f(dp[1])
dp[4] = f(dp[2], dp[3])

Như vậy thứ tự tính toán luôn đảm bảo các phụ thuộc đã có giá trị.

2. Ví dụ: Longest Path trên DAG

Bài toán: với n đỉnh và tập cạnh, tìm độ dài đường đi dài nhất trên một DAG. Ý tưởng: duyệt các đỉnh theo topological order và cập nhật giá trị cho các đỉnh kề.

Với mỗi cạnh u → v, thực hiện:

dp[v] = max(dp[v], dp[u] + 1)

Pseudo code:

topo = topological_sort(graph)
dp = [0 for _ in range(n)]
for u in topo:
    for v in graph[u]:
        dp[v] = max(dp[v], dp[u] + 1)
return max(dp)

Độ phức tạp thời gian: O(V + E) nếu đã có thứ tự topo. Topo đảm bảo không bao giờ cập nhật một đỉnh trước khi các tiền đề của nó đã được xử lý.

3. Khi đồ thị có chu trình (When Graph Has Cycles)

Nếu đồ thị chứa chu trình thì topological sort không khả dụng. Các phương án thay thế phổ biến:

  • DFS + memoization: dùng DFS để tính giá trị theo nhu cầu, lưu kết quả (memo) để tránh tính lại. Với các bài toán yêu cầu đường đi dài nhất trên một đồ thị có chu trình, cần xử lý chu trình phù hợp (ví dụ phát hiện vô hạn hoặc cắt chu trình theo yêu cầu bài toán).
  • Bellman–Ford / Floyd–Warshall: các thuật toán lặp relax qua các cạnh nhiều lần cho đến khi các giá trị hội tụ (hoặc xác định tồn tại chu trình âm với Bellman–Ford).

DFS + memo pseudo code:

def dfs(u):
    if seen[u]:
        return dp[u]
    seen[u] = True
    dp[u] = 1 + max(dfs(v) for v in graph[u])
    return dp[u]

Bellman–Ford: lặp qua tất cả cạnh V-1 lần, mỗi lần thực hiện cập nhật kiểu dist[v] = min(dist[v], dist[u] + w). Về bản chất đây là một dạng DP lặp (iterative relaxation) cho đến khi các giá trị ổn định.

4. Tương tự trong thực tế (Real-World Analogy)

Các bài toán quản lý phụ thuộc trong thực tế phản ánh chính xác tư duy DP trên đồ thị:

  • Airflow DAG: một task chỉ chạy khi các task mà nó phụ thuộc đã hoàn thành.
  • Dependency graph của trình biên dịch: module A phải được compile trước module B nếu B phụ thuộc A.
  • Neural network forward pass: duyệt theo thứ tự topo của computation graph để tính giá trị các node.

Chung quy đây đều là các bài toán dependency resolution.

5. Kết luận chính (Key Takeaways)

  • Trên DAG, ưu tiên dùng topo DP với độ phức tạp O(V + E).
  • Nếu đồ thị có chu trình, cân nhắc dùng DFS + memoization hoặc thuật toán lặp relax như Bellman–Ford.
  • Trọng tâm không phải công thức; mà là quản lý luồng thông tin (dependency) và thứ tự tính toán.
  • DP trên đồ thị = reuse (tái sử dụng kết quả) + ordering (sắp xếp thứ tự) + dependency control (kiểm soát phụ thuộc).

6. Bài tập liên quan (Related LeetCode Problems)

Để luyện tập, có thể tham khảo các bài sau (từ dễ đến trung bình–khó):

  • 207. Course Schedule — phát hiện chu trình + topo sort
  • 210. Course Schedule II — xây dựng topo order
  • 329. Longest Increasing Path in a Matrix — DP trên graph ẩn trong grid
  • 1514. Path with Maximum Probability — DP kết hợp Dijkstra
  • 787. Cheapest Flights Within K Stops — biến thể của Bellman–Ford

7. Nhận xét cá nhân (Personal Reflection)

Trước đây tôi từng hiểu DP là tập hợp các công thức chuyển trạng thái cứng nhắc. Sau khi tiếp cận sâu hơn, nhận ra bản chất của DP là quản lý luồng thông tin trong một mạng phụ thuộc. Đồ thị chỉ làm cho khái niệm trừu tượng hơn, nhưng nguyên lý vẫn là: tính các phần dễ trước, lưu kết quả, rồi sử dụng để tính phần phức tạp hơn.

Khi nắm được nguyên lý này, các thuật toán như Bellman–Ford, Floyd–Warshall hay topo DP trở nên trực quan hơn. Thói quen hữu ích: vẽ dependency graph trước khi code và thử nghiệm với ví dụ nhỏ (4–5 đỉnh) để quan sát thứ tự và cách giá trị lan truyền.

Nguyên tắc thực hành:

  • Hiểu luồng tính toán (simulate flow) trước khi triển khai code — Understand > Memorize.
  • DP = reuse + ordering + dependency management — từ đó có thể tái cấu trúc thuật toán mà không cần thuộc lòng công thức.
  • Nếu có chu trình, không cố ép topo sort; chuyển sang phương pháp cập nhật lặp như Bellman–Ford và tiếp tục relax cho tới khi ổn định.
  • Luôn xác định rõ “ai phụ thuộc vào ai” — trực quan hoá giúp nắm nhanh dependency.
  • Bắt đầu từ base case; suy nghĩ theo hướng tiến (past → future) hoặc lùi (goal → start) tuỳ bài toán.
  • Nếu thấy tính đi tính lại cùng một giá trị — dùng memoization; kiểm tra kỹ biên (boundaries) và base case để tránh lỗi phổ biến.

Ghi chú: Đây là chia sẻ từ góc nhìn người bắt đầu nhằm giúp người học hệ thống lại kiến thức. Việc thực hành và giải nhiều bài sẽ giúp nâng cấp khả năng làm chủ các biến thể nâng cao hơn.

WordPress là gì? Toàn tập về nền tảng xây dựng website phổ biến nhất thế giới

Nếu bạn đã từng nghĩ đến việc làm một website riêng cho mình hay cho doanh nghiệp, chắc hẳn cái tên WordPress đã ít nhiều xuất hiện trong đầu. Đây là hệ quản trị nội dung (CMS – Content Management System) phổ biến nhất trên thế giới, chiếm hơn 43% tổng số website toàn cầu. Điều gì khiến nó được yêu thích đến vậy? Vì sao từ cá nhân đến tập đoàn lớn đều chọn WordPress để phát triển website?

Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết từ khái niệm, ưu nhược điểm, hosting, sự khác biệt giữa WordPress.com và WordPress.org, cho đến những loại website có thể xây dựng và các plugin hữu ích nhất.


WordPress là gì?

WordPress là một phần mềm mã nguồn mở cho phép bạn xây dựng và quản lý website một cách dễ dàng. Nó được phát triển lần đầu tiên vào năm 2003 bởi Matt Mullenweg và Mike Little. Lúc đầu, WordPress chỉ đơn thuần là một nền tảng viết blog. Nhưng nhờ khả năng mở rộng và tính linh hoạt vượt trội, nó đã nhanh chóng trở thành một hệ sinh thái website khổng lồ.

Điểm mạnh của WordPress đến từ việc nó là nguồn mở và miễn phí. Bất kỳ ai cũng có thể tải về, cài đặt, chỉnh sửa và phát triển theo nhu cầu. Cùng với đó, WordPress sở hữu một cộng đồng khổng lồ, nơi hàng triệu lập trình viên và người dùng đóng góp plugin, theme, tài liệu, và liên tục cập nhật để nền tảng ngày càng hoàn thiện.

Ngày nay, WordPress không chỉ còn là công cụ viết blog. Bạn có thể dùng nó để xây dựng hầu hết mọi loại website: từ blog cá nhân, website tin tức, diễn đàn, portfolio, cho đến thương mại điện tử hay nền tảng học trực tuyến.


WordPress Hosting là gì?

Để một website có thể hoạt động, bạn cần hosting – dịch vụ lưu trữ website. Và riêng với WordPress, đã có những dịch vụ WordPress Hosting được thiết kế riêng cho nền tảng này.

Khác với hosting thông thường, WordPress Hosting có những ưu điểm nổi bật:

  • Tối ưu hóa server: Cấu hình phần cứng và phần mềm được thiết lập riêng để WordPress chạy nhanh và ổn định hơn.
  • Cài đặt dễ dàng: Chỉ cần một cú nhấp chuột hoặc tự động cài sẵn khi khởi tạo hosting.
  • Cập nhật tự động: Phiên bản WordPress, plugin và bảo mật luôn ở trạng thái mới nhất.
  • Tích hợp tăng tốc: Có sẵn cache, CDN, nén gzip và tối ưu cơ sở dữ liệu.
  • Hỗ trợ chuyên biệt: Đội ngũ kỹ thuật am hiểu sâu về WordPress, giúp xử lý sự cố nhanh chóng.
  • Công cụ quản lý tiện lợi: Bảng điều khiển riêng để quản lý nhiều website cùng lúc.

Nếu bạn muốn một trải nghiệm mượt mà và ít đau đầu về kỹ thuật, WordPress Hosting chắc chắn là lựa chọn đáng cân nhắc.


Ưu và nhược điểm của WordPress

Giống như bất kỳ nền tảng nào, WordPress có cả điểm mạnh lẫn điểm hạn chế.

Ưu điểm của WordPress

  • Dễ sử dụng: Người mới cũng có thể làm quen nhanh, không cần kỹ năng lập trình.
  • Cộng đồng lớn: Hàng triệu người dùng, lập trình viên và nhà thiết kế sẵn sàng chia sẻ kinh nghiệm, plugin, theme.
  • Kho plugin & theme khổng lồ: Miễn phí và trả phí, dễ dàng mở rộng tính năng hoặc thay đổi giao diện.
  • SEO thân thiện: Các plugin như Yoast SEO hay Rank Math hỗ trợ tối ưu công cụ tìm kiếm cực kỳ hiệu quả.
  • Cập nhật liên tục: Luôn được vá lỗi bảo mật và bổ sung tính năng mới.
  • Đa năng: Dùng cho mọi loại website, từ blog cá nhân đến thương mại điện tử.

Nhược điểm của WordPress

  • Bảo mật: Do phổ biến, WordPress thường là mục tiêu của hacker. Nếu không quản lý cẩn thận, website dễ bị tấn công.
  • Hiệu suất: Khi cài quá nhiều plugin hoặc dùng theme nặng, website có thể chậm.
  • Tùy biến nâng cao: Người không có kiến thức kỹ thuật đôi khi khó chỉnh sửa sâu.
  • Phụ thuộc hosting: Website chạy nhanh hay chậm còn phụ thuộc vào chất lượng hosting.

WordPress.com và WordPress.org – khác nhau thế nào?

Nhiều người hay nhầm lẫn giữa WordPress.com và WordPress.org. Thực tế, chúng là hai mô hình khác nhau:

Tiêu chíWordPress.comWordPress.org
HostingĐược WordPress.com cung cấpTự chọn hosting bên thứ ba
Cài đặtKhông cần cài đặt, chỉ đăng ký là dùngTải về và tự cài trên server
Tùy chỉnhGiới hạn, không truy cập mã nguồnToàn quyền chỉnh sửa mã nguồn
Plugin & themeBị giới hạnCài bất kỳ plugin và theme nào
Quảng cáoCó thể xuất hiện nếu không trả phíKhông có mặc định
Kiểm soátÍt quyền kiểm soátToàn quyền kiểm soát
Chi phíCó bản miễn phí, gói trả phí nâng cấpPhần mềm miễn phí, tốn phí domain & hosting

Kết luận:

  • Nếu bạn muốn một giải pháp nhanh, đơn giản, không cần lo kỹ thuật → WordPress.com.
  • Nếu bạn muốn sự linh hoạt, tùy biến tối đa, kiểm soát toàn bộ → WordPress.org.

WordPress có thể tạo ra những loại website nào?

Với WordPress, bạn có thể xây dựng hầu như mọi loại website:

  • Blog cá nhân – chia sẻ kinh nghiệm, nhật ký, quan điểm.
  • Website doanh nghiệp – giới thiệu sản phẩm, dịch vụ, xây dựng thương hiệu.
  • Cửa hàng trực tuyến – nhờ plugin WooCommerce, bạn có thể bán hàng online chuyên nghiệp.
  • Trang tin tức – cập nhật tin tức trong nhiều lĩnh vực.
  • Diễn đàn, cộng đồng trực tuyến – nơi mọi người cùng thảo luận.
  • Portfolio – giới thiệu dự án, thiết kế, hình ảnh cá nhân.
  • Website giáo dục – chia sẻ bài giảng, tài liệu học tập, khóa học trực tuyến.
  • Tổ chức phi lợi nhuận – truyền tải thông điệp và hoạt động cộng đồng.

Những plugin WordPress hữu ích

Một trong những thế mạnh lớn nhất của WordPress chính là plugin – công cụ mở rộng tính năng. Một số plugin đáng chú ý:

  • Yoast SEO – tối ưu SEO, dễ dàng cấu hình từ khóa, meta, sitemap.
  • W3 Total Cache / WP Super Cache – tăng tốc độ tải trang nhờ bộ nhớ đệm.
  • Akismet – ngăn chặn spam trong bình luận.
  • Jetpack – tích hợp nhiều tính năng: bảo mật, tối ưu và thống kê.
  • Contact Form 7 – tạo form liên hệ chuyên nghiệp.
  • WooCommerce – xây dựng cửa hàng trực tuyến mạnh mẽ.
  • Google Analytics for WordPress – theo dõi và phân tích traffic.
  • UpdraftPlus – sao lưu và khôi phục dữ liệu.
  • MailChimp for WordPress – quản lý email marketing.

Tùy vào nhu cầu, bạn có thể chọn bộ plugin phù hợp để tối ưu website.


Câu hỏi thường gặp

Có cần biết lập trình để dùng WordPress không?
Không. Giao diện thân thiện giúp ai cũng có thể tạo và quản lý website dễ dàng.

Cài đặt WordPress như thế nào?
Bạn có thể tải từ WordPress.org và tự cài trên hosting, hoặc dùng dịch vụ hosting có cài sẵn.

WordPress có an toàn không?
Có, nếu bạn thường xuyên cập nhật phiên bản mới, sử dụng plugin bảo mật và chọn hosting uy tín.

Có thể tùy chỉnh theo ý muốn không?
Hoàn toàn. Với hàng ngàn plugin và theme, bạn có thể biến website thành bất kỳ kiểu nào mình muốn.


Kết luận

Từ một công cụ blog đơn giản, WordPress đã trở thành nền tảng website phổ biến nhất thế giới. Với sự miễn phí, dễ dùng, đa năng và linh hoạt, WordPress là lựa chọn hàng đầu cho cả người mới lẫn các doanh nghiệp lớn.

Nếu bạn đang tìm cách bắt đầu xây dựng website nhanh chóng, tiết kiệm và hiệu quả, hãy thử WordPress. Chỉ cần vài cú nhấp chuột, bạn đã có thể sở hữu một website chuyên nghiệp sẵn sàng hoạt động.

Tạo Number Guessing Game bằng Python – Project nhỏ cho người mới học

Khi mới bắt đầu học lập trình, việc tự tay hoàn thành một mini project nhỏ sẽ giúp anh em nắm chắc cú pháp, luyện tư duy logic và có thêm động lực để tiếp tục. Trong bài viết này, mình sẽ cùng anh em xây dựng một trò chơi cực kỳ quen thuộc: Number Guessing Game – Trò chơi đoán số.


Ý tưởng của trò chơi

Trò chơi hoạt động đơn giản như sau:

  • Máy tính sẽ chọn ngẫu nhiên một số trong khoảng từ 1 đến 10.
  • Người chơi nhập số dự đoán.
  • Nếu đoán sai, chương trình sẽ gợi ý:
    • “Too low” nếu số dự đoán nhỏ hơn đáp án.
    • “Too high” nếu số dự đoán lớn hơn đáp án.
  • Khi đoán đúng, trò chơi sẽ thông báo: “You guessed it right!!”.

Với project này, anh em sẽ thực hành được:

  • Import và sử dụng thư viện random trong Python.
  • Dùng vòng lặp while.
  • Áp dụng câu lệnh điều kiện if/elif/else.

Viết code trò chơi

Dưới đây là phiên bản đơn giản nhất của Number Guessing Game:

import random

# Máy chọn ngẫu nhiên một số trong khoảng 1 đến 10
n = random.randrange(1, 10)

# Người chơi nhập số dự đoán
guess = int(input("Enter any number: "))

# Lặp cho đến khi người chơi đoán đúng
while n != guess:
    if guess < n:
        print("Too low")
    elif guess > n:
        print("Too high!")
    # Cho người chơi nhập lại
    guess = int(input("Enter number again: "))

print("You guessed it right!!")

Ví dụ chạy chương trình

Khi chạy chương trình, màn hình sẽ hiển thị như sau:

Enter any number: 2
Too low
Enter number again: 5
Too low
Enter number again: 8
You guessed it right!!

Ở ví dụ trên:

  • Người chơi đoán 2, chương trình báo “Too low”.
  • Đoán tiếp 5, vẫn thấp hơn đáp án → “Too low”.
  • Đoán 8, đúng với số ngẫu nhiên mà máy đã chọn → chương trình in ra: “You guessed it right!!”.

Hướng mở rộng

Đây chỉ là phiên bản cơ bản. Anh em có thể nâng cấp game này với nhiều tính năng thú vị hơn:

  • Giới hạn số lần đoán (ví dụ: chỉ được đoán 5 lần).
  • Cho người chơi tự chọn khoảng số (ví dụ: từ 1 → 100).
  • Thêm chế độ chơi lại sau khi đoán đúng hoặc hết lượt.
bb65209c-5001-4a4b-aa2c-7863356d51f0

Cách nhận Perplexity Pro miễn phí trị giá $200

Perplexity AI đã công bố chương trình hợp tác với dịch vụ thanh toán PayPal và Venmo, mang đến ưu đãi đặc biệt cho người dùng. Cụ thể, khách hàng sử dụng PayPal hoặc Venmo sẽ nhận miễn phí 12 tháng gói Perplexity AI Pro (trị giá 200 USD) chỉ bằng cách kết nối tài khoản. Đây là cơ hội rất tốt để bạn trải nghiệm toàn bộ tính năng cao cấp của Perplexity mà không mất bất kỳ chi phí nào.

bb65209c-5001-4a4b-aa2c-7863356d51f0

Perplexity Pro được đánh giá là một trong những công cụ AI tìm kiếm và tổng hợp thông tin tốt nhất hiện nay, với giá niêm yết là 20 USD/tháng hoặc 200 USD/năm, nổi bật với các tính năng:

  • Truy vấn nhanh hơn: Kết quả chính xác và cập nhật từ nhiều nguồn đáng tin cậy.
  • Truy cập dữ liệu thời gian thực: Không còn bị giới hạn thông tin cũ.
  • Dung lượng hỏi đáp không giới hạn: Tự do nghiên cứu và tìm kiếm thông tin.
  • Tích hợp AI đa nền tảng: Hỗ trợ trình duyệt, ứng dụng di động và API cho lập trình viên.

Điều Khoản và Điều Kiện Áp Dụng

Để nhận được ưu đãi, người dùng cần liên kết tài khoản PayPal hoặc Venmo của mình làm phương thức thanh toán trên nền tảng Perplexity. Chương trình có các điều kiện quan trọng sau:

  • Thời hạn chương trình: Ưu đãi có giá trị đến hết ngày 31 tháng 12 năm 2025.
  • Đối tượng áp dụng: Chương trình chỉ dành cho những người dùng chưa từng đăng ký Perplexity Pro trước đây.
  • Điều kiện tài khoản PayPal: Những tài khoản PayPal được tạo trước ngày 1 tháng 9 năm 2025 sẽ được kích hoạt ưu đãi ngay lập tức. Các tài khoản được tạo sau ngày này sẽ có thời gian chờ là 30 ngày.
  • Giới hạn sử dụng: Mỗi tài khoản PayPal hoặc Venmo chỉ được tham gia chương trình một lần duy nhất.
  • Điều kiện duy trì: Quyền truy cập Perplexity Pro sẽ bị thu hồi nếu người dùng gỡ bỏ phương thức thanh toán PayPal/Venmo khỏi tài khoản Perplexity trước khi thời hạn một năm kết thúc.

Cách nhận 12 tháng Perplexity AI Pro miễn phí

Để tham gia, bạn chỉ cần thực hiện theo các bước sau:

1) Truy cập vào https://www.perplexity.ai/join/p/paypal-subscription và chọn Claim 12 months of Perplexity Pro →

83f5d190-0822-46e4-be13-51dd761bcaa2

2) Đăng nhập vào tài khoản Paypal nếu chưa có tạo tài khoản Tại đây

ddafe515-3d40-4ffb-94c5-ae0da58accbc

3) Xác nhận ưu đãi Perplexity Pro miễn phí 12 tháng (không cần thanh toán trước, chỉ cần liên kết tài khoản)

4fb05316-1e0d-4529-bd67-0dd55f7d945e

4) Thành công sẽ thấy gói đang sử dụng Perplexity Pro

8eeeb698-9135-4d33-bc53-5c415fae3112

Đây là một động thái chiến lược của Perplexity nhằm mở rộng cơ sở người dùng và tăng cường sự hiện diện trên thị trường công cụ tìm kiếm AI đang cạnh tranh gay gắt. Nếu bạn đang tìm kiếm một công cụ AI tìm kiếm thông minh và mạnh mẽ cho học tập, nghiên cứu hay công việc, thì đây chính là cơ hội không nên bỏ lỡ. Chỉ một lần kết nối PayPal, bạn sẽ có ngay Perplexity AI Pro miễn phí 12 tháng trị giá 200 USD.

Các Câu Hỏi Phỏng Vấn Git

Cho dù bạn là người mới bắt đầu hay đã có một số năm kinh nghiệm, bạn có thể gặp một số câu hỏi cơ bản trong cuộc phỏng vấn Git của mình. Phần này bao gồm các câu hỏi phỏng vấn Git cơ bản. Chúng ta cùng tìm hiểu.

Khổ văn kém nên có những phần mình dùng chatgpt nên anh em tập trung nội dung và hiểu cho đừng nói nghe như chatgpt nhé, viết bài này mớ kiến thức cũng mệt à hihi.

perplex

Perplexity AI muốn mua lại Google Chrome với giá 34,5 tỷ USD – nước cờ táo bạo hay mộng tưởng?

Nghe qua thì tưởng như trò đùa, nhưng The Wall Street Journal xác nhận: Perplexity AI – startup AI trụ sở tại San Francisco – vừa gửi đề nghị mua lại trình duyệt Chrome của Google với mức giá 34,5 tỷ USD. Đáng chú ý, con số này gần gấp đôi định giá 18 tỷ USD của chính họ sau vòng gọi vốn hồi đầu năm.

Vì sao lại là lúc này?

Google đang trong thế khó. Năm 2024, Bộ Tư pháp Mỹ (DOJ) kết luận hãng “nắm giữ độc quyền bất hợp pháp” trong mảng tìm kiếm trực tuyến. Một trong những biện pháp khắc phục có thể là buộc Google bán Chromecấp quyền dữ liệu tìm kiếm cho đối thủ, và thực hiện các thay đổi hạn chế quyền lực.
Trong bối cảnh đó, Perplexity tung ngay đề nghị mua – một cú “đón lõng” thời cơ hiếm có.

Trước đó, OpenAI cũng bày tỏ quan tâm tới Chrome và mã nguồn mở Chromium, vì đây được coi là “kho dữ liệu vàng” về hành vi truy cập Internet trên desktop – cực kỳ hữu ích cho việc huấn luyện và triển khai AI.

Tiền đâu ra?

Một startup 18 tỷ USD muốn mua sản phẩm 34,5 tỷ USD nghe thì liều, nhưng Perplexity khẳng định nhiều quỹ đầu tư lớn đã đồng ý tài trợ toàn bộ thương vụ. Đây cũng không phải lần đầu họ “nhắm” tài sản lớn trong tình huống đặc biệt: đầu năm nay, Perplexity từng gửi đề xuất mua hoặc sáp nhập TikTok Mỹ khi ByteDance gặp áp lực phải bán.

Chiến lược của Perplexity

Tháng 7/2025, Perplexity ra mắt Comet – trình duyệt AI dựa trên Chromium, tích hợp chatbot để tóm tắt nội dung, mô tả ảnh, viết email… Nói cách khác, họ đã có “khung xe” và muốn mua hẳn “động cơ + thương hiệu” để tăng tốc.
Nếu thành công, Perplexity hứa sẽ:

  • Đầu tư 3 tỷ USD trong 2 năm để phát triển Chrome & Chromium
  • Mời một phần lớn đội ngũ nhân sự Chrome về làm việc
  • Giữ nguyên trải nghiệm người dùng, không thay đổi nhận diện hay tính năng cốt lõi
  • Không mua cổ phần Google → né rào cản chống độc quyền

Vì sao thương vụ này quan trọng?

Thị trường trình duyệt đang “nóng” trở lại khi các công ty AI chạy đua phát triển AI Agent – những “trợ lý số” có thể mua hàng, tìm thông tin, hỗ trợ công việc trực tiếp trong trình duyệt.

  • OpenAI: Đang phát triển trình duyệt AI mới, cũng dựa trên Chromium
  • Meta: Từng tiếp cận Perplexity để mua lại nhưng bất thành
  • Apple: Nội bộ đã thảo luận khả năng thâu tóm Perplexity nhưng chưa hành động

Nếu Google buộc phải bán Chrome, đây sẽ là vụ chia tách chống độc quyền lớn nhất từ thời Microsoft thập niên 1990 – và có thể tạo tiền lệ cho nhiều “ông lớn” công nghệ khác.

Góc nhìn cá nhân

Perplexity đang đánh một canh bạc cực lớn: họ chưa phải tên tuổi “top of mind” như Google, Meta hay OpenAI, nhưng bằng việc “mua cửa hàng đông khách nhất” thay vì mở mới, họ có thể ngay lập tức tiếp cận hơn 3 tỷ người dùng Chrome toàn cầu.
Rủi ro là Google hoàn toàn có thể kháng án, kéo dài vụ kiện, hoặc tìm cách giữ Chrome lại. Nhưng nếu thương vụ này qua cửa, trình duyệt mà chúng ta đang dùng hàng ngày có thể trở thành Chrome AI – vừa tìm kiếm, vừa trả lời, vừa làm việc… ngay khi mở tab mới.

Câu hỏi là: Bạn có sẵn sàng để Chrome trở thành “trợ lý AI” của Perplexity?

#PerplexityAI #GoogleChrome #AI #TechNews #Antitrust

API là gì? Hiểu đúng để làm chủ ứng dụng thời đại số

Trong thế giới số hiện đại, các ứng dụng không còn hoạt động đơn lẻ. Chúng liên kết, chia sẻ dữ liệu và tương tác với nhau một cách trơn tru – tất cả nhờ vào API. Dù bạn là người dùng cuối hay lập trình viên, việc hiểu đúng về API (Application Programming Interface) sẽ giúp bạn nắm được cách thế giới công nghệ đang vận hành.

API là gì?

API – Giao diện lập trình ứng dụng – là một tập hợp các quy tắc cho phép các phần mềm khác nhau giao tiếp với nhau. API giống như chiếc cầu nối, truyền tải thông tin giữa các hệ thống mà người dùng không cần thấy hay biết bên trong hoạt động ra sao.

Ví dụ: Khi bạn đặt đồ ăn qua một ứng dụng, ứng dụng cần biết vị trí của bạn. Nó sẽ lấy thông tin đó từ Google Maps qua API, thay vì tự xây dựng một hệ thống bản đồ riêng.

API hoạt động như thế nào?

API vận hành dựa trên nguyên tắc Request – Response (gửi yêu cầu – nhận phản hồi).

Khi một ứng dụng muốn lấy dữ liệu từ máy chủ, nó sẽ gửi một yêu cầu (request) tới một đường dẫn cụ thể – gọi là endpoint. Server tiếp nhận yêu cầu, xử lý và trả lại kết quả – gọi là response.

Ví dụ thực tế:

  • URL: http://api.example.com/users/1234
  • Method: GET (yêu cầu lấy thông tin người dùng)
  • Response: Trả lại thông tin của người dùng có ID là 1234, thường ở định dạng JSON.

Quá trình này tương tự như khi bạn đến nhà hàng gọi món. Bạn (người dùng) nói với người phục vụ (API) món bạn muốn. Người phục vụ đưa yêu cầu vào bếp (server). Đầu bếp làm món (xử lý dữ liệu), người phục vụ mang ra cho bạn (phản hồi). Bạn không cần biết bếp ở đâu, nấu thế nào – bạn chỉ cần kết quả.

Các phương thức phổ biến trong API

  • GET: Lấy thông tin
  • POST: Gửi thông tin mới lên server
  • PUT: Cập nhật toàn bộ thông tin
  • PATCH: Cập nhật một phần thông tin
  • DELETE: Xoá dữ liệu

Ngoài ra còn có các phương thức như HEAD, OPTIONS, TRACE, CONNECT – phục vụ các mục đích nâng cao hơn.

Phân loại API

Tùy vào mục đích sử dụng, API có thể chia thành các loại sau:

  • Public API: Mở công khai, ai cũng có thể dùng (như Facebook API, Google Maps API).
  • Private API: Dùng riêng cho nội bộ doanh nghiệp.
  • Partner API: Dành cho đối tác có hợp tác và được cấp quyền.
  • Composite API: Gộp nhiều API vào một, cho phép xử lý nhiều thao tác chỉ trong một lần gọi.

Giao tiếp trong API: Giao thức và định dạng

Các API hiện đại thường sử dụng:

  • REST API: Giao tiếp qua giao thức HTTP, dữ liệu trả về thường ở dạng JSON hoặc XML.
  • SOAP API: Cũ hơn, sử dụng XML, phức tạp và ít linh hoạt.
  • WebSocket API: Hỗ trợ kết nối hai chiều, thường dùng cho ứng dụng thời gian thực như chat hoặc game.
  • RPC API: Gọi hàm từ xa, thường dùng trong hệ thống phân tán.

Ứng dụng thực tế của API

API xuất hiện ở mọi nơi trong công nghệ hiện đại:

  • Ứng dụng thanh toán: kết nối với VNPay, PayPal…
  • Ứng dụng gọi xe: truy cập bản đồ, định vị GPS qua API
  • Mạng xã hội: Facebook, Zalo, Instagram đều có API để lập trình viên tích hợp vào ứng dụng khác
  • Đồng bộ dữ liệu: giữa app di động và hệ thống máy chủ
  • Thương mại điện tử: cập nhật đơn hàng, tồn kho, vận chuyển…

Ưu và nhược điểm của API

Ưu điểm:

  • Tăng tốc quá trình phát triển ứng dụng
  • Tận dụng được các dịch vụ, nền tảng sẵn có
  • Giao tiếp linh hoạt giữa nhiều hệ thống
  • Tách biệt rõ frontend và backend
  • Dễ bảo trì và mở rộng

Nhược điểm:

  • Yêu cầu bảo mật cao: nếu lộ API key, hệ thống có thể bị khai thác
  • Tốn tài nguyên vận hành: băng thông, chi phí hạ tầng
  • Một số API không tuân thủ chuẩn RESTful khiến việc tích hợp phức tạp hơn
  • Đòi hỏi lập trình viên có hiểu biết backend tốt

Kết luận

API không đơn giản chỉ là một công cụ dành cho lập trình viên – nó là xương sống của các ứng dụng và dịch vụ hiện đại. Từ đặt đồ ăn, xem bản đồ, thanh toán online đến mạng xã hội – tất cả đều có API hỗ trợ phía sau.

Hiểu rõ cách API hoạt động, bạn không chỉ dùng công nghệ hiệu quả hơn mà còn mở ra cơ hội phát triển sản phẩm linh hoạt, kết nối và mạnh mẽ hơn bao giờ hết.

YouTube AI: 90% Nội Dung, Giá Rẻ Bất Ngờ

“`html

AI và Tương Lai Nội Dung Trên YouTube: 90% Nội Dung Sẽ Do AI Tạo Ra?

Trí tuệ nhân tạo (AI) đang nhanh chóng thay đổi cục diện của nhiều ngành công nghiệp, và sản xuất nội dung trên YouTube cũng không phải là ngoại lệ. Một câu hỏi đặt ra là: liệu 90% nội dung trên YouTube trong tương lai sẽ được tạo ra bởi AI? Điều này có ý nghĩa gì đối với các nhà sáng tạo nội dung và tương lai của nền tảng video lớn nhất thế giới?

Sự Trỗi Dậy của AI trong Sản Xuất Nội Dung

Theo chuyên gia từ Google Cloud Việt Nam, ông Phan Thanh Hà, AI đang phát triển với tốc độ chóng mặt và có khả năng tự động ra quyết định mà không cần sự can thiệp của con người. Điều này mở ra cơ hội cho việc ứng dụng AI trong nhiều lĩnh vực, bao gồm cả sản xuất nội dung trên YouTube.

Ba xu hướng AI nổi bật được Google ghi nhận bao gồm: khả năng xử lý hình ảnh và âm thanh theo thời gian thực, quy trình làm việc tự động hoàn toàn, và việc sử dụng AI như một công cụ tìm kiếm mới.

AI và YouTube: Cuộc Cách Mạng Nội Dung

Sự phát triển của AI tạo sinh cho phép tạo ra nội dung video với chi phí thấp hơn và tốc độ nhanh hơn đáng kể. Ông Hà dự đoán rằng 80%-90% nội dung trên YouTube trong tương lai có thể được tạo ra bởi AI, từ video giới thiệu sản phẩm, quảng cáo, đến phim ngắn và nội dung tương tác. Điều này có thể làm thay đổi đáng kể cách các nhà sáng tạo nội dung làm việc và cạnh tranh trên nền tảng này.

Ví dụ, một video quảng cáo 30 giây trước đây có thể tốn từ 55.000 đến 130.000 USD để sản xuất. Với sự hỗ trợ của AI, chi phí này có thể giảm xuống chỉ còn 320 USD và thời gian sản xuất chỉ còn nửa ngày.

Lợi Ích của AI trong Sản Xuất Video YouTube

  • Giảm chi phí sản xuất: AI giúp tự động hóa nhiều công đoạn, giảm thiểu chi phí nhân công và thiết bị.
  • Tăng tốc độ sản xuất: AI có thể tạo video nhanh hơn con người, giúp các nhà sáng tạo nội dung xuất bản nội dung thường xuyên hơn.
  • Cá nhân hóa nội dung: AI có thể phân tích dữ liệu người dùng để tạo ra nội dung phù hợp với sở thích của từng cá nhân.
  • Tối ưu hóa nội dung cho SEO: AI có thể giúp tối ưu hóa tiêu đề, mô tả và thẻ tag để video dễ dàng được tìm kiếm trên YouTube.

Thách Thức của AI trong Sản Xuất Nội Dung

Mặc dù AI mang lại nhiều lợi ích, nhưng vẫn còn những thách thức cần được giải quyết. Một trong số đó là việc đảm bảo chất lượng và tính sáng tạo của nội dung do AI tạo ra. Liệu nội dung do AI tạo ra có thể thay thế hoàn toàn sự sáng tạo và cảm xúc của con người?

Một thách thức khác là vấn đề bản quyền và đạo đức. Việc sử dụng AI để tạo nội dung có thể dẫn đến việc vi phạm bản quyền hoặc tạo ra nội dung gây tranh cãi.

Tương Lai của YouTube và AI

Mặc dù AI đang phát triển nhanh chóng, nhưng vẫn còn một chặng đường dài để AI có thể thay thế hoàn toàn con người trong việc sản xuất nội dung trên YouTube. Tuy nhiên, AI chắc chắn sẽ đóng một vai trò quan trọng trong tương lai của nền tảng này, giúp các nhà sáng tạo nội dung tạo ra video chất lượng cao với chi phí thấp hơn và tốc độ nhanh hơn.

Việc sử dụng AI trong sản xuất nội dung trên YouTube sẽ mang lại nhiều cơ hội mới cho các nhà sáng tạo nội dung, đồng thời đặt ra những thách thức mới về chất lượng, bản quyền và đạo đức. Tương lai của YouTube sẽ phụ thuộc vào cách chúng ta ứng dụng và quản lý công nghệ AI một cách hiệu quả và có trách nhiệm.

Kết Luận

Sự kết hợp giữa AI và YouTube hứa hẹn một tương lai thú vị cho việc sản xuất nội dung. Mặc dù còn nhiều thách thức, nhưng tiềm năng của AI trong việc cách mạng hóa cách chúng ta tạo và tiêu thụ nội dung video là không thể phủ nhận. 90% nội dung do AI tạo ra có thể là một con số táo bạo, nhưng chắc chắn AI sẽ định hình lại tương lai của YouTube trong những năm tới.

“`

demo-attachment-297-clienty-3

Tài liệu hệ thống Smart Farm

1. Giới thiệu

  • Hệ thống Smart Farm hay còn được gọi là một hệ thống trang trại thông minh, các thiết bị hiện đại trong trang trại này được kết nối liền mạch với nhau.
  • Hỗ trợ cho toàn bộ quá trình giám sát nông nghiệp, được điều khiển và vận hành hệ thống trang trại từ xa qua máy tính và có thể qua điện thoại thông minh.
  • Hệ thống này giúp cho chủ trang trại hoặc là người vận hành có thể kiểm soát được mọi thông tin của toàn bộ trang trại mọi lúc, mọi nơi.
  • Nông trại thông minh dựa và cách làm nông nghiệp nhờ sử dụng cảm biến các thiết bị hiện đại để có thể đưa ra quy trình làm việc chính xác giúp cho nông trại đạt hiệu suất tốt hơn.

Tài liệu hệ thống Smart Farm
Hình 1: Mô tả Smart Farm

2. Hệ thống Smart Farm

2.1 Hệ thống

Tài liệu hệ thống Smart Farm

Hình 2: Cấu trúc hệ thống gồm modbus RTU và lora

  • Hệ thống gồm 4 phần chính: Sever IOT, Giao diện người dùng, Truyền thông giao triếp, Thiết bị đầu cuối Controler.
  • Được xây dựng trên 2 phương thức truyền thông khác nhau có thể lựa chọn phù hợp với từng nới lắp đặt: Modbus RTU, Lora.
  • Server xử lý và lưu trữ dữ liệu, phát lệnh xuống các bộ điều khiển bằng RTU hoặc LORA. Đọc tín hiệu cảm biến trực tiếp từ sensor nếu hỗ trợ RTU hoặc gián tiếp qua các vi điều khiển đưa về dạng RTU và LORA.

2.1.1 Server IOT

  • Một máy chủ IoT (Internet of Things) là một hệ thống hoặc dịch vụ trực tuyến được sử dụng để quản lý và điều khiển các thiết bị kết nối IoT. Máy chủ IoT đóng vai trò trung tâm hệ thống IoT bằng cách thu thập, lưu trữ, xử lý và chia sẽ dữ liệu từ các thiết bị IoT và thường cung cấp các chức năng quản lý, theo dõi và điều khiển.
  • Để đảm bảo các chức năng của server IoT, xử lý chuẩn xác và nhanh thì hệ thống có thể sử dụng một máy tính mini, máy tính nhúng chạy hệ điều hành Linux hoặc Windows. Tùy vào nhu cầu mà ta có thể lựa chọn 1 thiết bị để xây dựng 1 server IoT cho hệ thống.
  • Với hệ thống hiện tại đang sử dụng máy tính mini NUC của dòng Intel để chạy server IoT kết nối giao tiếp với thiết bị khác qua cổng USB
  • Khả năng lưu trữ bằng, xử lý nhanh, thông tin chính xác. Có thể chọn nhiều dòng máy khác nhau để thay thế hoặc dùng máy tính văn phòng để trở thành server IoT.
  • Dòng NUC INTEL

+ Máy tính hỗ trợ cổng nhiều USB, Ethernet, HDMI, … nên chúng ta có thể tạo nhiều chức năng trên cùng 1 server.

+Kích thước nhỏ gọn, dễ dàng lắp đặt ở nới có không gian bị hạn chế.

+ Hiệu suất tùy vào cấu hình của máy nhưng đáp ứng tốt vai trò sever cho hệ thống, có thể làm thêm 1 số nhiệm vụ khác, dễ dàng mở rộng và nâng cấp đáp ứng phát triển hệ thống về sau.

Tài liệu hệ thống Smart Farm
Hình 3: Server IoT trên NUC của Intel

2.1.2 Controller

a. Bộ xử lý

  • Đảm nhận vai trò tiếp nhận thông tin từ server, xử lý điều khiển các ngõ ra bật tắt thiết bị theo mong muốn. Phản hồi trạng thái thiết bị về giao diện người dùng.
  • Bộ phận xử lý sử dụng máy tính nhúng raspberry với các dòng (zero w, 2, 3, 4,) ngôn ngữ python dễ dàng thay đổi và viết chương trình điều khiển logic theo mong muốn.
  • Bộ sử lý được kết hợp giữ Raspberry (Pi3) và một số IC và linh kiện điện tử:

Tài liệu hệ thống Smart Farm
Hình 4: Bộ xử lý raspberry và mạch điều khiển của bộ điều khiển Controler

  • Controler: bao gồm 1 raspberry kết hợp với USB R-S485, gắn kết trên bo mạch điều khiển tín hiệu I/O:

      + Giao tiếp: RS485, Lora, TCP/IP qua conorh Ethernet…

      + Input: 8 cổng input digital 24VDC.

      + Outpt: 8 cổng Output Relay, có thể sử dụng 24V DC/ 10A hoặc 220V AC/ 10A.

      + Header kết nối module mở rộng I/O.

b. Module mở rộng

  • Module mở rộng tăng thiết bị đầu ra cho bộ điều khiển
  • Có thể lựa chọn module mở rộng 8 I/O hoặc 16I/O
  • Input: digital 24V DC
  • Output: relay 24VDC /10A hoặc 220V AC /10A

Tài liệu hệ thống Smart Farm
Hình 5: Module mở rộng

2.1.3 Sensor

  • Cảm biến là một thiết bị hoặc một phần hệ thống được sử dụng để phát hiện, đo lường, hoặc ghi nhận thông tin về các biến đổi trong môi trường
  • Cảm biến có nhiều loại sử dụng cho nhiều mục đích khác nhau: đo nhiệt độ, độ ẩm, ánh sáng, gió, pH, …
  • Thông tin đọc từ cảm biến sẽ được biến đổi về các dạng: xung (PWM), analog (0-10V DC, 0-20mA, 4-20mA, …), Modbus RTU, I2C, …
  • Tùy thuộc vào nhu cầu sử dụng mà lựa chọn tính năng của cảm biến để ghi nhận đúng thông tin mong muốn

+ Đo nhiệt độ, độ ẩm: thường chọn dạng tín hiệu Modbus RTU để tích hợp trực tiếp vào hệ thống không cần qua biến đổi tín hiệu

  • Nhiệt độ và độ ẩm không khí: tin dùng với sensor Modbus RTU RS485 SHT20 (Mã XY-MD02) hoặc lựa chọn những sensor có khoảng làm việc rộng hơn 0-100 0C và độ ẩm 0-100%. Tùy vào nhu cầu mà có thể lựa chọn nhiều loại sensor ghi nhận nhiệt và độ ẩm khác nhau.
  • Nhiệt độ và độ ẩm đất: thị trường nhiều loại hỗ trợ ghi nhận nhiệt độ và độ ẩm đất, tùy vào nhu cầu, môi trường làm việc lựa chọn đầu dò cảm biến phù hợp.

+ Đo ánh sáng: ghi nhận cường độ ánh sáng cung cấp cho cây trồng. Cảm biến ánh sáng có nhiều loại chọn lựa với nhiều tín hiệu đầu ra. Với hệ thống ưu tiên lựa chọn cảm biến tín hiệu đầu ra là RTU, nhằm kết nối trực tiếp với hệ thống không qua vi điều khiển, khả năng sai số thấp.

+ Gió: Cảm biến được sử dụng để đo lường ghi nhận tốc độ và hướng của gió trong môi trường. Giúp phần cảnh báo tốc độ có thể ảnh hưởng đến tài sản vật chất của farm … Thường tốc độ có đơn vị là: m/s, km/h

+ pH: Đo lường độ pH trong nước hoặc dung dịch phân bón, đảm bảo độ pH vừa đủ cho cây trồng. Mức dao động độ pH từ 0-14.

+ Ngoài ra còn có nhiều loại cảm biến khác nhau, phục vụ nhiều mục đích khác nhau. Giúp ghi nhận, đo lường thông tin môi trường. Đưa lên số liệu cụ thể, cảnh báo, đánh giá đến người kỹ thuật đưa ra những giải pháp.

Tài liệu hệ thống Smart Farm
Hình 6: Cảm biến tốc độ gió

Tài liệu hệ thống Smart Farm
Hình 7: Cảm biến ánh sáng

 

 

 

 

 

 

 

 

 

 

Tài liệu hệ thống Smart Farm
Hình 8: Cảm biến nhiệt độ và độ ẩm

Tài liệu hệ thống Smart Farm
Hình 9: Cảm biến pH

 

 

 

 

 

 

 

 

 

 

2.1.4 Truyền thông Mobbus

  • Modbus là một giao thức truyền thông được sử dụng rộng rãi trong việc kết nối và truyền dữ liệu giữa các thiết bị điện tử trong các hệ thống tự động hóa công nghiệp.
  • Modbus thường sử dụng truyền thông qua giao diện RS-232 hoặc RS-485 (Modbus RTU) hoặc qua Enthernet (Modbus TCP/IP).
  • Hệ thống sử dụng giao tiếp Modbus RTU RS-485 để giao tiếp giữa các Slave với Master (giao tiếp từ bộ điều khiển controler với server IOT).
  • Một Master có thể giao tiếp với số lượng slave lớn, với 32 thiết bị Slave được kết nối nối tiếp ưu điểm của RS-485 so với các dạng giao tiếp khác
  • Modbus có nhiệm vụ truyền tín hiệu từ Master ra lệnh cho các Slave bật tắt thiết bị trên Slave đó, và đọc cảm biến về Master.
  • Để giao tiếp Modbus RTU sử dụng:

+ Master: Bộ Chuyển Waveshare Industrial USB To RS485 Converter, …

Tài liệu hệ thống Smart Farm
Hình 10: USB TO RS485 hỗ trợ Modbus RTU cho Server IoT

+ Slave (controler): Bộ Chuyển Waveshare Industrial USB To RS485 Converter hoặc Mạch Chuyển Giao Tiếp UART TTL To RS485 V3(XY-K485), …

Tài liệu hệ thống Smart Farm
Hình 11: USB to RS485 tại Slave

Tài liệu hệ thống Smart Farm
Hình 12: Module UART to RS485 tại Slave

 

 

 

 

 

 

 

 

 

+ Sensor: Có 1 số loại cảm biến tín hiệu đầu ra là RS-485 có thể đọc trực tiếp, hoặc sử dụng vi điều khiển để đọc và chuyển đổi về RS-485

2.1.5 Truyền thông Lora

  • Lora (Long Range) là một công nghệ truyền thông không dây được thiết kế để cung cấp kết nối mạng từ xa, tiết kiệm năng lượng và dễ triển khai cho các ứng dụng Internet of Things (IoT) và M2M (Machine-to-Machine).
  • Công nghệ Lora có khả năng truyền thông không dây với khoảng cách xa, tiết kiệm năng lượng, lắp đặt dễ dàng.
  • Số lượng giao tiếp trên 1 kênh của lora lên đến vài trăm thiết bị.
  • Đối với hệ thống sử dụng Lora để thay thế cho những nới khó triển khai đường dây… truyền tải không dây là lựa chọn thích hợp.
  • Hệ thống sử hiện tại đang sử dụng Lora E32 -UART kết hợp với USB -UART để có thể kết nối với Server và Controler (raspberry) qua cổng USB giao tiếp.

Tài liệu hệ thống Smart Farm
Hình 13: Lora Slave sử dụng E32 kết nối với raspberry để giao tiếp giữa server và slave

2.2 Web

  • Trang web được thiết kết dùng để quản lý các qui trình của farm và điều khiển thiết bị.
  • Web bao gồm: Lịch sản xuất, hồ sơ sản xuất, quản lý tưới tiêu, quản lý nông trại, thiết bị phần cứng, quản lý người dùng
  • Lịch sản xuất: Ghi nhận ngày tháng gieo trồng, trạng thái, giống cây trồng…
  • Hồ sơ sản xuất: quản lý hồ sơ sản xuất, xuất nhập tồn, nhật ký máy móc…
  • Quản lý tưới tiêu: Lịch tưới tiêu theo từng loại giống, từng lịch trình khác nhau. Quản lý mẫu tưới tiêu cho từng loại giống
  • Quản lý nông trại: nơi chứa thông tin nông trại, giống cây trồng, lịch gieo trồng, sản phẩm và quản lý kho
  • Thiết bị phần cứng: Thông tin từng thiết bị, sensor, …
  • Quản lý người dùng: Khởi tạo, phân quyền quản lý cho từng người dùng với từng mục đích khác nhau

Tài liệu hệ thống Smart Farm
Hình 14: Bảng chức năng wen quản lý

2.3 App (Ứng dụng điện thoại)

  • App: Điều khiển thiết bị, giám sát nông trại từng khu vực được phân quyền. Hỗ trợ cấu hình thiết bị, giao thức … cho nhân viên kỹ thuật…
  • Cài đặt được trên tất cả các điện thoại Android
  • Giao diện người dùng dễ dàng sử dụng, thao tác dễ dàng trên các mục có hình ảnh nhận diện
  • Hiển thị trạng thái hoạt động thiết bị, chỉ số giám sát môi trường từ các cảm biến theo từng khu vực
  • Điều khiển từ xa thông qua app và khi mất kết nối có thể điều khiển bằng mạng cục bộ…
  • Giao diện đăng nhâp
  • Đăng nhập theo tài khoản và mật khẩu được cấp theo từng người

Tài liệu hệ thống Smart Farm
Hình 15: Giao diện đăng nhập trên app

 

  • Thư mục gồm có: Chọn nông trại cho người trồng, Cấu hình cho nhân viên kỹ thuật, bảo trì

Tài liệu hệ thống Smart Farm
Hình 16: Thư mục chức năng trên app của Smart Farm

  • Giao diện điều khiển và sensor:

+ Điều khiển và trạng thái thiết ở Thiết bị (đánh dấu vòng cam)

+ Trạng thái, chỉ số cảm biến ở Cảm biến (đánh dấu vòng hồng)

Tài liệu hệ thống Smart Farm
Hình 17: Bảng điều khiển và hiển thị trạng thái thiết bị và cảm biến

3. Phát triển

  • Server là 1 máy tính mini với khả năng xử lý cùng lúc nhiều chức năng, khả năng nâng cấp phát triển dễ dàng
  • Bộ điều khiển dễ dàng tích hợp module mở rộng, tăng số lương thiết bị lớn (tối đa 200 I/O trên 1 bộ điều khiển kết nối thêm module)
  • Sự lựa chọn giữ 2 dạng truyền thông.
  • Modbus:

+ RTU RS-485: Thông tin nhanh, chuẩn xác, số lượng 32 Slave trên 1 master đủ để điều nhiều thiết bị, 32 trạm, tủ điện

+ TCP/IP: Kết nối với nhau dưới dạng IP mạng, 256 IP tương đương 256 Slave. Thông tin phản hồi nhanh chuẩn xác, hạn chế nhiễu thông tin

  • Lora: Mạng truyền thông không dây, đáp ứng truyền tải ở khoảng cách xa (2 -8 km), ít tốn năng lượng, hạn chế dây dẫn.
  • Có thể tích hợp Modbus để điều khiển thiết bị và sử dụng lora để đo lường và ghi nhận thông tin từ cảm biến. Tối ưu hóa quá trình điều khiển và phản hồ chuẩn xác từ thiết bị trong thời gian ngắn. Đảm bảo thẩm mỹ trong không gian canh tác từ việc lắp đặc sensor với mạng truyền thông không dây lora.