Chức năng: Bộ xử lý trung tâm có nhiệm vụ nhận dữ liệu từ khối đo cảm biến
sau đó đưa ra hiển thị trên LCD đồng thời gửi dữ liệu lên web server thông qua wifi esp8266. Khi mất wifi thì dữ liệu nhận từ khối đo sẽ được lưu vào khối lữu trữ đến khi có wifi trở lại.
Khối hiển thị là LCD 20x4.
Khối lưu trữ là EEprom 24LC512. Khối đặt trước là nút nhấn.
Để thực hiện việc giao tiếp giữa các khối với nhau thì cần có khối xử lý trung tâm đồng thời khối xử lý trung tâm còn đảm nhiệm cả gửi dữ liệu lên Internet. Trong hệ thống này đã chọn NodeMCU 1.0 được phát triển từ ESP8266 12E làm bộ xử lý trung tâm chủ đạo. Với nhiều ưu điểm: có thể lập trình trực tiếp trên chip ESP8266 12E đảm bảo tiết kiệm năng lượng và cực kỳ nhỏ gọn, không cần phải sử dụng thêm một bộ vi xử
CHƯƠNG 3. TÍNH TỐN VÀ THIẾT KẾ
72
lý nào. Thay vì, vừa sử dụng vi điều khiển vừa phải thêm module thu phát sóng WiFi thì ở đây chỉ cần dùng NodeMCU đã có thể sử dụng đầy đủ các chức năng.
Đầu tiên là giao tiếp với các khối hiển thị, thời gian thực và EEPROM, đặc điểm chung của hai khối này là đều giao tiếp theo chuẩn I2C, tất cả các bus SCL và SDA của các khối đều nối chung với nhau. Nên mỗi khối phải có một địa chỉ riêng biệt không được trùng nhau để cho bộ xử lý trung tâm có thể nhận diện được đó là khối nào trong mạch. Nên trong mỗi khỗi đã có kết nối phần cứng để thiết lập địa chỉ khác nhau : khối hiển thị LCD có địa chỉ I2C là 0x3F là địa chỉ của module chuyển đổi giao tiếp I2C sang giao tiếp LCD, khối lưu trữ EEPROM có địa chỉ 0x51, khối thời gian thực có địa chỉ là 0x68.
Kế tiếp là khối đo được liên kết với nhau thông qua kiểu truyền UART. Dưới sự truyền nhận giữa arduino và ESP8266.
c. Tính tốn khối đồng hồ thời gian thực DS1307
Dưới đây là phần tính tốn mạch đồng hồ thời gian thực DS1307:
Dựa theo các cơng thức tính tốn giá trị điện trở kéo lên cho 2 chân SCL và SDA như trên phần tính tốn mạch lưu trữ dữ liệu dùng EEPROM bên dưới, suy ra:
R (max) = tr
(0.8473xCb) 1000∗10−9 0.8473∗400∗10−12
tr: Rise time của tín hiệu cả trên SDA và SCL (ns). Cb: dung kháng trên mỗi BUS (Pf).
=
2.95(KΩ)
(3.5)
Rp(max): điện trở lớn nhất dùng để kéo 2 chân SDA và SCL lên mức High. Trên thực tế giá trị điện trở thực sẽ nhỏ hơn giá trị lý thuyết của nó. Vì vậy giá trị điện trở kéo lên cho 2 chân SCL và SDA được chọn là 3.3 kohm.
Tính tốn cho nguồn pin nuôi đồng hồ: Theo datasheet của nhà sản xuất, ngõ vào VBAT của DS1307 phải đảm bảo từ 2.0 V đến 3.5 V, vì vậy sử việc sử dụng pin 3.3V trong module là thích hợp.
p
Hai chân SCL và SDA cùng kết nối với SCL và SDA của khối xử lý trung tâm (NodeMCU).
Lưu ý: Trong giao tiếp I2C nhiều thiết bị thì 2 chân SCL và SDA của tất cả các thiết bị giao tiếp I2C trên cùng một bus đều nối chung với nhau nên chỉ cần một điện trở kéo lên cho một dây SCL chung và SDA chung. Vì thế, trong module thời gian thực DS1307 đã có 2 điện trở kéo lên rồi nên các module hay thiết bị khác trên bus này không cần điện trở kéo lên nữa.
d. Thiết kế khối hiển thị
Với chức năng là hiển thị các thông tin cần thiết của hệ thống với người dùng, nhằm cung cấp các thông tin trực quan và dễ dàng quan sát cần phải có màn hình giao tiếp.
Vậy nên, nhóm đã lựa chọn LCD 20x4 để hiển thị các thông tin như các giá trị của dịng điện, điện áp, cơng suất và điện năng tiêu thụ của hộ gia đình.
Để giao tiếp LCD 20x4 với vi điều khiển trung tâm, nhằm tiết kiệm các cổng vào ra cho vi điều khiển bởi cần vi điều khiển trung tâm thực hiện nhiều chức năng nên phải sử dụng thêm module chuyển giao tiếp trực tiếp sử dụng 6 chân sang giao tiếp I2C chỉ sử dụng 2 chân là module giao tiếp I2C PCF8574.
Sơ đồ nguyên lý kết nối: