summaryrefslogtreecommitdiffstats
path: root/dgbuilder/core_nodes/hardware/36-rpi-gpio.html
blob: 9e705c2c98846bb7237b1beaf4acb9f3fa8f5c23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!--
  Copyright 2013,2014 IBM Corp.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<script type="text/x-red" data-template-name="rpi-gpio in">
    <div class="form-row">
        <label for="node-input-pin"><i class="fa fa-circle"></i> GPIO Pin</label>
        <select type="text" id="node-input-pin" style="width: 200px;">
            <option value="-" disabled>select pin </option>
            <option value="3">3 - SDA1 </option>
            <option value="5">5 - SCL1 </option>
            <option value="7">7 - GPIO7</option>
            <option value="8">8 - TxD </option>
            <option value="10">10 - RxD </option>
            <option value="11">11 - GPIO0</option>
            <option value="12">12 - GPIO1</option>
            <option value="13">13 - GPIO2</option>
            <option value="15">15 - GPIO3</option>
            <option value="16">16 - GPIO4</option>
            <option value="18">18 - GPIO5</option>
            <option value="19">19 - MOSI </option>
            <option value="21">21 - MISO </option>
            <option value="22">22 - GPIO6</option>
            <option value="23">23 - SCLK </option>
            <option value="24">24 - CE0 </option>
            <option value="26">26 - CE1 </option>
         </select>
         &nbsp;<span id="pitype"></span>
    </div>
    <div class="form-row">
        <label for="node-input-intype"><i class="fa fa-long-arrow-up"></i> Resistor?</label>
        <select type="text" id="node-input-intype" style="width: 150px;">
        <option value="tri">none</option>
        <option value="up">pullup</option>
        <option value="down">pulldown</option>
        <!--<option value="tri">tristate</option>-->
        </select>
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: Only Digital I/O is supported - input must be 0 or 1.</div>
</script>

<script type="text/x-red" data-help-name="rpi-gpio in">
    <p>Raspberry Pi input node. Generates a <b>msg.payload</b> with either a 0 or 1 depending on the state of the input pin. Requires the gpio command to work.</p>
    <p>You may also enable the input pullup resitor or the pulldown resistor.</p>
    <p>The <b>msg.topic</b> is set to <i>pi/{the pin number}</i></p>
    <p><b>Note:</b> we are using the actual physical pin numbers on connector P1 as they are easier to locate.</p>
    <p><b>Note:</b> This node currently polls the pin every 250mS. This is not ideal as it loads the cpu, and will be rewritten shortly to try to use interrupts.</p>

</script>

<script type="text/javascript">
    RED.nodes.registerType('rpi-gpio in',{
        category: 'advanced-input',
        color:"#c6dbef",
        defaults: {
            name: { value:"" },
            intype: { value: "in" },
            pin: { value:"",required:true,validate:RED.validators.number() },
        },
        inputs:0,
        outputs:1,
        icon: "rpi.png",
        label: function() {
            return this.name||"Pin: "+this.pin ;
        },
        labelStyle: function() {
            return this.name?"node_label_italic":"";
        },
        oneditprepare: function() {
            $.getJSON('rpi-gpio/'+this.id,function(data) {
                $('#pitype').text(data.type);
                if (data.type === "Model B+") {
                    $('#node-input-pin').append($("<option></option>").attr("value",27).text("27 - SDA0"));
                    $('#node-input-pin').append($("<option></option>").attr("value",28).text("28 - SCL0"));
                    $('#node-input-pin').append($("<option></option>").attr("value",29).text("29 - GPIO21"));
                    $('#node-input-pin').append($("<option></option>").attr("value",31).text("31 - GPIO22"));
                    $('#node-input-pin').append($("<option></option>").attr("value",32).text("32 - GPIO26"));
                    $('#node-input-pin').append($("<option></option>").attr("value",33).text("33 - GPIO23"));
                    $('#node-input-pin').append($("<option></option>").attr("value",35).text("35 - GPIO24"));
                    $('#node-input-pin').append($("<option></option>").attr("value",36).text("36 - GPIO27"));
                    $('#node-input-pin').append($("<option></option>").attr("value",37).text("37 - GPIO25"));
                    $('#node-input-pin').append($("<option></option>").attr("value",38).text("38 - GPIO28"));
                    $('#node-input-pin').append($("<option></option>").attr("value",40).text("40 - GPIO29"));
                }
            });
        }
    });
</script>


<script type="text/x-red" data-template-name="rpi-gpio out">
    <div class="form-row">
        <label for="node-input-pin"><i class="fa fa-circle"></i> GPIO Pin</label>
        <select type="text" id="node-input-pin" style="width: 200px;">
            <option value="-">select pin </option>
            <option value="3">3 - SDA1 </option>
            <option value="5">5 - SCL1 </option>
            <option value="7">7 - GPIO7</option>
            <option value="8">8 - TxD </option>
            <option value="10">10 - RxD </option>
            <option value="11">11 - GPIO0</option>
            <option value="12">12 - GPIO1</option>
            <option value="13">13 - GPIO2</option>
            <option value="15">15 - GPIO3</option>
            <option value="16">16 - GPIO4</option>
            <option value="18">18 - GPIO5</option>
            <option value="19">19 - MOSI </option>
            <option value="21">21 - MISO </option>
            <option value="22">22 - GPIO6</option>
            <option value="23">23 - SCLK </option>
            <option value="24">24 - CE0 </option>
            <option value="26">26 - CE1 </option>
         </select>
         &nbsp;<span id="pitype"></span>
    </div>
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
    <div class="form-tips">Tip: Only Digital I/O is supported - input must be 0 or 1.</div>
</script>

<script type="text/x-red" data-help-name="rpi-gpio out">
    <p>Raspberry Pi output node. Expects a <b>msg.payload</b> with either a 0 or 1 (or true or false). Requires the gpio command to work.</p>
    <p>Will set the selected physical pin high or low depending on the value passed in.</p>
    <p><b>Note:</b> we are using the actual physical pin numbers on connector P1 as they are easier to locate.</p>
</script>

<script type="text/javascript">
    RED.nodes.registerType('rpi-gpio out',{
        category: 'advanced-output',
        color:"#c6dbef",
        defaults: {
            name: { value:"" },
            pin: { value:"",required:true,validate:RED.validators.number() },
        },
        inputs:1,
        outputs:0,
        icon: "rpi.png",
        align: "right",
        label: function() {
            return this.name||"Pin: "+this.pin;
        },
        labelStyle: function() {
            return this.name?"node_label_italic":"";
        },
        oneditprepare: function() {
            $.getJSON('rpi-gpio/'+this.id,function(data) {
                $('#pitype').text(data.type);
                if (data.type === "Model B+") {
                    $('#node-input-pin').append($("<option></option>").attr("value",27).text("27 - SDA0"));
                    $('#node-input-pin').append($("<option></option>").attr("value",28).text("28 - SCL0"));
                    $('#node-input-pin').append($("<option></option>").attr("value",29).text("29 - GPIO21"));
                    $('#node-input-pin').append($("<option></option>").attr("value",31).text("31 - GPIO22"));
                    $('#node-input-pin').append($("<option></option>").attr("value",32).text("32 - GPIO26"));
                    $('#node-input-pin').append($("<option></option>").attr("value",33).text("33 - GPIO23"));
                    $('#node-input-pin').append($("<option></option>").attr("value",35).text("35 - GPIO24"));
                    $('#node-input-pin').append($("<option></option>").attr("value",36).text("36 - GPIO27"));
                    $('#node-input-pin').append($("<option></option>").attr("value",37).text("37 - GPIO25"));
                    $('#node-input-pin').append($("<option></option>").attr("value",38).text("38 - GPIO28"));
                    $('#node-input-pin').append($("<option></option>").attr("value",40).text("40 - GPIO29"));
                }
            });
        }
    });
</script>