0 前言

大家好!我叫乐创物联,我主要是做工业自动化方面和物联网方面的。了解熟悉工业自动化领域的,也开发过物联网相关的产品。我的初衷是做工业物联网的,但这个系统太过于庞大,后续也会自主去学习一下。所以就先做小的系统,例如构建一整套智能家居系统,从硬件到软件全系列。下面就开始这套智能家居系统是如何在物联网基础上构建。在这里你可以0开始,然后到1质变,仅仅需要一起跟我学乐创物联物联网架构的学习。

乐创物联物联网学习路线

回顾一下上节《乐创物联物联网架构之硬件层中间件Arduino数字量》,从Arduino数字量(数字 I/O、时间函数、串口收发函数),然后介绍Blink例子、按钮控制LED例子,最后讲解了按键消抖原理。本节就来讲感知层下硬件层中间件Arduino模拟量。感知层是物联网最基础的部分,就像人的五官一样去感受世界。

1 Arduino 模拟量

模拟 I/O

int analogRead(pin) 模拟IO口读函数,pin表示为0~5(Arduino Diecimila为0~5,Arduino nano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。

analogWrite(pin, value) - PWM 数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数,pin表示3, 5, 6, 9, 10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。

Arduino

2 模数转换功能

步骤:

1) 定义需要的模拟量输入引脚,Arduino UNO 为 A0~A5;

2) 读取对应的模拟量,10位精度,2的10次方,0~1023;

3) 把对应的模拟量进行比例变换,使用map()函数或者用其他函数;

4) 把最终数据显示到串口、液晶、数码管等设备上。

3 PWM脉宽调制

PWM是英文“Pulse Width Modulation”的缩写,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术手段,广泛应用于测量、通信、功率控制与变换等许多领域。PWM,频率不变(周期不变),脉冲高电平宽度可以调节,实际是调试做功时间(单位时间做功),从而达到调节电压、电流或者功率等参数。

PWM在一些情况下可以代替DAC(数模转换)功能。所以在Arduino里面使用函数analogWrite(pin, value) 写模拟量,Arduino的PWM是8位,换算数字量是0~255。PWM使用芯片内部自带的PWM发生器,只有主板上标有PWM标识的才能用。Arduino UNO的PWM引脚为3/5/6/9/10/11。

4 温度例子

该模块是基于热敏电阻(阻值随外界环境温度变化而变化)的工作原理,能够实时感知周边环境温度的变化,我们把数据送到 Arduino 的 analog IO,接来下我们只要经过简单的编程就能将传感器输出的数据转换为摄氏温度值,并加以显示,使用起来还是方便、有效的呢,借此广泛应用于园艺、家庭警报系统等装置中。与一般的温度传感器是一样的,都是 3 线封装,我们在使用时接好电源线后确定信号输入端就行了,因为模块输出的是模拟信号,我们要把信号输出端接到 Arduino 的模拟 IO上进行采样,这样才能正确读出温度值;热敏电阻之所以也能测量温度,就是因为它结合了 Steinhart-Hart Thermistor 方程,测试代码中的函数 double Thermister(int RawADC)就是该方程的体现。温馨提示:代码中有用到关于 Steinhart-Hart Thermistor 方程的应用。

请参阅http://en.wikipedia.org/wiki/Thermistor

#include

int val;

double Thermister(int RawADC) {

double Temp;

Temp = log(((10240000/RawADC) - 10000));

Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );

Temp = Temp - 273.15; // Convert Kelvin to Celcius

return Temp;

}

void setup() {

Serial.begin(9600);

}

void loop() {

val=analogRead(A0);

Serial.print(Thermister(val)); // display Fahrenheit

Serial.println("C");

delay(5000);

}

5 土壤传感器例子

用于土壤的湿度检测。可通过电位器调节土壤湿度的阀值,顺时针调节,控制的湿度会越大,逆时针越小;湿度低于设定值时,DO输出高电平,模块提示灯亮;湿度高于设定值时,DO输出低电平,模块提示灯灭。工作电压3.3V-5V。3V时,在空气中AO读取的值最大为695 , 浸泡在水里的 最小值245;5V时,在空气中AO读取的值最大为1023 ,浸泡在水里的最小值 245。

#define PIN_AO 0

#define PIN_DO 2

void setup() {

pinMode(PIN_AO, INPUT);

pinMode(PIN_DO, INPUT);

Serial.begin(9600);

}

void loop() {

Serial.print("AO=");

Serial.print(analogRead(PIN_AO));

Serial.print(", DO=");

Serial.println(digitalRead(PIN_DO));

delay(5000);

}

土壤传感器例子

6 PWM调LED亮度例子

const int analogInPin = A0;//模拟量输入

const int analogOutPin = 9;//PWM输出引脚

int sensorValue = 0;//电位计电压值

int outputValue = 0;//模拟量输出值(PWM)

void setup() {

// 串口初始化

Serial.begin(9600);

}

void loop() {

// 读模拟量值

sensorValue = analogRead(A0);

//变换数据空间

outputValue = map(sensorValue, 0, 1023, 0, 255);

//输出对应的PWM值

analogWrite(analogOutPin, outputValue);

//打印到串口

Serial.print("sensor=");

Serial.print(sensorValue);

Serial.print(" output=");

Serial.println(outputValue);

delay(2000);

}

PWM调LED亮度例子

7 结论

这些都是经过实践检验的,本来想等开专栏,放专栏里的,现在不挣钱,交个朋友!跟我一起入门物联网吧!

arduino 串口读取字符串_乐创物联物联网架构之硬件层中间件Arduino模拟量相关推荐

  1. arduino水温度传感器数字显示_乐创物联物联网架构之硬件层中间件Arduino模拟量...

    0 前言 大家好!我叫乐创物联,我主要是做工业自动化方面和物联网方面的.了解熟悉工业自动化领域的,也开发过物联网相关的产品.我的初衷是做工业物联网的,但这个系统太过于庞大,后续也会自主去学习一下.所以 ...

  2. Arduino 串口接受字符串操作

    对Arduino串口部分的使用,多少有点不太方便,虽然官方提供了调用的函数,但是使用不够灵活,如下就对Arduino串口实现字符串的操作做个总结: (1)自定义函数操作方式: /*使用自定函数,将字符 ...

  3. Arduino上传数据至贝壳物联并与FPGA进行交互

    本篇实现Arduino与FPGA交互,当然也没有什么新的协议,还是基于串口通讯,现在学一个串口通信基本上可以驱动大多数模块了,而且和各种单片机无缝数据交互,Arduino由于其强大的库函数支持,在实现 ...

  4. java从控制台读取字符串_从控制台读取Java字符串

    java从控制台读取字符串 Today we will look into different ways to read string from console in java. 今天,我们将研究从J ...

  5. 联通物联卡为什么没有网络_联通物联卡突然没有信号,试着用这几方法!

    原标题:联通物联卡突然没有信号,试着用这几方法! 如果一个企业正处于项目的紧要关头,设备的核心物联卡突然没有信号,对于公司来说是难以接受的.按理来说物联卡采用专属网络信道,没信号的情况很少出现,尤其是 ...

  6. hawk物联网组态工具_万德物联平台|智能供电整体解决方案之物联网在线组态软件...

    原标题:万德物联平台|智能供电整体解决方案之物联网在线组态软件 万德物联网在线组态软件是一款采用先进的实时动态渲染技术及实时数据处理引擎技术作为内核的通用人机可视化监控组态软件.软件提供易用的配置工具 ...

  7. 物联网卡设置_聆听物联物联网卡APN设置教程

    APN只有移动流量卡需要设置,电信基本不用设置 APN如何设置? 手机设置-网络设置-找到本卡-APN设置-新建APN 具体位置请自行查找 172开头移动卡APN参数: 设置-->更多的网络-- ...

  8. 计算机网络物联,物联网计算机网络安全及控制

    摘要:社会经济的快速发展促进了网络技术的进步,互联网技术开始被人们广泛应用到各个行业发展中,带动了各个行业的发展进步.而物联网技术则是在互联网技术快速发展下出现的一种技术形式,借助现代化的技术手段能够 ...

  9. linux串口 接收 字符串_非常好用的 Win10 串口调试助手

    完美适配高分屏. 解决大部分win32类软件在高分屏模糊问题. 1.自定义接收显示控件. 大量文本显示时不卡顿. 2.发送或接收可按 "字符串 ASCII"或"HEX十六 ...

最新文章

  1. Android性能优化之启动优化实战篇,最终入职阿里
  2. html基本标签结构
  3. local map at cambridge
  4. 渲染优化 lock unlock
  5. 个人认为不错的句子(part1)--机器学习是统计减去任何对模型和假设的检验
  6. 颜宁分享干货:给实验室博士的一些忠告
  7. wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏
  8. Calendar类 set方法 get方法 add方法
  9. 云图说|图解DGC:基于华为智能数据湖解决方案的一体化数据治理平台
  10. 多线程-AbstractQueuedSynchronizer(AQS)
  11. 虚拟机linux删除文件后未释放空间,【Linux命令】删除大文件后磁盘空间未释放问题...
  12. java计算机毕业设计企业物资管理系统源代码+数据库+系统+lw文档
  13. msg.obj与msg.what、this与super
  14. [万字长文] 图神经网络的解释性综述
  15. 项目 --- 《水晶报表》
  16. 区块链(Blockchain)简介
  17. 系统盘下system32下的文件说明
  18. 如何删除Chrome地址栏记录?
  19. adb shell 连接两个相同设备
  20. SWUST OJ 之 0594 Maximum Tape Utilization Ratio

热门文章

  1. 我提交的一个内核补丁—CFS的child-runs-first
  2. Dubbo的远程回调
  3. Redis面试常问-- Redis常用数据类型
  4. 设计模式--观察者模式--Java实现
  5. python--继承
  6. thinkphp结合U方法,点击验证码刷新
  7. $_SERVER['REQUEST_URI']和$_SERVER[HTTP_X_REWRITE_URL]的区别
  8. PHP中基本符号及使用方法
  9. Mysql和Hive之间通过Sqoop进行数据同步
  10. 日结问题解决思路和方式