สารบัญ:

SmartBin: 4 ขั้นตอน
SmartBin: 4 ขั้นตอน

วีดีโอ: SmartBin: 4 ขั้นตอน

วีดีโอ: SmartBin: 4 ขั้นตอน
วีดีโอ: ฉายแวว [by Mahidol] MU Smart Bin ถังขยะอัจฉริยะ 2024, พฤศจิกายน
Anonim
Image
Image

วัตถุประสงค์หลักของโครงการนี้คือการสร้างอุปกรณ์อิเล็กทรอนิกส์ที่ใช้ Raspberry Pi อย่างน้อยหนึ่งตัว ทีมงานประกอบด้วยวิศวกรเครื่องกลในอนาคต 5 คน และวิศวกรระบบอัตโนมัติ 1 คน โครงการของเราประกอบด้วยการทำถังขยะที่เปิดและปิดโดยอัตโนมัติโดยการเคลื่อนไหวของเท้าภายใต้เครื่องตรวจจับความเคลื่อนไหวที่อยู่ตรงกลางด้านหน้าถังขยะ แท่ง USB Wifi ใช้สำหรับส่งข้อมูลไปยังเว็บไซต์ ถังนี้เรียกว่า "The SmartBin" วิดีโอตลกขบขันด้านบนแนะนำ SmartBin ที่เป็นนวัตกรรมของเรา

เพื่อดำเนินโครงการนี้และ SmartBin ที่น่าทึ่งนี้ จำเป็นต้องมีเครื่องมือหลายอย่าง:

  • เมตร
  • กาวที่แข็งแกร่ง
  • เทปกาว
  • เลื่อยไม้
  • ไขควง
  • เครื่องเจาะ
  • ที่หนีบ
  • มีด

ขั้นตอนที่ 1: อุปกรณ์ SmartBin

อุปกรณ์ SmartBin
อุปกรณ์ SmartBin
อุปกรณ์ SmartBin
อุปกรณ์ SmartBin

SmartBin ประกอบด้วยไฟ LED สีเขียว สีส้ม และสีแดง ซึ่งติดตั้งอยู่ที่ด้านซ้ายของถังขยะ ซึ่งจะระบุว่ามีการบรรจุมากแค่ไหน ไฟเหล่านี้จะมองเห็นได้ชัดเจน และจะเตือนผู้ใช้เมื่อจำเป็นต้องเปลี่ยนถุงขยะ ภาษาโปรแกรมที่ใช้คือ Python ระดับการบรรจุที่วัดได้ของถังขยะจะถูกส่งไปยังเว็บไซต์ต่อไปนี้:

นี่คือองค์ประกอบที่ใช้แล้ว แต่คุณสามารถหาวิธีแก้ปัญหาอื่นได้อย่างง่ายดาย:

  • 1 ถังขยะ ("ฝาสวิง" bin)
  • 1 เซอร์โวมอเตอร์เพื่อเปิดถัง
  • 1 ราสเบอร์รี่ Pi 2
  • 2 แหล่งจ่ายไฟ (เครื่องชาร์จโทรศัพท์มือถือ 5V และแหล่งจ่ายไฟ 6V) เพื่อจ่าย Raspberry Pi และเซอร์โวมอเตอร์
  • 1 Ultrasonic sensor วัดระดับการเติมของถัง
  • ไฟ LED บางดวงแสดงระดับการบรรจุ (4 สีเขียว 2 สีส้มและ 1 สีแดง)
  • 1 เครื่องตรวจจับการเคลื่อนไหวแบบอัลตราโซนิกเพื่อตรวจจับการเคลื่อนไหว
  • การ์ด SD 16Gb 1 ใบ
  • ตัวต้านทานไฟฟ้า (10.000 โอห์ม 2000 โอห์ม และ 1,000 โอห์ม)
  • 1 WiFi usb stick เพื่อเปิดใช้งานการส่งข้อมูลแบบไร้สายไปยังเว็บไซต์
  • 1 เขียงหั่นขนมและสายราสเบอร์รี่ some

ราคาการผลิตโดยประมาณคือ 80 ยูโร

ขั้นตอนที่ 2: การผลิตกล่องราสเบอร์รี่และแถบ LED

การผลิตกล่องราสเบอร์รี่และแถบ LED
การผลิตกล่องราสเบอร์รี่และแถบ LED
การผลิตกล่องราสเบอร์รี่และแถบ LED
การผลิตกล่องราสเบอร์รี่และแถบ LED
การผลิตกล่องราสเบอร์รี่และแถบ LED
การผลิตกล่องราสเบอร์รี่และแถบ LED

ในการผลิตกล่องราสเบอร์รี่ ให้ใช้เลื่อยไม้ ยึดกล่องทุกด้านด้วยหมุดย้ำเพื่อให้ดูสะอาดตา ตามชื่อของมัน กล่องนี้จะไม่เพียงแต่ประกอบด้วย Raspberry Pi แต่ยังรวมถึงเซ็นเซอร์ตรวจจับความเคลื่อนไหวที่คุณจะวางไว้ที่ด้านล่าง เมื่อสร้างกล่องแล้ว ให้ทาสีด้วยสีเดียวกับถังขยะ เทคโนโลยีการพิมพ์ 3 มิติสามารถใช้สร้างกล่องนี้ได้

สำหรับการผลิตแถบ LED ให้ใช้ท่อไฟฟ้าที่คุณเจาะรูเพื่อให้สามารถติดตั้งไฟ LED ได้ แถบ LED ยังต้องทาสี เมื่อทุกอย่างพร้อม ให้ติดตั้งไฟ LED ในท่อและทำการเชื่อมต่อทางไฟฟ้า ใส่ใจกับหมายเลขสาย LED แต่ละสายด้วยเทปกาวอย่างถูกต้อง มันจะช่วยให้คุณระบุแต่ละ LED ระหว่างการเดินสาย

สุดท้าย ติดกล่องและแถบ LED ที่ด้านหน้าถังขยะของคุณ

ขั้นตอนที่ 3: ส่วนฝา

ส่วนฝา
ส่วนฝา
ส่วนฝา
ส่วนฝา

เกี่ยวกับฝาถัง ขั้นตอนแรกคือการติดเซอร์โวมอเตอร์กับฝา ต้องทำการขยายเลเวอเรจก่อนหน้านี้ คันโยกจะหยุดซึ่งเคยทำด้วยมือ ติดกล่องสกรูเข้ากับฝาแล้วเจาะรูเพื่อให้เซ็นเซอร์อัลตราโซนิกอยู่ในตำแหน่งที่ถูกต้อง ตรวจสอบให้แน่ใจว่าคุณติดสายบนฝาด้วยเทปอย่างถูกต้อง

ขั้นตอนที่ 4: ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล

ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล
ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล
ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล
ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล
ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล
ส่วนซอฟต์แวร์และการได้มาซึ่งข้อมูล

ในส่วนของซอฟต์แวร์ เราใช้ภาษาโปรแกรม python โปรแกรมจะถูกบันทึกไว้ในการ์ด SD ซึ่งจะเรียกใช้โดย Raspberry Pi เมื่อเปิดเครื่อง รูปแบบการเดินสายมีอยู่ด้านบน รูปภาพพิน Gpio มีให้สำหรับราสเบอร์รี่ทุกประเภทที่ลิงค์ด้านล่าง:

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

คุณสามารถใช้เซ็นเซอร์อัลตราโซนิกเพื่อแทนที่เครื่องตรวจจับการเคลื่อนไหว คุณเพียงแค่สร้าง "if loop" ในโค้ด

ดังที่กล่าวไว้ข้างต้น ข้อมูลเกี่ยวกับระดับที่ถังบรรจุจะถูกส่งไปยังเว็บไซต์ที่สร้างบน wix.com ในเว็บไซต์นี้ คุณจะพบแท็บต่างๆ ที่รวบรวมสมาชิกในทีม การนำเสนอฮาร์ดแวร์และซอฟต์แวร์ … แท็บที่น่าสนใจจริงๆ แล้วคือแท็บ "ฐานข้อมูล" ซึ่งรวบรวมข้อมูลเกี่ยวกับปริมาณขยะโดยตรงจาก SmartBin และสร้างกราฟพร้อมข้อมูล. กราฟแสดงวิวัฒนาการของระดับการเติม สามารถดูหรือดาวน์โหลดข้อมูลจากเว็บไซต์ได้ ลิงค์ด้านล่างเป็นเว็บไซต์ที่เราใช้และจะแสดงวิธีการอ่านและเขียนบน Google ชีตด้วย python:

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

เกี่ยวกับ "ส่วนการทำงานอัตโนมัติ" ของโค้ด ให้เขียนในเทอร์มินัล: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

จากนั้น ในตอนท้ายของสคริปต์ที่เพิ่งเปิด ให้เขียนโค้ดสองบรรทัดนี้: python /home/pi/main.py & python /home/pi/csvcontrol.py &

หากต้องการบันทึก aurorun ให้กด: C trl + O จากนั้นกด: Enter จากนั้นกด: C trl + X

เขียนเป็นโค้ดบรรทัดสุดท้าย: sudo reboot

คุณยังสามารถดาวน์โหลดไฟล์แนบซึ่งเป็นรหัสหลามแบบเต็มที่ใช้สำหรับโครงการ รหัสทั้งสองทำงานพร้อมกัน !

นี่คือรหัส main.py:

นำเข้า RPi. GPIO เป็น GPIOนำเข้าวันที่และเวลานำเข้า นำเข้า csv

GPIO.setmode(GPIO. BCM)

GPIO.setwarnings(เท็จ)

capteurP = 7

เซอร์โว = 17

GPIO.setup (เซอร์โว, GPIO. OUT)

GPIO.setup (capteurP, GPIO. IN)

pwm=GPIO. PWM(17, 50)

GPIO.setup(5, GPIO.ออก)

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.ออก)

ตรีโกณ = 23

ก้อง = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (เสียงสะท้อน, GPIO. IN)

GPIO.setwarnings(เท็จ)

GPIO.output(5, เท็จ)

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

GPIO.output(Trig, เท็จ)

ชุดเวลา = time.time()

ระยะทาง=100 หน่วยความจำ=0 time.sleep(2) pwm.start(12.5)

ในขณะที่จริง:

timetac = time.time() ถ้า GPIO.input(capteurP) และ timetac-timeset0.9: pwm. ChangeDutyCycle(2.5) หน่วยความจำ time.sleep(0.2)=-0.5 pwm. ChangeDutyCycle(0) timetac = time.time() time.sleep(0.5) ถ้า timetac-timeset>15 หรือ memory>0.4: if memory>0.4: pwm. ChangeDutyCycle(2.5) time.sleep(1) สำหรับ x ในช่วง(0, 1): # GPIO.output(Trig, จริง) time.sleep(0.01) GPIO.output(Trig, False)

ในขณะที่ GPIO.input(Echo)==0 และ timetac-timeset<17: timetac = time.time() debutImpulsion = time.time()

ในขณะที่ GPIO.input(Echo)==1:

finImpulsion = time.time() ถ้า timetac-timeset<17: distance1 = round((finImpulsion - debutImpulsion) * 340 * 100 / 2, 1) distance2=distance if (distance1-distance2)<1 and (distance2-distance1)0.4: dis=round((60-distance)*5/6, 1) with open('capteur.csv', 'w') เป็น 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)) ผู้เขียนบันทึก writerow([time_str, dis]) หน่วยความจำ=-0.1 ถ้าระยะทาง < 52.5: GPIO.output(5, True) อื่น: GPIO.output(5, False) ถ้าระยะทาง < 45: GPIO.output(6, True) อื่น: GPIO.output(6, False) ถ้าระยะทาง < 37.5: GPIO.output(13, True) อื่นๆ: GPIO.output(13, False) ถ้าระยะทาง < 30: GPIO.output(19, True) อื่นๆ: GPIO.output(19, เท็จ) หากระยะทาง < 22.5: GPIO.output (20, จริง) อื่น: GPIO.output (20, เท็จ) หากระยะทาง < 15: GPIO.output (21, จริง) อื่น: GPIO.output (21, เท็จ) ถ้าระยะทาง <7.5: GPIO.output(26, True) อื่น: GPIO.output(26, False)

นี่คือรหัส csvcontrol.py อย่าลืมวางไฟล์ ".json" ที่สร้างขึ้นในไดเร็กทอรีเดียวกันของ main.py ไฟล์ ".json" ถูกสร้างขึ้นด้วย google API ภาพหน้าจอมีอยู่ในรูปภาพ

นำเข้าวันที่เวลานำเข้าเวลานำเข้า csv นำเข้า gspread

จาก oauth2client.service_account นำเข้า ServiceAccountCredentials

จากเวลา นำเข้า sleep นำเข้า traceback

timec2='lol'

ในขณะที่ True: time.sleep(5) loc=('capteur.csv') โดยเปิด (loc) เป็น csvfile: readCSV = csv.reader(csvfile, delimiter=', ') สำหรับแถวใน 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}'.format(timec ระยะทาง))

ขอบเขต = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ ขับ"]

credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', SCOPES) gc = gspread.authorize(credentials) wks= gc.open("graph".sheet1 wks= wks.append_row((timec, distance))

แนะนำ: