Mục lục:

Định hướng bản đồ thông qua máy chủ web: 6 bước
Định hướng bản đồ thông qua máy chủ web: 6 bước

Video: Định hướng bản đồ thông qua máy chủ web: 6 bước

Video: Định hướng bản đồ thông qua máy chủ web: 6 bước
Video: Mô hình Client - Server | Mô hình toàn bộ các websites sử dụng? 2024, Tháng mười một
Anonim
Định hướng bản đồ thông qua máy chủ web
Định hướng bản đồ thông qua máy chủ web

Internet of Things, (IoT) là một trong những chủ đề phổ biến trên hành tinh hiện nay. Và, nó đang phát triển nhanh chóng từng ngày với Internet. Internet of Things đang thay đổi những ngôi nhà đơn giản thành những ngôi nhà thông minh, nơi mọi thứ từ đèn đến ổ khóa của bạn đều có thể được điều khiển từ điện thoại thông minh hoặc máy tính để bàn của bạn. Đây là điều xa xỉ mà ai cũng muốn sở hữu.

Chúng tôi luôn sử dụng những công cụ chúng tôi có và tiếp tục làm việc để đi đến bước tiếp theo trong giới hạn của chúng tôi. Chúng tôi cố gắng mang đến cho khách hàng tầm nhìn về các công nghệ và ý tưởng mới nhất. Vì vậy, bạn có thể biến ngôi nhà của mình thành những ngôi nhà thông minh và tận hưởng hương vị của sự sang trọng mà không cần nỗ lực nhiều.

Hôm nay, chúng tôi nghĩ về một trong những chủ đề quan trọng nhất trong IoT - Định hướng bản đồ kỹ thuật số.

Chúng tôi sẽ xây dựng một máy chủ web mà qua đó chúng tôi có thể theo dõi chuyển động của bất kỳ thiết bị hoặc vật nào (Tùy thuộc vào bạn, người mà bạn cho là do thám;)). Bạn luôn có thể nghĩ về việc nâng cấp dự án này lên cấp độ tiếp theo với một số sửa đổi và đừng quên cho chúng tôi biết trong phần bình luận bên dưới.

Hãy bắt đầu hơn.. !!

Bước 1: Thiết bị Chúng tôi Cần.. !

Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!
Thiết bị Chúng tôi Cần.. !!

1. Cảm biến LSM9DS0

Cảm biến 3 trong 1 do STMicroelectronics sản xuất, LSM9DS0 là một hệ thống trong gói bao gồm cảm biến gia tốc tuyến tính kỹ thuật số 3D, cảm biến tỷ lệ góc kỹ thuật số 3D và cảm biến từ trường kỹ thuật số 3D. LSM9DS0 có gia tốc tuyến tính toàn thang đo ± 2g / ± 4g / ± 6g / ± 8g / ± 16g, từ trường toàn thang đo ± 2 / ± 4 / ± 8 / ± 12 gauss và tốc độ góc ± 245 / ± 500 / ± 2000 dps.

2. Adafruit Huzzah ESP8266

Bộ xử lý ESP8266 của Espressif là bộ vi điều khiển 80 MHz với giao diện người dùng WiFi đầy đủ (cả máy khách và điểm truy cập) và ngăn xếp TCP / IP cũng có hỗ trợ DNS. ESP8266 là một nền tảng đáng kinh ngạc để phát triển ứng dụng IoT. ESP8266 cung cấp một nền tảng hoàn thiện để giám sát và điều khiển các ứng dụng sử dụng Ngôn ngữ dây Arduino và Arduino IDE.

3. Bộ lập trình USB ESP8266

bộ điều hợp máy chủ ESP8266 của anh ấy được Dcube Store thiết kế đặc biệt cho phiên bản Adafruit Huzzah của ESP8266, cho phép giao diện I²C.

4. Cáp kết nối I2C

5. Cáp USB mini

Cáp USB mini Bộ nguồn là lựa chọn lý tưởng để cấp nguồn cho Adafruit Huzzah ESP8266.

Bước 2: Kết nối phần cứng

Kết nối phần cứng
Kết nối phần cứng
Kết nối phần cứng
Kết nối phần cứng
Kết nối phần cứng
Kết nối phần cứng

