Mục lục:

SmartBin: 4 bước
SmartBin: 4 bước

Video: SmartBin: 4 bước

Video: SmartBin: 4 bước
Video: Smart Bin 2024, Tháng mười một
Anonim
Image
Image

Mục đích chính của dự án này là tạo ra một thiết bị điện tử sử dụng ít nhất một Raspberry Pi. Đội gồm 5 kỹ sư cơ khí tương lai và một kỹ sư tự động hóa. Dự án của chúng tôi bao gồm việc chế tạo một thùng rác có thể đóng mở tự động được kích hoạt bằng chuyển động của chân dưới máy dò chuyển động nằm ở trung tâm phía trước thùng rác. Thanh USB Wifi được sử dụng để gửi dữ liệu lên một trang web. Thùng rác này được gọi là "SmartBin". Video hài hước ở trên giới thiệu SmartBin sáng tạo của chúng tôi.

Để thực hiện dự án và SmartBin đáng chú ý này, một số công cụ là cần thiết:

  • Một mét
  • Keo mạnh
  • Một băng dính
  • Cưa gỗ
  • Tuốc nơ vít
  • Một máy khoan
  • Một cái kẹp
  • Một con dao

Bước 1: Thiết bị SmartBin

Thiết bị SmartBin
Thiết bị SmartBin
Thiết bị SmartBin
Thiết bị SmartBin

SmartBin bao gồm các đèn LED màu xanh lá cây, cam và đỏ được đặt trên một vật cố định ở phía bên trái của thùng sẽ cho biết mức độ đầy của thùng. Các đèn này sẽ hiển thị rõ ràng và sẽ cảnh báo cho người dùng khi cần thay túi rác. Ngôn ngữ lập trình được sử dụng là Python. Mức đổ đầy đo được của thùng được truyền tới trang web sau:

Dưới đây là các yếu tố đã được sử dụng nhưng bạn có thể dễ dàng tìm thấy một giải pháp thay thế:

  • 1 Thùng (thùng "nắp xoay")
  • 1 Servomotor để mở thùng rác
  • 1 Raspberry Pi 2
  • 2 Nguồn điện (bộ sạc điện thoại di động 5V và nguồn điện 6V) để cung cấp cho Raspberry Pi và động cơ servo
  • 1 Cảm biến siêu âm để đo mức độ đầy của thùng
  • Một số đèn LED để hiển thị mức độ lấp đầy (4 màu xanh lá cây, 2 màu cam và 1 màu đỏ)
  • 1 Máy dò chuyển động siêu âm để phát hiện chuyển động
  • 1 thẻ SD 16Gb
  • Điện trở (10.000 Ohms, 2000 Ohms và 1000 Ohms)
  • 1 USB WiFi để có thể truyền không dây vào trang web.
  • 1 Breadboard và một số cáp Raspberry

Giá sản xuất ước tính là 80 €.

Bước 2: Sản xuất Hộp mâm xôi và Thanh đèn LED

Sản xuất Hộp mâm xôi và Thanh đèn LED
Sản xuất Hộp mâm xôi và Thanh đèn LED
Sản xuất Hộp mâm xôi và Thanh đèn LED
Sản xuất Hộp mâm xôi và Thanh đèn LED
Sản xuất Hộp mâm xôi và Thanh đèn LED
Sản xuất Hộp mâm xôi và Thanh đèn LED

Để sản xuất hộp Raspberry, hãy sử dụng cưa gỗ. Dùng đinh tán buộc chặt mọi mặt của hộp để làm cho hộp trông sạch sẽ. Như tên gọi của nó, hộp này không chỉ chứa Raspberry Pi mà còn bao gồm cảm biến chuyển động mà bạn sẽ đặt ở dưới cùng. Sau khi đóng hộp, hãy sơn nó cùng màu với thùng. Công nghệ in 3D có thể được sử dụng để tạo ra hộp này.

Để sản xuất thanh LED, hãy sử dụng một ống dẫn điện trong đó bạn khoan lỗ để cho phép lắp đặt đèn LED. Thanh LED cũng phải được sơn. Khi mọi thứ đã sẵn sàng, hãy lắp đèn LED vào ống dẫn và thực hiện kết nối điện. Chú ý đánh số đúng từng sợi cáp LED bằng băng dính. Nó sẽ giúp bạn xác định từng đèn LED trong quá trình đấu dây.

Cuối cùng, gắn hộp và thanh đèn LED vào phía trước thùng của bạn.

Bước 3: Phần nắp

Phần nắp
Phần nắp
Phần nắp
Phần nắp

Liên quan đến nắp thùng, bước đầu tiên là dán động cơ servo vào nắp thùng. Việc mở rộng đòn bẩy phải được thực hiện trước đó. Cần gạt sẽ chạm điểm dừng mà trước đây được làm thủ công. Gắn hộp vít vào nắp và tạo một lỗ trên đó để giữ cảm biến siêu âm ở đúng vị trí. Đảm bảo rằng bạn đã gắn các dây cáp trên nắp một cách chính xác bằng băng dính.

Bước 4: Phần Phần mềm và Thu thập Dữ liệu

Phần phần mềm và Thu thập dữ liệu
Phần phần mềm và Thu thập dữ liệu
Phần phần mềm và Thu thập dữ liệu
Phần phần mềm và Thu thập dữ liệu
Phần phần mềm và Thu thập dữ liệu
Phần phần mềm và Thu thập dữ liệu

Liên quan đến phần phần mềm, chúng tôi đã sử dụng ngôn ngữ lập trình python. Chương trình được lưu trong thẻ SD sẽ được Raspberry Pi chạy khi nó được bật. Sơ đồ đấu dây có sẵn ở trên. Hình ảnh ghim Gpio có sẵn cho tất cả các loại mâm xôi ở liên kết bên dưới:

