亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 向日葵:制作电子向日葵追踪阳光

零部件与材料

软件平台

项目缘起

Maker 总对新奇事物敏感。一日刷到向日葵随太阳转动的视频,顿生灵感:为何不自制电子装置模仿这一生物机制?

随后几天着手制作太阳追踪器。选用 Crowtail 系列模块(兼容 Arduino),从仓库拣选元件组装。用手机手电筒测试,完美跟随光源移动。

发视频到社交媒体后获大量点赞转发,不少人索要教程。遂重制项目并编写详细教程分享。

步骤 1:准备材料

Arduino 向日葵:制作电子向日葵追踪阳光

步骤 2:制作花头

Arduino 向日葵:制作电子向日葵追踪阳光

将两块硬纸板剪成图示形状,拼成十字架。木棒粘在十字中心,作为“花头”指向光源,兼具美观与稳定。

步骤 3:安装 4 个光敏传感器

Arduino 向日葵:制作电子向日葵追踪阳光

在 KT 板上戳 4 个孔装传感器,中间挖一孔穿木棒。给传感器编号 1-4 以区分位置。

步骤 4:连接传感器线缆

Arduino 向日葵:制作电子向日葵追踪阳光

热熔胶固定木棒于 KT 板,插上传感器连接线。

步骤 5:将木棒固定到云台

Arduino 向日葵:制作电子向日葵追踪阳光

传感器座朝向保持与图一致:传感器 1、2 在下方。云台内置 9G 舵机,水平/垂直各 180° 旋转。最后将装饰用太阳能板粘在 KT 板上(仅装饰,不供电)。

步骤 6:上传代码

Arduino 向日葵:制作电子向日葵追踪阳光

取出 Crowduino 和 Base Shield 叠装。连接线缆前先上传代码:Micro USB 连接电脑,打开 Arduino IDE。

步骤 7:连接 4 个传感器到扩展板

Arduino 向日葵:制作电子向日葵追踪阳光

按编号一一对应:

步骤 8:连接电位器到扩展板

Arduino 向日葵:制作电子向日葵追踪阳光

两个电位器分别接 A4、A5。两者无区别,但 A4 控制反应延时,A5 控制舵机转动速度。

步骤 9:连接云台到扩展板

Arduino 向日葵:制作电子向日葵追踪阳光

下舵机(水平)接 D9,上舵机(垂直)接 D10。

步骤 10:供电方式

Arduino 向日葵:制作电子向日葵追踪阳光

Crowduino 为主控,可用 USB 移动电源或 DC 适配器供电,决定是否便携。

步骤 11:实测演示

Arduino 向日葵:制作电子向日葵追踪阳光

合上盒子,它迫不及待想追光。别急,先在暗室用手机手电筒测试——看这可爱的家伙!

看似复杂实则简单,快动手做吧!还能继续优化让它更酷炫!

代码

#include <Servo.h>
Servo horizontal; int servoh = 90;
Servo vertical;   int servov = 90;
// LDR 引脚定义
int ldrrd = 0; // 右下
int ldrld = 1; // 左下
int ldrlt = 2; // 左上
int ldrrt = 3; // 右上

void setup() {
  Serial.begin(9600);
  horizontal.attach(9);
  vertical.attach(10);
}

void loop() {
  int lt = analogRead(ldrlt);
  int rt = analogRead(ldrrt);
  int ld = analogRead(ldrld);
  int rd = analogRead(ldrrd);
  int dtime = analogRead(4) / 20;   // A4 电位器:反应延时
  int tol = analogRead(5) / 4;      // A5 电位器:容差/灵敏度

  int avt = (lt + rt) / 2; // 上半区平均
  int avd = (ld + rd) / 2; // 下半区平均
  int avl = (lt + ld) / 2; // 左半区平均
  int avr = (rt + rd) / 2; // 右半区平均

  int dvert = avt - avd; // 垂直差值
  int dhoriz = avl - avr; // 水平差值

  // 垂直方向调整
  if (-1 * tol > dvert || dvert > tol) {
    if (avt > avd) {
      servov = ++servov;
      if (servov > 180) servov = 180;
    } else if (avt < avd) {
      servov = --servov;
      if (servov < 0) servov = 0;
    }
    vertical.write(servov);
  }

  // 水平方向调整
  if (-1 * tol > dhoriz || dhoriz > tol) {
    if (avl > avr) {
      servoh = --servoh;
      if (servoh < 0) servoh = 0;
    } else if (avl < avr) {
      servoh = ++servoh;
      if (servoh > 180) servoh = 180;
    }
    horizontal.write(servoh);
  }
  delay(dtime);
}

3D 打印/外壳文件

项目附件含外壳参考图片。

原理图

原理图见项目附件。

制造工艺

  1. 用 Arduino 打造绚丽显示器 Ambilight 系统
  2. 用 Arduino UNO 和 OLED 显示屏制作经典 Pong 游戏:分步教程
  3. Arduino 音频频率检测:基于 FFT 测量最响亮声音峰值
  4. 自制 Arduino 电子宠物「Tamaguino」:复刻经典 Tamagotchi 全攻略
  5. 电子变色龙:Arduino Nano RGB LED 与颜色传感器项目
  6. 智能无线开关控制器:Arduino + 433MHz 远程操控墙壁开关
  7. Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
  8. 基于 Arduino Nano 的智能运动感应水枪
  9. 使用 SparkFun 7 段数码管构建可靠的 Arduino 倒计时器
  10. 智能黑客空间电子签到系统 - Arduino Mega 与 RFID 实现
  11. 自制 Arduino 遥控保时捷赛车:从改装底盘到手机 App 控制全攻略
  12. Arduino 合成乐音:从零实现 88 键钢琴全音域