Schakel Alexa Control in op je plafondventilator
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Benodigde gereedschappen en machines
|
Apps en online services
| ||||
| ||||
|
Over dit project
Ik zal hier in detail beschrijven hoe ik mijn gewone plafondventilator slim heb gemaakt door Amazon Alexa te integreren voor snelheidsregeling daarvan. We zullen de amazon Alexa-vaardigheden gebruiken om de snelheidsverandering te initiëren en zullen ngrok zijn tunneling-service om het verzoek door te sturen naar onze lokaal gehuisveste RPi-server, die onze Arduino uno zal vertellen om het gerelateerde relais in te schakelen.
Onze lokale Raspberry Pi-server instellen
we hebben de volgende services nodig om onze server te gebruiken.
- Python PIP:om python-pakketten te installeren, als u python 2.7 of 3 gebruikt, wordt standaard pip geïnstalleerd, dus u kunt deze stap vermijden
sudo apt-get install python-pip
- Flask:Flask is een serverpakket voor python waarmee je gemakkelijk python-servers kunt implementeren.
pip install flask
- flask ask:een flask-extensie die wordt gebruikt om gemakkelijk Alexa-vriendelijke programma's te maken.
pip install flask-ask
- pyserial:seriële communicatiemodule voor python
sudo apt-get install pyserial
- libpython2.7-dev
sudo apt-get intall libpython2.7-dev
alle benodigde modules zijn geïnstalleerd, het is tijd om de server te laten draaien. we moeten het python-script invoeren voor hetzelfde
from flask import Flaskfrom flask_ask import Ask, statementimport requestsimport jsonimport serial ser =serial.Serial("/dev/ttyAMA0",9600)app =Flask(__name__)ask =Ask(app, '/')@ [email protected]("FanOn")def on():ser.write(b'1') return statement("Plafondventilator ingeschakeld.")@ask.intent("FanOff")def off() :ser.write(b'0') return statement("Plafondventilator uitgeschakeld.")@ask.intent("FanLevelUp")def up():ser.write(b'+') return statement("Plafondventilator versnellen.")@ask.intent("FanLevelDown")def down():ser.write(b'-') return statement("Plafondventilator verlagen.")if __name__ =="__main__":app.run (debug=True)
Voer dit python-script uit en voeg dit script toe aan de automatische startlijst van uw RPi.
Ngrok is een veilig tunnelplatform om uw apparaat online te maken. Met dit platform kunt u op een zeer eenvoudige manier uw webapplicatie of welke applicatie dan ook online laten gaan. Ga om te downloaden naar de officiële site en download voor ARM.
https://ngrok.com/
Pak het uit en ga naar de map waar je het uitpakt. Voer het uit met het commando
./ngrok http 5000
Alexa-vaardigheid
Ga naar de Amazon-ontwikkelaarspagina en meld u aan voor uw ontwikkelaarsaccount
https://developer.amazon.com/
Ga naar de ontwikkelaarsconsole nadat je je hebt aangemeld en voer nu in selecteer "Alexa skill kit"
selecteer nu "Nieuwe vaardigheid toevoegen"
Voer de naam voor uw vaardigheid in en voer een aanroepnaam in. zorg ervoor dat uw aanroepnaam aan de noodzakelijke voorwaarden voldoet
opslaan en doorgaan naar de volgende stap
Voer hier de intenties in voor het aanroepen van de vaardigheid, en uitingsvoorbeelden, dwz de woordcombinaties die elke intentie moeten initiëren.
bedoelingen zijn als volgt
{ "intents":[ { "intent":"FanOn" }, { "intent":"FanOff" }, { "intent":"FanLevelUp" }, { "intent":"FanLevelDown" }] }
voorbeelduitingen
FanOn zegt ventilator aanFanOn zegt aanFanOff zegt offFanOff zegt ventilator uitFanLevelUp zegt ventilatorniveau omhoogFanLevelUp zegt ventilatorsnelheid verhogenFanLevelDown zeg ventilatorniveau omlaagFanLevelDown zeg ventilatorsnelheid verlagen
Sla op en ga door naar de volgende fase. hier moet u de locatie invoeren waarnaar u de gegevens moet verzenden zodra een voornemen is ingeroepen.
aangezien we ngrok . gebruiken , selecteer HTTPS, en voer de beveiligde link in die is gegenereerd in ngrok serve, sla deze op en ga verder met de volgende stap
kies de tweede optie voor SSL-certificaat en ga verder
Om te controleren of onze setup werkt of niet. Zorg ervoor dat uw ngrok-server werkt en dat het Python-script ook draait, anders werkt het niet.
we kunnen zien dat servers verzoeken ontvangen en bijwerken.
Arduino-code
upload de bijgevoegde schets van je arduino en sluit hem aan op raspberry pi zoals uitgelegd in het schema.
int Fan[] ={13,12,11,10,9,8}; int n=0;void reset();void set(char);void setup() { // plaats hier uw setup-code om één keer uit te voeren:for(int i=0;i<6;i++){ pinMode(Fan [i], UITGANG); } Serieel.begin(9600); } void loop() { char x;if (Serial.available()){ x=Serial.read(); reset(); set(x);}}void reset(){ for(int i=0;i<6;i++) {digitalWrite(Fan[i], LOW); }}void set(char x){ switch (x) { case '1':n=1; pauze; geval '+':n++; pauze; geval '-':n--; pauze; geval '0':n=0; pauze; } digitalWrite(Fan[n],HIGH);}
Hardware
sluit de hardware aan zoals getoond in het schema
Gelukkig maken. maak elk ander apparaat op dezelfde manier spraakgestuurd :)
Code
- arduino schets
- Python-servercode
arduino schetsArduino
upload deze code naar je arduino en verbind hem met je raspberry pi serverint Fan[] ={13,12,11,10,9,8}; int n=0;void reset();void set(char);void setup() { // plaats hier uw setup-code om één keer uit te voeren:for(int i=0;i<6;i++){ pinMode(Fan [i], UITGANG); } Serieel.begin(9600); } void loop() { char x;if (Serial.available()){ x=Serial.read(); reset(); set(x);}} void reset(){ for(int i=0;i<6;i++) {digitalWrite(Fan[i], LOW); }}void set(char x){ switch (x) { case '1':n=1; pauze; geval '+':n++; pauze; geval '-':n--; pauze; geval '0':n=0; pauze; } digitalWrite(Fan[n],HIGH);}
Python Server-codePython
un deze code in uw spython nadat ngrok is ingesteld om gegevens te ontvangenvan flask import Flaskfrom flask_ask import Ask, statementimport requestsimport jsonimport serial ser =serial.Serial("/dev/ttyAMA0",9600)app =Flask(__name__ )ask =Ask(app, '/')@[email protected]("FanOn")def on():ser.write(b'1') return statement("Plafondventilator ingeschakeld.")@ ask.intent("FanOff")def off():ser.write(b'0') return statement("Plafondventilator uitgeschakeld.")@ask.intent("FanLevelUp")def up():ser.write (b'+') return statement("Plafondventilator versnellen.")@ask.intent("FanLevelDown")def down():ser.write(b'-') return statement("Plafondventilator verlagen." )if __name__ =="__main__":app.run(debug=True)
Schema's
zo verbind je de apparaten met elkaarProductieproces
- Een draadloos sensornetwerk in uw huis bouwen
- Bedien muntvangers met Arduino
- Arduino-controlecentrum
- Alexa gestuurde LED's via Raspberry Pi
- Arduino met Bluetooth om een LED te bedienen!
- Arduino-luchtbevochtigerbediening
- Arduino Nano:bedien 2 stappenmotoren met joystick
- Bedien uw led met Cortana
- Volledige controle over uw tv met Alexa en Arduino IoT Cloud
- Sluit uw centrale verwarming aan op Arduino
- 25 kHz 4-pins PWM-ventilatorregeling met Arduino Uno