www.raspberrypi-spy.co.uk/2012/06/simple-g…

Có thể sử dụng cảm biến siêu âm để thay thế máy dò chuyển động, bạn chỉ cần tạo "vòng lặp nếu" trong mã.

Như đã đề cập ở trên, dữ liệu liên quan đến mức độ mà thùng được lấp đầy sẽ được truyền đến một trang web được tạo trên wix.com. Trên trang web này, bạn có thể tìm thấy các tab khác nhau tập hợp các thành viên trong nhóm, trình bày phần cứng và phần mềm,… Tab thú vị thực sự là tab "Cơ sở dữ liệu" thu thập thông tin liên quan đến lượng rác trực tiếp từ SmartBin và tạo biểu đồ với dữ liệu. Biểu đồ hiển thị sự phát triển của mức độ lấp đầy. Có thể xem hoặc tải xuống dữ liệu từ trang web. Liên kết dưới đây là trang web chúng tôi đã sử dụng và sẽ hướng dẫn bạn cách đọc và viết trên google sheet bằng python:

www.makeuseof.com/tag/read-write-google-sh…

Liên quan đến "phần tự động chạy" của mã, hãy viết trong terminal: sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

Sau đó, ở phần cuối của tập lệnh vừa mở, hãy viết hai dòng mã sau: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Để lưu cực quang, hãy nhấn: C trl + O Sau đó, nhấn: Enter Sau đó, nhấn: C trl + X

Viết dưới dạng dòng mã cuối cùng: sudo khởi động lại

Bạn cũng có thể tải xuống tệp đính kèm là mã python đầy đủ được sử dụng cho dự án. Cả hai mã được chạy cùng một lúc!

Đây là mã main.py:

nhập RPi. GPIO dưới dạng GPIO nhập ngày giờ nhập thời gian nhập csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (Sai)

capteurP = 7

servo = 17

GPIO.setup (servo, GPIO. OUT)

GPIO.setup (capteurP, GPIO. IN)

pwm = GPIO. PWM (17, 50)

GPIO.setup (5, GPIO. OUT)

GPIO.setup (6, GPIO. OUT) GPIO.setup (13, GPIO. OUT) GPIO.setup (19, GPIO. OUT) GPIO.setup (20, GPIO. OUT) GPIO.setup (21, GPIO. OUT) GPIO.setup (26, GPIO. OUT)

Trig = 23

Echo = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (Sai)

GPIO.output (5, Sai)

GPIO.output (6, Sai) GPIO.output (13, Sai) GPIO.output (19, Sai) GPIO.output (20, Sai) GPIO.output (21, Sai) GPIO.output (26, Sai)

GPIO.output (Trig, False)

timeset = time.time ()

khoảng cách = 100 bộ nhớ = 0 time.sleep (2) pwm.start (12,5)

trong khi Đúng:

timetac = time.time () nếu GPIO.input (capteurP) và timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0,5) nếu timetac-timeset> 15 hoặc bộ nhớ> 0,4: nếu bộ nhớ> 0,4: pwm. ChangeDutyCycle (2,5) time.sleep (1) cho x trong phạm vi (0, 1): # GPIO.output (Trig, Đúng) time.sleep (0,01) GPIO.output (Gấp, Sai)

trong khi GPIO.input (Echo) == 0 và timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

trong khi GPIO.input (Echo) == 1:

finImpulsion = time.time () nếu timetac-timeset <17: distance1 = round ((finImpulsion - debutImpulsion) * 340 * 100/2, 1) distance2 = distance nếu (distance1-distance2) <1 và (distance2-distance1) 0.4: dis = round ((60-distance) * 5/6, 1) với open ('capteur.csv', 'w') dưới dạng csvfile: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '% Y-% m-% d% H:% M:% S') print ('Time: {0} Quantitee: {1}'. format (time_str, dis)) capteurwriter. writerow ([time_str, dis]) memory = -0,1 nếu khoảng cách <52,5: GPIO.output (5, True) else: GPIO.output (5, False) nếu khoảng cách <45: GPIO.output (6, True) khác: GPIO.output (6, Sai) nếu khoảng cách <37,5: GPIO.output (13, Đúng) khác: GPIO.output (13, Sai) nếu khoảng cách <30: GPIO.output (19, Đúng) khác: GPIO.output (19, Sai) nếu khoảng cách <22,5: GPIO.output (20, Đúng) khác: GPIO.output (20, Sai) nếu khoảng cách <15: GPIO.output (21, Đúng) khác: GPIO.output (21, Sai) nếu khoảng cách <7,5: GPIO.output (26, Đúng) khác: GPIO.output (26, Sai)

Đây là mã csvcontrol.py. Đừng quên dán tệp ".json" đã tạo vào cùng thư mục của main.py. Tệp ".json" được tạo bằng API của Google. Một ảnh chụp màn hình có sẵn trong hình ảnh.

nhập ngày giờ nhập thời gian nhập csv nhập gspread

từ oauth2client.service_account nhập ServiceAccountCredentials

từ thời gian nhập theo dõi giấc ngủ nhập

timec2 = 'lol'

trong khi True: time.sleep (5) loc = ('capteur.csv') với open (loc) là csvfile: readCSV = csv.reader (csvfile, delimiter = ',') cho hàng trong readCSV: print (row [0]) timec = row [0] print (row [1]) distance = row [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { 1} '. Định dạng (timec, khoảng cách))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ lái xe"]

thông tin đăng nhập = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (thông tin đăng nhập) wks = gc.open ("graph"). sheet1 wks = wks.append_row ((timec, khoảng cách))

Đề xuất: