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入门教程(二)基本传感器的使用相关推荐

  1. arduino入门教程书籍推荐,arduino从入门到精通

    今天给大家推荐的这本Arduino入门教程由国内知名创客教育和开源硬件供应商DFRobot出品,由15个基础的 Arduino项目组成,分别配合实例介绍了Arduino 的基本使用方法和各种扩展模块的 ...

  2. arduino入门教程系列一:初识arduino

    为了照顾新手小伙伴,DF创客社区开始陆续更新一些arduino系列基础教程,帮助大家更好地入门! 先从Arduino入门教程开始吧. Arduino是什么? Arduino是一个开放源码电子原型平台, ...

  3. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  4. arduino入门教程!保姆级细致教学!

    Arduino入门教程 前言 arduino作为全球知名的开源电子平台,它的诞生,为广大电子爱好者提供了一个大展拳脚的机会,可以以较为简单的编程能力制作出属于自己的项目,将许多有趣的想法通过编程和ar ...

  5. R语言七天入门教程二:认识变量与运算符

    R语言七天入门教程二:认识变量与运算符 一.什么是变量 1.变量 顾名思义,我们可以将变量理解为"可以改变的量",是计算机语言中能储存计算结果或能表示值的抽象概念.这里的值可以是数 ...

  6. (转)tensorflow入门教程(二十六)人脸识别(上)

    https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...

  7. Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输

    Android WebRTC 入门教程(一) – 使用相机 Android WebRTC 入门教程(二) – 模拟p2p本地视频传输 源码工程: https://github.com/LillteZh ...

  8. LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。

    LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接 前言: 阅读前,请确保你拥有以下条件: 你已经完成"显示API"的移植. 你已经实现了一 ...

  9. c语言类似于 n的标识符,C语言快速入门教程(二)

    C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要: 单词 + 语法! 将单词按照一定的语法拼凑起来就成 ...

最新文章

  1. ultraedit怎么配置java_【转】UltraEdit配置java环境
  2. HTML5 audio与video标签实现视频播放,音频播放
  3. java math.cos_Java Math类静态double cos(double d)示例
  4. (作者:无名`)svn提交代码到本地仓库
  5. Linux下C程序进程地址空间布局
  6. 2017.9.11 聪明的燕姿 失败总结
  7. C程序之修改Windows的控制台颜色(转载)
  8. html关闭小图标css,怎么在marquee标签里面设置一个关闭的图标_html/css_WEB-ITnose
  9. Eova项目嵌入前端页面介绍
  10. ipadmini1iOS9.3.5降级8.4.1教程
  11. 高电压技术-名词解释题
  12. 七年级上册计算机工作计划,七年级上册班主任工作计划
  13. cpu被锁频解除方法_CPU频率被锁定到800mhz怎么办?
  14. 彻底卸载Tomcat
  15. 【redis】8数据结构(5种基本+3种特殊)
  16. 基于分数傅里叶变换的汽车雷达通信一体化系统干扰抑制
  17. 那个时候我不小心建立了一个间谍应用
  18. Element-Ui组件 Radio 单选框 修改点击激活时的文本颜色,填充色和边框色
  19. parameterType是必须写的吗?
  20. 最新游戏陪玩源码V2.0升级版/商业版语音聊天系统源码

热门文章

  1. Mac m1 配置OpenCV (C++)
  2. xp系统哪个服务器好,哪个xp系统最稳定、最好?
  3. QT文本编辑器配色方案 深色主题
  4. s-function搭建变参数PMSM模型
  5. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)
  6. 自动转换15位身份证号码位18位
  7. Preisach模型
  8. win7 启动速度慢 IDE模式 解决办法
  9. Big Data Caching for Networking: Moving from Cloud to Edge 论文分享
  10. 【Mysql】MySQL修改用户host的方法整理