Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
3,09 MB
Nội dung
NHIỆM VỤ ĐỒ ÁN Đề tài ỨngdụngcôngnghệInternetofThingsthuthậpđánhgiánhiệtđộ,độẩmmôitrường tập trung vào nội dung sau: - Giới thiệu côngnghệInternetofThings (IoT): Kiến trúc IoT, Các côngnghệ truyền thông IoT - Tìm hiểu cấu trúc chương trình C cho ESP8266 Arduino IDE - Tìm hiểu trình xây dựngứngdụng IoT iot-playground - Tìm hiểu Cảm biến nhiệtđộ,độẩm DHT22, Module Wifi ESP 8266, Module nguồn LM2596 - Ứngdụngcôngnghệ IoT xây dựng giao diện giám sát Web theo thời gian thực, kèm theo cảnh báo nhiệtđộ,độẩm vượt ngưỡng LỜI CẢM ƠN Trước tiên em xin gửi lời cám ơn chân thành sâu sắc tới thầy cô giáo trường Đại học Côngnghệ Thông tin Truyền thông thầy cô giáo Bộ môn Côngnghệ Điện tử, Khoa Côngnghệ Điện tử Truyền thông tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt thời gian qua Đặc biệt em xin gửi lời cảm ơn đến thầy giáo Thạc sĩ Nguyễn Thanh Tùng tận tình giúp đỡ, trực tiếp bảo, hướng dẫn em suốt trình làm báo cáo Trong thời gian làm việc với thầy, cô, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà học tập tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, điều cần thiết cho em trình học công tác sau Sau xin gửi lời cảm ơn chân thành tới gia đình, bạn bè động viên, đóng góp ý kiến giúp đỡ trình học tâp, nghiên cứu hoàn thành báo cáo Thái nguyên, Tháng 06 Năm 2016 SINH VIÊN THỰC HIỆN Ngô Thị Quỳnh Ánh LỜI CAM ĐOAN Tôi xin cam đoan: Những nội dungđồ án thực hướng dẫn thầy giáo Thạc sĩ Nguyễn Thanh Tùng nghiên cứu Internet, sách báo, tài liệu nước có liên quan, không chép hay sử dụng làm khác Mọi tham khảo dùngđồ án trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố Tôi xin chịu hoàn toàn trách nhiệm lời cam đoan trước thầy cô nhà trường Thái nguyên, Tháng 06 Năm 2016 SINH VIÊN THỰC HIỆN Ngô Thị Quỳnh Ánh MỤC LỤC NHIỆM VỤ ĐỒ ÁN LỜI CẢM ƠN .2 LỜI CAM ĐOAN MỤC LỤC DANH MỤC HÌNH ẢNH LỜI NÓI ĐẦU CHƯƠNG TỔNG QUAN 1.1 Tình hình nghiên cứu thuộc lĩnh vực đề tài 1.1.1 Trên giới 1.1.2 Tình hình nước .12 1.2 Tính cấp thiết đề tài 14 1.3 Phạm vi nghiên cứu đề tài 15 1.4 Mục tiêu đề tài 15 CHƯƠNG GIỚI THIỆU VỀ CÔNGNGHỆINTERNETOFTHINGS 16 2.1 Tổng quan InternetofThings 16 2.1.1 Giới thiệu mô hình InternetofThings (IoT) 16 2.1.2 Các côngnghệ thành phần .20 2.1.3 Cấu trúc mạng mở rộng 30 2.1.4 Các mô hình ứngdụng IoT 32 2.2 Kiến trúc tham chiếu IoT 36 2.2.1 Tổng quan 36 2.2.2 Phân loại thiết bị IoT phương thức kết nối internet 37 2.2.3 Các yêu cầu kiến trúc tham chiếu cho IoT 38 2.2.4 Mô hình tham chiếu IoT 38 2.3 Giới thiệu điện toán đám mây .42 2.3.1 Giới thiệu chung 42 2.3.2 Các đặc điểm 43 2.4 Các côngnghệ truyền thông IoT 45 2.4.1 Radio Frequency Identification (RFID) 45 2.4.2 Bluetooth 46 2.4.3 Zigbee 47 2.4.4 Wifi 51 2.4.5 RF Links 53 2.4.6 Mạng di động: Internet di động (Cellular Networks: The Mobile Internet) .54 2.4.7 Truyền thông có dây (Wired Communication) 54 2.4.8 Lựa chọn côngnghệ truyền thông cho IoT .55 CHƯƠNG PHÂN TÍCH BÀI TOÁN 57 3.1 Yêu cầu toán 57 3.2 Giải pháp thiết kế 57 3.2.1 Sơ đồ khối 57 3.2.2 Nguyên tắc hoạt động hệ thống 57 3.3 Lựa chọn linh kiện 58 3.3.1 Cảm biến nhiệtđộđộẩm DHT22 58 3.3.2 Module wifi ESP8266 60 3.3.3 Khối nguồn LM2596 61 CHƯƠNG NGÔN NGỮ LẬP TRÌNH VÀ PHẦN MỀM PHỤ TRỢ .63 4.1 Giới thiệu môitrường lập trình Arduino IDE 63 4.2 Cấu trúc chương trình lập trình Arduino 65 4.3 Một số ví dụ lập trình ứngdụng 66 4.3.1 Lập trình Điều khiển led 66 4.3.2 Lập trình gửi liệu cổng truyền thông nối tiếp 67 4.4 Lập trình cho ESP8266 Arduino IDE 68 4.4.1 Cấu hình cho Arduino IDE .68 4.4.2 Tập lệnh AT giao tiếp với Module ESP8266 .69 CHƯƠNG THỰC THI THIẾT KẾ 71 5.1 Thiết kế phần cứng 71 5.2 Thiết kế phần mềm .71 5.2.1 Lưu đồ thuật toán .71 5.2.2 Server EasyIoT Cloud Beta cách kết nối với phần cứng 72 5.3 Một số hình ảnh sản phầm 75 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 77 TÀI LIỆU THAM KHẢO 78 PHỤ LỤC 79 DANH MỤC HÌNH ẢNH Hình 2.1 Mô hình IoT .16 Hình 2.2 Mô hình côngnghệ thành phần IoT 20 Hình 2.3 Mô hình hệ thống nhúng giám sát điều khiển từ xa 20 Hình 2.4 Mô hình Ubiquitous computing 21 Hình 2.5 Xu hướng phát triển Ubiquitous computing 22 Hình 2.6 So sánh Mark Weiser thực ảo Ubiquitous Computing 24 Hình 2.7 Mô hình hệ thống mạng thông tin di động tế bào 25 Hình 2.8 Mô hình đo lưu lượng nước lũ từ xa 26 Hình 2.9 Mô hình mạng cảm biến chuyển tiếp thông tin đến trạm gốc 27 Hình 2.10 Mô hình Mobile Computing 28 Hình 2.11 Mô hình Computing Netwworking 29 Hình 2.12 Mô hình mạng mở rộng 31 Hình 2.13 Mô hình TCP/IP .32 Hình 2.14 Kiến trúc phần cứng hai đối tượng thông minh trang bị loại thiết bị truyền thông khác .35 Hình 2.15 Cấu phần IoT .36 Hình 2.16 Hai mô hình kết nối thiết bị IoT 38 Hình 2.17 Mô hình tham chiếu IoT 39 Hình 2.18 Mô hình điện toán đám mây .43 Hình 2.19 Cơ chế hoạt động thẻ RFID 45 Hình 2.20 Một loại thẻ chip RFID phổ biến 45 Hình 2.21 Hình ảnh module Bluetooth HC05 46 Hình 2.22 Mô hình mạng Zigbee 49 Hình 2.23 Cấu trúc Zigbee 50 Hình 2.24 Mô hình thu phát song Wifi 52 Hình 2.25 Phân loại tần số 53 Hình 2.26 Module GPRS 54 Hình 2.27 Cổng kết nối Ethernet .55 Hình 3.1 Sơ đồ khối hệ thống .57 Hình 3.2 Cảm biến nhiệtđộđộẩm DHT22 .58 Hình 3.3 Gửi tín hiệu start 59 Hình 3.4 Đọc bit 59 Hình 3.5 Đọc bit 60 Hinh 3.6 Module wifi ESP8266 60 Hình 3.7 Sơ đồ nguyên lý khối nguồn LM2596 61 Hình 3.8 Cầu trúc bên LM2596 .62 Hình 3.9 Module LM2596 62 Hình 4.1 Link download phần mềm Arduino .63 Hình 4.2 Cài đặt Arduino IDE 63 Hình 4.3 Giao diện lập trình Arduino 64 Hình 4.4 Chức Menu 64 Hình 4.5 Mở ứngdụng mẫu Arduino 65 Hình 4.6 Ví dụ điều khiển led 66 Hình 4.7 Kết thu hình Serial .67 Hình 4.8 Chọn Board 68 Hình 4.9 Install ESP8266 vào Arduino IDE 68 Hình 5.1 Sơ đồ nguyên lý 71 Hình 5.2 Lưu đồ thuật toán phần cứng 71 Hình 5.3 Lưu đồ thuật toán server 72 Hình 5.4 Giao diện iot-playground 73 Hình 5.5 Cửa sổ Sign Up 73 Hình 5.6 Đăng nhập tài khoản vào server 73 Hình 5.7 Cửa sổ server 74 Hình 5.8 Cửa sổ chức server 74 Hình 5.9 Thư mục Modules 74 Hình 5.10 Khai báo tên module .75 Hinh 5.11 Thư mục User info 75 Hình 5.12 Hình ảnh thực tế phần cứng sản phẩm (node cảm biến) 75 Hinh 5.13 Dữ liệu thu server .76 Hinh 5.14 Dữ liệu dạng đồ thị thời gian thực 76 Hinh 5.15 Gửi Email cảnh báo 76 LỜI NÓI ĐẦU Ngày khoa học côngnghệ ngày phát triển, người ngày chế tạo nhiều vật dụng thông minh hơn, đại Từ tối ưu hóa nhu cầu người cách dễ dàng Mỗi giai đoạn phát triển lịch sử giới gắn liền với cách mạng khoa học kĩ thuật.Và ngày nay, cách mạng InternetofThings tạo nên thay đổi đáng kể cho sống người tương lai InternetofThingsứngdụng vào nhiều mặt sống Ứngdụngcông nghiệp, nông nghiệp, giáo dục , y tế… Đặc biệt ứngdụng việc giám sát thay đổi môi trường, việc thuthậpđánhgiánhiệtđộđộẩmmôitrường phần đó.Việc giám sát nhiệtđộ,độẩmmôitrường thông qua internet điều mang tính ứngdụng cao Nhiệtđộ,độẩm đại lượng vật lý quan tâm nhiều có vai trò định nhiều tính chất vật chất Vì đề tài: ỨngdụngcôngnghệInternetofThingsthuthậpđánhgiánhiệtđộ,độẩmmôitrường đảm bảo tính cấp thiết, quan trọng mà xã hội phát triển đặt Đồ án gồm phần với chương cụ thể sau: Phần thứ nhất: Cơ sở lý thuyết, tập trung giới thiệu Internetof Things, tầm quan trọng, tính tương lai phát triển, kiến trúc ứngdụng IoT, côngnghệ truyền thông sử dụng IoT Phần gồm chương: Chương Tổng quan Chương Giới thiệu CôngnghệInternetofThings Phần thứ hai: Tập trung vào thiết kế ứngdụngcôngnghệ IoT xây dựng giao diện giám sát Web theo thời gian thực, kèm theo cảnh báo nhiệtđộ,độẩm vượt ngưỡng Phần gồm chương: Chương Phân tích toán Chương Ngôn ngữ lập trình phần mềm phụ trợ Chương Thực thi thiết kế CHƯƠNG TỔNG QUAN 1.1 Tình hình nghiên cứu thuộc lĩnh vực đề tài Mỗi giai đoạn phát triển lịch sử giới gắn liền với cách mạng khoa học kĩ thuật.Và ngày nay, cách mạng InternetofThings tạo nên thay đổi đáng kể cho sống người tương lai Với phát triển Internet, smartphone đặc biệt thiết bị cảm biến, InternetofThings (IoT) trở thành xu hướng giới IoT định nghĩa vật dụng có khả kết nối Internet Bạn vào nhà, mở khóa cửa, đèn tự động sáng chỗ bạn đứng, điều hòa tự động điều chỉnh nhiệtđộ, nhạc tự động bật để chào đón bạn… điều có phim khoa học viễn tưởng, dần trở thành thực với côngnghệ IoT Việc giám sát nhiệtđộ,độẩmmôitrường vấn đề quan trọng ngành công nghiệp nông nghiệp, thật tuyệt vời nơi đâu lúc bạn có internet bạn đề làm điều CôngnghệInternetofThings khiến điều trở lên dễ dàng Nhiệtđộ,độẩm đại lượng vật lý quan tâm nhiều có vai trò định nhiều tính chất vật chất Một đặc điểm nhiệtđộ làm thay đổi liên tục đại lượng chịu ảnh hưởng nó, ví dụ áp suất, thể tích chất khí Nó yếu tố ảnh hưởng lớn đến người tất sống trái đất Ngày công nghiệp phát triển mạnh, sản phẩm tạo ngày phong phú nhu cầu lưu trữ hàng hóa nhà kho lớn.Việc kiểm soát nhiệtđộ,độẩm bảo quản, lưu trữ sản phảm công – nông nghiệp nhà kho quan trọng Cũng giống vậy, phòng thí nghiệm bệnh viện, nhà kính trồng cảnh, khu sản xuất rau sạch…việc đảm bảo nhiệtđộ,độẩm yếu tố quan trọng đến đến chất lượng sản phẩm 1.1.1.Trên giới Thế giới chuyển mạnh mẽ trước xu "Internet of Things" (IoT) Tới năm 2021, dự kiến có 28 tỉ thiết bị kết nối có 15 tỉ thiết bị kết nối IoT Theo báo cáo Ericsson Mobility Report, tới năm 2021, dự kiến có 28 tỉ thiết bị kết nối có 15 tỉ thiết bị kết nối IoT bao gồm thiết bị M2M (machine-to9 machine) đồng hồ đo thông minh, cảm biến đường, địa điểm bán lẻ, thiết bị điện tử tiêu dùng ti vi, đầu DVR, thiết bị đeo 13 tỉ lại điện thoại di động, máy tính xách tay PC, máy tính bảng IDC dự kiến năm 2019, tòan cầu chi 1.300 tỉ đô la Mỹ cho IoT Tới năm 2020, theo dự đoán Gartner giá trị gia tăng IoT mang lại 1.900 tỉ đô la Mỹ Và theo McKinsey, tới năm 2025 IoT đóng góp vào kinh tế toàn cầu 11.000 tỉ đô la Mỹ Tới năm 2021, dự kiến số thuê bao lên tới 9,1 tỉ Số thuê bao cao số dân người sở hữu nhiều thiết bị.Trong kết nối IoT vậy, có bao gồm có đăng ký thuê bao SIM/eSIM gắn thiết bị thiết bị điện tử tiêu dùng không cần dùng SIM (Non-SIM) IoT diễn cách mạnh mẽ 50% doanh nghiệp bắt đầu triển khai dự án IoT IoT mang lại hội doanh thu cho nhiều ngành giải pháp bắt đầu thương mại hóa với tốc độ nhanh Ngành dịch vụ tiện ích, giao thông, tòa nhà thông minh ngành bán lẻ ngành đầu việc ứngdụng IoT Tháng vừa qua IBM giới thiệu công cụ phát triển mã nguồn mở gọi Quarks Công cụ cho giúp nhà sản xuất nhà lập trình phát triển ứngdụng hiệu hơn, dựa liệu từ cảm biến thiết bị InternetofThings (IoT) Ứngdụng Quarks: Thực chất, Quarks dựa tảng sản phẩm IBM Streams, công cụ doanh nghiệp giúp xử lý lượng lớn liệu trực tiếp Nhưng Quarks khác biệt chỗ, thiết kế từ đầu để cung cấp cho nhà sản xuất nhà lập trình công cụ mã nguồn mở, cho việc xây dựngứngdụng dựa thiết bị kết nối Ý tưởng biện pháp để họ tận dụng lợi để xử lý liệu trực tiếp từ thiết bị IoT theo cách đơn giản hiệu Ví dụ, bạn theo dõi sức khỏe bệnh nhân tiểu đường với thiết bị đeo người, nhân viên làm việc mỏ than với mũ bảo hiểm có gắn cảm biến Mỗi tình liên quan đến việc giám sát liệu cảm biến thu nhận được, sau truy cập truyền liệu theo thời gian thực tới người hay thiết bị cần thiết Ví dụ, cảm biến mũ bảo hiểm người thợ mỏ phát tín hiệu cảnh báo điều kiện không an toàn, họ cần biết Sẽ có độ 10 Đến gửi địa websever mà cần lấy liệu GET / HTTP/1.0 Module trả SEND OK Và sau module trả loạt liệu module nhận từ web sever (Chuỗi json: JavaScript Object Notation) , phân tích chuỗi json để lấy liệu cần thiết 70 CHƯƠNG THỰC THI THIẾT KẾ 5.1 Thiết kế phần cứng Hình 5.1 Sơ đồ nguyên lý Trong sơ đồ nguyên lý gồm có linh kiện ESP8266, DHT22 LM2596 Chân V_out LM2596 nối với chân 1(VDD) cuả DHT22 chân VCC ESP8266 để cung cấp nguồn phù hợp cho hệ thống hoạt động Chân 2(DATA) DHT22 nối với chân GPIO2 ESP8266 gửi liệu cho ESP8266 xử lý Chân GND LM2596 nối với đất DHT22 ESP8266 5.2 Thiết kế phần mềm (Code chương trình phần phụ lục) 5.2.1 Lưu đồ thuật toán Hình 5.2 Lưu đồ thuật toán phần cứng 71 Giải thích lưu đồ thuật toán phần cứng: Hệ thống bắt đầu hoạt động tiến hành việc khởi tạo thư viện cho ESP8266, DHT22, IoTCloud… ESP8266 hoạt động chế độ TCP Client kết nối tới điểm truy cập internet Cảm biến nhiệtđộđộẩm DHT22 đonhiệtđộ,độẩm từ môitrường gửi liệu cho ESP8266 xử lý để ESP8266 gửi liệu lên server Hình 5.3 Lưu đồ thuật toán server Giải thích lưu đồ thuật toán server: Hệ thống bắt đầu hoạt động tiến hành việc khởi tạo giao diện sau nhận liệu từ node cảm biến gửi Tiến hành hiển thị liệu lên giao diện đồng thời kiểm tra liệu xem có vượt ngưỡng cấu hình trước hay không, có tiến hành gửi email cảnh báo không quay nhận liệu tiếp 5.2.2 Server EasyIoT Cloud Beta cách kết nối với phần cứng Server EasyIoT Beta server miễn phí hỗ trợ người dùng phát triển ứngdụngcôngnghệInternetofThings Server phần trang wed iot-playground.com( trang wed hỗ trợ xây dựng phát triển ứngdựngcôngnghệInternetof Things) Trong trang wed iot-playground thư mục EASYIOT CLOUD, chứa mục BULD gồm ví dụ nhỏ Internetof Things, mục STORE giúp lựa chọn linh kiện, mục COMMUNITY FORUM nơi chia sẻ hiểu biết tìm giúp đỡ từ người khác Mục DOWNLOAD cho phép tải 72 thư viện cần dùngthứ liên quan Và cuối mục BLOG nơi ta tìm thấy số viết chia sẻ sản phẩm liên quan đến InternetofThings Hình 5.4 Giao diện iot-playground Để sử dụng Server EasyIoT Beta kết nối với phần cứng Đầu tiên ta phải tạo tài khoản server cách truy cập vào trang wed iot-playground.com chọn EASYIOT CLOUD chọn Sign Up Sau điền đầy đủ thông tin nhấn Submit Hình 5.5 Cửa sổ Sign Up Sau có tài khoản ta đăng nhập vào server tài khoản đăng kí Hình 5.6 Đăng nhập tài khoản vào server 73 Sau đăng nhập có cửa sổ sau ra: Hình 5.7 Cửa sổ server Chọn Configure cửa sổ ta chọn Modules Hình 5.8 Cửa sổ chức server Tiếp tục chọn Add Module Hình 5.9 Thư mục Modules Và điền tên module mà muốn tạo vào mục name nhấn Save module 74 Hình 5.10 Khai báo tên module Nhấn Back để quay lại, sau vào mục User info Trong mục ta thấy có Instance Id, thông số giúp kết nối với phần cứng (node cảm biến) Hinh 5.11 Thư mục User info 5.3 Một số hình ảnh sản phầm Hình 5.12 Hình ảnh thực tế phần cứng sản phẩm (node cảm biến) 75 Hinh 5.13 Dữ liệu thu server Hinh 5.14 Dữ liệu dạng đồ thị thời gian thực Hinh 5.15 Gửi Email cảnh báo 76 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Báo cáo thực yêu cầu đặt đề tài vấn đề tìm hiểu côngnghệInternetof Things, xu hướng phát triển tương lai, đưa khái niệm, mô hình, kiến trúc IoT với nội dung chính: - Tìm hiểu cấu trúc chương trình C cho ESP8266 Arduino IDE - Tìm hiểu trình xây dựngứngdụng IoT iot-playground - Tìm hiểu Cảm biến nhiệtđộ,độẩm DHT22, Module Wifi ESP 8266, Module nguồn LM2596 - Ứngdụngcôngnghệ IoT xây dựng giao diện giám sát Web theo thời gian thực, kèm theo cảnh báo nhiệtđộ,độẩm vượt ngưỡng Sản phẩm phát triển thêm với các tính như: nhỏ gọn, ưu việt, tối ưu hơn, đảm bảo chất lượng, tính xác, tính ổn định, trì tự động kết nối mạng có yêu cầu Tích hợp thêm nhiều chức khác thêm tính giám sát chất lượng khí môi trường, thực công việc cụ thể khác cài đặt nhiệtđộ,độẩm ngưỡng tưới tiêu nông nghiệp… Thêm nhiều node cảm biến sản phẩm, xây dựng thành mạng cảm biến để thu thập, giám sát cảnh báo diện rộng, tăng tính khách quan đánhgiánhiệtđộ,độẩmmôitrường Bổ sung kết nối không dây khác RF, Bluetooth,… để giám sát, cảnh báo, thực thi công việc thiết bị cầm tay (ví dụ: Smartphone, tay phát RF…) Phát triển thêm kết hợp với Solar cell để hệ thống làm việc độc lập với lượng sẵn có từ tự nhiên Sản phẩm thuthậpđánhgiánhiệtđộđộẩmmôitrườngứngdụng thực tiễn nhà thông minh, áp dụng nông nghiệp trang trại cần đảm bảo nhiệtđộ,độẩm (trang trại chăn nuôi gà, trồng nấm, vườn ươm cây, lò ấm trứng…), ứngdụngcông nghiệp để đảm bảo tính xác sản xuất Sản phẩm áp dụng giám sát, quan trắc, thời tiết môi trường… Dựa vào biến đối nhiệtđộ,độẩmmôitrường theo thời gian để có dự báo biện pháp phù hợp với khu vực cần khảo sát, thực nghiệm 77 TÀI LIỆU THAM KHẢO [1] Charalampos Doukas, Building InternetofThings with the Arduino, 2012 [2] Cuno Pfister, Getting Started with the Internetof ThingsPaperback, 2011 [3] http://www.buildinginternetofthings.com/ [4] https://en.wikipedia.org/wiki/Internet_of_Things [5] http://iot-playground.com/ [6] Kiều Xuân Thực, Vũ Thị Thu Hương Vũ Trung Kiên, 2008 Vi điều khiển cấu trúc lập trình ứngdụng Nhà xuất Giáo dục Hà Nội 199 trang [7] Nguyễn Ngọc Cương, Nguyễn Đình Nghĩa, Đỗ Quốc Huy, trần nghi Phú Phạm Thành Công, 2011 Giáo trình Ngôn ngữ lập trình C/C++ Nhà xuất Thông Tin Và Truyền Thông Hà Nội 191 trang 78 PHỤ LỤC Code chương trình cho ESP8266: #include #include "EIoTCloudRestApiV1.0.h" #include #include "DHT.h" #ifdef DEBUG_PROG #define DEBUG_PRINTLN(x) Serial.println(x) #define DEBUG_PRINT(x) Serial.print(x) #else #define DEBUG_PRINTLN(x) #define DEBUG_PRINT(x) #endif EIoTCloudRestApi eiotcloud; // change those lines #define AP_USERNAME "wifi_xx" #define AP_PASSWORD "hoianhdi@2" #define INSTANCE_ID "57208a5fc943a03eab41a426" #define CONFIG_START #define CONFIG_VERSION "v01" #define REPORT_INTERVAL 60 // in sec struct StoreStruct { // This is for mere detection if they are your settings char version[4]; // The variables of your settings char token[41]; uint moduleId; //bool tokenOk; // valid token } storage = { CONFIG_VERSION, // token "1234567890123456789012345678901234567890", 79 //The default module - invalid module 0, //0 // not valid }; float oldTemp; float oldHum; DHT dht; String moduleId = ""; String parameterId1 = ""; String parameterId2 = ""; void setup() { Serial.begin(115200); DEBUG_PRINTLN("Start "); EEPROM.begin(512); loadConfig(); eiotcloud.begin(AP_USERNAME, AP_PASSWORD); // if first time get new token and register new module // here hapend Plug and play logic to add module to Cloud if (storage.moduleId == 0) { // get new token - alternarive is to manually create token and store it in EEPROM String token = eiotcloud.TokenNew(INSTANCE_ID); DEBUG_PRINT("Token: "); DEBUG_PRINTLN(token); eiotcloud.SetToken(token); // remember token token.toCharArray(storage.token, 41); // add new module and configure it moduleId = eiotcloud.ModuleNew(); DEBUG_PRINT("ModuleId: "); DEBUG_PRINTLN(moduleId); 80 storage.moduleId = moduleId.toInt(); // set module type bool modtyperet = eiotcloud.SetModulType(moduleId, "MT_GENERIC"); DEBUG_PRINT("SetModulType: "); DEBUG_PRINTLN(modtyperet); // set module name bool modname = eiotcloud.SetModulName(moduleId, "Humidity sensor"); DEBUG_PRINT("SetModulName: "); DEBUG_PRINTLN(modname); // add image settings parameter String parameterImgId = eiotcloud.NewModuleParameter(moduleId, "Settings.Icon1"); DEBUG_PRINT("parameterImgId: "); DEBUG_PRINTLN(parameterImgId); // set module image bool valueRet1 = eiotcloud.SetParameterValue(parameterImgId, "humidity.png"); DEBUG_PRINT("SetParameterValue: "); DEBUG_PRINTLN(valueRet1); // now add parameter to display temperature parameterId1 = eiotcloud.NewModuleParameter(moduleId, "Sensor.Parameter1"); DEBUG_PRINT("parameterId1: "); DEBUG_PRINTLN(parameterId1); //set parameter description bool valueRet2 = eiotcloud.SetParameterDescription(parameterId1, "Temperature"); DEBUG_PRINT("SetParameterDescription: "); DEBUG_PRINTLN(valueRet2); //set unit // see http://meyerweb.com/eric/tools/dencoder/ how to encode °C bool valueRet3 = eiotcloud.SetParameterUnit(parameterId1, "%C2%B0C"); 81 DEBUG_PRINT("SetParameterUnit: "); DEBUG_PRINTLN(valueRet3); //Set parameter LogToDatabase bool valueRet4 = eiotcloud.SetParameterLogToDatabase(parameterId1, true); DEBUG_PRINT("SetLogToDatabase: "); DEBUG_PRINTLN(valueRet4); //SetAvreageInterval bool valueRet5 = eiotcloud.SetParameterAverageInterval(parameterId1, "10"); DEBUG_PRINT("SetAvreageInterval: "); DEBUG_PRINTLN(valueRet5); // now add parameter to display humidity parameterId2 = eiotcloud.NewModuleParameter(moduleId, "Sensor.Parameter2"); DEBUG_PRINT("parameterId2: "); DEBUG_PRINTLN(parameterId2); //set parameter description bool valueRet6 = eiotcloud.SetParameterDescription(parameterId2, "Humidity"); DEBUG_PRINT("SetParameterDescription: "); DEBUG_PRINTLN(valueRet2); //set unit bool valueRet7 = eiotcloud.SetParameterUnit(parameterId2, "%"); DEBUG_PRINT("SetParameterUnit: "); DEBUG_PRINTLN(valueRet7); //Set parameter LogToDatabase bool valueRet8 = eiotcloud.SetParameterLogToDatabase(parameterId2, true); DEBUG_PRINT("SetLogToDatabase: "); DEBUG_PRINTLN(valueRet8); //SetAvreageInterval bool valueRet9 = eiotcloud.SetParameterAverageInterval(parameterId2, "10"); DEBUG_PRINT("SetAvreageInterval: "); DEBUG_PRINTLN(valueRet9); 82 // save configuration saveConfig(); } // if something went wrong, wiat here if (storage.moduleId == 0) delay(1); // read module ID from storage moduleId = String(storage.moduleId); // read token ID from storage eiotcloud.SetToken(storage.token); // read Sensor.Parameter1 ID from cloud parameterId1 = eiotcloud.GetModuleParameterByName(moduleId, "Sensor.Parameter1"); DEBUG_PRINT("parameterId1: "); DEBUG_PRINTLN(parameterId1); parameterId2 = eiotcloud.GetModuleParameterByName(moduleId, "Sensor.Parameter2"); DEBUG_PRINT("parameterId2: "); DEBUG_PRINTLN(parameterId2); Serial.println(); Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)"); dht.setup(2); // data pin oldTemp = -1; oldHum = -1; } void loop() { delay(dht.getMinimumSamplingPeriod()); float hum = dht.getHumidity(); float temp = dht.getTemperature(); Serial.print(dht.getStatusString()); Serial.print("\t"); 83 Serial.print(hum, 1); Serial.print("\t\t"); Serial.print(temp, 1); Serial.print("\t\t"); Serial.println(dht.toFahrenheit(temp), 1); if (temp != oldTemp || hum != oldHum) { //sendTeperature(temp); eiotcloud.SetParameterValues("[{\"Id\": \""+String(temp)+"\" },{\"Id\": \""+parameterId1+"\", \""+parameterId2+"\", \"Value\": \"Value\": \""+String(hum)+"\" }]"); oldTemp = temp; oldHum = hum; } int cnt = REPORT_INTERVAL; while(cnt ) delay(1000); } void loadConfig() { // To make sure there are settings, and they are YOURS! // If nothing is found it will use the default settings if (EEPROM.read(CONFIG_START + 0) == CONFIG_VERSION[0] && EEPROM.read(CONFIG_START + 1) == CONFIG_VERSION[1] && EEPROM.read(CONFIG_START + 2) == CONFIG_VERSION[2]) for (unsigned int t=0; t