核桃派
直播中

张峻巍

1年用户 42经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[讨论]

【核桃派ZeroW开发板体验连载】小小气象站 05雏形

前言

感谢核桃派和电子发烧友论坛提供的这次机会让我有机会体验核桃派(WalnutPi)ZeroW这款linux开发板,希望可以借这个机会好好学习一下。

I2C介绍

I2C,全称为Inter-Integrated Circuit,即“集成电路间”通信,是一种嵌入式总线,用于连接低速度外围设备到处理器和微控制器。I2C总线由Philips(现在的NXP Semiconductors)在1980年代初期开发,目的是简化电子系统中的设备连接。

I2C总线由两根线组成:数据线(SDA)和时钟线(SCL)。这种设计使得I2C总线非常灵活,可以连接多个设备(从设备),并且只需要两根线即可实现通信。

I2C总线的主要特点包括:

  1. 多主模式 :多个主设备可以控制总线,但一次只有一个主设备可以发送数据。
  2. 地址空间 :每个从设备都有一个唯一的地址,通过这个地址进行通信。
  3. 同步通信 :通信是同步的,由时钟信号控制数据传输的速率。
  4. 低速通信 :I2C设计用于低速通信,通常用于短距离通信,速率可以达到400 kbps(标准模式)或1 Mbps(快速模式)。
  5. 总线仲裁 :当两个主设备同时尝试控制总线时,I2C总线使用一种称为总线仲裁的机制来决定哪个设备可以继续发送数据。
  6. 电源管理 :从设备可以进入低功耗模式,主设备可以通过发送特定的信号来唤醒它们。

I2C总线广泛应用于各种电子设备中,如传感器、EEPROM、实时时钟(RTC)和其他许多类型的外围设备。由于其简单性和灵活性,I2C成为了嵌入式系统中非常流行的通信协议之一。

测试

因为I2C可以接同一个不会有影响,所以都接在I2C1上,接着上代码:

'''
实验名称:小小气象站雏形
实验平台:核桃派ZeroW
'''
import time,board,busio,adafruit_ssd1306,adafruit_ahtx0,adafruit_bmp280
from digitalio import DigitalInOut
from PIL import Image, ImageDraw, ImageFont


i2c = busio.I2C(board.SCL1, board.SDA1)
sensor = adafruit_ahtx0.AHTx0(i2c)
# #构建BMP280,模块I2C地址为默认的0x76.
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c,address=0x76)
disp = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
bmp280.sea_level_pressure = 1013.25
# 清屏
disp.fill(0)
disp.show()

width = disp.width
height = disp.height
# 单色位图
image = Image.new("1", (width, height))

# 定义绘图对象
draw = ImageDraw.Draw(image)

# 绘制一个黑色填充的矩形以清屏
draw.rectangle((0, 0, width, height), outline=0, fill=0)
top = -2
# 定义字体
font = ImageFont.load_default()
while True:
    draw.rectangle((0, 0, width, height), outline=0, fill=0)
    draw.text((0, top + 0), "temp: %.2fC"  %(sensor.temperature), font=font, fill=255)
    draw.text((0, top + 8), "humi: %.2f"  %(sensor.temperature), font=font, fill=255)
    draw.text((0, top + 16), "Press: %.2fhPa"  %(sensor.temperature), font=font, fill=255)
    draw.text((0, top + 25), "Alti: %.2fmeters"  %(sensor.temperature), font=font, fill=255)
    # 显示信息
    disp.image(image)
    disp.show()
    time.sleep(1)

运行一下:

结果

更多回帖

发帖
×
20
完善资料,
赚取积分