风筝
发表于: 2022-4-7 10:38:27 | 显示全部楼层

在本篇文章中,我们主要学习适用于Arduino开发板的Grove初学者套件(Grove Beginner Kit)。该套件带有10个传感器模块,因此您可以据此制作10个项目。Grove初学者套件的优势在于,您不需要任何面包板,既不需要焊接,也不需要任何外部连线。该套件没有带Arduino开发板,而是使用的是一款Arduino兼容板 - Seeeduino Lotus。


该套件对Arduino初学者非常有用,因为您只需要专注于编码和Arduino学习。您可以从Seeed Studio官方网站购买此套件。


该套件包含很多有用的模块,如LED、蜂鸣器、按钮和电位器。同时它还具有光传感器、声音传感器、DHT11温湿度传感器、加速度计和气压传感器等传感器。我们将使用Seeeduino Lotus开发板连接所有这些传感器和模块,并完成Arduino基本编程。


适用于Arduino的Grove初学者套件里面包含哪些?

Arduino Grove初学者套件包含10个传感器和模块。它还有一个基于ATmega328微控制器的电路板,称为Seeeduino Lotus开发板,同时与Arduino兼容。您可以使用Arduino IDE对该开发板进行编程。以下是传感器/模块的列表,并简要介绍了它们。

Grove-Beginner-Kit-Arduino.jpg


序号
名称
简介
1
LED 简易LED模块
2
蜂鸣器(Buzzer) 压电式蜂鸣器
3
0.96寸OLED显示屏 128×64 点分辨率紧凑型显示屏
4
按键(Button) 用于人机输入界面的按钮
5
旋转电位器 用于人机输入接口的旋钮
6
光传感器 检测周围的光强度
7
声音传感器 检测周围的声音强度
8
温湿度传感器 检测周围温度和湿度值
9
气压传感器 检测周围大气压力
10
3轴加速度计 检测物体加速度
11
Seeeduino Lotus兼容Arduino的开发板,附带Grove 端口

默认的PCB连接

传感器/模块和Seeeduino Lotus开发板之间有一个默认的PCB连接。所有模块都已通过PCB走线Seeeduino开发板。您不需要任何Grove电缆即可连接。当然,您也可以将模块取出并使用 Grove电缆连接模块。

模块名称
接口形式
引脚号/地址
LED模块
数字
D4
蜂鸣器
数字
D5
0.96寸OLED显示屏
I2C
I2C, 0x78(默认)
按键
数字
D6
旋转电位器
模拟
A0
光传感器
模拟
A6
声音传感器
模拟
A2
温湿度传感器
数字
D3
气压传感器
I2C
I2C, 0x77(默认) / 0x76(可选)
3轴加速度计
I2C
I2C,0x19(默认)

在本文中,我们将向您展示如何使用Grove电缆将模块连接到Seeeduino开发板。


如何开始使用 Arduino IDE?

安装Arduino IDE

Arduino IDE是Arduino的集成开发环境,用于单片机软件的编程、下载、测试等。


首先,您需要从以下链接下载并安装适用于您所需操作系统的 Arduino IDE:下载 Arduino IDE


安装USB驱动程序

Arduino通过USB电缆连接到PC。USB驱动程序取决于您的Arduino上使用的USB芯片的型号。以Seeeduino Lotus为例,下载CP2102 USB驱动并安装。


驱动安装完成后,我们使用micro-USB数据线将其连接到计算机。。


启动和设置Arduino IDE

1.  在您的计算机上打开Arduino IDE。

2.  点击Tools -> Board选择正确的开发板型号。选择 Arduino/Genuino Uno 作为开发板。

3.  点击Tools -> Port选择正确的端口

4.  新建一个Arduino文件,命名为Hello.ino,然后将以下代码复制进去

  1. void setup() {
  2.   Serial.begin(9600); // initializes the serial port with a baud rate of 9600
  3. }
  4. void loop() {
  5.   Serial.println("hello, world"); // prints a string to a serial port
  6.   delay(1000); //delay of 1 second
  7. }
复制代码

5.  在Arduino IDE的左上角,有两个按钮,验证和上传。首先,按下验证按钮(✓)进行编译。编译成功后,按上传按钮(→)。

6.  导航到Tools -> Serial Monitor,或者点击右上角的串口监视器(放大镜符号),就可以看到程序运行结果:

print.png


第1课:闪烁LED

