3 điểm bởi GN⁺ 2024-01-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Gộp các phần dựng hình, triển khai và điều khiển hiển thị cần thiết khi tự làm khung thông minh theo hướng chạy ngay trên thiết bị, giúp vận hành độc lập các khung dựa trên Raspberry Pi hoặc ESP32
  • Backend có thể cài cục bộ bằng Docker hoặc Home Assistant add-on, triển khai qua SSH hoặc thẻ SD đã được flash, và sau đó khung vẫn tiếp tục hoạt động mà không cần backend
  • Cảnh được tạo bằng đồ thị nút nối các sự kiện, ứng dụng dữ liệu, ứng dụng render và trạng thái; kết quả được biên dịch thành một binary duy nhất để chạy trên khung
  • Raspberry Pi hỗ trợ triển khai qua WiFi từ Pi Zero 2 W trở lên, TrueType font, SVG, dithering e-ink 6 màu, TLS, phân tích iCal, chụp ảnh bằng headless Chromium và web server riêng
  • ESP32-S3 hỗ trợ flash qua trình duyệt, render trên thiết bị, cập nhật OTA và deep sleep giữa các lần làm mới cho các tấm e-paper SPI của Waveshare, nhưng mỗi ảnh firmware chỉ bao gồm một driver panel đã chọn

FrameOS đảm nhiệm vai trò gì

  • FrameOS là một hệ điều hành dùng để tạo các khung thông minh tự chạy như lịch, dashboard hoặc khung nghệ thuật bằng cách kết hợp Raspberry Pi hoặc ESP32 với màn hình
  • Nhắm tới các màn hình e-ink, HDMI và LCD, và việc render được xử lý ngay trên thiết bị
  • Hoạt động không cần đám mây hay đăng ký thuê bao, và được cung cấp miễn phí dưới giấy phép mã nguồn mở AGPL-3.0 từ năm 2023
  • Backend có thể được cài bằng Docker, và kho dự án nằm trên GitHub

Quy trình cài đặt và triển khai

  • FrameOS cấu hình khung theo luồng cài backend, kết nối phần cứng và triển khai cảnh
    • Chạy backend trên laptop, server hoặc NAS bằng một lệnh duy nhất, hoặc cài dưới dạng Home Assistant add-on
    • Kết nối Raspberry Pi hoặc ESP32 với màn hình
    • Chọn cảnh dựng sẵn hoặc tự thiết kế rồi triển khai
  • Backend không phải là dịch vụ thuê bao mà hoạt động như một ứng dụng web cục bộ
  • Việc triển khai được thực hiện qua SSH hoặc thẻ SD đã flash, sau đó khung có thể chạy độc lập mà không cần backend
  • Có thể kết nối hơn 120 panel được hỗ trợ, và với Raspberry Pi cũng có thể dùng cáp HDMI
  • Khung được điều khiển bằng mã QR riêng và HTTP API; HTTP API trên ESP32 hiện vẫn còn ở mức thử nghiệm

Cách chỉnh sửa và chạy cảnh

  • Cảnh được cấu hình trong một trình biên tập trực quan được hậu thuẫn bởi mã nguồn thực tế
  • Cấu trúc cảnh được chia theo dạng đồ thị nút
    • Màu đỏ: sự kiện
    • Màu xanh lá: ứng dụng dữ liệu
    • Màu xanh dương: ứng dụng render
    • Màu vàng: trạng thái
  • Cảnh đã cấu hình được biên dịch thành một binary duy nhất và chạy trên khung
  • Có thể cài đặt gallery tuyển chọn, lịch, lịch trình, bảng tin nhắn, thời tiết, webcam và cảnh AI art chỉ với một cú nhấp, đồng thời chỉnh sửa đến cấp độ mã nguồn

