This is an old revision of the document!


Servo module

This laboratory is located in the office of ITT Group in Tallinn, Estonia.

Introduction

This laboratory can be used to practice controlling the servo motor attached to the controller.

Prerequisites

For this laboratory, the student should understand basic MQTT concepts like topics, broker, subscribing and publishing.

Technical details

This laboratory consists of a servo with the add-on module attached to the ITT IoT controller module.

Sensors

This laboratory does not have any sensors.

Specifications

Table 1: Servo specifications
Specification Value
Speed at 6V 0,07 sec/60°
Stall torque at 6V 0,042 N-m
Speed at 4,8V 0,09 sec/60°
Stall torque at 4,8V 0,028 N-m

Electrical connection

The signal lead of the servo is connected to D3 pin of the controller.

Software, libraries and externals

  • ITTIoT libary - used to program the controller module.
  • Servo libary - used to control the servo.

Communication

The user can connect and program this controller using the Distancelab environment.

Limits

At the same time, only one user can program the controller. But all users connected to the Distancelab MQTT broker can subscribe and publish to topics specified.

Hands-on labs

Example code

/*
 * IoT Servo example
 *
 * This example subscribe to the "servo" topic. When a message received, then it
 * change servo position
 *
 * Created 11 Sept 2017 by Heiko Pikner
 */
 
#include <Arduino.h>
#include <Servo.h>
#include <ittiot.h>
 
//Pin definition for the Servo (D3)
#define SERVO_PIN            D3
 
Servo myservo;  // create servo object to control a servo
 
// Change the servo position (value between 0 and 180)
// mosquitto_pub -u test -P test -t "RL/esp-{ESP-ID}/servo" -m "51" = this calls servo motor to change position 
 
void iot_received(String topic, String msg)
{
  Serial.print("MSG FROM USER callback, topic: ");
  Serial.print(topic);
  Serial.print(" payload: ");
  Serial.println(msg);
 
  Serial.print("Servo: ");
  Serial.println(msg);
 
  myservo.write(msg.toInt());
}
 
// Function started after the connection to the server is established
void iot_connected()
{
  Serial.println("MQTT connected callback");
  // Subscribe to the topic "servo"
  iot.subscribe("servo");
  iot.log("IoT Servo example!");
}
 
void setup()
{
  Serial.begin(115200);
  Serial.println("Booting");
 
  // Print json config to serial
  iot.printConfig();
  // Initialize IoT library
  iot.setup();
 
  myservo.attach(SERVO_PIN);
}
 
void loop()
{
  // IoT behind the plan work, it should be periodically called
  iot.handle();
  delay(200);
}

Study scenarios

List study scenarios (hands-on labs), linking to the Dokuwiki pages with hands-on labs descriptions (there should be a separate page for each scenario). Classify each scenario and refer to the target group using starting keywords: * Beginners * Undergraduates * Masters * Professionals Note, assume that more professional group automatically contains less professional ones. Note - use language and as appropriate to the target group, i.e.:

  * Beginners: Elementary operations on the Arduino 2x16 LCD screen.
  * Undergraduates: Visualizing temperature and humidity on the remote screen.
  * Masters: Using power saving states to limit power consumption.

Support

Give some information on how to access help, how to get support in case of the trouble etc.

en/iot-open/remotelab/itt/servo.1544078974.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0