
最近买了树莓派Pico+OLED1602和一个蓝牙ESP32就想着能能搞点小东西,就尝试了一下硬件版的ScrollDigitalNote ,看看能不能搞出来,目前只是一个小的demo吧!
前提
硬件
- 树莓派pico
- 0.9寸OLED显示屏
- ESP32 蓝牙WIFI模块
软件
- Thonny:用于编程上传代码
- Buletooth Controller:用于和蓝牙模块进行通信
接线
- 我这里主要说一下蓝牙模块吧,拆坑有点久,就是电源3.3V带不动,要用最大的电源
VBUS。串口还是要按Pico的接口来选,不要随便连接。
| 模块接口 | PICO对应针脚 |
|---|---|
| 蓝牙VCC | VBUS |
| 蓝牙GND | GND |
| 蓝牙RX | GP17 |
| 蓝牙TX | GP16 |
| OLED-VCC | 3V3 |
| OLED-GND | GND |
| OLED-SCL | GP21 |
| OLED-SDA | GP20 |
- PiCO 引脚说明

Code
感觉硬件上的代码编写要比软件严格多了,同一个代码在电脑上能运行不代表单独在单排机上也能运行。我这下面的
cmd = uart.readline().decode()如果没写try...except...的话在PICO 上是无法运行的。
- main.py
import machine
import utime
from ssd1306 import SSD1306_I2C
led_status = 1
data_list = ["Just Be Happy !","Hold On !","Try Your Best !"]
uart = machine.UART(0, baudrate=115200, tx=machine.Pin(16), rx=machine.Pin(17))
#print(uart)
led = machine.Pin(25, machine.Pin.OUT)
sda=machine.Pin(20)
scl=machine.Pin(21)
i2c=machine.I2C(0, sda=sda, scl=scl, freq=400000)
oled = SSD1306_I2C(128, 32, i2c)
def OLED(string):
#一行最多16个字符
#共3行
#oled.text('****************', 0, 0)
# 尝试居中对齐
if len(string) < 12:
x = int ((64-len(string)) / 2)
else:
x = 0
oled.text(str(string), x, 10)
#oled.text('****************', 0, 20)
oled.show()
utime.sleep(3)
#oled.fill(1)
#oled.show()
# 防止长时间造成的烧屏
oled.fill(0)
oled.show()
utime.sleep(0.1)
def sendBigData():
for x in data_list:
uart.write(x)
OLED(str(x))
def clearData():
data_list.clear()
def addData(data):
data_list.append(data)
OLED("HELLO WORLD! ")
led.value(led_status)
utime.sleep(1)
led_status = 0
while True:
led.value(led_status)
try:
cmd = uart.readline().decode()
OLED("Input:" + str(cmd))
if cmd == 'on':
led_status = 1
elif cmd == 'off':
led_status = 0
elif cmd == 'clear' :
clearData()
elif cmd == 'del':
del data_list[-1]
OLED("Del Last Data !")
elif cmd == 'add' :
uart.write("Please Input Your Data In 5 Seconds !\n")
OLED("Input Your Data ")
utime.sleep(5)
try:
get = uart.readline().decode()
addData(get)
if get in data_list:
uart.write("insert successful!")
OLED("INSERT OK!")
else:
uart.write("insert failed!")
OLED("INSERT FAILED")
except:
OLED("No Input !")
else:
continue
except:
OLED("emperinter")
sendBigData()
led.value(1)
OLED("Something Wrong!")
如需观看演示视频,请访问: https://www.emperinter.info/2022/04/01/how-to-use-raspberry-pico-with-oled-screen-and-bluetooth/
博主使用树莓派Pico、0.9寸OLED显示屏和ESP32蓝牙模块,创建了一个硬件版的ScrollDigitalNote。通过Thonny编程并利用BluetoothController进行通信,实现了通过蓝牙控制OLED屏幕显示内容。遇到的问题是蓝牙模块电源需用VBUS供电,并详细列出了接线配置。代码中强调了在PICO上运行的严格性,提供了代码示例和不同指令的功能,如开关LED、清除和添加显示数据。
1099

被折叠的 条评论
为什么被折叠?



