毕设笔记03-Arduino与树莓派实现串口通信并传输温湿度数据

树莓派与Arduino之间常用的通信的方式有:
1、通过USB串口进行通信
2、通过GPIO引脚通信
这里我们采用第一种方式,Arduino与树莓派通过USB串口不仅稳定,而且不用复杂的接线。
1、Arduino连接DHT11温湿度传感器
在Arduino上连接DHT11传感器,将代码通过Arduino IDE下载到Arduino中,用来获取当前的温度、湿度值,并通过串口发送出来。代码如下:

#include 
dht11 DHT;
#define DHT11_PIN 4 
void setup(){
    Serial.begin(9600);
    Serial.println("DHT TEST PROGRAM ");
    Serial.print("LIBRARY VERSION: ");
    Serial.println(DHT11LIB_VERSION);
    Serial.println();
    Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
} 
void loop(){
    int chk;
    Serial.print("DHT11, \t");
    chk = DHT.read(DHT11_PIN); // READ DATA
    switch (chk){
        case DHTLIB_OK: 
        Serial.print("OK,\t"); 
        break;
        case DHTLIB_ERROR_CHECKSUM: 
        Serial.print("Checksum error,\t"); 
        break;
        case DHTLIB_ERROR_TIMEOUT: 
        Serial.print("Time out error,\t"); 
        break;
        default: 
        Serial.print("Unknown error,\t"); 
        break;
   }
    // DISPLAT DATA
    Serial.print(DHT.humidity,1);
    Serial.print(",\t");
     Serial.println(DHT.temperature,1);
    delay(1000);
}

2、树莓派安装串口调试程序
树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,需从新开启后才能通过串口控制树莓派。
1、释放串口
(1)执行以下命令进入树莓派配置
sudo raspi-config
(2)选择Advanced Options ->Serial ->no -> yes 关闭串口调试功能,打开串口。
毕设笔记03-Arduino与树莓派实现串口通信并传输温湿度数据_第1张图片
(3)打开/boot/config.txt文件,找到如下配置语句使能串口,如果没有,可添加在文件最后面。
enable_uart=1
2、使用minicom调试串口
minicom是linux平台串口调试工具,相当于windows上的串口调试助手,可以用它来读取Arduino通过USB串口发送的传感器数值
(1)minicom安装
sudo apt-get install minicom
(2)minicom启动
minicom -b 9600 -D /dev/ttyACM0
-b代表波特率,-D代表端口,/dev/ttyACM0 表示打开与Arduino相连的端口。
注:minicom常用命令
1、需使用Ctrl+a 进入设置状态
2、按z进入设置菜单
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之後,自动将後面的内容换行。这个功能在查看内核的啓动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。
3、连接树莓派与Arduino
将Arduino通过USB线缆连接到树莓派上,启动minicom这时就可以在树莓派的终端看到通过串口获得的Arduino数据,数据为所测量到的温度和湿度值。
毕设笔记03-Arduino与树莓派实现串口通信并传输温湿度数据_第2张图片毕设笔记03-Arduino与树莓派实现串口通信并传输温湿度数据_第3张图片注:树莓派如何查看当前连接的端口
在树莓派终端输入如下命令即可查看两者连接端口的名字
ls /dev/tty*
只有在两个硬件USB互连的情况下才会有这个。如果两者没有连接是不会有的,看到ttyACM0就说明二者可以通讯了。
毕设笔记03-Arduino与树莓派实现串口通信并传输温湿度数据_第4张图片

你可能感兴趣的:(树莓派)