- Vật liệu được sử dụng
- Mô-đun GPS NEO6M
- Màn hình OLED 1,3 inch I2C
- Sơ đồ mạch
- Lập trình Arduino cho Arduino OLED Speedometer
Đồng hồ tốc độ dùng để đo tốc độ di chuyển của xe. Trước đây, chúng tôi đã sử dụng cảm biến IR và cảm biến Hall để xây dựng đồng hồ tốc độ Analog và đồng hồ tốc độ kỹ thuật số tương ứng. Hôm nay chúng ta sẽ sử dụng GPS để đo tốc độ của một chiếc xe đang di chuyển. Máy đo tốc độ GPS chính xác hơn máy đo tốc độ tiêu chuẩn vì nó có thể liên tục xác định vị trí xe và có thể tính toán tốc độ. Công nghệ GPS được sử dụng rộng rãi trong điện thoại thông minh và các phương tiện để điều hướng và cảnh báo giao thông.
Trong dự án này, chúng tôi sẽ xây dựng một máy đo tốc độ GPS Arduino sử dụng mô-đun GPS NEO6M với màn hình OLED.
Vật liệu được sử dụng
- Arduino Nano
- Mô-đun GPS NEO6M
- Màn hình OLED 1,3 inch I2C
- Breadboard
- Kết nối Jumper
Mô-đun GPS NEO6M
Ở đây chúng tôi đang sử dụng mô-đun GPS NEO6M. Mô-đun GPS NEO-6M là thiết bị thu GPS phổ biến với ăng-ten gốm tích hợp, cung cấp khả năng tìm kiếm vệ tinh mạnh mẽ. Máy thu này có khả năng cảm nhận vị trí và theo dõi tới 22 vệ tinh và xác định vị trí ở mọi nơi trên thế giới. Với chỉ báo tín hiệu trên bo mạch, chúng tôi có thể theo dõi trạng thái mạng của mô-đun. Nó có pin dự phòng dữ liệu để mô-đun có thể lưu dữ liệu khi nguồn điện chính vô tình bị ngắt.
Trái tim cốt lõi bên trong mô-đun thu GPS là chip GPS NEO-6M của u-blox. Nó có thể theo dõi tới 22 vệ tinh trên 50 kênh và có mức độ nhạy rất ấn tượng là -161 dBm. Công cụ định vị u-blox 6 50 kênh này tự hào có Thời gian sửa lần đầu (TTFF) dưới 1 giây. Mô-đun này hỗ trợ tốc độ truyền từ 4800-230400 bps và có tốc độ truyền mặc định là 9600.
Đặc trưng:
- Điện áp hoạt động: (2.7-3.6) V DC
- Hoạt động hiện tại: 67 mA
- Tốc độ truyền: 4800-230400 bps (9600 Mặc định)
- Giao thức truyền thông: NEMA
- Giao diện: UART
- Ăng-ten bên ngoài và EEPROM tích hợp.
Sơ đồ mô-đun GPS:
- VCC: Chân điện áp đầu vào của Mô-đun
- GND: Chân nối đất
- RX, TX: Chân giao tiếp UART với Vi điều khiển
Trước đây, chúng tôi đã giao tiếp GPS với Arduino và xây dựng nhiều dự án sử dụng mô-đun GPS bao gồm cả theo dõi xe.
Màn hình OLED 1,3 inch I2C
Thuật ngữ OLED là viết tắt của “ Diode phát sáng hữu cơ”, nó sử dụng cùng một công nghệ được sử dụng trong hầu hết các TV của chúng ta nhưng có ít điểm ảnh hơn so với chúng. Thật là vui khi có các mô-đun hiển thị trông bắt mắt này được giao tiếp với Arduino vì nó sẽ làm cho các dự án của chúng tôi trông thật bắt mắt. Chúng tôi đã đề cập đến một Bài báo đầy đủ về màn hình OLED và các loại của nó ở đây. Ở đây, chúng tôi đang sử dụng màn hình OLED 1,28 inch đơn sắc SH1106 4-pin. Màn hình này chỉ có thể hoạt động với chế độ I2C.
Thông số kỹ thuật:
- IC điều khiển: SH1106
- Điện áp đầu vào: 3.3V-5V DC
- Độ phân giải: 128x64
- Giao diện: I2C
- Tiêu thụ hiện tại: 8 mA
- Màu pixel: Xanh lam
- Góc nhìn:> 160 độ
Mô tả Pin:
VCC: Nguồn điện đầu vào 3.3-5V DC
GND: Chân tham chiếu nối đất
SCL: Chân đồng hồ của giao diện I2C
SDA: Chân dữ liệu nối tiếp của giao diện I2C
Cộng đồng Arduino đã cung cấp cho chúng tôi rất nhiều Thư viện có thể được sử dụng trực tiếp để làm cho việc này trở nên đơn giản hơn rất nhiều. Tôi đã thử một vài thư viện và thấy rằng Thư viện Adafruit_SH1106.h rất dễ sử dụng và có một số tùy chọn đồ họa, do đó chúng tôi sẽ sử dụng như vậy trong hướng dẫn này.
OLED trông rất tuyệt và có thể dễ dàng giao tiếp với các bộ vi điều khiển khác để xây dựng một số dự án thú vị:
- Giao diện màn hình OLED SSD 1306 với Raspberry Pi
- Giao diện màn hình OLED SSD1306 với Arduino
- Đồng hồ Internet sử dụng ESP32 và Màn hình OLED
- Bộ điều khiển nhiệt độ AC tự động sử dụng Arduino, DHT11 và IR Blaster
Sơ đồ mạch
Sơ đồ mạch cho máy đo tốc độ GPS Arduino sử dụng OLED này được đưa ra bên dưới.
Thiết lập hoàn chỉnh sẽ giống như bên dưới:
Lập trình Arduino cho Arduino OLED Speedometer
Mã hoàn chỉnh của dự án được đưa ra ở cuối hướng dẫn. Ở đây chúng tôi đang giải thích từng dòng mã hoàn chỉnh.
Trước hết, hãy bao gồm tất cả các thư viện. Ở đây, thư viện TinyGPS ++. H được sử dụng để lấy tọa độ GPS bằng mô-đun bộ thu GPS và Adafruit_SH1106.h được sử dụng cho OLED.
#include
Sau đó, địa chỉ OLED I2C được xác định, có thể là OX3C hoặc OX3D, ở đây là OX3C trong trường hợp của tôi. Ngoài ra, chân Reset của màn hình phải được xác định. Trong trường hợp của tôi, nó được định nghĩa là -1, vì màn hình đang chia sẻ chân Reset của Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Màn hình Adafruit_SH1106 (OLED_RESET);
Tiếp theo, các đối tượng cho lớp TinyGPSPlus và Softwareserial được định nghĩa như hình dưới đây. Lớp nối tiếp phần mềm cần số pin Arduino. cho giao tiếp nối tiếp, được định nghĩa là 2 và 3 ở đây.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Inside setup () , quá trình khởi tạo được thực hiện cho giao tiếp Serial và OLED. Tốc độ truyền mặc định cho giao tiếp nối tiếp Phần mềm được định nghĩa là 9600. Ở đây SH1106_SWITCHCAPVCC được sử dụng để tạo điện áp hiển thị từ 3.3V bên trong và chức năng display.begin được sử dụng để khởi tạo màn hình.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Bên trong khi vòng lặp đúng, dữ liệu nối tiếp nhận được xác nhận, nếu tín hiệu GPS hợp lệ nhận được, sau đó displayspeed () được gọi để hiển thị các giá trị tốc độ trên màn hình OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Bên displayspeed () chức năng, dữ liệu tốc độ từ module GPS được kiểm tra sử dụng chức năng gps.speed.isValid () và nếu nó trả về một giá trị đích thực, thì giá trị tốc độ được hiển thị trên màn hình OLED. Ở đây, kích thước văn bản trên OLED được xác định bằng hàm display.setTextSize và vị trí con trỏ được xác định bằng hàm display.setCursor . Dữ liệu tốc độ từ mô-đun GPS được giải mã bằng hàm gps.speed.kmph () và cuối cùng nó được hiển thị bằng cách sử dụng display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Cuối cùng, tải lên mã trong Arduino Uno và đưa hệ thống vào phương tiện di chuyển và bạn có thể thấy tốc độ trên màn hình OLED như trong hình dưới đây.
Mã hoàn chỉnh với một video demo được đưa ra bên dưới.