Giá tr đị ược chia cho hai vì ray đi v phía trề ước và phía sau bao ph cùng m t kho ngủ ộ ảcách... digitalWrite12,LOW; delay500;Serial.print"backward"; digitalWrite9,LOW; digitalWrite10,
Trang 1DIY Smart hút b i làm s ch s d ng Arduino ụ ạ ử ụ
B iở B.Aswinth Raj 23 Nh n xétậ
Arduino d a trên tr ng i Tránh máy hút b i làm s ch ự ở ạ ụ ạ
Hi guys, b n là m t newbie cho th gi i c a Robotics ho c đi n t ?ạ ộ ế ớ ủ ặ ệ ử Ho c B n đangặ ạtìm ki m m t d án đ n gi n nh ng m nh m đ làm cho b n bè và giáo viên nế ộ ự ơ ả ư ạ ẽ ể ạ ấ
tượng? Sau đó, đây là n i.ơ
Trong d án này, chúng tôi s s d ng s c m nh c a H th ng Nhúng và Đi n t đự ẽ ử ụ ứ ạ ủ ệ ố ệ ử ể
t o ra robot c a riêng chúng tôi có th giúp chúng tôi gi n i ho c n i làm vi c g nạ ủ ể ữ ơ ở ặ ơ ệ ọgàng và g n gàng.ọ Robot này là máy hút b i cóụ bánh xe b n bánh đ n gi nố ơ ả , có thể
thông minh tránh ch ướ ng ng i v t ạ ậ và hút chân không sàn cùng m t lúc.ộ Ý tưởngnày l y c m h ng t máy hút b i n i ti ngấ ả ứ ừ ụ ổ ế Robot Roomba được hi n th trong hìnhể ị
dưới đây
Trang 2Ý tưởng c a chúng tôi là làm cho m t robot đ n gi n ngay t đ u có thủ ộ ơ ả ừ ầ ể t đ ngự ộ tránh nh ng tr ng i trong khi d n d p sàn nhà ữ ở ạ ọ ẹ . Tin tưởng tôi m i ngọ ười th t vuiậ
v !ẻ
V t li u và thành ph n b t bu c: ậ ệ ầ ắ ộ
Đượ ồc r i, bây gi chúng tôi có ý tờ ưởng về Robot Máy hút b i T đ ng c aụ ự ộ ủ chúng tôi
và chúng tôi bi t chúng tôi đang làm gì.ế Vì v y, chúng ta hãy xem xét n i chúng ta nênậ ơ
b t đ u th c hi n c a chúng tôi.ắ ầ ự ệ ủ Đ xây d ng m t robot c a ý tể ự ộ ủ ưởng c a chúng tôi,ủ
trước tiên chúng ta c n ph i quy t đ nh nh ng đi u sau:ầ ả ế ị ữ ề
Lo i vi đi u khi nạ ề ể
C m bi n yêu c uả ế ầ
Yêu c u đ ng cầ ộ ơ
V t li u khung xeậ ệ
Bây gi , cho phép chúng tôi quy t đ nh v t ng đi m nêu trên.ờ ế ị ề ừ ể B ng cách này, s r tằ ẽ ấ
h u ích n u b n không ch xây d ng robot làm s ch nhà này mà còn cho b t k robotữ ế ạ ỉ ự ạ ấ ỳnào khác mà làm n i b t trí tổ ậ ưởng tượng c a b n.ủ ạ
Lo i vi đi u khi n: ạ ề ể
Trang 3Ch n Vi đi u khi n là m t nhi m v r t quan tr ng, vì b đi uọ ề ể ộ ệ ụ ấ ọ ộ ề khi n này s ho tể ẽ ạ
đ ng nh b não ộ ư ộ robot c a b n.ủ ạ H u h t các d án T làm đầ ế ự ự ược th c hi n xungự ệquanh Arduino và Raspberry Pi , nh ng không ph i là nh nhau.ư ả ư Không cóMicrocontroller c th mà b n có th làm vi c trên.ụ ể ạ ể ệ T t cấ ả ph thu c vào yêu c u vàụ ộ ầ
Gi ng nh m tố ư ộ Tablet không th để ược thi t k trên Microcontroller 8 bit và không cóế ếgiá tr s d ng ARM cortex m4 đ thi t k m t máy tính đi n t ị ử ụ ể ế ế ộ ệ ử
L a ch n vi đi u khi n hoàn toàn ph thu c vào các yêu c u c a s n ph m:ự ọ ề ể ụ ộ ầ ủ ả ẩ
1. Trước tiên yêu c u k thu t đầ ỹ ậ ược xác đ nh nh s lị ư ố ượng yêu c u I / O pins, kíchầ
thước flash, s lố ượng / lo i giao th c truy n thông, b t k tính năng đ c bi t vvạ ứ ề ấ ỳ ặ ệ
2. Sau đó li t kê các b đi u khi n đệ ộ ề ể ượ ực l a ch n theo yêu c u k thu t.ọ ầ ỹ ậ Danh sáchnày ch a b đi u khi n t các nhà s n xu t khác nhau.ứ ộ ề ể ừ ả ấ Nhi u b đi u khi n ng d ngề ộ ề ể ứ ụ
c th có s n.ụ ể ẵ
3. Sau đó b đi u khi n độ ề ể ược hoàn t t d a trên chi phí, tính kh d ng và s h tr tấ ự ả ụ ự ỗ ợ ừnhà s n xu t.ả ấ
N u b n không mu n làm r t nhi u nâng n ng và ch mu n tìm hi u nh ng đi u cế ạ ố ấ ề ặ ỉ ố ể ữ ề ơ
b n c a vi đi u khi n và sau đó có đả ủ ề ể ược sâu vào nó, sau đó b n có th ch nạ ể ọArduino. Trong d án này, chúng tôi s s d ngự ẽ ử ụ Arduino . Trước đây chúng tôi đã t oạ
ra nhi u lo iề ạ Robot s d ng Arduinoử ụ :
Robot ki m soát DTMF s d ng Arduinoể ử ụ
Line Follower Robot s d ng Arduinoử ụ
Robot đi u khi n b ng máy tính s d ng Arduinoề ể ằ ử ụ
Robot đi u khi n b ng WiFi s d ng Arduinoề ể ằ ử ụ
Accelerometer D a trên Tay c ch Ki m soát Robot s d ng Arduinoự ử ỉ ể ử ụ
Xe đ ch i có đi u khi n Bluetooth b ng Arduinoồ ơ ề ể ằ
Trang 4B c m bi n siêu âm ộ ả ế bao g m hai m t tròn mà trong đó m t cái đồ ắ ộ ược s d ng đử ụ ểtruy n tín hi u c a Hoa K và m t tín hi u khác đ nh n các tia nề ệ ủ ỳ ộ ệ ể ậ ước M ỹ Th i gianờ
c a các tia đ nh n đủ ể ậ ược truy n và nh n l i đề ậ ạ ược tính b i vi đi u khi n.ở ề ể Bây gi , vìờ
th i gian và t c đ c a âm thanh đờ ố ộ ủ ược bi t, chúng ta có th tính toán kho ng cáchế ể ảtheo các công th c sau đây.ứ
Kho ng cách = Th i gian x T c đ âm thanh chia cho 2ả ờ ố ộ
Trang 5Giá tr đị ược chia cho hai vì ray đi v phía trề ước và phía sau bao ph cùng m t kho ngủ ộ ảcách. Gi i thích chi ti t v vi c s d ngả ế ề ệ ử ụ c m bi n siêu âm đả ế ược đ a ra đâyư ở .
Các đ ng c yêu c u: ộ ơ ầ
Có khá nhi u đ ng c đề ộ ơ ược s d ng trong lĩnh v c robot h c nh ng ngử ụ ự ọ ữ ườ ử ụi s d ng
nh t là đ ng c bấ ộ ơ ước và servo. Vì d án này không có b t k thi t b truy n đ ngự ấ ỳ ế ị ề ộ
ph c t p ho c b mã hoá quay, chúng tôi s s d ng m tứ ạ ặ ộ ẽ ử ụ ộ PMDC Motor bình
thường . Nh ng pin c a chúng tôi là m t chút c ng k nh và n ng n vì v y chúng tôiư ủ ộ ồ ề ặ ề ậ
s d ng b n đ ng c đ lái xe c a chúng tôi t t c b n robot là cùng m t đ ng cử ụ ố ộ ơ ể ủ ấ ả ố ộ ộ ơPMDC. Nh ng b n nên đ t vào đ ng c bư ạ ặ ộ ơ ước và đ ng c servo m t khi b n c mộ ơ ộ ạ ả
th y tho i mái v i đ ng c PMDC.ấ ả ớ ộ ơ
Robot v t li u khung: ậ ệ
Là m t sinh viên hay m t ngộ ộ ười yêu thích ph n khó nh t trong khi làm m t robot làầ ấ ộchu n b khung g m c a robot c a chúng tôi.ẩ ị ầ ủ ủ V n đ là v i s s n có c a các công cấ ề ớ ự ẵ ủ ụ
và v t li u.ậ ệ V t li u lý tậ ệ ưởng nh t cho d án này là Acrylic, nh ng nó đòi h i khoan vàấ ự ư ỏcác công c khác đ làm vi c v i nó.ụ ể ệ ớ Do đó gỗ được ch n đ m i ngọ ể ọ ười có th làmể
Dung l ượ ng pin:
L a ch n dung lự ọ ượng pin nên là ph n cu i cùng c a chúng tôi vì nó hoàn toàn phầ ố ủ ụthu c vào khung xe và đ ng c c a b n.ộ ộ ơ ủ ạ đây pin c a chúng tôi nên lái m t máy hútỞ ủ ộ
b i mà rút ra kho ng 35A và b n đ ng c PMDC.ụ ả ố ộ ơ Do đó chúng tôi s yêu c u m t pinẽ ầ ộ
n ng.ặ Tôi đã ch nọ 12V 20Ah SLAB (Pin axit chì k tế dính ) và chi c c ng k nh c a nóế ồ ề ủlàm cho robot c a chúng tôi có đủ ược b n đ ng c PMDC đ kéo gã kh ng l này.ố ộ ơ ể ổ ồ
Bây gi chúng ta đã ch n t t c các thành ph nờ ọ ấ ả ầ b t bu cắ ộ c a chúng taủ đ li t kêể ệchúng
Trang 6Trình đi u khi n mô t (L293D): ề ể ơ
M t trình đi u khi n đ ng c là m t môđun trung gian gi a Arduino và Motor.ộ ề ể ộ ơ ộ ữ Đi uềnày là do microcontroller Arduino s không th cung c p cho các yêu c u hi n t i choẽ ể ấ ầ ệ ạ
đ ng c đ làm vi c nó và ch có th cung c p 40mA, do đó v thêm hi n nay s làmộ ơ ể ệ ỉ ể ấ ẽ ệ ẽ
h ng b đi u khi n vĩnh vi n.ỏ ộ ề ể ễ Vì v y, chúng tôi kích ho t các trình đi u khi n đ ng cậ ạ ề ể ộ ơ
mà l n lầ ượt ki m soát đ ng c ể ộ ơ
Trang 7Chúng tôi s s d ngẽ ử ụ đ ng c L293D Motor Driver ICộ ơ mà có th cung c p đ n 1A,ể ấ ế
do đó người lái xe này s nh n đẽ ậ ược thông tin t Arduino và làm cho đ ng c ho từ ộ ơ ạ
đ ng nh mong mu n.ộ ư ố
Đó là nó!! Tôi đã đ a ra h u h t các thông tin quan tr ng nh ng trư ầ ế ọ ư ước khi chúng tôi
b t đ u xây d ng robot, b n nên đi qua các thông s k thu t c a L293D vàắ ầ ự ạ ố ỹ ậ ủArduino. N u b n có b t k nghi ng ho c v n đ nào b n có th liên h v i chúng tôiế ạ ấ ỳ ờ ặ ấ ề ạ ể ệ ớqua ph n nh n xét.ầ ậ
Xây d ng và th nghi m Robot: ự ử ệ
Máy hút b i là ph n quan tr ng nh t trong vi c đ t Robot.ụ ầ ọ ấ ệ ặ Nó ph i đả ược đ t gócặ ở nghiêng nh th hi n trong hình nh, đ nó có th cung c p ho t đ ng chân khôngư ể ệ ả ể ể ấ ạ ộthích h p.ợ Máy hút b i không đụ ược ki m soát b iể ở Arduino . M t khi b n b t robot,ộ ạ ậchân không cũng được b t lên.ậ
M t quá trình m t m i c a vi c xây d ng Robot c a chúng tôi là các công trình b ngộ ệ ỏ ủ ệ ự ủ ằ
g ỗ Chúng tôi ph i kh c g c a chúng tôi và khoan m t s l đ đ t các b c m bi nả ắ ỗ ủ ộ ố ỗ ể ặ ộ ả ế
và máy hút b i.ụ
B n nênạ ki m tra Ride Robotể b ng mã sau đây khi b n s p x p Motor và Motorằ ạ ắ ế
trước khi k t n i Sensors.ế ố
Trang 8PinMode (12, OUTPUT); }
Serial.print ("lùi");
DigitalWrite (9, LOW); DigitalWrite (10, CAO); DigitalWrite (11, LOW); DigitalWrite (12, CAO); }
((((void setup()
{
Serial.begin(9600);
pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); }
void loop()
{
delay(1000);
Serial.print("forward"); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,HIGH);
Trang 9digitalWrite(12,LOW); delay(500);
Serial.print("backward"); digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,HIGH); }
))))
Trang 10
N u t t c m i th ho t đ ng t t thì b n có th k t n i các c m bi n v iế ấ ả ọ ứ ạ ộ ố ạ ể ế ố ả ế ớ Arduino nhưtrong S đ m ch và s d ngơ ồ ạ ử ụ Mã s đ y đố ầ ủ cu i.ở ố Nh b n th y, tôi đã l p m t c mư ạ ấ ắ ộ ả
bi n siêu âm lên phía trế ước và hai b c m bi n h ng ngo i c hai bên c aộ ả ế ồ ạ ở ả ủrobot. T n nhi t đả ệ ượ ắc l p vào L293D ch trong trỉ ường h p vi m ch nóng lên nhanh.ợ ạ
B n cũng có th thêm vài ph n ph nh th nàyạ ể ầ ụ ư ế
Đây là m tộ s p x p Sweepingắ ế có th để ược đ t trên c hai đ u c a ph n phía trặ ả ầ ủ ầ ước
đó s đ y b i d c theo các m t vào khu v c hút.ẽ ẩ ụ ọ ặ ự
H n n a, b n cũng có m t l a ch n đ làm m tơ ữ ạ ộ ự ọ ể ộ phiên b n nh h n c a máy hútả ỏ ơ ủ
b i ụ này nh th nàyư ế
Trang 11Robot nh h n này đỏ ơ ược làm b ng các tông và ch y trên b ng phát tri nằ ạ ả ểATMega16. Ph n hút b i đầ ụ ược th c hi n b ng cách s d ng qu t BLDC và kèm theoự ệ ằ ử ụ ạ
m t h p.ộ ộ B n có th áp d ng đi u này n u b n mu n gi ngân sách th p.ạ ể ụ ề ế ạ ố ữ ấ Ý tưởngnày cũng ho t đ ng nh ng nó không hi u qu ạ ộ ư ệ ả
S đ m ch: ơ ồ ạ
Trang 13Mã cho Máy hút b i nàyụ có th tìm th y trong ph n Mã dể ấ ầ ưới đây. M t khi k t n iộ ế ố
được hoàn thành và chương trình được đ vào Arduino, robot c a b n đã s n sàngổ ủ ạ ẵ
đ b t đ u hành đ ng.ể ắ ầ ộ Vi c làm vi c c a mã đệ ệ ủ ược gi i thích b ng cách s d ng cácả ằ ử ụ
nh n xét.ậ N u b n mu n xem robot này đang ho t đ ng, hãy xemế ạ ố ạ ộ Video bên dưới.
H n n a, tôi cũng có k ho ch đ hoàn toàn 3D In các ph n trong phiên b n ti p theoơ ữ ế ạ ể ầ ả ế
c a nó.ủ Tôi cũng s đẽ ược thêm vài tính năng mát m và các thu t toán ph c t p đẻ ậ ứ ạ ể
nó bao g m toàn b di n tích th m và d dàng đ x lý và kích thồ ộ ệ ả ễ ể ử ước nh g n.ỏ ọ Vì
v y, hãy theo dõi đ c p nh t trong tậ ể ậ ậ ương lai
Trang 14DigitalWrite (10, LOW); DigitalWrite (11, HIGH);
Ch m tr (1000); ậ ễ
Serial.print ("rearranged left"); DigitalWrite (8, LOW);
DigitalWrite (9, LOW);
DigitalWrite (10, CAO); DigitalWrite (11, LOW);
DigitalWrite (9, LOW);
DigitalWrite (10, LOW); DigitalWrite (11, LOW);
Trang 15if (distance >= 200 || distance <= 0){ Serial.println("Out of range");
Trang 16digitalWrite(10,LOW);
digitalWrite(11,LOW);
Trang 17Đi n tho i di đ ng ki m soát xe Robot b ng GSensor và Arduino ệ ạ ộ ể ằ
Trong bài báo này, chúng tôi sẽ đi u khi n chi c xe robot thông qua c m bi nề ể ế ả ế
G c a đi n tho i di đ ng c a chúng tôi và b n s có th di chuy n Robot ch b ngủ ệ ạ ộ ủ ạ ẽ ể ể ỉ ằcách nghiêng Đi n tho i.ệ ạ Chúng tôi cũng s s d ng ng d ngẽ ử ụ ứ ụ Arduino và
RemoteXY cho Robot Đi u khi n GSensor này.ề ể ng d ng RemoteXY đỨ ụ ược s d ngử ụ
đ t o giao di n trong Đi n tho i thông minh đ ki m soát Robot.ể ạ ệ ệ ạ ể ể Chúng tôi s thêmẽthanh đi u khi n trong giao di n đ Robot có th đề ể ệ ể ể ược đi u khi n b ng Joystick cũngề ể ằ
nh nghiêng đi n tho i.ư ệ ạ
Trang 18GSensor ho c c m bi n tr ng l c ặ ả ế ọ ự c b n làơ ả gia t c kố ế trong đi n tho i thông minhệ ạ
được s d ng đ đi u khi n hử ụ ể ề ể ướng màn hình c a đi n tho i.ủ ệ ạ Accelerometer c mả
nh n hậ ướng X, Y, Z c a l c h p d n và xoay màn hình theo s s p x p c a Đi nủ ự ấ ẫ ự ắ ế ủ ệtho i.ạ Ngày nay, c m bi n Gyroscope nh y c mả ế ạ ả và chính xác h nơ được s d ngử ụtrong đi n tho i di đ ng đ quy t đ nh hệ ạ ộ ể ế ị ướng c a màn hình.ủ Trong d án c a chúngự ủtôi, xe Robot s di chuy n, theo hẽ ể ướng xoay đi n tho i, nh khi chúng tôi nghiêngệ ạ ư
đi n tho i v phía trệ ạ ề ước, sau đó xe s di chuy n v phía trẽ ể ề ước và chúng tôi nghiêng
nó xu ng sau đó xe s di chuy n ngố ẽ ể ược tr l i.ở ạ Đi u này cũng gi ng nh khi chúng tôiề ố ư
ch i m t s trò ch i ô tô trong Đi n tho i di đ ng, h cũng s d ng c m bi n G đ diơ ộ ố ơ ệ ạ ộ ọ ử ụ ả ế ểchuy n xe cho phù h p.ể ợ Ki m tra Video cu i,ể ở ố
T o giao di n cho Robot b ng ng d ng RemoteXY: ạ ệ ằ ứ ụ
Đ t o giao di n đ đi u khi n xe Robot b ng ng d ng RemoteXY, b n s ph i vàoể ạ ệ ể ề ể ằ ứ ụ ạ ẽ ảliên k t sauế
Http://remotexy.com/en/editor/ Trang web s gi ng nh th nàyẽ ố ư ế
Trang 19Sau đó t phía bên trái c a màn hình,ừ ủ nh t nút chuy n đ i và phím đi u khi n vàặ ể ổ ề ể
đ t nó trong giao di n di đ ng ặ ệ ộ . Nút s b t đèn chân 13 đẽ ậ ở ược k t n i n i b trongế ố ộ ộArduino và c n đi u khi n s di chuy n chi c xe robot.ầ ề ể ẽ ể ế Trang web sau khi đ t công t cặ ắ
và phím đi u khi n s trông nh th này.ề ể ẽ ư ế
Sau đó, chúng ta s ph iẽ ả đ t nút kích ho t / vô hi u hóa Gặ ạ ệ cùng v i c n đi u khi n,ớ ầ ề ể
đ chúng ta có th di chuy n xe Robot b ng cách nghiêng đi n tho i theo hể ể ể ằ ệ ạ ướng trái,
ph i, lên và xu ng.ả ố S d ng nút đó chúng tôi có th b t và t t c m bi n G, khi c mử ụ ể ậ ắ ả ế ả
bi n G b t t Xe có th đế ị ắ ể ược đi u khi n b ng cách di chuy n c n đi u khi n.ề ể ằ ể ầ ề ể Đ đ tể ặnút kích ho t / vô hi u hoá G, nh n vào c n đi u khi n mà b n đã đ t trong giao di nạ ệ ấ ầ ề ể ạ ặ ệ
và phía bên trái s có m t ph n thu c tính, s có m t tùy ch n đ đ t nút c m bi nở ẽ ộ ầ ộ ẽ ộ ọ ể ặ ả ế
Trang 20G g n thanh đi u khi n, Vì v y hãy đ t nút c m bi n G b t c đâu b n mu n.ầ ề ể ậ ặ ả ế ở ấ ứ ạ ố Trangweb sau đây s gi ng nh th này.ẽ ố ư ế
Sau đó, nh p vào nútấ "Nh n mã ngu n" và l u nó vào máy tính c a b nậ ồ ư ủ ạ . T i thả ư
vi n tệ ừ đây và l u nó vào th m c th vi n Arduino.ư ư ụ ư ệ Biên d ch mã đã t i xu ng đị ả ố ể
ki m tra xem có l i không.ể ỗ Đây không ph i là mã mà s ch y Robot nh ng nó s giúpả ẽ ạ ư ẽ
đ trong vi c s d ng App v i Arduino.ỡ ệ ử ụ ớ T i xu ng ng d ng tả ố ứ ụ ừ đây ho c truy c p C aặ ậ ửhàng Play và t i xu ng ng d ng RemoteXY t đó cho b n Android Smart Phone.ả ố ứ ụ ừ ạ
S đ m ch và Gi i thích: ơ ồ ạ ả
Trước tiên, chúng ta s giao ti p b đi u khi n đ ng c L298N v i Arduino.ẽ ế ộ ề ể ộ ơ ớ K t n iế ốENA và ENB pin c a b đi u khi n đ ng c v i các pin Arduino 12 và 11 tủ ộ ề ể ộ ơ ớ ươngng
ứ Hai chân này dành cho đi u khi n PWM c a đ ng c ề ể ủ ộ ơ B ng cách s d ng cácằ ử ụtheses pins, chúng ta có th tăng ho c gi m t c đ c a xe.ể ặ ả ố ộ ủ Sau đó k t n i IN1, IN2,ế ốIN3 và IN4 v i chân Erduino 10, 9, 8 và 7 tớ ương ng.ứ Nh ng chân này s xoay đ ngữ ẽ ộ
c c hai hơ ở ả ướng (theo chi u kim đ ng h và ngề ồ ồ ược chi u kim đ ng h ).ề ồ ồ
Trang 21Đ c p ngu n cho đ ng c , n i đi n c c và âm c a pin vào 12V và m t đ t c a bể ấ ồ ộ ơ ố ệ ự ủ ặ ấ ủ ộ
đi u khi n mô t ề ể ơ Sau đó k t n i 5V và m t đ t t ế ố ặ ấ ừ b đi u khi n đ ng c đ n Arduinoộ ề ể ộ ơ ếVin và m t đ t.ặ ấ
Sau đó, chúng ta s k t n i môđun Bluetooth HC06 v i arduino.ẽ ế ố ớ N u b n có HC05,ế ạthì nó cũng s làm vi c.ẽ ệ K t n i VCC và m t đ t c a mô đun Bluetooth v i 5V và m tế ố ặ ấ ủ ớ ặ
đ t c a Arduino.ấ ủ Sau đó, k t n i pin TX c a Bluetooth Module v i pin 2 c a Arduinoế ố ủ ớ ủ
và pin RX đ n pin 3 c a Arduino.ế ủ Cũng ki m traể chi c xe đ ch i có đi u khi nế ồ ơ ề ểBluetooth b ng Arduinoằ đ tìm hi u thêm v cách s d ng Bluetooth v i Arduino.ể ể ề ử ụ ớ
Trang 22
Mã gi i thích: ả
Trang 23Mã Arduino đ y đầ ủ cho chi c xe Robot đi u khi n b ng Đi n tho i di đ ngế ề ể ằ ệ ạ ộ này
được đ a ra dư ưới đây trong ph n Mã, đây chúng tôi s hi u mã này đang ho t đ ngầ ở ẽ ể ạ ộ
nh th nào.ư ế
Trước h t, chúng tôi đã bao g m các th vi n cho ph n m m Serial vàế ồ ư ệ ầ ềRemoteXY. Th vi n RemoteXY s giúp chúng tôi thi t l p ng d ng b ng Arduino,ư ệ ẽ ế ậ ứ ụ ằthông qua đó chúng tôi s đi u khi n chi c xe robot.ẽ ề ể ế Sau đó, chúng tôi đã xác đ nhịcác chân cho mô đun Bluetooth, TX t module Bluetooth đừ ược k t n i v i pin 2 c aế ố ớ ủArduino đó là pin RX c a Arduino và RX t mô đun Bluetooth đủ ừ ược k t n i v i pin 3ế ố ớ
c a Arduino Là pin TX c a Arduino và đ t t c đ truy n c a môđun Bluetooth 9600.ủ ủ ặ ố ộ ề ủ ở
# Xác định REMOTEXY_MODE SOFTWARESERIAL
#include <SoftwareSerial.h> // Bao gồm thư viện nối tiếp phần mềm
# Include <RemoteXY.h> // Bao gồm thư viện từ xa
/ * Cài đặt kết nối RemoteXY * /
# Xác định REMOTEXY_SERIAL_RX 2 // xác định pin 2 như RX pin
# Xác định REMOTEXY_SERIAL_TX 3 // xác định pin 3 là chân TX
# Xác định REMOTEXY_SERIAL_SPEED 9600 // đặt tốc độ truyền tại 9600
Đo n mã sau s tăng ho c gi m t c đ đ ng c ạ ẽ ặ ả ố ộ ộ ơ Khi phím đi u khi n s gi a, t cề ể ẽ ở ữ ố
đ s b ng không và khi nó hộ ẽ ằ ở ướng v phía trề ước thì t c đ s tăng t 0 đ n 100.ố ộ ẽ ừ ế
T c đ s gi m t 0 t i 100 khi xe s di chuy n trong hố ộ ẽ ả ừ ớ ẽ ể ướng ngượ ạc l i. Xe cũng có
th để ược di chuy n t c đ c th , đi u này có th để ố ộ ụ ể ề ể ược th c hi n b ng cách đ a raự ệ ằ ưtín hi u PWM.ệ Tín hi u PWM s đệ ẽ ược trao cho các đ ng c theo vòng xoay c a c nộ ơ ủ ầ
đi u khi n.ề ể
If (motor_speed> 100) motor_speed = 100;
Nếu (motor_speed <-100) motor_speed = -100;
If (motor_speed> 0) {
DigitalWrite (con trỏ [0], CAO);
DigitalWrite (con trỏ [1], LOW);
AnalogWrite (con trỏ [2], motor_speed * 2,55);
}
Else if (motor_speed <0) {
DigitalWrite (con trỏ [0], LOW);
DigitalWrite (con trỏ [1], CAO);
AnalogWrite (con trỏ [2], (-motor_speed) * 2,55);
}
Else {
Trang 24DigitalWrite (con trỏ [0], LOW);
DigitalWrite (con trỏ [1], LOW);
AnalogWrite (con trỏ [2], 0);
}
Trong đo n mã sau, chúng ta đã đ nh nghĩa hàm s đạ ị ẽ ược g i b t c khi nào chúng taọ ấ ứ
s di chuy n c n đi u khi n trong ng d ng.ẽ ể ầ ề ể ứ ụ Khi chúng tôi s b t chuy n đ i trong cácẽ ậ ể ổ
ng d ng sau đó logic 1 s đ c trao cho pin 13 c a Arduino mà b t Trên pin
DigitalWrite (ledpin, (RemoteXY.switch_1 == 0)? LOW: CAO);
Tốc độ (first_motor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
Tốc độ (second_motor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
Trang 26Đây là cách chúng tôi có th s d ngể ử ụ c m bi n tr ng l c bên trong Đi n tho i diả ế ọ ự ệ ạ
đ ng c a chúng tôi ộ ủ đ di chuy n Robot.ể ể B n có th ti p t c th nghi m và tìm raạ ể ế ụ ử ệcách s d ngử ụ c m bi n G đ ki m soát nh ng th bên ngoài b ng cách liên k tả ế ể ể ữ ứ ằ ế
m t Microcontorller ộ gi a (nh Arduino).ở ữ ư
#define REMOTEXY_SERIAL_TX 3 // xác đ nh pin 3 nh pin TX ị ư
#define REMOTEXY_SERIAL_SPEED 9600 // đ t t c đ truy n t i 9600 ặ ố ộ ề ạ
Unsigned char RemoteXY_CONF [] = // c u hình t xa ấ ừ
đ ượ c ký k t char joystick_1_x; ế / / Phím đi u khi n xtr c ề ể ụ
ký char joystick_1_y; // thanh đi u khi n tr c y ề ể ụ
Trang 27(((( #define REMOTEXY_MODE SOFTWARESERIAL
#include <SoftwareSerial.h> //Including the software serial library
#include <RemoteXY.h> //Including the remotexy library
/* RemoteXY connection settings */
#define REMOTEXY_SERIAL_RX 2 //defining the pin 2 as RX pin
Trang 28#define REMOTEXY_SERIAL_TX 3 //defining the pin 3 as TX pin
#define REMOTEXY_SERIAL_SPEED 9600 //setting baudrate at 9600
digitalWrite (ledpin, (RemoteXY.switch_1==0)?LOW:HIGH);
Speed (first_motor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x); Speed (second_motor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x); }
Trang 29unsigned char RemoteXY_CONF[] = //remotexy configuration { 3,0,23,0,1,5,5,15,41,11
,43,43,1,2,0,6,5,27,11,5
,79,78,0,79,70,70,0 };
struct { //Function for declaring the variables signed char joystick_1_x; //joystick xaxis
Trang 30Hi n th m t hình nh trên màn hình LCD đ h a b ng cách s d ng 8.051 Vi đi u khi n ể ị ộ ả ồ ọ ằ ử ụ ề ể
Trong cu c s ng hàng ngày c a chúng tôi, chúng ta th y nhi u lo i thi t b đ hi n thộ ố ủ ấ ề ạ ế ị ể ể ịvăn b n, hình nh và đ h a.ả ả ồ ọ LCD là m t trong nh ng thi t b hi n th đi n t ph bi nộ ữ ế ị ể ị ệ ử ổ ế
nh t và đấ ược s d ng trong h u h t t t c các d án hi n th m t s lo i thông tin.ử ụ ầ ế ấ ả ự ể ị ộ ố ạ Cónhi u lo i màn hình LCD đề ạ ược s d ng trong các D án Đi n t ử ụ ự ệ ử Chúng tôi đã sử
d ng LCD 16X2 trong nhi u d án c a chúng tôi và cũng s d ngụ ề ự ủ ử ụ TFT LCD v iớArduino . B n có th tìm th y t t c các d án 16X2 LCD liên quan c a chúng tôi b ngạ ể ấ ấ ả ự ủ ằcách làm theo liên k t nàyế , bao g m interfacing v i 8051, AVR, Arduinoồ ớ và nhi uề
h n n a.ơ ữ
Trang 31Trong hướng d n này, chúng ta s làmẫ ẽ Graphic LCD interfacing v i 8.051ớ microcontroller . Trong d án này, chúng tôi s gi i thi u cáchự ẽ ớ ệ hi n th hình nhể ị ả trên màn hình LCD đ ho ồ ạ (GLCD).
Trang 32M t màn hình 16x2 đ n gi n có 16 chân nh ngộ ơ ả ư hình LCD có 20 chân. Pin mô
tả được đ a ra dư ưới đây theo datasheet c a nó:ủ
Trang 3314 DB7
15 CS1 Chọn Chip CS1 = 1, Chip Chọn tín hiệu cho IC1
16 CS2 Chọn Chip CS2 = 1, Chip Chọn tín hiệu cho IC2
17 RST Đặt lại Đặt lại GLCD
18 VEE Điện áp âm cho điều khiển LCD
19 A Đèn LED trở lại 5 volt
20 K Đèn LED trở lại Đất
Hi n th m t hình nh trên màn hình LCD đ h a s d ng ể ị ộ ả ồ ọ ử ụ 8.051:
Đ hi n th hình nh trên màn hình LCD đ h a, đ u tiên chúng ta c n ph i chuy nể ể ị ả ồ ọ ầ ầ ả ể
đ i hình nh đó thành Mã h i, đ Vi đi u khi n 8051 có th hi u và đ c nó.ổ ả ộ ể ề ể ể ể ọ Vì v y,ậchúng ta c n làm theo cácầ bướ c dưới đây đ chuy n hình nh thành mã HEX:ể ể ả
B ướ c 1: Đ u tiên chúng ta c n ph i t i xu ng m t ng d ng chuy n đ i hình nhầ ầ ả ả ố ộ ứ ụ ể ổ ả(đ nh d ng BMP) thành Mã h i.ị ạ ộ Vì v y, t i vậ ả ề BMP2ASM Image Conversion
Application từ liên k t nàyế , ch c n Nh p chu t ph i vào liên k t và sau đó nh p vàoỉ ầ ấ ộ ả ế ấ
L u liên k t dư ế ướ ại d ng
B ướ c 2: Sau đó, ch n hình nh b n mu n hi n th trênọ ả ạ ố ể ị màn hình LCD đồ
hoạ và chuy n nó sang BMP ể , (n u nó ch a có đ nh d ng BMP) b ng b t k ngế ư ị ạ ằ ấ ỳ ứ
d ng nào nh MS Paint, Photoshop Ho c b n có th tìm th y nhi u trang web tr cụ ư ặ ạ ể ấ ề ựtuy n Đ chuy n đ i đ nh d ng hình nh.ế ể ể ổ ị ạ ả Chúng tôi có hình nh BMP dả ưới đây, v iớkích thước 128x64:
B ướ c 3: Bây gi gi i nén t p BMP2ASM.zip, chúng tôi đã t i v trong Bờ ả ệ ả ề ước 1 và mởBmp2asm.exe bên trong nó và ch n hình nh BMPọ ả
Trang 34
B ướ c 4: Bây gi nh n "Convert" trong c a s ng d ng BMP2ASM.ờ ấ ử ổ ứ ụ
Trang 36Gi i thích vi m ch: ả ạ
Trang 37Trang 39
K t n i m ch, choế ố ạ Interfacing đ h a LCD đ 8051 Microcontrollerồ ọ ể , r t d dàng vàấ ễ
g n gi ng nh k tầ ố ư ế n i LCD 16x2 đ n 8051ố ế . Nh ng màn hình LCD 16x2 có 16 chânư
và GLCD có 20 chân
M t n i 10K độ ồ ược s d ng đ thi t l p đ tử ụ ể ế ậ ộ ương ph n cho GLCD.ả Các khe đi u khi nề ể
c a GLCD RS, R / W và E đủ ược k t n i tr c ti p t iế ố ự ế ớ s chânố 89C52 P1.0, P1.1 vàP1.2. Chip ch n pins CS1 và CS2 c a LCD đọ ủ ược k t n i v i pin P1.3 và P1.4 tế ố ớ ươngng
ứ Chân d li u DB0DB7 đữ ệ ược k t n i tr c ti p t i PORT P2.ế ố ự ế ạ A 7805 Đi u ch nhề ỉ
đi n áp đệ ược s d ng đ cung c p 5 volt thử ụ ể ấ ường xuyên. Trong Video trình di n, tôi đãễ
s d ng ngu n cung c p Arduino.ử ụ ồ ấ
Sau đó, chúng ta đã t o ra m t ch c năng tr ạ ộ ứ ễ
Void delay (int itime)
Ch c năngứ void lcd_disp_on () được s d ng đ B t B t màn hình.ử ụ ể ậ ậ
Ch c năngứ void setCursorY (int y) được t o ra đ thi t l p c t trong GLCD vàạ ể ế ậ ộ t oạ
ra void setCursorX (int x) đ thi t l p trang trên GLCD.ể ế ậ T p mã hoàn ch nh đệ ỉ ược đ aư
ra trong Ph n mã dầ ưới đây
Trang 40
Sau khi đ t C t và Trang, chúng ta đã vi t m t ch c năng đ g i l nh và d li u đ nặ ộ ế ộ ứ ể ử ệ ữ ệ ếGLCD.
Void lcdprint (char dat, kích thước int)
Trong void main () , chúng ta đã xóa GLCD r i đ t Column và Page.ồ ặ Sau đó, g i dử ữ
li u t i LCD b ng cách s d ng ch c năngệ ớ ằ ử ụ ứ void lcdprint (char dat, int size) .