zoukankan      html  css  js  c++  java
  • (12)树莓派串口通信

    https://blog.csdn.net/qq_34803821/article/details/86238387

    1串口

    树莓派代码(python):
    需要先安装python串口读取的库文件:pip install pyserial
    (如果已经安装过了则忽略)
    找到Arduino的串口地址:/dev/ttyACM0
    

     

    Arduino代码:

    运行时如果报/x86或者ASCII码无法解析错误。可以将代码中的中文全部换成英文,就不会错了,可能是因为无法识别中文

    #include <DHT.h>
    
    #define   DHTPIN    3
    #define DHTTYPE    DHT11
    
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
      // put your setup code here, to run once:
    
      Serial.begin(9600);
    
      dht.begin();
    
      Serial.println("Hi Vcancy. Arduino is running...");
    
    }
    
    /**
      Arduino loop
      @param none
      @return none
    */
    char target[] = "GET TH";
    
    void loop() {
      // 每次等待2秒后再输出(这里必须等大于1秒,不然不准确)
      delay(2000);
      // 从串口读数据并判断
      if (Serial.available() > 0) {
        if ( Serial.find(target)) {
          // 获取温度或者湿度需要250毫秒!
          // 传感器获取到的温度和湿度可能是2秒内的
    
          float h = dht.readHumidity();// 读取当前的湿度
    
          float t = dht.readTemperature(); // 读取当前的温度,单位C
    
          float f = dht.readTemperature(true);//读取当前的温度,单位F
    
          // 如果读取失败则退出,再读取一次
          if (isnan(h) || isnan(t) || isnan(f)) {
            Serial.println("Failed to read from DHT sensor!");
            return;
          }
    
          // 读取体感温度,单位F
          float hif = dht.computeHeatIndex(f, h);
          // 读取体感温度,单位C
          float hic = dht.computeHeatIndex(t, h, false);
    
          Serial.print("湿度: ");
          Serial.print(h);
          Serial.print(" %	");
          Serial.print("温度: ");
          Serial.print(t);
          Serial.print(" *C ");
          Serial.print(f);
          Serial.print(" *F	");
          Serial.print("体感温度: ");
          Serial.print(hic);
          Serial.print(" *C ");
          Serial.print(hif);
          Serial.println(" *F");
        }
      }
    
    }
    

      

    2 树莓派接受

    # -*- coding: utf-8 -*
    import serial
    import time
    ser = serial.Serial('/dev/ttyUSB0', 115200)
    
    if ser.isOpen == False:
        ser.open()                # 打开串口
    ser.write(b"Raspberry pi is ready")
    try:
        while True:
            response = ser.readline()
            print(response)     
            time.sleep(0.1)                  # 软件延时
    except KeyboardInterrupt:
        ser.close()
    

      

  • 相关阅读:
    read()系统调用的流程(转个贴)
    linux kernel reading
    开博第一篇
    让人崩溃的Visual C++ 2005 SP1 Redistributable Package (x86),为啥我下不下来?
    System Call on Linux 2.6 for i386(2) int 0x80与systementer
    http://www.netyi.net/in.asp?id=yuanxianping
    取Insert产生的ID
    递归触发器资料
    Commit Trans和Rollback Trans在有触发器操作时的区别
    转:安全配置SQL Server2000服务器
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/11119790.html
Copyright © 2011-2022 走看看