• 一步一步教你怎么利用arduino+w5100+乐联网开放平台,轻松实现手机apparduino 设备的控制。分享给大家。 1 说明 案例说明:使用Arduino+W5100来实现一个乐联网的应用,即通过乐联网手机App控制连接到Arduino+W...

            近几日在“极客工坊”上看到这个教程,来自乐为物联。一步一步教你怎么利用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    
    展开全文
  • 蓝牙控制arduino的安卓软件(基于app inventor )

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


    本文章软件下载:基于app inventor的蓝牙控制arduino安卓客户端


    最近在无线电杂志上看到关于app inventor 的内容,赶脚很厉害,从图书馆回来后就开始尝试,发现真的不错。因为之前在用arduino,所以我想能能不能用app inventor写软件通过WIFI或者蓝牙控制arduino,所以就有了这篇文章,下面开始介绍:

    功能描述:1、手机控制arduino上pin13灯的亮灭(可以使其他灯,也可以是其他单片机)。


    首先介绍软件的制作过程:

    1、登陆 http://appinventor.mit.edu/explore/ 来在线制作软件(也可以下载离线版制作);

    我们可以在首页新建应用


    然后进行操作。软件的制作分为两部分:界面设计和“组装代码”,我们可以通过右上角(下图)的两个按钮进行切换:

    界面设计是我们制作应用时首先看到的界面:


    在左侧是常见的按钮,标签什么的(和VB类似),可以拖拉进中间的设计框,拉过来的都将显示在右侧,最右侧是原件的属性,我们也可以删除不用的原件。

    代码组装界面如下:


    类似的,最左边是代码原件,可以直接拉到框内进行组装代码。

    我们在设计应用界面和代码时可以通过三种方式来实时了解功能,其中最常用的是WIFI和安卓手机的搭配,也可以用数据线和手机当然如果没有手机,也可以使用仿真。可以在左上方选择方式:


    例如,选择第一个WIFI加手机后会出现二维码和代码,随便选一种方式进行连接:


    基本上软件设计就这几部。具体怎么设计可以参见百度文库的教程(共4个小时),看完之后你会有基本的了解。

    App Inventor 入门基础教程  地址:http://wenku.baidu.com/course/view/1ea9ae45b307e87101f6968d


    下面就具体简介本软件的制作:
    1、首先是界面设计,将所有需要的控件全部拉到框内,然后在右侧设置对应的属性。

    2、首先初始化软件(就是刚进入软件回做什么)

    其实就是声明了一个全局变量,变量名字叫做 OK;
    下面是弹出一个框(就是那种出现后几秒钟后消失的那种提示),上面的内容是“欢迎使用本软件!@zgc261”。

    3、选择蓝牙设备:

    第一句是,选择前,将配对的蓝牙地址组成数组列表,以供选择;
    第二句是,选择后将选择的地址赋给全局NAME;

    4、下面开始连接选择的蓝牙地址:

    功能描述:
    如果已经连接的话,则点击之后断开连接;
    若没有连接,则点击之后进行连接,并显示相关提示;
    连接成功后,会显示OK;

    5、测试:

    两个按键的功能是:亮和灭,其实就是通过蓝牙向单片机发送了A和B(字符),然后在单片机断进行解析。

    这样软件基本就做好了,可以打包下载了。



    谢谢大家。

    -----------------------------------------------------------------------------------------------------------------------------
    大家可以参考

    http://www.appinventor.com.cn/forum.php?mod=viewthread&tid=3242

    展开全文
  • 最近做了一款语音识别的App,想着利用手机控制arduino实现RGB的调节,开发思路:基于讯飞语音识别做一款能识别我们语音的App,识别出文本之后,对应的文字转UTF-8编码,通过蓝牙串口通讯发送到arduino,实现对RGB的...

    最近做了一款语音识别的App,想着利用手机控制arduino实现RGB的调节,开发思路:基于讯飞语音识别做一款能识别我们语音的App,识别出语音之后,对应的文字转UTF-8编码,通过蓝牙串口通讯发送到arduino,实现对RGB的控制。
    优点:1、相对于LD3320语音识别模块成本更低
    2、误识别率低
    硬件只需 arduino主控模块、蓝牙模块、RGB灯、可联网的智能手机,就能用语音控制RGB变换各种颜色。
    具体效果请观看下面的视频

    智能语音APP控制arduino实现RGB灯的控制


    APP和arduino 程序稍后更新

    展开全文
  • 制作需要:用AppInventor制作App,小车硬件以Arduino Nano为主控板,接蓝牙模块,超声波模块,两个直流电机。 功能:用手机App控制小车前进,后退,左转,右转,自动避障,并且可以通过滑动条调速。(其中自动巡线...

    制作需要:用AppInventor制作App,小车硬件以Arduino Nano为主控板,接蓝牙模块,超声波模块,两个直流电机。

    功能:用手机App控制小车前进,后退,左转,右转,自动避障,并且可以通过滑动条调速。(其中自动巡线功能暂时未完成)

    Arduino编程参考手册:

    http://wiki.dfrobot.com.cn/index.php/Arduino%E7%BC%96%E7%A8%8B%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C

    AppInventor在线编辑器:

    http://app.gzjkw.net/login/

    App图标:

    APP界面:

    小车实物:

    App代码:

    小车代码(Arduino):

    #include <Arduino.h>
    
    int MotorL(int speeed);
    int MotorR(int speeed);
    void Forward();
    void Backward();
    void TurnLeft();
    void TurnRight();
    void Stop();
    int  Distance(); //超声波测距
    void left_or_back(bool x);//0-左转,1-后退
    int mode = 0;//0-按钮控制,1-自动避障
    int moveSpeed = 125;
    int turnSpeed = 0;
    int distance=0;
    unsigned long start_time = 0;
    unsigned long end_time = 0;
    const int TrigPin = 11;
    const int EchoPin = 12;
    
    
    void setup() {
      Serial.begin(9600);
      pinMode(TrigPin,OUTPUT);
      pinMode(EchoPin,INPUT);
      pinMode(6, OUTPUT);  
      pinMode(7, OUTPUT); 
      pinMode(3, OUTPUT); 
      pinMode(5, OUTPUT); 
      Stop();//停车
      start_time = millis();
    }
    
    void loop() {
      if(mode == 1){
        int cm = Distance();
        if(cm>20){ //大于20CM直走
          Forward();  //直走
        }else if(cm>=0 && cm<=10){
          Stop();
          left_or_back(0);
          left_or_back(1);
        }
      }
      if(Serial.available()>0){
          int ch = Serial.read();
          if(ch>=0 && ch<=100){
             moveSpeed=int(ch*2.15+40);
          }else if(ch == 105){
             mode = 1;
          }else{
            switch(ch){
              case 101:Forward();break;//前进
              case 102:Backward();break;//后退
              case 103:TurnLeft();break;//左转
              case 104:TurnRight();break;//右转
              case 111:Stop();break;//停车
              default:break;
            }
            mode = 0;
          }
       }
    }
    void left_or_back(bool x){
       start_time = millis();
       end_time = millis();
       while(end_time - start_time < 500){
          end_time = millis();
          x ? TurnLeft() : Backward();//后退
          if(Serial.available()>0){
             int ch = Serial.read();
             if(ch!=105){
                mode = 0;
                Stop();
                break;
              }
          }
       }
    }
    int  Distance() //超声波测距
    {
        digitalWrite(TrigPin,LOW);
        delayMicroseconds(2);
        digitalWrite(TrigPin,HIGH);
        delayMicroseconds(10);
        digitalWrite(TrigPin,LOW);
        int cm=pulseIn(EchoPin,HIGH)/58;
        return cm;
    }
    int MotorL(int speeed)
    {  
      analogWrite(5, speeed);
     }
     int MotorR(int speeed)
    {
      analogWrite(3, speeed);
     }
     void Forward()
    {
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void Backward()
    {    
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void TurnLeft()
    {  
      digitalWrite(6, LOW);
      digitalWrite(7, HIGH);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void TurnRight()
    {
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void Stop()
    {
      MotorL(0);
      MotorR(0);
    }
    
    

     

    展开全文
  • 基于arduinoapp inverter制作蓝牙开关 (方案二) 链接:https://blog.csdn.net/m0_37738838/article/details/85164468
  • 蓝牙控制arduino的安卓软件(基于app inventor )

    蓝牙控制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

    展开全文
  • arduino+App Inventor+mixly=纯图形化编程实现手机蓝牙2.0无线遥控软件及程序
  • 使用语音命令控制LED指示灯看上去似乎是一项难以实现的功能,但实际上它很容易,我们可以快速实现它。我们只需要一个Arduino UNO开发板与HC-06蓝牙模块进行串行通信,以及使用一台智能手机将语音命令发送到蓝牙模块...
  • arduino制作的智能密码锁。简单实用的功能,保障你家庭的安全。
  • 控制APP下载地址: 未来之家-小米应用商店 http://app.mi.com/details?id=com.mobile.fuhome.app 该APP自带配置smartconfig功能,保持模块STA(客户端)工作方式即可,配置wifi时候只能让一个模块处于上电状态哦 ...
  • Arduino + 手机APP + HC-05蓝牙 对全彩共阳LED的调色 相关的代码与介绍请移步博客查看。 https://blog.csdn.net/chbxgbin/article/details/100654844
  • 原理:利用HC-06蓝牙模块与手机APP进行通信。手机APP采用APPinventor进行制作, 结构及代码如下(有点丑,比较简陋,可自行美化): 连线方式对应如下: VCC--------3.3 GND--------GND TXD--------pin10 RXD-----...
  • 由於智慧型手機的普及,幾乎人人都各自擁有一台,所以我將發一系列教導大家如何將手機與Arduino做結合。 若沒學過java的控制手機怎辦?別擔心,本系列所用的程式語言為appinventor,是給沒使用過java但想寫手機...
  • 之前写了一篇关于Arduino控制器选型指南(一):Arduino官方篇 把市面上有的arduino官方出品的控制器都罗列了出来,让大家对比选型。 今天我打算写一篇关于DFRobot出品的arduino控制器选型指南。他们家算是我做项目会...
  • 原文:How to Control Arduino Board Using an Android Phone and a Bluetooth Module 作者:kerimil 翻译:安翔 审校:屠敏,关注物联网、移动开发领域,寻求报道或投稿请发邮件tumin@csdn.net。 本教程将教...
  • 舵机是一种电机,它使用一个反馈系统来控制电机的位置。大多数舵机是可以最大旋转180°的。也有一些能转更大角度,甚至360°。舵机比较多的用于对角度有要求的场合,比如摄像头,智能小车前置探测器,需要在某个范围...
  • 本实验基于Arduino开发套件、蓝牙模块,运用App Inventor快速开发一个遥控APP,实现对Arduino驱动的发光二极管的开关控制APP至少设计四个按钮,分别控制3种不同的发光二极管,一个控制跑马灯效果。 二、学习内容 1...
  • python与arduino结合控制舵机 文章目录python与arduino结合控制舵机一.任务说明:二.环境说明:三实现说明:四代码说明:1. arduino代码2.python代码 一.任务说明: 我们要实现的是使用一个图像软件来控制舵机的...
  • 通过Android studio编写app,实现通过手机蓝牙控制arduino上的LED的亮灭 (一)Android studio代码部分 (1)MainActivity代码 package com.example.lx.lanya; import android.bluetooth.BluetoothAdapter; import ...
  • 相信很多朋友已经在玩 Arduino了,而且一般都是使用官方的Arduino IDE来写程序控制Arduino硬件。为了能够实现更加方便的控制,微软在Windows IoT计划中推出了Windows Remote Arduino。简单来说,Windows Remote ...
1 2 3 4 5 ... 20
收藏数 2,396
精华内容 958