สารบัญ:

หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi รุ่น 3 A+: 6 ขั้นตอน (พร้อมรูปภาพ)
หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi รุ่น 3 A+: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi รุ่น 3 A+: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi รุ่น 3 A+: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: CS50 2015 - Week 10 2024, กรกฎาคม
Anonim
หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi Model 3 A+
หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi Model 3 A+
หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi Model 3 A+
หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi Model 3 A+

ภาพรวม

คำแนะนำนี้จะเน้นไปที่วิธีให้ Roomba ที่ตายแล้วมีสมองใหม่ (Raspberry Pi) ดวงตา (เว็บแคม) และวิธีควบคุมทุกอย่างจากเว็บเบราว์เซอร์

มีการแฮ็ก Roomba จำนวนมากที่อนุญาตให้ควบคุมผ่านอินเทอร์เฟซแบบอนุกรม ฉันไม่โชคดีพอที่จะเจอ Roomba ที่มีเฟิร์มแวร์ปัจจุบันหรือมาเธอร์บอร์ดที่ใช้งานได้ ไม่ว่า Roomba จะเก่าเกินไปหรือ Roomba นั้นตายแล้ว ฉันพบ Roomba ที่ฉันใช้สำหรับโครงการนี้ในถังขยะราคา 5 ดอลลาร์ มันยังคงมีแบตเตอรี่ที่ดี แต่มีมาเธอร์บอร์ดที่ตายแล้ว (ฉันยังพบเว็บแคมที่ร้านขายของมือสองราคาประมาณ 5 ดอลลาร์) สิ่งที่ฉันใช้จาก Roomba ดั้งเดิมคือมอเตอร์ แชสซี และแบตเตอรี่ คุณไม่จำเป็นต้องใช้ Roomba สำหรับโครงการนี้ คุณสามารถใช้มอเตอร์ ล้อ และแชสซีที่แตกต่างกันได้หากต้องการ ฉันแค่ต้องการเปลี่ยนขยะให้เป็นสิ่งที่มีประโยชน์

สำหรับโครงสร้างนี้ ฉันใช้ Raspberry Pi Model 3 A+ และตัวควบคุมมอเตอร์ของ Riorand ฉันกำลังใช้โค้ดจาก Dexter Industries Browser Controlled Robot ที่ฉันแก้ไข รุ่น Dexter Industries ตั้งค่า Pi เป็นเซิร์ฟเวอร์ websocket ที่ให้คุณควบคุมหุ่นยนต์ของพวกเขา (แพลตฟอร์ม Brick pi) จากไฟล์ html ของไคลเอ็นต์ที่ใช้งานคอมพิวเตอร์เครื่องอื่น

ฉันได้เปลี่ยนรหัสโดยใช้หมุด GPIO และเพิ่มวิธีการปิด Pi เมื่อคลิกปุ่ม / เมื่อกดปุ่ม Escape ในเบราว์เซอร์ ฉันยังทำการเปลี่ยนแปลงบางอย่างในหน้าเว็บควบคุมเพื่อให้สามารถดูสตรีมการเคลื่อนไหวผ่าน iframe ในขณะที่ควบคุมหุ่นยนต์ทั้งหมดภายในหน้าเดียว ฉันตั้งค่า Pi ด้วย IP แบบคงที่เพื่อโฮสต์ไฟล์ไคลเอนต์ เพื่อให้ฉันสามารถเชื่อมต่อโดยใช้คอมพิวเตอร์หรืออุปกรณ์ใดก็ได้บนเครือข่ายของฉัน

ฉันกำลังบันทึกกระบวนการที่นี่โดยหวังว่าจะแสดงวิธีสร้างหุ่นยนต์พื้นฐานที่เรียบง่ายและราคาไม่แพง

อะไหล่ที่ใช้

Raspberry Pi 3 A+ (ลิงก์ Adafruit) $30

Riorand Dual Motor Driver Controller H-Bridge (ลิงก์ Amazon) $22

แบตเตอรี่ 12V สำหรับมอเตอร์ (Amazon Link) $19

แบตเตอรี่ 5V สำหรับ Raspberry Pi (Amazon Link) $10

การ์ด Micro SD ขนาด 8GB (ลิงก์ Amazon) $5

สายจัมเปอร์ (Amazon Link) $7

Roomba 500 ซีรีส์

. ทั้งหมดรวมกันไม่เกิน 100 เหรียญ

ขั้นตอนที่ 1: ติดตั้ง Raspbian และตั้งค่าที่อยู่ IP แบบคงที่

ติดตั้ง Raspbian และตั้งค่าที่อยู่ IP แบบคงที่
ติดตั้ง Raspbian และตั้งค่าที่อยู่ IP แบบคงที่

ฉันใช้ Raspbian Stretch Lite ฉันไม่เห็นความต้องการเดสก์ท็อป แต่คุณสามารถติดตั้งเวอร์ชันเดสก์ท็อปได้หากต้องการ

ฉันจะถือว่าคุณรู้วิธีติดตั้ง Raspbian แล้ว หากคุณต้องการความช่วยเหลือ คุณสามารถค้นหาคู่มือของ Raspberry Pi Foundation ได้ที่นี่

เมื่อคุณเปิดใช้งาน Raspbian แล้ว ให้เข้าสู่ระบบและเรียกใช้โปรแกรม raspi-config

pi@raspberrypi:~ $ sudo raspi-config

ตั้งค่าการเชื่อมต่อ WiFi ของคุณใน raspi-config

เลือก

2 ตัวเลือกเครือข่าย

เลือก

N2 Wi-Fi

เลือกประเทศ ป้อน SSID ของคุณและป้อนข้อความรหัสผ่าน

ตั้งค่า SSH ใน raspi-config

เมื่อฉันกำหนดค่าเริ่มต้นแล้ว ฉันใช้ SSH เพื่อตั้งค่าทุกอย่างแบบไม่มีส่วนหัว (คุณสามารถข้ามสิ่งนี้ได้หากคุณใช้จอภาพ มันง่ายกว่าสำหรับฉันในการเปลี่ยนแปลงโค้ดโดยไม่ต้องหยุดหุ่นยนต์และเสียบมันเข้ากับจอภาพ)

กลับมาที่เมนูหลัก raspi-config

เลือก

5 ตัวเลือกการเชื่อมต่อ

เลือก

P2 SSH

เลือก

ใช่

กลับไปที่เมนูหลัก raspi-config เลือก

ตรวจสอบว่าคุณเชื่อมต่อกับเครือข่ายของคุณแล้ว

pi@raspberrypi:~ $ ifconfig

คุณควรได้รับผลลัพธ์ที่คล้ายคลึงกันนี้ (โปรดสังเกตที่อยู่ IP คุณอาจต้องใช้ในภายหลัง เช่น 192.168.1.18)

wlan0: แฟล็ก=4163 mtu 1500

inet 192.168.1.18 netmask 255.255.255.0 ออกอากาศ 192.168.1.255 inet6 fe80::c74f:42ec:8cd3:2fda prefixlen 64 scopeid 0x20 ether b8:27:eb:6a:a4:95 txqueuelen 1000 (อีเธอร์เน็ต) แพ็กเก็ต RX 44396 ไบต์ 5847726 (5.5 MiB) ข้อผิดพลาด RX 0 ลดลง 0 โอเวอร์รัน 0 เฟรม 0 แพ็กเก็ต TX 30530 ไบต์ 39740576 (37.8 MiB) ข้อผิดพลาด TX 0 ลดลง 0 โอเวอร์รัน 0 ผู้ให้บริการ 0 การชนกัน 0

ตรวจสอบว่าคุณสามารถเข้าถึงอินเทอร์เน็ตได้

pi@raspberrypi:~ $ ping google.com

คุณควรได้รับผลลัพธ์ที่คล้ายคลึงกันนี้

PING google.com (216.58.194.110) 56 (84) ไบต์ของข้อมูล

64 ไบต์จาก dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=1 ttl=54 เวลา=18.2 ms 64 ไบต์จาก dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=2 ttl =54 เวลา=19.4 ms 64 ไบต์จาก dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=3 ttl=54 เวลา=23.6 ms 64 ไบต์จาก dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=4 ttl=54 time=30.2 ms ^C --- สถิติ ping ของ google.com --- ส่ง 4 แพ็กเก็ต, รับ 4 รายการ, แพ็กเก็ตสูญหาย 0%, เวลา 3004ms rtt min/avg/max/mdev = 18.209/ 22.901/30.267/4.715 มิลลิวินาที

ตั้งค่า IP แบบคงที่

เพื่อให้สามารถเชื่อมต่อกับหุ่นยนต์ของคุณอย่างสม่ำเสมอโดยใช้ที่อยู่เดียวกันบนเครือข่ายของคุณ คุณจะต้องตั้งค่า IP แบบคงที่

รับที่อยู่เครือข่ายปัจจุบันของคุณ เช่น 192.168.1.18

ฉันกำลังใช้ที่อยู่ที่ DHCP กำหนดโดยอัตโนมัติเมื่อ Pi เชื่อมต่อกับเครือข่ายของฉัน คุณสามารถเปลี่ยนแปลงสิ่งนี้เป็นสิ่งที่คุณต้องการได้ตราบเท่าที่มันตรงกับเครือข่ายของคุณ และไม่ขัดแย้งกับที่อยู่อื่นที่ได้รับมอบหมาย

เปิด dhcp.conf ในตัวแก้ไขข้อความ (ผมใช้นาโน)

pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf

เลื่อนลงไปที่ #Example static IP configuration และเปลี่ยนบรรทัดต่อไปนี้

#อินเทอร์เฟซ eth0

#static ip_address=192.168.11.13 #static เราเตอร์=192.168.11.1 #static domain_name_servers=192.168.11.1 8.8.8.8

เปลี่ยนให้ตรงกับเครือข่ายของคุณและลบ # ที่จุดเริ่มต้นของแต่ละบรรทัด

ตัวอย่าง:

อินเทอร์เฟซ wlan0

ip_address แบบคงที่=192.168.1.18 เราเตอร์แบบคงที่=192.168.1.1 โดเมนแบบคงที่_name_servers=192.168.1.1 8.8.8.8

บันทึกและออก.

รีบูตและเชื่อมต่อกับ Pi ผ่านSSH

pi@raspberrypi:~ $ sudo รีบูต

เชื่อมต่อจากคอมพิวเตอร์เครื่องอื่นโดยใช้ SSH ผู้ใช้ Windows สามารถใช้ PuTTY หรือระบบย่อย Windows สำหรับ Linux (Windows10)

ian@computer:~$ ssh [email protected]

ป้อนรหัสผ่านของคุณ (ค่าเริ่มต้นคือราสเบอร์รี่)

รหัสผ่านของ [email protected]:

ตอนนี้คุณควรอยู่ที่พรอมต์คำสั่งของ Pi

pi@raspberrypi:~$

ขั้นตอนที่ 2: ติดตั้งและกำหนดค่า Motion

ติดตั้งและกำหนดค่า Motion
ติดตั้งและกำหนดค่า Motion

Motion เป็นโปรแกรมที่ใช้ในโครงการกล้องวงจรปิด / เว็บแคมจำนวนมาก การเคลื่อนไหวมีคุณสมบัติมากมาย อย่างไรก็ตาม เรากำลังตั้งค่าให้สตรีมวิดีโอจากเว็บแคมไปยังพอร์ต 8081 ได้ง่ายๆ

ทดสอบเว็บแคมของคุณ

เสียบเว็บแคมของคุณและแสดงรายการอุปกรณ์ usb ที่เชื่อมต่อ (คุณอาจต้องรีบูตหลังจากเชื่อมต่อ)

pi@raspberrypi:~ $ lsusb

คุณควรได้ผลลัพธ์ที่คล้ายคลึงกันนี้ หมายเหตุ Logitech C210

บัส 001 อุปกรณ์ 002: ID 046d:0819 Logitech, Inc. เว็บแคม C210

บัส 001 อุปกรณ์ 001: ID 1d6b:0002 ฮับรูท Linux Foundation 2.0

หากกล้องของคุณไม่ปรากฏขึ้น แสดงว่าอาจใช้งานร่วมกันไม่ได้หรือคุณอาจต้องติดตั้งไดรเวอร์เพิ่มเติม

ติดตั้ง Motion

อัพเดทแพ็คเกจ.

pi@raspberrypi:~ $ sudo apt-get update

ติดตั้งโมชั่น.

pi@raspberrypi:~ $ sudo apt-get ติดตั้งการเคลื่อนไหว -y

เมื่อติดตั้ง Motion แล้ว ให้แก้ไขไฟล์กำหนดค่า

pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf

เปลี่ยนบรรทัดต่อไปนี้ให้ตรงกับด้านล่าง

ภูตบน

ความกว้าง 640 ความสูง 480 อัตราเฟรม 100 output_pictures off ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost off webcontrol_localhost off

เริ่ม Motion Daemon ที่ Boot

เปิดไฟล์ /etc/default/motion

pi@raspberrypi:~ $ sudo nano /etc/default/motion

เปลี่ยนไป

start_motion_daemon=ใช่

บันทึกไฟล์และออก

รีบูต

pi@raspberrypi:~ $ sudo รีบูต

หลังจากที่ Pi รีบูทแล้ว ให้เปิดเบราว์เซอร์และตรวจสอบว่าคุณมีวิดีโอสตรีมไปยังเบราว์เซอร์บนพอร์ต 8081

ตัวอย่าง:

192.168.1.18:8081

การแก้ไขปัญหา Motion Daemon

ฉันพบปัญหาในการทำให้ motion daemon เริ่มทำงานขณะบู๊ตในขณะที่กำลังลองใช้ตัวเลือกต่างๆ ในไฟล์ motion.conf

หากคุณเริ่มการเคลื่อนไหวก่อน Motion daemon ใน Raspian Stretch คุณอาจประสบปัญหาในการเริ่มต้นเมื่อบูตในภายหลัง การเรียกใช้ "sudo motion" โดยไม่กำหนดค่า daemon ให้สร้างไดเร็กทอรี /var/log/motion โดยไม่ให้สิทธิ์การเขียนแก่ผู้ใช้ก่อน

ขั้นตอนที่ 3: ติดตั้ง Apache และตั้งค่า Web Control Page

ติดตั้ง Apache และตั้งค่า Web Control Page
ติดตั้ง Apache และตั้งค่า Web Control Page

Apache เป็นเว็บเซิร์ฟเวอร์สำหรับหน้าเว็บควบคุมของโรบ็อต เราจะแทนที่ไฟล์ Apache index.html เริ่มต้นด้วยไฟล์ที่ดาวน์โหลดจาก github คุณจะเปลี่ยนโค้ดสองสามบรรทัดเพื่อแสดงสตรีมวิดีโอเคลื่อนไหวและกำหนดตำแหน่งที่จะส่งคำสั่งเพื่อควบคุมหุ่นยนต์

ติดตั้ง Apache และ Git

pi@raspberrypi:~ $ sudo apt-get ติดตั้ง apache2 git -y

เมื่อติดตั้ง apache และ git แล้วให้ดาวน์โหลดไฟล์

pi@raspberrypi:~ $ git clone

เปิดไดเร็กทอรี roombarobot

pi@raspberrypi:~ $ cd roombarobot

แทนที่ไฟล์ index.html ในโฟลเดอร์ /var/www/html ด้วยไฟล์ index.html ใน /home/pi/roombarobot

pi@raspberrypi:~/roombarobot $ sudo cp index.html /var/www/html

แก้ไขไฟล์ index.html

เปิดไฟล์ index.html ด้วยโปรแกรมแก้ไขข้อความ

pi@raspberrypi:~/roombarobot $ sudo nano /var/www/html/index.html

ค้นหาสองบรรทัดนี้

var host = "ws://YOURIPADDRESS:9093/ws";

เปลี่ยน "YOURIPADDRESS" เป็นที่อยู่ IP แบบคงที่ที่คุณตั้งค่าไว้ในขั้นตอนที่ 1 และบันทึกไฟล์

ตัวอย่าง:

var host = "ws://192.168.1.18:9093/ws";

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

ขั้นตอนที่ 4: ตั้งค่าและทดสอบโค้ด

ตั้งค่าและทดสอบโค้ด
ตั้งค่าและทดสอบโค้ด

รหัสนี้เขียนด้วย python และต้องใช้ไลบรารีทอร์นาโด โค้ดนี้ใช้ไลบรารี่เพื่อตั้งค่าเซิร์ฟเวอร์เพื่อฟังคำสั่งจากหน้าเว็บการควบคุมผ่าน websockets บนพอร์ต 9093

ติดตั้ง PIP และ Tornado Library

ติดตั้ง pip

pi@raspberrypi:~ $ sudo apt-get ติดตั้ง python-pip

ติดตั้งห้องสมุดทอร์นาโด

pi@raspberrypi:~ $ sudo pip ติดตั้งพายุทอร์นาโด

เริ่มโปรแกรม Roombabot และทดสอบการเชื่อมต่อ

เริ่มโปรแกรม roombabot.py

pi@raspberrypi:~$ sudo python /home/pi/roombarobot/roombabot.py

เมื่อทำงานแล้ว คุณจะเห็น "พร้อม" ในเทอร์มินัล เปิดเว็บเพจการควบคุมในเบราว์เซอร์แล้วคลิกเชื่อมต่อ จากนั้นคลิกปุ่มทิศทางใดๆ บนหน้า คุณยังสามารถใช้ปุ่มลูกศรบนแป้นพิมพ์ได้เช่นกัน

คุณควรเห็นเอาต์พุตในเทอร์มินัลในลักษณะนี้

พร้อม

การเชื่อมต่อเปิด… การเชื่อมต่อเปิด… ได้รับ: u 8 ทำงานไปข้างหน้า การเชื่อมต่อเปิด… ได้รับ: l 6 เลี้ยวซ้าย การเชื่อมต่อเปิด… ได้รับ: d 2 กำลังเปิดการเชื่อมต่อแบบย้อนกลับ เปิด… ได้รับ: r 4 เลี้ยวขวา

กด ctrl+c เพื่อหยุดโปรแกรม

เมื่อคุณทำการทดสอบเสร็จแล้วให้ปิด Pi

pi@raspberrypi:~$ sudo poweroff

บัก

ฉันสังเกตเห็นปัญหากับปุ่มปิดเครื่องบนหน้าเว็บการควบคุม บางครั้งปุ่มปิดเครื่องไม่ทำอะไรเลยเมื่อมีการคลิกหรือแตะ ฉันไม่สามารถเข้าใจได้ว่าอะไรทำให้เกิดสิ่งนี้ แต่มีวิธีแก้ปัญหา หากคุณต้องการปิดหุ่นยนต์และปุ่มปิดเครื่องไม่ทำงาน ให้โหลดหน้าซ้ำ คลิก / แตะปุ่มเชื่อมต่อ จากนั้นคลิก / แตะปุ่มปิดเครื่อง ควรปิดเครื่อง

ขั้นตอนที่ 5: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

ดังที่กล่าวไว้ก่อนหน้านี้ คุณไม่จำเป็นต้องใช้ Roomba สำหรับโครงการนี้ อะไรก็ได้ที่มีสองมอเตอร์ สองล้อและเฟรมก็ใช้ได้ ฉันแยก Roomba ออกจากกันและถอดทุกอย่างออก ยกเว้นโมดูลล้อและแบตเตอรี่

โมดูลล้อ

ล้อและมอเตอร์ของ Roomba ประกอบเข้าด้วยกันในโมดูลที่ถอดออกได้ แต่ละโมดูลมีตัวเรือนด้านนอกสีน้ำเงินซึ่งประกอบด้วยมอเตอร์ กระปุกเกียร์ ล้อ สปริงกันสะเทือน และแผงอินเทอร์เฟซ

บอร์ดอินเทอร์เฟซ

แต่ละบอร์ดอินเทอร์เฟซมีสายไฟหกเส้น มีสายไฟสองเส้น (สีแดง[+] สีดำ[-]) ที่หมุนมอเตอร์ สายข้อมูลหนึ่งเส้นสำหรับเซ็นเซอร์เอฟเฟกต์ฮอลล์ หนึ่งสายสำหรับสวิตช์เลื่อนล้อ สาย 5V หนึ่งเส้น และสาย GND หนึ่งเส้นสำหรับจ่ายไฟให้กับเซ็นเซอร์ คุณจะต้องแยกโมดูลออกจากกันเพื่อเข้าถึงบอร์ดอินเทอร์เฟซ ฉันลบทุกอย่างกลับไปที่มอเตอร์และบัดกรีสาย [+] และ [-] ใหม่เข้ากับมอเตอร์ (ดูรูป) ขึ้นอยู่กับคุณว่าจะรักษาเซ็นเซอร์ไว้หรือไม่

สปริงแขวน

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

การเดินสายไฟมอเตอร์ไปยังตัวควบคุมมอเตอร์

มอเตอร์หันหน้าเข้าหากัน นั่นหมายความว่าในการขับเคลื่อน Roomba ไปในทิศทางไปข้างหน้า มอเตอร์ตัวหนึ่งจะต้องหมุนไปข้างหน้าในขณะที่อีกตัวหมุนไปข้างหลัง ฉันไม่ได้คิดมากเกี่ยวกับเรื่องนี้จนกระทั่งหลังจากที่ฉันวางสายทุกอย่างแล้ว ฉันลงเอยด้วยการเขียนโค้ดเกี่ยวกับวิธีที่ฉันต่อสายมอเตอร์ในตอนแรก นี่เป็นอุบัติเหตุที่มีความสุขเพราะเมื่อใดก็ตามที่ Raspberry Pi เปิด/ปิด จะมีแรงดันเอาต์พุตไปที่พิน GPIO วิธีที่ฉันมีสายต่างๆ Roomba จะหมุนจนกว่า Raspberry Pi จะบูตขึ้น (ประมาณสามสิบวินาที) และหมุนเมื่อปิดเครื่องจนกว่าไฟจะถูกถอดออก ถ้าต่อสายต่างกันก็อาจจะกลิ้งไปข้างหน้า/ถอยหลังซึ่งจะทำให้เกิดการระคายเคือง ฉันวางแผนที่จะแก้ไขปัญหานี้ในที่สุดด้วยสวิตช์ง่ายๆ สำหรับตัวควบคุมมอเตอร์

การเดินสายไฟมอเตอร์และแบตเตอรี่ไปยังตัวควบคุมมอเตอร์

กำลังไฟ - - - - - - - - - - - - - - - 12V [+]- - - - - - - - - - - - - Roomba Battery [+]

มอเตอร์ 2- - - - - - - - - - - - - - สีดำ- - - - - - - - - - - - - - มอเตอร์ด้านซ้าย [-] มอเตอร์ 2- - - - - - - - - - - - - - - สีแดง- - - - - - - - - - - - - - มอเตอร์ด้านซ้าย [+] มอเตอร์ 1- - - - - - - - - - - - - - - สีดำ- - - - - - - - - - - - - - มอเตอร์ขวา[-] มอเตอร์ 1- - - - - - - - - - - - - - สีแดง- - - - - - - - - - - - - - - มอเตอร์ขวา[+] GND- - - - - - - - - - - - - - - - - 12V [-]- - - - - - - - - - - - - แบตเตอรี่ Roomba [-]

การเดินสายตัวควบคุมมอเตอร์กับ Raspberry Pi

Motor Controller Pins Wire Color (ดูรูป) Raspberry Pi Pins

GND- - - - - - - - - - - - - - - - สีดำ - - - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - - สีน้ำเงิน - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - สีเขียว- - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - สีเหลือง - - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - สีส้ม - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - - สีแดง- - - - - - - - - - - - - - -5V

การติดตั้งอุปกรณ์อิเล็กทรอนิกส์

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

แบตเตอรี่

ฉันใช้แบตเตอรี่แยกต่างหากสำหรับ Raspberry Pi และตัวควบคุมมอเตอร์ แบตเตอรี่ของ Pi เป็นเพียงชุดแบตเตอรี่ 5V ที่ใช้เพื่อเพิ่มโทรศัพท์มือถือ สำหรับตัวควบคุมมอเตอร์ ฉันใช้แบตเตอรี่ Roomba ดั้งเดิมที่มาพร้อมกับแบตเตอรี่ ขั้วแบตเตอรี่ไม่มีฉลากกำกับ ดังนั้นจึงควรตรวจสอบแรงดันไฟฟ้าด้วยโวลต์มิเตอร์ก่อนต่อสายกับตัวควบคุมมอเตอร์ ในการต่อสายไฟเข้ากับแบตเตอรี่ Roomba ฉันใช้แม่เหล็กนีโอไดเมียมสี่อัน (ดูรูป) ฉันบัดกรีแม่เหล็กสองอันเข้ากับสายไฟและอีกสองอันติดอยู่ที่ขั้วแบตเตอรี่ การบัดกรีล้างอำนาจแม่เหล็ก อย่างไรก็ตาม การเคลือบด้านนอกยังสามารถยึดติดกับแม่เหล็กบนขั้วและนำไฟฟ้าได้ ทำให้การเชื่อมต่อและถอดแบตเตอรี่เป็นเรื่องง่าย

การทดสอบ

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

เข้าสู่ระบบและเริ่มโปรแกรม roombabot.py

pi@raspberrypi:~$ sudo python /home/pi/roombarobot/roombabot.py

ไปที่หน้าการควบคุมเว็บและทดสอบ หากทุกอย่างต่อสายอย่างถูกต้อง ล้อควรหมุนไปในทิศทางที่ตรงกันเมื่อคลิกปุ่ม / กดปุ่มลูกศร (อย่าลืมคลิกเชื่อมต่อ)

ขั้นตอนที่ 6: การเริ่มรหัส Python เมื่อบูต / เสร็จสิ้น

การเริ่มต้นรหัส Python เมื่อบูต / เสร็จสิ้น
การเริ่มต้นรหัส Python เมื่อบูต / เสร็จสิ้น
การเริ่มต้นรหัส Python เมื่อบูต / เสร็จสิ้น
การเริ่มต้นรหัส Python เมื่อบูต / เสร็จสิ้น

สิ่งสุดท้ายที่เราต้องทำคือบอก Raspbian ให้เริ่มโปรแกรม python เมื่อบูต ในการทำเช่นนี้เราจะสร้างสคริปต์และกำหนดเวลาให้รันเมื่อรีบูตโดยใช้ crontab

สร้างสคริปต์

สร้างไฟล์สคริปต์ใหม่ชื่อ startrobot.sh ในไดเร็กทอรีผู้ใช้ pi

pi@raspberrypi:~ $ sudo nano startrobot.sh

คัดลอกบรรทัดต่อไปนี้ลงในไฟล์

#!/bin/sh

#startrobot.sh cd / cd /home/pi/roombarobot sudo python roombabot.py cd /

บันทึกไฟล์และออก

ทำให้ไฟล์ startrobot.sh ปฏิบัติการได้

pi@raspberrypi:~$ sudo chmod 755 startrobot.sh

ทดสอบ (กด ctrl + c เพื่อหยุด)

pi@raspberrypi:~$ sh startrobot.sh

แก้ไขไฟล์ crontab

pi@raspberrypi:~$ sudo crontab -e

เพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์

# ม. ดอม ม่อน ดาว คำสั่ง

@reboot sh /home/pi/startrobot.sh

บันทึกและออก

โปรแกรม roombabot.py ควรเริ่มทำงานเมื่อ Pi ถูกรีบูตหรือเปิดเครื่อง

เสร็จสิ้น

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

แนะนำ: