431浏览
查看: 431|回复: 7

[项目] 【Arduino 动手做】3D 打印 Arduino OLED 电表

[复制链接]
本帖最后由 驴友花雕 于 2025-6-5 06:17 编辑

你有没有想过一件物品使用多少瓦特或多少电流,甚至它的工作电压?这个简单易行的项目可以为您提供重要信息,同时将成本保持在 7 美元以下。我主要将其设计为与常见的太阳能充电控制器结合使用,这些控制器没有任何负载功耗的指示。自从制作它以来,我意识到它在我自制的台式电源上也很有用。事实上,你可以将一个小的位图图像编程到其中,这只是一个额外的好处,每次看它时都会让你感觉很棒。

【Arduino 动手做】3D 打印 Arduino OLED 电表图2

【Arduino 动手做】3D 打印 Arduino OLED 电表图3

【Arduino 动手做】3D 打印 Arduino OLED 电表图1



驴友花雕  中级技神
 楼主|

发表于 2025-5-21 17:03:10

【Arduino 动手做】3D 打印 Arduino OLED 电表

第 1 步:收集您的零件

Arduino Nano)
ACS 712 30安培电流传感器模块
I2C OLED 显示器 5伏特
10k 和 100k 电阻器
本 instructable 中提供的 Arduino 代码
本说明中提供的 3d 打印案例 Stl(可选)

你可能在房子周围放置的东西包括
松散的电线
烙铁或焊接方式
某种外壳
用于编程的 USB 迷你电缆
装有 Arduino 软件的计算机
用于测试电子电路的面包板
测试电源电压 7-15
测试负载
用于测试的万用表

【Arduino 动手做】3D 打印 Arduino OLED 电表图2

【Arduino 动手做】3D 打印 Arduino OLED 电表图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-5-21 17:05:45

【Arduino 动手做】3D 打印 Arduino OLED 电表

第 2 步:在面包板上制作原型

我提供了一个简单易懂的图表,显示了所有连接是如何建立的。我建议使用面包板,花点时间,确保在通电之前连接正确。请特别注意确保电阻分压器设置正确。在将其连接到 ardunino 之前,测量中间的电压,它应该是输入端电压的 1/10。

【Arduino 动手做】3D 打印 Arduino OLED 电表图1

【Arduino 动手做】3D 打印 Arduino OLED 电表图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-5-21 17:08:40

【Arduino 动手做】3D 打印 Arduino OLED 电表

本帖最后由 驴友花雕 于 2025-5-21 17:11 编辑

第 3 步:编码和校准

这段代码远非完美,而是匆忙的,只是一个概念证明。当前设置为在 4 个页面之间循环,每次更新显示的信息。使用万用表测量源电压,然后分别修改代码中的 R1 和 R2 以校准显示屏上的电压。接下来,使用相同的电压和源,使用万用表测量负载的电流。然后使用电流传感器参考该读数,并向上或向下修改数字 511 以进行校准。请记住,在测量小电流时它不准确,我建议在校准时使用大约 1 安培的负载。如果您的读数显示为负值,请交换电流传感器上的感应线以轻松纠正。还可以随意使用您自己的位图图像更改代码中的位图图像,以真正自定义仪表的最终外观。

项目开源代码件附件
  1. #include "U8glib.h"
  2. int analogInput = A2;
  3. float vout = 0.0;
  4. float vin = 0.0;
  5. float R1 = 101000.0; // resistance of R1 (100K)
  6. float R2 = 10100.0; // resistance of R2 (10K)
  7. int value = 0;
  8. int amp = 0;
  9. float watt = 0.0;
  10. float amps = 0.0;
  11. U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
  12. const unsigned char PROGMEM ins [] = {
  13. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  14. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  15. 0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x10, 0x00, 0x00, 0x81, 0x03, 0xC1, 0xC0, 0x00, 0x00, 0x00,
  16. 0x00, 0x00, 0x01, 0x02, 0x20, 0x00, 0x10, 0x00, 0x00, 0x83, 0x04, 0x42, 0x20, 0x00, 0x00, 0x00,
  17. 0x00, 0x00, 0x01, 0x04, 0x20, 0x00, 0x10, 0x00, 0x00, 0x85, 0x08, 0x24, 0x20, 0x00, 0x00, 0x00,
  18. 0x00, 0x00, 0x01, 0x08, 0x2E, 0x0F, 0x10, 0xE0, 0x70, 0x89, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00,
  19. 0x00, 0x00, 0x01, 0x10, 0x31, 0x10, 0x91, 0x10, 0x88, 0x81, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00,
  20. 0x00, 0x00, 0x01, 0x30, 0x21, 0x20, 0x92, 0x09, 0x04, 0x81, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x00,
  21. 0x00, 0x00, 0x01, 0x50, 0x21, 0x03, 0x92, 0x09, 0x04, 0x81, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00,
  22. 0x00, 0x00, 0x01, 0x88, 0x21, 0x1C, 0x93, 0xF9, 0xFC, 0x81, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00,
  23. 0x00, 0x00, 0x01, 0x04, 0x21, 0x20, 0x92, 0x01, 0x00, 0x81, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00,
  24. 0x00, 0x00, 0x01, 0x04, 0x21, 0x20, 0x92, 0x09, 0x04, 0x81, 0x02, 0x04, 0x10, 0x00, 0x00, 0x00,
  25. 0x00, 0x00, 0x01, 0x02, 0x21, 0x21, 0x91, 0x10, 0x88, 0x81, 0x04, 0x06, 0x20, 0x00, 0x00, 0x00,
  26. 0x00, 0x00, 0x01, 0x01, 0x21, 0x1E, 0x90, 0xE0, 0x70, 0x81, 0x0F, 0xE1, 0xC0, 0x00, 0x00, 0x00,
  27. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  28. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  29. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  30. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  31. 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  32. 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  33. 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  34. 0x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  35. 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  36. 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  37. 0x00, 0x00, 0x00, 0x00, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  38. 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x03, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  39. 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x00, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  40. 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x36, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  41. 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0xF8, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  42. 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x01, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  43. 0x00, 0x00, 0x00, 0x00, 0x70, 0x40, 0x03, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  44. 0x00, 0x00, 0x00, 0x00, 0x78, 0x40, 0x03, 0x8E, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  45. 0x00, 0x00, 0x00, 0x00, 0xF8, 0x40, 0x03, 0xCE, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  46. 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xCE, 0x31, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  47. 0x00, 0x00, 0x00, 0x03, 0xF8, 0x80, 0x07, 0xFC, 0x39, 0x8F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  48. 0x00, 0x00, 0x00, 0x03, 0xF8, 0x80, 0x03, 0xF8, 0x3F, 0x8F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  49. 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x80, 0x01, 0xF0, 0x1E, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
  50. 0x00, 0x00, 0x00, 0x07, 0xF8, 0x80, 0x00, 0x00, 0x04, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
  51. 0x00, 0x00, 0x00, 0x03, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  52. 0x00, 0x00, 0x00, 0x03, 0xF9, 0x81, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  53. 0x00, 0x00, 0x00, 0x01, 0xF9, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
  54. 0x00, 0x00, 0x00, 0x01, 0xF9, 0x80, 0x00, 0x1F, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  55. 0x00, 0x00, 0x00, 0x01, 0xF1, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  56. 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  57. 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  58. 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  59. 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  60. 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  61. 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  62. 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  63. 0x00, 0x00, 0x00, 0x00, 0x43, 0xFF, 0xFF, 0xFF, 0xC0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  64. 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  65. 0x00, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  66. 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
  67. 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
  68. 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
  69. 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  70. 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00,
  71. 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
  72. 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00,
  73. 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
  74. 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
  75. 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
  76. 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
  77. };
  78. void setup() {  
  79. pinMode(analogInput, INPUT);
  80. pinMode(A1, INPUT);
  81. }
  82. void loop() {
  83.   u8g.firstPage();
  84.   do {  
  85.     draw();   
  86.   } while( u8g.nextPage() );
  87.   delay(1000);
  88.   u8g.firstPage();
  89.   do {  
  90.     draw2();   
  91.   } while( u8g.nextPage() );
  92. delay(1000);
  93.    u8g.firstPage();
  94.   do {  
  95.     draw3();   
  96.   } while( u8g.nextPage() );
  97. delay(1000);
  98.     u8g.firstPage();
  99.   do {  
  100.     draw4();   
  101.   } while( u8g.nextPage() );
  102. delay(1000);
  103. value = analogRead(analogInput);
  104. vout = (value * 5.0) / 1024.0;
  105. vin = vout / (R2/(R1+R2));
  106. amp = analogRead(A1);
  107. amps = ((511 - amp) * 75.75 / 1023);
  108. watt = (amps * vin);
  109. }
  110. void draw(){
  111.   u8g.setFont(u8g_font_profont17r);
  112.    u8g.drawStr(31, 12, "VOLTS");
  113.    u8g.setFont(u8g_font_profont29r);
  114.   u8g.setPrintPos(26,45);
  115.   u8g.drawRFrame(3, 18, 125, 35, 10);  
  116.   u8g.println(vin);                     
  117.   u8g.println("V");  
  118. }
  119. void draw2(){
  120.   u8g.setFont(u8g_font_profont17r);
  121.    u8g.drawStr(38, 12, "AMPS");
  122.     u8g.setFont(u8g_font_profont29r);
  123.   u8g.setPrintPos(26,45);
  124.   u8g.drawRFrame(3, 18, 125, 35, 10);   
  125.   u8g.println(amps);                        
  126.   u8g.println("A");  
  127. }
  128. void draw3(){
  129.   u8g.setFont(u8g_font_profont17r);
  130.    u8g.drawStr(31, 12, "WATTS");
  131.     u8g.setFont(u8g_font_profont29r);
  132.   u8g.setPrintPos(26,45);
  133.   u8g.drawRFrame(3, 18, 125, 35, 10);   
  134.   u8g.println(watt);                     
  135.   u8g.println("W");  
  136. }
  137. void draw4(){
  138. u8g.drawBitmapP( 0, 0, 16, 64, ins);
  139. }
复制代码


第 4 步:3D 打印外壳

您可以通过多种不同的方式封闭您的项目,但是如果您有 3D 打印机,为什么不打印一个外壳呢。我为我设计的 2 部分外壳提供了 stl 文件,该外壳通过摩擦配合卡在一起。它还具有 2 个用于螺钉的安装孔和独特的堆叠布局。

3D打印文件见附件

【Arduino 动手做】3D 打印 Arduino OLED 电表图1

【Arduino 动手做】3D 打印 Arduino OLED 电表图2


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-5-21 17:13:47

【Arduino 动手做】3D 打印 Arduino OLED 电表

第 5 步:焊接和组装

将电线焊接到电路板上,使其尽可能短,参考它们在印刷外壳背面的安装方式。板子和显示器的摩擦配合非常好,一切都保持得很好。最后一步是将正面压在整个东西上,然后就完成了。

【Arduino 动手做】3D 打印 Arduino OLED 电表图2

【Arduino 动手做】3D 打印 Arduino OLED 电表图1

【Arduino 动手做】3D 打印 Arduino OLED 电表图3

【Arduino 动手做】3D 打印 Arduino OLED 电表图4

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-5-21 17:16:15

【Arduino 动手做】3D 打印 Arduino OLED 电表

本帖最后由 驴友花雕 于 2025-6-5 19:00 编辑

附录
项目链接:https://www.instructables.com/3D-Printed-Arduino-OLED-Watt-Meter/
项目作者:内华达州斯帕克斯 Khaleel123
视频教程:
3D打印文件:
https://content.instructables.co ... FGJLAVIIVO3SL82.stl
https://content.instructables.co ... FZD1Q6TIVO3SL8V.stl
项目开源代码:https://content.instructables.co ... FKEB60DIVO3SLBA.ino


【Arduino 动手做】3D 打印 Arduino OLED 电表图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-5-23 06:20:45

【Arduino 动手做】3D 打印 Arduino OLED 电表

【Arduino 动手做】3D 打印 Arduino OLED 电表图2

【Arduino 动手做】3D 打印 Arduino OLED 电表图3

【Arduino 动手做】3D 打印 Arduino OLED 电表图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-6-5 06:18:07

【Arduino 动手做】3D 打印 Arduino OLED 电表

【Arduino 动手做】3D 打印 Arduino OLED 电表图2

【Arduino 动手做】3D 打印 Arduino OLED 电表图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail