注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
HonestQiao的个人空间 https://home.eeworld.com.cn/space-uid-1243714.html [收藏] [复制] [分享] [RSS]
日志

【得捷电子Follow me第4期】入门任务:开箱,开发环境,BLINK,驱动液晶显示器

已有 396 次阅读2024-1-5 22:24 |个人分类:Follow me 4

这次的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官方的文档:

javascript:;

写的非常的详细。

 

四、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环境的,可以参考官方的实例:

javascript:;

/**
 * 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
}

 

运行或者编译上面的代码下载后运行,最终效果如下:

4564_1704463483

 

五、驱动液晶显示器

因为点屏的代码,不那么通用,所以这里就不列出多种环境下的点亮屏幕了。下面的代码,会使用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 ,也感觉非常的棒,后面可以好好利用起来了。

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章