Nói chung, tạo kết nối là phần dễ nhất trong dự án này. Làm theo hướng dẫn và hình ảnh, và bạn sẽ không gặp vấn đề gì.

Trước hết, hãy lấy Adafruit Huzzah ESP8266 và đặt Bộ lập trình USB (có Cổng I²C hướng vào trong) trên đó. Nhấn nhẹ Trình lập trình USB và chúng ta đã hoàn thành bước này dễ như ăn bánh (Xem hình trên).

Kết nối Cảm biến và Adafruit Huzzah ESP8266 Sử dụng cảm biến và Kết nối Cáp I²C với nó. Để cáp này hoạt động tốt, hãy nhớ Đầu ra I²C LUÔN LUÔN kết nối với Đầu vào I²C. Điều tương tự cũng phải được thực hiện đối với Adafruit Huzzah ESP8266 với Bộ lập trình USB được gắn trên nó (Xem hình trên).

Với sự trợ giúp của Bộ lập trình USB ESP8266, rất dễ dàng để lập trình ESP. Tất cả những gì bạn cần làm là cắm cảm biến vào Bộ lập trình USB và bạn đã sẵn sàng. Chúng tôi thích sử dụng bộ chuyển đổi này vì nó giúp kết nối phần cứng dễ dàng hơn rất nhiều. Không phải lo lắng về việc hàn các chân của ESP với cảm biến hoặc đọc sơ đồ chân và biểu dữ liệu. Chúng tôi có thể sử dụng và làm việc trên nhiều cảm biến đồng thời, bạn chỉ cần tạo một dây chuyền. Nếu không có bộ lập trình USB plug and play này sẽ có rất nhiều nguy cơ kết nối sai. Hệ thống dây điện không tốt có thể giết chết wifi cũng như cảm biến của bạn.

Lưu ý: Dây màu nâu phải luôn đi theo kết nối Nối đất (GND) giữa đầu ra của một thiết bị và đầu vào của thiết bị khác.

Cấp nguồn cho mạch

Cắm cáp Mini USB vào giắc cắm nguồn của Adafruit Huzzah ESP8266. Thắp sáng nó lên và thì đấy, chúng ta rất tốt để đi!

Bước 3: Mã

Mã số
Mã số

Mã ESP cho Cảm biến Adafruit Huzzah ESP8266 và LSM9DS0 có sẵn trên kho lưu trữ github của chúng tôi.

Trước khi tiếp tục mã, hãy đảm bảo rằng bạn đã đọc các hướng dẫn được cung cấp trong tệp Readme và thiết lập Adafruit Huzzah ESP8266 của bạn theo nó. Sẽ chỉ mất 5 phút để thiết lập ESP.

Đoạn mã dài dòng nhưng nó ở dạng đơn giản nhất mà bạn có thể hình dung ra và bạn sẽ không gặp khó khăn gì khi hiểu nó.

Để thuận tiện cho bạn, bạn cũng có thể sao chép mã ESP đang hoạt động cho cảm biến này từ đây:

// Được phân phối với giấy phép tự do.// Sử dụng nó theo bất kỳ cách nào bạn muốn, lợi nhuận hoặc miễn phí, miễn là nó phù hợp với giấy phép của các tác phẩm liên quan. // LSM9DSO // Mã này được thiết kế để hoạt động với Mô-đun Mini TCS3414_I2CS I2C có sẵn trên dcubestore.com.

#bao gồm

#bao gồm

#bao gồm

#bao gồm

// LSM9DSO Gyro I2C địa chỉ là 6A (106)

#define Addr_Gyro 0x6A // LSM9DSO Accl I2C address is 1E (30) #define Addr_Accl 0x1E

const char * ssid = "ssid của bạn";

const char * password = "mật khẩu của bạn"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

Máy chủ ESP8266WebServer (80);

void xử lý ()

{dữ liệu int unsigned [6];

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Gyro); // Chọn thanh ghi điều khiển 1 Wire.write (0x20); // Tốc độ dữ liệu = 95Hz, X, Y, Z-Axis được kích hoạt, bật nguồn Wire.write (0x0F); // Dừng I2C Transmission Wire.endTransmission ();

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Gyro); // Chọn thanh ghi điều khiển 4 Wire.write (0x23); // Full-scale 2000 dps, cập nhật liên tục Wire.write (0x30); // Dừng I2C Transmission Wire.endTransmission ();

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi điều khiển 1 Wire.write (0x20); // Tốc độ dữ liệu gia tốc = 100Hz, đã bật X, Y, Z-Axis, bật nguồn Wire.write (0x67); // Dừng truyền I2C trên thiết bị Wire.endTransmission ();

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi điều khiển 2 Wire.write (0x21); // Lựa chọn tỷ lệ đầy đủ +/- 16g Wire.write (0x20); // Dừng I2C Transmission Wire.endTransmission ();

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi điều khiển 5 Wire.write (0x24); // Độ phân giải cao từ tính, tốc độ dữ liệu đầu ra = 50Hz Wire.write (0x70); // Dừng I2C Transmission Wire.endTransmission ();

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi điều khiển 6 Wire.write (0x25); // Từ tính đầy đủ +/- 12 gauss Wire.write (0x60); // Dừng I2C Transmission Wire.endTransmission ();

// Bắt đầu truyền I2C

Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi điều khiển 7 Wire.write (0x26); // Chế độ bình thường, chế độ chuyển đổi liên tục từ tính Wire.write (0x00); // Dừng I2C Transmission Wire.endTransmission (); chậm trễ (300);

for (int i = 0; i <6; i ++) {// Khởi động I2C Transmission Wire.beginTransmission (Addr_Gyro); // Chọn thanh ghi dữ liệu Wire.write ((40 + i)); // Dừng I2C Transmission Wire.endTransmission ();

// Yêu cầu 1 byte dữ liệu

Wire.requestFrom (Addr_Gyro, 1);

// Đọc 6 byte dữ liệu

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}

// Chuyển đổi dữ liệu

int xGyro = ((data [1] * 256) + data [0]); int yGyro = ((data [3] * 256) + data [2]); int zGyro = ((data [5] * 256) + data [4]);

for (int i = 0; i <6; i ++) {// Khởi động I2C Transmission Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi dữ liệu Wire.write ((40 + i)); // Dừng I2C Transmission Wire.endTransmission ();

// Yêu cầu 1 byte dữ liệu

Wire.requestFrom (Addr_Accl, 1);

// Đọc 6 byte dữ liệu

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available () == 1) {data = Wire.read (); }}

// Chuyển đổi dữ liệu

int xAccl = ((data [1] * 256) + data [0]); int yAccl = ((data [3] * 256) + data [2]); int zAccl = ((data [5] * 256) + data [4]);

