天天看点

【arduino】(1)介绍、lora和温度传感器的连接1 arduino2 结构案例

(持续更新中)

1 arduino

arduino较为简单。其是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于爱好者、艺术家、设计师和对于“互动”有兴趣的朋友们。

通俗的讲:arduino就是主要以以AVR单片机为核心控制器的单片机应用开发板(当然也有其他核心的例如STM32版本的,但不是官方的,还有intel的伽利略),Arduino开发人员开发了简单的函数,还有许多应用库,简洁的IDE(集成开发环境)等等,能够便捷的和加速传感器、压力传感器、温湿度传感器、震动传感器、噪音传感器等组合。

先下载 Arduino IDE 1.8.18 Arduino IDE下载(9月15日更新到2.0)-Arduino爱好者 - Powered by Discuz!

常用函数参考:https://wiki.arduino.cn/?file=home-%E9%A6%96%E9%A1%B5

图形化编程软件:ArduBlock、啃萝卜

2 结构案例

// 给13号引脚连接的设备设置一个别名“led”
int led = 13;

// 在板子启动或者复位重启后, setup部分的程序只会运行一次
void setup(){
  pinMode(led, OUTPUT);   // 将“led”引脚设置为输出状态
}

// setup部分程序运行完后,loop部分的程序会不断重复运行
void loop() 
{
  digitalWrite(led, HIGH);   // 点亮LED
  delay(5000);               // 等待五秒钟
  digitalWrite(led, LOW);    // 通过将引脚电平拉低,关闭LED
  delay(5000);               // 等待五秒钟
           

2.1 (数字)按键控制灯亮灭

// 通过2号引脚连接的按键,控制13号引脚连接的LED

// 设置各引脚别名
const int buttonPin = 2;     // 连接按键的引脚
const int ledPin =  13;      // 连接LED的引脚

// 变量定义
int buttonState = 0;         // 存储按键状态的变量

void setup() {
  pinMode(ledPin, OUTPUT);     // 初始化LED引脚为输出状态    
  pinMode(buttonPin, INPUT);   // 初始化按键引脚为输入状态 
}

void loop(){
  // 读取按键状态并存储在变量中
  buttonState = digitalRead(buttonPin);

  // 检查按键是否被按下
  // 如果按键按下,那buttonState应该为高电平
  if (buttonState == HIGH) {     
    digitalWrite(ledPin, HIGH);  // 点亮LED
  } 
  else {
    digitalWrite(ledPin, LOW);    // 熄灭LED
  }
}
           

2.2 温度传感器DS18B20+lora模块

DS18B20 有TO 92、SOIC 及CSP 封装。

其中VDD 为外接供电电源输入端(5V),GND 为公共地(GND),DQ为数字信号输出端(3);

先引入相关的库, <OneWire.h><DallasTemperature.h>

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3  //数据总线连接在IO3
OneWire oneWire(ONE_WIRE_BUS); //声明
DallasTemperature sensors(&oneWire); //声明

void setup(void) //初始化总线
{
  Serial.begin(9600);
  Serial.println("Initialization succeeded");
  sensors.begin();
  digitalWrite(3, HIGH); 
}

void loop(void)
{
  Serial.print("Initiate stem flow data transfer");
  sensors.requestTemperatures();
  Serial.println("Stem flow data conversion is complete");
  
  Serial.print("The current stem flow is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  
  delay(3000);
}

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  sensors.begin();
}

void loop(void)
{
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures();
  Serial.println("DONE");

  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  
  delay(500);
}
           
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3  //数据总线连接在IO3
OneWire oneWire(ONE_WIRE_BUS); //声明
DallasTemperature sensors(&oneWire); //声明
 
void setup() {
  Serial.begin(9600);
  pinMode(3, INPUT);
  digitalWrite(3, HIGH); 
  sensors.begin();
}
 
void loop() {
  sensors.requestTemperatures();
  Serial.print(sensors.getTempCByIndex(0)); 
  unsigned char tempers[10];
  tempers[0]=0x10;
  tempers[1]=0x00;
  tempers[2]=0x10;
  tempers[3]=(unsigned char)(sensors.getTempCByIndex(0));
  tempers[4]=(sensors.getTempCByIndex(0)-tempers[3])*100;
  Serial.write(tempers,5); 
  delay(3000);
  
}

 因为我没有用lora的定向传输,直接用了透明传输,所以没有用到temper1.2等相关知识。 
           

继续阅读