Mục lục:
- Bước 1: Làm thế nào để bắt đầu với I2C - Thế giới tuyệt vời của giao tiếp liên vi mạch
- Bước 2: Tổng quan về I2C
- Bước 3: Cách định cấu hình cảm biến I²C
- Bước 4: Bắt đầu với chuyển động - Gia tốc kế
- Bước 5: Giao diện với bộ điều khiển
- Bước 6: Kết nối
- Bước 7: Mã
- Bước 8: Làm cho thiết bị I2C của bạn hoạt động.
Video: Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng ESP32s: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Trong hướng dẫn này, bạn sẽ tìm hiểu tất cả về Cách khởi động, kết nối và thiết bị I2C (Gia tốc kế) hoạt động với bộ điều khiển (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Bước 1: Làm thế nào để bắt đầu với I2C - Thế giới tuyệt vời của giao tiếp liên vi mạch
Arduino, ESP Series, PIC, Rasberry PI, v.v. đều rất đáng kinh ngạc. Nhưng bạn sẽ làm gì với nó một khi bạn có?
Điều tốt nhất là thêm các cảm biến và những thứ đó. Ngày nay, rất nhiều công nghệ mới đang sử dụng giao thức I2C để cho phép máy tính, điện thoại, máy tính bảng hoặc vi điều khiển giao tiếp với các cảm biến. Điện thoại thông minh sẽ kém thông minh hơn nếu chúng không thể nói chuyện với cảm biến gia tốc kế đó để biết điện thoại của bạn đang quay về hướng nào.
Bước 2: Tổng quan về I2C
I2C là một giao thức truyền thông bán song công, đồng bộ, nối tiếp, cho phép cùng tồn tại nhiều chủ và nô lệ trên cùng một bus. Bus I2C bao gồm hai đường: đường dữ liệu nối tiếp (SDA) và đồng hồ nối tiếp (SCL). Cả hai dòng đều yêu cầu điện trở kéo lên.
SDA (Dữ liệu nối tiếp) - Đường truyền cho chủ và tớ để gửi và nhận dữ liệu. SCL (Serial Clock) - Dòng mang tín hiệu xung nhịp. Với những ưu điểm như đơn giản và chi phí sản xuất thấp, I2C chủ yếu được sử dụng để liên lạc với các thiết bị ngoại vi tốc độ thấp trong khoảng cách ngắn (trong vòng một foot).
Muốn tìm hiểu thêm về I2C? ……
Bước 3: Cách định cấu hình cảm biến I²C
Trước khi đi vào dự án, bạn cần hiểu một vài điều cơ bản về Cảm biến của mình. Vì vậy, hãy rót cho mình một tách cà phê trước khi lặn vào:)? …
Điểm mạnh của I2C là bạn có thể đặt rất nhiều cảm biến trên cùng một bốn dây. Nhưng đối với các thiết bị có một số mô-đun được tạo sẵn được kết nối, bạn có thể phải tháo một vài điện trở smd khỏi các điểm ngắt, nếu không việc kéo lên trên xe buýt có thể trở nên quá mạnh.
Chúng tôi muốn thông tin gì từ Datasheet ??
- Chức năng cảm biến
- Sơ đồ chân và chức năng ghim
- Mô tả giao diện (Đừng bỏ lỡ xem "Bảng lựa chọn địa chỉ I2c")
- Đăng ký !!
Mọi thứ đều tốt, bạn sẽ tìm thấy nó một cách dễ dàng nhưng Đăng ký ?? ĐĂNG KÝ chỉ đơn giản là vị trí bộ nhớ bên trong thiết bị I²C. Bản tóm tắt về số lượng thanh ghi có trong một cảm biến nhất định và những gì chúng kiểm soát hoặc chứa được gọi là bản đồ thanh ghi. Hầu hết thông tin trên biểu dữ liệu của cảm biến là về việc giải thích cách hoạt động của từng thanh ghi và chúng có thể là một câu khẩu hiệu để đọc qua vì thông tin hiếm khi được trình bày trực tiếp.
Để bạn hiểu ý tôi là: Có rất nhiều loại thanh ghi nhưng trong phần giới thiệu này, tôi sẽ nhóm chúng thành hai loại chung: Thanh ghi điều khiển và Thanh ghi dữ liệu.
1) Đăng ký kiểm soát
Hầu hết các cảm biến thay đổi cách chúng hoạt động dựa trên các giá trị được lưu trữ trong các thanh ghi điều khiển. Hãy coi các thanh ghi điều khiển như một dãy công tắc Bật / Tắt mà bạn bật bằng cách đặt một bit thành 1 và tắt bằng cách đặt bit đó thành 0. Cảm biến dựa trên chip I²C thường có hàng tá cài đặt hoạt động trở lên cho những thứ như bit- Chế độ, ngắt, điều khiển đọc-ghi, độ sâu, tốc độ lấy mẫu, giảm nhiễu, v.v., vì vậy bạn thường cần đặt các bit trong một số thanh ghi điều khiển khác nhau trước khi thực sự có thể đọc.
2) Thanh ghi dữ liệu Không giống như một thanh ghi điều khiển chuyển mạch ngân hàng, tôi nghĩ về các thanh ghi đầu ra dữ liệu như các vùng chứa chứa các số chỉ tình cờ được lưu trữ ở dạng nhị phân. Vì vậy, bạn muốn biết Dữ liệu, hãy luôn đọc các thanh ghi dữ liệu như tôi là ai để đăng ký nhận dạng thiết bị, Thanh ghi trạng thái, v.v.
Vì vậy, khởi tạo cảm biến I²C là một quá trình gồm nhiều bước và thứ tự hoạt động chính xác thường được giải thích bằng văn bản theo hướng ngược lại, thay vì đơn giản trong Datasheet. danh sách không bao giờ nói “Để đọc từ cảm biến này, hãy thực hiện (1), (2), (3), (4), v.v.”, nhưng bạn tìm thấy mô tả của các bit thanh ghi điều khiển cho biết “trước khi bạn đặt bit x trong này thanh ghi bạn phải đặt bit y trong thanh ghi điều khiển khác này”.
Tuy nhiên, tôi luôn thấy một bảng dữ liệu có tính tương tác hơn hầu hết các văn bản. nếu Bạn sẽ tham khảo nó cho một phần hoặc các phần thông tin cụ thể và nó cung cấp cho bạn tất cả các chi tiết, kết nối và tài liệu tham khảo. Chỉ cần ngồi xuống và đọc để lấy ra tất cả các tài liệu tham khảo của bạn.:)
Bước 4: Bắt đầu với chuyển động - Gia tốc kế
Gia tốc kế hiện đại là các thiết bị Hệ thống cơ điện tử siêu nhỏ (MEMS), có nghĩa là chúng có thể nằm gọn trên một con chip nhỏ bên trong các thiết bị nhỏ nhất. Một phương pháp để đo gia tốc được sử dụng bởi các gia tốc kế MEMS là sử dụng một khối lượng dẫn điện cực nhỏ treo trên các lò xo. Gia tốc của thiết bị làm cho lò xo dãn ra hoặc co lại, và độ lệch của khối dẫn điện có thể được đo thông qua sự thay đổi điện dung đối với các tấm cố định gần đó.
Gia tốc kế được chỉ định bởi các tính năng sau:
- Số lượng trục, từ một đến ba trục, được gắn nhãn X, Y và Z trong sơ đồ thông số kỹ thuật. Lưu ý rằng một số gia tốc kế được gọi là 6 trục hoặc 9 trục, nhưng điều đó chỉ có nghĩa là chúng được đi kèm với các thiết bị MEMS khác như con quay hồi chuyển và / hoặc từ kế. Mỗi thiết bị đó cũng có ba trục, đó là lý do tại sao có 3, 6 hoặc 9 trục Đơn vị đo lường quán tính (IMU).
- Loại đầu ra, tương tự hoặc kỹ thuật số. Gia tốc kế kỹ thuật số đảm nhận việc định dạng dữ liệu gia tốc thành một biểu diễn kỹ thuật số có thể được đọc ra qua I2C hoặc SPI.
- Phạm vi gia tốc được đo bằng g, trong đó 1g là gia tốc do trọng lực của Trái đất.
- Bộ đồng xử lý có thể giảm tải một số tính toán cần thiết để phân tích dữ liệu thô từ MCU. Hầu hết các máy đo gia tốc đều có một số khả năng ngắt đơn giản để phát hiện ngưỡng gia tốc (sốc) và điều kiện 0 g (rơi tự do). Những người khác có thể thực hiện xử lý nâng cao trên dữ liệu thô để cung cấp dữ liệu có ý nghĩa hơn cho MCU.
Bước 5: Giao diện với bộ điều khiển
Vì chúng tôi biết Bộ vi điều khiển ESP đang có xu hướng, chúng tôi sẽ sử dụng ESP32 cho ví dụ của chúng tôi. Vì vậy, trước tiên bạn cần một Nodemcu-32s.
Đừng lo lắng nếu bạn có bất kỳ bảng ESP nào khác hoặc thậm chí là Arduino !!! Bạn chỉ cần thiết lập Arduino IDE và cấu hình theo bảng Phát triển của bạn, cho Arduino, ESP NodeMCU, ESP32s, v.v. Bạn cũng sẽ cần một số loại bộ phận I2C, thường là trên bảng đột phá. Trong hướng dẫn này, tôi sẽ sử dụng MMA8451 bảng đột phá gia tốc kế kỹ thuật số.
Và vài dây nhảy….
Bước 6: Kết nối
Và đây là một bố cục.
Tôi đã sử dụng kết nối sau từ mô-đun ở trên với mô-đun Nodemcu-32s của mình.
ESP32s - Mô-đun
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
"Hãy nhớ rằng hầu hết thời gian không phải tất cả các bảng phát triển (chủ yếu là trong ESP) đều có sơ đồ chân rõ ràng để giúp xác định chân nào được sử dụng !! Vì vậy, trước khi kết nối, hãy xác định chân chính xác của bảng để sử dụng chân nào cho SDA và SCL."
Bước 7: Mã
Điều này yêu cầu thư viện Adafruit
từ
Tải xuống, giải nén và bạn sẽ tìm thấy thư mục ví dụ, trong thư mục chỉ cần mở MMA8451demo trong IDE Arduino của bạn và ở đây bạn bắt đầu….
bạn sẽ thấy mã sau cho giao diện cảm biến MMA8451 với bộ điều khiển của bạn
#bao gồm
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * tham gia bus i2c với SDA = D1 và SCL = D2 của NodeMCU * / Serial.println ("Adafruit MMA8451 test!"); if (! mma.begin ()) {Serial.println ("Không thể bắt đầu"); trong khi (1); } Serial.println ("Đã tìm thấy MMA8451!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Phạm vi ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Đọc dữ liệu 'thô' với số lượng 14 bit mma.read (); Serial.print ("X: / t"); Serial.print (mma.x); Serial.print ("\ tY: / t"); Serial.print (mma.y); Serial.print ("\ tZ: / t"); Serial.print (mma.z); Serial.println (); / * Nhận sự kiện cảm biến mới * / sự kiện sensor_event_t; mma.getEvent (& sự kiện); / * Hiển thị kết quả (gia tốc được đo bằng m / s ^ 2) * / Serial.print ("X: / t"); Serial.print (event.acceleration.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Serial.print (event.acceleration.y); Serial.print ("\ t"); Serial.print ("Z: / t"); Serial.print (event.acceleration.z); Serial.print ("\ t"); Serial.println ("m / s ^ 2"); / * Lấy hướng của cảm biến * / uint8_t o = mma.getOrientation (); switch (o) {case MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); nghỉ; case MMA8451_PL_PUB: Serial.println ("Chân dung Up Back"); nghỉ; case MMA8451_PL_PDF: Serial.println ("Portrait Down Front"); nghỉ; case MMA8451_PL_PDB: Serial.println ("Portrait Down Back"); nghỉ; case MMA8451_PL_LRF: Serial.println ("Mặt trước bên phải ngang"); nghỉ; case MMA8451_PL_LRB: Serial.println ("Ngang Phải Quay lại"); nghỉ; case MMA8451_PL_LLF: Serial.println ("Ngang Trái Phía trước"); nghỉ; case MMA8451_PL_LLB: Serial.println ("Ngang Trái Quay lại"); nghỉ; } Serial.println (); chậm trễ (1000); }
Lưu, Xác minh và Tải lên ……
Mở màn hình nối tiếp và bạn sẽ thấy một cái gì đó như thế này, tôi đã di chuyển cảm biến về do đó có các kết quả khác nhau
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m / s ^ 2
Mặt trước bên trái ngang
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m / s ^ 2
Chân dung lên phía trước
Nếu mọi thứ diễn ra như bình thường, thì bây giờ bạn đã có những kiến thức cơ bản về I2C và Cách kết nối thiết bị của bạn..
Nhưng thiết bị không hoạt động ?? !
Chỉ cần thực hiện bước tiếp theo ……
Bước 8: Làm cho thiết bị I2C của bạn hoạt động.
Các bước cơ bản để thiết bị I2C hoạt động
Hãy điều tra….
- Đấu dây đúng.. (kiểm tra lại)
- Chương trình đúng.. (Có, đó là ví dụ thử nghiệm..)
Bắt đầu với các giai đoạn để giải quyết…..
Giai đoạn 1: Chạy chương trình quét thiết bị I2C để kiểm tra địa chỉ thiết bị và đầu tiên thiết bị I2C của bạn là okey
Bạn có thể Tải xuống bản phác thảo và kiểm tra đầu ra.
Kết quả - Thiết bị đang hoạt động và địa chỉ Cảm biến chính xác
Máy quét I2C. Đang quét…
Địa chỉ tìm thấy: 28 (0x1C) Xong. Đã tìm thấy 1 thiết bị.
Giai đoạn 2: Kiểm tra thư viện cảm biến
Mở tệp Adafruit_MMA8451.h và tìm địa chỉ thiết bị
Kết quả - Địa chỉ khác với thiết bị của tôi ??.
/ * ================================================ ========================= ĐỊA CHỈ I2C / BITS --------------------- -------------------------------------------------- * / #define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Địa chỉ I2C MMA8451 mặc định, nếu A là GND, 0x1C / * của nó ========================= ================================================== * /
Thực hiện - Chỉnh sửa tệp từ notepad (thay đổi địa chỉ) + Lưu + Khởi động lại IDE
Nó hoạt động. Bạn có thể nhận được các bài đọc của mình.
Không….. ???
Giai đoạn 3: Kiểm tra Wire.begin có bị ghi đè không?
Mở tệp Adafruit_MMA8451.c và tìm Wire.begin.
Kết quả - Câu lệnh này bị ghi đè.
/ ************************************************* ************************* // *! @brief Thiết lập HW (đọc giá trị hệ số, v.v.) * / / ********************************** **************************************** / bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Thực hiện - Chỉnh sửa tệp từ notepad (câu lệnh bình luận) + Lưu + Khởi động lại IDE
Và cuối cùng Thiết bị đang hoạt động☺…
Tôi gần như quá tải hướng dẫn này vì mục tiêu chính của nó là giải thích Cách bắt đầu, lấy dữ liệu từ biểu dữ liệu, kết nối và làm cho thiết bị I2C hoạt động với ví dụ rất cơ bản.
Đề xuất:
Bắt đầu với ESP32 CAM - Phát trực tuyến video bằng ESP CAM qua Wifi - Dự án camera an ninh ESP32: 8 bước
Bắt đầu với ESP32 CAM | Phát trực tuyến video bằng ESP CAM qua Wifi | Dự án camera an ninh ESP32: Hôm nay chúng ta sẽ tìm hiểu cách sử dụng bo mạch ESP32 CAM mới này và cách chúng ta có thể mã hóa nó và sử dụng nó như một camera an ninh và nhận video phát trực tuyến qua wifi
Bản trình diễn 4x4 của Bàn cờ điện tử / Với Arduino Mega + Đầu đọc RFID + Cảm biến hiệu ứng Hall: 7 bước
Bản trình diễn 4x4 Bàn cờ điện tử / Với Arduino Mega + Đầu đọc RFID + Cảm biến hiệu ứng Hall: Xin chào các nhà sản xuất, tôi là Tahir Miriyev, tốt nghiệp năm 2018 tại Đại học Kỹ thuật Trung Đông, Ankara / Thổ Nhĩ Kỳ. Tôi học chuyên ngành Toán ứng dụng, nhưng tôi luôn thích chế tạo đồ đạc, đặc biệt là khi nó liên quan đến một số công việc thủ công với điện tử, thiết kế và lập trình.
Bắt đầu buổi trình diễn ánh sáng Giáng sinh của bạn bằng một nút: 5 bước
Bắt đầu màn trình diễn ánh sáng Giáng sinh của bạn bằng một nút: Khi chạy một màn trình diễn ánh sáng Giáng sinh được đồng bộ hóa với âm nhạc, bạn có thể muốn bắt đầu chương trình bằng cách nhấn một nút. Hướng dẫn này chỉ áp dụng cho chương trình được điều khiển thông qua Falcon Pi Player (FPP) chạy trên Raspberry Pi. Nếu bạn đang chạy F
Bắt đầu với AWS IoT với cảm biến nhiệt độ không dây sử dụng MQTT: 8 bước
Bắt đầu với AWS IoT với cảm biến nhiệt độ không dây sử dụng MQTT: Trong Các tài liệu hướng dẫn trước, chúng tôi đã xem qua các nền tảng đám mây khác nhau như Azure, Ubidots, ThingSpeak, Losant, v.v. Chúng tôi đã sử dụng giao thức MQTT để gửi dữ liệu cảm biến lên đám mây trong hầu hết tất cả các nền tảng đám mây. Để biết thêm thông tin
Bắt đầu dự án đầu tiên của bạn với Raspberry: Đèn LED nhấp nháy: 4 bước
Bắt đầu dự án đầu tiên của bạn với Raspberry: Đèn LED nhấp nháy: Trong dự án này, tôi sẽ chỉ cho bạn cách lập trình Raspberry Pi để tạo đèn LED nhấp nháy, Nếu bạn đã gần mua một chiếc Raspberry pi và bạn không biết bắt đầu từ đâu, điều này hướng dẫn nó phù hợp. Ngoài Raspberry Pi của bạn chạy Raspbian, y