查看: 3886|回复: 0

使用Machtalk中MQTT方式控制舵机角度

[复制链接]

该用户从未签到

发表于 2014-8-18 15:20 | 显示全部楼层 |阅读模式
本帖最后由 weijinhe 于 2014-10-15 12:47 编辑

设备启动后主动订阅一个特别的主题,名字是
/device_id/device_value_id/device_type_id
服务器如果想控制设备,可以publish一条消息到该主题中,命令可以是:
{"device_value_id":"1","device_type_id":"3",”value”:XXX}}
这样便实现了控制
1、硬件准备
(1)Arduino uno
(2)舵机模块
(3)Arduino Ethernet W5100 网络扩展板模块
(4)网线一根
2、硬件连接(1)Arduino Ethernet W5100 网络扩展板模块与Arduino uno连接。(2)Arduino Ethernet W5100 网络扩展板模块插上网线
(3)舵机接5V和GND,信号口接数字9号口
3、代码烧写[mw_shl_code=c,true]#include <Servo.h>

#include <JsonArray.h> //json串解析库 可以通过下面链接下载
#include <JsonHashTable.h>
#include <JsonObjectBase.h>
#include <JsonParser.h>

#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
byte server[] = { 60, 211, 253, 162 };
byte ip[]     = { 192, 168, 0, 100 };
char message_buff[100];
int val=50;
Servo myservo;
//接收控制信息,并处理控制信息
void callback(char* topic, byte* payload, unsigned int length) {
    int i = 0;
  for(i=0; i<length; i++) {
    message_buff = payload;
  }
  message_buff = '\0';
  Serial.println(message_buff);
   JsonParser<32> parser;

  Serial.print("Parse ");
  Serial.println(message_buff);
  JsonHashTable hashTable = parser.parseHashTable(message_buff);
    if (!hashTable.success())
    {
        Serial.println("JsonParser.parseHashTable() failed");
        return;
    }
     int value = hashTable.getLong("value");
    Serial.print("value=");
    Serial.println(value);
     myservo.write(value);   
   
}

EthernetClient ethClient;
PubSubClient client(server, 1883, callback, ethClient);

void setup()
{
    myservo.attach(9);
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }  
  Serial.println("connectting");
  if (client.connect("arduinoClient")) {
   Serial.println("connected");  
   client.subscribe("/861001002720064/1/1");//device_id、device_value_id、devce_type_id替换为自己ID
  }
}

void loop()
{
  client.loop();
}[/mw_shl_code]
Json格式解析库地址:
http://machtalk.net/showapi/arduinolibrary
4Machtalk物联网平台配置    Machtalk物联网平台配置、动作设置、触发器设置如例一所示,不再累述,平台配置文档请看教程:http://machtalk.net/intro/book


ethernet.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

5分钟带你快速了解新一代开发板:M5STACK
5分钟带你快速了解新一代
一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
创客火首发无人机编队套装,开启不一样的人工智能教育
创客火首发无人机编队套装
2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
为开发板 Generic ESP8266 Module 编译时出错
为开发板 Generic ESP8266
第一次尝试Arduino UNO软串口通信,编译一直通不过,错误信息 “开发板 generic (平
请问L298N能不能驱动这种电机呀
请问L298N能不能驱动这种
小白不太敢确定orzz电机是30W,10转,12V的直流减速电机 谢谢大家了!
ws2812灯带求助,求大佬。。
ws2812灯带求助,求大佬。
刚才那个求助帖我说的可能有点模糊,所以我这次弄详细一点。小弟第一次接触这个灯带,
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表