Inhoudsopgave:

Hoe stopcontacten te bedienen met een Raspberry Pi - Ajarnpa
Hoe stopcontacten te bedienen met een Raspberry Pi - Ajarnpa

Video: Hoe stopcontacten te bedienen met een Raspberry Pi - Ajarnpa

Video: Hoe stopcontacten te bedienen met een Raspberry Pi - Ajarnpa
Video: Hoe hebben wij de Raspberry PI ontvangen van SOS Solutions? #1 2024, November
Anonim
Hoe stopcontacten te bedienen met een Raspberry Pi
Hoe stopcontacten te bedienen met een Raspberry Pi
Hoe stopcontacten te bedienen met een Raspberry Pi
Hoe stopcontacten te bedienen met een Raspberry Pi
Hoe stopcontacten te bedienen met een Raspberry Pi
Hoe stopcontacten te bedienen met een Raspberry Pi

In deze Instructable zal ik u demonstreren hoe u een webinterface kunt maken om stopcontacten in uw huis te bedienen met behulp van een Raspberry Pi. Ik koos ervoor om dit project te schrijven toen ik de Sensors-wedstrijd zag, en aangezien dit project het gebruik van een sensor omvat om codes te lezen van de afstandsbediening die bij de stopcontacten die je koopt, wordt geleverd, dacht ik dat dit project perfect zou passen.

Ik zal er alles aan doen om dit zo hoog mogelijk te houden en code te leveren om dit allemaal te laten werken. Voor jullie allemaal code-apen die er zijn, voel je vrij om in de code te graven en me te onderzoeken in de reacties! Ik ben altijd op zoek naar verbetering. Er is nogal wat aan de hand, dus als je vragen hebt over een stap, laat dan een reactie achter zodat ik de Instructable kan bijwerken met de benodigde details.

Dit project maakt gebruik van radiofrequentiegestuurde uitgangen op 433 MHz in combinatie met een RF-zender die is aangesloten op uw Raspberry Pi. De stopcontacten worden geleverd met afstandsbedieningen die stopcontacten kunnen in- en uitschakelen, maar dat is niet leuk! We zullen in plaats daarvan een webserver gebruiken die draait op de Raspberry Pi waarmee iedereen die op het netwerk is aangesloten, bepaalde stopcontacten kan in- of uitschakelen. Een web-front-end voor dit project is ideaal, aangezien elk apparaat met internetverbinding in uw netwerk kan worden gebruikt als uw afstandsbediening.

Dit is een project waar ik al jaren van droom om te voltooien, en hoewel er nog ruimte is voor toevoegingen, is het als volgt beschreven project een functioneel systeem.

Benodigdheden

  • Een Raspberry Pi (ik gebruikte een RPi 3 Model B+)
  • Een 433MHz zender en ontvanger (ik gebruikte deze)
  • 433MHz-uitgangen (ik heb dit gebruikt)
  • Vrouw-naar-vrouw truien (ik heb dit stel gekocht)
  • Een computer of handheld-apparaat dat toegang heeft tot internet

Stap 1: Stel uw Raspberry Pi in

Stel je Raspberry Pi in
Stel je Raspberry Pi in

Begin met het installeren van de nieuwste versie van Raspbian op je nieuwe Raspberry Pi. Als je van plan bent een bestaande Pi te gebruiken (wat je volledig kunt doen), hoef je alleen maar ervoor te zorgen dat je Python 3 op je Pi hebt, aangezien alle broncode die ik geef daarin is geschreven. Om dit te doen, typ

python3

in de opdrachtregel. Als je Python 3 hebt, zou je de Python-terminal moeten zien openen. Verlaat de terminal door te sluiten of te typen

Uitgang()

Zodra je dit hebt bevestigd, moet je Flask op je Pi installeren. Met Flask kunnen we onze webserver maken. Typ vanaf de Pi-opdrachtregel

sudo pip3 install flask

In het geval dat pip niet op je Pi is geïnstalleerd, moet je typen

sudo apt-get install python3-pip

Ik ontwikkel het liefst op mijn Raspberry Pi vanuit het comfort van mijn desktopcomputer. Als u ook de voorkeur geeft aan deze optie, moet u een soort omgeving voor SSH in de Pi installeren. PuTTY zal werken, maar ik heb liever een GUI (grafische gebruikersinterface), waardoor het lijkt alsof je direct op de Pi zit. Voor de GUI-optie moet u VNC Viewer installeren op de computer waarop u wilt werken. Er zijn ook instellingen die u op uw Pi moet aanpassen. Instructies voor het wijzigen van instellingen vindt u hier.

Stap 2: Uw hardware aansluiten

Uw hardware aansluiten
Uw hardware aansluiten

Op dit punt is het tijd om alle fysieke verbindingen tot stand te brengen die u moet doen ter voorbereiding op het instellen van de broncode voor dit project. Je verbindt de pinnen van de zender en de ontvanger met de GPIO-pinnen van je Pi. U wilt religieus verwijzen naar het pinout-diagram van de GPIO-pinnen. Open hiervoor de terminal op je Pi en typ

pinout

De volgende zijn de verbindingen die ik heb gemaakt. Het kan zijn dat je een andere configuratie hebt als je andere zender/ontvanger hardware hebt gekocht dan ik in de inleiding heb aangegeven. Mocht je besluiten andere pinnummers te kiezen dan die ik hieronder aangeef, wees dan niet bang! Wanneer u de broncode downloadt, wijzigt u eenvoudig de pincodes in het RxTx.py-bestand.

Ontvanger (grote chip):

  • GND - Elke aangewezen aardpen
  • GEGEVENS - Pin 11
  • DER - Niet aangesloten
  • +5V - Elke aangewezen +5V-pin
  • ------
  • +5V - Elke aangewezen +5V-pin
  • GND - Elke aangewezen aardpen
  • GND - Niet aangesloten
  • ANT - Niet verbonden

Opmerking: u kunt indien nodig een antenne aansluiten, maar ik merkte dat dit niet nodig was. Deze kleine chip was verrassend gevoelig en detecteert getrouw signalen tot ten minste 50 voet van waar hij zat en door ten minste twee muren.

Zender:

  • P - De 3.3V-pin
  • DA - Pin 7
  • G - Elke aangewezen aardpen
  • AN - niet verbonden

Opmerking: Nogmaals, u kunt indien nodig een antenne op de zender aansluiten, maar ik merkte dat dit niet nodig was. Het bereik is ruim voldoende (50+ft).

Stap 3: De code toevoegen

Dit is het deel waar ik het grootste deel van mijn tijd aan besteedde toen ik dit project aan het ontwikkelen was. Ik probeer zoveel mogelijk commentaar te geven, maar ik heb waarschijnlijk hiaten achtergelaten die mogelijk uitleg behoeven als iemand van jullie tijd besteedt aan het proberen te begrijpen. Als dit jou overkomt, laat dan een reactie achter!

De talen die hierbij betrokken zijn, zijn:

  • Python
  • CSS
  • Javascript
  • HTML
  • JQuery/Ajax

De Python wordt gebruikt in de kolfserver en in de

RxTx.py

bestand, dat de verzending en ontvangst van de code afhandelt. CSS wordt gebruikt bij het genereren van de stijl van de webpagina. Wie wil er een saaie website!? Javascript wordt gebruikt bij het afhandelen van gebeurtenissen (op een knop drukken, enz.). HTML is de kernbouwsteen van de webpagina. Ten slotte wordt JQuery/Ajax gebruikt om te communiceren tussen de webpagina en de Python-backend.

Maak je geen zorgen als al deze talen intimiderend klinken! Ik wist alleen dat Python aan dit project begon, wat toevallig de taal was die de minste hoeveelheid codering met zich meebracht, ga figuur… Het volstaat te zeggen, neem de tijd om door de code te bladeren als dat is wat je wilt doen. Als je niet wilt, hoeft het niet!

Het volgende is de directorystructuur die ik heb gekozen voor deze webpagina. De gezipte map die aan deze stap is gekoppeld, bevat alle broncode in de volgende structuur.

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> webpagina-- statisch----- favicon.ico----- style.css-- sjablonen----- index.html----- schema.html-- app.py-- data.bestand

Je kunt de Outlet Switch-map overal op je Pi plaatsen. Wanneer u klaar bent om uw webserver te gebruiken, opent u de terminal op uw Pi, en

CD

(directory wijzigen) naar de webpagina-directory. Typ vervolgens

python3 app.py

in de terminal. Als er geen fouten waren, zou je goed moeten zijn om te gaan!

PS Wees geduldig als u bugs tegenkomt. Ik heb geprobeerd ze allemaal te pletten voordat ik ze upload.

Stap 4: Geef het een kans

Probeer het eens!
Probeer het eens!

Nu u de code uitvoert, krijgt u een gevoel voor de webinterface binnen handbereik. De bediening van het systeem is heel eenvoudig:

  • U kunt zoveel verkooppunten toevoegen als u wilt via de webinterface.
  • Verwijderen is net zo eenvoudig als op Bewerken klikken, de verkooppunten selecteren die u wilt verwijderen en op Verwijderen klikken.

De bovenstaande YouTube-video laat zien hoe u daadwerkelijk een nieuw verkooppunt aan uw lijst kunt toevoegen. Om samen te vatten wat het laat zien:

  • Voer eerst de titel van het verkooppunt in het veld Titel in
  • Klik of tik buiten het veld Titel om het programma te laten controleren of de titel nog niet bestaat. U kunt geen titels met dezelfde naam hebben
  • Na validatie zijn de ON Code en OFF Code knoppen geactiveerd.
  • Houd de AAN-knop op uw meegeleverde afstandsbediening ingedrukt en klik snel op de AAN-codeknop op de interface. Houd de knop op de afstandsbediening ingedrukt totdat uw binaire code het aangrenzende veld invult.
  • Herhaal de vorige stap voor de UIT-code.
  • Klik op OK en nu ben je klaar om van dit stopcontact te wisselen!

Zoals vermeld in de inleiding, is het project niet 100% compleet voor mijn eigen gebruik. Het grootste onderdeel dat ik nog moet voltooien en implementeren, is de planningsmogelijkheid. Ik ben van plan om de gebruiker een schema te laten maken waarmee stopcontacten op bepaalde tijden automatisch kunnen worden in- en uitgeschakeld.

Stap 5: Foutopsporing en het RxTx.py-bestand

Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand
Foutopsporing en het RxTx.py-bestand

De enige bekende beperking van het systeem is dat er een kans is op incompatibiliteit tussen verkooppunten van verschillende leveranciers. De aan en uit codeberichten zijn 25 bits voor mijn systeem, en als een systeem een andere berichtlengte heeft, is het niet direct compatibel met dit project. Als u de instructies precies hebt gevolgd en nog steeds problemen ondervindt om dit te laten werken, is de volgende manier de beste manier om het probleem op te lossen.

  • Zorg ervoor dat matplotlib op uw Pi is geïnstalleerd. U kunt dit doen door het volgende in de terminal van de Pi te typen:

    • python3

    • matplotlib importeren

    • Als u een foutmelding krijgt, moet u matplotlib installeren.
    • Verlaat de python-shell met

      Uitgang()

  • Om matplotlib te installeren, typt u

    sudo pip3 matplotlib installeren

  • in de terminal
  • Download het bijgevoegde test.py-bestand en plaats het naast het RxTx.py-bestand op uw Pi
  • Open de python-terminal en verander de map in de comm-map.
  • Type

    python3 test.py

  • Als er "**Begin met opnemen**" staat, houdt u de AAN- of UIT-knop op uw afstandsbediening ingedrukt totdat de opname is afgelopen.
  • Het programma laadt een matplotlib-figuur die op het bovenstaande lijkt. Zoom in totdat je het repetitieve signaal ziet zoals aangetoond in de bovenstaande foto's.
  • Tel de totale logische 1 en logische 0 voor elk bericht, waarbij een bericht één iteratie is van het herhalende signaal hierboven. Als het totaal 25 is, heeft het RxTx.py-bestand waarschijnlijk geen fout. Als je iets anders dan 25 tegenkomt, zorg er dan voor dat je hieronder een opmerking maakt, en ik zal het RxTx.py-bestand opnieuw bewerken om meer open te zijn (of voel je vrij om het uit te proberen).

Wat als ik geen herhalend signaal zie?

Als u geen herhalend signaal ziet, is er een van de twee dingen mis. Controleer eerst of al uw jumperdraadverbindingen correct zijn gemaakt. Als alles er goed uitziet, heb je misschien een slechte ontvanger. Heb je degene gekocht die ik voorstelde? Toen ik mijn eerste ontvangerchip kocht, maakte hij veel lawaai. Zo luidruchtig dat ik geen duidelijk signaal kon krijgen. Ik gaf toen die chip terug en pakte degene die ik had gelinkt, en het had niet beter kunnen werken.

Stap 6: Geniet

Je weet dat je de mogelijkheid hebt om stopcontacten in of uit te schakelen vanaf je telefoon, tablet, computer of ander apparaat met internet! Laat me weten wat je ervan vindt in de comments!

Aanbevolen: