Bài 04. Giao tiếp với OLED 0.96 inch SSD1306.

Bài 04. Giao tiếp với OLED 0.96 inch SSD1306.

  1. LÝ THUYẾT.
  2. Xin chào các bạn,

    Hôm nay mình xin chia sẻ một số thông tin và hướng dẫn sử dụng OLed 0.96 inch SSD1306. Hiện tại trên thị trường có rất nhiều loại oled 0.96 inch với các thông số như chip điều khiển(SSD1306, SSD1325, SSD1331, SSH1106..) và chuẩn khác nhau(I2C, SPI..). Ở đây mình xin chia sẻ thông tin về oled 0.96 inch sử dụng chip điều khiển là SSD1306 và sử dụng chuẩn giao tiếp I2C.

    Mục đích chính của oled là để hiển thị thông tin với màn hình nhỏ và thông tin tương đối rõ ràng, chúng ta có thể sử dụng chúng với một số ứng dụng như: hiển thị thời gian, hiển thị thông số nhiệt độ, độ ẩm để theo dõi, hiển thị thông tin cho robot, các thiết bị cầm tay nhỏ gọn… Một vài thông số cơ bản :

    • Sử dụng chip điều khiển SSD1306.
    • Sử dụng chuẩn giao tiếp thông dụng I2C nên tương thích với hầu hết các loại MCU có trên thị trường.
    • Kích thước màn hình 0.96inch(128x64 điểm).
    • Công suất tiêu thụ 0.08W.
    • Điện áp cung cấp 3 - 5VDC.
    • Góc hiển thị > 160 độ.
    • Màu hiển thị trắng/xanh dương.
  3. Code với MX cube.
  4. Sơ đồ kết nối:

    Một số lưu ý khi sử dụng module:

    • Loại ARM sử dụng là STM32F103C8T6, 48 pin out, clock là 72Mhz, Flash memory 64 Kbytes.
    • OlED 0.96 inch , giao tiếp I2C.
    • Địa chỉ của OLED này khi giao tiếp I2C là 0x78.
    • Giao tiếp I2C với mode Standard speed (100 Khz).
    • Trình biên dịch là Kiel C V5, thư viện sử dụng là thư viện HAL( HAL libraries).
    • Hàm ssd1306_refresh_gram(); được sử dụng để làm mới màn hình, hiển thị những thông tin mới ghi vào bộ nhớ.
    • Sử dụng hàm ssd1306_draw_bitmap() để vẽ các kí tự, ssd1306_draw_3216char() hoặc ssd1306_draw_1616char() để ghi các kí tự với font khác nhau, ssd1306_display_string() để hiển thị chuỗi kí tự với các thông số input tương ứng.
    • Bộ thư viện mình tìm được trên mạng và đã chỉnh sửa lại. Để xem thêm các function liên quan về OLED thì các bạn có thể vào tab Function như hình ở dưới.
    1. Cấu hình dung Mx Cube:
      • Cấu hình xung clock:
      • Cấu hình chân debug.
      • Cấu hình I2C ở chế độ standard mode, tốc độ là 100khz, port I2C2.
      • Cấu hình xung clock hệ thống Max là 72Mhz, giúp tốc độ xử lý lệnh là nhanh nhất.
      • Cấu hình trình Ide và code generate -> click button generate code.
    2. Modify code generate:
      • Copy thư viện từ project download sang project của bạn trong thư mục src and inc. Thư mục src : file Fonts.c, SSD1306.c. Thư mục inc: MacroAndConst.h, Fonts.c, SSD1306.c.
      • Add các file .c vào project của bạn.
      • Include các thư viện vào file main.c, lưu ý add vào giữa các dòng command code BEGIN và END để tránh mất code khi generate code lại tự Mxcube.
      • Modify code để ghi một số ký tự mẫu lên oled.
      • Cấu hình reset and run để code được thực thi khi flashing code mà không cần nhấn nút reset.

      Note: Đây chỉ là ví dụ cơ bản để hiện thị một số ký tự lên oled, các bạn có thể tự tìm hiểu và modify code để có những ứng dụng riêng của mình. Mọi thắc mắc các bạn có thể comment hoặc inbox mình, mình sẽ trả lời nhanh nhất trong thời gian có thể.

  5. Một số link tham khảo.
    1. Một số link mua hàng các bạn có thể tham khảo.
    2. Link 1 Link 2 Link 3
    3. Link download tài liệu.
    4. Download datasheet của chip điều khiển SSD1306 : Download các file thư viện :