Mục lục:
- Bước 1: Những gì bạn cần
- Bước 2: Chuẩn bị mô-đun Bluetooth
- Bước 3: Gắn các bộ phận
- Bước 4: Ghép nối
- Bước 5: Phần mềm
- Bước 6: Kiểm tra
Video: Cảm biến bụi Sodial trên Android: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Cách đây một năm, một người bạn của tôi có một cuộc hội thảo cuối tuần về quan trắc môi trường. Mục tiêu của hội thảo là xây dựng một cảm biến bụi kết nối với bảng pi mâm xôi để đưa dữ liệu đo đạc lên một số máy chủ cung cấp bản đồ nồng độ bụi được cập nhật thường xuyên. Bạn tôi hỏi có cách nào lấy dữ liệu cảm biến trực tiếp trên điện thoại thông minh của anh ấy để theo dõi và ghi nhật ký không. Vì vậy, tôi đã tìm kiếm trên Internet một biểu dữ liệu và thấy rằng cảm biến có giao diện UART đơn giản với giao thức 9600Baud 8N1. Nhưng làm thế nào để kết nối UART với điện thoại thông minh? Chà, điều đó thật dễ dàng. Tôi chỉ phải sử dụng một trong những mô-đun Bluetooth nhỏ phổ biến cung cấp một bộ biên dịch giả lập trên Android. Bây giờ hãy xem tôi đã làm nó như thế nào.
Bước 1: Những gì bạn cần
Bạn cần những phần sau
- Một đầu nối giao phối JST XH 7 chân cho giao diện Sodial có dây. Tôi đã mua của tôi trên Ebay.
- Mô-đun Bluetooth HC05 hoặc 06 tương thích với đầu nối UART
- Bộ chuyển đổi nối tiếp USB với giao diện mức TTL. Chúng tôi sử dụng điều này để đặt tên duy nhất cho mô-đun BT
- Cảm biến bụi Sodial SDS011. Tôi nhận được của tôi từ Ebay
- một mảnh ván
- Đầu nối USB-B
- dây điện
- Một miếng gỗ để gắn mọi thứ lên
Sau đó, bạn sẽ cần một số công cụ đơn giản:
- Một cái cưa sắt để cắt gỗ
- cái nhíp
- hàn sắt và hàn
- kìm cắt dây
- Súng bắn keo nóng
- Một mảnh ống tay silicon 8mm (không có trong hình)
Bạn có thể tải xuống biểu dữ liệu Sodial SDS011 tại đây Biểu dữ liệu Sodial SDS011
Bước 2: Chuẩn bị mô-đun Bluetooth
Mô-đun BT có giao diện UART với mức TTL. Nó có thể được cấu hình lại bằng các lệnh "AT" giống như chúng ta đã làm với modem internet trong thời cổ đại. Để kết nối nó với một chương trình đầu cuối trên máy của bạn, bạn cần điều chỉnh UART với máy tính của mình. Tôi đã sử dụng bộ chuyển đổi USB-RS232 mà tôi đã mua ở amazon. Tôi đã áp dụng một đầu nối cho mô-đun BT và định tuyến nguồn điện 3, 3V và GND từ bộ chuyển đổi sang mô-đun BT. Sau đó, tôi kết nối các dòng TxD và RxD tương ứng trong chéo. TxD từ bộ chuyển đổi USB sang RxD từ mô-đun BT và ngược lại.
Tôi có một máy linux và cutecom đã qua sử dụng. Sau khi kết nối bộ chuyển đổi USB, biên dịch là "ttyUSB0". Bạn có thể tìm thấy tên biên dịch trong thư mục "/ dev" trên máy linux của mình. Đối với người dùng windows, tôi muốn giới thiệu "hterm". Thật dễ dàng để vận hành. Gõ "AT" và bạn sẽ nhận được "AT" làm phản hồi. Sau đó gõ "AT + NameSensor" để đặt tên cho mô-đun BT là "Sensor"
Bước 3: Gắn các bộ phận
Cắt một miếng gỗ có kích thước phù hợp để lấy tất cả các bộ phận. Kết nối tất cả các tín hiệu như được chỉ ra trong sơ đồ. Bạn nên đặt một ống bọc silicon xung quanh dây để bảo vệ chúng. Hàn đầu cắm USB-B trên bảng điều khiển. Nó chỉ được sử dụng để cung cấp năng lượng. Cố định tất cả các bộ phận bằng vít trên đế gỗ. Cuối cùng dùng keo nóng các sợi cáp để cố định chúng trên gỗ.
Bước 4: Ghép nối
Cấp nguồn cho ứng dụng cảm biến bằng cách cắm nguồn điện USB. Đèn LED màu đỏ trên mô-đun BT sẽ bắt đầu nhấp nháy. Không cố gắng ghép nối nó với điện thoại thông minh Android của bạn. Bạn phải nhập mã pin. Đây là "1234". Sau khi nhập mã, điện thoại thông minh của bạn sẽ được ghép nối với mô-đun BT.
Bước 5: Phần mềm
Tôi thích viết ứng dụng Android trên chính nền tảng mục tiêu. nó giúp bạn tiết kiệm khỏi tất cả những thứ mà bạn phải quan tâm nếu bạn đang làm việc với Android Studio. Tôi đã tìm ra ba công cụ phát triển phù hợp trên chính Android
- Mintoris Cơ bản. Một trình thông dịch Cơ bản với một bộ lệnh phong phú để điều chỉnh hầu hết mọi thứ trên Android. Bạn có thể tạo lối tắt cho ứng dụng của mình. Mintoris basic không chứa trình biên dịch. Vì vậy, chắc hẳn bạn đã cài đặt Mintoris trên mọi thiết bị đang sử dụng. Nhưng bạn chỉ phải trả tiền cho nó một lần (khoảng 7 €)
- Căn bản! Trình biên dịch và thông dịch cơ bản cực tốt (tiện ích bổ sung cho một số €). Hầu như kết nối với mọi thứ trong Android và bạn có thể biên dịch các ứng dụng thực để phân phối chúng mà không cần có Basic! trên thiết bị đích. Cơ bản thật đáng buồn! thiếu các chức năng biểu đồ sơ đồ tuyệt vời của Mintoris
- AIDE là một IDE bán chuyên nghiệp để thực hiện phát triển Android trong java trên Android. Với AIDE, bạn có sự linh hoạt tối đa nhưng bạn cần phải học java. AIDE có chi phí hàng năm khoảng 50 €
Tôi đã chọn Mintoris. Trong phần này, tôi sẽ không cung cấp cho bạn hướng dẫn lập trình trong Mintoris mà chỉ mô tả ngắn gọn về các khối chức năng
Trong phần sau, ba mảng được khai báo cho hai đường dữ liệu cảm biến và dấu thời gian tương ứng. Dữ liệu dấu thời gian được sử dụng để gắn nhãn trục x của đường chéo. Sodial xuất ra hai luồng dữ liệu, mỗi luồng được chỉ định cho một kích thước hạt đặc biệt. Hai mảng dữ liệu bụi nhận các giá trị này.
WakeLock một phần
Màu văn bản 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
TextSize 24
CLS
Cửa sổ bật lên "Máy đo cảm biến bụi (c) ARJ 2017"
Global DustData (), DustDataF (), timeStamp () Global index, choice, maxData, fileName $
Dim timeStamp (59)
Bụi mờData (59)
Bụi mờDataF (59)
Dim Menu $ (4) = "tối đa 100 bộ dữ liệu", "tối đa 1000 bộ dữ liệu", "tối đa 5000 bộ dữ liệu", "tối đa 10000 bộ dữ liệu", "Thoát"
'Init các mảng
Đối với i = 0 đến 59
DustData (i) = 0
DustDataF (i) = 0
timeStamp (i) = i
Tiếp theo tôi
Tiếp theo, một menu Danh sách được định cấu hình. Điều này cho phép người dùng lựa chọn kích thước dữ liệu tối đa để thu thập. Đây chỉ là một công tắc an toàn để ngăn điện thoại thông minh hút vô số dữ liệu. Chức năng BTgetPairs $ () trả lại một danh sách với tất cả các thiết bị được ghép nối trên thiết bị android, tên và địa chỉ BT của chúng.
L ist Menu $ (), lựa chọn
'Chọn số lượng tối đa nếu dữ liệu được lưu trữ
runLevel = 1
Lựa chọn sự lựa chọn
Trường hợp 0 maxData = 100
Trường hợp 1 maxDate = 1000
Trường hợp 2 maxData = 5000
Trường hợp 3 maxData = 10000
Trường hợp 4 maxData = 0
Kết thúc Lựa chọn
'' Kết nối cảm biến
cặp mờ $ (0)
cặp $ () = BTGetPairs $ ()
Nếu cặp $ (0) = "none" Thì
In "Không tìm thấy thiết bị được ghép nối nào. BT đã được bật chưa?" In "Chương trình đã chấm dứt"
Kết thúc
Endif
Danh sách cặp $ (), thiết bị $
tên $ = ItemExtract $ (thiết bị $, 0)
địa chỉ $ = ItemExtract $ (thiết bị $, 1)
BTConnect 1, địa chỉ $
'Chờ kết nối
Tiến trình BẬT
In "Đang cố gắng kết nối với"; địa chỉ $
Đối với i = 1 đến 20
Tiến trình i / 2
Nếu BTGetstate (1) = 4 thì hãy thoát ra để đợi 1000
Tiếp theo tôi
Tiến độ TẮT
'Khi kết nối thành công với thiết bị BT
If BTGetState (1) = 4 Sau đó In "Đã kết nối" Khác In "Không thể kết nối với"; tên $
In "Chương trình đã chấm dứt"
Kết thúc
Endif
Khối tiếp theo hiển thị yêu cầu dữ liệu. Đối với mỗi phiên dữ liệu, một tệp được tự động mở và được đặt tên theo ngày và giờ. Sau đó, vòng lặp đang đọc dữ liệu cảm biến. Dữ liệu được đóng gói trong một số byte. Một tập hợp các byte được xác định bởi hai ký tự ASCII 170 và 171. Dữ liệu sau được tổ chức lại và điền vào các mảng bụi
Đồ họa đang bật
'Mở tệp dữ liệu để viết
fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"
Mở 1, fileName $, "w +" In "Tệp dữ liệu đã mở"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")
Writeln 1, "Bụi thời gian 2,5 Bụi 10"
'Điền vào mảng với dữ liệu đo được
dữ liệu $ = "" gói $ = ""
chỉ số = 0
Do trong khi maxData> 0
BTRead 1, gói $, 10
dữ liệu $ = dữ liệu $ + gói tin $
Nếu Len (data $)> = 10 Thì
Nếu (ASCII (Trái $ (dữ liệu $, 1)) = 170) & (ASCII (Phải $ (dữ liệu $, 1)) = 171) Thì
DustDataF (chỉ mục) = ASCII (Giữa $ (dữ liệu $, 2, 1))
DustDataF (index) = (DustDataF (index) + 256 * ASCII (Mid $ (data $, 3, 1))) / 10
DustData (chỉ mục) = ASCII (Mid $ (data $, 4, 1))
DustData (index) = (DustData (index) + 256 * ASCII (Mid $ (data $, 5, 1))) / 10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (DustDataF (index)) + "" + Str $ (DustData (index))
dữ liệu $ = ""
maxData = maxData-1
index = chỉ mục + 1
Nếu chỉ mục> 59 Thì chỉ mục = 0
DustData (chỉ mục) = 0
DustDataF (chỉ mục) = 0
Endif
Endif
DrawGraph ()
Chờ 100
Vòng
Đóng 1
Đồ họa Tắt
CLS Print "Chương trình đã chấm dứt"
Kết thúc
Phần cuối cùng là một chương trình con được gọi sau mỗi lần nhận dữ liệu. Nó xóa màn hình, vẽ lại sơ đồ với dữ liệu thực tế được lưu trữ trong mảng bụi và dấu thời gian.
'Vẽ các tọa độ, nhãn, dấu tích và cả các đường cong dữ liệu
Sub DrawGraph ()
'Ở chế độ Đồ họa, màn hình chuyển sang màu hiện tại
Màu 0, 0, 0
CLS
Màu 0, 0, 100
'Đặt màu đồ họa được sử dụng để vẽ các đường lưới
Màu văn bản 100, 100, 100, 50
'TextColor là màu của tiêu đề chính của lưới
TextColorA 100, 100, 100
'TextColorA được sử dụng cho tiêu đề Axis và chú thích lưới.
'Đặt kích thước của văn bản tiêu đề trục
'Tiêu đề chính của lưới có kích thước gấp 2 lần kích thước này
TextSize 20
FixDecimal 0
'Đặt để hiển thị 2 chữ số thập phân
PadDigits 2
'Vẽ lưới cho biểu đồ' Đặt phạm vi và tiêu đề của X & Y
Trục AxisX 0, 59, "Thời gian / s"
TrụcY 0, 10000, "ug / m3"
Lưới 3, "Nồng độ bụi"
'Vẽ đồ thị bụi
Màu 100, 0, 0
GraphXY timeStamp (), DustDataF ()
Màu 0, 100, 0
GraphXY timeStamp (), DustData ()
Màu văn bản 100, 0, 0
DrawText "PM2.5", 30, Int (ScreenY () - 60), 90, 1
Màu văn bản 0, 100, 0
DrawText "PM10", 30, Int (ScreenY () - 150), 90, 1
Màu văn bản 100, 100, 100, 50
Trở lại
Tải mã nguồn tại đây
Bước 6: Kiểm tra
Bật nguồn cảm biến và khởi động ứng dụng. Từ danh sách các thiết bị được ghép nối, hãy chọn một thiết bị có tên "Cảm biến". Sau khi kết nối cảm biến, màn hình sẽ bắt đầu hiển thị dữ liệu. Đồng thời tệp dữ liệu được cấp phát. Sau khi kết thúc thời trang, bạn có thể sử dụng GnuPlot để hiển thị dữ liệu. Sử dụng tệp "Test.gp" trong GnuPlot để định cấu hình GnuPlot để hiển thị tệp dữ liệu có tên "Test.dat". Bạn cũng có thể tìm thấy nó ở đây
Xem video để biết thêm chi tiết và thử nghiệm. Chúc bạn có nhiều niềm vui và nhiều ý tưởng hơn nữa!
Đề xuất:
Cảm biến siêu âm trên Robot hút bụi: 5 bước
Cảm biến siêu âm trên Robot hút bụi: Xin chào, chúng tôi có Máy hút bụi Robot Dirt Devil khoảng 3 năm nay và nó vẫn hoạt động tốt. Đó là loại M611, hơi nhỏ " ngớ ngẩn ": không quét khu vực hoặc một số bộ nhớ về nơi không hút bụi, nhưng có khả năng quay lại
Tự làm cảm biến hơi thở với Arduino (Cảm biến kéo giãn dệt kim dẫn điện): 7 bước (có hình ảnh)
Cảm biến hơi thở tự làm với Arduino (Cảm biến kéo giãn dệt kim dẫn điện): Cảm biến tự làm này sẽ có dạng một cảm biến kéo giãn dệt kim dẫn điện. Nó sẽ quấn quanh ngực / dạ dày của bạn và khi ngực / dạ dày của bạn giãn ra và co lại, cảm biến cũng sẽ như vậy, và do đó, dữ liệu đầu vào được cung cấp cho Arduino. Vì thế
Cảm biến giao diện, SPS-30, Cảm biến vật chất dạng hạt với Arduino Duemilanove sử dụng chế độ I2C: 5 bước
Cảm biến giao diện, SPS-30, Cảm biến vật chất hạt với Arduino Duemilanove Sử dụng chế độ I2C: Khi tôi đang xem xét các cảm biến giao tiếp SPS30, tôi nhận ra rằng hầu hết các nguồn đều dành cho Raspberry Pi nhưng không nhiều cho Arduino. Tôi dành một ít thời gian để làm cho cảm biến hoạt động với Arduino và tôi quyết định đăng trải nghiệm của mình ở đây để nó có thể
Cảm biến nhiệt độ và độ ẩm sử dụng năng lượng mặt trời Arduino Như cảm biến Oregon 433mhz: 6 bước
Cảm biến nhiệt độ và độ ẩm sử dụng năng lượng mặt trời Arduino As 433mhz Cảm biến Oregon: Đây là cấu tạo của một cảm biến nhiệt độ và độ ẩm sử dụng năng lượng mặt trời. Cảm biến mô phỏng một cảm biến Oregon 433mhz và có thể nhìn thấy trong cổng Telldus Net. Những gì bạn cần: 1x " 10-LED Cảm biến chuyển động năng lượng mặt trời " từ Ebay. Đảm bảo rằng nó cho biết bộ đánh bóng 3,7v
Cảm biến cảm ứng & Cảm biến âm thanh Điều khiển đèn AC / DC: 5 bước
Cảm biến cảm ứng & Cảm biến âm thanh Điều khiển đèn AC / DC: Đây là dự án đầu tiên của tôi và dự án này hoạt động dựa trên hai cảm biến cơ bản, một là Cảm biến cảm ứng và cảm biến thứ hai là Cảm biến âm thanh, khi bạn nhấn bàn phím trên cảm biến cảm ứng, đèn AC sẽ chuyển BẬT, nếu bạn nhả nó ra, Đèn sẽ TẮT và cùng