回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

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

头像 驴友花雕 2025.05.21 11 0

Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。

Arduino的特点是:
1、开放源码:Arduino的硬件和软件都是开放源码的,你可以自由地修改、复制和分享它们。
2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。
3、便宜:Arduino的硬件和软件都是非常经济的,你可以用很低的成本来实现你的想法。
4、多样:Arduino有多种型号和版本,你可以根据你的需要和喜好来选择合适的Arduino板。
5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

 

zzz.jpg
zzz-0.jpg

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

 

00.jpg

第 1 步:收集您的零件


 

Arduino Nano)

ACS 712 30安培电流传感器模块

I2C OLED 显示器 5伏特

10k 和 100k 电阻器

本 instructable 中提供的 Arduino 代码

本说明中提供的 3d 打印案例 Stl(可选)

 

你可能在房子周围放置的东西包括

松散的电线

烙铁或焊接方式

某种外壳

用于编程的 USB 迷你电缆

装有 Arduino 软件的计算机

用于测试电子电路的面包板

测试电源电压 7-15

测试负载

用于测试的万用表

 

01.jpg
01-.jpg

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

 

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

 

02.jpg
02-.jpg

第 3 步:编码和校准

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

项目开源代码件附件

 

代码
#include "U8glib.h"
int analogInput = A2;
float vout = 0.0;
float vin = 0.0;
float R1 = 101000.0; // resistance of R1 (100K)
float R2 = 10100.0; // resistance of R2 (10K) 
int value = 0;
int amp = 0;
float watt = 0.0;
float amps = 0.0;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
const unsigned char PROGMEM ins [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x01, 0x20, 0x00, 0x10, 0x00, 0x00, 0x81, 0x03, 0xC1, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x02, 0x20, 0x00, 0x10, 0x00, 0x00, 0x83, 0x04, 0x42, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x04, 0x20, 0x00, 0x10, 0x00, 0x00, 0x85, 0x08, 0x24, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x08, 0x2E, 0x0F, 0x10, 0xE0, 0x70, 0x89, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x10, 0x31, 0x10, 0x91, 0x10, 0x88, 0x81, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x30, 0x21, 0x20, 0x92, 0x09, 0x04, 0x81, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x50, 0x21, 0x03, 0x92, 0x09, 0x04, 0x81, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x88, 0x21, 0x1C, 0x93, 0xF9, 0xFC, 0x81, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x04, 0x21, 0x20, 0x92, 0x01, 0x00, 0x81, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x04, 0x21, 0x20, 0x92, 0x09, 0x04, 0x81, 0x02, 0x04, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x02, 0x21, 0x21, 0x91, 0x10, 0x88, 0x81, 0x04, 0x06, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x01, 0x21, 0x1E, 0x90, 0xE0, 0x70, 0x81, 0x0F, 0xE1, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x03, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x00, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x36, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0xF8, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x01, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x40, 0x03, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x78, 0x40, 0x03, 0x8E, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0x40, 0x03, 0xCE, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xCE, 0x31, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF8, 0x80, 0x07, 0xFC, 0x39, 0x8F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF8, 0x80, 0x03, 0xF8, 0x3F, 0x8F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xFF, 0xF8, 0x80, 0x01, 0xF0, 0x1E, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xF8, 0x80, 0x00, 0x00, 0x04, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF9, 0x81, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF9, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF9, 0x80, 0x00, 0x1F, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xF1, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x43, 0xFF, 0xFF, 0xFF, 0xC0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00
};
void setup() {  
pinMode(analogInput, INPUT);
pinMode(A1, INPUT);
}
void loop() { 
  u8g.firstPage();
  do {  
    draw();    
  } while( u8g.nextPage() );
  delay(1000); 
  u8g.firstPage();
  do {  
    draw2();    
  } while( u8g.nextPage() ); 
 delay(1000); 
   u8g.firstPage();
  do {  
    draw3();    
  } while( u8g.nextPage() ); 
 delay(1000); 
    u8g.firstPage();
  do {  
    draw4();    
  } while( u8g.nextPage() ); 
 delay(1000); 
 value = analogRead(analogInput);
 vout = (value * 5.0) / 1024.0;
 vin = vout / (R2/(R1+R2)); 
 amp = analogRead(A1);
 amps = ((511 - amp) * 75.75 / 1023);
 watt = (amps * vin);
}
void draw(){
  u8g.setFont(u8g_font_profont17r);
   u8g.drawStr(31, 12, "VOLTS"); 
   u8g.setFont(u8g_font_profont29r); 
  u8g.setPrintPos(26,45);
  u8g.drawRFrame(3, 18, 125, 35, 10);  
  u8g.println(vin);                     
  u8g.println("V");  
}
void draw2(){
  u8g.setFont(u8g_font_profont17r);
   u8g.drawStr(38, 12, "AMPS"); 
    u8g.setFont(u8g_font_profont29r);
  u8g.setPrintPos(26,45);
  u8g.drawRFrame(3, 18, 125, 35, 10);    
  u8g.println(amps);                        
  u8g.println("A");  
}
void draw3(){
  u8g.setFont(u8g_font_profont17r);
   u8g.drawStr(31, 12, "WATTS"); 
    u8g.setFont(u8g_font_profont29r);
  u8g.setPrintPos(26,45);
  u8g.drawRFrame(3, 18, 125, 35, 10);   
  u8g.println(watt);                      
  u8g.println("W");  
}
void draw4(){
u8g.drawBitmapP( 0, 0, 16, 64, ins); 
}

第 4 步:3D 打印外壳

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

3D打印文件见附件

 

04.jpg
04-.jpg

第 5 步:焊接和组装

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

 

05 (3).jpg
05-.jpg

05 (1).jpg
05 (2).jpg

项目

项目链接:https://www.instructables.com/3D-Printed-Arduino-OLED-Watt-Meter/
项目作者:内华达州斯帕克斯 Khaleel123
视频教程:
3D打印文件:
https://content.instructables.com/FGJ/LAVI/IVO3SL82/FGJLAVIIVO3SL82.stl
https://content.instructables.com/FZD/1Q6T/IVO3SL8V/FZD1Q6TIVO3SL8V.stl
项目开源代码:https://content.instructables.com/FKE/B60D/IVO3SLBA/FKEB60DIVO3SLBA.ino

 

07.jpg

评论

user-avatar
icon 他的勋章
    展开更多