Arduino Grove初学者套件的第一课是LED闪烁。在这个项目中,我们将在1秒间隔后重复点亮和熄灭LED灯。Seeeduino是控制单元,LED模块是输出单元,输出信号是数字信号。


这部分只需要LED模块和Seeeduino Lotus。

LED.jpg


LED模块和Seeeduino之间已经通过PCB邮票空孔默认连接。或者您也可以使用Grove电缆将Seeeduino连接到LED。LED连接到Seeeduino Lotus的数字引脚D4。


现在复制以下代码并将其上传到Seeeduino Lotus开发板。

  1. int ledPin = 4;

  2. void setup()
  3. {
  4.   pinMode(ledPin, OUTPUT);
  5. }

  6. void loop()
  7. {
  8.   digitalWrite(ledPin, HIGH);
  9.   delay(1000);
  10.   digitalWrite(ledPin, LOW);
  11.   delay(1000);
  12. }
复制代码

LED模块将亮1秒,灭1秒。您可以旋转LED附近的电位器来调节LED亮度。

Grove-LED-Blink.jpg


第2课:使用按键控制LED

在本课中,我们将使用按键控制LED灯的开和关状态。我们将在这个项目中使用Seeeduino Lotus、Grove LED和Grove按键模块。

Button.jpg


PCB邮票孔已经有默认连接。但您也可以使用Grove电缆将Grove LED连接到Seeeduino Lotus的数字接口 D4。将Grove按键模块连接到数字接口D6。


现在复制以下代码并将其上传到Seeeduino Lotus开发板。

  1. const int buttonPin = 6; // the number of the pushbutton pin
  2. const int ledPin = 4; // the number of the LED pin
  3. int buttonState = 0; // variable for reading the pushbutton statuS

  4. void setup()
  5. {
  6.   pinMode(ledPin, OUTPUT);    // initialize the LED pin as an output:
  7.   pinMode(buttonPin, INPUT);    // initialize the pushbutton pin as an input:
  8. }
  9. void loop()
  10. {
  11.   buttonState = digitalRead(buttonPin);  // read the state of the pushbutton value:
  12.   if (buttonState == HIGH) // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  13.   {
  14.     digitalWrite(ledPin, HIGH);  // turn LED on:
  15.   }
  16.   else
  17.   {
  18.     digitalWrite(ledPin, LOW);    // turn LED off:
  19.   }
  20. }
复制代码

按下按键将点亮LED模块。松开按键将熄灭LED灯。

LED-Press-Button.jpg


第3课:控制LED灯闪烁的频率

在本节课中,我们将使用电位器的模拟信号来控制LED灯的闪烁频率。我们将使用Seeeduino Lotus、Grove LED和Grove旋转电位器模块。

rotary.jpg

PCB邮票孔已经有默认连接。但您也可以使用Grove电缆将LED连接到Seeeduino Lotus的数字接口D4,并使用Grove电缆将Grove旋转电位器连接到模拟信号接口A0。


现在复制以下代码并将其上传到Seeeduino Lotus开发板。

  1. int rotaryPin = A0;       // select the input pin for the rotary
  2. int ledPin = 4;           // select the pin for the LED
  3. int rotaryValue = 0;      // variable to store the value coming from the rotary

  4. void setup()
  5. {
  6.   pinMode(ledPin, OUTPUT);    // declare the ledPin as an OUTPUT:
  7. }

  8. void loop()
  9. {
  10.   rotaryValue = analogRead(rotaryPin);  // read the value from the sensor:
  11.   digitalWrite(ledPin, HIGH);           // turn the ledPin on
  12.   delay(rotaryValue);                   // stop the program for <sensorValue> milliseconds:
  13.   digitalWrite(ledPin, LOW);            // turn the ledPin off:
  14.   delay(rotaryValue);                   // stop the program for for <sensorValue> milliseconds:
  15. }
复制代码

转动电位器将改变LED灯闪烁的频率。

Grove-Beginner-Kit-Arduino-LED-Flickring.jpg

跳转到指定楼层
风筝
发表于: 2022-4-7 11:03:34 | 显示全部楼层

第4课:蜂鸣器

Arduino Grove初学者套件中也有蜂鸣器模块。和LED模块一样,蜂鸣器也是一个输出模块,它不是点亮,而是发出哔哔声。这可以用于许多项目中以用于指示目的。在这个实验中,我们将使用蜂鸣器发出声音!