for (int i = 0; i <6; i ++) {// Khởi động I2C Transmission Wire.beginTransmission (Addr_Accl); // Chọn thanh ghi dữ liệu Wire.write ((8 + i)); // Dừng I2C Transmission Wire.endTransmission ();

// Yêu cầu 1 byte dữ liệu

Wire.requestFrom (Addr_Accl, 1);

// Đọc 6 byte dữ liệu

// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}

// Chuyển đổi dữ liệu

int xMag = ((data [1] * 256) + data [0]); int yMag = ((data [3] * 256) + data [2]); int zMag = ((data [5] * 256) + data [4]);

// Xuất dữ liệu ra màn hình nối tiếp

Serial.print ("Trục quay X:"); Serial.println (xGyro); Serial.print ("Trục quay Y:"); Serial.println (yGyro); Serial.print ("Trục quay Z:"); Serial.println (zGyro); Serial.print ("Gia tốc theo trục X:"); Serial.println (xAccl); Serial.print ("Gia tốc theo trục Y:"); Serial.println (yAccl); Serial.print ("Gia tốc theo trục Z:"); Serial.println (zAccl); Serial.print ("Từ trường trong trục X:"); Serial.println (xMag); Serial.print ("Từ trường theo trục Y:"); Serial.println (yMag); Serial.print ("Từ tính trong Z-Axis:"); Serial.println (zMag);

// Xuất dữ liệu ra máy chủ web

server.sendContent ("

CỬA HÀNG DCUBE

www.dcubestore.com

"" Mô-đun nhỏ I2C của cảm biến LSM9DS0

);

server.sendContent ("

Trục xoay X = "+ String (xGyro)); server.sendContent ("

Trục xoay Y = "+ String (yGyro)); server.sendContent ("

Trục xoay Z = "+ String (zGyro)); server.sendContent ("

Tăng tốc trong X-Axis = "+ String (xAccl)); server.sendContent ("

Tăng tốc trong Y-Axis = "+ String (yAccl)); server.sendContent ("

Tăng tốc trong Z-Axis = "+ String (zAccl)); server.sendContent ("

Magnetic được lưu trong X-Axis = "+ String (xMag)); server.sendContent ("

Magnetic được lưu trong Y-Axis = "+ String (yMag)); server.sendContent ("

Từ tính trong Z-Axis = "+ String (zMag)); delay (1000);}

void setup ()

{// Khởi tạo giao tiếp I2C dưới dạng MASTER Wire.begin (2, 14); // Khởi tạo giao tiếp nối tiếp, đặt tốc độ baud = 115200 Serial.begin (115200);

// Kết nối với mạng WiFi

WiFi.begin (ssid, mật khẩu);

// Chờ kết nối

while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } Serial.println (""); Serial.print ("Đã kết nối với"); Serial.println (ssid);

// Lấy địa chỉ IP của ESP8266

Serial.print ("Địa chỉ IP:"); Serial.println (WiFi.localIP ());

// Khởi động máy chủ

server.on ("/", handleroot); server.begin (); Serial.println ("Máy chủ HTTP đã khởi động"); }

void loop ()

{server.handleClient (); }

Bước 4: Làm việc với mã

Làm việc của mã
Làm việc của mã

Bây giờ, hãy tải xuống (hoặc git pull) mã và mở nó trong Arduino IDE.

Biên dịch và tải lên mã và xem kết quả trên Serial Monitor.

Lưu ý: Trước khi tải lên, hãy đảm bảo bạn nhập mạng SSID và mật khẩu của mình vào mã.

Sao chép địa chỉ IP của ESP8266 từ Serial Monitor và dán vào trình duyệt web của bạn. Bạn sẽ thấy một trang web có trục quay, gia tốc và đọc từ trường trong 3 trục.

Đầu ra của cảm biến trên Serial Monitor và Web Server được hiển thị trong hình trên.

Bước 5: Ứng dụng và tính năng

LSM9DS0 là một hệ thống trong gói có cảm biến gia tốc tuyến tính kỹ thuật số 3D, cảm biến tỷ lệ góc kỹ thuật số 3D và cảm biến từ trường kỹ thuật số 3D. Bằng cách đo lường ba thuộc tính này, bạn có thể có được nhiều kiến thức về chuyển động của một đối tượng. Đo lực và hướng của từ trường Trái đất bằng từ kế, bạn có thể ước lượng tiêu đề của mình. Gia tốc kế trong điện thoại của bạn có thể đo hướng của lực hấp dẫn và ước tính hướng (dọc, ngang, phẳng, v.v.). Quadcopters với con quay hồi chuyển tích hợp có thể quan sát các cuộn hoặc dốc đột ngột. Chúng tôi có thể sử dụng điều này trong Hệ thống Định vị Toàn cầu (GPS).

Một số ứng dụng khác bao gồm Điều hướng trong nhà, Giao diện người dùng thông minh, Nhận dạng cử chỉ nâng cao, Thiết bị đầu vào trò chơi và thực tế ảo, v.v.

Với sự trợ giúp của ESP8266, chúng tôi có thể tăng công suất của nó lên một chiều dài lớn hơn. Chúng tôi có thể kiểm soát các thiết bị của mình và giám sát hiệu suất ở đó, máy tính để bàn và thiết bị di động của chúng tôi. Chúng tôi có thể lưu trữ và quản lý dữ liệu trực tuyến và nghiên cứu chúng bất cứ lúc nào để sửa đổi. Các ứng dụng khác bao gồm Tự động hóa gia đình, Mạng lưới, Điều khiển không dây công nghiệp, Màn hình trẻ em, Mạng cảm biến, Thiết bị điện tử đeo được, Thiết bị nhận biết vị trí Wi-Fi, Báo hiệu hệ thống định vị Wi-Fi.

Bước 6: Nguồn lực để Tiến xa hơn

Để biết thêm thông tin về LSM9DS0 và ESP8266, hãy xem các liên kết bên dưới:

  • Biểu dữ liệu cảm biến LSM9DS0
  • Sơ đồ đấu dây LSM9DS0
  • Biểu dữ liệu ESP8266

Đề xuất: