Tham dự Tech Lounge

Tham dự Tech Lounge


Chia sẻ học code IoT với Raspberry Pi: không khó, anh em dev phần mềm có thể làm quen rất nhanh

Duy Luân
17/8/2019 22:9Phản hồi: 84
Chia sẻ học code IoT với Raspberry Pi: không khó, anh em dev phần mềm có thể làm quen rất nhanh
Hôm qua trong bài Raspberry Pi dành cho ai, mình nhận thấy nhiều anh em quan tâm đến việc học hỏi, tìm hiểu phát triển các ứng dụng IoT cho doanh nghiệp của anh em hoặc chỉ đơn giản là để học cho biết. Mình chia sẻ một chút kinh nghiệm mà mình tìm hiểu được thông qua vài dự án IoT thực tế để anh em tham khảo nhé. Ở đây mình không bàn tới mấy con MCU hay cụ thể là mấy mạch Arduino tại mình thấy nó phức tạp với mình quá.

IoT có khó không?


Với một thằng ngoại đạo như mình (không biết gì về điện, điện tử, cơ học...) thì hồi xưa mình nhìn vào IoT như một thế giới mà mình không bao giờ rờ tới được. Gì mà dây điện rồi nối mạch rồi tụ điện các thứ.

Nhưng khi nhu cầu về việc ghi nhận dữ liệu BẰNG MỘT CÁI MÁY TÍNH NHỎ GỌN, thì mình bắt đầu nhận thấy sự tương đồng giữa việc phát triển IoT với kĩ thuật phần mềm (là cái mình rành, ví dụ như code backend, giao diện này nọ). Bạn có thể tận dụng Raspberry Pi hoặc Orange Pi hoặc bất kì một thiết bị điện toán cỡ nhỏ nào để xây dựng ứng dụng của mình trên đó. Khi bạn cần cảm biến nào thì gắn vào Pi, lúc đó code của bạn sẽ đọc dữ liệu từ cảm biến (ví dụ: đọc nhiệt độ theo độ C), còn xử lý tiếp như thế nào là tùy bạn (gọi lên server để lưu trữ, chuyển sang một thiết bị IoT khác trong mạng để bật tắt theo điều kiện...)

dien_tu_omega.jpg
Đây cũng là một dạng máy tính nhỏ gọn chạy Linux nè, bạn không nhất thiết phải dùng tới mấy cái linh kiện điện, điện tử để làm quen. Bộ này mình mua lâu rồi mà cũng không dùng mấy, giờ chỉ yếu xài Raspberry Pi

Việc này cũng giống y hệt như việc bạn đang có trong tay một cái máy tính, và bạn gắn thêm các thiết bị ngoại vi như chuột, bàn phím, webcam... thôi chứ chẳng khác gì cả. Mọi nguyên tắc của việc phát triển, xây dựng phần mềm đều áp dụng y chang, bạn cũng có thể connect mạng nữa do Pi có sẵn Wi-Fi và cổng LAN. Chỉ khác là chiếc Raspberry Pi và những thiết bị IoT nói chung nó nhỏ gọn hơn nhiều.

Ở đây mình chia sẻ về Pi dưới góc độ của một công ty cần đưa IoT vào việc vận hành của mình, chứ mình không nhắm tới việc tạo ra các sản phẩm IoT để đem bán hay thiết kế ra những món đồ nhỏ gọn. Cái đó không phải là mối quan tâm của mình.

Tóm lại, việc bạn bắt đầu xây dựng các ứng dụng IoT không hề khó, và bạn nào đang làm developer thì thậm chí còn thấy rất quen thuộc.

Từ từ khi nhu cầu nâng cao, bạn phải dùng tới các module không có sẵn trên thị trường, thì mới phải đụng tới mấy cái điện tử, nối mạch các kiểu.

IoT có thể phát triển bằng ngôn ngữ nào?


Mình thấy nhiều dự án IoT được viết bằng ngôn ngữ C++, nhưng mình thì không biết gì về ngôn ngữ này. Cái mình quen thuộc là Python, JavaScript, Java... và may mắn là con Pi hỗ trợ rất tốt cho việc này. Bạn có thể dùng code Python để đọc barcode từ máy quét đưa vào, bạn có thể dùng JavaScript hoặc Python để đọc nhiệt độ từ cảm biến, hay viết hẳn thành một web server để nhận thông tin từ các thiết bị gửi về con Pi để xử lý... Tất cả đều có thể làm quen và tiếp cận rất dễ dàng nhé. Bạn không nhất thiết phải biết C++ để làm việc này.

Sẵn tiện nếu bạn nào có làm Docker thì chạy Docker trên Pi cũng ngon lắm 😁 mình triển khai toàn bộ bằng Docker cho tiện quản lý, cấu hình, và tự động hóa cao.

4749630_TenRen_tien_do_lam_nuoc.jpg
Cái giao diện này thực chất là một trang web viết bằng JavaScript, server của web chạy ngay trên con Raspberry Pi, nó xuất hình ảnh ra màn hình bằng cổng HDMI cũng có sẵn trên con Pi

IoT có tốn kém không?

Quảng cáo


Tùy dự án, nhưng nếu chỉ để bắt đầu với các dự án nhỏ thì không đắt, bạn có thể mua con Raspberry Pi Model 3 với giá tầm 700k-800k hoặc Orange Pi với giá từ 300k đến 800k tùy model, sau đó mua thêm mấy cái cảm biến tầm chục nghìn đến trăm nghìn là đã có thể bắt đầu học hỏi rồi.

Mình còn nhớ dự án IoT đầu tiên của mình là đọc barcode bằng Raspberry Pi. Đầu đọc barcode có mấy loại rẻ rẻ trên thị trường tầm 800k-1 triệu (công ty có sẵn, mình lấy xài luôn, khỏi mua), con Raspberry Pi mua lại của mod @TDNC với giá chỉ 500k, vậy là đã có thể học hỏi rồi đấy :D Phần lớn thời gian của mình dành cho việc viết phần mềm (hay gọi hoa mỹ là firmware cho con IoT của mình chạy).

Làm sao để update phần mềm của vài trăm con Pi cùng lúc?


Cái này hay ho mình muốn chia sẻ với anh em. Bình thường máy tính của chúng ta khi cần update thì phải vào Settings này nọ, nhưng con Pi của mình sẽ được triển khai khắp cả nước với số lượng lên tới cỡ 200 máy. Mình không thể nào đi từng con để mà update, việc update từ xa từng con 1 cũng quá tốn thời gian và nhân lực.

Mình tìm hiểu nhiều giải pháp thì thấy có một đơn vị rất hay tên là Balena.io (trước đây tên là Resin.io). Balena có một hệ điều hành tùy biến của riêng họ chạy trên con Pi, nó sẽ chạy code của bạn trong các docker container, và khi update thì có thể update cả hệ điều hành lẫn code trong container cùng lúc. Chỉ với 1 câu lệnh duy nhất, code mới nhất của bạn sẽ hiện diện trên vài trăm con Pi khắp cả nước. Nghe hay đúng không :D

Phần này mình nói sơ vậy thôi, anh em nào có nhu cầu tương tự thì tìm hiểu thêm ở web https://www.balena.io nhé. Mình nói sâu quá sợ rối anh em mới bắt đầu tìm hiểu IoT hihi.

Anh em có câu hỏi nào thì hãy comment vào bài này nhé.

Quảng cáo

84 bình luận
Chia sẻ

Xu hướng

agneskrivers
ĐẠI BÀNG
5 năm
Đang tính mua một con pi rẻ rẻ cắm vào cái tivi ở nhà 😁
mính tính chơi con chromecast 3 , nó sài ổn ko?
romeo88vn
TÍCH CỰC
5 năm
@agneskrivers pi chỉ để vọc chứ tốt nhất nên mua tivibox
bEsTgAnKvN
ĐẠI BÀNG
5 năm
@ngocan17531 quá ổn !
@ngocan17531 chromecast thì lo làm gì nữa, hàng trùm nhất rồi còn gì
Là một iOS dev tự do. Thấy mod chia sẽ chủ đề IoT hay quá, muốn học để làm 1 cái gì đó. Luôn chờ đón những bài tiếp theo của mod.
Thanks.
MyVo
Bài viết bác Luân càng ngày càng hay, mình ủng hộ, bác cứ viết thật nhiều, chia sẻ những hiểu biết của bác về IoT và Raspberry Pi, mình cũng sẽ như bác !
Cảm ơn bác nhiều nha ,cho em hoi muốn học code Python thì bắt đầu từ đâu ah
TnQ NMT
TÍCH CỰC
5 năm
@Tú art Bác cho em xin link khóa học được không bác 😁:D e cám ơn trước
@TnQ NMT Bác lên trang edx.org, tìm CS50 là thấy. Hoàn toàn miễn phí trừ khi bác muốn mua certificate

Mình cũng đang tự học code đây, chẳng biết sau này có xin được việc không nữa nhưng hy vọng trời không phụ người chăm chỉ :D
TnQ NMT
TÍCH CỰC
5 năm
@Tú art Cám ơn bác :D:D mình thì công ăn việc làm oke rồi, chẳng qua rảnh nhiều nên muốn học thôi
@TnQ NMT Mình ở TPHCM ban ơi , bạn ở đâu ?
thienlong032
ĐẠI BÀNG
5 năm
Cảm ơn bác Luân.
apolong
TÍCH CỰC
5 năm
Sắp tới em tính mở Showroom chuyên về Smart Home và Điện Mặt Trời, Có bác nào quan tâm ko nè
tuan13a1
ĐẠI BÀNG
5 năm
@apolong Ko luôn nè 😁
@apolong Có cần freelancer ko bác 😁
@apolong có sản phẩm gì nổi bật mới khiến người ta quan tâm chứ
chimanhvu
ĐẠI BÀNG
5 năm
@apolong Hay đấy, cho mình ké vào học hỏi và hợp tác với
Mình đang cần viết App C++ trên môi trường QT Linux Desktop rồi post sang Pi mà mãi chưa được.
Bác nào làm rồi xin chỉ giáo 😃
JohnSirius
ĐẠI BÀNG
5 năm
@Duong_Act Quá đơn giản.
Bạn SSH vào pi rồi chạy:
sudo chown -R pi: pi /opt (bỏ dấu cách chỗ pi-pi)
sudo chmod -R 775 /opt
Sau đó vẫn dùng opt chứ không chuyển đi đâu.
@JohnSirius Chào bác !
Làm theo cách bác chỉ nó đã OK nhưng mà nó hiện lỗi mới liên quan đến plugin:
Code:
09:54:07: Starting /opt/HelloWorld/bin/HelloWorld ...
qt.qpa.plugin: Could not find the Qt platform plugin "eglfs" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: linuxfb, minimal, offscreen, vnc, webgl, xcb.
09:54:07: Remote process crashed.
Và nó lại không có các thư viện chuẩn string, iostream...

Em phải vnc vào pi rồi double click để chạy thử cực quá. Bác có giải pháp xin chỉ giáo em với.
JohnSirius
ĐẠI BÀNG
5 năm
@Duong_Act Cái này do bước thay thế ở file qmake.conf trước khi biên dịch. Bạn cần xóa tất cả và làm lại, phải đảm bảo replace
-lEGL = -LGLESv2
-lbrcmEGL = -lbrcmGLESv2
@JohnSirius Cảm ơn bác !
Để tối về em thử lại.

Còn vụ nó chỉ include được các header của QT còn các header thư viện chuẩn nó không thể tìm thấy.
Em có kiểm tra trên Pi thì thư viện chuẩn nằm trong /usr/local/include/c++/8 và đồng bộ rsync rồi.
Trên PC tìm trong raspi/sysroot/usr/local/include/c++/8 cũng có.
Nếu thêm INCLUDEPATH=home/username/raspi/sysroot/usr/local/include/c++/8 vào QT thì include được nhưng báo rất nhiều lỗi liên quan đến các flag, define.
Nhờ bác giúp em với @@.
Truong.ld
TÍCH CỰC
5 năm
Mod lập link trên google drive cho a e dễ chơi,
@Truong.ld Chính xác
Hay nè
Hay ghê
Ruiz
CAO CẤP
5 năm
Đang tính làm 1 con Pi4 cắm vào tivi cho ba ổng coi fim thay cái đầu HD player 10 năm tuổi

Nhân tiện @Duy Luân: mua Pi ở chổ nào êm?
@Ruiz Mình mua ở Proe.vn, mua deploy luôn 😆
Ruiz
CAO CẤP
5 năm
@Duy Luân Ờ,xin cám ơn 😁
ducpt1012
ĐẠI BÀNG
5 năm
Hồi trc có setup nguyên cái ubuntu server trên pi3. Set-up thành 1 server chạy web (lemp stack), tạo host-spot, các thiết bị khác kết nối vào truy cập như 1 mạng internet local, độc lập, portable-server.
asuwa
TÍCH CỰC
5 năm
Bác Luân có nhận đồ đệ ko, e khăn gói quả mướp theo ạ.
vvnieu
ĐẠI BÀNG
5 năm
sao hay vậy ta, mình đặt mua tuần trước 😁,
Thích thể loại này lắm.
gietchetad
TÍCH CỰC
5 năm
C++ thì mình mù, do ko có tài liệu nhiều như mấy cái khác. Nhưng python, java, javascript thì dễ thở rồi 😁
@Duy Luân mấy ngôn ngữ kia rõ ràng là ngon hơn C/C++ về các khoản khác nhưng khoản code nhúng thì C/C++ vẫn bá. nếu code ngon các ngôn ngữ khác, code ngon nhúng, có kiến thức tốt về điện tử thì việc tự tạo cho mình 1 hệ thống IoT mang đặc trưng riêng mình là 1 chuyện dễ dàng, lúc đó cảm thấy phê lắm, búng tay là có thể tùy chỉnh, búng tay là có thể update, upgrade, liếc mắt là biết nó lỗi chỗ nào 😃 .
bo_beoxxl
ĐẠI BÀNG
5 năm
@gietchetad Kiêu gì cũng phải đi học thêm C++ rồi
gietchetad
TÍCH CỰC
5 năm
@bo_beoxxl Mình cũng đang cố học đây. Nhưng cỏ vẻ nó khó hơn mấy cái khác nhiều
@gietchetad C/C++ nó ra đời trước các ngôn ngữ khác nhiều năm, nó được xếp vào ngôn ngữ bậc trung và gần với ngôn ngữ máy cho nên khó hơn hẳn các ngôn ngữ bậc cao khác. vì thế nên nó là lựa chọn hàng đầu cho các phần mềm hệ thống, các firmware chạy trực tiếp trên phần cứng, chỉ cần bút và giấy là ta có thể chuyển 1 đoạn code C ra được ngôn ngữ máy là mã nhị phân là biết mức độ gần gủi của nó rồi.
Mình cũng sẽ theo dõi cái này để sau tự cấu hình nhà thông minh.
Duy Luân tiếp tục viết nhé : )))
sunger
TÍCH CỰC
5 năm
Chưa có dự an nào hay ho để làm cả.

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019