ARDUINO入门教程(二)基本传感器的使用
ARDUINO入门教程(二)基本传感器的使用
- 温湿度(HTU21DF)、土壤湿度(Capacitive)、大气压强(GY-68 BMP180)、光传感器以及RFID的读取
- 几种传感器
- 基本传感器的使用(以土壤湿度为例)
- rfid
- 温湿度&压力传感器
- rfid&温湿度
- 图片
- 开启usb--arduino功能
- 接线方式
- 相应库文件的下载和安装方法
- 代码
- 串口观察数据
温湿度(HTU21DF)、土壤湿度(Capacitive)、大气压强(GY-68 BMP180)、光传感器以及RFID的读取
这里是认知学习的第二堂课,主要内容是使用不同的传感器进行一些数据的采集,有关于arduino IDE的安装请参照第一堂课的内容–ARDUINO 入门教程(一)简介.。感谢博主 @qq_2414466154.。
几种传感器
温湿度(HTU21DF)
土壤湿度(Capacitive)
数字压强(GY-68 BMP180)
光传感器
RFID(rc522)
基本传感器的使用(以土壤湿度为例)
const int AOUT = A0; //定义一个信号输入接口,将传感器上的AOUT接到A0
int inputValue = 0; void setup() {
pinMode(AOUT, INPUT);
digitalWrite(AOUT,LOW);
Serial.begin(9600);}void loop() {
inputValue = analogRead(AOUT);
Serial.println(inputValue);
delay(500);
}
rfid
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
/*#include <MAX44009.h>
#include "Adafruit_HTU21DF.h"
#include <Adafruit_BMP085.h> //头文件Adafruit_BMP085 bmp;*/
#define SS_PIN 4
#define RST_PIN 9 //定义引脚
/*MAX44009 light;Adafruit_HTU21DF htu = Adafruit_HTU21DF();*/MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
/*const int analogInPin = A0;*/
long now;
byte nuidPICC[4];
int flag=1;
String num="";
int sensorValue = 0;
void setup() { Serial.begin(115200);/*Serial.println("HTU21D-F test");if (!htu.begin()) {Serial.println("Couldn't find sensor!");while (1);}*/
/*gy-40*/Wire.begin(); delay(500);/* if(light.begin()){Serial.println("Could not find a valid MAX44009 sensor, check wiring!");while(1);}*/
/*BMP085*//* if (!bmp.begin()) {Serial.println("Could not find a valid BMP085 sensor, check wiring!");while (1) {}}*/SPI.begin(); // Init SPI busrfid.PCD_Init(); // Init MFRC522 for (byte i = 0; i < 6; i++) {key.keyByte[i] = 0xFF;Serial.print("1");}}void loop() {
/*if(millis()-now>2000){flag++;now=millis();switch(flag){case 1:num="{\"params\":{\"Temp\":"; //温度num+=htu.readTemperature();num+="}}";Serial.println(num);num="";num="{\"params\":{\"Humidity\":"; //湿度num+=htu.readHumidity();num+="}}";Serial.println(num);num="";break;case 2:num="{\"params\":{\"Light\":"; //光强num+=light.get_lux();num+="}}";Serial.println(num);num="";break;case 3:num="{\"params\":{\"Pressure\":"; //气压num+=bmp.readPressure();num+="}}";Serial.println(num);num="";break;case 4:sensorValue = analogRead(analogInPin); //土壤湿度num="{\"params\":{\"Soil\":";num+=sensorValue;num+="}}";Serial.println(num);num="";break;default: flag=0;break;}}*/if ( ! rfid.PICC_IsNewCardPresent())return;if ( ! rfid.PICC_ReadCardSerial())return;printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();rfid.PICC_HaltA();rfid.PCD_StopCrypto1();
}void printHex(byte *buffer, byte bufferSize) {num="{\"params\":{\"Rfid\":\""; //rfidfor (byte i = 0; i < bufferSize; i++) {num+=(String)buffer[i];//Serial.print(buffer[i], HEX);}num+="\"}}";Serial.print(num);num="";
}
温湿度&压力传感器
/*#include <SPI.h>
#include <MFRC522.h> */
#include <Wire.h>
/*#include <MAX44009.h> */
#include "Adafruit_HTU21DF.h"
#include <Adafruit_BMP085.h> //头文件Adafruit_BMP085 bmp;
/*#define SS_PIN 4
#define RST_PIN 9 //定义引脚
MAX44009 light;*/Adafruit_HTU21DF htu = Adafruit_HTU21DF();/*MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
const int analogInPin = A0;*/
long now;
byte nuidPICC[4];
int flag=1;
String num="";
int sensorValue = 0;
void setup() { Serial.begin(115200);Serial.println("HTU21D-F test");if (!htu.begin()) {Serial.println("Couldn't find sensor!");while (1);}
/*gy-40*/Wire.begin(); delay(500);/* if(light.begin()){Serial.println("Could not find a valid MAX44009 sensor, check wiring!");while(1);}*/
/*BMP085*/if (!bmp.begin()) {Serial.println("Could not find a valid BMP085 sensor, check wiring!");while (1) {}}/* SPI.begin(); // Init SPI busrfid.PCD_Init(); // Init MFRC522 for (byte i = 0; i < 6; i++) {key.keyByte[i] = 0xFF;Serial.print("1");}*/}void loop() {
if(millis()-now>2000){flag++;now=millis();switch(flag){case 1:num="{\"params\":{\"Temp\":"; //温度num+=htu.readTemperature();num+="}}";Serial.println(num);num="";num="{\"params\":{\"Humidity\":"; //湿度num+=htu.readHumidity();num+="}}";Serial.println(num);num="";break;/* case 2:num="{\"params\":{\"Light\":"; //光强num+=light.get_lux();num+="}}";Serial.println(num);num="";break;*/case 2:num="{\"params\":{\"Pressure\":"; //气压num+=bmp.readPressure();num+="}}";Serial.println(num);num="";break;/* case 4:sensorValue = analogRead(analogInPin); //土壤湿度num="{\"params\":{\"Soil\":";num+=sensorValue;num+="}}";Serial.println(num);num="";break;*/default: flag=0;break;}}/* if ( ! rfid.PICC_IsNewCardPresent())return;if ( ! rfid.PICC_ReadCardSerial())return;printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();rfid.PICC_HaltA();rfid.PCD_StopCrypto1();
} void printHex(byte *buffer, byte bufferSize) {num="{\"params\":{\"Rfid\":\""; //rfidfor (byte i = 0; i < bufferSize; i++) {num+=(String)buffer[i];//Serial.print(buffer[i], HEX);}num+="\"}}";Serial.print(num);num=""*/;
}
rfid&温湿度
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
/*#include <MAX44009.h> */
#include "Adafruit_HTU21DF.h"
/*#include <Adafruit_BMP085.h> //头文件Adafruit_BMP085 bmp;*/
#define SS_PIN 4
#define RST_PIN 9 //定义引脚
/*MAX44009 light;*/Adafruit_HTU21DF htu = Adafruit_HTU21DF();MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
/*const int analogInPin = A0;*/
long now;
byte nuidPICC[4];
int flag=0;
String num="";
int sensorValue = 0;
void setup() { Serial.begin(115200);/*Serial.println("HTU21D-F test");if (!htu.begin()) {Serial.println("Couldn't find sensor!");while (1);}*/
/*gy-40Wire.begin(); delay(500);if(light.begin()){Serial.println("Could not find a valid MAX44009 sensor, check wiring!");while(1);} */
/*BMP085*//* if (!bmp.begin()) {Serial.println("Could not find a valid BMP085 sensor, check wiring!");while (1) {}}*/SPI.begin(); // Init SPI busrfid.PCD_Init(); // Init MFRC522 for (byte i = 0; i < 6; i++) {key.keyByte[i] = 0xFF;Serial.print("1");}}void loop() {
if(millis()-now>2000){flag++;now=millis();
/* switch(flag){case 1:*/num="{\"params\":{\"Temp\":"; //温度num+=htu.readTemperature();num+="}}";Serial.println(num);num="";num="{\"params\":{\"Humidity\":"; //湿度num+=htu.readHumidity();num+="}}";Serial.println(num);num="";
/* break;case 2:num="{\"params\":{\"Light\":"; //光强num+=light.get_lux();num+="}}";Serial.println(num);num="";break;case 3:num="{\"params\":{\"Pressure\":"; //气压num+=bmp.readPressure();num+="}}";Serial.println(num);num="";break;case 4:sensorValue = analogRead(analogInPin); //土壤湿度num="{\"params\":{\"Soil\":";num+=sensorValue;num+="}}";Serial.println(num);num="";break;default: break;}*/flag=0;}if ( ! rfid.PICC_IsNewCardPresent())return;if ( ! rfid.PICC_ReadCardSerial())return;printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();rfid.PICC_HaltA();rfid.PCD_StopCrypto1();
}void printHex(byte *buffer, byte bufferSize) {num="{\"params\":{\"Rfid\":\""; //rfidfor (byte i = 0; i < bufferSize; i++) {num+=(String)buffer[i];Serial.print(buffer[i], HEX);}num+="\"}}";Serial.print(num);num="";
}
图片
开启usb–arduino功能
这里只有3和4拨到ON其余拨到数字一端
接线方式
注意:所有传感器的vcc均使用3.3v!
rc522 | arduino |
---|---|
sck | 52 |
sda | 4 |
mosi | 51 |
miso | 50 |
rst | 9 |
各种传感器 | 扩展版 |
---|---|
VCC | 3.3v |
GND | GND |
AOUT | A0 |
SDA | SDA |
SCA | SCA |
接线时注意接口插实,以免接触不良;
接线时注意尽量避免杜邦线的交错缠绕,为出错修后改做准备;
相应库文件的下载和安装方法
打开arduino IDE编译环境
点击 工具 下 管理库
在搜索框输入传感器型号,在这里直接输入头文件名称即可;
选择版本点击 安装
代码
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <MAX44009.h>
#include "Adafruit_HTU21DF.h"
#include <Adafruit_BMP085.h> //头文件Adafruit_BMP085 bmp;
#define SS_PIN 4
#define RST_PIN 9 //定义引脚
MAX44009 light;Adafruit_HTU21DF htu = Adafruit_HTU21DF();MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
const int analogInPin = A0;
long now;
byte nuidPICC[4];
int flag=1;
String num="";
int sensorValue = 0;
void setup() { Serial.begin(115200);Serial.println("HTU21D-F test");if (!htu.begin()) {Serial.println("Couldn't find sensor!");while (1);}
/*gy-40*/Wire.begin(); delay(500);if(light.begin()){Serial.println("Could not find a valid MAX44009 sensor, check wiring!");while(1);}
/*BMP085*/if (!bmp.begin()) {Serial.println("Could not find a valid BMP085 sensor, check wiring!");while (1) {}}SPI.begin(); // Init SPI busrfid.PCD_Init(); // Init MFRC522 for (byte i = 0; i < 6; i++) {key.keyByte[i] = 0xFF;Serial.print("1");}}void loop() {
if(millis()-now>2000){flag++;now=millis();switch(flag){case 1:num="{\"params\":{\"Temp\":"; //温度num+=htu.readTemperature();num+="}}";Serial.println(num);num="";num="{\"params\":{\"Humidity\":"; //湿度num+=htu.readHumidity();num+="}}";Serial.println(num);num="";break;case 2:num="{\"params\":{\"Light\":"; //光强num+=light.get_lux();num+="}}";Serial.println(num);num="";break;case 3:num="{\"params\":{\"Pressure\":"; //气压num+=bmp.readPressure();num+="}}";Serial.println(num);num="";break;case 4:sensorValue = analogRead(analogInPin); //土壤湿度num="{\"params\":{\"Soil\":";num+=sensorValue;num+="}}";Serial.println(num);num="";break;default: flag=0;break;}}if ( ! rfid.PICC_IsNewCardPresent())return;if ( ! rfid.PICC_ReadCardSerial())return;printHex(rfid.uid.uidByte, rfid.uid.size);Serial.println();rfid.PICC_HaltA();rfid.PCD_StopCrypto1();
}void printHex(byte *buffer, byte bufferSize) {num="{\"params\":{\"Rfid\":\""; //rfidfor (byte i = 0; i < bufferSize; i++) {num+=(String)buffer[i];//Serial.print(buffer[i], HEX);}num+="\"}}";Serial.print(num);num="";
}
串口观察数据
波特率设置为115200
ARDUINO入门教程(二)基本传感器的使用相关推荐
- arduino入门教程书籍推荐,arduino从入门到精通
今天给大家推荐的这本Arduino入门教程由国内知名创客教育和开源硬件供应商DFRobot出品,由15个基础的 Arduino项目组成,分别配合实例介绍了Arduino 的基本使用方法和各种扩展模块的 ...
- arduino入门教程系列一:初识arduino
为了照顾新手小伙伴,DF创客社区开始陆续更新一些arduino系列基础教程,帮助大家更好地入门! 先从Arduino入门教程开始吧. Arduino是什么? Arduino是一个开放源码电子原型平台, ...
- python elasticsearch 入门教程(二) ---全文搜索
python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...
- arduino入门教程!保姆级细致教学!
Arduino入门教程 前言 arduino作为全球知名的开源电子平台,它的诞生,为广大电子爱好者提供了一个大展拳脚的机会,可以以较为简单的编程能力制作出属于自己的项目,将许多有趣的想法通过编程和ar ...
- R语言七天入门教程二:认识变量与运算符
R语言七天入门教程二:认识变量与运算符 一.什么是变量 1.变量 顾名思义,我们可以将变量理解为"可以改变的量",是计算机语言中能储存计算结果或能表示值的抽象概念.这里的值可以是数 ...
- (转)tensorflow入门教程(二十六)人脸识别(上)
https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...
- Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输
Android WebRTC 入门教程(一) – 使用相机 Android WebRTC 入门教程(二) – 模拟p2p本地视频传输 源码工程: https://github.com/LillteZh ...
- LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。
LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接 前言: 阅读前,请确保你拥有以下条件: 你已经完成"显示API"的移植. 你已经实现了一 ...
- c语言类似于 n的标识符,C语言快速入门教程(二)
C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要: 单词 + 语法! 将单词按照一定的语法拼凑起来就成 ...
最新文章
- ultraedit怎么配置java_【转】UltraEdit配置java环境
- HTML5 audio与video标签实现视频播放,音频播放
- java math.cos_Java Math类静态double cos(double d)示例
- (作者:无名`)svn提交代码到本地仓库
- Linux下C程序进程地址空间布局
- 2017.9.11 聪明的燕姿 失败总结
- C程序之修改Windows的控制台颜色(转载)
- html关闭小图标css,怎么在marquee标签里面设置一个关闭的图标_html/css_WEB-ITnose
- Eova项目嵌入前端页面介绍
- ipadmini1iOS9.3.5降级8.4.1教程
- 高电压技术-名词解释题
- 七年级上册计算机工作计划,七年级上册班主任工作计划
- cpu被锁频解除方法_CPU频率被锁定到800mhz怎么办?
- 彻底卸载Tomcat
- 【redis】8数据结构(5种基本+3种特殊)
- 基于分数傅里叶变换的汽车雷达通信一体化系统干扰抑制
- 那个时候我不小心建立了一个间谍应用
- Element-Ui组件 Radio 单选框 修改点击激活时的文本颜色,填充色和边框色
- parameterType是必须写的吗?
- 最新游戏陪玩源码V2.0升级版/商业版语音聊天系统源码