基于 Teensy 4.1 通过网络实现对led的点亮
该项目使用了Teensy 4.1,实现了启动网络的设计,它的主要功能为:通过网络控制板载led。
标签
NXP
Teensy 4.1
网卡
悠悠兹有
更新2025-01-14
123

平台介绍

Teensy 4.1搭载了i.MX RT1062处理器,该处理器基于ARM Cortex-M7内核,运行频率高达600MHz,配备了7936K闪存和1024K RAM,以及4K EEPROM,提供了充足的存储空间。支持多种连接接口,如UART、SPI、I2C、USB等,以及2个10/100M以太网控制器和3个CAN接口,为开发者提供了丰富的连接选项。具备高速GPIO、CAN FD和同步并行NAND/NOR/PSRAM控制器等实时应用功能,以及2D图形、摄像头和各种存储器接口。编程环境具有完整的Arduino开发环境,易于开发。开发者可以使用Arduino IDE、Visual Micro、PlatformIO、CircuitPython或命令行工具进行编程,还支持MicroPython。它拥有一个活跃的社区,开发者可以在社区中分享经验、解决问题和获取支持。

官方资料:Teensy® 4.1

编译环境

根据官方推荐,安装 Arduino ide

设置外部包的地址,首选项,配置地址:https://www.pjrc.com/teensy/package_teensy_index.json

image.png

开发包管理器里搜索teensy,点击安装。

image.png

--------------------------------------------------------------------------------------

配置编译环境

image.png

简单的测试代码

void setup() {
  // put your setup code here, to run once:
  Keyboard.print("Hello World");
}
void loop() {
  // put your main code here, to run repeatedly:
  delay(2000); // 暂停2秒
  Keyboard.print("Hello World");
}

效果是两次模拟键盘,输出 Hello World。

gpio的使用

配置引脚

 pinMode(13,OUTPUT);

控制引脚亮灭 一秒周期

  while(1){
    delay(1000);
    digitalWrite(13,!digitalRead(13));
    Serial.println("9999999999999");
  }



硬件介绍

前面

image.png

背面

image.png

背面的flash焊盘可选,原理图如下:

image.png


led 位置,连接引脚为b0_03

image.png



设计思路

teensy4.1通过有线实现网络连接,创建客户端,连接主机上的服务器,接收主机发过来的指令。

解析指令,并实现对led的控制。

image.png

led

打板一个rgb灯,增加一些效果,好看一点。

pcb如下图,led共阳。

image.png

主要代码

项目是基于官方例程 :TelnetClient

网络通了

image.png

image.png


创建客户端,并连接服务器,服务器使用端口 10002.

Ethernet.begin(mac, ip);  
  while (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("Ethernet cable is not connected.");
    delay(500);
  }

if (client.connect(server, 10002)) {
    Serial.println("connected");
  } else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }

接收 服务器发过来的数据

  if (client.available()) {
    char c = client.read();
    //Serial.println(c);
    //Serial.println(c,DEC);
    OpsLed(c);
  }

解析数据,并显示不同的灯,三个rgb引脚,使用编号 0 1 2引脚。

设计8位二进制,高四位用于标志点亮灯,第四位用于设置亮灭时间,实际效果中,第四位暂不用实现。

void OpsLed(char opsId)
{
  uint8_t r,g,b;
  Serial.println(opsId,HEX);
  Serial.println(opsId,DEC);
  r= !(opsId & 0x10);
  g= !(opsId & 0x20);
  b= !(opsId & 0x40);
  digitalWrite(0,r);
  digitalWrite(1,g);
  digitalWrite(2,b);
}


效果:

image.png

疑难问题

ardunio中,引脚使用了一个整数标识,如下图:

image.png


官方的引脚名字是字母加数字,不太理解如何完成的转换。


活动总结与未来计划

非常感谢电子森林的活动,触摸了nxp的高性能mcu,学习到了很多知识。对有线网络的硬件软件的结构设计,以及phy与mac的关系有了初步了解。

希望咱们电子森林越来越好,卡片选择也越来越全面,培养更多的嵌入式开发人才。

附件下载
TelnetClient.zip
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号