Su Dung GPS Module
Chào các bạn,
Mình vừa có dịp làm việc với GPS module, một chút kinh nghiệm mình xin chia sẽ đến diễn đàn của chúng ta. Mục đích: - Giới thiệu loại GPS module rẻ và có bán ở VN, phù hợp với các ứng dụng nhỏ độ chính xác vừa phải. - Cách kết nối phần cứng cho GPS module. - Cách tách chuỗi dữ liệu cần thiết từ chuỗi dữ liệu của GPS module. - Một số lưu ý khi vẽ mạch PCB |
1. Một số loại GPS module
2 Attachment(s)
GPS module có các hãng thông dụng sau:
- Holux - Globalsat - Royaltek - Skylap - FTech - Simcom - ... Tấc nhiên là tùy thuộc vào ứng dụng mà ta chọn loại GPS module phù hợp. Nếu các bạn cần tư vấn chọn lựa GPS phù hợp hãy liên lạc với anh Linh: http://vn-et.com Mình cũng đã từng nhờ anh Linh tư vấn chọn lựa loại GPS phù hợp, giá cả hợp lý. Nhân đây cũng xin cám ơn anh Linh, nhờ có anh mà mình đã làm xong sản phẩm của mình. Mình giới thiệu một số loại GPS module giá thành hạ: Khoảng 300k-400K - M89 - GR89 - UB93 Chú ý: Giá GPS module tăng dần theo thứ tự bên trên(chênh lệch nhau khoảng vài chụp ngàn). Phụ kiền cần thiết cho GPS module: - Ngoài GPS module, chúng ta cần phải có GPS anten. Có 2 loại External hay Internal anten 1. External anten: Nếu bạn chòn loại anten này phải cần mua thêm RC-C-SMA connector để có thể gắn trực tiếp trên mạch PCB. Xem hình External Anten. 2. Internal Anten: Xem hình ảnh Internal Anten. Với loại này, connector cho anten nay mình không tìm được, đành phải cắt bỏ connector này. Khi cắt bỏ đầu connector sẽ có: đây lõi(tín hiệu GPS-RF) + lưới bọc bên ngoài(nối mass). |
2. Cách kết nối phần cứng tối thiểu để GPS hoạt động.
1 Attachment(s)
Mình làm việc với UB93 GPS module, vì vậy mình trình bày kết nối phần cứng cho module này. Loại module khác cũng sẽ tương tự.
- Kết nối phần cứng: Xem hình ảnh đính kèm. Chú ý: + Tùy chọn sử dụng loại External hay Internal anten. Tuy nhiên, kinh nghiệm của mình thì Internal anten(nhỏ gọn, sắp xếp đặt được ngay trên mạch PCB được) hoạt động tốt không thua kém gì External(to, dây dài để có thể kéo ra bên ngoài). + Chân 1PPS: chân này được nối qua 1 Led. Ý nghỉa như su: * Led tắt: chưa thu được tín hiệu từ vệ tinh. * Led sáng: đang dò tìm tín hiệu từ vệ tinh * Led chớp tắt: Tín hiệu thu được từ vệ tinh là tốt. Khi kết nối GPS thành công, cứ khoảng 1s, GPS sẽ nhận được tín hiệu từ vệ tinh và khi đó ta chỉ cần quan sát Led này chớp tắt có nghỉa là việc thu tín hiệu đã tốt. + Chân TX0: Chân truyền dữ liệu từ GPS module. Để có thể xử lý data từ GPS module thông qua việc giao tiếp với Microcontroller, ta sẽ dụng chân này. Tuy nhiên, GPS module sử dụng 3.3V, microcontroller thông dụng lại là 5V. Vì vậy việc thêm 2 transistor(xem hình) là cần thiết. Ngõ ra TX_GPS sẽ đuợc nối vào chân RX của microcontroller. |
3. Cách tách data cần thiết từ chuỗi data nhận được từ Vệ tinh
Việc kết nối GPS module(chân TX0) với Microcontroller qua chân RX, ta sử dụng ngắt RDA để thực hiện việc lấy chuỗi data cũng như tách lấy dữ liệu cần lấy.
Ví dụ: Chuỗi data cần lấy: $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,1 30694,004.2,W*70 Ghi nhận: *Sau dấu "," thứ nhất: Thông tin thời gian *Sau dấu "," thứ 2: thông tin Latitude *Sau dấu "," thứ 4: thông tin Longitude * .... Code:
char GPSbuffer[70]; |
Tổng kết:
- Hy vọng qua các bài viết ở trên, các bạn có thể hiểu cách thức làm việc với GPS module. Từ đó tuỳ biến sử dụng cho sản phẩm của mình.
- Nếu có chổ nào chưa thật rõ ràng, các bạn cần thêm thông tin, hãy gửi email cho mình(xem chữ ký). |
4. Một số lưu ý khi vẽ PCB
3 Attachment(s)
Một số chú ý khi vẽ PCB cho đường RF và các đặt GPS module trên mạch PCB.
|
cũng rất cảm ơn bạn, nhưng mình đọc đi đọc lại bài viết của bạn máy lần..... nhưng minh chưa biết làm thế nào.... kết nói kiễu sao với PIC hay là loại VĐK nào...
vd: bạn có thể đưa lên 1 bài về những gì bạn đạt dc ở một modell cụ thể ra làm sao. và bạn đã dạt đến mức nào.. trong diễn đàn cũng có 1 bạn cũng muốn tiềm hiểu về GPS về hiễn thi tọa đô lên màn hình LCD. để đạt dc như thế mình làm sao bạn có thể giúp thêm ko. ví dụ modell GPS kết nói với VDK kiểu gì loại gì..... và giá trị của modell GPS đưa cho vi điều khiển dưới dạng nào... .. mong bạn giúp nhiều hơn. chân thành cảm on. |
Trả lời bạn Lâm Bảo Trung
Chào Trung, mình trả lời các câu hỏi của bạn ở dưới email của bạn:
[Lâm Bảo Trung]:cũng rất cảm ơn bạn, nhưng mình đọc đi đọc lại bài viết của bạn máy lần..... nhưng minh chưa biết làm thế nào.... kết nói kiễu sao với PIC hay là loại VĐK nào... [Tuân 2012.03.13]: Trung để ý, mình cũng đã gửi schematic cho việc kết nối giữa GPS module và Microcontroller PIC(Microcontroller khác cũng tương tự). Việc giao tiếp giữa GPS và Microcontroller chỉ đơn giãn qua chân TX. Chú ý mức điện áp chỉ 3.3V cho GPS và thường 5V cho Microcontroller(xem hình ảnh schematic đã gửi). [Lâm Bảo Trung]:vd: bạn có thể đưa lên 1 bài về những gì bạn đạt dc ở một modell cụ thể ra làm sao. và bạn đã dạt đến mức nào.. [Tuân 2012.03.13]: Bạn mong muốn gì ở GPS module, phải chăng là lấy và sử dụng được các thông tin nhận được từ vệ tinh thông qua GPS module này: thời gian, kinh đọ, vĩ độ... Bài viết của mình đã làm được điều này rồi mà. Bạn cần xem lại đoạn code mình đã gửi lên diễn dàn, đó là code tham khảo để lấy các thông tin từ vệ tinh. Còn mục đích sử dụng thì tùy vào ứng dụng, tùy vào mục đích của bạn. [Lâm Bảo Trung]:trong diễn đàn cũng có 1 bạn cũng muốn tiềm hiểu về GPS về hiễn thi tọa đô lên màn hình LCD. để đạt dc như thế mình làm sao bạn có thể giúp thêm ko. [Tuân 2012.03.13]: Việc hiển thị tọa độ lên LCD cũng đơn giản như bạn muốn hiển thị 1 data nào đó lên LCD mà thôi. Bạn đã làm được đến đâu(xem các câu hỏi bên dưới)?: - Microcontroller mà ban tìm hiểu là gì(PIC, AVR, AMR...)? - Bạn đã sử dụng được LCD với Microcontroller chưa? Tiếp theo bạn thay data ở trên bởi dữ liệu là tọa độ rồi cho LCD hiển thị thôi. [Lâm Bảo Trung]:ví dụ modell GPS kết nói với VDK kiểu gì loại gì..... [Tuân 2012.03.13]: Hình như bạn không đọc kỹ bài viết của mình, không xem các hình ảnh dính kèm về schematic... [Lâm Bảo Trung]:và giá trị của modell GPS đưa cho vi điều khiển dưới dạng nào... .. [Tuân 2012.03.13]: Hình như bạn không đọc kỹ bài viết của mình, không xem các hình ảnh dính kèm về schematic, đoạn code minh họa... mong bạn giúp nhiều hơn. chân thành cảm on. [Tuân 2012.03.13]: Không ai giúp bạn được nếu như bạn chưa thật sự cố gắng, chưa tìm hiểu kỹ. Tấc cả các câu hỏi trên của bạn mình cho rằng bài viết của mình đã trả lời được hết rồi, hãy đặt câu hỏi cho đúng vấn đề, tấc cả mọi người trên diễn dàn này đều sẵn sàng giúp đở. |
máy bác ơi cho em làm phiền.....
cái chuyện làm modull để từ từ rành rẻ về PIC thì hay làm. bày giờ em muốn làm 1 bài tập về truyền nhận dữ liệu từ PIC này sang PIC kia ( PIC1 đến PIC2) qua cổng RS232. em truyền 1 số "123 " , hay 1 chử cái " A " đi và dùng ngắt RDA thì mình làm tốt và hiện thị giá trị lên LCD tốt. nhưng khi em truyền 1 mãng char string[]=" PICVIETNAM "; dùng lệnh Printf(string); nói chung thì no truyền đi dc. nhưng ở phần PIC nhận thì em chỉ nhận dc có chứ "P" khi em dùng lệnh IN=getc(); thì chi hiện chử 'P' á. . // khai bao char IN[10]; khi dùng lệnh gets(IN); thì nó đơ luôn. ko hiện hồn chử gì lên LCD cả. các bác giúp em chổ này và bác Longtu ơi bác giúp noi rõ hơn về việc tìm dấu " , ". nhé anh. thật tình thi em chậm tiêu lam. đoạn code của bác em đọc tởi đọc lui 2 ngày mà chưa nghộ ra dc nhiều. em kết nói 8bit với LCD qua portD. |
Trích:
bây h bạn làm từ từ cho hắn khỏi đơ :D bạn muốn kiểm tra bên gởi đã gởi được hay chưa thì test qua Hyper Terminal đã nhé, nếu nhận OK hết rồi hãy kết nối với PIC để xử lý Bên Pic nhận thì làm ngược lại, lấy Hyper gởi xuống chuỗi gì đó rồi cho hiện lên LCD Xong 2 cái, bạn cắm lại vs nhau là OK thôi, Nhớ đấu chéo 2 dây TX và RX nhé p/s: bày vẻ bạn đủ thứ để cho có việc làm+ lần sau nên tạo chủ đề mới để hỏi nhé, làm loãng topic của a longtu :D Thân. |
cám ơn các anh.
hiện em đã làm tốt việc nhận và xử lý tách chuổi dữ liệu qua rs232 giữa 2 PIC. côi như phần cần cơ bản em đã làm xong. bày giờ quay lại đoạn chuỗi giữ liệu của bác Longtu. $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,1 30694,004.2,W*70 sau dấu ',' thứ 1: là thời gian ok em hiểu. sau dấu ',' thứ 2: là vĩ độ " latitude " A,5133.82 đoạn này em ko hiểu. sau dấu ',' thứ 4: là kinh độ " longitude" N,00042.24 đoạn này cũng ko hiểu. ở 2 đoạn kia là các con số phần tích thế nào anh longtu. nếu như ở miền nàm thi nằm trong khoảng - longitude: 105 độ, 55' 37.04" E. - latitude: 10 độ 08' 59.07" N. " là tọa độ của máy tính em cung cấp vì máy laptop có card wwan + GPS. như vậy em so sanh với đoạn code cua modull GPS đưa ra thì em ko hiểu luôn.. híc bác longtu giúp em. giải thích thêm nhe. cảm ơn bác longtu và các bác đã có những lời khuyên cho em và em đã thành công. hihi |
@ Trung : vì làm code minh họa ví dụ nên chắc a longtu ghi nhầm đó, bạn cộng thêm 1 để lấy các giá trị đó, tức vĩ độ sau dấu phẩy thứ 3, kinh độ sau dấu phẩy thứ 5,... còn chữ A sau chuỗi thời gian báo hiệu cho biết thời gian thu được có hợp lệ hay chưa (A: có,V:ko),còn các chữ cái N - Bắc; W - Tây; E - Đông; S - Nam để chỉ hướng.
Bạn coi thêm định dạng chuỗi GPRMC trong chuẩn NMEA quy định để biết thông tin của chuỗi. Còn về vấn đề tọa độ của Module gởi về , ở đây mih nói module sim 548C vì đang dùng, nếu dùng module khác, bạn coi datasheet module gởi về chuẩn gì, tra chuẩn, để biết thông tin của chuỗi. Ở đây mih lấy cái chuỗi ở trên làm lun, chuỗi GPRMC. $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,1 30694,004.2,W*70 Trong đó: + kinh độ(ddmm.mmmm) : 5133.82=51 độ+33.82 phút=51,5637độ +vĩ độ(dddmm.mmmm):00042.24=0 độ+ 42.24 phút=0,704độ Sau lên gg sợt cái là qua tới bên London lun, chắc nhà a longtu ở gần đó :D p/s:mọi người coi giúp e đổi đúng chưa mà sao đi xa quá :D |
chưa hiễu về công thức tính toán kinh độ ,vĩ độ cũa bác.
kinh độ: (ddmm.mmmm): " độ độ phút phút. phút phút phút phút ". cách quy đổi 5133.82= 51 độ+ 33.82 phút =51,5637 độ bác.... em chưa hiểu, bác nói rõ hơn về cách tính đi. bac nay len GG lam sao search ra vi tri cua minh test xem minh dung hay sai bac. em dung URL nay tim ma ko dc: http://www.google.com/maps?q=[1]+[2]&t=m&z=16 [1] kinh do= 5133.82 [2] vi do= 00042.24 e dua du lieu nhu tren vao doan URL kia ong GG bo tay. |
may bac oi trong protues cua minh co mo phong dc su giao tiep truyen thong RS232 giua Microcontroller va PC ko cac bac.. chi giup em nha hom bua em len youtube em xem 1 doan video anh kia lam dc chuyen do. ket hop voi mot phan mem viec bang Visua C# de goi 1 chuoi qua RS232 nhung chi la ao. thui.
|
Trích:
|
ah. sorry cac bac.
|
Trích:
bác ơi bác giải thích rõ hơn về tính toán tọa độ dc ko bác.. em ko hiểu máy về tọa độ đó |
1 Attachment(s)
Trích:
Ví dụ: $GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,1 30694,004.2,W*70 Trong đó: + Kinh độ(ddmm.mmmm) : 5133.82=51 độ+33.82 phút=(51 + 33.82/60) phut= 51.563666 + Vĩ độ(dddmm.mmmm):00042.24=0 độ+ 42.24 phút=(00 + 42.24/60) phút= 0.704 Chú ý: Dấu ngăn cách thập phân là dấu ".". Step 2: Vào: http://www.google.com/maps Step 3: Nhập Kinh độ và vĩ độ: (51.563666,0.704) |
em đang làm về module thu tín hiệu gps hiển thị trên lcd.
em sử dụng avr atmega16, lcd16*2, module thu holux m_9129. Anh longtu cho em hỏi: để hiển thị tín hiệu thu đc lên máy tính em có sử dụng thêm MAX232, em không biết cách kết nối giữa 4 linh kiện trên với nhau, em phải làm tn? a giúp e vs nhé! thank |
Trích:
- Microcontroller AVR + GSP module: Giao tiếp với nhau qua các chân TX và RX. Tuy nhiên, ban chỉ cần xử dụng chân GPS_TX + MCU_RX để nhận dữ liệu từ GSP module. (Chân GPS_RX: dành cho việc upload firmware, thông thường việc này dành cho nhà sãn xuất...). Chú ý: Microcontrller AVR có VCC là bao nhiêu Voltage? Và GPS_TX có mức điện áp ở mức 1 và o là bao nhiêu? Có đủ để MCU hiểu không? - Microcontroller + LCD: Bạn sử dụng Text LCD cho việc hiểu thị nội dung data GPS. Hãy tìm hiểu cách sử dụng Text LCD và các kết nối với MCU, firmware điều khiển... Bạn không cần sử dụng Max232 nếu như không cần giao tiếp giửa MCU và PC. Thân, |
cảm ơn a!
anh ơi! để kết nối với max232 với MCU, thì làm tn ạ? giúp em với! |
Trích:
PS: Bạn tham khảo ở đây: http://www.mikroe.com/eng/chapters/v...xamples/#c4v13 Thân, |
uki!
sorry nhé! thank |
anh longtu ơi! cho e hỏi là: em dung module holuxm_9129 thì có giống vz con Ub-93 ko ah?
do điện áp vào của MCU là 5v ko tương thích vs module GPS , em có phải mắc thêm tranzitor ko? |
Trích:
PS: Xem lai: #3: http://www.picvietnam.com/forum/show...73&postcount=3 #20: http://www.picvietnam.com/forum/show...9&postcount=20 |
bác longtu cho em hỏi cái này.
trong chuổi GPRMC của GPS gởi về. $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4 ,230394,003.1,W*6A vậy làm sao mình biết chuổi đó kết thúc. với lại trong hàm RDA có đoạn này em khổi hiểu if(check<7) { if((GPSbuffer[check-1]) != (GPRMC[check-1])) check= 0; } bác long tứ giải thích giúp em nhá. |
Trích:
Trích:
Bạn thấy đó, chỉ cần tập trung suy nghỉ là bạn có thể tự trả lời câu hỏi của bạn được rồi. Cố gắng suy nghĩ thêm nhé. Thân. |
Đã giải quyết dc vấn đề bất đầu 1 chuổi và biết khi nó kết thúc một chuỗi là mình tra xét " $ " nếu có dấu $ thì bất đầu ghi các giá trị đó vào 1 mãng thứ 2 và kết thúc ghi khi gấp dấu $ tiếp theo và các giử liệu đó sẽ nạp chòng và Mãng thứ 2 . em đả làm dc sao 1 buổi chiều mày mò viết cách tính... cảm ơn bác longtu nhiều.
dc cải tiếng lại từ code của bác longtu ở đây thì em tìm dấu ','. mình có thề tìm dấu gì tùy ý mình như: $ ,*,# ... VOID saudau_1() { CHAR I; char trunglap[7]; i=comma_position[0]; // int a; for (a=0;a<comma_position[0];a++) // nó sẽ tăng mãng trunglap[] lên đến khi gập // dấu ',' kế tiếp và gáng vào 1 mãng có tên //là mãng : và gang cac gia tri // trunglap[a]=mang[i++]; // nếu trong chuổi có 1 dấu ',' hay 1 "$" thì có //thể thay như thế này " tringlap[a]=mang[a]; // /// "mang[]" <=> GPSbuffer[] cua bác longtu vi em viết theo ý của em } lcd_putcmd(0x80); printf(lcd_putchar,trunglap); // xuat chuoi ra man hinh LCD. // chung ta ko the dung printf de ep keu mang ky tu vao lcd_putchar. } với cách này em đã tách 1 chuổi lớn thành nhiều chuổi nhỏ hơn. vị du: $abcd $cdft $1234 các bác xem có cách nào đơn giản hơn chi giúp em. |
sáng ra tìm lại lai thì thấy hàm này có vấn đề.
nếu 1 chuổi gởi đi chí có 1 ký tự mình muốn tìm như " $ " thi nó ko tìm dc chuổi đó. |
Xin chào cả nhà!Mình đang làm đề tài về điều chế FSK dùng vi điều khiển PIC,phát đi ở tần số 8MHZ.Bác nào có kinh nghiệm thì chia sẻ cho mình một chút.Cám ơn rất nhiều!
|
UB93 GPS module không chạy:
Có nhiều bạn email hỏi tôi như sau:
Trích:
Về module GPS UB93 rất dễ dàng sử dụng, chỉ cần thiết kế đúng: - Kết nối đúng các chân - Đặt biết là chú ý đường mạch in cho đường RF nối với anten(http://www.picvietnam.com/forum/show...82&postcount=6) - Lắp anten cho module - Thêm nữa đặt module ở ngoài trời(để đảm bảo module thu tín hiệu tốt nhất) Kết quả: Lập tức chân 1PPS tạ ra xung, ta nối chân này với Led sẽ thấy led này chớp tắt. Điều này cũng có nghĩa là UB93 đã lấy được thông tin từ vệ tinh mỗi 1 giây. Đây cũng chính là cách kiểm tra module UB93 có hoạt động tốt hay không. Về kinh nghiệm sử dụng: - Tôi tạo ra luồng này, với tấc cả những kinh nghiệm của tôi trong lúc sử dụng. Nếu bạn nào đọc kỹ, và đừng bỏ sót, các bạn sẽ thấy rằng các bố trí từ phần, từng mục của tôi đang trả lời các câu hỏi của 1 nguời mới bắt đầu tìm hiểu 1 sãn phẩm mới: Ví du: + Đầu tiên: giới thiệu + Cách kế nối phần cứng + Cách viết Firmware để tách chuỗi data + Lưu ý khi vẽ mạch in Các bạn cũng nên làm như thế mỗi lần chia sẽ. Tôi cũng mong rằng các bạn nào đã và đang làm ứng dụng này và cả các ứng dụng mới khác, hãy cùng chia sẽ kinh nghiệm, post bài để những nguời đi sau nhanh chóng nắm bắt. Quan điểm của tôi là "Cho đi để còn nhận về" vì thế không có gì là dấu điếm hay không chia sẽ đuợc cả. Thân, |
Trích:
|
Chào bạn Longtu! bạn đã làm về SIM908 rồi bạn có thể tư vấn cho mình tí kiến thức: SIM908 chạy được nhưng 1phut mới connect được với Vệ tinh, đem anten vào trong phòng cách vách tường 2 mét là tịt luôn, dùng S2 thì thì connect vèo vèo, không biết modun SIM908 thu yếu hay thế nào, đã thử với SIM908 thứ 2 vẫn bị, đã tìm mọi cách, ... hay mình phải chọn loại GPS nào thu tốt hơn?!
|
Bác Longtu cho em hỏi, giờ mình có dữ liệu từ vệ tinh rồi, giờ muốn hiển thi vị trí lên bản đồ thì mình làm sao, gôgle maps chẳn hạn. Xin cảm ơn.
|
Trích:
http://www.picvietnam.com/forum/show...3&postcount=18 Thân |
Ý em hỏi làm sao mà giống như điện thoai di động đó. Tức là mình không cần nhập tọa độ bằng tay nữa. Mình viết chương trình liên kết với gôgle máp, hiển thị liên tục luôn
|
#65: http://spkt.net/diendan/showthread.p...-GPS-GSM/page7
bạn tham khảo thêm ở page này nhé. Mình cũng đang tìm hiểu về phần GPS này. |
Trích:
|
cám ơn bạn @longtu vì những thông tin, mình xem qua trang bạn giới thiệu http://vnettech.com.vn và thấy giới thiệu nhiều hãng/loại module , ko biết ở Sài gòn có thể kiếm mua đc ko (đã xem qua website của tme và chipltr nhưng ko phong phú bằng )
- tiếc là mình chỉ mua 1-2 module và rất ngại việc chuyển phát từ HN vào |
Trích:
|
Múi giờ GMT. Hiện tại là 03:15 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam