Adding to the answer above, how to do this really depends on the load you want to switch.
Here's a post about how much current you can draw from the GPIO see here
A few cases:
1) You have only one LED, that's it, and 20mA or so will do. See here an internet article on how to do this with one resistorsee here
2) You have more than one LED, you want the ...
Exactly, Just use it as a switch.
I assume when the door is open or closed the Pi wants to know about it via one of it's input pins. Is the pi looking for a low? Then wire the switch from the input pin to ground and take a pull-up resistor to the +3.3V line. When the switch is open i.e. no magnet present, the input will be logic high. When the magnet ...
It's a switch. Connect it like you would any other switch. The only thing to decide is if you want to use it as normally open (normally reads as off) or normally closed (normally reads as on).
There are two basic ways - connect common to ground or connect common to 3V3. Whichever you choose it is safer to make that connection through a resistor to ...
The B+ has 26 usable gpios. In that context 8 doesn't seem a lot.
In effect you are trying to trade off the number of gpios used against complicating the circuit.
Have you considered a port expander, such as the popular MCP23017? That connects to the I2C bus (two gpios, SDA and SCL) and provides an additional 16 gpios per chip. Up to 8 MCP23017 may be ...
I just finished building a power-off circuit yesterday, although mine uses a momentary switch.
Here is the python code (with attribution embedded):
#This script was authored by AndrewH7 and belongs to him (www.instructables.com/member/AndrewH7)
#You have permission to modify and use this script only for your own personal usage
#You do not ...
I have a bank of 8 LEDs where I need to be able to tell which one of them a photoresistor is positioned over, and I think this is a version of the same problem.1 To determine which LED is lit, I don't need to be able to control them all individually. Instead I use 5 lines -- actually transistors toggling the return to ground, since one GPIO directly is not ...
The Raspberry Pi's GPIO pins work with 0V-3V3 differential from GND, and can work in either Output (the RPi sends out a signal) or Input (the RPi listens for a signal) mode. In Output mode, if you make the pin HIGH in your program, the GPIO pin's voltage will be at 3V3 compared to GND. If you make the pin LOW in your program, the GPIO pin's ...
It sounds like you are wanting to wire the wall switch and the relay as a three-way switch arrangement. This way, if the relay has the light turned on, flipping the wall switch will turn it off, and vice versa. You could wire a single-pole double-throw relay to work as a 3-way switch, and install a 3-way switch in the wall (if it isn't already a 3-way switch)...
You're looking at a floating input. When you read pin 25 without it being connected to anything at all it can be considered to have an undefined, unstable value. That's indicated by the LED randomly turning itself on and off. By pulling the value of the pin to ground with your resistor you render it non-floating.
The point of a pull-down is to ground an input when it otherwise isn't driven to a particular value -- a state known as high impedance or floating.
I was confused by the term "pull-down resistor" the first time I saw it. And the second, third etc. Read the wrong way it implies the resistor is the active element in the "pulling down", which it is not (...
The 40 pin expansion header connects to 28 GPIO. They are Broadcom GPIO 0 through 27.
You are recommended not to use GPIO 0/1 as they are intended to be used by HATs.
Any recent GPIO library will give access to all the GPIO connected to the expansion header.
The resistance of the cable is irrelevant in this case. Telephone cable would be suitable.
The configuration of switch in http://elinux.org/RPi_GPIO_Interface_Circuits is the most appropriate. You could use internal pullup, but I would recommend using resistors. Either NO or NC is suitable, just adjust your logic to suit.
I recommend you select a pin ...
I think I found what you are looking for :
In this exemple, we see that two switches are controlling one lamp, so toggling one of these switch will toggle the lamp.
In your case, you need to consider your relay as the first switch, and your pre-existing switch as the second one.
Image taken from : https://diy.stackexchange.com/questions/31632/wiring-a-...
The double switch method (also called a staircase switch) would be preferable, as it's easier to integrate with existing wiring, but it leaves your Pi without knowledge about the state of the load.
As I see it you have two options:
Make the switch pull an input high or low on the Raspi, which you then use in your code to control the lamp or other load ...
I've solved the problem.
UPDATE: The main issue appears to be in the kernel drivers. Problem solved by upgrading the kernel from 4.14.50-v7+ to the latest stable version (currently 4.14.79-v7+) using sudo apt-get install raspberrypi-kernel, and rebooting. The steps outlined below are no longer necessary. (reference).
UPDATE 2: Bad drivers on the client ...
You could simply wire the buttons up as a matrix, your usecase already describes the buttons being placed in a grid pattern. If you wire all the button pins vertically and horizontally you can form a matrix, with the 28 GPIO pins avalible on all Pi models but the first edition. You should be able to theoretically run 14^2 buttons or aprox 196 buttons.
I'm assuming the code you posted is for the push buttons?
Switches work very similar to push buttons. When you switch it on, voltage on your gpio port goes high until you switch it off. This is the same as if you were to hold a push button down for that same period of time. So lets modify this to your new requirements. You want:
On switch play sound a
It is trivial to write a script that runs the shutdown command on button press. The complication comes from people who want to power down the Pi. Unless you are using batteries this seems pointless.
It is simple to "restart" the B or B+ from the halt state see https://raspberrypi.stackexchange.com/a/23725/8697
I've re-indented your code, and you make a mistake on two lines (at line 68 and 117).
You wrote :
Whereas the correct way is :
Here is your file with the fix ;) :
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var gpio = require('pi-gpio');
var app = express();
var mysql = require('mysql');...
I hope it's not too late to answer your question; I encountered the same issue and wanted to post the solution I found! What I did was using the buttons and switches introduction on the official Raspberry site and their workaround.
It doesn't use add_event_detect but defines a function (called BtnCheck). What I use looks like this:
simulate this circuit – Schematic created using CircuitLab
Use either Option 1 or Option 2, depending on what parts you can find and what you're comfortable with. In either case, the Switch label on the transistor circuit connects to the Switch label on the relay circuit, so that the transistor is simply an amplifier to activate the relay. ...
The USB/Ethernet device you link to does not say anything about supporting PoE and so, I would assume it doesn't.
The power profile for the two connections is very different, and the logic in the device would need to draw power differently depending on what power was there. So, if they supported PoE they would be putting extra power handling devices in and ...
You can use a simple transistor to achieve this. It is much simpler than using a mechanical relay, and much smaller.
For NPN Only
You just need to find the + voltage (signal) of the remote wire and wire it properly to the transistor (C) Collector
Then the GND is common for the Pi and the Remote and wired to (E) Emiter
GPIO triggers the (B) Base
R1 are ...
Not sure why you've got Ground and 3V3 used in your circuit, you want one or the other depending on whether the input is pulled high or low.
You are also using the wrong pin (12) if you are using GPIO.BOARD - should be pin 32. If you were using GPIO.BCM then 12 would be correct. There is also no need for your 2nd while loop.
Your design has some shortcommings
There is no direct 5V output
the 3v3 probaply isn't strong enaugh to drive a relay so you need a transistor too and a diode to protect the Pi 5v
the accumulated cost for the components exceed the price for a ready L298 H-bridge module ($2.5-$3) for which instructions are available
It may work, if I had to guess I'd say it would work.
There should be no problem powering the relay from a Pi 5V pin (and a Pi ground pin).
It will be quite safe to connect a Pi GPIO to the relay signal pin.
The only question is whether a Pi GPIO high (3V3) will be enough to be seen as high by the relay logic. A lot of devices see the minimum high as 70% ...