|
这次的Follow me第4期,在核心板 W5500-EVB-Pico外,没有选择官方推荐Adafruit Sharp Memory Display Breakout,经过仔细挑选,最终选择了Pervasive Displays的EPD(墨水屏),收到后,感觉非常的好用。
一、选购配置清单
具体的配置清单如下:
感兴趣的同学,可以参考。
如果觉得超标了,还可以参考如下的配置,一次得两块EPD屏:
选择上面的 Pervasive Displays 的 EPD,要搭配 Pervasive Displays 出的对应的 EPD Extension Kit Gen 3 转接板。
我选择的是一块 3.7 英寸的支持红黑白的又大又好的EPD。
上面第二选择,是1块1.54、1块2.66共两块EPD。
二、开箱
这次的快递很给力,没有收到任何阻扰或者干扰,很快就到了。
得捷整体的包装,还是一如既往的一个大大纸箱子,直接开了在楼下就扔了,包括包装袋啥的。
最终三个小盒子:
最上面的是转接板,中间的是屏幕的,下面是咱们的主角的。
拆开后,放在一起合影:
背后的泡沫黑盒子,是屏幕的,两边都有泡沫,把屏幕保护的好好的。
线是扩展板带的,用于连接开发板的。
再详细看看各个部件。
先是W5500-EVB-Pico:
可以看到,有6个GPIO口,W5500需要占用。
再来看看屏幕:
真的是又大又好,FPC接口。
再看看转接板:
这个转接板,FPC母座有两个,一个是24pin的,一个是34pin,能够接不通规格的屏幕。
连接开发板的是12 pin的,带的线,是10pin + 2根单线。使用10pin的就能够用于屏幕驱动了。
另外,正面还有一个跳线,用于区分连接的是5寸以上还是以下的屏。
三、开发环境
因为 W5500-EVB-Pico 的核心是RP2040,所以支持RP2040的环境,都能跑。
常见的,有MicroPython、CircuitPython、Arduino、pico-sdk,其他的就不一一列出了。
1. 安装MicroPython或者CircuitPython
要装MicroPython或者CircuitPython,使用Thonny即可。
1.1 进入BOOT盘模式
首先把开发板连接到电脑,装好对应的驱动,然后按住BOOTSEL按键不放,再按一下RUN按键重启,待电脑出现一个名字叫RPI-RP2的U盘后,继续:
1.2 Thonny中选择固件
1.2.1 MicroPython固件:
1.2.2 CircuitPython固件:
点击安装,即可自动安装对应的固件。
1.3 连接到Python开发环境:
安装完成后,点击确定,就能够连接上了。
如果没有出现,点击右下角选择也可:
1.3.1 MicroPython开发环境:
1.3.2 CircuitPython:
2. Arduino开发环境:
在Arduino IDE中,先添加rp2040对应的开发板网址:
再安装RP2040开发板的库:
然后连接即可:
3. pico-sdk开发环境
这个环境的,可以参考Pico官方的文档:
写的非常的详细。
四、BLINK点灯
在上面的几种环境中,点灯都很简单,确定好LED的GPIO口即可:
通过官方资料可以得知,用户LED连接到了GPIO25:
下面分别用几种环境点灯:
4.1 MicroPython环境:
import machine
import time
# 初始化LED
led = machine.Pin(25, machine.Pin.OUT)
# LED状态
status = False
# 设置LED为熄灭状态
led.value(status)
# 循环
while True:
# LED状态翻转
status = not status
led.value(status)
# 等待1秒
time.sleep(1)
4.2 CircuitPython环境:
import board
import digitalio
import time
# 初始化LED
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
# LED状态
status = False
# 设置LED为熄灭状态
led.value = status
# 循环
while True:
# LED状态翻转
status = not status
led.value = status
# 等待1秒
time.sleep(1)
在CircuitPython中,board.LED一般表示板子默认的LED,使用board.GP25也可以。
4.3 Arduino开发环境:
Arduino开发环境的,直接使用Arduino IDE自带的Blink实例即可:
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
在Arduino代码中,LED_BUILTIN一般表示板子默认的LED,直接使用25也可以。
4.4 pico-sdk
picos-sdk环境的,可以参考官方的实例:
/**
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "pico/stdlib.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
}
#endif
}
运行或者编译上面的代码下载后运行,最终效果如下:
五、驱动液晶显示器
因为点屏的代码,不那么通用,所以这里就不列出多种环境下的点亮屏幕了。下面的代码,会使用Arduino环境来进行。
1. 连线:
首先,要做好连接:
1.1 转接板引脚连线:
1.2 转接板连接EPD:
1.3 转接板连接Pico:
1.4 连接整体:
当然,如果有给RP2040使用的扩展板,连接会更方便一些。
2. 在Arduino IDE中安装扩展:
3. 编写点屏代码:
// Screen
#include "PDLS_EXT3_Basic_Global.h"
// SDK
// #include <Arduino.h>
#include "hV_HAL_Peripherals.h"
// Configuration
#include "hV_Configuration.h"
// Define variables and constants
Screen_EPD_EXT3 myScreen(eScreen_EPD_EXT3_370, boardRaspberryPiPico_RP2040);
// Utilities
///
/// @brief Wait with countdown
/// @param second duration, s
///
void wait(uint8_t second)
{
for (uint8_t i = second; i > 0; i--)
{
Serial.print(formatString(" > %i \r", i));
delay(1000);
}
Serial.print(" \r");
}
// Functions
///
/// @brief show text on screen
///
void displayText()
{
myScreen.setOrientation(1);
myScreen.selectFont(Font_Terminal16x24);
myScreen.gText(50, 50, "Follow me 4", myColours.red);
myScreen.gText(50, 80, "I am W5500-EVB-Pico", myColours.black);
myScreen.flush();
}
// Add setup code
///
/// @brief Setup
///
void setup()
{
Serial.begin(115200);
delay(500);
Serial.println("begin... ");
myScreen.begin();
Serial.println("Characters... ");
myScreen.clear();
displayText();
wait(8);
Serial.println("=== ");
Serial.println();
}
// Add loop code
///
/// @brief Loop, empty
///
void loop()
{
delay(1000);
}
在上述代码中,设置了屏幕的方向、显示用的字体,然后用myScreen.gText()进行显示,最后使用 myScreen.flush() 刷新到屏幕上生效。
4. 运行效果:
编译上述代码,然后下载到W550-EVB-Pico,运行效果如下:
六、总结
这次核心板,又是Pico,所以整体难度非常低,能用的开发环境也非常多,第一期的扩展板和传感器,也都能用上。
我这次搭配选择的 Pervasive Displays的EPD ,也感觉非常的棒,后面可以好好利用起来了。