对传感器什么的感兴趣有一段时间了,入手了adiuno初级的配套零件,对着B站有模有样的学了起来。
一、本地回显

我买的是国产的Arduino uno板子,意大利的板子会贵些。先是安装Arduino IDE,就是板子的开发软件,再安装CH340G芯片USB的驱动,就可以对Arduino板写程序了,Arduino板上有许多供输入输出的引脚,还有一些5V、GED引脚。
     我测试了温湿度的程序,温湿度传感器用的是DHT11,这个也要下驱动“DHT_sensor_library-1.4.0”和“Adafruit_Sensor”,连上16*2的LCD显示屏也要下载驱动“LiquidCrystal_I2C”,编码,上传。程序可显示温湿度,当温度超过25度时,蜂鸣器(D7引脚)报警,
硬件连接方法:
1. 连接LCD: PCF8574T模块4pin(Gnd, Vcc, SDA i2c数据, SCL i2c时钟) 连接至Arduino接口 Gnd -> Gnd, Vcc -> Vcc, SDA -> A4, SDL -> A5
2. 连接YL-47 DHT11: Gnd -> Gnd, Vcc -> Vcc, Data-> D4

Arduino uno代码如下:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27,16,2);
DHT dht(4,DHT11);
void setup() {pinMode(7,OUTPUT);lcd.init();lcd.backlight();Serial.begin(9600);dht.begin(); //DHT开始工作
lcd.setCursor(0,0); // line 0, pos 0
lcd.print("Good lucky!");
lcd.setCursor(0,1);
lcd.print("Waiting...");
delay(1100);
}void loop() {// 两次检测之间,要等几秒钟,这个传感器有点慢。delay(2500);// 读温度或湿度要用250毫秒float h = dht.readHumidity();//读湿度float t = dht.readTemperature();//读温度,默认为摄氏度float f = dht.readTemperature(true);if (isnan(h) || isnan(t) || isnan(f)) {Serial.println("Failed to read from DHT sensor!");lcd.setCursor(0,0); // line 0, pos 0lcd.print("Time out error");lcd.setCursor(0,1); // line 0, pos 0lcd.print("               ");return;}Serial.print("Humidity: ");//湿度Serial.println(h);Serial.print("Temperature: ");//温度Serial.print(t);Serial.println(" ℃ ");lcd.setCursor(0,0); // line 0, pos 0lcd.print("Hum:");lcd.print(h);lcd.print(" %     ");lcd.setCursor(0,1); // line 1, pos 0lcd.print("Tem:");lcd.print(t);lcd.write(0xDF);lcd.print("C");delay(1000);if (t > 25) {tone(7,587);delay(1500);}else{noTone(7);}
}

本地的回显:

二、与中移onenet平台对接

中移ONENET是中国移动物联网开放平台是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,提供综合性的物联网解决方案,我用的是非常常用的HTTP协议接入的,平台还支持MQTT和自己独有的EDP协议等接入。

想要把温湿度显示到远端,就要加上ESP8266板子,ESP8266带WIFI模块,首先我是利用TCP调试助手,在局域网中实现温湿度显示,局域网手机APP我用的是nettorch,要保持手机APP和ESP8266同一网段即可。ESP8266代码如下:

