สารบัญ:
- ขั้นตอนที่ 1: ติดตั้ง Raspbian และตั้งค่าที่อยู่ IP แบบคงที่
- ขั้นตอนที่ 2: ติดตั้งและกำหนดค่า Motion
- ขั้นตอนที่ 3: ติดตั้ง Apache และตั้งค่า Web Control Page
- ขั้นตอนที่ 4: ตั้งค่าและทดสอบโค้ด
- ขั้นตอนที่ 5: การประกอบ
- ขั้นตอนที่ 6: การเริ่มรหัส Python เมื่อบูต / เสร็จสิ้น
วีดีโอ: หุ่นยนต์ Roomba ควบคุมเบราว์เซอร์ด้วย Raspberry Pi รุ่น 3 A+: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
ภาพรวม
คำแนะนำนี้จะเน้นไปที่วิธีให้ 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 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 เป็นโปรแกรมที่ใช้ในโครงการกล้องวงจรปิด / เว็บแคมจำนวนมาก การเคลื่อนไหวมีคุณสมบัติมากมาย อย่างไรก็ตาม เรากำลังตั้งค่าให้สตรีมวิดีโอจากเว็บแคมไปยังพอร์ต 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 เป็นเว็บเซิร์ฟเวอร์สำหรับหน้าเว็บควบคุมของโรบ็อต เราจะแทนที่ไฟล์ 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 เมื่อบูต / เสร็จสิ้น
สิ่งสุดท้ายที่เราต้องทำคือบอก 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 ดั้งเดิมเพื่อให้สามารถเข้าถึงหุ่นยนต์ได้เมื่อฉันไม่อยู่บ้าน ฉันตั้งใจที่จะทำการเปลี่ยนแปลงเพิ่มเติมในอนาคต ฉันวางแผนที่จะทำให้มันเป็นอิสระและอาจติดตามการเคลื่อนไหวในขณะที่ยังคงสามารถควบคุมการควบคุมได้เมื่อฉันต้องการ
แนะนำ:
Legend of Zelda Rupee Nightlight (รุ่น N64): 7 ขั้นตอน (พร้อมรูปภาพ)
Legend of Zelda Rupee Nightlight (รุ่น N64): ฉันทำสิ่งนี้สำหรับการประกวด Instructables Rainbow โดยเฉพาะ เช่นเดียวกับโปรเจ็กต์อื่นๆ ของฉัน ฉันคือ Legend of Zelda nerd (Original Rupee Nightlight, Majora's Mask) ด้วยการตอบรับเชิงบวกจากชุมชน Instructables ฉันจึงตัดสินใจสร้าง
หุ่นยนต์ทรงตัว / หุ่นยนต์ 3 ล้อ / หุ่นยนต์ STEM: 8 ขั้นตอน
หุ่นยนต์ทรงตัว / หุ่นยนต์ 3 ล้อ / หุ่นยนต์ STEM: เราได้สร้างหุ่นยนต์ทรงตัวแบบผสมผสานและ 3 ล้อสำหรับใช้ในการศึกษาในโรงเรียนและโปรแกรมการศึกษาหลังเลิกเรียน หุ่นยนต์นี้ใช้ Arduino Uno, ชิลด์แบบกำหนดเอง (รายละเอียดการก่อสร้างทั้งหมดที่มีให้), ชุดแบตเตอรี่ Li Ion (ข้อจำกัดทั้งหมด
Lady Buggy รุ่น WiFi: 5 ขั้นตอน (พร้อมรูปภาพ)
Lady Buggy รุ่น WiFi: "Lady Buggy" เป็นแมลงเต่าทองสไตล์ "บั๊กกี้" ฉันออกแบบมาสำหรับหลานๆ ของเราตั้งแต่อายุ 2 ขวบจนถึง อืม ฉันจะปล่อยมันไว้ตอน 2 ขวบ + ดังที่แสดงในวิดีโอ Lady Buggy เป็นรถควบคุมระยะไกลที่เปิดใช้งาน wifi ที่มีคุณสมบัติ
จะทำอย่างไรกับคอลเลกชันมอเตอร์แบบสุ่ม: โครงการ 2: ไฟหมุน (รุ่น UFO): 12 ขั้นตอน (พร้อมรูปภาพ)
จะทำอย่างไรกับ Random Motor Collections: Project 2: Spinning Lights (Model UFO): ดังนั้น ฉันยังมี Random Motor Collection… ฉันจะทำอย่างไร? ลองคิดดู แล้วสปินเนอร์ไฟ LED ล่ะ? (ไม่ใช่มือถือ ขอโทษสำหรับคนรักสปินเนอร์) มันดูเหมือนยูเอฟโอ ฟังดูเหมือนส่วนผสมระหว่างเครื่องตีวัชพืชและเครื่องปั่น
สร้าง RAZR รุ่น Star Trek Communicator: 3 ขั้นตอน (พร้อมรูปภาพ)
สร้าง RAZR รุ่น Star Trek Communicator: เนื่องจาก Star Trek Communicator เป็นแรงบันดาลใจสำหรับโทรศัพท์ฝาพับในปัจจุบัน ทำไมไม่ทำให้โทรศัพท์ของคุณดูเหมือนของจริงมากขึ้น ฉันทำและนี่คือวิธี