2017-08-25 13:13:37 qq_35594560 阅读数 3171
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    579 人正在学习 去看看 陈贤能


这是一个智能密码锁,功能主要包括:

1.可以修改密码。

2.设置新密码。

3.断电密码不重置。

4.可以通过蓝牙远程控制。

由于是早期做的东西了,所以图片以及连线如有需要,可联系QQ:2662345338

硬件清单:

1.I2C接口(可以让你的lcd1602的接线变得异常简单)

2.Arduino UNO板

3. LCD1602

4.4x4键盘

第一次发,如有什么不恰当的地方,请各位多多指教。



以上如有需要,请到该链接进行下载http://download.csdn.net/download/qq_35594560/9950024

2014-04-06 21:51:28 zgc261 阅读数 8840
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    579 人正在学习 去看看 陈贤能

蓝牙控制arduino的安卓软件(基于app inventor )

上一篇讲了蓝牙控制arduino的安卓软件(基于app inventor )(之一:andriod软件设计篇)

这节讲arduino端的程序设计篇。

现在开始:

1、蓝牙的连接:



2、连接好之后是程序设计:

首先设计的是串口通信的设计

void setup()
{
 Serial.begin(9600);
 pinMode(ledpin,OUTPUT);
}

3、然后是接收缓冲区字符,并进行判断,进行对应的操作:

void loop()
{
  while(Serial.available())
   {
     char c=Serial.read();
      if(c=='A')
        {
          Serial.println("Hello I am amarino");
          digitalWrite(ledpin,HIGH);
        }
        else
        {
          Serial.println("Stop using......");
          digitalWrite(ledpin,LOW);
        }
   }
}

在这之前,要进行下面的代码:

int val;
int ledpin=13;


4、进行下载操作:

全部代码:

int val;
int ledpin=13;

void setup()
{
 Serial.begin(9600);
 pinMode(ledpin,OUTPUT);
}
 
void loop()
{
  while(Serial.available())
   {
     char c=Serial.read();
      if(c=='A')
        {
          Serial.println("Hello I am amarino");
          digitalWrite(ledpin,HIGH);
        }
        else
        {
          Serial.println("Stop using......");
          digitalWrite(ledpin,LOW);
        }
   }
}



注意啊,下载的时候要将蓝牙的线先断开,不然会错误提示,下载失败。



5、adruino端这样就设计完了。下面就可以进行操作了。



谢谢大家。

-----------------------------------------------------------------------------------------------------------------------------------------------------------

大家可以参考:


http://tieba.baidu.com/p/2365821805

http://www.cnblogs.com/rayray/p/3157601.html

http://blog.sina.com.cn/s/blog_8a49cc8f0101b03j.html

2013-03-13 09:54:58 WIZnet2012 阅读数 8637
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    579 人正在学习 去看看 陈贤能

        近几日在“极客工坊”上看到这个教程,来自乐为物联。一步一步教你怎么利用arduino+w5100+乐联网开放平台,轻松实现手机app对 arduino 设备的控制。分享给大家。

1 说明

案例说明:使用Arduino+W5100来实现一个乐联网的应用,即通过乐联网手机App控制连接到Arduino+W5100上的LED的开关。
硬件:Arduino UNO W5100 shield
APP:乐联网 APP open.lewei50.com/home/sitecontent/ydkhd
系统平台:乐联网开放平台

2 反向控制硬件连线
硬件连线如下图,将LED灯的两个引脚线连接到Arduino转接板上的端口6和7上面(端口是根据Arduino程序里面自己选择定义的,如果选择其它端口,则硬件连线必须一致连接到相同端口上)。

3 Arduino模板程序获得与修改
3.1 获得arduino 代码
乐联网的相关Arduino代码托管在Github上,地址https://github.com/lewei50/leweiclient, 打开链接,点击Zip下载按钮,将名称为master.zip的文件下载到本地。

下载后解压,打开你电脑里的Arduino IDE所在文件夹里的libraries文件夹,在里面新建一个leweiclient的文件夹,将master压缩包解压缩后LeweiClient-master文件夹里的文件全部拷贝到这个文件夹里。

3.2 修改usrkey
运行Arduino.exe,在顶部菜单File—Examples—Leweiclient里面能看到control和upload,打开control即是反向控制的编程代码。

在执行代码前,首先需要到乐联网(http://www.lewei50.com/)上注册用户名和密码,在主页右上角有注册按钮,点击后填写账号、密码和邮箱以后,再登录到邮箱里面激活账号即可。登录进入系统后,通过点击左边管理菜单下“我的账号”—“设置个人信息”里面可以看到你的userkey,这个userkey是每个用户唯一的。

如上图,这是第一处需要修改的地方将程序里面的define LW_USERKEY后面的数值改成你实际个人账号的userkey。

其它的变量基本不需要修改,解释如下:
LW_GATEWAY:乐联网的配置的网关标识;
MY_NAME:网关名称;
MY_NAME:网关介绍;
my_addr[50]:被控制的Arduino UNO板可以采取由无线路由器DHCP自动分配IP地址的方式来获取IP,也可以采用手动输入的静态的IP地址,如果采用静态IP地址,则这里输入http://静态IP地址/api,如图中,则表示静态的IP地址为192.168.1.221。
port:给Arduino UNO这个网络终端分配的控制端口号(跨网络控制时候有意义);

程序中上面的代码中,如果是“if 0”,则表示不采用静态IP地址的方式,如果是“if 1”,则表示采用静态IP地址,则继续执行下面代码,解释如下:
IPAddress myip:这里需要输入手动配置给Arduino UNO板的IP地址,与前面的my_addr[50]里的IP地址要保持一致;
IPAddress dnsip:这里需要输入与W5100相连接的路由器的DNS的IP地址,查询方法,登录进入路由器配置界面,查看WAN口状态(不同厂商的路由器查询方法不一致,但都能看到WAN口状态)里面的DNS服务器选项。

IPAddress dnsip:这里需要输入与W5100相连接的路由器的IP地址;
IPAddress gateway:这里需要输入与W5100相连接的路由器的DNS的IP地址
3.3 选择不同的控制方式
这里是第二处需要修改的地方,下面看后面的这几行代码,根据具体情况选择网关注册方式:
     lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)((LeWeiClient::isControlled)|(LeWeiClient::internetAvailable)));
   // lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::isControlled));
// lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::none));
   上面的代码其中LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr等变量的定义前文已有叙述。这里的三条语句分别适用于三种不同的场景:

3.3.1不设置控制的情况
如果设置网关不具备反向控制的功能的话,则运行下面语句,其它语句可以注释掉:
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::none)); 运行程序后网关配置如下:

这就表示这种配置下的网关是不可控的。
3.3.2手机与Arduino+W5100在同一网段下
如果控制的手机和Arduino+W5100的IP地址在同一网段下,则运行下面的语句,
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::isControlled));
LeWeiClient::isControlled:配置网关是可控的;
设置后运行该程序后,则在乐联网的管理菜单“我的物联网”的“我的网关列表”点击“编辑”网关后里面可以看到网关的配置情况如下图,可以看到“是否可控”选项已经勾选,但是“公网访问”没有勾选“允许”。

3.3.3手机与Arduino+W5100 跨网段
手机通过公网控制Arduino+W5100则需要运行以下语句:
lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)((LeWeiClient::isControlled)|(LeWeiClient::internetAvailable)));其它语句注释,其中LeWeiClient::internetAvailable设置是否允许访问公网。运行程序后网关配置如下:

需要说明的是:如果想要实现跨网段控制,arduino+w5100接入的网络路由器要有公网地址,可以在路由器上面做到Arduino+W5100的NAT映射。(联通基本上符合条件,小区宽带的用户基本上都不符合要求)。NAT映射的设置需要在路由器配置界面里进行配置(一般在“转发规则”里的“虚拟服务器设置”),如下图:

3.4 修改实际的应用代码
这是最后一处需要修改的地方,红色部分是我写的应用代码,可以按照自己的应用编写实际的代码。
这里建立了两个执行器,名称分别为DA和DA2。描述分别为dummy2 和 dummy1。
dummy_act the_act("DA", "dummy actuator", "dummy2");
dummy_act the_act2("DA2", "dummy actuator", "dummy1");
class dummy_act: public LeWeiActuator  
{
   private:char led;   
   public:  
        dummy_act(  
                const char *id,  
                const char *type,   
                const char *name) : LeWeiActuator(id, type, name)  
    {};  
        virtual bool updateValue(char* id,int val)  
        {  
            Serial.print("dev id = ");   
            Serial.println(id);  
            if(!strcmp(id,"DA"))
            {
              Serial.println("handle da routin");  
              
              digitalWrite(ledPin_da, val);
            }
            if(!strcmp(id,"DA2"))
            {
              Serial.println("handle da2 routin");  
                  digitalWrite(ledPin_da2, val);
            }
            Serial.print("update actuator ");  
            Serial.println(val);  
            led=val;  
            return val;  
        }  
        virtual bool getValue(int *val)  
  
        {  
  
            static int i = 0;  
  
            *val = led;  
  
            return true;  
  
        }  
  };  
3.5 通过app来控制arduino
下载乐联网手机App:http://open.lewei50.com/home/sitecontent/ydkhd

同一网段:

安装后使用乐联网的账号密码登录进去,手机和Arduino+W5100在同一网段,选择反向控制,进入反向控制界面,App会自动找到API地址(如果没有手动输入也可以),点击右上角“查找可控设备”,则进入控制界面,如果你的LED灯已经在Arduino板上连线好了,就可以点击可控设备列表的相关设备进行LED亮灭控制了。   

不同网段:


3.6 通过web的控制arduino(需要跨网支持)
如果已经可以完成app跨网段的控制,可以再近一步进行这个通过web控制arduino的实验。为后面制定阶段性任务执行打基础(比如说在web上面定义一个执行计划,每天6点关灯,18点开灯)
添加两个控制设备,缩写分别为DA 和 DA2(与前面建立的两个执行器缩写名一定要一致)

如果一切正常,设备应该显示在线状态(已打开或者已关闭)


4 结束语
以上介绍了乐联网的反向控制Arduino的一个应用,希望能够让大家对乐联网的物联网应用有更进一步的了解,并能借鉴这个应用启发您的思路,一起在乐联网上实现自己的各类创意。后续,我们会推出通过数值的变化来控制设备实现不同的变化的更为复杂的控制方案,尽请期待!

感谢阅读!

更多WIZnet信息请登录:WIZnet官方主页:       http://www.iwiznet.cn/
                                            WIZnet企业官方微博:http://e.weibo.com/wiznet2012    
2019-09-02 20:17:41 qq_42099097 阅读数 60
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    579 人正在学习 去看看 陈贤能

1.实现的功能是:

(1),通过手机端APP:"蓝牙SPP"中,设置其"开"和“关”相应的参数,来控制小灯。

(2),当arduino接收到“开”的信息的时候,arduino控制LE灯的开启;当arduino接收到“关”的信息的时候,arduino控制LE灯的灭。

2.应用场景:

智能家居中的智能照明的模拟场景。

3.优缺点:

(1).优点:

通过手机端的开关的控制,很好的进行LED的控制,通过手机,一键处理,比较方便,不用远程的通过按键来控制小灯。

(2)缺点:

就是,该实例用的是蓝牙3.0版本的老蓝牙版本,其工作的功耗会比BLE蓝牙功耗会高。

而且,其控制的话,只是对单个LED来进行控制,如果是家里使用的话,可能控制的LED比较多,使用起来相当有些麻烦。

4.具体代码:

int ledpin = 6;
int get_data =0;
void setup() {
  // put your setup code here, to run once:
  pinMode(ledpin,OUTPUT);
  digitalWrite(ledpin,LOW);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
 
 if(Serial.available())
 {
   get_data = Serial.read();
  if(get_data == 1)
  {
    digitalWrite(ledpin,HIGH); 
   // Serial.print("on");
   // delay(100);
   get_data = 0;
  }
 else if(get_data == 2)
  {
     digitalWrite(ledpin,LOW);
  
   get_data = 0;
  }

 }

 
}

2020-01-02 10:15:07 weixin_38891048 阅读数 38
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    579 人正在学习 去看看 陈贤能

原理:利用HC-06蓝牙模块与手机APP进行通信。手机APP采用APPinventor进行制作,

结构及代码如下(有点丑,比较简陋,可自行美化):

在这里插入图片描述
在这里插入图片描述

连线方式对应如下:

VCC--------3.3

GND--------GND

TXD--------pin10

RXD--------pin11

Arduino代码如下:

#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11); 


void setup()  

{



  pinMode(6, OUTPUT);



  BT.begin(9600);

}

char a; 
int b = 100;

void loop() 

{

  if (BT.available())


  {

    a=(BT.read());

    if (a=='1')

    {
      b = 100;
      analogWrite(6, b);

      BT.println("灯已打开");

    }

    if (a=='2')

    {

      digitalWrite(6, LOW);

      BT.println("灯已关闭");

    }

    if (a=='?')

    {

      BT.println("Send '1' to turn LED on");

      BT.println("Send '2' to turn LED on");

    } 
    if(a=='h'){
        b=b+50;
        if(b>255){
          b=255;
        }
         analogWrite(6, b);
         BT.println("已调亮");
    }
    if(a=='l'){
      b=b-50;
      if(b<50){
      b=50;
    }
     analogWrite(6, b);
     BT.println("已调暗");
    }
     if(a=='m'){
      b = 255;
     analogWrite(6, b);
     BT.println("已调最亮");
    }   
     if(a=='n'){
      b = 10;
     analogWrite(6, b);
     BT.println("已调最暗");
    } 
  }
}

以上,大家有问题可以交流,希望大家玩得愉快!

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