嵌入式Python开发:MicroPython在物联网硬件上的实战应用案例

文章目录

  • 摘要
  • 一、引言
    • [1.1 MicroPython简介](#1.1 MicroPython简介)
    • [1.2 物联网硬件选择](#1.2 物联网硬件选择)
  • 二、开发环境搭建
    • [2.1 硬件准备](#2.1 硬件准备)
    • [2.2 软件安装](#2.2 软件安装)
      • [2.2.1 固件烧录工具](#2.2.1 固件烧录工具)
      • [2.2.2 MicroPython固件下载](#2.2.2 MicroPython固件下载)
      • [2.2.3 开发工具选择](#2.2.3 开发工具选择)
    • [2.3 环境验证](#2.3 环境验证)
  • 三、项目实战:物联网温湿度监测系统
    • [3.1 系统架构设计](#3.1 系统架构设计)
    • [3.2 代码实现](#3.2 代码实现)
      • [3.2.1 创建主程序文件:main.py](#3.2.1 创建主程序文件:main.py)
      • [3.2.2 创建启动脚本:boot.py](#3.2.2 创建启动脚本:boot.py)
      • [3.2.3 创建配置文件:config.py](#3.2.3 创建配置文件:config.py)
    • [3.3 部署流程](#3.3 部署流程)
    • [3.4 测试与验证](#3.4 测试与验证)
      • [3.4.1 功能测试脚本](#3.4.1 功能测试脚本)
  • 四、常见问题及解决方法
    • [4.1 连接问题](#4.1 连接问题)
      • [4.1.1 Wi-Fi连接失败](#4.1.1 Wi-Fi连接失败)
      • [4.1.2 MQTT连接不稳定](#4.1.2 MQTT连接不稳定)
    • [4.2 传感器数据异常](#4.2 传感器数据异常)
      • [4.2.1 数据读取失败](#4.2.1 数据读取失败)
    • [4.3 内存管理问题](#4.3 内存管理问题)
      • [4.3.1 内存泄漏](#4.3.1 内存泄漏)
  • 五、成果展示与扩展应用
    • [5.1 系统运行效果](#5.1 系统运行效果)
    • [5.2 数据可视化](#5.2 数据可视化)
    • [5.3 扩展应用方向](#5.3 扩展应用方向)
      • [5.3.1 多传感器集成](#5.3.1 多传感器集成)
      • [5.3.2 云端数据存储](#5.3.2 云端数据存储)
      • [5.3.3 移动端应用](#5.3.3 移动端应用)
  • 六、完整技术图谱
  • 七、总结

摘要

本文详细介绍了MicroPython在ESP32物联网硬件上的实战应用,通过温湿度监测案例讲解环境搭建、编程开发、数据传输和远程控制的全流程,帮助开发者快速掌握嵌入式Python开发技术。

一、引言

1.1 MicroPython简介

MicroPython是Python 3编程语言的精简实现,专为微控制器和嵌入式系统设计。它由Damien George于2013年发起,最初在Kickstarter上获得成功众筹。与传统的嵌入式开发语言(如C/C++)相比,MicroPython具有以下优势:

  1. 开发效率高:Python语法简洁易学,大大缩短开发周期
  2. 交互式调试:支持REPL(Read-Eval-Print Loop)实时交互
  3. 丰富的库:内置硬件控制、网络通信等核心模块
  4. 跨平台:可在多种微控制器平台上运行

1.2 物联网硬件选择

本文选用ESP32作为开发平台,其主要特性包括:

  • 双核240MHz Xtensa处理器
  • 520KB SRAM、4MB Flash
  • 集成了Wi-Fi和蓝牙
  • 丰富的外设接口(ADC、DAC、I2C、SPI等)
  • 低功耗设计,适合电池供电应用

二、开发环境搭建

2.1 硬件准备

所需组件清单

组件 规格 数量
ESP32开发板 ESP32-WROOM-32 1
DHT11传感器 温湿度测量 1
面包板 830孔 1
杜邦线 公对公 若干
USB数据线 Type-C 1

电路连接

ESP32开发板
3.3V电源
GND
GPIO4
DHT11传感器
VCC连接3.3V
GND连接GND
DATA连接GPIO4

2.2 软件安装

2.2.1 固件烧录工具

推荐使用esptool.py进行固件烧录:

bash 复制代码
# 安装esptool
pip install esptool

# 查看串口设备
ls /dev/tty.*

# 擦除Flash
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash

# 烧录固件
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 firmware.bin

2.2.2 MicroPython固件下载

从官方仓库下载最新固件:

bash 复制代码
wget https://micropython.org/resources/firmware/esp32-20220117-v1.18.bin

2.2.3 开发工具选择

推荐使用以下工具:

  1. Thonny:初学者友好的MicroPython IDE
  2. VS Code + Pymakr插件:专业开发环境
  3. uPyCraft:专为MicroPython设计的IDE

2.3 环境验证

连接设备后,通过串口工具测试:

python 复制代码
>>> import os
>>> os.uname()
# 应显示MicroPython版本信息
>>> import machine
>>> machine.freq()  # 查看CPU频率

三、项目实战:物联网温湿度监测系统

3.1 系统架构设计

用户访问层
云平台层
网络传输层
边缘设备层
传感器数据采集
ESP32处理器
本地数据处理
Wi-Fi连接
MQTT协议传输
MQTT Broker
数据存储
Web监控界面
PC浏览器
手机APP

3.2 代码实现

3.2.1 创建主程序文件:main.py

python 复制代码
"""
main.py - 物联网温湿度监测系统主程序
文件名: main.py
功能: 系统启动入口,协调各模块工作
"""

import network
import time
from machine import Pin, Timer
import dht
import ujson
from umqtt.simple import MQTTClient

# 系统配置
class Config:
    # Wi-Fi配置
    WIFI_SSID = "your_wifi_ssid"
    WIFI_PASSWORD = "your_wifi_password"
    
    # MQTT配置
    MQTT_BROKER = "broker.emqx.io"
    MQTT_PORT = 1883
    MQTT_CLIENT_ID = "esp32_temp_humidity_01"
    MQTT_TOPIC_TEMP = "sensor/temperature"
    MQTT_TOPIC_HUMID = "sensor/humidity"
    
    # 硬件配置
    DHT_PIN = 4
    LED_PIN = 2  # ESP32内置LED
    SAMPLE_INTERVAL = 30000  # 采样间隔30秒

# Wi-Fi连接管理
class WiFiManager:
    def __init__(self, ssid, password):
        self.ssid = ssid
        self.password = password
        self.wlan = network.WLAN(network.STA_IF)
    
    def connect(self):
        """连接到Wi-Fi网络"""
        if not self.wlan.isconnected():
            print('Connecting to WiFi...')
            self.wlan.active(True)
            self.wlan.connect(self.ssid, self.password)
            
            # 等待连接建立
            timeout = 10
            while not self.wlan.isconnected() and timeout > 0:
                time.sleep(1)
                timeout -= 1
                print('.', end='')
            
            if self.wlan.isconnected():
                print('\nWiFi connected! Network config:', self.wlan.ifconfig())
                return True
            else:
                print('\nFailed to connect to WiFi')
                return False
        return True

# 传感器数据采集
class SensorManager:
    def __init__(self, pin_num):
        self.sensor = dht.DHT11(Pin(pin_num))
        self.last_temp = 0
        self.last_humidity = 0
    
    def read_data(self):
        """读取传感器数据"""
        try:
            self.sensor.measure()
            temp = self.sensor.temperature()
            humidity = self.sensor.humidity()
            
            # 数据有效性检查
            if -40 <= temp <= 80 and 0 <= humidity <= 100:
                self.last_temp = temp
                self.last_humidity = humidity
                return temp, humidity
            else:
                return self.last_temp, self.last_humidity
                
        except Exception as e:
            print('Sensor read error:', e)
            return self.last_temp, self.last_humidity

# MQTT通信管理
class MQTTManager:
    def __init__(self, broker, port, client_id):
        self.broker = broker
        self.port = port
        self.client_id = client_id
        self.client = None
    
    def connect(self):
        """连接到MQTT代理"""
        try:
            self.client = MQTTClient(self.client_id, self.broker, self.port)
            self.client.connect()
            print('Connected to MQTT broker')
            return True
        except Exception as e:
            print('MQTT connection failed:', e)
            return False
    
    def publish(self, topic, message):
        """发布消息到指定主题"""
        try:
            self.client.publish(topic, message)
            print('Published to {}: {}'.format(topic, message))
            return True
        except Exception as e:
            print('Publish failed:', e)
            return False

# 系统主类
class IoTMonitoringSystem:
    def __init__(self, config):
        self.config = config
        self.wifi = WiFiManager(config.WIFI_SSID, config.WIFI_PASSWORD)
        self.sensor = SensorManager(config.DHT_PIN)
        self.mqtt = MQTTManager(config.MQTT_BROKER, config.MQTT_PORT, 
                               config.MQTT_CLIENT_ID)
        self.led = Pin(config.LED_PIN, Pin.OUT)
        self.timer = Timer(0)
        self.sample_count = 0
    
    def start(self):
        """启动系统"""
        print('Starting IoT Monitoring System...')
        
        # 连接Wi-Fi
        if not self.wifi.connect():
            return False
        
        # 连接MQTT
        if not self.mqtt.connect():
            return False
        
        # 启动定时采样
        self.timer.init(period=self.config.SAMPLE_INTERVAL, 
                       mode=Timer.PERIODIC, 
                       callback=lambda t: self.sample_data())
        
        print('System started successfully!')
        return True
    
    def sample_data(self):
        """采样并发送数据"""
        # LED指示灯闪烁
        self.led.on()
        
        # 读取传感器数据
        temperature, humidity = self.sensor.read_data()
        self.sample_count += 1
        
        # 准备MQTT消息
        timestamp = time.time()
        temp_msg = ujson.dumps({
            'device_id': self.config.MQTT_CLIENT_ID,
            'timestamp': timestamp,
            'temperature': temperature,
            'unit': 'celsius',
            'sample_id': self.sample_count
        })
        
        humid_msg = ujson.dumps({
            'device_id': self.config.MQTT_CLIENT_ID,
            'timestamp': timestamp,
            'humidity': humidity,
            'unit': 'percent',
            'sample_id': self.sample_count
        })
        
        # 发布数据
        self.mqtt.publish(self.config.MQTT_TOPIC_TEMP, temp_msg)
        self.mqtt.publish(self.config.MQTT_TOPIC_HUMID, humid_msg)
        
        # 打印本地日志
        print('Sample #{}, Temp: {}°C, Humidity: {}%'.format(
            self.sample_count, temperature, humidity))
        
        # LED指示灯关闭
        self.led.off()

# 程序入口
if __name__ == '__main__':
    # 创建配置实例
    config = Config()
    
    # 创建并启动系统
    system = IoTMonitoringSystem(config)
    
    if system.start():
        # 主循环
        while True:
            time.sleep(1)
    else:
        print('System startup failed!')
        # 进入深度睡眠以节省电量
        machine.deepsleep(60000)  # 60秒后重启

3.2.2 创建启动脚本:boot.py

python 复制代码
"""
boot.py - 系统启动脚本
文件名: boot.py
功能: 在系统启动时自动运行,进行初始化操作
"""

import gc
import machine
import time

def main():
    # 垃圾回收
    gc.collect()
    
    # 打印系统信息
    print('System booting...')
    print('Memory free: {} bytes'.format(gc.mem_free()))
    
    # 设置CPU频率
    machine.freq(240000000)  # 设置为240MHz
    print('CPU frequency set to: {} MHz'.format(machine.freq() // 1000000))
    
    # 等待2秒,确保系统稳定
    time.sleep(2)
    
    # 导入主程序
    try:
        import main
        print('Boot completed successfully!')
    except Exception as e:
        print('Boot failed:', e)
        # 发生错误时重启
        machine.reset()

if __name__ == '__main__':
    main()

3.2.3 创建配置文件:config.py

python 复制代码
"""
config.py - 系统配置文件
文件名: config.py
功能: 存储所有可配置参数,便于维护和修改
"""

class NetworkConfig:
    # Wi-Fi设置
    WIFI_SSID = "IoT_Network"
    WIFI_PASSWORD = "SecurePassword123"
    
    # 备用Wi-Fi网络
    WIFI_BACKUP_SSID = "Backup_Network"
    WIFI_BACKUP_PASSWORD = "BackupPassword123"
    
    # 网络超时设置(秒)
    WIFI_TIMEOUT = 10
    WIFI_RETRY_INTERVAL = 5

class MQTTConfig:
    # MQTT代理设置
    MQTT_BROKERS = [
        "broker.emqx.io",  # 主Broker
        "test.mosquitto.org",  # 备用Broker
        "broker.hivemq.com"  # 第二备用
    ]
    
    MQTT_PORT = 1883
    MQTT_CLIENT_ID_PREFIX = "esp32_sensor_"
    
    # 主题设置
    TOPICS = {
        'temperature': 'home/livingroom/temperature',
        'humidity': 'home/livingroom/humidity',
        'status': 'home/livingroom/status',
        'control': 'home/livingroom/control'
    }
    
    # QoS级别
    QOS_LEVEL = 1
    
    # 保持连接时间(秒)
    KEEPALIVE = 60

class SensorConfig:
    # DHT11传感器设置
    DHT_PIN = 4
    READ_RETRIES = 3
    READ_DELAY = 1  # 读取间隔(秒)
    
    # 数据范围限制(用于过滤异常值)
    TEMP_RANGE = (-40, 80)
    HUMIDITY_RANGE = (0, 100)
    
    # 采样间隔(毫秒)
    SAMPLE_INTERVAL_NORMAL = 30000  # 30秒
    SAMPLE_INTERVAL_ALERT = 5000  # 5秒(异常状态下)

class SystemConfig:
    # 设备标识
    DEVICE_ID = "livingroom_sensor_01"
    DEVICE_LOCATION = "Living Room"
    DEVICE_TYPE = "DHT11"
    
    # 硬件设置
    LED_PIN = 2
    BUTTON_PIN = 0  # BOOT按钮
    
    # 系统设置
    LOG_LEVEL = "INFO"  # DEBUG, INFO, WARNING, ERROR
    TIMEZONE_OFFSET = 8  # 时区偏移(北京时间+8)
    
    # 错误处理
    MAX_ERROR_COUNT = 10
    REBOOT_ON_ERROR = True
    ERROR_RESET_DELAY = 60000  # 错误后重启延迟(毫秒)

class AlertConfig:
    # 温度告警阈值
    TEMP_HIGH_ALERT = 30  # 高温告警
    TEMP_LOW_ALERT = 10  # 低温告警
    
    # 湿度告警阈值
    HUMIDITY_HIGH_ALERT = 80  # 高湿告警
    HUMIDITY_LOW_ALERT = 20  # 低湿告警
    
    # 告警重复间隔(避免频繁告警)
    ALERT_COOLDOWN = 300000  # 5分钟

# 导出配置实例
network_config = NetworkConfig()
mqtt_config = MQTTConfig()
sensor_config = SensorConfig()
system_config = SystemConfig()
alert_config = AlertConfig()

3.3 部署流程









开始部署
硬件连接检查
连接正确?
调整连接
烧录MicroPython固件
上传程序文件
修改配置文件
重启设备
检查系统启动
启动成功?
故障排查
验证数据采集
检查Wi-Fi连接
连接成功?
检查Wi-Fi配置
测试MQTT连接
连接成功?
检查MQTT配置
验证数据发布
部署完成

3.4 测试与验证

3.4.1 功能测试脚本

创建测试文件:test_system.py

python 复制代码
"""
test_system.py - 系统测试脚本
文件名: test_system.py
功能: 对各个模块进行单元测试和集成测试
"""

import time
from machine import Pin
import dht

def test_sensor(pin_num=4):
    """测试DHT11传感器"""
    print("Testing DHT11 sensor...")
    sensor = dht.DHT11(Pin(pin_num))
    
    for i in range(5):
        try:
            sensor.measure()
            temp = sensor.temperature()
            humidity = sensor.humidity()
            print("Test {}: Temp={}°C, Humidity={}%".format(i+1, temp, humidity))
        except Exception as e:
            print("Test {} failed: {}".format(i+1, e))
        
        time.sleep(2)

def test_wifi():
    """测试Wi-Fi连接"""
    print("Testing WiFi connection...")
    import network
    
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    
    # 扫描可用网络
    networks = wlan.scan()
    print("Available networks:")
    for net in networks:
        print("  SSID: {}, RSSI: {}".format(net[0].decode(), net[3]))
    
    return len(networks) > 0

def test_mqtt():
    """测试MQTT连接"""
    print("Testing MQTT connection...")
    try:
        from umqtt.simple import MQTTClient
        
        client = MQTTClient("test_client", "broker.emqx.io", 1883)
        client.connect()
        print("MQTT connection successful!")
        
        client.disconnect()
        return True
    except Exception as e:
        print("MQTT test failed:", e)
        return False

def test_led(pin_num=2):
    """测试LED指示灯"""
    print("Testing LED...")
    led = Pin(pin_num, Pin.OUT)
    
    for i in range(6):
        led.value(i % 2)
        print("LED {}".format("ON" if i % 2 == 1 else "OFF"))
        time.sleep(0.5)
    
    led.off()
    print("LED test completed!")

def run_all_tests():
    """运行所有测试"""
    print("=== Starting System Tests ===\n")
    
    tests = [
        ("LED Test", test_led),
        ("Sensor Test", test_sensor),
        ("WiFi Test", test_wifi),
        ("MQTT Test", test_mqtt)
    ]
    
    results = []
    
    for test_name, test_func in tests:
        print("\n" + "="*50)
        print("Running: {}".format(test_name))
        print("="*50)
        
        try:
            success = test_func()
            results.append((test_name, success, "Passed"))
            print("Result: PASSED")
        except Exception as e:
            results.append((test_name, False, str(e)))
            print("Result: FAILED -", e)
        
        time.sleep(1)
    
    # 打印测试报告
    print("\n" + "="*60)
    print("TEST REPORT")
    print("="*60)
    
    passed = 0
    for name, success, message in results:
        status = "PASS" if success else "FAIL"
        print("{:<15} [{}] {}".format(name, status, message))
        if success:
            passed += 1
    
    print("\nTotal: {}/{} tests passed".format(passed, len(results)))
    
    if passed == len(results):
        print("All tests completed successfully!")
        return True
    else:
        print("Some tests failed. Please check your setup.")
        return False

if __name__ == '__main__':
    run_all_tests()

四、常见问题及解决方法

4.1 连接问题

4.1.1 Wi-Fi连接失败

症状 :设备无法连接到Wi-Fi网络
解决方法

  1. 检查SSID和密码是否正确
  2. 确认路由器2.4GHz频段开启(ESP32不支持5GHz)
  3. 检查路由器MAC地址过滤设置
  4. 尝试减少Wi-Fi安全协议复杂度(如使用WPA2代替WPA3)

4.1.2 MQTT连接不稳定

症状 :频繁断开连接或发布失败
解决方法

python 复制代码
# 在MQTTManager中添加重连机制
def ensure_connected(self):
    if not self.client or not self.client.is_connected():
        try:
            self.client.disconnect()
        except:
            pass
        time.sleep(1)
        return self.connect()
    return True

4.2 传感器数据异常

4.2.1 数据读取失败

症状 :经常读取到None或异常值
解决方法

python 复制代码
# 增强传感器读取稳定性
def robust_read_data(self, max_retries=3):
    for attempt in range(max_retries):
        try:
            self.sensor.measure()
            time.sleep(0.1)  # 添加短暂延迟
            
            temp = self.sensor.temperature()
            humidity = self.sensor.humidity()
            
            # 数据有效性验证
            if (self.config.TEMP_RANGE[0] <= temp <= self.config.TEMP_RANGE[1] and
                self.config.HUMIDITY_RANGE[0] <= humidity <= self.config.HUMIDITY_RANGE[1]):
                return temp, humidity
                
        except Exception as e:
            print('Read attempt {} failed: {}'.format(attempt + 1, e))
            time.sleep(0.5)
    
    return self.last_temp, self.last_humidity  # 返回最后一次有效值

4.3 内存管理问题

4.3.1 内存泄漏

症状 :运行时间越长,可用内存越少
解决方法

python 复制代码
# 定期进行垃圾回收
def periodic_gc(self):
    import gc
    gc.collect()
    print('Memory free after GC: {} bytes'.format(gc.mem_free()))

# 在定时器回调中添加
self.timer.init(period=3600000, mode=Timer.PERIODIC,  # 每小时一次
               callback=lambda t: self.periodic_gc())

五、成果展示与扩展应用

5.1 系统运行效果

成功部署后,系统将实现以下功能:

  1. 实时数据采集:每30秒采集一次温湿度数据
  2. 无线传输:通过Wi-Fi将数据发送到MQTT代理
  3. 远程监控:可通过任何MQTT客户端订阅数据
  4. 自动恢复:网络异常时自动重连
  5. 状态指示:通过LED显示系统状态

5.2 数据可视化

可以使用以下工具创建监控面板:

  1. Node-RED:拖拽式物联网编程工具
  2. Grafana:专业的数据可视化平台
  3. Home Assistant:开源家庭自动化平台

示例Node-RED流配置:

json 复制代码
[{"id":"mqtt-in","type":"mqtt in","z":"flow1","name":"","topic":"sensor/temperature","qos":"2","datatype":"auto","broker":"broker1","x":100,"y":100},{"id":"chart","type":"ui_chart","z":"flow1","name":"Temperature","group":"group1","order":1,"width":0,"height":0,"label":"温度图表","chartType":"line","legend":"true","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderUnit":"3600","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e"],"outputs":1,"useOldStyle":false,"x":300,"y":100}]

5.3 扩展应用方向

5.3.1 多传感器集成

python 复制代码
# 扩展支持多种传感器
class MultiSensorManager:
    def __init__(self):
        self.sensors = {
            'dht11': DHT11(Pin(4)),
            'bmp180': BMP180(I2C(0, scl=Pin(22), sda=Pin(21))),
            'light': ADC(Pin(32))
        }
    
    def read_all(self):
        data = {}
        for name, sensor in self.sensors.items():
            try:
                if name == 'dht11':
                    sensor.measure()
                    data['temperature'] = sensor.temperature()
                    data['humidity'] = sensor.humidity()
                elif name == 'bmp180':
                    data['pressure'] = sensor.pressure
                    data['altitude'] = sensor.altitude
                elif name == 'light':
                    data['light_level'] = sensor.read()
            except Exception as e:
                print('{} read error: {}'.format(name, e))
        
        return data

5.3.2 云端数据存储

集成云服务平台:

  1. AWS IoT Core:亚马逊物联网平台
  2. Azure IoT Hub:微软物联网服务
  3. 阿里云物联网平台:国内云服务
  4. ThingsBoard:开源物联网平台

5.3.3 移动端应用

开发配套移动应用:

  • Flutter:跨平台移动应用开发
  • React Native:使用JavaScript开发原生应用
  • 微信小程序:轻量级移动端解决方案

六、完整技术图谱

MicroPython物联网开发
硬件层
软件层
云服务层
应用层
ESP32微控制器
DHT11温湿度传感器
电路设计与连接
电源管理
MicroPython固件
驱动开发
网络通信
数据协议
MQTT消息代理
数据存储
用户认证
API服务
Web监控界面
移动应用
数据分析
告警通知
固件烧录
版本管理
Wi-Fi连接
TCP/IP协议
安全加密
JSON序列化
数据验证
压缩优化

七、总结

通过本教程,我们完整实现了基于MicroPython的物联网温湿度监测系统。这个项目不仅展示了MicroPython在嵌入式开发中的强大能力,还提供了可扩展的架构设计,为更复杂的物联网应用奠定了基础。

关键收获:

  1. 开发效率提升:Python语言大大简化了嵌入式开发
  2. 硬件抽象能力:MicroPython提供了良好的硬件抽象层
  3. 生态完整性:完整的物联网开发生态系统
  4. 可扩展架构:模块化设计便于功能扩展

未来可以进一步探索:

  1. 低功耗优化技术
  2. OTA无线升级功能
  3. 边缘计算能力集成
  4. 人工智能应用结合

希望本教程能够帮助开发者快速入门MicroPython物联网开发,并在实际项目中创造更多价值。

相关推荐
nvd112 小时前
SQLAlchemy 2.0 类型注解指南:`Mapped` 与 `mapped_column`
python
让学习成为一种生活方式2 小时前
AGAT v1.6.0 安装与使用--生信工具72
人工智能·python·机器学习
小陈phd2 小时前
Python MCP 工具开发入门:Server、Client 和 LLM 集成
开发语言·python·github
ShenLiang20252 小时前
识别SQL里的列名
大数据·人工智能·python
jijkck2 小时前
python库--pyautogui————windows模拟鼠标键盘、图像自动匹配、按钮弹窗
python·windows 10
2501_944452232 小时前
外观设置 Cordova 与 OpenHarmony 混合开发实战
python
星e雨2 小时前
ComfyUI 本地安装指导
python
大力财经2 小时前
贾跃亭总结2025:独在异乡为异客,万里归心向北京
大数据·人工智能·物联网
云山工作室2 小时前
基于zigbee的广告牌安全监测系统设计与实现(论文+源码)
单片机·毕业设计·毕设