树莓派 Pico W IoT 项目:智能植物监测系统(使用OLED屏幕)

一.硬件准备

  • 树莓派 Pico W
  • 土壤湿度传感器
  • 温度传感器(例如 DS18B20)
  • 光照传感器(例如 BH1750)
  • OLED 显示屏(例如 SSD1306)
  • 面包板和连接线
  • 二.软件准备

  • MicroPython 固件(已经在之前的步骤中安装)
  • Thonny IDE(已经在之前的步骤中安装)
  • 连接 Wi-Fi 的代码(已经在之前的步骤中编写)
  • 见《树莓派Pico W的wifi模块配置与简单实战》

    三、项目步骤

    1. 连接硬件
  • 将土壤湿度传感器的 VCC 接 Pico W 的 3.3V,GND 接 Pico W 的 GND,数据引脚接 Pico W 的一个 ADC 引脚(例如 ADC0)。
  • 将 DS18B20 温度传感器的 VCC 接 Pico W 的 3.3V,GND 接 Pico W 的 GND,数据引脚接 Pico W 的一个 GPIO 引脚(例如 GPIO 16)。
  • 将 BH1750 光照传感器的 VCC 接 Pico W 的 3.3V,GND 接 Pico W 的 GND,SCL 和 SDA 分别接 Pico W 的 I2C 引脚(SCL 接 GPIO 17,SDA 接 GPIO 16)。
  •     2.安装所需库

    在Thonny IDE上写入以下code。

    8a489b955298446181e7ce653ba22ac8.jpg

        3.编写代码

    编写代码来读取土壤湿度传感器、DS18B20 温度传感器和 BH1750 光照传感器的数据,显示在 OLED 屏上,并上传到云服务。

    import network

    import urequests as requests

    import time

    from machine import Pin, ADC, I2C

    import ds18x20

    import onewire

    import bh1750

    import ssd1306

     

    ssid = 'your_SSID' # 替换为你的 Wi-Fi 名称

    password = 'your_password' # 替换为你的 Wi-Fi 密码

    api_key = 'your_thingspeak_api_key' # 替换为你的 ThingSpeak API 密钥

     

    # 连接到 Wi-Fi

    wlan = network.WLAN(network.STA_IF)

    wlan.active(True)

    wlan.connect(ssid, password)

     

    print("Connecting to Wi-Fi", end="")

    while not wlan.isconnected():

        print(".", end="")

        time.sleep(1)

    print("\nConnected to Wi-Fi")

    print("Network config:", wlan.ifconfig())

     

    # 初始化传感器

    adc = ADC(Pin(26)) # 土壤湿度传感器接 ADC0

    ow = onewire.OneWire(Pin(16)) # DS18B20 数据引脚接 GPIO16

    ds = ds18x20.DS18X20(ow)

    i2c = I2C(0, scl=Pin(17), sda=Pin(16)) # BH1750 和 OLED 接 I2C0

    light_sensor = bh1750.BH1750(i2c)

    oled = ssd1306.SSD1306_I2C(128, 64, i2c)

     

    # 搜索 DS18B20 传感器

    roms = ds.scan()

    print('Found DS devices: ', roms)

     

    while True:

        # 读取土壤湿度

        soil_moisture = adc.read_u16()

        # 读取温度

        ds.convert_temp()

        time.sleep_ms(750)

        temp = ds.read_temp(roms[0])

        # 读取光照强度

        light_intensity = light_sensor.luminance(bh1750.BH1750.CONT_HIRES_1)

     

        # 显示数据在 OLED 上

        oled.fill(0)

        oled.text('Soil: {}'.format(soil_moisture), 0, 0)

        oled.text('Temp: {}C'.format(temp), 0, 20)

        oled.text('Light: {}lx'.format(light_intensity), 0, 40)

        oled.show()

     

        print('Soil Moisture: {}, Temperature: {}°C, Light Intensity: {} lux'.format(soil_moisture, temp, light_intensity))

     

        # 上传数据到 ThingSpeak

        url = 'https://api.thingspeak.com/update?api_key={}&field1={}&field2={}&field3={}'.format(api_key, soil_moisture, temp, light_intensity)

        response = requests.get(url)

        print(response.text)

     

        # 每 15 秒上传一次数据

        time.sleep(15)

    2.保存这个.py文件于pico w上

    四、运行项目

    1. 确保树莓派 Pico W 已连接到电脑并打开 Thonny IDE。
    2. 在 Thonny IDE 中打开并运行代码。
    3. 观察 Thonny IDE 的 Shell 窗口(底下的)输出,确认土壤湿度、温度和光照强度数据被成功读取并显示在 OLED

    作者:对树苺派的狂热

    物联沃分享整理
    物联沃-IOTWORD物联网 » 树莓派 Pico W IoT 项目:智能植物监测系统(使用OLED屏幕)

    发表回复