Difference between revisions of "GPIO"

From Let's Control It
Jump to navigation Jump to search
Line 15: Line 15:
  
 
{| class="wikitable mw-collapsible sortable"
 
{| class="wikitable mw-collapsible sortable"
! style="width: 10%|Command
+
! style="width: 15%|Command
 
! GPIO
 
! GPIO
! style="width: 10%|Value
+
! style="width: 15%|Value
 
! Information
 
! Information
 
! style="width: 25%|HTTP example
 
! style="width: 25%|HTTP example

Revision as of 19:41, 22 October 2017

Introduction

The ESP module can control things with it's build-in GPIO output pins. We can turn these on or off or we can set these pins to a special Pulse modulated value (PWM output). And it's also possible to send short pulses (single puls) to one of these pins to control specific devices that are switched with a single short high or low signal.

Hardware

It's best to connect a LED to the GPIO to test your setup. You could dim this LED with the PWM mode commands. Be aware that the ESP8266 only supplys 3,3v at a max current of only ~10mA.


LED.png


ESP Easy

You dont need a Device definition (task) to control basic GPIO output. You can always control all the pins by HTTP.

Commands

Command GPIO Value Information HTTP example MQTT example
(topic: <MQTT subscribe template>/cmd)
GPIO,<gpio>,<value> 12...16 1 (HIGH)
or
0 (LOW)
Basic on/off. We can control a pin with simple http url commands. To change the pin to high or low steady output http://<espeasyip>/control?cmd=GPIO,12,1
http://<espeasyip>/control?cmd=GPIO,12,0
GPIO,12,1
GPIO,12,0
PWM,<GPIO>,<value> 12...16 0...1023 To set a certain PWM level. If you have set a certain GPIO to a PWM level and want to use it as a regular HIGH/LOW pin you need to reset by setting the PWM level to 0. http://<espeasyip>/control?cmd=PWM,13,500
http://<espeasyip>/control?cmd=PWM,13,0
PWM,13,500
PWM,13,0

Short pulses

To send a pulse to a certain pin:

http://<ESP IP address>/control?cmd=Pulse,<pin>,<state>,<duration>

Example to send an active high pulse on GPIO 2 for 500 mSeconds:

http://<ESP IP address>/control?cmd=Pulse,2,1,500

Long pulses

A long pulse is basically the same as the plain pulse. The only difference is the time base in seconds rather than in milliseconds. So it's more suiteable for longer durations. To send a long pulse to a certain pin:

http://<ESP IP address>/control?cmd=LongPulse,<pin>,<state>,<duration>

Example to send an active high pulse on GPIO 2 for 10 minutes:

http://<ESP IP address>/control?cmd=LongPulse,2,1,600

Servo motor control

To control a Servo Motor:

http://<ESP IP address>/control?cmd=Servo,<servo nr>,<pin>,<position>

We currently support a maximum of two servo motors so you can build a pan & tilt device if you like.

Example to set servo 1 on gpio-0 to a 90 degree position and servo 2 on gpio-2 to a 45 degree position:

http://<ESP IP address>/control?cmd=Servo,1,0,90 http://<ESP IP address>/control?cmd=Servo,2,2,45

Tones, melodies and ringtones

For using tone and rtttl commands you should head over to the Buzzer (RTTTL) section.