Lựa chọn giữa Raspberry Pi và ESP32

  • FrameOS hoạt động tốt nhất trong môi trường Linux thực tế, nhắm tới Raspberry Pi từ Pi Zero 2 W giá $15 trở lên
  • Trong môi trường Raspberry Pi, có thể triển khai qua WiFi mà không cần flash lại firmware
  • Trên khung nền Linux, có thể tận dụng các tính năng sau
    • TrueType font và SVG ở mọi độ phân giải
    • Dithering cho e-ink 6 màu
    • TLS
    • Phân tích iCal
    • Chụp ảnh bằng headless Chromium
    • Web server của chính khung
  • Nếu muốn một khung không dây, có thể chạy trên ESP32-S3 cho các tấm e-paper SPI của Waveshare
  • Cấu hình ESP32-S3 hỗ trợ flash qua trình duyệt, render cảnh trên thiết bị, cập nhật OTA và chạy bằng pin thông qua deep sleep giữa các lần làm mới
  • Mỗi ảnh firmware ESP32 chỉ bao gồm một driver panel đã chọn

Tạo vỏ và ví dụ hoàn thiện

  • FrameOS Case Maker tạo vỏ enclosure tham số hóa để in 3D theo các panel được hỗ trợ và bố cục Raspberry Pi
  • Người dùng có thể chọn mẫu, điều chỉnh độ sâu và viền, rồi thêm tùy chọn treo tường, chân chống, lỗ cắt USB-C và trụ vít để tải xuống STL
  • Case Maker sử dụng cùng cơ sở dữ liệu phần cứng như tài liệu để cung cấp kích thước mặc định cho các cấu hình Waveshare và Pimoroni
  • Có thể dùng Case Maker tại Open Case Maker
  • Ví dụ hoàn thiện cho thấy trọn bộ panel Waveshare và Pimoroni Spectra 6, vỏ mỏng in 3D, nguồn USB-C và cấu hình phần mềm FrameOS

1 bình luận

 
GN⁺ 2024-01-04
Ý kiến trên Hacker News
  • Một dự án nhỏ thú vị. 2 năm trước tôi từng làm một khung ảnh eInk Arduino 7 màu để tặng, và phần vất vả nhất là phải tự cắt ảnh, dithering và căn bảng màu sao cho hiển thị trên màn hình trông tạm ổn
    Nếu FrameOS xử lý thay việc này thì chắc tôi đã tiết kiệm được vài giờ chỉnh sửa và thử nghiệm thủ công
    Rốt cuộc năm nay việc thêm ảnh từ xa quá khổ sở nên tôi đã mua một khung ảnh Aura cho cùng người đó

    • ImageMagick có thể xử lý hàng loạt ảnh với bảng màu giới hạn. Không có lý do gì phải làm tất cả thủ công
    • Tôi muốn không ai phải tự cắt ảnh, dithering và lập chỉ mục màu nữa. Đây là phần mà phần mềm FrameOS nên xử lý
      Với những thứ như khung Inky Impression 7 màu thì đã chạy được rồi, vì phần mềm và driver tương ứng hầu hết đã xử lý việc này
  • Cái này có thể rất hữu ích cho kiosk y tế, nghệ thuật số và signage
    Nhu cầu nghệ thuật số trong bệnh viện khá lớn. Tôi từng là kiến trúc sư công nghệ của SFGH, UCSF, quản lý triển khai công nghệ tại El Camino Hospital, và giám đốc vận hành TV ở Vizio
    Tôi đã đánh giá, mua và lắp đặt những hệ thống như thế này cùng các hệ thống chỉ đường trong bệnh viện, và từng chi hàng trăm nghìn đô la cho nghệ thuật số phát lặp ở sảnh thang máy hoặc màn hình trong phòng bệnh, nhưng phần mềm thì rất tệ
    Ở sảnh El Camino Hospital, hệ thống digital signage tệ đến mức chúng tôi phải thay một số thiết bị bằng Mac Mini để phát lặp MP4 trong VLC
    Vì vậy tôi nghĩ dùng một hệ thống như thế này với Pi Zero sẽ rất hay
    Tuy nhiên có vẻ cũng có thể triển khai chỉ đường một cách thanh nhã bằng nó. Khi nói “tương tác”, tôi hy vọng điều đó có nghĩa là có thể chạy web app/app trên Pi, và khi rảnh thì quay lại phát lặp nghệ thuật số
    Thị trường nghệ thuật số, signage và chỉ đường cần một dự án mới táo bạo có thể khuấy đảo các thị trường này. Nếu giờ có Pi thì chắc tôi đã thử ngay
    Không biết có cài được lên chiếc tablet Android TCL lởm nhận từ T-Mobile không. Cũng nên xem qua việc điều khiển bóng đèn Feit Electric
    Lựa chọn sinh lợi nhất cho loại thiết bị/OS này có lẽ là signage hướng dẫn giao thông cho giao thông địa phương như BART. Chỉ cần làm sao để ngay cả người kém kỹ thuật nhất trong tổ chức cũng có thể lắp đặt, cấu hình và hiển thị mà không mắc lỗi
    Giao thông khu vực Sacramento có nhiều màn hình nhưng hầu như không có thông tin hữu ích
    Đi tàu ở APAC thì thấy có màn hình LCD trên vách phía trên hiển thị bản đồ trạng thái. Đi tàu ở Mỹ thì trên vách phía trên có nước tiểu và phân, nhưng chẳng thấy bản đồ trạng thái ở đâu

    • Nếu lắp màn hình trên tàu ở Mỹ thì rốt cuộc chắc nước tiểu và phân cũng sẽ dính lên màn hình đó
    • Lắp Mac Mini chỉ để phát file MP3 là lãng phí tiền quá mức. Dùng một máy nghe MP3 di động cực rẻ 10 đô là được
      Ở Mỹ tiền bị lãng phí như vậy, trong khi ngoài đường có người phải xin ăn, nghe thật điên rồ
    • Không biết mọi người nhìn nhận BrightSign thế nào. Phần mềm mặc định khá tệ, nhưng khả năng lập trình thì với chúng tôi rất tốt. Chúng tôi vẫn chưa đi sâu vào nó
  • Làm tôi nhớ đến Chumby. Một sản phẩm có tiềm năng thật sự lớn nhưng đã bị bỏ cuộc quá sớm
    Trong nhà có nhiều chỗ để dùng một màn hình thông minh, có thể điều khiển và ít code, nhưng tôi gần như không có thời gian tự tìm hiểu. Rất vui vì hôm nay thấy dự án này

    • Tôi đang làm một lịch eInk bán sẵn. Bạn cũng có thể tự phát triển nội dung rồi cung cấp cho màn hình dưới dạng .png hoặc .jpeg từ một URL web
      https://shop.invisible-computers.com
    • Tôi cũng không có thời gian tự tìm hiểu, nên định cứ mua một chiếc iPad cũ rồi gắn lên tường
      Có được màn hình sáng, và thứ muốn xem chỉ cần hiển thị được trong trình duyệt web là đủ
  • Thật tuyệt. Năm ngoái tôi đã làm một bộ script trao đổi ảnh e-ink qua Gmail và đặt tên là DispatchPi; nếu có chương trình như thế này thì chắc việc phát triển đã nhanh hơn nhiều
    https://github.com/malcolmosh/dispatchPi/blob/main/README.md
    Lúc nào cũng phải SSH vào Pi bằng terminal, rồi cập nhật script bằng FileZilla FTP client và VSCode nên khá phiền
    Tôi vừa hoàn thành một dự án dashboard và sắp công bố, đồng thời cũng đang nghĩ đến việc đổi driver của khung sang ESP32 để chạy bằng pin. Vì ESP32 tiêu thụ điện ít hơn Pi Zero rất nhiều
    Nếu có thời gian thì tôi xin góp một phiếu cho khả năng tương thích ESP32

    • Không biết việc phát triển ESP32 đã đi đến mức nào. Render ảnh không đơn giản như tôi tưởng. Trong trường hợp của tôi, màn hình là LCD chứ không phải eInk
      Thay vì cố hiển thị ảnh bất kỳ bằng thư viện ESP, việc chuẩn hóa ảnh về kích thước và định dạng cụ thể trước khi gửi sang ESP32/màn hình dễ và ổn định hơn
    • Không biết bạn dùng phần cứng nào. Gần đây tôi vừa hoàn thành một dự án tương tự và muốn làm thêm với e-ink, nhưng bo mạch driver cắm vào Pi lại đắt ngang màn hình e-ink
  • Hình ảnh đầu tiên trên trang là trình biên tập, và chà, thật sự rất ấn tượng. Trong phần mô tả có đoạn này
    “Diagram Editor: giao diện kéo-thả để kết hợp các ứng dụng Nim thành các cảnh. Có thể fork và chỉnh sửa các ứng dụng sẵn có như ‘OpenAI image’, ‘Text overlay’ để phù hợp với nhu cầu. Mọi trường đều có thể được ghi đè bằng các đoạn mã inline.”
    Trông thật sự rất tinh tế. Có vẻ đã tốn một khối lượng công việc khổng lồ. Tôi tò mò nó được làm bằng gì, và cũng tò mò liệu trình biên tập có được viết bằng Nim không
    Sau khi tạo cảnh xong, tôi cũng tò mò nó sẽ chạy cái gì. Không rõ là nó chạy một runtime tương tự trình biên tập nhưng có chế độ trình chiếu, hay là sinh ra một chương trình Nim mới để chạy các chương trình Nim khác
    Tôi cũng tò mò các app được gọi từng lần một, hay chúng chạy liên tục và giao tiếp bền vững với nhau. Điều gì kích hoạt việc bắt đầu một frame, và việc tổng hợp được thực hiện như thế nào
    Dù đang được dùng cho smart frame, tôi có cảm giác thực ra họ đã tạo ra một hệ thống lập trình dựa trên luồng đa dụng rất tuyệt

    • Cảm ơn phản hồi
      Bản thân trình biên tập/bộ điều khiển là một ứng dụng React+Kea, phần diagram dùng React Flow, còn backend là Flask
      Hiện tại, để kiểm tra app bạn tạo có hoạt động không, bạn phải triển khai lên frame. Nếu dùng RPi 5 nhanh để thử nghiệm thì vòng phản hồi thường khoảng 30 giây, Zero W2 khoảng 1 phút, Zero W khoảng 2 phút. Điều này chưa lý tưởng nên tôi muốn cải thiện
      Lý tưởng nhất là tôi muốn dùng JS backend của Nim để tạo một “frame” có thể chạy ngay trong trình duyệt để kiểm thử
      Trả lời các câu hỏi khác: hệ thống FrameOS chạy khi khởi động, và mọi app được biên dịch vào một binary duy nhất rồi chạy theo chỉ dẫn của cảnh. Khi một render event được truyền tới, một frame mới sẽ được render; sự kiện này có thể tự động phát sinh định kỳ hoặc phát sinh theo yêu cầu
      Frame gửi log về bộ điều khiển, nhưng ngoài việc đó ra nó có thể hoạt động hoàn toàn độc lập
    • Chỉ nhìn ảnh chụp màn hình thì giống dear imgui. Có thể thấy widget tương tự ở đây: https://github.com/TimoSalomaki/awesome-dear-imgui
      Sửa: tôi đã nhầm, thực ra là React Flow
      https://github.com/FrameOS/frameos/blob/037af53e94a3b47ce5df...
      https://reactflow.dev/
  • Trông thật sự thú vị. Tôi hiểu thế này có đúng không: đây thực ra không phải OS, mà là phần mềm chạy trên OS của Pi?

    • Về mặt kỹ thuật thì đúng. Và đó cũng là kiểu đúng tốt nhất, nhưng câu hỏi này có một chút sắc thái
      FrameOS là một binary đã biên dịch chạy trên Linux. Hiện tại, trước khi cài chính FrameOS, bạn cần cài “Raspberry Pi OS Lite” không có môi trường desktop lên thẻ SD. Vì vậy có thể xem nó là “chỉ là một ứng dụng”
      Tuy nhiên, đó là vì dự án còn ở giai đoạn đầu và đây là cách nhanh nhất để bắt đầu. Bước tiếp theo là xem có thể loại bỏ được đến đâu. FrameOS là một binary đơn được biên dịch tĩnh nên có thể không cần nhiều thứ ngoài kernel Linux. Khi đó nó có trở thành OS thật không? Android cũng dùng kernel Linux nhưng được xem là một OS riêng
      Khi được kích hoạt, FrameOS chiếm quyền toàn bộ hệ thống, có các thư mục apps/drivers/ riêng, và ở nhiều khía cạnh đã hoạt động như một hệ điều hành. Tôi cũng đang cân nhắc chạy nó trên ESP32, có lẽ sẽ cần thêm drivers/wifi/. Nếu nó chạy mà không có bất kỳ OS nào bên dưới, lúc đó có đáng gọi là OS không? Cái đó để mọi người tự đánh giá
      Nếu hỏi tôi đây có phải hệ điều hành không, thì với tôi là có, nhưng nhìn khác đi cũng được
      Ở công việc chính của tôi tại PostHog, đôi khi họ tự gọi mình là “Product OS”, điều này còn khó chịu hơn. Vì một tập hợp web app rõ ràng không phải hệ điều hành theo nghĩa truyền thống. Tôi cũng đã thấy hậu tố -OS được gắn vào những thứ không phải hệ điều hành thuần túy. Hơi khó chịu, nhưng chủ yếu là vì tôi từng sống trong thời mà câu “bạn dùng OS nào?” là câu hỏi phân định bản sắc
      Ngôn ngữ đang thay đổi, và có vẻ “hệ điều hành” giờ đây chỉ nhiều thứ hơn những gì tôi và bạn nghĩ, tùy từng người
    • Có vẻ là vậy. Nếu thế thì khả năng cao nó cũng có thể chạy trên các board khác chỉ với sửa đổi nhỏ
    • Đúng vậy. Trông nó giống một ứng dụng toàn màn hình có thể điều khiển từ xa hơn
    • Tôi thật sự tò mò OS là gì. Không nói mỉa đâu. “OS” hiện là một thuật ngữ được định nghĩa khá lỏng. Android và Ubuntu dùng gần như cùng một kernel, nhưng rõ ràng là các hệ điều hành rất khác nhau
      FrameOS dùng Nim, nên có thể port để chạy bare-metal không cần kernel. Nhờ async dispatch, Nim cũng cung cấp multitasking hợp tác nhẹ
      Hiện tại có thể xem FrameOS là một OS chỉ chạy trên kernel Linux, hoặc nếu muốn thì là user space. Nhưng không có lý do gì khiến nó không thể được port để chạy trực tiếp trên vi điều khiển
  • Trông rất ngầu. Tôi đã muốn thiết lập một màn hình e-ink cùng với Home Assistant, nên sẽ thử xem cái này
    Trong bài “Why FrameOS” có một bức ảnh trông giống màn hình e-ink đang hiển thị dashboard Home Assistant, và bên dưới ghi “nhưng phần mềm thì là một mớ hỗn độn”. Tôi tò mò chính xác đã có vấn đề gì trước khi tạo FrameOS. Ít nhất trong ảnh thì trông nó hoạt động ổn
    Tôi cũng tò mò câu này thực sự có nghĩa là gì: “GPT4 Support: Hãy nhờ LLM yêu thích của bạn viết và debug ứng dụng FrameOS.”

    • Tác giả đã tích hợp GPT-4 vào app builder dùng để tạo giao diện tùy chỉnh của FrameOS, để có thể yêu cầu GPT cải thiện mã nền. https://frameos.net/blog/gpt4-support
      Ngay khi thấy điều này, tôi cảm nhận rằng xu hướng các ứng dụng mới trong tương lai sẽ tích hợp LLM ngay từ đầu đã được xác nhận. Chẳng có lý do gì để không làm cả. Nếu dùng LLM đúng cách, nó có thể cải thiện đáng kể trải nghiệm người dùng trong hầu hết mọi ứng dụng
    • Về ChatGPT, có vẻ như đây là một câu đùa khéo léo nhằm nhấn mạnh rằng đây là sản phẩm không cần tích hợp thêm
      Kiểu đùa rằng không cần phải làm một thứ gì đó như cloud AI xã hội tự lái dựa trên blockchain đang bán chạy trên thị trường private equity hiện nay
  • Có lựa chọn thay thế tốt nào để không biến Amazon Fire tablet cũ thành rác thải điện tử không? Nó chạy nền Android

    • Chỉ cần dùng Fire Toolbox để vô hiệu hóa tất cả các ứng dụng mặc định không cần thiết. Nếu mua license Fully Kiosk, bạn có thể biến nó thành nhiều mục đích thực dụng
      Cá nhân tôi dùng Amazon Fire tablet trong nhà làm audio driver cho Snapcast. Mỗi tablet đều có USB, Wi-Fi, cổng Aux 3,5 mm và pin tích hợp, nên rất phù hợp cho mục đích này; lúc giảm giá chỉ 45 USD một chiếc nên đặc biệt ổn
    • Tôi tò mò vấn đề ở đó là gì. Chẳng phải chỉ cần cài bất kỳ ứng dụng Android nào rồi hiển thị lên là được sao?
    • Bootloader bị khóa. Nếu tôi nhớ đúng thì mẫu 2015 là mẫu cuối cùng có thể mở khóa nhờ một lỗi cho phép nối tắt một số chân
      Nếu không có bootloader đã mở khóa, bạn có thể root Android nhưng không thể thay thế chính Android hay ROM
      Dù sao cũng không có nhiều ý nghĩa. Vì là MediaTek, cấu trúc partition và mô hình driver thời đó nhìn chung khá hỗn loạn. Sẽ khó để FrameOS chạy trên phần cứng đó một cách hợp lý và thanh nhã
  • Thực sự rất tuyệt. Có nhiều dự án cố gắng sao chép những thứ tương tự, nhưng rất hiếm cái nào có độ hoàn thiện đến mức này, đặc biệt ở khâu chế tạo
    Cá nhân tôi muốn nó hỗ trợ các thiết bị eINK tiết kiệm điện có tích hợp ESP32 như dòng InkPlate. Dù vậy, nhìn cái này cũng khiến tôi cân nhắc chuyển sang Pi

    • Tôi cũng mong FrameOS hỗ trợ ESP32. Mới hai ngày trước FrameOS còn là một ứng dụng Python chậm và chạy qua interpreter. Hôm nay nó là một binary liên kết tĩnh 3 MB
      Tài nguyên sẽ rất eo hẹp và có lẽ phải cắt bỏ một số tính năng như threading, nhưng về lý thuyết thì có thể chạy được
      Tuy nhiên vẫn còn nhiều việc phải làm để khiến bản Raspberry thật tốt, nên hiện tại tôi chưa có kế hoạch đảm nhận việc này
  • Thật vui khi có thêm phần mềm xuất hiện trong lĩnh vực này
    Hơi liên quan gián tiếp, nhưng tôi đang tìm một màn hình từ 32 inch trở lên có thể dùng làm khung ảnh. Ngoài Samsung The Frame, tôi chưa tìm thấy sản phẩm nào khác, điều này khá đáng ngạc nhiên đối với một use case đơn giản như vậy
    Đến giờ tôi tìm được chừng này. TV và màn hình máy tính không có mức tiêu thụ điện phù hợp để bật 24/7. E-ink màu thường tối đa khoảng 13 inch. Samsung The Frame có tính năng và ngoại hình tốt nhưng đắt, và còn có nhược điểm là Samsung
    Tôi tò mò liệu có sản phẩm nào đáng giới thiệu không

    • Tôi tò mò một thiết bị khung ảnh chuyên dụng có thể tiết kiệm điện hơn màn hình TV thông thường như thế nào. Cuối cùng chẳng phải cũng quy về cùng những linh kiện cơ bản đó sao?