不爱胡萝卜的仓鼠

  • 2025-01-15
  • 回复了主题帖: [树莓派5测评]⑤安装SSD并从SSD启动+闭坑指南

    Bymyself 发表于 2025-1-15 14:41 没有风扇散热,纯被动散热?   有风扇的,只是被HAT盖住了,可以看一下我上一篇的测评文章: [树莓派5测评]④安装散热器及温度测试

  • 2025-01-12
  • 发表了主题帖: 【Follow me第二季第4期】④汇总篇

    本帖最后由 不爱胡萝卜的仓鼠 于 2025-1-13 15:44 编辑 1、展示所有任务的视频 任务1: EE大学堂视频链接:https://training.eeworld.com.cn/video/42146 任务2: EE大学堂视频链接:https://training.eeworld.com.cn/video/42148 任务3: EE大学堂视频链接:https://training.eeworld.com.cn/video/42150     汇总: [localvideo]44dd7708854e5b723818909f8b1de3c5[/localvideo]     2、所使用的物料清单 本次任务我在得捷电子采购的产品有ARDUINO NANO RP2040 CONNECT、SEEEDSTUDIO XIAO ESP32S3     3、展示每个任务 3.1 任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld! 详细内容:【Follow me第二季第4期】①任务一:Blink与串口打印   基础的点灯,串口功能比较基础,有点没意思,我看到RP2040 connect有带BLE和WiFi,因此我额外购买了一块ESP32-S3。我想实现通过WiFi的方式实现点灯,顺便可以学习一下Arduino上如何连接WiFi、启动server、作为client连接server、TCP通讯数据收发等。   RP2040:上电后实现三色LED、LED的闪烁,并串口打印指定内容。随后连接WiFi,启动server,等待client连接,并接收控制指令,执行指令对应的代码。 ESP32:上电后连接WiFi,并以Client的角色连接server,通过TCP通讯发送控制指令给RP2040,控制2040的LED灯   RP2040代码 /***************************/ //RGB LED需要安装WiFiNINA库, /***************************/ #include <WiFiNINA.h> #include <SPI.h> #define WIFI_CTL_LED (1) #if WIFI_CTL_LED #include "wifi_info.h" const char wifi_ssid[] = SECRET_SSID; const char wifi_password[] = SECRET_PASS; int wifi_conn_state = WL_IDLE_STATUS; #define SERVER_PORT (80) WiFiServer server(SERVER_PORT); void printWifiStatus() { /* 打印WiFi SSID */ Serial.print("SSID: "); Serial.println(WiFi.SSID()); /* 打印IP地址 */ IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); /* 打印信号强度 */ long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); } #endif void setup() { /* 初始化串口 */ Serial.begin(115200); /* delay一下,保证串口监视器成功连接 */ delay(3000); /* 初始化LED灯的GPIO,并开灯 */ pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); /* 初始RGB LED灯的GPIO,并开灯 */ pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDB, OUTPUT); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); /* 打印和闪灯,完成指定任务 */ for(uint8_t j = 0; j < 4; j++) { Serial.println("Hello DigiKey & EEWorld!"); digitalWrite(LED_BUILTIN, LOW); digitalWrite(LEDR, LOW); digitalWrite(LEDG, LOW); digitalWrite(LEDB, LOW); delay(1000); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); delay(1000); } #if WIFI_CTL_LED /* 检查wifi模块状态是否可用 */ if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); while (1); } /* 检查wifi模块版本号(非必选,可去掉) */ String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("now wifi firmware = " + fv + ", lastest version is " + WIFI_FIRMWARE_LATEST_VERSION + ", suggest update!"); } /* 检查SSID和PSW是否填写 */ if (strlen(wifi_ssid) <= 0) { Serial.println("ERROR: Plase enter WiFi SSID in \"wifi_info.h\""); while(1); } if (strlen(wifi_password) <= 0) { Serial.println("ERROR: Plase enter WiFi password in \"wifi_info.h\""); while(1); } /* 尝试使用预设的账号密码,连接路由器 */ uint8_t i = 0; for (i = 0; i < 5; i++) //wifi连接超时时间5 * 10s { wifi_conn_state = WiFi.begin(wifi_ssid, wifi_password); if (WL_CONNECTED == wifi_conn_state) { Serial.println("wifi connect success"); break; } delay(10000); } if (i == 5) { Serial.println("wifi connect failed"); while(1); } /* 打印wifi信息 */ printWifiStatus(); /* 开启客户端 */ server.begin(); Serial.print("server started,addr:"); Serial.print(WiFi.localIP()); Serial.print(":"); Serial.println(SERVER_PORT); #endif } void loop() { #if WIFI_CTL_LED WiFiClient client = server.available(); // listen for incoming clients /* 是否有客户端连接我 */ if (client) { /* 打印,提示有客户端连接我 */ Serial.println("new client"); /* 从client接收到的数据的buffer */ String recv_buffer = ""; /* 持续监测客户端是否与我断连 */ while (client.connected()) { /* 客户端是否可用 */ if (client.available()) { /* 读取客户端发送的数据,并串口打印 */ /* read接口一次只能读一个字节,每读取一个字节后就把它拼到recv_buffer中 */ char c = client.read(); Serial.write(c); recv_buffer += c; /* 通过检查字符串结尾和制定的字符串是否一致,来决定是否需要执行开关灯指令 */ if (recv_buffer.endsWith("CTL_RGB_R_ON")) { digitalWrite(LEDR, HIGH); } if (recv_buffer.endsWith("CTL_RGB_R_OFF")) { digitalWrite(LEDR, LOW); } if (recv_buffer.endsWith("CTL_RGB_G_ON")) { digitalWrite(LEDG, HIGH); } if (recv_buffer.endsWith("CTL_RGB_G_OFF")) { digitalWrite(LEDG, LOW); } if (recv_buffer.endsWith("CTL_RGB_B_ON")) { digitalWrite(LEDB, HIGH); } if (recv_buffer.endsWith("CTL_RGB_B_OFF")) { digitalWrite(LEDB, LOW); } if (recv_buffer.endsWith("CTL_LED_ON")) { digitalWrite(LED_BUILTIN, HIGH); } if (recv_buffer.endsWith("CTL_LED_OFF")) { digitalWrite(LED_BUILTIN, LOW); } } } /* 客户端与我断连,需要关闭client连接,并打印提示信息 */ client.stop(); Serial.println("client disconnected"); /* 断连后灯回复原装 */ digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); } #else Serial.println("Hello DigiKey & EEWorld!"); digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LEDR, HIGH); digitalWrite(LEDG, HIGH); digitalWrite(LEDB, HIGH); delay(1000); Serial.println("Hello DigiKey & EEWorld!"); digitalWrite(LED_BUILTIN, LOW); digitalWrite(LEDR, LOW); digitalWrite(LEDG, LOW); digitalWrite(LEDB, LOW); delay(1000); #endif }   ESP32代码 #include <Arduino.h> #include <WiFi.h> #include "wifi_info.h" const char wifi_ssid[] = SECRET_SSID; const char wifi_password[] = SECRET_PASS; int wifi_conn_state = WL_IDLE_STATUS; const IPAddress serverIP(192,168,31,215); //填写服务器的实际IP地址 uint16_t serverPort = 80; //端口默认80,服务器端也是默认80 WiFiClient client; void printWifiStatus() { /* 打印WiFi SSID */ Serial.print("SSID: "); Serial.println(WiFi.SSID()); /* 打印IP地址 */ IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); /* 打印信号强度 */ long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); } void wifi_init() { /* 设置工作在STA模式 */ WiFi.mode(WIFI_STA); /* 断开之前的连接 */ WiFi.disconnect(true, true); } void wifi_connect_AP() { /* 检查SSID和PSW是否填写 */ if (strlen(wifi_ssid) <= 0) { Serial.println("ERROR: Plase enter WiFi SSID in \"wifi_info.h\""); while(1); } if (strlen(wifi_password) <= 0) { Serial.println("ERROR: Plase enter WiFi password in \"wifi_info.h\""); while(1); } Serial.print("Attempting to connect to WPA SSID: "); Serial.println(wifi_ssid); /* 尝试使用预设的账号密码,连接路由器 */ uint8_t i = 0; WiFi.begin(wifi_ssid, wifi_password); /* 检测是否链接成功 */ for (i = 0; i < 20; i++) { delay(500); if (WiFi.status() != WL_CONNECTED) { Serial.println("wifi connect success"); /* delay一会儿,等待IP等信息都拿到了再继续后续操作 */ delay(3000); break; } } if (i == 20) { Serial.println("wifi connect failed"); while(1); } /* 打印wifi信息 */ printWifiStatus(); } void connect_server() { if (client.connect(serverIP, serverPort)) { Serial.println("Connected to server"); } else { Serial.println("Connection failed"); while(1); } } void setup() { /* 初始化串口 */ Serial.begin(115200); /* 初始化wifi模块 */ wifi_init(); /* wifi连接路由器 */ wifi_connect_AP(); /* 连接到服务器 */ connect_server(); } void loop() { String cmd1 = "CTL_LED_ON"; String cmd2 = "CTL_LED_OFF"; /* 如果连接到服务器,就定时发送开关灯指令 */ if (client.connected()) { Serial.println("ON"); client.write(cmd1.c_str()); delay(1000); Serial.println("0FF"); client.write(cmd2.c_str()); delay(1000); } }   3.2 任务二:学习IMU基础知识,调试IMU传感器,通过串口打印六轴原始数据 详细内容:【Follow me第二季第4期】②任务二:IMU传感器 代码 /***************************/ //IMU需要安装Arduino_LSM6DSOXk库 /***************************/ #include <Arduino_LSM6DSOX.h> float ACC_x, ACC_y, ACC_z, GYR_x, GYR_y, GYR_z; void setup() { /* 初始化串口 */ Serial.begin(115200); /* 初始化IMU传感器 */ if (!IMU.begin()) { Serial.println("Failed to initialize IMU!"); while (1); } /* 打印ACC和GYR的采样率 */ Serial.print("Accelerometer sample rate = "); Serial.print(IMU.accelerationSampleRate()); Serial.println("Hz"); Serial.print("Gyroscope sample rate = "); Serial.print(IMU.gyroscopeSampleRate()); Serial.println("Hz"); } void loop() { if (IMU.accelerationAvailable()) { IMU.readAcceleration(ACC_x, ACC_y, ACC_z); } if (IMU.gyroscopeAvailable()) { IMU.readGyroscope(GYR_x, GYR_y, GYR_z); } Serial.print("ACC_x: "); Serial.print(ACC_x); Serial.print(", "); Serial.print("ACC_y: "); Serial.print(ACC_y); Serial.print(", "); Serial.print("ACC_z: "); Serial.print(ACC_z); Serial.print(", "); Serial.print("GYR_x: "); Serial.print(GYR_x); Serial.print(", "); Serial.print("GYR_y: "); Serial.print(GYR_y); Serial.print(", "); Serial.print("GYR_z: "); Serial.println(GYR_z); delay(100); }   3.3 任务三:学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。 详细内容:【Follow me第二季第4期】③任务三:PDM麦克风 代码; #include <PDM.h> /* 输出通道的数量 */ static const char channels = 1; /* 采样频率 */ static const int frequency = 20000; /* 采样buffer,每次采样的数据大小为16bit,所以变量类型为short */ short sampleBuffer[512]; /* 已经读到的采样次数 */ volatile int samplesRead; void onPDMdata() { /* 查询一共有多少数据 */ int bytesAvailable = PDM.available(); /* 把采样数据保存到buffer里 */ PDM.read(sampleBuffer, bytesAvailable); /* 更新采样计数。一次采样的数据大小为16bit,所以采样计数需要除以2 */ samplesRead = bytesAvailable / 2; } void setup() { /* 初始化串口 */ Serial.begin(9600); /* 设置PDM数据接收回调函数 */ PDM.onReceive(onPDMdata); /* 初始化PDM,并开始采样 */ if (!PDM.begin(channels, frequency)) { Serial.println("Failed to start PDM!"); while (1); } } void loop() { /* 是否有采样数据 */ if (samplesRead) { /* 打印buffer中的所有数据 */ for (int i = 0; i < samplesRead; i++) { Serial.println(sampleBuffer[i]); } /* 清零采样计数 */ samplesRead = 0; } }   4、对本活动的心得体会 很感谢得捷电子与EEWORLD共同举办的本次活动,这次的开发板非常有意思,板载各种传感器十分丰富,还有WiFi和BLE,可玩性很高。本次活动我学习到麦克风传感器、开启一个Server、client连接server、TCP通讯等新知识,收获颇丰。希望下次有机会继续参加类似的活动。   5.可编译下载的代码包 任务一:EEWORLD论坛下载中心下载链接:https://download.eeworld.com.cn/detail/%E7%9A%84%E5%88%A0%E9%99%A4%E5%A4%B1%E8%B4%A5v/635430 任务二:EEWORLD论坛下载中心下载链接:https://download.eeworld.com.cn/detail/%E7%9A%84%E5%88%A0%E9%99%A4%E5%A4%B1%E8%B4%A5v/635431 任务三:EEWORLD论坛下载中心下载链接:https://download.eeworld.com.cn/detail/%E7%9A%84%E5%88%A0%E9%99%A4%E5%A4%B1%E8%B4%A5v/635432

  • 2025-01-10
  • 回复了主题帖: [树莓派5测评]④安装散热器及温度测试

    hellokitty_bean 发表于 2025-1-10 13:10 这个天气,树莓派5可以给室内增温了。。。。。。。。。。。。。。。。 做个树莓派暖手宝,手冷了就打开烤鸡模式

  • 回复了主题帖: [树莓派5测评]④安装散热器及温度测试

    dcexpert 发表于 2025-1-10 08:58 这个温度已经接近电脑CPU了。 没错没错,这个温度太恐怖了,难怪官方要出散热器,那是真的热啊

  • 回复了主题帖: [树莓派5测评]④安装散热器及温度测试

    tagetage 发表于 2025-1-10 07:46 对树莓派5的温度了解了。,室温是13摄氏度左右很冷啊。。 是啊,开空调吹得人难受,只能靠发抖和热水袋取暖

  • 回复了主题帖: [树莓派5测评]③树莓派的4种交互方式

    dcexpert 发表于 2025-1-9 20:19 还有 Raspberry Pi Connect 远程访问 学到了,谢谢。这玩意儿好啊,可以远程访问,出门在外也可以操作树莓派啦

  • 发表了主题帖: [树莓派5测评]④安装散热器及温度测试

    本帖最后由 不爱胡萝卜的仓鼠 于 2025-1-10 00:57 编辑 树莓派5的主芯片相比4代性能提升不少,但是随之带来的就是温度的上升,可以说变成火炉了(待会儿我也会烤机一下,看看他裸板到底能去到多少温度),官方也是做了散热相关的设计,也推出了散热器配件。   一.安装散热器 散热器这种配件买第三方的就没问题,直接淘宝15块包邮,树莓派官方同款,除了没LOGO,几乎一样。便宜管饱,配件齐全,还送塑料底板 掏出散热器 方面散热垫也预装好了,还标注了各个区域 安装到树莓派上,这个散热器全靠两个角的塑料柱卡主PCB,然后弹簧给压力,安装时要小心,避免碰坏原件,两边最好一起压进去。我心中理想的应该是螺丝+弹簧的组合 然后去掉风扇座子的保护盖(为什么风扇有给,串口和RTC电池的座子就不给?不理解),准备连接散热器风扇  安装完成 二.烤机前的准备 2.1 如何获取温度 使用以下命令可以获取当前树莓派的温度 vcgencmd measure_temp 2.2 如何烤机 烤机的核心思想就是让CPU/GPU满载,可以写个程序疯狂占满CPU的所有核心,也可以使用一些小工具。我这边就使用stress-ng 安装stress-ng sudo apt-get install stress-ng 使用以下命令即可让开始烤机 sudo stress-ng --cpu 4 --timeout 60s 这里的 --cpu 4 表示使用4个CPU核心,--timeout 60s 表示持续60秒 开始和结束都会有对应的提示   2.3 如何监控CPU的占用 使用htop即可监控CPU4个核心的占用情况 htop   2.4 多合一小工具 本来我是想找一个可以查看CPU频率的小工具的,结果发现了这个,可以一键开始压力测试,同时监视温度、频率、每个core的占用。那么上面哪些就暂时用不上了,但是写都写了,就留着看吧,下面测试我就都用这个工具了 sudo apt install stress s-tui 安装好后输入下面代码运行 s-tui  界面如下 现在处于监控模式(可以看左上角的Modes),如果要开启烤机,按键盘下键,再按空格 ,即可开始烤机。按键盘上键,再按空格就停止烤机   三.烤机测试 现在我的室温是13摄氏度左右 3.1 无散热空载测试 空载状态下树莓派的温度大约45摄氏度左右 3.2 无散热满载测试 烤机状态下温度,温度直线上升,最高干到了86℃,稳定在85度左右。但是他没有降频,稳定2.4GHz 3.3 风扇吹 满载测试 额外增加一下只有风扇吹的场景,看看风扇吹效果如何。我拿出了夏天吹脑袋的小风扇,开到对大档,怼这板子吹 不得不说,还是大力出奇迹啊,65度稳稳地。看来只要你能接受风扇高速转带来的噪音(最高转速可吵了,听得我脑壳疼),再配合树莓派4代淘宝上的那种散热片,也能得到一个不错的散热效果 3.4带散热空载测试 温度大约在35度左右 3.5带散热满载测试 这个散热片的15块钱真是值啊,6分钟了,稳稳压住,平均就在55-60度左右,牛。而且风扇转起来也几乎没有声音,很安静,太爽了 3.6 总结 通过上面的这些场景的测试,我认为树莓派5的发热确实比较厉害,散热片是很推荐购买的,现在是冬天,如果到了夏天,没有散热空载下温度肯定也不得了,15块钱花的还是很值的   四.风扇转速 关于风扇转速,散热风扇会根据当前温度决定是否转,转多快。 静置状态下他都是不转的,依靠散热片的被动散热就足够了,不要以为风扇是坏的或者没接好 我测试当温度超过50度左右,他就开始转在2400PPM左右(几乎没有声音)。到60度左右为4400PPM左右(稍微有一咪咪声音),再高就没遇到过了          

  • 2025-01-09
  • 发表了主题帖: [树莓派5测评]③树莓派的4种交互方式

    本帖最后由 不爱胡萝卜的仓鼠 于 2025-1-9 19:54 编辑 树莓派主流的有3种交互方式: ①外接显示器+键鼠:就直接当一个linux电脑用,并且不需要任何软件配置,插上即用,最适合刚开始装系统和初始配置时使用 ②VNC:通过网络,可以在电脑上看到画面,并且可以用电脑的键鼠对树莓派操作。这个最方便,不用额外接东西,并且使用体验和①最接近。不过需要好一点的网络条件,否则会卡 ③SSH:这个就不能看画面了,只能命令行交互,但是可以拖拽文件   树莓派5这次还在硬件上增加了一个串口终端的接口,我们可以直接通过串口与树莓派交互 这样就构成了树莓派5的4种交互方式,外接显示器+键鼠我之前的文章就用过了,这儿就不展示了。   一.VNC 使用VNC的前置条件是你的电脑与树莓派均在一个局域网内,并且二者可以互相通讯 首先需要在电脑上安装VNC(安装步骤略),官网地址:https://www.realvnc.com/en/connect/download/viewer/?lai_vid=RX0aLEAzgSLWW&lai_sr=10-14&lai_sl=l 然后在树莓派上要打开VNC 然后查看树莓派的IP地址,方法有很多,例如路由器后台查看、命令行查看,我这边就直接用UI界面上看了 得到IP地址后,就可以去电脑上操作了 然后有个风险提示,不管,点击继续  然后输入账号密码 成功连接 这样就可以去掉显示器和键鼠了(为了一遍实操,一边写测评文章,一个显示器两个设备之间来回切换真的累死我,还好键鼠我有2套,不然真的是折磨)   二.SSH SSH工具也有很多,我选择MobaXterm,不为别的只是因为他免费,功能也丰富,满足我的需求。(可惜他原生没有中文,需要自己习惯一下,网上的中文版都是别人魔改的) 而且他有一点非常良心,你可以在商业环境中免费使用个人家庭版,这个真的很友好,不用担心花钱购买正版或者收到律师函(真的收怕了),前提是你要遵守人家的规定,简单来说就是要从官网指定渠道下载,并且谁用谁下,不许内部分发 官网:https://mobaxterm.mobatek.net/download.html   树莓派的SHH在安装系统时我就打开了,可以在刚才VNC那边也可看到,是处于打开状态的   打开摸moba,添加SSH 然后输入账号,回车。再输入密码(密码不显示,直接输入),回车,即可登录 接下来就和终端的使用方法一样了,直接输命令即可,随便来个命令测试一下   三.串口 本次树莓派5专门有一个调试串口引出,只需要去买对应接口的线连接串口模块即可。 接口规格是SH1.0,接口线序如下图所示   然后关于电平要求是3.3V,我就直接用CH340了(有跳帽的版本注意电平跳帽不要跳到5V上了) 树莓派官方也有一个文档讲解这个接口,他们想把这个接口作为一个标准,其他产品也可以用这个接口实现SWD调试,文档我就放附件了,有兴趣的可以下载阅读一下   关于串口线,淘宝上有做好的完整的串口线,但是价格比较贵,十多块到40块不等,我觉得不值得。 最终我选择2块多包邮的线材,然后对端线材自己焊接,要多长都可以自己掌控(懒得焊接的也可以买对端是杜邦线接口的,再加个1块钱左右就行,但是长度我觉得太短) 接线如下 CH340连接电脑,打开moba,添加一个串口,波特率选择115200 树莓派上电后,会打印启动日志 完成启动后就会得到一个类似SSH的登录接口,输入账号密码即可      

  • 发表了主题帖: [树莓派5测评]⑤安装SSD并从SSD启动+闭坑指南

    本帖最后由 不爱胡萝卜的仓鼠 于 2025-1-13 21:10 编辑 本次树莓派5升级除了开关机按键,我最喜欢的就是这个PCIE接口了(虽然只给了2.0,3.0虽然也可以配置开启,但是官方不保证稳定性),直接接SSD,不要太爽   一.安装HAT及SSD 这次我还是贪便宜,买了和官方HAT最接近的微雪的HAT:https://www.waveshare.net/shop/PCIe-TO-M.2-HAT-Plus.htm 我选择这款的原因: 1.便宜,TB只要40不到。 2.遵循官方HAT设计规范(有的时候完全遵守官方也不是一个好事情,这个后面闭坑部分会说) 3.带电源传感器,可以检测SSD的电流和电压、功率 4.黑色+沉金,好看 5.硬盘下方后挖空,增加硬盘的散热   开箱全家福 安装SSD,我是2230长度的,要先去掉2230位置上的贴纸,然后使用附赠的配套螺丝固定SSD 安装排针 安装排线(注意排线三角形和扩展板PCB上三角形对齐),排线要先安装到树莓派上,再安装扩展板,再把排线与扩展板连接 如果要保留买散热器时送的塑料板,还得买铜柱,我买的是M2.5*5+6规格的     二.系统识别SSD 首先编辑config文件,开启PCIE,默认PICE接口是不开启的,需要我们手动开启(但是我这个很奇怪,特没有这步操作,也可以识别到SSD) sudo gedit /boot/firmware/config.txt 在文件名中添加以下内容,然后点击保存(这个指令是开启PCIE2.0的,还有开启3.0的指令,但是官方宣传的就是2.0,应该是3.0无法稳定工作,为了不带来麻烦,我就2.0了,反正硬盘这样用用是够的,没必要冒风险,搞得不稳定) dtparam=pciex1   查看PCIE上挂的设备使用以下指令 lspci 可以看到有2个PICE设备,一个是SSD,另一个就是树莓派自研的南桥芯片   还可以检查一下磁盘是否被识别 lsblk 可以看到有2个硬盘,分别是我们的TF卡和SSD,都已经正确识别出来了。我这个硬盘是个新的硬盘,没有分区。   至此就可以了,分区,格式化啥的都不需要,因为我待会儿就会把新的系统安装到SSD中,不是作为一个存储空间使用,所以这些步骤我就略过了   三.SSD烧录系统并配置从SSD启动 先来修改启动方式,树莓派默认是从TF卡启动系统的,那我们就要修改一下启动顺序,让他优先从SSD启动。这样后续即使插了TF卡也会从SSD启动 首先在命令行输入以下命令 sudo raspi-config 然后会出现以下界面 通过上下左右键,即可移动光标,回车表示选择   选择NVME,回车,之后就会自动配置EEPROM,我们等待即可,看到以下界面就表示配置完成 之后我们就可以开始烧录镜像了 树莓派系统中也有“Raspberry Pi Imager”这个软件,具体操作和之前的一样。 选择SSD 等待烧录 烧录完成,重启即可。   由于是首次启动,需要多等待一会儿,期间风扇也会狂转-停止-狂转循环几次 启动后由于VNC不是默认开启的,我就用SSH连接了,可以看到我已经成功登录(用户名为了区分,在SSD镜像烧录时我特地增加了后缀-ssd)   四.启动速度及读写速度对比 花了小一百块钱,必须拉出来跑跑看,上的这个SSD到底性价比高不高 4.1 读写速度测试方法 先清除缓存 sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches" 然后输入写入测试指令,即可开始写测试 sudo dd if=/dev/zero of=./test_write count=2000 bs=1024k 读测试使用以下指令,读之前也要清除缓存 sudo dd if=./test_write of=/dev/null count=2000 bs=1024k   4.2 启动速度测试方法 我通过串口日志配合时间戳来测试,当收到第一条日志开始计时,到命令行可用为止   4.3 TF卡读写测速 写入:28.5MB/s 读取:93.3MB/s   4.4 SSD读写测速 写入:426MB/s 读取:474MB/s   4.5 TF卡启动速度 上电时间:19:50:36.096 命令行可用时间:19:50:57.469 开机耗时:约21s     4.6 SSD启动速度 上电时间:20:52:46.374 命令行可用时间:20:53:07.598 开机耗时:约21s   4.6 总结 使用SSD并没有提升太多的开机速度,和TF的很接近。但是正常使用时的读写速度简直就是做了火箭。我觉得这个钱花的还是很值得,SSD值得上   五.SSD扩展板选型避坑 在本文最开始我就提到,完全遵守官方HAT标准也不是好事。 我一开始想的是市面上有这么多SSD扩展板,每个都有其独特的设计,我都觉得不错,但是为了稳妥起见,还是买官方的好,但是官方的太贵了,要八九十块,刚好微雪有一款遵循官方HAT标准设计的,一来想着贪个便宜,二来我是比较信任微雪的设计和品质的,然后就买了。   买来后各种使用都是OK没问题的,但是直到我开始安装摄像头CSI排线,发现坑爹的点了,扩展板的槽开的不够深,导致排线无法垂直安装进去,如果强行安装,就要把排线扭一下才行(最搞笑的是排线我虽然不是买的树莓派官方的,买的微雪自己的,但是机械尺寸上和官方的也是一样的) 我第一念想就是坑爹啊,这板子不会是实习生画的吧(微信狗头)这么明显的干涉都不发现的吗?这扩展板出了大半年了,都没人发现的吗?太坑了,早知道就买官方的了。为了验证我的想法,我去找了官方的HAT照片,发现微雪的槽开小了   随后我就和微雪的工程师去反馈问题了,对方工程师回复速度很快(这点要大大表扬),经过沟通,微雪的机械尺寸设计也是完全遵循官方设计的,之所以图上看起来有差距是因为微雪把那个作为参照的螺丝孔移动了一点距离。 所以这个槽确实是开小了,但是不完全是微雪的锅,这个锅得树莓派官方背,微雪只是照着官方的设计来做的。但是最骚的是微雪和树莓派官方都没有进行这方面的测试(微信狗头),果然世界就是一个巨大的草台班子(微信狗头)   最终解决方案: 1.该设计问题已经反馈给微雪工程师,对方表示后续会对这个问题进行修改(希望可以尽快推出,我现在就只能当小白鼠了) 2.可以尝试用锉刀磨掉一点,我和微雪工程师确认过,后面没有走线,可以磨 3.更换排线,可以使用以下链接排线:https://www.waveshare.net/shop/RPi-Zero-v1.3-Camera-Cable.htm,虽然介绍没有说树莓派5适用,但是微雪工程师表示是可以用的,相关介绍后续也会进行修改   所以大家如果想要买SSD扩展板的,要么看看别的型号,或者接受这款HAT或树莓派官方HAT当前的设计缺陷   六.SSD选型避坑 SSD本来没啥好说的,但是我看了一些教程和网友的分享,会存在一些不兼容的问题,为了避免大家踩坑,我就整理一下 1.要买M.2 NVME的SSD,还有一种长得很像的是NGFF接口的,那玩意儿不行 2.PCIE 3.0 or 4.0?这个其实不用太纠结,树莓派稳定就2.0,可以选择开启3.0。所以SSD选择3.0的就足够了,没必要多花钱买4.0的(土豪或者SSD后续有其他用途的忽略) 3.目前已知不兼容型号: https://docs.pineberrypi.com/nvme-compatibility-list 西数SN系列的硬盘,树莓派官方检测出来有几款不兼容,为了稳妥起见,西数的盘还是都不选择的为好 4.目前已知肯定兼容的型号: ①树莓派官方自己测试通过的型号:https://docs.pineberrypi.com/nvme-compatibility-list ②三星PM991A(有网友购买用过,TB大约55块) ③海力士BC711(有群友购买用过,我也选择这款,TB大约47块) ④长江存储PC210(群友购买用过,PDD 大约58) ⑤微雪官方(贵) ⑥树莓派官方(更贵) 其中三星PM991A不太推荐,这玩意儿有头铁的网友买了,热的爆炸,然后过热降速了(除非再给这个爷爷也加散热)。   所以我最终选择了其他网友测试过,价格合适的BC711(包邮只花了不到50块,虽然是拆机的,但是通电时间和写入量几乎全新,虽然这玩意儿可以被重写,几十块要啥自行车,用就完了)       没想到一篇SSD竟然可以写这么长写了快一个礼拜,是在是太曲折了

  • 2025-01-08
  • 回复了主题帖: [树莓派5测评]②安装系统及开关机

    wangerxian 发表于 2025-1-8 10:15 5V3A给树莓派5,如果少带一些外设应该还行,如果带外设会导致系统卡死。 是的,现在我只开机,外设就键盘鼠标,肯定够用。后续加了固态就要换5A电源了,电源还在路上,现在就只能3A的顶一下。其实平时简单用用电流3A肯定够用了,就怕峰值电流过大或者满载运行,3A顶不住

  • 2025-01-06
  • 发表了主题帖: [树莓派5测评]②安装系统及开关机

    本帖最后由 不爱胡萝卜的仓鼠 于 2025-1-7 20:09 编辑 一.材料准备 我们需要准备以下材料: ①.树莓派5 ②.TF卡(建议选择大品牌高速卡,容量别太小,我选择使用闪迪红灰32G,这玩意儿先凑合一下,回头换固态) ③.电源(官方推荐5V5A,但是市面上基本没有可以握手的5V5A的电源适配器,这个还是老老实实买官方的吧,虽然七八十很贵,不要贪便宜买国产的,淘宝上有卖,但是我看到有人说用了一段时间就坏了,电源坏了还是小事,带走树莓派就不划算了。我看到微雪也有卖电源适配器,那个感觉可能比较稳,我还是信任微雪的产品的。我的树莓派官方插头还在路上,现在先用树莓派4B的5V3A顶一下,用也能用,他就是会限制外设的电流,我现在就键鼠,肯定够用,还有就是屏幕上会有个提示,问题不大) ④.TF卡读卡器 ⑤.电脑一台 ⑥.HDMI线(可选,如果是使用SSH或VNC等方式连接树莓派的话就可以不要) ⑦.显示器(可选,理由同上) ⑧.键盘、鼠标(可选,理由同上)   我们今天基本上就用到这些,单纯开机这些配件就足够了     二.系统烧录     在win电脑上我们需要安装2个软件:“SD Card Formatter”、“Raspberry Pi Imager”。     前者是格式化TF用的,你也可以使用其他类似的格式化工具。虽然后者也会执行类似擦除的操作,但是不知道为什么,有的TF卡之前安装过别的东西,他擦除会失败,但是这个工具擦除后再烧录就可以顺利执行     后者就是树莓派官方提供的烧录工具了,并且内置各种系统镜像(当然是在你选择后再下载的)。这个工具最大的好处就是不需要你自己去找镜像了,也不需要找其他烧录工具,官方一站式解决了。下载地址:https://www.raspberrypi.com/software/   2.1格式化TF卡     TF插入读卡器,读卡器连接电脑,打开SD Card Formatter,即可看到TF卡。选择你要格式化的那个(我这里就一张,就没得可选,如果有多张,一定要确认好你要格式化那张,别搞错了) 然后点击”Format"开始格式化 二次确认,提示你别擦错了,擦错了数据都没了 等待格式化完成 格式化完成   2.2烧录镜像     接下来我们打开Raspberry Pi Imager,先选择设备,我们这个是树莓派5  下一步选择操作系统,我就选择树莓派官方的系统,我这个版本有4G RAM,那妥妥选择64bit的     最后选择SD卡 OK了,点击NEXT,开始烧录 这个工具还很贴心的给你提前配置一些自定义配置,例如WiFi账号密码、主机名字密码、语言、SSH等等 点击编辑设置就可以填写配置,填好后就可以点"是”,开始烧录。点击“不”的话,就按默认的来     最后他也会做二次确认,点击是 接下来就是等待了 写入完成后会校验 OK完成   三.开机 TF卡插入树莓派 连接键鼠、HDMI线、电源 插电,揩鸡!成功显示 大约几十秒后,进入系统,可以看到WiFi已经成功连接(终端的账号密码我也试了,和烧录时配置的一样) 因为现在还是用的4B的电源,5V3A,会有弹窗提示     四.开关机键 树莓派5终于有板载开关机键了,之前开机全靠重新上电,关机也得用指令。尤其是我用官方电源,还没有开关,每次都要手动拔插头,可累死我了 在开机状态下,按一下就回弹出如图提示,我们可以选择关机、重启、登出。如果再按一下就会关机。真的太方便了 关机状态下,按一下就开机  

  • 回复了主题帖: [树莓派5测评]①开箱

    guanliulong 发表于 2025-1-6 00:21 这个好不好用 相比4B,硬件上升级挺多的,开关机按键、RTC电池终于是有了,PCIE通道也给了,可以外接PICE设备了(虽然只有2.0 X4,也可以配置成3.0,但是官方不保证稳定)。   但是有2个缺点,发热更明显了,无散热,开机静置温度能去到50度左右。还有电源一定要支持5V5A档,不然屏幕上就给一个弹窗,但是5V5A的插头市面上基本没有,就要你去买他官方的

  • 2025-01-04
  • 发表了主题帖: [树莓派5测评]①开箱

    本次活动的开发板是在得捷电子上购买的,12月25日下单购买,1月3号就到我手上了,这海外购的速度杠杠滴,快!   他这个是2段运输,国外是fedex,到国内后走顺丰 打开快递后是一张发货单,然后是泡面包裹的塑料袋 塑料袋里是一些送货信息和我们购买的树莓派5 层层包装,终于拆到树莓派的包装盒了,先看看盒子 打开盒子 给树莓派5来个特写    

  • 2024-12-25
  • 回复了主题帖: 测评入围名单:Raspberry Pi 5(树莓派目前性能最强代表)

    个人信息无误,确认可以完成测评分享计划

  • 回复了主题帖: [BearPi-Pico H2821]测评 ⑥丢包及连接稳定性测试

    Dahu11ang 发表于 2024-12-25 01:43 大佬能不能问一下您点问题,最近在使用H2821遇到的问题: 由单片机给SLE的Client端发送数据,Server端接收 ... 这个问题确实很奇怪,建议你先在串口接收的函数中增加打印,看看程序是否收到了串口数据。这样先确保串口接收部分是OK的。   看你的现象我有2个怀疑点 1.串口接收有问题,或串口收到数据后决定是否要SLE发送数据判断相关代码有问题 2.SLE是否存在断连或不稳定?毕竟是无线传输,但是现在也没有抓包器,分析这个挺困难的

  • 回复了主题帖: 【Follow me第二季第4期】③任务三:PDM麦克风

    wangerxian 发表于 2024-12-25 13:06 这估计还不好改吧,应该是软件内置的波形界面吧。 是的,是arduino自带的波形界面,如果要更丰富的功能,就要换其他上位机软件,并修改串口输出的格式

  • 回复了主题帖: 【Follow me第二季第4期】③任务三:PDM麦克风

    wangerxian 发表于 2024-12-23 16:02 串口波形显示的内容看着好乱呀 上位机的锅,他的时间轴缓冲太小了,一个窗口只能存一点点数据。纵坐标也不能锁定,导致看着很乱

  • 2024-12-24
  • 加入了学习《 【Follow me第二季第4期】功能演示视频》,观看 ①任务一:Blink与串口打印

  • 加入了学习《 【Follow me第二季第4期】功能演示视频》,观看 ③任务三:PDM麦克风

  • 2024-12-22
  • 上传了资料: 【Follow me第二季第4期】③任务三:PDM麦克风 源码

最近访客

< 1/6 >

统计信息

已有258人来访过

  • 芯积分:568
  • 好友:--
  • 主题:45
  • 回复:43

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言