Mục lục:

Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak: 5 bước
Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak: 5 bước

Video: Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak: 5 bước

Video: Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak: 5 bước
Video: [Review phim] - Chàng SHIPPER XUYÊN KHÔNG và cuộc hành trình trở thành Hoàng Đế - Tập full 2024, Tháng mười một
Anonim
Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak
Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak
Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak
Đọc Đồng hồ đo điện và khí đốt (Bỉ / Hà Lan) và tải lên Thingspeak

Nếu bạn lo lắng về mức tiêu thụ năng lượng của mình hoặc chỉ là một chút mọt sách, bạn có thể muốn xem dữ liệu từ đồng hồ kỹ thuật số mới lạ trên điện thoại thông minh của mình.

Trong dự án này, chúng tôi sẽ lấy dữ liệu hiện tại từ đồng hồ đo điện và khí kỹ thuật số của Bỉ hoặc Hà Lan và tải nó lên Thingspeak. Dữ liệu này bao gồm mức tiêu thụ và lượng điện năng tiêu thụ hàng ngày và hiện tại (nếu bạn có tấm pin mặt trời), điện áp và dòng điện cũng như mức tiêu thụ khí (nếu đồng hồ đo khí kỹ thuật số được kết nối với đồng hồ đo điện). Thông qua một ứng dụng, những giá trị này sau đó có thể được đọc trong thời gian thực trên điện thoại thông minh của bạn.

Nó hoạt động đối với đồng hồ kỹ thuật số của Bỉ hoặc Hà Lan tuân theo giao thức DSMR (Yêu cầu về đồng hồ thông minh của Hà Lan), giao thức này phải là tất cả các đồng hồ gần đây. Thật không may, nếu bạn sống ở một nơi khác, máy đo của bạn có thể sẽ sử dụng một giao thức khác. Vì vậy, tôi e rằng có thể hướng dẫn này hơi bị hạn chế theo khu vực.

Chúng tôi sẽ sử dụng cổng P1 của đồng hồ, cổng này chấp nhận cáp RJ11 / RJ12, thường được gọi là cáp điện thoại. Đảm bảo rằng người cài đặt đồng hồ đã kích hoạt cổng P1. Ví dụ, đối với Fluvius ở Bỉ, hãy làm theo các hướng dẫn sau.

Để xử lý dữ liệu và tải lên internet, chúng tôi sử dụng ESP8266, đây là một vi mạch giá rẻ có tích hợp wifi. Nó chỉ có giá như 2 đô la. Hơn nữa, nó có thể được lập trình bằng Arduino IDE. Chúng tôi lưu trữ dữ liệu trên đám mây trên Thingspeak, miễn phí cho tối đa bốn kênh. Đối với dự án này, chúng tôi chỉ sử dụng một kênh. Sau đó, dữ liệu có thể được hiển thị trên điện thoại thông minh của bạn bằng một ứng dụng như IoT ThingSpeak.

Các bộ phận:

  • Một ESP8266, giống như một gật đầu v2. Lưu ý rằng gật gù v3 quá rộng đối với một breadboard tiêu chuẩn, vì vậy tôi thích v2 hơn.
  • Cáp micro USB sang USB.
  • Bộ sạc USB.
  • Một bóng bán dẫn NPN BC547b.
  • Hai điện trở 10k và một điện trở 1k.
  • Một đầu nối đầu cuối vít RJ12.
  • Một bảng mạch.
  • Dây nhảy.
  • Tùy chọn: một tụ điện 1nF.

Tổng cộng, chi phí này giống như 15 EUR trên AliExpress hoặc tương tự. Ước tính có tính đến một số thành phần như điện trở, bóng bán dẫn và dây dẫn, có số lượng lớn hơn nhiều so với số lượng bạn cần cho dự án này. Vì vậy, nếu bạn đã có một bộ linh kiện thì sẽ rẻ hơn.

Bước 1: Tìm hiểu về ESP8266

Tôi đã chọn NodeMCU v2, vì không cần hàn và nó có kết nối micro USB cho phép lập trình dễ dàng. Ưu điểm của NodeMCU v2 so với NodeMCU v3 là nó đủ nhỏ để vừa trên breadboard và để lại các lỗ trống ở bên cạnh để tạo kết nối. Vì vậy, tốt hơn là nên tránh NodeMCU v3. Tuy nhiên, nếu bạn thích một bảng ESP8266 khác cũng tốt.

Có thể dễ dàng lập trình ESP8266 bằng Arduino IDE. Có những Sách hướng dẫn khác giải thích chi tiết về vấn đề này nên tôi sẽ nói rất ngắn gọn ở đây.

  • Đầu tiên hãy tải xuống Arduino IDE.
  • Hỗ trợ cài đặt thứ hai cho bảng ESP8266. Trong menu Tệp - Tùy chọn - Cài đặt, hãy thêm URL https://arduino.esp8266.com/stable/package_esp8266com_index.json vào URL Trình quản lý Bảng bổ sung. Tiếp theo trong menu Tools - Board - Boards Manager cài đặt esp8266 bởi cộng đồng esp8266.
  • Thứ ba, chọn bảng gần nhất với ESP8266 của bạn. Trong trường hợp của tôi, tôi đã chọn NodeMCU v1.0 (Mô-đun ESP 12-E).
  • Cuối cùng chọn trong Tools - Flash Size, một kích thước bao gồm SPIFFS, như 4M (1M SPIFFS). Trong dự án này, chúng tôi sử dụng SPIFFS (SPI Flash File System) để lưu trữ các giá trị năng lượng hàng ngày, để chúng không bị mất nếu ESP8266 mất điện và ngay cả khi nó được lập trình lại.

Bây giờ chúng tôi đã có mọi thứ để lập trình ESP8266! Chúng ta sẽ thảo luận về mã thực tế ở bước sau. Đầu tiên, chúng tôi sẽ tạo một tài khoản Thingspeak.

Bước 2: Tạo tài khoản và kênh Thingspeak

Truy cập https://thingspeak.com/ và tạo một tài khoản. Khi bạn đã đăng nhập, hãy nhấp vào nút Kênh mới để tạo kênh. Trong Cài đặt kênh điền tên và mô tả tùy thích. Tiếp theo, chúng tôi đặt tên cho các trường kênh và kích hoạt chúng bằng cách nhấp vào hộp kiểm ở bên phải. Nếu bạn sử dụng mã của tôi không thay đổi, các trường như sau:

  • Trường 1: mức tiêu thụ cao nhất ngày hôm nay (kWh)
  • Trường 2: tiêu thụ ngoài giờ cao điểm hôm nay (kWh)
  • Trường 3: mức phun cao điểm hôm nay (kWh)
  • Trường 4: phun thấp điểm hôm nay (kWh)
  • Trường 5: mức tiêu thụ hiện tại (W)
  • Trường 6: dòng điện (W)
  • Lĩnh vực 7: tiêu thụ khí ngày nay (m3)

Ở đây, cao điểm và thấp điểm đề cập đến biểu giá điện. Trong các trường 1 và 2, mức tiêu thụ đề cập đến mức tiêu thụ điện ròng ngày nay: mức tiêu thụ điện ngày hôm nay trong biểu giá kể từ nửa đêm trừ đi lượng điện cung cấp (được sản xuất bởi các tấm pin mặt trời) hôm nay trong biểu giá kể từ nửa đêm với mức tối thiểu bằng 0. Điều sau có nghĩa là nếu ngày hôm nay có nhiều tiêm hơn mức tiêu thụ thì giá trị bằng không. Tương tự như vậy, tiêm trong trường 3 và 4 đề cập đến việc tiêm điện ròng. Trường 5 và 6 cho biết mức tiêu thụ ròng và mức bơm vào thời điểm hiện tại. Cuối cùng trường 7 là lượng khí tiêu thụ kể từ nửa đêm.

Để tham khảo trong tương lai, hãy ghi lại ID kênh, Khóa API đọc và Khóa API ghi, bạn có thể tìm thấy khóa này trong các khóa API của menu.

Bước 3: Xây dựng vi mạch điện tử

Xây dựng vi mạch điện tử
Xây dựng vi mạch điện tử
Xây dựng vi mạch điện tử
Xây dựng vi mạch điện tử

Chúng tôi đọc tắt đồng hồ đo điện bằng cổng P1, có cáp RJ11 hoặc RJ12. Sự khác biệt là cáp RJ12 có 6 dây trong khi RJ11 chỉ có 4. Trong dự án này, chúng tôi không cấp nguồn cho ESP8266 từ cổng P1 nên chúng tôi thực sự chỉ cần 4 dây, vì vậy RJ11 sẽ làm được.

Tôi đã sử dụng breakout RJ12 được hiển thị trong hình. Nó hơi rộng và không có nhiều không gian xung quanh cổng P1 trong đồng hồ của tôi. Nó phù hợp, nhưng nó là chặt chẽ. Ngoài ra, bạn có thể chỉ cần sử dụng cáp RJ11 hoặc RJ12 và tháo tiêu đề ở một đầu.

Nếu bạn giữ break-out như trong hình, các chốt được đánh số từ phải sang trái và có ý nghĩa như sau:

  • Chân 1: Nguồn điện 5V
  • Pin 2: Yêu cầu dữ liệu
  • Chân 3: Nền tảng dữ liệu
  • Chân 4: không kết nối
  • Pin 5: Dòng dữ liệu
  • Chân 6: Nối đất

Pin 1 và Pin 6 có thể được sử dụng để cấp nguồn cho ESP8266, nhưng tôi chưa thử nghiệm điều này. Bạn sẽ phải kết nối Pin 1 với Vin của ESP8266, vì vậy bộ điều chỉnh điện áp bên trong của bo mạch được sử dụng để giảm điện áp từ 5V xuống 3,3V mà ESP8266 chấp nhận. Vì vậy, không kết nối nó với chân 3.3V, vì điều đó có thể làm hỏng ESP8266. Cũng cấp nguồn từ cổng P1 theo thời gian sẽ làm cạn pin của đồng hồ kỹ thuật số.

Đặt chân cao 2 báo hiệu cho đồng hồ gửi các bức điện dữ liệu mỗi giây. Dữ liệu thực tế được gửi qua Pin 5 với tốc độ truyền là 115200 đối với máy đo kỹ thuật số hiện đại (DSMR 4 và 5). Tín hiệu bị đảo ngược (mức thấp là 1 và mức cao là 0). Đối với loại cũ hơn (DSMR 3 trở xuống), tốc độ là 9600 baud. Đối với một đồng hồ như vậy, bạn phải thay đổi tốc độ truyền trong mã phần sụn của bước tiếp theo: thay đổi dòng Serial.begin (115200); trong thiết lập ().

Vai trò của bóng bán dẫn NPN gồm hai phần:

  • Để đảo ngược tín hiệu để ESP8266 có thể hiểu nó.
  • Để thay đổi mức logic từ 5V của cổng P1 thành 3.3V được mong đợi bởi cổng RX của ESP8266.

Vì vậy, hãy tạo mạch điện tử trên breadboard như trong sơ đồ. Tụ điện làm tăng độ ổn định, nhưng nó cũng hoạt động mà không có.

Giữ kết nối chân RX cho đến khi bạn đã lập trình ESP8266 ở bước tiếp theo. Thật vậy, chân RX cũng cần thiết để giao tiếp qua USB giữa ESP8266 và máy tính của bạn.

Bước 4: Tải lên mã

Tôi đã tạo mã có sẵn trên GitHub, nó chỉ là một tệp: P1-Meter-Reader.ino. Chỉ cần tải xuống và mở nó trong Arduino IDE. Hoặc bạn có thể chọn Tệp - Mới và chỉ cần sao chép / dán mã.

Có một số thông tin bạn phải điền vào đầu tệp: tên và mật khẩu của mạng WLAN để sử dụng, ID kênh và khóa API ghi của kênh ThingSpeak.

Mã thực hiện như sau:

  • Đọc một bức điện dữ liệu từ máy đo mỗi UPDATE_INTERVAL (tính bằng mili giây). Giá trị mặc định là 10 giây một lần. Thông thường cứ mỗi giây lại có một bức điện dữ liệu từ đồng hồ, nhưng việc đặt tần số cao sẽ khiến ESP8266 bị quá tải nên không thể chạy webserver được nữa.
  • Tải dữ liệu điện lên kênh Thingspeak SEND_INTERVAL một lần (tính bằng mili giây). Giá trị mặc định là mỗi phút. Để quyết định về tần suất này, hãy tính đến việc gửi dữ liệu mất một khoảng thời gian (thường là vài giây) và có giới hạn về tần suất cập nhật trên Thingspeak đối với tài khoản miễn phí. Đó là khoảng 8200 tin nhắn mỗi ngày, do đó tần suất tối đa sẽ là khoảng 10 giây một lần nếu bạn không sử dụng Thingspeak cho bất cứ việc gì khác.
  • Tải lên dữ liệu khí khi nó thay đổi. Thông thường, đồng hồ chỉ cập nhật dữ liệu tiêu thụ khí sau mỗi 4 phút hoặc lâu hơn.
  • Đồng hồ theo dõi tổng lượng tiêu thụ và giá trị phun kể từ khi bắt đầu. Vì vậy, để có được mức tiêu thụ và tiêm hàng ngày, mã lưu tổng giá trị vào nửa đêm hàng ngày. Sau đó, các giá trị này được trừ khỏi tổng giá trị hiện tại. Các giá trị lúc nửa đêm được lưu trữ trong SPIFFS (SPI Flash File System), hệ thống này vẫn tồn tại nếu ESP8266 mất nguồn hoặc ngay cả khi nó được lập trình lại.
  • ESP8266 chạy một máy chủ web mini. Nếu bạn mở địa chỉ IP của nó trong trình duyệt của mình, bạn sẽ có cái nhìn tổng quan về tất cả các giá trị điện và khí đốt hiện tại. Đây là từ bức điện gần đây nhất và bao gồm thông tin không được tải lên Thingspeak, như điện áp và dòng điện trên mỗi pha. Cài đặt mặc định là địa chỉ IP được xác định động bởi bộ định tuyến của bạn. Nhưng sẽ thuận tiện hơn khi sử dụng địa chỉ IP tĩnh, địa chỉ IP luôn giống nhau. Trong trường hợp này, bạn phải điền staticIP, gateway, dns và subnet vào mã và bỏ ghi chú dòng WiFi.config (staticIP, dns, gateway, subnet); trong hàm connectWifi ().

Sau khi thực hiện những thay đổi này, bạn đã sẵn sàng tải phần sụn lên ESP8266. Kết nối ESP8266 thông qua cáp USB với máy tính của bạn và nhấn biểu tượng có mũi tên trong Arduino IDE. Nếu bạn không thể kết nối với ESP8266, hãy thử thay đổi cổng COM trong menu Công cụ - Cổng. Nếu nó vẫn không hoạt động, có thể bạn phải cài đặt trình điều khiển cho cổng COM ảo USB theo cách thủ công.

Bước 5: Kiểm tra

Sau khi tải lên chương trình cơ sở, hãy rút USB và kết nối dây RX của ESP8266. Hãy nhớ rằng, chúng tôi cần kênh RX của ESP8266 để tải lên phần sụn nên chúng tôi đã không kết nối nó trước đây. Bây giờ hãy cắm bộ ngắt RJ12 vào đồng hồ kỹ thuật số và kết nối lại ESP8266 với máy tính của bạn.

Trong Arduino IDE, mở Serial Monitor thông qua menu Tools và đảm bảo nó được đặt thành 115200 baud. Nếu bạn phải thay đổi tốc độ truyền, có lẽ bạn cần phải đóng và mở lại Serial Monitor một lần nữa trước khi nó hoạt động.

Bây giờ bạn sẽ thấy đầu ra của mã trong Serial Monitor. Bạn nên kiểm tra xem có bất kỳ thông báo lỗi nào không. Ngoài ra, bạn sẽ có thể xem các bức điện. Đối với tôi, chúng trông như thế này:

/ FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Đồng hồ đo số sê-ri hệ thập lục phân 0-0: 1.0.0 (200831181442S) // Dấu thời gian S: tiết kiệm ánh sáng ban ngày (mùa hè), W: không Tiết kiệm ánh sáng ban ngày (mùa đông) 1-0: 1.8.1 (000016.308 * kWh) // Tổng mức tiêu thụ ròng cao điểm 1-0: 1.8.2 (000029.666 * kWh) // Tổng mức tiêu thụ ròng ngoài giờ cao điểm 1-0: 2.8.1 (000138.634 * kWh) // Tổng lượng phun thực tối đa 1-0: 2.8.2 (000042.415 * kWh) // Tổng lượng phun ròng thấp điểm 0-0: 96.14.0 (0001) // Biểu giá 1: đỉnh, 2: thấp điểm 1-0: 1.7.0 (00.000 * kW) // Dòng tiêu thụ 1-0: 2.7.0 (00.553 * kW) // Dòng điện áp 1-0: 32.7.0 (235.8 * V) // Pha Điện áp 1 1-0: 52.7.0 (237.0 * V) // Điện áp pha 2 1-0: 72.7.0 (237.8 * V) // Điện áp pha 3 1-0: 31.7.0 (001 * A) // Dòng pha 1 1-0: 51.7.0 (000 * A) // Dòng pha 2 1-0: 71.7.0 (004 * A) // Dòng pha 3 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9 * kW) // Công suất tối đa 1-0: 31.4.0 (999 * A) // Dòng điện tối đa 0-0: 96.13.0 () // Thông báo 0-1: 24.1.0 (003) // các thiết bị khác trên M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Số sê-ri khí mete r thập lục phân 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615 * m3) // Tổng mức tiêu thụ dấu thời gian khí! E461 // CRC16 tổng kiểm tra

Nếu có điều gì đó sai, bạn có thể kiểm tra xem bạn có các thẻ giống nhau hay không và bạn có thể phải thay đổi mã phân tích cú pháp các bức điện trong hàm readTelegram.

Nếu mọi thứ hoạt động, bây giờ bạn có thể cấp nguồn cho esp8266 từ bộ sạc USB.

Cài đặt ứng dụng IoT ThingSpeak Monitor trên điện thoại thông minh của bạn, điền ID kênh và Đọc khóa API là xong!

Đề xuất: