2020-03-05 01:01:56 weixin_45023620 阅读数 16
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1466 人正在学习 去看看 王全

ROS与Arduino案例一:hello world示例的实现

1.打开终端,键入arduino

yl@yl-Lenovo-XiaoXin-CHAO5000:~$ arduino
二进制程序大小:9,360字节(最大32,256字节)

2.点击文件(File),选择示例(Examples)下的ros_lib,选择HelloWorld
3.另启一个终端,键入roscore

yl@yl-Lenovo-XiaoXin-CHAO5000:~$ roscore
... logging to /home/yl/.ros/log/d146a016-5e2d-11ea-bb1f-88b1113ba169/roslaunch-yl-Lenovo-XiaoXin-CHAO5000-4298.log
Checking log directory for disk usage. This may take awhile.

4.再开启新终端,键入rosrun rosserial_python serial_node.py /dev/ttyACM0(或/dev/ttyUSB0)
如果此次出现:没有文件或目录
删除工作空间,再重新创建工作空间即可,具体可以查看我的博客(创建工作空间)

yl@yl-Lenovo-XiaoXin-CHAO5000:~$ rosrun rosserial_python serial_node.py /dev/ttyACM0
[INFO] [1583336223.339127]: ROS Serial Python Node
[INFO] [1583336223.354405]: Connecting to /dev/ttyACM0 at 57600 baud
[INFO] [1583336226.011979]: Note: publish buffer size is 280 bytes
[INFO] [1583336226.014047]: Setup publisher on chatter [std_msgs/String]

5.开启新终端,键入rostopic echo chatter

yl@yl-Lenovo-XiaoXin-CHAO5000:~$ rostopic echo chatter
data: "hello world!"
---
data: "hello world!"
---
data: "hello world!"
---
data: "hello world!"
2018-09-04 16:04:44 m0_37738838 阅读数 4119
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1466 人正在学习 去看看 王全

本人最近在学习arduino,利用空闲时间制作一些小程序来自娱自乐,也和大家一起交流分享

本次arduino遥控器控制全彩灯珠主要是用到两个名为Timer库和IRremote库,你可以在https://download.csdn.net/download/m0_37738838/10645108下载到这两个库文件及下面提到的源码案例。

#include "Timer.h"        //计时器头文件
Timer t;                //计时器对象
int PIN_RECV = 2;      //红外接收
int buzzer_pin=8;     //蜂鸣器的pin
boolean buzzer_state=true;       //蜂鸣器状态
boolean hours_state=false;      //小时设置
boolean minutes_state=false;   //分钟设置
#include <IRremote.h>        //红外头文件
IRrecv irrecv(PIN_RECV);   //pin设置为接收
decode_results results;  //解码结果
long hours=0;   //默认0小时
long minutes=600000; //默认十分钟
long Ttime;    //定时总时间
int a=1;  //count方法传入个数
void setup()
{
    Serial.begin(9600);
    irrecv.enableIRIn();           //开启红外
    pinMode(buzzer_pin,OUTPUT);   //设置蜂鸣器的pin为输出模式
}
void loop()
{
    t.update();         //必须在loop中调用,它会服务于计时器相关的事件
    if (irrecv.decode(&results)) {
      Serial.print(results.value,HEX);
     switch(results.value)
    {
        //2
      case 0xFF629D:
      setTime();//进入闹钟模式
        break;
    }
    irrecv.resume();
  }
}
void callbackfun(){
  boolean state = true;
  while(state){
        for(int i=0;i<80;i++)//输出一个频率的声音
        {
            digitalWrite(buzzer_pin,HIGH);//发声音
            delay(1);//延时1ms
            digitalWrite(buzzer_pin,LOW);
            delay(1);
        }
         for(int i=0;i<100;i++)//输出另一个频率的声音,这里的100与前面的80一样,用来控制频率,可以自己调节
        {
          digitalWrite(buzzer_pin,HIGH);
          delay(2);
          digitalWrite(buzzer_pin,LOW);
          delay(2);
        }
        if (irrecv.decode(&results)) {
          if(results.value==0xFF9867) {
            state=false;
          }
        }
}
}
void  setTime(){            //unsigned long 0-4,294,967,295
  boolean settime_state = true; //定时状态

   while(settime_state){
          if (irrecv.decode(&results)) {
                 switch(results.value){
                    //*
                  case 0xFF6897:Hours();break;
                    //#
                  case 0xFFB04F:Minutes();break;
                    //OK
                  case 0xFF38C7:StarClock();settime_state = false;break;
                }
          irrecv.resume();
    }
   }
}
void Hours(){   //小时
  Serial.println(111);
  boolean hours_state = true; 
  while(hours_state){
        if (irrecv.decode(&results)) {
          switch(results.value){
               //1
            case 0xFFA25D:hours=3600000;break;
              //2 
            case 0xFF629D:hours=7200000;break;
              //3
            case 0xFFE21D:hours=10800000;break;
              //4
            case 0xFF22DD:hours=14400000;break;
              //5
            case 0xFF02FD:hours=18000000;break;
              //6
            case 0xFFC23D:hours=21600000;break;
              //7
            case 0xFFE01F:hours=25200000;break;
              //8
            case 0xFFA857:hours=28800000;break;
              //9
            case 0xFF906F:hours=32400000;break;
              //0
           case 0xFF9867:hours=0;break;
           //OK
           case 0xFF38C7:hours_state = false;break;
          }
    irrecv.resume();
     }
  }
    Serial.println(333);
}
void Minutes(){    //分钟
  boolean minutes_state = true; 

  while(minutes_state){
     if (irrecv.decode(&results)) {
          switch(results.value){
                  //1
                case 0xFFA25D:count(1);break;
                  //2 
                case 0xFF629D:count(2);break;
                  //3
                case 0xFFE21D:count(3);break;
                  //4
                case 0xFF22DD:count(4);break;
                  //5
                case 0xFF02FD:count(5);break;
                  //6
                case 0xFFC23D:count(6);break;
                  //7
                case 0xFFE01F:count(7);break;
                  //8
                case 0xFFA857:count(8);break;
                  //9
                case 0xFF906F:count(9);break;
                  //0
               case 0xFF9867:count(0);break;
                //OK
               case 0xFF38C7:minutes_state = false;a=1;break;
          }
    irrecv.resume();
     }
  }
}
void StarClock(){       //开始定时
  Ttime = hours+minutes;
 t.after(Ttime,callbackfun);   //1000mm=1s   60000=1min;
 Serial.println(Ttime);
 Serial.println(666);

}
void count(int num){
  Serial.println(num);
  if(a==1){minutes = 60000 * num;a++;}    
  else if(a==2){int shi =minutes*10 ;int ge = 6000*num; minutes = shi + ge;a++;}  
  Serial.println(minutes);
}


我的红外接收引脚是D2,蜂鸣器信号引脚是D8。要准备好一个红外接收模块,一个红外遥控器,一个蜂鸣器以及一张arduino板。

使用定时闹钟时,先按下遥控器2,进入闹钟设置功能,按下*键则设置时钟时间,将我们要设置的时间0~9遥控输入,按下OK键表示确定,接下来设置分钟时间,按下#键后将我们要设置的时间0~9遥控输入,按下OK键表示确定,最后确认按下OK,这样arduino开始执行我们的定时闹钟的程序啦

当然因为我们的遥控器版本不一样,所以大家首先先将自己的遥控器编码输出来,修改一下红外接收部分的代码便可用啦,如果我们想在更好玩一点,可以在蜂鸣器上花点心思,通过音乐的节拍来设计蜂鸣器的声响,这样就更有意思了

2018-05-07 23:12:48 Eric__Deng 阅读数 1460
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1466 人正在学习 去看看 王全

SR05超声波模块介绍兼购买链接

模块特点:

1、串口通信;

2、基本0死区(实测1cm以上测量较精准);

3、小巧;

4、其余的普通介绍见链接,懒得介绍。


Arduino测试程序:

#define DistanceEn_Pin 2

