Lắp ráp mũ bảo hiểm thông minh tại nhà
Mũ bảo hiểm có tầm quan trọng to lớn đối với người đi xe đạp và hầu hết chúng ta đều thấy rằng nó đã cứu được mạng sống của con người. Nếu một người đội mũ bảo hiểm, nguy cơ chấn thương đầu và não sẽ giảm đáng kể. Những chiếc mũ bảo hiểm thông thường dễ bán trên thị trường không đảm bảo an toàn 100% vì không có tính năng phát hiện nồng độ cồn, không thông báo sau tai nạn, v.v. Các tính năng mà tôi đã đề cập đều có trong Mũ bảo hiểm thông minh mà hầu hết những người đi xe đạp hạng nặng thường mặc và nó có giá khoảng 300-400 đô la. Lưu ý điều này hôm nay, tôi sẽ thiết kế một Mũ bảo hiểm thông minh thân thiện với ngân sách sẽ có các tính năng như phát hiện rượu, thông báo tai nạn, theo dõi GPS, v.v. Mũ bảo hiểm này có thể dễ dàng thiết kế tại nhà mà không phức tạp nếu một người có một số kiến thức về mạch và anh ta / cô ấy có thể thực hiện một số mô phỏng dựa trên phần mềm. Làm theo từng bước quy trình dưới đây để hoàn thành dự án này.
Làm thế nào để lắp ráp các thành phần điện tử cơ bản với mô-đun GSM?
Tốt hơn là nên vẽ một bản phác thảo sổ tay thô của mũ bảo hiểm trước khi bắt đầu dự án này vì nó sẽ cho phép chúng tôi hiểu vị trí của các thành phần tốt hơn và lắp ráp mạch sẽ dễ dàng cho chúng tôi. Một cách tuyệt vời trước khi bắt đầu công việc là lập một danh sách đầy đủ tất cả các thành phần để tiết kiệm thời gian và tránh nguy cơ bị mắc kẹt ở giữa dự án. Dưới đây là danh sách đầy đủ của tất cả các thành phần dễ dàng có sẵn trên thị trường:
Bước 1: Các thành phần được sử dụng (Phần cứng)
Bước 2: Các thành phần được sử dụng (Phần mềm)
Bước 3: Sơ đồ khối
Để chứng minh hoạt động tốt của mũ bảo hiểm, tôi đã lập một sơ đồ khối được hiển thị bên dưới:
Bước 4: Nguyên tắc làm việc
Tất cả các loại bảng Arduino đều có thể được sử dụng trong dự án nhưng tôi thích Arduino Nano hơn vì hai trong số chúng sẽ được đặt bên trong mũ bảo hiểm và chúng đòi hỏi ít không gian hơn. Tôi đã sử dụng cảm biến Độ cồn MQ-3 để xác định lượng Cồn mà người lái xe đã uống và mức này được chỉ báo bằng đèn LED Bi-Color. Nếu người lái xe đã uống một lượng lớn rượu, đèn LED sẽ bật Màu đỏ và thông báo SMS được gửi đến số được đề cập trong mã thông qua GPS. Nếu đèn LED quay Màu vàng có nghĩa là mức độ cồn vừa phải và nếu nó chuyển sang màu xanh lá điều đó có nghĩa là người lái xe không say. Do đó, điều này đảm bảo sự an toàn của người lái xe và nguy cơ xảy ra tai nạn được giảm thiểu đến mức thấp nhất. Các Thiết bị cảm biến sóng siêu âm sẽ được đặt ở phía sau mũ bảo hiểm và nó sẽ tiếp tục tính toán khoảng cách giữa người lái và các phương tiện ở phía sau. Nếu một chiếc xe đang tiếp cận người lái với tốc độ rất cao, cảm biến siêu âm sẽ gửi tín hiệu đến Arduino để kích hoạt còi và do đó người lái sẽ tránh sang một bên và để xe chạy qua. Tôi đã bao gồm Mô-đun GPS để gửi cảnh báo đến số điện thoại di động cụ thể trong trường hợp xảy ra tai nạn. Để phát hiện tai nạn, cảm biến rung động được bao gồm trong mạch có thể được điều chỉnh đến một mức độ rung cụ thể và ngay lập tức yêu cầu mô-đun GSM gửi thông báo đến một số số nhất định như một cuộc gọi trợ giúp. Hai Arduino sẽ được sử dụng trong dự án này. Một sẽ được kết nối với Cảm biến siêu âm và Cảm biến cồn và một sẽ được kết nối với mô-đun GSM và cảm biến rung. Sẽ có hai mạch riêng biệt sẽ được đặt bên trong mũ bảo hiểm và chúng sẽ được kết nối với cùng một loại pin. Ghi chú:Tụ điện biến đổi có trong cảm biến rung động sẽ được điều chỉnh.
Bước 5: Lắp ráp mạch trên Proteus
- Sau khi bạn tải xuống và cài đặt phần mềm Proteus, hãy mở nó. Mở một giản đồ mới bằng cách nhấp vào ISISbiểu tượng trên menu.
- Khi giản đồ mới xuất hiện, hãy nhấp vào Pbiểu tượng trên menu bên. Thao tác này sẽ mở ra một hộp trong đó bạn có thể chọn tất cả các thành phần sẽ được sử dụng.
- Bây giờ gõ tên của các thành phần sẽ được sử dụng để tạo mạch. Thành phần sẽ xuất hiện trong danh sách ở phía bên phải.
- Tương tự như trên, tìm kiếm tất cả các thành phần như trên. Chúng sẽ xuất hiện trong Thiết bị Danh sách.
Bước 6: Sơ đồ mạch
Lắp ráp mạch phần cứng của bạn theo sơ đồ mạch được hiển thị bên dưới:
- Sơ đồ mạch # 1:
- Sơ đồ mạch # 2:
Bước 7: Bắt đầu với Arduino
Nếu bạn chưa quen với Arduino IDE trước đây, đừng lo lắng vì dưới đây, bạn có thể xem các bước ghi mã rõ ràng trên bảng vi điều khiển bằng Arduino IDE. Bạn có thể tải xuống phiên bản Arduino IDE mới nhất từ đây và làm theo các bước bên dưới:
- Kết nối bảng Arduino Nano với máy tính xách tay của bạn và mở bảng điều khiển. trong bảng điều khiển, nhấp vàoPhần cứng và Âm thanh. Bây giờ bấm vàoCác thiết bị và máy in.Tại đây, hãy tìm cổng mà bảng vi điều khiển của bạn được kết nối. Trong trường hợp của tôi, nó là COM14nhưng nó khác nhau trên các máy tính khác nhau.
- Chúng tôi sẽ phải bao gồm một thư viện để sử dụng Mô-đun GSM. Đi đến Phác thảo> Bao gồm Thư viện> Thêm Thư viện .ZIP.
- Nhấp vào menu Công cụ và đặt bảng thành Arduino Nano.
- Trong cùng một menu Công cụ, Đặt Bộ xử lý thành ATmega328P (Bộ nạp khởi động cũ).
- Trong cùng một menu Công cụ, hãy đặt cổng thành số cổng mà bạn đã quan sát trước đó trong Các thiết bị và máy in.
- Tải xuống mã được đính kèm bên dưới và dán nó vào IDE Arduino của bạn. Bấm vào tải lên để ghi mã trên bảng vi điều khiển của bạn.
Bước 8: Mã của dự án
Đoạn mã hơi dài dòng nhưng nó thực sự rất đơn giản. Một số phần của nó được giải thích dưới đây:
1. Lúc đầu, các thư viện được bao gồm để chúng ta có thể dễ dàng giao tiếp với các thiết bị ngoại vi đặc biệt.
#include "Adafruit_FONA.h" #includeSoftwareSerial fonaSS = SoftwareSerial (FONA_TX, FONA_RX); SoftwareSerial * fonaSerial = & fonaSS; Adafruit_FONA fona = Adafruit_FONA (FONA_RST);
2. Sau đó, các chân được xác định trên Arduino nano sẽ được sử dụng để kết nối các cảm biến bên ngoài với bộ vi điều khiển. Các chân này sẽ chịu trách nhiệm về Input và Output của dữ liệu trong vi điều khiển.
#define FONA_RX 2 #define FONA_TX 3 #define FONA_RST 4 // cảm biến rung #define VS 10 #define R 2 #define Y 4 #define MQ3 A0 # xác định buzzer 9. #define triggerPin 7 // kích hoạt trên chân 7 #define echoPin 8 // tiếng vang trên chân 8
3. Sau đó, các biến khác nhau được khởi tạo mà sau này sẽ được sử dụng trong các quy trình tính toán trong thời gian chạy mã. Một bộ đệm cũng được tạo ra sẽ được sử dụng với mô-đun GSM.
int gaslevel; // đây là bộ đệm lớn cho các câu trả lời char replybuffer [255]; uint8_t readline (char * buff, uint8_t maxbuff, uint16_t timeout = 0); loại uint8_t; int vs = 10; int shockVal = CAO;
4. void setup ()là một chức năng chỉ được thực thi một lần khi bộ vi điều khiển được bật nguồn hoặc nút bật được nhấn. tốc độ truyền được đặt trong chức năng này về cơ bản là tốc độ tính bằng bit trên giây mà vi điều khiển giao tiếp với các cảm biến bên ngoài. Tất cả các chân của Arduino được khởi tạo ở đây và chúng sẽ được sử dụng để lấy đầu vào từ cảm biến hoặc gửi đầu ra đến một thiết bị khác. Mô-đun GSM cũng được khởi tạo trong chức năng này.
void setup () {Serial.begin (9600); // chúng ta sẽ bắt đầu giao tiếp nối tiếp, vì vậy chúng ta có thể thấy khoảng cách trên màn hình nối tiếp Serial.println ("Hướng dẫn sử dụng cảm biến UltraSonic của Tech Ponder"); pinMode (triggerPin, OUTPUT); // định nghĩa các chân pinMode (echoPin, INPUT); pinMode (buzzer, OUTPUT); digitalWrite (buzzer, LOW); pinMode (MQ3, INPUT); pinMode (R, OUTPUT); pinMode (Y, OUTPUT); pinMode (so với, INPUT); while (! nối tiếp); // Serial.println (F ("FONA basic test")); // Serial.println (F ("Đang khởi tạo .... (Có thể mất 3 giây)")); fonaSerial-> begin (4800); if (! fona.begin (* fonaSerial)) {// Serial.println (F ("Không tìm thấy FONA")); trong khi (1); } type = fona.type (); // Serial.println (F ("FONA is OK")); // Serial.print (F ("Tìm thấy")); switch (type) {case FONA800L: // Serial.println (F ("FONA 800L")); phá vỡ; case FONA800H: // Serial.println (F ("FONA 800H")); phá vỡ; case FONA808_V1: // Serial.println (F ("FONA 808 (v1)")); phá vỡ; case FONA808_V2: // Serial.println (F ("FONA 808 (v2)")); phá vỡ; case FONA3G_A: // Serial.println (F ("FONA 3G (American)")); phá vỡ; case FONA3G_E: // Serial.println (F ("FONA 3G (European)")); phá vỡ; default: // Serial.println (F ("???")); phá vỡ; } // In số IMEI của mô-đun. char imei [15] = {0}; // PHẢI sử dụng bộ đệm 16 ký tự cho IMEI! uint8_t imeiLen = fona.getIMEI (imei); if (imeiLen> 0) {// Serial.print ("IMEI Module:"); Serial.println (imei); }}
5. void loop ()là một chức năng chạy lặp đi lặp lại trong một vòng lặp trong khi bộ vi điều khiển được bật. Một mã được viết cho cảm biến siêu âm mà nếu nó đo được khoảng cách nhỏ hơn một giá trị cụ thể, nó sẽ gửi tín hiệu đến còi báo động sẽ được sử dụng để thông báo cho người lái rằng có xe đang đến gần. Cảm biến khí cũng được tích hợp ở đây. Ba đèn LED được sử dụng để cho biết người lái có say rượu nặng, một phần hoặc ít hơn hay không. Nếu đèn LED màu xanh lá cây phát sáng, điều đó có nghĩa là người lái tốt để đi. Khi kết thúc hàm này, một hàm khác được gọi là viberationFun ().
void loop () {int thời lượng, khoảng cách; // Thêm thời lượng và khoảng cách digitalWrite (triggerPin, HIGH); // kích hoạt wave (như nhấp nháy đèn LED) delay (10); digitalWrite (triggerPin, LOW); thời lượng = xungIn (echoPin, CAO); // chức năng đặc biệt để nghe và chờ sóng khoảng cách = (thời lượng / 2) / 29.1; // chuyển đổi số thành cm (nếu bạn muốn inch, bạn phải thay đổi 29.1 với độ trễ số phù hợp (1000); Serial.print (khoảng cách); // in các số Serial.print ("cm"); / / và đơn vị Serial.println (""); // chỉ in ra một dòng mới if (khoảng cách <35) {digitalWrite (buzzer, HIGH); Serial.println ("Buzzer On");} digitalWrite (buzzer, THẤP ); gaslevel = (analogRead (MQ3)); gaslevel = map (gaslevel, 0,1023.0,255); if (gaslevel> 100 && gaslevel <= 300) {// gaslevel lớn hơn 100 và nhỏ hơn 300 digitalWrite (R , LOW); // Đèn LED ĐỎ tắt _delay_ms (500); // delay digitalWrite (Y, HIGH); // Đèn LED VÀNG bật _delay_ms (500);} else if (gaslevel> 300 && gaslevel <= 600) { // mức gaslevel lớn hơn 300 và nhỏ hơn 600 digitalWrite (Y, LOW); // LED VÀNG bị tắt _delay_ms (500); digitalWrite (R, HIGH); // LED RED đang bật} else {digitalWrite (R, LOW ); // đèn led đỏ tắt digitalWrite (Y, LOW); // Đèn led VÀNG đang tắt} Serial.println (gaslevel); // in các giá trị trên màn hình nối tiếp _delay_ms (100); viberationFun ();}
6. viberationFun ()là một chức năng sẽ phát hiện xem xe đạp có va chạm với một vật thể khác hay không. Nếu nó phát hiện ra bất kỳ va chạm nào, nó sẽ gửi một tin nhắn đến các số được chỉ định trong mã. Bằng cách này, tin tức về vụ tai nạn sẽ đến được với người khác, người sẽ thực hiện các bước cần thiết để cứu người cầm lái.
void viberationFun () {shockVal = digitalRead (vs); int t = 0; char sendto [11] = "SỐ CỦA BẠN"; char sendto1 [11] = "SỐ 2 CỦA BẠN"; char message [27] = "Tai nạn đã được phát hiện"; if (shockVal == HIGH || shockVal == 1) {if (t == 0) {Serial.println (shockVal); if (! fona.sendSMS (sendto, message) &&! fona.sendSMS (sendto1, message)) {Serial.println (F ("Không thành công")); } else {Serial.println (F ("Đã gửi!")); t = 1; } delay (1000); if (! fona.sendSMS (sendto1, message)) {Serial.println (F ("Không thành công")); } else {Serial.println (F ("Đã gửi!")); t = 1; }}} else {t = 0; }}
Bước 9: Lắp ráp phần cứng
Bây giờ, khi chúng ta biết các kết nối chính và cũng là mạch hoàn chỉnh của dự án của chúng ta, chúng ta hãy tiếp tục và bắt đầu tạo phần cứng cho dự án của mình. Phải lưu ý một điều là mạch điện phải nhỏ gọn và các linh kiện phải được đặt gần nhau. Veroboard là lựa chọn tốt hơn so với breadboard vì các kết nối bị lỏng lẻo trên breadboard và có thể xảy ra đoản mạch và breadboard có trọng lượng lớn hơn so với Veroboard. Mạch điện đặt trên Veroboard sẽ rất nhỏ nên có thể lắp vào bên trong mũ bảo hiểm một cách dễ dàng.
- Lấy một tấm Veroboard và chà mặt của nó với lớp phủ đồng bằng giấy nháp.
- Bây giờ Đặt các thành phần cẩn thận và đủ gần để kích thước của mạch không trở nên quá lớn.
- Cẩn thận thực hiện các kết nối bằng cách sử dụng sắt hàn. Nếu có bất kỳ lỗi nào được thực hiện trong khi thực hiện các kết nối, hãy cố gắng phá bỏ kết nối và hàn lại kết nối đúng cách, nhưng cuối cùng, kết nối phải được chặt chẽ.
- Khi tất cả các kết nối đã được thực hiện, hãy thực hiện kiểm tra tính liên tục. Trong điện tử, kiểm tra tính liên tục là kiểm tra mạch điện để kiểm tra xem dòng điện có chạy theo đường mong muốn hay không (chắc chắn đó là mạch tổng). Thử nghiệm tính liên tục được thực hiện bằng cách đặt một điện áp nhỏ (được nối dây với đèn LED hoặc bộ phận tạo ra nhiễu, ví dụ, loa áp điện) theo cách đã chọn.
- Nếu thử nghiệm liên tục vượt qua, điều đó có nghĩa là mạch được tạo ra đầy đủ như mong muốn. Bây giờ nó đã sẵn sàng để được thử nghiệm.
- Kết nối pin với mạch.
Phần còn lại của mạch điện sẽ được đặt bên trong mũ bảo hiểm ngoại trừ cảm biến siêu âm sẽ được gắn ở mặt sau của mũ bảo hiểm để phát hiện các phương tiện đi tới từ phía sau. Pin Lipo được sử dụng trong dự án này vì nó là một loại pin rất nhẹ và ngay cả khi người lái đang đi một chuyến đi dài, nó có thể cho thời gian tốt hơn. Điều chỉnh pin Lipo bên trong mũ bảo hiểm vì điều kiện thời tiết khắc nghiệt như mưa có thể dẫn đến hỏng mạch.
Bước 10: Kiểm tra
Hiện tại, phần cứng đã được lắp ráp và mã cũng được tải lên bộ vi điều khiển, chúng ta hãy thực hiện bước cuối cùng và kiểm tra mạch. Ngồi trên xe máy và rẽ TRÊN nút nhấn chuyển đổi để kích hoạt mạch. Bắt đầu lái xe trên đường phố của bạn và yêu cầu ai đó tiếp cận bạn trên xe với tốc độ cao từ phía sau. Bạn sẽ quan sát thấy còi sẽ bắt đầu kêu và sau đó đạp phanh ở tốc độ cao để có thể xảy ra rung động lớn. Ngay sau khi rung động xảy ra, một thông báo cảnh báo sẽ được gửi đến số điện thoại di động mà bạn đã đề cập trong mã.
khuyến nghị
Đây là một dự án rất thú vị, có một số tùy chọn có thể được đưa vào thêm với sự trợ giúp của một số thành phần điện tử cơ bản. Một số trong số chúng được minh họa dưới đây:
- Bạn có thể sử dụng Raspberry Pi với Mô-đun máy ảnh Pi và điều chỉnh vị trí của nó sao cho bạn có thể quan sát hình chiếu trên gương của mũ bảo hiểm. Bằng cách này, bạn sẽ có thể nhìn lại con đường và sẽ rất hữu ích khi vượt, v.v.
- Mô-đun rơ-le có thể được kết nối với công tắc đánh lửa của xe máy và nó có thể được đặt theo cách đánh lửa quay TRÊNchỉ khi người điều khiển đã đội mũ bảo hiểm.
- Các tấm pin mặt trời nhỏ cũng có thể được gắn trên đỉnh và mặt sau của mũ bảo hiểm để giảm nhu cầu sử dụng pin và giảm trọng lượng của mạch điện bên trong mũ bảo hiểm.