Funpack 3-5 Teensy 4.1-通过网口通信,控制板子上的LED灯
该项目使用了Arduino IDE,实现了Teensy 4.1的设计,它的主要功能为:从板子的以太网排针处引出接口,并通过网口通信,控制板子上的LED灯。
标签
嵌入式系统
Funpack活动
Teensy 4.1
网口通信
QingSpace
更新2025-01-13
10

1.硬件介绍

Teensy 4.1 是一款由 PJRC 公司开发的高性能微控制器板,基于 NXP 的 i.MX RT1062 处理器。它以其强大的处理能力、丰富的外设接口和紧凑的尺寸,广泛应用于嵌入式系统、DIY 项目、音频处理、机器人控制等领域。

主要特性

  1. 处理器:
    • 型号: NXP i.MX RT1062
    • 核心: ARM Cortex-M7
    • 主频: 600 MHz
    • 性能: 高达 3016 CoreMark 分数
  2. 内存:
    • RAM: 1MB (内部)
    • Flash: 8MB (外部 QSPI Flash)
  3. 外设接口:
    • USB: 1 x USB 2.0 Host/Device
    • 以太网: 10/100 Mbps Ethernet (内置 PHY)
    • CAN: 2 x CAN Bus
    • 串口: 8 x UART
    • I2C: 3 x I2C
    • SPI: 3 x SPI
    • PWM: 30 x PWM 输出
    • ADC: 14 x 12-bit ADC 输入
    • DAC: 2 x 12-bit DAC 输出
  4. 扩展性:
    • 引脚: 46 个 GPIO 引脚
    • 扩展接口: 支持 MicroSD 卡、PSRAM、外部 Flash 等
  5. 尺寸:
    • 长宽: 2.4 x 0.7 英寸 (61 x 18 mm)
  6. 电源:
    • 电压: 3.3V 操作电压
    • 输入电压: 3.6V 到 5.5V

开发环境

  • Arduino IDE: 支持 Teensy 4.1,提供丰富的库和示例代码。
  • Teensyduino: PJRC 提供的 Arduino IDE 扩展,支持 Teensy 系列板卡。
  • 其他工具: 支持 PlatformIO、Segger Embedded Studio 等开发环境。

应用场景

  • 音频处理: 高性能 DSP 能力,适合音频合成、效果处理等。
  • 机器人控制: 丰富的 PWM 和通信接口,适合电机控制和传感器集成。
  • 物联网: 内置以太网和 CAN 总线,适合网络通信和工业控制。
  • DIY 项目: 紧凑的尺寸和强大的性能,适合各种创意项目。

2.功能介绍

该项目实现了通过给板卡添加网口后通过网口通信,控制板子上的LED灯。

3.设计思路

Arduino IDE的Teensy包中提供了丰富的例程,我们寻找到名为ServerWithListeners的demo便让板卡实现以太网通信,接下来根据我们的需求在代码中加上点灯的操作即可。

4.流程图

5.代码说明

void processClientData(ClientState &state) {
 // Loop over available data until an empty line or no more data
 // Note that if emptyLine starts as false then this will ignore any
 // initial blank line.
 while (true) {
   int avail = state.client.available();
   if (avail <= 0) {
     return;
  }

   state.lastRead = millis();
   int c = state.client.read();
   if(i < 10)
  {
     str[i] = c;
     i++;
  }
   state.client.flush();

   printf("%c", c);
   if(!flag)
  {
     if (str[5] == '1')
    {
       digitalWrite(LED_BUILTIN, HIGH);
       printf("LED ON!\n");
       flag = 1;
    }
     else if(str[5] == '0')
    {
       digitalWrite(LED_BUILTIN, LOW);
       printf("LED OFF!\n");
       flag = 1;
    }
  }
     
   if (c == '\n') {
     if (state.emptyLine) {
       for(int j = 0; j < 10; j++)
      {
         str[j] = '\0';
      }
       flag = 0;
       i = 0;
       break;
    }

     // Start a new empty line
     state.emptyLine = true;
  } else if (c != '\r') {
     // Ignore carriage returns because CRLF is a likely pattern in
     // an HTTP request
     state.emptyLine = false;
  }
}

以上为核心代码,可以看到,我们检测通过以太网传来的字符串的第六个字符,如果是1则点亮LED,如果是0则熄灭LED,同时,执行一次检测之后便把标志位设置为1记录已经检测到一次信息,直到识别到换行符代表此次检测结束,把标志位重新置零。

当烧录之后,在浏览器中访问板卡的IP地址(如192.168.1.119)加上特定内容变可以实现点灯和灭灯。

如访问192.168.1.119/1可以让LED点亮。

访问192.168.1.119/0可以让LED熄灭。

也可以在命令提示符中输入指令“curl -X GET http://192.168.1.119/1”实现点亮LED。

具体效果可以参考视频演示。

6.心得体会

本项目让我对于以太网通信有了新的认识,无论是原理还是流程都有了更深入的理解,相信本项目会让我在未来的通信研究中更进一步。

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