include <ESP8266WiFi.h>//wifi密码及ssid
const char *ssid     = "HUAWEI-xxxx";
const char *password = "xxxxxxxx";
//目标服务器ip即端口号
const char *host = 192.168.3.14; //服务器手机局域网IP
const int tcpPort = 80;                 //Server服务端的端口号WiFiClient client;//tcpclient实例void setup() {//启动串口通信Serial.begin(9600);delay(10);//连接到WiFiWiFi.begin(ssid, password);//处理未连接异常while(WiFi.status() != WL_CONNECTED){delay(100);}
}void loop() {//处理未连接到服务器异常while(!client.connected()){if(!client.connect(host, tcpPort)){delay(500);}}//透传数据while (client.available())//读取到的数据转发到到串口{uint8_t c = client.read();Serial.write(c);}if (Serial.available())//串口读取到的转发到wifi,因为串口是一位一位的发送所以在这里缓存完再发送{size_t counti = Serial.available();uint8_t sbuf[counti];Serial.readBytes(sbuf, counti);client.write(sbuf, counti);}}

局域网测试好后,就要上云了,在ONENET注册,选择“HTTP”协议,再创建产品,创建产品时会产生Master-APIkey和设备ID,这个会在接入时用到。

ESP8266上需要修改如下,其他命令都一样。

const char *host = "api.heclouds.com"; //若无DNS,使用Server服务端的IP 183.230.40.33
const int tcpPort = 80;                 //Server服务端的端口号

Arduino uno上再加入如下代码:

String url = "/devices/664881066/datapoints?type=3";  //参数type=3表示用 简洁数据格式,664881066的设备ID
Serial.println(String("POST ")+url+" HTTP/1.1");                                                 //使用HTTP/1.1协议
Serial.println(String("api-key:")+"MwdhDyLRHHsLNpLI3gqN3Bi29EQ=");             //需改为自己的主密钥 即Master-APIkey
Serial.println(String("Host:")+"api.heclouds.com");
Serial.println("Connection:close");
Serial.println("Content-Length:29");//Serial.print("{\"datastreams\":[{\"id\":\"SoilHUM\",\"datapoints\":[{\"value\":");
//Serial.print(h);
//Serial.println("}]}]}");// delay(1000);
Serial.println("");
Serial.print("{\"TEM\":");
Serial.print(t);
Serial.print(",");
Serial.print("\"SoilHUM\":");
Serial.print(h);
Serial.println("}");

这样,就能在ONENET网站上或是ONENET的APP手机上查看家里的温湿度了:

我的全部家当,加了一个继电器模块,想控制LED小灯,需要数据的交互,可能HTTP协议就不行了,再琢磨吧。

借助onenet平台,温湿度远端采集相关推荐

  1. SIM800C连接OneNet平台HTTP协议上传GPS数据

    1. 前言 科技进步不断推动新产品的出现,越来越多的电子产品开始着力解决社会焦点问题,随着城市发展以及人口流动性的增加,儿童户外被拐,老人外出走丢,交通工具被盗和大型物件丢失等问题变样严重起来,因此, ...

  2. 基于STM32与OneNet平台的智能家居系统设计(代码开源含自制APP代码)

     前言:本文为手把手教学的基础物联网开发设计,项目包含对下位机(MCU对外设数据读取与控制)和上位机(包含服务平台和APP端)的设计.下位机选取STM32作为MCU,外设有LED灯和DHT11温湿度传 ...

  3. NBIOT模组M5310接入OneNET平台

    一.OneNET平台介绍 中国移动物联网开放平台OneNET是由中国移动打造的PaaS物联网开放平台.平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件.智能家居产品提供完 ...

  4. 中国移动M5310 nbiot开发板连接onenet平台全过程

    中国移动M5310 nbiot开发板连接onenet平台全过程 详细介绍一下中移m5310 nbiot开发板对接onenet云平台的全过程,简单实现了温湿度的采集,及数据上报与可视化显示. 一.M53 ...

  5. 微信小程序获取OneNet数据显示温湿度

    微信小程序获取OneNet数据显示温湿度 一.OneNet平台 ​ 1.我这里的设备是通过MQTT协议连接到OneNet平台的 ​ 2.微信小程序获取OneNet数据需要得到产品的api-key.设备 ...

  6. NB-IoT与OneNET平台HTTP通信

    1.硬件条件 NB-IoT模块,这里选用BC35-G模块,移动物联网卡 STM32开发板,能进行串口通信 OneNET平台账号,需在平台预先创建相应的设备 2.NB-IoT相关知识 NB-IoT作为5 ...

  7. ESP01 连接OneNet平台

    ESP01 连接OneNet平台 ESP01 连接OneNet平台 1.硬件准备 2.ESP8266 Arudino环境搭建 3. ESP8266采集DHT11数据 4.OneNet平台搭建 5.ES ...

  8. stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭

    stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...

  9. nodemcu c语言开发,nodemcu连接到中移onenet平台

    手上有一块nodemcu,这货可以用lua编译脚本语言编程,也可以用arduinoIDE来编辑,用C语言来开发,甚至可以刷入micropython系统,用python语言开发.功能多而且就价格便宜,是 ...

最新文章

  1. Leetcode113路径总和2
  2. NTU 课程笔记:self-supervised learning
  3. 制作openstack Centos镜像 -- Example: CentOS image
  4. 构建LAMP平台(一)(软件版本:httpd-2.4.16,php-5.6.12,mysql-5.6.26)
  5. Android UI设计系统-android selector 开始自定义样式
  6. RANSAC算法在图像拼接上的应用的实现
  7. cad怎么设置线的粗细_CAD软件中怎么设置CAD线宽?
  8. 序列化反序列化--Xstream的使用
  9. Java学习笔记——JDBC读取properties属性文件
  10. JZOJ 3055. 【NOIP2012模拟10.27】比赛
  11. l360废墨收集垫更换视频_爱普生l353废墨收集垫在哪个位置
  12. vue 登陆成功后携带不了后台传来的 set-cookie 并携带请求错误处理
  13. 如何评价『黑客与画家』
  14. python画风景图_风景侠
  15. Java过滤字符串中的手机号+提取字符串中的手机号+验证是否存在手机号
  16. StringUtils 工具
  17. sudo apt-get install build-essential的作用
  18. Windows XP 源代码在线泄露
  19. 应用层的HTTP和HTTPS协议
  20. jQuery元素列表遍历方法

热门文章

  1. 【ROS】官方tf教程turtle_tf2源码原理解读
  2. 教你玩转自己的机械键盘
  3. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(一)——C语言/单片机
  4. Android智能电视应用程序开发浅谈(三)
  5. 春学期C语言程序设计,2019年春季学期《C语言程序设计II》课程总结
  6. jQuery----经典表单应用
  7. ec,easyclick常用函数大全,集合1
  8. 实验四 VLAN 实验——实现同一个vlan组下PC互通,不同vlan组下的不能互通
  9. 关于tableau里面展示部分时间段的问题简述
  10. html导航跳转,css实现导航切换的实例代码