int i = 0;
long unsigned distance = 0;
uint8_t distanceValue[4] = {0,0,0,0};
void setup() 
{
  Serial.begin(9600);
  pinMode(DistanceEn_Pin,OUTPUT);
  digitalWrite(DistanceEn_Pin,1);
}

void Distance()
{
  while( Serial.read() >= 0 );         //清空串口缓存
  digitalWrite(DistanceEn_Pin,0);      //超声波使能开
  while(Serial.available() <= 4)       //等待超声波窗口数据
  { 
  }
  distanceValue[0] = Serial.read();    //提取数据
  if( distanceValue[0] == 0xff )       //判断是否为超声波模块数据
  {
    for(i = 1;i <= 3;i ++)
    {
      distanceValue[i] = Serial.read();
    }
   }

  digitalWrite(DistanceEn_Pin,1);       //超声波使能关

  distance = distanceValue[1] * 256 + distanceValue[2];                   //数据处理,计算距离
  if((distanceValue[3] == distanceValue[1] + distanceValue[2] - 1))       //数据和校验,可去掉
  {
    Serial.print("The distance is : ");
    Serial.print(distance);
    Serial.println(" mm");
  }
}

void loop() 
{
  Distance();
}

测试步骤:

1、烧录程序;

2、接线(Arduino的D2接超声波模块的En,Arduino的EX接超声波模块的ECHO,还有电源线);

3、打开串口监视器,然后就可以看到源源不断的距离数据了。

2019-02-23 14:45:39 MASTA1 阅读数 1228
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1466 人正在学习 去看看 王全

I2C驱动12864液晶模块程序分享(ARDUINO UNO)
材料:RSCG12864B01液晶模块;ARDUINO UNO板, U-PD2图片下载器,5v电源,RSCG12864B规格书
I2C控制的RSCG12864B01屏幕,是一款非常有用。就来分享一下这个屏幕的使用教程。
采用Arduino标准的Wire库去驱动RSCG12864B01屏幕,只需要注意I2C总线的电平即可(这个RSCG12864B01是5V的,Arduino ARM系列的是3.3V,所以需要用购买3.3V版本的液晶屏,否则会损坏控制板)。
新封装的库已经在UNO上跑了Example,没有问题,现在上几张图来给大家看一下效果,随后再介绍内部的函数使用。ARDUINO与RSCG12864B01液晶屏的接线
调用内置的16*16点阵的汉字
调用内置的12*12点阵的汉字
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用12864简单的显示一下数字,字符,图像的话,确实是一个好的选择。
使用图片做界面需配合U-PD2图片下载工具。
在这里插入图片描述
现在简单的介绍一下函数库的一些函数。先来看一下Example。
[kenrobot_code]#include <RSCG12864B.h>
// 实际使用屏幕的接线数量应该是3 + 2
// 3是指I2C的两根线加上屏幕的一个Busy信号线
// 2指的就是5V和GND
const int busyPin = 7;
RAYLIDLCD myLCD(busyPin); // 我定义Busy信号到D7(数字口7)

void setup() {
// put your setup code here, to run once:
myLCD.begin(); // 初始化一下屏幕
myLCD.setBrightness(255); // 设置屏幕亮度为255
}

void loop() {
// put your main code here, to run repeatedly:
unsigned char i;
// 下面四个数组是中文汉字的编码
char chn[] = {0XC9, 0XEE, 0XDB, 0XDA, 0XCA, 0XD0, 0XC8, 0XF0, 0XC1, 0XA2, 0XB5, 0XC2, 0XB5, 0XE7, 0XD7, 0XD3, 0x00,};
char f1[] = {0X49, 0X32, 0X43, 0XBD, 0XD3, 0XBF, 0XDA, 0X2C, 0XC4, 0XDA, 0XBD, 0XA8, 0XD7, 0XD6, 0XBF, 0XE2, 0,};
char f2[] = {0XD6, 0XD0, 0XCE, 0XC4, 0X2C, 0XBA, 0XAB, 0XCE, 0XC4, 0X2C, 0XC8, 0XD5, 0XCE, 0XC4, 0,};
char f3[] = {0XD6, 0XA7, 0XB3, 0XD6, 0X32, 0X44, 0XBB, 0XE6, 0XCD, 0XBC, 0};

myLCD.displayBMP(0); // 这个函数的作用就是显示预存在屏幕Flash中的图片
delay(800);
myLCD.displayBMP(1);
delay(800);
myLCD.displayBMP(2);
delay(800);
myLCD.displayBMP(3);
delay(800);
myLCD.displayBMP(4);
delay(800);
myLCD.displayBMP(5);
delay(800);
myLCD.clear(); // 清屏
myLCD.print(0, 15, chn, VLARGE); // print是用来在指定位置显示字符的,使用方法参考如下说明
// print(屏幕x, 屏幕y, 字符, 字号);其中字号有 SMALL, NORMAL, BIG, LARGE, VLARGE
// 显示中文只能使用LARGE和VLARGE
myLCD.print(8, 35, “www.raylid.com”, VLARGE);
delay(3000);
myLCD.clear();
myLCD.print(16, 15, chn, LARGE);
myLCD.print(20, 35, “www.raylid.com”, LARGE);
delay(3000);
myLCD.clear();
myLCD.fontReversOn(); // 反白显示,具体效果参考上面的图片
myLCD.print(25, 0, “Built-in font”, LARGE); // 反白这句话
myLCD.fontReversOff(); // 关闭反白
myLCD.print(3, 15, “57 ASCII 0123456789", SMALL); // 参考上面print
myLCD.print(3, 25, "5
7 ASCII ABCDEabcde”, SMALL);
myLCD.print(20, 35, “612/1212 FONT”, LARGE);
myLCD.print(5, 48, “816/1616 FONT”, VLARGE);
delay(3000);
myLCD.clear();
myLCD.print(0, 0, f1, VLARGE);
myLCD.print(0, 16, f2, VLARGE);
myLCD.print(0, 32, f3, VLARGE);
myLCD.drawRect(0, 50, 127, 63); // 绘制空心矩形
// 使用如下
// drawRect(x1, y1, x2, y2);
for (i = 2; i <= 125; i++)
{
myLCD.drawRectF(2, 52, i, 61); // 绘制实心矩形,用法和空心矩形一样
delay(100);
}
delay(3000);
}
[/kenrobot_code]
在这里插入图片描述

2019-07-06 17:36:57 qq_35350654 阅读数 506
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1466 人正在学习 去看看 王全

初识Arduino


记得不久前写过一篇关于如何从一个Android小白程序员,最后逼成一个后台和运维通吃的苦逼程序员,那么今天来跟大家分享一下如何从一个IPTV全栈工程师(自封)到硬件开发小白的心酸过程。
在这里插入图片描述
简单说Arduino是一款便捷硬件开发,这玩意有点像C,但又不像C,反正对于像我这种C基础不太好的苦逼程序员去快速了解硬件开发是一个很不错的选择。

安装Arduino IDE


以下的步骤是基于 Windows 操作系统,如果你使用的是其他操作系统,可以将其作为参考。
首先,你需要从官网下载最新版本的 Arduino IDE 软件。下载链接:
http://arduino.cc/en/Main/Software
在这里插入图片描述
在下载页右侧的列表中选择下载对应的安装包。对于 Windows 系统用户既可以选择下载 Windows installer(推荐初次使用者下载),也可以下载 Windows ZIP 安装包(需要手动安装驱动)。若选择的是 Windows installer,你可以直接执行安装程序,并跟随安装向导完成配置,驱动会在程序安装完成后自动安装。
在这里插入图片描述
Arduino IDE 本身支持多种语言(包括中文),我们只需设置为中文即可。
打开 Fire->Preferences->Editor language,选择简体中文(Chinese(China)),然后重启 IDE。
在这里插入图片描述

ESP32 Blink(控制主板led)


安装 FireBeetle Board-ESP32 开发板核心

Arduino IDE 安装包中不包含 FireBeetle Board-ESP32 开发板核心,需要手动添加。首先,要添加 FireBeetle Board-ESP32 支持,需要在 Arduino 开发板管理器里手动安装FireBeetle Board-ESP32 开发板核心。

(1)打开文件->首选项,在附加开发板管理器网址中,将以下网址复制进去:
https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/package_esp32_index.json
点击好,完成设置。

(2)打开工具->板子->开发板管理器
在这里插入图片描述
在打开的开发板管理器中,输入“FireBeetle”并等待信息加载完毕。版本号为 0.0.9
(或者最新版本并点击“安装”后耐心等待安装完成。整个过程会因网络状况持续 5-10 分钟。安装完成后,开发板信息会被标注“INSTALLED”),如下图所示:

在这里插入图片描述

注意: 如果发现安装过程中一直处于卡顿现象,可能是网络原因引起的,您可以尝试强制重启 Arduino IDE,重新执行之前的步骤,或者通过翻墙软件加速网络,直到安装完成。其次,在安装过程中,有些关键程序可能会被防火墙或者杀毒软件拦截,请选择允许更改并添加至白名单。

连接 FireBeetle Board-ESP32 至电脑

正确安装完成 Arduino IDE 和 FireBeetle Board-ESP32 开发板核心后,即可将
FireBeetle Board-ESP32 通过 USB 数据线连接至电脑。正确连接时 FireBeetle
Board-ESP32 的 CHG 电源指示灯会闪烁(这是在查询有没有接入锂电池)。
在这里插入图片描述

在编程之前,我们需要确保开发板被电脑识别,并找出连接了哪一个 COM 口(用于提供串口通信交互)。可以在接下来的步骤中确认。

首先打开“计算机管理”,打开“设备管理器”,点开“端口(COM 和 LPT)”。接上
FireBeetle Board-ESP32 的端口就会在列表中显示(这里是 COM4)。
在这里插入图片描述
如果提示无法识别的设备,你需要下载 FireBeetle Board-ESP32 驱动到本机,并安装驱动,下载地址:https://github.com/Chocho2017/FireBeetle-Board-ESP32.git

将下载后的 FireBeetle-ESP32.inf 驱动文件保存到你的电脑(任意位置都可),右键点击 FireBeetle-ESP32,选择更新驱动程序软件,如下图所示:
在这里插入图片描述
选择浏览计算机以查找驱动程序软件,在地址栏中输入你刚刚保存的
FireBeetle-ESP32.inf 文件目录,点击下一步,然后根据提示完成驱动文件的安装,如下图所示:
在这里插入图片描述
注:上面方法不行就从这里下:https://gaic.alicdn.com/doc/hacklab/hqqro6.html?spm=a2c56.pc_iot_community_demo_detail.demo-detail.7.66a652064rUnqX

在 Arduino IDE 中进行编程

Arduino IDE 软件安装完成后,运行软件打开编程窗口。你可以在这个窗口里编辑并上传代码到 Arduino 开发板上,或是使用内置的串口监视器与开发板通信。Arduino IDE 界面如下:
在这里插入图片描述
与常规C 语言程序不同的是,一段用于Arduino 的程序通常由 void setup()部分与 void loop()两部分构成。

“void setup()”用于放置初始化程序的代码,这部分代码在开发板上电后仅运行一次。需重复运行的代码需放置在”void loop()”中,这些代码会一直重复运行,使得开发板与外部进行交互。

上传代码至 FireBeetle Board-ESP32 主板

在这一步,我们将演示如何上传事例程序”Blink”到FireBeetle Board-ESP32主板。”Blink”程序的功能是控制 D9 引脚上的 LED 灯间隔 1s 闪烁一次。FireBeetle Board-ESP32 主板与大部分 Arduino 相同,有一个板载的 D9 LED 信号灯,这意味着在本例中我们不需要连接其他的外设原件。LED 状态指示灯可在 FireBeetle Board-ESP32 主板上找到,如下图所示:
在这里插入图片描述
打开文件->事例->Basics->Blink,在上传之前,你应该首先确认代码中没有错误。点击“编译”确认。等待几秒,若没有错误,则会在信息窗口显示“编译完成”,表示编译成功。若出现错误可以返回检查程序是否完整。
在这里插入图片描述
编译成功后,选择工具->开发板->FireBeetle-ESP32。

然后再并根据 STEP4 中显示的FireBeetle Board-ESP32 所占用的端口号,我们应该选择“COM4”作为通信端口。COM和开发板选择完成后,开发板的信息和端口号就会在窗口右下角显示。
在这里插入图片描述
最后,点击“上传”烧写代码到 FireBeetle Board-ESP32 中。成功上传后,“上传成功”消息会出现在信息窗口。此时 FireBeetle Board-ESP32 板载的 D9 LED 灯会开始闪烁。
在这里插入图片描述
简而言之,为 Arduino 上传代码可以分为以下三个步骤:

1. 编译代码;
2. 选择开发板型号和端口号;
3. 上传!

我的错误记录

在这里插入图片描述
开始出现上图错误时还以为是自己电脑缺少python27.dll引起,网上一查发现关于arduino的资料还真少,折腾了一早上还是不行,最后重新卸载端口驱动,然后从新下载安装一遍就可以了。
下载地址:http://www.wch.cn/download/CH341SER_EXE.html

LED灯光控制案例


经过一早上的折腾可算是把开发环境弄完了,迫不及待的要来跑一个简单的案例,对接阿里云,实现远程控制LED灯光。

所需元件

在这里插入图片描述

  1. 红色食人鱼 LED
  2. 发光模块 x1 FireBettle Board-ESP32 x1
  3. FireBettle Gravity 扩展板x1
  4. 智能手机 x1

硬件连接

把 FireBettle Gravity 扩展板直插在 FireBettle Board-ESP32 主板上,再把红色 LED 模块接在扩展板的 D2 数字引脚上,确保电源引脚、接地引脚和信号引脚都连接正确。
在这里插入图片描述
元件连接好后,使用 USB 线连接 FireBettle Board-ESP32 主板和电脑。硬件准备好后,接下来就需要我们在阿里云平台上创建相应的产品,设备,服务来建立物理设备和阿里云 IoT 平台之间的联系了。

Arduino 程序

打开 Arduino IDE,点击文件->示例->DFRobot_Aliyun->SmartLight 项目,如下图所示:
在这里插入图片描述
注:如上图的案例代码是需要自己先下载好对应的库文件,存放到 Arduino IDE 安装目录下的libraries 文件中,具体如下:
在这里插入图片描述
下载地址:http://www.dfrobot.com.cn/images/upload/File/20190327164350d56gcn.rar

修改案例

将如下四点修改完成,即可上传代码,在手机端或阿里云IOT Stutio上进行控制设备了。

  1. WiFi 名称和密码的配置;
  2. 设备证书信息配置;
  3. 产品标识符配置;
  4. 上报和订阅 TOPIC 配置;

在这里插入图片描述
注:这些配置信息中,除了 WiFi 名和密码需要用户连接自己的 WiFi,其他的配置信息都需要从阿里云 IoT 平台上获取。详情参见阿里云物联网平台

文章总结


对于我们这样的新手而言,主要工作量还是在于开发环境的搭建,其实连接个元器件,跑个栗子等这些后期工作对于大家来说都是很容易的事情。

其实熟悉阿里云IOT物联网平台的朋友可能都会知道,为了方便大家一站式开发,阿里云也推出了自己的Hacklab在线编译平台,在编程上其实和Arduino(Arduino也有自己的在线编译平台)大同小异,从新搭建一个本地IDE也不是没有必要了,至少让我们更加熟悉Arduino的开发环境码。

下面放几张动力图,也许硬件开发真没用想象中那么困难,只要我们愿意迈出这一步,希望看到看不到这篇文章的你们都能月薪20K以上。
在这里插入图片描述

资源下载


Arduino IED:https://www.arduino.cc/en/Main/Donate
ESP32 USB串口驱动:http://www.wch.cn/download/CH341SER_EXE.html
CSDN Demo:https://download.csdn.net/download/qq_35350654/11296179
Git Demo:https://github.com/Life1412378121/SmartLight/tree/master

没有更多推荐了,返回首页