树莓派使用MariaDB或MySQL过程中的ERROR 1698解决

### 树莓派5连接和使用温湿度传感器教程 #### 连接方法 树莓派5作为新一代设备,在硬件接口方面与之前的版本保持了一定兼容性。为了连接DHT11温湿度传感器,可以按照以下方式进行布线[^1]: | **DHT11引脚** | **树莓派GPIO引脚** | |----------------|---------------------| | DATA | GPIO/BCM Pin 27 | | GND | GND | | VCC | 5V | 需要注意的是,尽管树莓派5可能具有不同的CPU型号其他改进功能,其GPIO针脚布局通常不会发生显著变化。因此,上述连线方式适用于大多数情况。 --- #### 示例代码 以下是通过Python编程来读取DHT11温湿度数据的一个简单示例。此代码依赖于`wiringpi`库,该库能够提供更稳定的性能并支持较新的树莓派平台: ```python import time import wiringpi # 定义DATA引脚对应的GPIO编号 (BCM模式下的Pin 27) PIN = 27 def read_dht11_dat(): # 初始化WiringPi库 wiringpi.wiringPiSetupGpio() # 设置引脚为输入模式 wiringpi.pinMode(PIN, wiringpi.INPUT) data = [] j = 0 # 启动信号发送过程 wiringpi.digitalWrite(PIN, wiringpi.LOW) time.sleep(0.02) wiringpi.digitalWrite(PIN, wiringpi.HIGH) wiringpi.delayMicroseconds(40) while wiringpi.digitalRead(PIN) == wiringpi.LOW: continue while wiringpi.digitalRead(PIN) == wiringpi.HIGH: continue while j < 40: k = 0 while wiringpi.digitalRead(PIN) == wiringpi.LOW: continue while wiringpi.digitalRead(PIN) == wiringpi.HIGH: k += 1 if k > 100: break if k < 8: data.append(0) else: data.append(1) j += 1 humidity_bit = data[0:8] humidity_point_bit = data[8:16] temperature_bit = data[16:24] temperature_point_bit = data[24:32] check_sum = data[32:40] humidity = int(''.join(map(str, humidity_bit)), 2) humidity_point = int(''.join(map(str, humidity_point_bit)), 2) temperature = int(''.join(map(str, temperature_bit)), 2) temperature_point = int(''.join(map(str, temperature_point_bit)), 2) check = int(''.join(map(str, check_sum)), 2) if check == ((humidity + humidity_point + temperature + temperature_point) & 0xFF): return {'temperature': f"{temperature}.{temperature_point}", 'humidity': f"{humidity}.{humidity_point}"} else: return None if __name__ == "__main__": try: result = read_dht11_dat() if result is not None: print(f"Temperature: {result['temperature']} C") print(f"Humidity: {result['humidity']} %") else: print("Data error!") except KeyboardInterrupt: pass ``` 以上代码实现了对DHT11的数据采集逻辑,并验证了校验位的准确性。如果遇到任何错误提示(如未识别到平台),则需确认是否安装了最新版的支持库以及正确配置了环境变量[^2]。 --- #### 数据存储扩展 除了简单的打印输出外,还可以将获取到的温度和湿度保存至数据库中以便后续分析。例如,利用MariaDB完成本地化记录操作[^4]: ```sql CREATE TABLE IF NOT EXISTS sensor_data ( id INT AUTO_INCREMENT PRIMARY KEY, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, temperature DECIMAL(5, 2), humidity DECIMAL(5, 2) ); ``` 随后修改Python程序中的部分函数用于插入新条目: ```python import mysql.connector db_conn = mysql.connector.connect( host="localhost", user="root", # 替换为您自己的用户名 password="password", # 替换为您自己的密码 database="sensors" ) cursor = db_conn.cursor() try: cursor.execute(""" INSERT INTO sensor_data (temperature, humidity) VALUES (%s, %s) """, (float(result['temperature']), float(result['humidity']))) db_conn.commit() except Exception as e: print(e) finally: cursor.close() db_conn.close() ``` 这样即可实现自动化监控并将历史数据保留下来供进一步研究使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值