我们在这个项目中只使用了Seeeduino Lotus开发板和Grove蜂鸣器模块。

蜂鸣器

蜂鸣器


PCB邮票孔已经有默认连接。但您也可以使用Grove电缆将Grove蜂鸣器模块连接到Seeeduino Lotus开发板的数字接口D5。


现在复制以下代码并将其上传到Seeeduino Lotus开发板中。

  1. int BuzzerPin = 5;

  2. void setup() {
  3.   pinMode(BuzzerPin, OUTPUT);
  4. }

  5. void loop() {
  6.   analogWrite(BuzzerPin, 128);
  7.   delay(1000);
  8.   analogWrite(BuzzerPin, 0);
  9.   delay(0);
  10. }
复制代码

上传代码后,蜂鸣器会发出哔哔声。


以下是另一个示例,我们可以使用电位器来控制蜂鸣器速度。这可以通过PWM信号来完成。使用Grove电缆将电位器连接到Seeeduino Lotus的A0引脚。


复制以下代码并将其上传到Seeeduino Lotus开发板中。

  1. int BuzzerPin = 5;
  2. int Potentiometer = A0;

  3. void setup()
  4. {
  5.   pinMode(BuzzerPin, OUTPUT);
  6. }

  7. void loop()
  8. {
  9.   int potentioValue, Value;
  10.   potentioValue = analogRead(Potentiometer);
  11.   Value = map(potentioValue, 0, 1023, 0, 255); //Mapping potentiometer value to PWM signal value
  12.   analogWrite(BuzzerPin, Value);
  13. }
复制代码

上传代码后,使用电位器调节蜂鸣器声音。蜂鸣器的声音因电位器的PWM信号而异。


第5课:光传感器

光传感器包含一个光敏电阻来测量光的强度。光敏电阻的阻值随着光强的增加而减小。如果周围很暗,LED会亮起,如果周围很亮,则LED会熄灭。


在本实验中,我们将根据光强度打开 LED。每当更多的光落在光传感器上时,LED就会熄灭。同理,如果光量较少,LED灯将点亮。我们将使用Seeeduino Lotus、Grove LED模块和Grove光传感器。

光传感器

光传感器


PCB邮票孔已经有默认连接。也可以使用Grove电缆将Grove LED连接到Seeeduino Lotus的数字信号引脚D4。并将Grove光传感器连接到Seeeduino Lotus的模拟信号接口A6。


现在复制以下代码并将其上传到Seeeduino Lotus开发板。

  1. int sensorpin = A6; // Analog input pin that the sensor is attached to
  2. int ledPin = 4; // LED port
  3. int sensorValue = 0; // value read from the port
  4. int outputValue = 0; // value output to the PWM (analog out)

  5. void setup()
  6. {
  7.   pinMode(ledPin, OUTPUT);
  8.   Serial.begin(9600);
  9. }

  10. void loop()
  11. {
  12.   sensorValue = analogRead(sensorpin);      // read the analog in value:
  13.   outputValue = map(sensorValue, 0, 1023, 0, 255);      // map it to the range of the analog out:
  14.   Serial.println(sensorValue);
  15.   analogWrite(ledPin, outputValue);   // change the analog out value:
  16.   delay(30);
  17. }
复制代码

LED模块在黑暗时会亮起,在明亮时会熄灭。

Seeeduino-Lotus-LED-Light-Sensor.jpg


我们还可以在串口监视器上观察结果。串口监视器是在Arduino上观察结果的非常有用的工具。通过单击右上角的按钮打开串口监视器。选择波特率为9600。

Serial-Monitor.jpg


串口监视器显示来自传感器的模拟值。


第6课:声音传感器

声音传感器可以检测环境的声音强度,它的输出也是模拟的。在本实验中,我们将在声音检测的基础上打开LED。如果声音传感器值超过阈值,LED灯将亮起。当没有声音并且非常安静时,LED灯熄灭。


我们将在该项目中使用Seeeduino Lotus、Grove LED和Grove声音传感器。

Sound.jpg


PCB邮票孔已经有默认连接。也可以使用Grove电缆将Grove LED连接到Seeeduino Lotus的数字信号接口D4。此外,将Grove声音传感器连接到Seeeduino Lotus的模拟信号接口A2。


复制以下代码并将其上传到Seeeduino Lotus开发板。

  1. int soundPin = A2; // Analog sound sensor is to be attached to analog
  2. int ledPin = 4; // Digital LED is to be attached to digital

  3. void setup()
  4. {
  5.   pinMode(ledPin, OUTPUT);
  6.   Serial.begin(9600);
  7. }

  8. void loop()
  9. {
  10.   int soundState = analogRead(soundPin); // Read sound sensor’s value
  11.   Serial.println(soundState);   // if the sound sensor’s value is greater than 200, the light will be on for 5 seconds.
  12.   if (soundState > 200)
  13.   {
  14.     digitalWrite(ledPin, HIGH);
  15.     delay(100);
  16.   }
  17.   else
  18.   {
  19.     digitalWrite(ledPin, LOW);
  20.   }
  21. }
复制代码

如果周围环境声音足够响亮,LED模块就会亮起。


第7课:OLED显示屏

Arduino Grove初学者套件中也包含了一个OLED显示屏模块。 OLED显示屏可用于多种情况,您可以使用它来可视化传感器读数!在本实验中,我们将使用0.96寸I2C OLED显示屏,并在显示屏上显示Hello World。


对于本实验,我们将使用Seeeduino Lotus和Grove OLED显示屏模块。

OLED.jpg


PCB邮票孔已经有默认连接。也可以使用Grove电缆将OLED连接到Seeeduino Lotus的I2C 接口。默认I2C的地址为0x78。


在编写代码部分之前,您需要将库添加到Arduino IDE。为此,请打开 Arduino IDE。然后安装U8g2库。导航到 Sketch -> Include Library -> Manage Libraries... 并在库管理器中搜索关键字“U8g2”。选择Oliver提供的u8g2库,点击安装。

U8g2-lib.jpg


现在您可以编译并上传以下代码到Seeeduino Lotus开发板中。

  1. #include <Arduino.h>
  2. #include <U8x8lib.h>
  3. U8X8_SSD1306_128X64_ALT0_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);

  4. void setup(void)
  5. {
  6. u8x8.begin();
  7. u8x8.setFlipMode(1);
  8. }

  9. void loop(void)
  10. {
  11. u8x8.setFont(u8x8_font_chroma48medium8_r);
  12. u8x8.setCursor(0, 0);
  13. u8x8.print("Hello World!");
  14. }
复制代码

OLED显示屏将在屏幕上显示出“Hello World”。

回复

使用道具 举报

风筝
发表于: 2022-4-7 11:47:50 | 显示全部楼层

第8课:DHT11温湿度传感器

Arduino Grove初学者套件中包含有DHT11温度和湿度传感器。在本实验中,我们将使用DHT11传感器来测量环境温度和湿度。DHT11 是一款基本的、超低成本的数字温湿度传感器。它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上输出数字信号。


本节课需要Seeeduino Lotus、Grove OLED模块和Grove温度和温度传感器。

温湿度传感器

温湿度传感器


PCB邮票孔已经有默认连接。也可以使用Grove电缆将OLED连接到Seeeduino Lotus的I2C接口。将Grove温度和湿度传感器连接到Seeeduino Lotus的数字信号接口D3。


在编写代码部分之前,您需要将库添加到 Arduino IDE。为此,请打开Arduino IDE。然后安装Grove DHT11库。添加库后,复制以下代码并上传到Seeeduino Lotus开发板。

  1. #include "DHT.h"
  2. #include <Arduino.h>
  3. #include <U8x8lib.h>
  4. #define DHTPIN 3    // what pin we're connected to
  5. #define DHTTYPE DHT11     // DHT 11
  6. DHT dht(DHTPIN, DHTTYPE);
  7. U8X8_SSD1306_128X64_ALT0_HW_I2C u8x8(U8X8_PIN_NONE);

  8. void setup(void)
  9. {
  10.   Serial.begin(9600);
  11.   Serial.println("DHTxx test!");
  12.   dht.begin();
  13.   u8x8.begin();
  14.   u8x8.setPowerSave(0);
  15.   u8x8.setFlipMode(1);
  16. }

  17. void loop(void)
  18. {
  19.   float temp, humi;
  20.   temp = dht.readTemperature();
  21.   humi = dht.readHumidity();
  22.   u8x8.setFont(u8x8_font_chroma48medium8_r);
  23.   u8x8.setCursor(0, 33);
  24.   u8x8.print("Temp:");
  25.   u8x8.print(temp);
  26.   u8x8.print("C");
  27.   u8x8.setCursor(0, 50);
  28.   u8x8.print("Humidity:");
  29.   u8x8.print(humi);
  30.   u8x8.print("%");
  31.   u8x8.refreshDisplay();
  32.   delay(200);
  33. }
复制代码

上传代码后,OLED屏幕上会显示周围的温度和湿度。

dht11-oled-Seeeduino-Lotus.jpg


第9课:BMP280气压传感器模块

Arduino Grove初学者套件包含一个Grove气压传感器BMP280。它基于Bosch的高精度和低功耗数字气压计BMP280。该模块可用于精确测量温度和大气压力。由于大气压力随高度变化,它还可以测量一个地方的大致高度。


本节课需要实验Seeeduino Lotus和Grove气压传感器模块。

气压传感器

气压传感器


PCB邮票孔已经有默认连接。也可以使用Grove电缆将Grove气压传感器连接到Seeeduino Lotus的I2C接口。I2C 默认地址为0x77或0x76。


在编写代码部分之前,您需要将库添加到 Arduino IDE。为此,请打开 Arduino IDE。然后安装Grove BMP280库。添加库后,复制以下代码并上传到Seeeduino Lotus开发板。

  1. include "Seeed_BMP280.h"
  2. #include <Wire.h>
  3. BMP280 bmp280;

  4. void setup()
  5. {
  6.   Serial.begin(9600);
  7.   if (!bmp280.init())
  8.   {
  9.     Serial.println("Device not connected or broken!");
  10.   }
  11. }

  12. void loop()
  13. {
  14.   float pressure;     
  15.   Serial.print("Temp: ");
  16.   Serial.print(bmp280.getTemperature());    //get and print temperatures
  17.   Serial.println("C");

  18.   Serial.print("Pressure: ");
  19.   Serial.print(pressure = bmp280.getPressure());    //get and print atmospheric pressure data
  20.   Serial.println("Pa");

  21.   Serial.print("Altitude: ");
  22.   Serial.print(bmp280.calcAltitude(pressure));    //get and print altitude data
  23.   Serial.println("m");

  24.   Serial.println("\n");//add a line between output of different times.
  25.   delay(1000);
  26. }
复制代码

串口监视器将显示气压读数。

BMP280-Serial-Monitor.jpg


第10课:加速度计传感器

Arduino Grove初学者套件还包含一个加速度传感器。 这是最后一个传感器 - 3轴加速度计。使用此模块,您可以轻松地将运动监控添加到您的设计中。传感器检测所有3个轴上的重力以及倾斜运动。


本节课需要Seeeduino Lotus和Grove三轴加速度计模块。

加速度计

加速度计


PCB邮票孔已经有默认连接。也可以使用Grove电缆将Grove三轴加速度计连接到Seeeduino Lotus的I2C引脚。I2C 默认地址为0x19。


在编写代码部分之前,您需要将库添加到 Arduino IDE。 为此,请打开Arduino IDE。 然后安装Seeed LIS3DHTR 库。添加库后,复制以下代码并上传到Seeeduino Lotus开发板。

  1. #include "LIS3DHTR.h"
  2. #include <Wire.h>
  3. LIS3DHTR<TwoWire> LIS; //IIC
  4. #define WIRE Wire

  5. void setup()
  6. {
  7.   Serial.begin(9600);
  8.   while (!Serial)
  9.   {
  10.   };
  11.   LIS.begin(WIRE, LIS3DHTR_ADDRESS_UPDATED); //IIC init
  12.   delay(100);
  13.   LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);

  14. }
  15. void loop()
  16. {
  17.   if (!LIS)
  18.   {
  19.     Serial.println("LIS3DHTR didn't connect.");
  20.     while (1)
  21.       ;
  22.     return;
  23.   }
  24.   //3 axis
  25.    Serial.print("x:"); Serial.print(LIS.getAccelerationX()); Serial.print("  ");
  26.    Serial.print("y:"); Serial.print(LIS.getAccelerationY()); Serial.print("  ");
  27.    Serial.print("z:"); Serial.println(LIS.getAccelerationZ());
  28.    delay(200);

  29. }
复制代码

串口监视器将显示三轴加速器的读数。

accelerometer-serial.jpg


以上就是本文的全部内容。如果有任何疑问,请随时在本帖下面回复。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-21 18:56 , Processed in 0.049349 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表