(Output) Mobile Module - PCB design
Write something at the front
What I want to achieve is that when this board receiving the message from my reComputer, it can display my calendar and meanwhile doing something, like controling a relay.
Thus, for my output PCB design board, I will have one ILI9431 display integrated. Since the display is heavy, and the pins are all arranged on one side.
It has 8 connectors and I will have one PinHeader_1x08_P2.54mm_Horizontal_SMD
for connecting it. And then I will have a Grove connector, for connecting other modules.
Design PCB on the KiCAD
I measured the connectors on the display and it quite fit. But the Grove connector is not well, I might need more resource for that.
Any way, I first check the principle of the display and connect them one by one to the XIAO:
Then I add one Conn_PinHeader_1x04_P2.54mm_Vertical_THT_D1mm
as Grove connector represented. But the parameter seems not quite fit(this is later I known).
In order to walk the line more easily, to adjust the back and forth. This is final version:
Hence the display code will be:
#define TFT_CS A0
#define TFT_RST A2
#define TFT_DC A1
#define TFT_MOSI 10
#define TFT_CLK 8
TFT_LED
connector just connect to a HIGH level Pin 9
.
And the signal connecotor of Grove is connecoting D6
, or 21
.
I refer to the previous setting up from week8, and milling:
The board is done:
And after soldering:
Front:
and back:
Connection Check
Read the serial port and display text
Here is the code:
#include <SPI.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ILI9341.h> // Hardware-specific library
// 定义使用的引脚
#define TFT_CS A0
#define TFT_RST A2
#define TFT_DC A1
#define TFT_MOSI 10
#define TFT_CLK 8
#define TFT_LED A3 // 如果不控制背光,可以忽略这个引脚或始终保持为HIGH
// 初始化Adafruit ILI9341
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
Serial.begin(9600); // 初始化串口通信,设置波特率为9600
pinMode(TFT_LED, OUTPUT);
digitalWrite(TFT_LED, HIGH); // 开启背光
tft.begin(); // 初始化屏幕
delay(1000);
tft.setRotation(1); // 根据需要设置屏幕方向
// 清屏
tft.fillScreen(ILI9341_BLUE);
// 设置文字颜色和背景颜色
tft.setTextColor(ILI9341_RED, ILI9341_BLACK);
// 设置文字大小
tft.setTextSize(2);
// 在屏幕上显示 Hello World!
tft.setCursor(0, 0); // 设置文本开始的位置
tft.println("Hello World!");
}
void loop() {
// 检查是否有串口数据可读
if (Serial.available()) {
// 读取串口数据
String input = Serial.readStringUntil('\n');
// 在屏幕上显示读取到的数据
tft.println(input);
}
}
Turn on Relay
Here is the code
// Relay Control
void setup()
{
pinMode(D6, OUTPUT);
}
void loop()
{
digitalWrite(D6, HIGH);
}
Now I can move to the case design.