描述
<div class="document">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">注:* 为必填项</p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在报名阶段填写 ↓</span></strong></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 1、项目功能介绍</h3>
<hr class="horizontal-splitline normal-bold-2">
<p><span>很多时候出于空间和便捷性考虑,我们希望一套键盘鼠标来控制多个</span>PC<span>。通常情况下可以通过 </span>KVM<span>实现这个功能。显而易见,他们使用有线方式来进行连接,仍然会占用大量空间。这次使用 </span>ESP32<span>来实现无线的键盘鼠标扩展功能。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/nYQEWR7lQGKYo1bMPUOSB1UxjxmYdG1JiiqMgiSx.jpeg" alt="" width="790" height="1039"></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*2、项目属性</h3>
<hr class="horizontal-splitline normal-bold-2">
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6;"><span style="font-size: 14px;">原创项目首次公开</span></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 3、开源协议</h3>
<hr class="horizontal-splitline normal-bold-2">
<p> </p>
<p>GPL3.0<span>开源协议</span> </p>
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><strong><span style="color: #0093e6;">请在竞赛阶段填写 ↓</span></strong></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*4、硬件部分</h3>
<hr class="horizontal-splitline normal-bold-2">
<p>为了完成这个目标,选择眼下最流行的 Arduino 开发环境,配合ESP32 来实现。这次使用到了 ESP32 和 ESP32 S2两种型号的主控芯片。</p>
<p>首先要实现解析USB键盘鼠标的功能,通常情况下可以使用 Arduino USB Host Shield,但是因为我们需要同时解析USB键盘和鼠标,这样的方案会显得比较麻烦,另外一个原因是这个Shield的主要芯片是 Max3421e 现在价格较高(立创商城报价人民币42-65元)。因此,选择了CH9350(这是一颗国产芯片,是南京沁恒WCH出品的, 现在非常流行的 USB转串口芯片CH340 也是他们家的产品)。CH9350能够将 USB 键盘鼠标的有效信息转为串口数据。芯片特点如下:<br>• 支持12Mbps全速USB传输和1.5Mbps低速USB传输,兼容USB V2.0。<br>• 上位机端USB端口符合标准HID类协议,不需要额外安装驱动程序,支持内置HID类设备驱动的Windows、Linux、MAC等操作系统。<br>• 同一芯片可配置为上位机模式和下位机模式,分别连接USB-Host主机和USB键盘、鼠标。<br>• 支持USB键盘鼠标在BIOS界面使用,支持多媒体功能键,支持不同分辨率USB鼠标。<br>• 支持各种品牌的USB键盘鼠标、USB无线键盘鼠标、USB转PS2线等。<br>• 上位机端和下位机端支持热插拔。<br>• 提供发送状态引脚,支持485通讯。<br>• 串口支持115200/57600/38400串口通信波特率。<br>• 内置晶振和上电复位电路,外围电路简单。<br>• 支持5V、3.3V电源电压。<br>• 提供LQFP-48无铅封装,兼容RoHS。<br> 同时这个款芯片立创商城报价是 25元,比Max3421便宜一大截。<br>然后围绕这个芯片,给DFRobot 的 FireBeetle 主控板(芯片是ESP32D32)设计一个转接板,能够将USB 键盘鼠标信号解析为串口数据。</p>
<p><br>核心是 CH9350芯片,它能够一次性支持2个 USB Host接口,下图中的 USB1 和 USB2。LED1 和 LED2 是通讯指示灯,对应的 USB1 和 USB2 如果有正常的通讯,对应的 LED会熄灭。此外,还有一个USB_Power 是USB公头,用于从外部取电,避免 FireBeetle 供电不足的情况。</p>
<p> </p>
<p><img src="//image.lceda.cn/pullimage/ZvZbJffd5PYutWL8MAc4dDXAy8N30RJQMXDfWwnE.png" alt="" width="1457" height="873"></p>
<p> </p>
<p>PCB <span>设计如下:</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/9vfBGYZAbUtXFqJZjh3XQVsHtGOdhnPhZkFiAJ06.png" alt="" width="450" height="732"></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<p>3D <span>预览如下:</span></p>
<p> </p>
<p><span><img src="//image.lceda.cn/pullimage/3K1Guno6xdIuG4SR1H78ZK7pnX1Fqphl5RKqbwCK.png" alt=""></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"><span>做出来就是这样(美中不足的因为</span>2<span>个</span>USB <span>母头的存在,这个板子稍微大一些。另外,这个芯片引脚比较密集,焊接费了一些功夫,如果你对自己焊接技术不放心,推荐直接</span> SMT <span>避免手工焊接):</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> <img src="//image.lceda.cn/pullimage/DxqmgRhNaZYwLVmyGG6aJQTrg8nUCh3wJRORozMI.png" alt="" width="1025" height="662"></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<p><span>接下来我们还需要设计和用户交互的部分,这一部分电路比较简单,有四个按钮,用于选择当前工作的接收器,另外有四个指示灯用于指示当前的工作接收器。</span></p>
<p><span><img src="//image.lceda.cn/pullimage/vapxSPbmTlPilYuk3YrIIUeZdQORyq1G8M076HFq.png" alt=""></span></p>
<p>PCB<span>设计如下,比较有意思的是:</span>LED <span>是反贴(发光部分朝向</span>PCB<span>方向)在</span>PCB<span>背面的,然后这里使用了阻焊层,这样光线能够透过</span>PCB<span>照亮正面的字迹。</span></p>
<p><span><img src="//image.lceda.cn/pullimage/8ESfGNPp0spDK53ZNyyLGZHsib7bdZtbVoJa3Cq9.png" alt="" width="1072" height="680"></span></p>
<p> </p>
<p><span>很遗憾 </span>3D <span>预览无法展现这种效果</span></p>
<p><span><img src="//image.lceda.cn/pullimage/RdGEMNKCsSVeYCxEDB0bQ0KDLuxX5KPQV4vfnMYe.png" alt="" width="1200" height="767"></span></p>
<p> </p>
<p><span>实物拍摄:</span></p>
<p><span><img src="//image.lceda.cn/pullimage/sz3RZvkH3a8XLpvCx7dQnDc2QfuDkmcPH43G9afV.jpeg" alt="" width="1094" height="820"></span></p>
<p><span>于是我们有了三个卡:</span>FireBeetle<span>,</span>USB <span>键盘鼠标</span>Shield<span>和上面的用户交互界面卡。将三个插接在一起即可正常工作。上述就是发送端。</span></p>
<p><span>我们同样使用 </span>ESP32 <span>作为接收端,只是这里必须使用 </span>ESP32 S2 <span>主控,因为这款支持 </span>USB Device <span>,可以方便的实现一个 </span>USB <span>设备。你可以使用下面这种直接引出 </span>USB Device<span>的</span> ESP32 S2 <span>开发板(上面一个是 </span>CH340 <span>下载端口,一个是 </span>USB Device <span>端口):</span></p>
<p><span><img src="//image.lceda.cn/pullimage/A53rDfwKG9I7UihGNmZPPj6QySTp7uXrVGSPBksb.jpeg" alt="" width="800" height="800"></span></p>
<p> </p>
<p><span>除此之外,还可以直接购买</span>ESP32 S2<span>模块自己设计引出 </span>USB Device <span>引脚。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt pap-left-indent-1.6em" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*5、软件部分</h3>
<hr class="horizontal-splitline normal-bold-2">
<p>同样的,软件也有2个,一个是 键盘鼠标信息发送端,另外一个是数据接收端,还要负责模拟键盘鼠标设备。</p>
<p>前面提到了我们使用 CH9350进行键盘鼠标数据的解析,具体数据格式在 Data Sheet 上有描述:</p>
<p><img src="//image.lceda.cn/pullimage/VAcxuub2RrhpMhmSf71n0OeIZDOYFie0FCp9FLfX.png" alt="" width="1500" height="683"></p>
<p> </p>
<p><span>解析后的数据会出现在</span> FireBeetle <span>的</span> Serial2 <span>上。</span></p>
<p><span>首先解说发送端的关键代码:</span></p>
<p>1.<span>初始化时,使用下面的代码对于</span> CH9350 <span>发送数据,这样</span> Ch9350<span>只会发送有效的信息(就是说鼠标键盘有动作才会有数据出来)。</span></p>
<p> char SwitchToMode1[] = {0x57, 0xAB, 0x12, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x20};</p>
<p> for (int i = 0; i < sizeof(SwitchToMode1); i++) {</p>
<p> Serial2.write(SwitchToMode1[i]);</p>
<p> }</p>
<p> </p>
<p>2.ESP32 自带了一个称作 ESP-NOW 的功能,只需要简单的代码就能让两块 ESP32 轻松实现无线互联。</p>
<p> // 初始化 ESP-NOW<br> WiFi.mode(WIFI_STA);<br> if (esp_now_init() != ESP_OK) {<br> Serial.println("Error initializing ESP-NOW");<br> return;<br> }</p>
<p> // 设置发送数据回调函数<br> //esp_now_register_send_cb(OnDataSent);</p>
<p> // 绑定数据接收端,这里需要首先知道接收端的MAC,在文件开始处,使用下面的代码来给定 MAC<br>// 接收设备的 MAC 地址<br>// 红色 PCB 7C:DF:A1:06:70:EC <br>// 双TypeC 开发板 7C:DF:A1:06:5D:18 <br>// 双TypeC 开发板 7C:DF:A1:06:77:C0<br>// 大绿色开发板 7C:DF:A1:06:70:A4</p>
<p>uint8_t Receiver1[] = {0x7C, 0xDF, 0xA1, 0x06, 0x70, 0xEC};<br>uint8_t Receiver2[] = {0x7C, 0xDF, 0xA1, 0x06, 0x5D, 0x18};<br>uint8_t Receiver3[] = {0x7C, 0xDF, 0xA1, 0x06, 0x70, 0xA4};<br>uint8_t Receiver4[] = {0x7C, 0xDF, 0xA1, 0x06, 0x77, 0xC0};<br>// 接下来绑定接收端的MAC<br> esp_now_peer_info_t peerInfo;<br> memcpy(peerInfo.peer_addr, Receiver1, 6);<br> peerInfo.channel = 0;<br> peerInfo.encrypt = false;<br>3.使用 CurrentDevice 变量来记录当前接收端的动作(一些时候我们不会希望在多台机器上进行相同的键盘鼠标动作)</p>
<p> if (digitalRead(BUTTON1) == LOW) {<br> delay(100);<br> if (digitalRead(BUTTON1) == LOW) {<br> if ((CurrentDevice & BIT0) == 0) {<br> CurrentDevice |= BIT0;<br> } else {<br> CurrentDevice &= (~BIT0);<br> }<br> }<br> }</p>
<p>同样的,根据当前的CurrentDevice值设定LED<br> if (CurrentDevice != CurrentDeviceLast) {<br> digitalWrite(LED1, (CurrentDevice & BIT0 ? 1 : 0));<br> digitalWrite(LED2, (CurrentDevice & BIT1 ? 1 : 0));<br> digitalWrite(LED3, (CurrentDevice & BIT2 ? 1 : 0));<br> digitalWrite(LED4, (CurrentDevice & BIT3 ? 1 : 0));<br> CurrentDeviceLast = CurrentDevice;<br> Serial.println(CurrentDevice, HEX);<br> }<br>4.接收USB键盘鼠标的动作之后,根据前面的CurrentDevice状态,发送给不同的接收端,只需要esp_now_send()函数即可将数据送出:</p>
<p> if ((CurrentDevice & BIT0) != 0) {<br> // 发送数据<br> result = esp_now_send(Receiver1, Data, Counter);</p>
<p> // 检查数据是否发送成功<br> if (result == ESP_OK) {<br> // Serial.println("Sent success Receiver1");<br> }<br> else {<br> // Serial.println("Error sending the data to Receiver1");<br> }<br>}<br>上述就是发送端的关键代码,有兴趣的朋友可以直接阅读完整的代码实现。特别注意,因为我使用 DFRobot 的 FireBeetle, 所以编译时需要安装对应的 FireBeetle 支持包。<br>接下来介绍接收端的代码,相比发送,接收端要简单很多。同样只挑出来关键部分进行解说:<br>1. 无线接收的 ESP-NOW代码同样很简单,初始化之后注册回调函数即可,当收到无线信号后会自动进入esp_now_register_recv_cb()给定的函数中进行处理</p>
<p> // 初始化 ESP-NOW<br> WiFi.mode(WIFI_STA);<br> if (esp_now_init() != 0) {<br> Serial.println("Error initializing ESP-NOW");<br> return;<br> }</p>
<p> // 设置接收数据回调函数<br> esp_now_register_recv_cb(OnDataRecv);</p>
<p>2. 收到数据后的处理代码中会使用verifyData()函数对接收到的数据进行校验,之后再根据数据类型使用device.directMS() 和device.directKB分别处理</p>
<p>// 数据接收回调函数<br>void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {<br> char *Starter = (char*)incomingData;<br> if (len>72) {return;}<br> <br> while (Starter < (char *)(incomingData+len)) {<br> if (verifyData((char*)Starter, Starter[3]+4)) {<br> <br> for (int i = 0; i < Starter[3]+4; i++) {<br> Serial.print(Starter[i], HEX);<br> Serial.print(" ");<br> }<br> Serial.println(" ");<br> // 如果是鼠标 <br> if (((Starter[4] >> 4) & 0x3) == 0x2) {<br> device.directMS((char *)&Starter[5]);<br> }<br> //如果是键盘<br> if ((((Starter[4] >> 4) & 0x3) == 0x3)||(((Starter[4] >> 4) & 0x3) == 0x1)) {<br> device.directKB((char *)&Starter[5]);<br> }<br> <br> }<br> Starter=&Starter[Starter[3]+4];<br> }//while (Start < (incomingDatalen))<br>}<br>3. 为了模拟USB键盘鼠标,我使用了 TinyUSB 库,这个库中自带一个KB MS复合设备的代码(hidcomposite.cpp) ,美中不足的是代码没有支持RAW 格式发送鼠标键盘数据。为此,在代码中添加如下函数支持这个功能,即将收到的数据原封不动的发送为鼠标或者键盘的动作:<br>//LABZ_Debug_Start<br>void HIDcomposite::directKB(char *data)<br>{<br> uint8_t keycode[6]={data[2],data[3],data[4],data[5],data[6],data[7]};<br> if (tud_hid_ready())<br> {<br> // KEYBOARD: convenient helper to send keyboard report if application<br> // use template layout report as defined by hid_keyboard_report_t<br> tud_hid_keyboard_report(report_keyboard,data[0], keycode);<br> }<br>}<br>//LABZ_Debug_End</p>
<p>//LABZ_Debug_Start<br>void HIDcomposite::directMS(char *data)<br>{<br> if (tud_hid_ready())<br> {<br> // uint8_t report_id, uint8_t buttons, int8_t x, int8_t y, int8_t vertical, int8_t horizontal<br> tud_hid_mouse_report(report_mouse, data[0], data[1], data[2], data[3], 0);<br> }<br>}<br>//LABZ_Debug_End</p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </h3>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </h3>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*6、BOM清单</h3>
<hr class="horizontal-splitline normal-bold-2">
<p><span>用户界面板</span></p>
<table width="640">
<tr>
<td width="64">
<p>ID</p>
</td>
<td width="64">
<p>Name</p>
</td>
<td width="64">
<p>Designator</p>
</td>
<td width="64">
<p>Footprint</p>
</td>
<td width="64">
<p>Quantity</p>
</td>
<td width="64">
<p>Manufacturer Part</p>
</td>
<td width="64">
<p>Manufacturer</p>
</td>
<td width="64">
<p>Supplier</p>
</td>
<td width="64">
<p>Supplier Part</p>
</td>
<td width="64">
<p>Price</p>
</td>
</tr>
<tr>
<td>
<p align="right">1</p>
</td>
<td>
<p>KT-1206Red LED</p>
</td>
<td>
<p>LED1,LED2,LED3,LED4</p>
</td>
<td>
<p>LED1206-R-RD</p>
</td>
<td>
<p align="right">4</p>
</td>
<td>
<p>KT-1206Red LED</p>
</td>
<td>
<p>KENTO</p>
</td>
<td>
<p>LCSC</p>
</td>
<td>
<p>C49018</p>
</td>
<td>
<p align="right">0.0738</p>
</td>
</tr>
<tr>
<td>
<p align="right">2</p>
</td>
<td>
<p>10K</p>
</td>
<td>
<p>R1,R2</p>
</td>
<td>
<p>R1206</p>
</td>
<td>
<p align="right">2</p>
</td>
<td>
<p>CR1206F10K7P05</p>
</td>
<td>
<p>Ever Ohms Tech</p>
</td>
<td>
<p>LCSC</p>
</td>
<td>
<p>C245447</p>
</td>
<td>
<p align="right">0.0391</p>
</td>
</tr>
<tr>
<td>
<p align="right">3</p>
</td>
<td>
<p>FireBeelte ESP32</p>
</td>
<td>
<p>U1</p>
</td>
<td>
<p>DFROBOT FIREBEETLE</p>
</td>
<td>
<p align="right">1</p>
</td>
<td> </td>
<td> </td>
<td>
<p>DFRobot</p>
</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>
<p align="right">4</p>
</td>
<td>
<p>10K</p>
</td>
<td>
<p>R3,R4</p>
</td>
<td>
<p>R1206</p>
</td>
<td>
<p align="right">2</p>
</td>
<td>
<p>CR1206F10K7P05</p>
</td>
<td>
<p>Ever Ohms Tech</p>
</td>
<td>
<p>LCSC</p>
</td>
<td>
<p>C245447</p>
</td>
<td>
<p align="right">0.0391</p>
</td>
</tr>
<tr>
<td>
<p align="right">5</p>
</td>
<td>
<p>1TS005A-2700-5001</p>
</td>
<td>
<p>DEV1,DEV2,DEV3,DEV4</p>
</td>
<td>
<p>SW-TH_4P-L6.0-W6.0-P4.50-LS6.5</p>
</td>
<td>
<p align="right">4</p>
</td>
<td>
<p>1TS005A-2700-5001</p>
</td>
<td>
<p>HYP</p>
</td>
<td>
<p>LCSC</p>
</td>
<td>
<p>C319408</p>
</td>
<td>
<p align="right">0.161</p>
<p align="right"> </p>
</td>
</tr>
</table>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p>CH9350 Shield</p>
<table width="1071">
<tr>
<td width="64">
<p>ID</p>
</td>
<td width="102">
<p>Name</p>
</td>
<td width="76">
<p>Designator</p>
</td>
<td width="213">
<p>Footprint</p>
</td>
<td width="64">
<p>Quantity</p>
</td>
<td width="146">
<p>Manufacturer Part</p>
</td>
<td width="214">
<p>Manufacturer</p>
</td>
<td width="64">
<p>Supplier</p>
</td>
<td width="64">
<p>Supplier Part</p>
</td>
<td width="64">
<p>Price</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">1</p>
</td>
<td width="102">
<p>3.3uf</p>
</td>
<td width="76">
<p>C2</p>
</td>
<td width="213">
<p>C1206</p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146">
<p>TCC1206X7R561K501DT</p>
</td>
<td width="214">
<p>CCTC</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C377112</p>
</td>
<td width="64">
<p align="right">0.1299</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">2</p>
</td>
<td width="102">
<p>0.1uf</p>
</td>
<td width="76">
<p>C3</p>
</td>
<td width="213">
<p>C1206</p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146">
<p>TCC1206X7R561K501DT</p>
</td>
<td width="214">
<p>CCTC</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C377112</p>
</td>
<td width="64">
<p align="right">0.1299</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">3</p>
</td>
<td width="102">
<p>100uf</p>
</td>
<td width="76">
<p>C5,C4</p>
</td>
<td width="213">
<p>C1206</p>
</td>
<td width="64">
<p align="right">2</p>
</td>
<td width="146">
<p>TCC1206X7R561K501DT</p>
</td>
<td width="214">
<p>CCTC</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C377112</p>
</td>
<td width="64">
<p align="right">0.1299</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">4</p>
</td>
<td width="102">
<p>2.54mm 1*2P</p>
</td>
<td width="76">
<p>DPOWER1</p>
</td>
<td width="213">
<p>HDR-TH_2P-P2.54-V-M</p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146">
<p>2.54mm 1*2P</p>
</td>
<td width="214">
<p>ReliaPro</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C36717</p>
</td>
<td width="64">
<p align="right">0.0372</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">5</p>
</td>
<td width="102">
<p><span>短接电阻</span></p>
</td>
<td width="76">
<p>JP2</p>
</td>
<td width="213">
<p><span>短接焊盘</span></p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146"> </td>
<td width="214"> </td>
<td colspan="2" width="128">
<p>TTOOAADD</p>
</td>
<td width="64"> </td>
</tr>
<tr>
<td width="64">
<p align="right">6</p>
</td>
<td width="102">
<p>LED</p>
</td>
<td width="76">
<p>LED2,LED1</p>
</td>
<td width="213">
<p>LED1206-R-RD</p>
</td>
<td width="64">
<p align="right">2</p>
</td>
<td width="146">
<p>KT-1206Red LED</p>
</td>
<td width="214">
<p>KENTO</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C49018</p>
</td>
<td width="64">
<p align="right">0.0738</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">7</p>
</td>
<td width="102">
<p>1K</p>
</td>
<td width="76">
<p>R3,R4</p>
</td>
<td width="213">
<p>R1206</p>
</td>
<td width="64">
<p align="right">2</p>
</td>
<td width="146">
<p>R1206RXX102XJ04LTC</p>
</td>
<td width="214">
<p>Shenzhen Eyang Tech Development</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C267247</p>
</td>
<td width="64">
<p align="right">0.0201</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">8</p>
</td>
<td width="102">
<p>CH9350L</p>
</td>
<td width="76">
<p>U1</p>
</td>
<td width="213">
<p>LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL</p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146">
<p>CH9350L</p>
</td>
<td width="214">
<p>WCH</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C109472</p>
</td>
<td width="64">
<p align="right">25.69</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">9</p>
</td>
<td width="102">
<p>FireBeelte ESP32</p>
</td>
<td width="76">
<p>U2</p>
</td>
<td width="213">
<p>DFROBOT FIREBEETLE</p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146"> </td>
<td width="214"> </td>
<td width="64">
<p>DFRobot</p>
</td>
<td width="64"> </td>
<td width="64"> </td>
</tr>
<tr>
<td width="64">
<p align="right">10</p>
</td>
<td width="102">
<p>U2</p>
</td>
<td width="76">
<p>USB1,USB2</p>
</td>
<td width="213">
<p>USB-A-TH_U-A-24DD-Y-1</p>
</td>
<td width="64">
<p align="right">2</p>
</td>
<td width="146">
<p>U-A-24DD-Y-1</p>
</td>
<td width="214">
<p>Rectangular Connectors - Contacts</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C193133</p>
</td>
<td width="64">
<p align="right">0.8234</p>
</td>
</tr>
<tr>
<td width="64">
<p align="right">11</p>
</td>
<td width="102">
<p>USB-212-BCW</p>
</td>
<td width="76">
<p>USB-POWER</p>
</td>
<td width="213">
<p>USB-A-SMD_USB-212-BCW</p>
</td>
<td width="64">
<p align="right">1</p>
</td>
<td width="146">
<p>USB-212-BCW</p>
</td>
<td width="214">
<p>XUNPU</p>
</td>
<td width="64">
<p>LCSC</p>
</td>
<td width="64">
<p>C720521</p>
</td>
<td width="64">
<p align="right">0.4174</p>
</td>
</tr>
</table>
<p> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">*7、大赛LOGO验证</h3>
<hr class="horizontal-splitline normal-bold-2">
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><img src="//image.lceda.cn/pullimage/nGox62tQM4Wy6iGy7jlSjyWPcPXssbwGz3vEZAwG.jpeg" alt=""></p>
<h3 class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr class="horizontal-splitline normal-bold-2">
<p style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频要求:请横屏拍摄,分辨率不低于1280×720,格式Mp4/Mov,单个视频大小限100M内;</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">视频标题:立创电赛:{项目名称}-{视频模块名称};如立创电赛:《自动驾驶》-团队介绍。</span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"><span style="font-size: 14px;">更多详情:<a href="/posts/06c94d90c2c447dfbd9ed7339ff4a5b1" target="_blank">https://diy.szlcsc.com/posts/06c94d90c2c447dfbd9ed7339ff4a5b1</a></span></p>
<p class="paragraph text-align-type-left pap-line-1.3 pap-line-rule-auto pap-spacing-before-3pt pap-spacing-after-3pt" style="line-height: 1.8;"> </p>
</div>
评论(1)