- Vadelma Pi: n älyenergiamittarin lohkokaavio
- Vaaditut komponentit
- Pi: n valmistelu
- Pi-energiamittarin piirikaavio
- Pi-energiamittarin Python-koodi
- Demo
Energiavalvontalaitteet, kattavatko ne koko huoneiston tai toimivat vain yhden laitteen valvomiseksi, tarjoavat sinulle mahdollisuuden seurata kulutustasi ja tehdä tarvittavat muutokset. Vaikka niitä tulee yhä enemmän saataville markkinoilla, valmistaja minusta tuntuu silti olevan hyvä idea rakentaa DIY-versio, joka voidaan räätälöidä vastaamaan erityisiä henkilökohtaisia vaatimuksia. Sinänsä rakennamme tämän päivän opetusohjelmaa varten Vadelma Pi -energiankulutusmonitorin, joka pystyy saamaan energiankulutusta ja lataamaan sen Adafruit.io-sivustoon.
Voit myös tarkistaa Arduino-pohjaisen IoT-energiamittarin ja aiemmin rakentamamme Prepaid GSM -energiamittarin.
Vadelma Pi: n älyenergiamittarin lohkokaavio
Alla on lohkokaavio, joka näyttää järjestelmän toiminnan.
Valitse yksiköt peräkkäin;
Virranmittausyksikkö: virranmittausyksikön on koostuu SCT -013 virtasensorin jolla voidaan mitata jopa 100A, mallista riippuen ostat. Anturi muuntaa kiinnitetyn langan läpi kulkevan virran pieneksi virraksi, joka sitten syötetään ADC: hen jännitejakajien verkon kautta.
Jänniteanturiyksikkö: Vaikka en pystynyt asettamaan käteni jänniteanturimoduulille, rakennamme DIY-muuntajattoman jänniteanturin, joka mittaa jännitettä jännitteenjakajien periaatteella. DIY-jänniteanturi sisältää jännitteenjakajan vaiheen, jossa korkea jännite muunnetaan arvoon, joka soveltuu syötettäväksi ADC: hen.
Prosessointiyksikkö: Prosessointiyksikkö käsittää ADC: n ja Raspberry pi: n. ADC ottaa analogisen signaalin ja lähettää sen vadelma-pi: lle, joka sitten laskee kulutettavan tehon tarkan määrän ja lähettää sen määrätylle laitepilvelle. Tässä opetusohjelmassa käytämme Adafruit.io-laitetta laitepilvenä. Olemme rakentaneet myös muita
Vastuuvapauslauseke: Ennen kuin aloitamme, on tärkeää mainita, että tämä projekti liittyy kytkemiseen vaihtovirtalähteeseen, joka on vaarallinen ja joka voi olla kohtalokas, ellei sitä käsitellä turvallisesti. Varmista, että sinulla on kokemusta vaihtovirran käytöstä ennen kuin yrität tätä.
Valmis? Sukelletaan sisään.
Vaaditut komponentit
Seuraavat komponentit vaaditaan tämän projektin rakentamiseen;
- Vadelma Pi 3 tai 4 (prosessin tulisi olla sama RPI2: lle, jossa on WiFi-dongle)
- ADS1115 16-bittinen I2C ADC
- YHDC SCT-013-000
- 2,5 A 5 V: n MicroUSB-virtalähde
- 2W 10K vastus (1)
- 1 / 2W 10K vastus (2)
- 33ohmin vastus (1)
- 2 W 3,3 k: n vastus (1)
- IN4007 Diodi (4)
- 3.6v Zener-diodi (1)
- 10 k: n potentiometri (tai esiasetus) (1)
- 50v 1uf kondensaattori
- 50v 10uf kondensaattori (2)
- Leipälauta
- Neulalanka
- Muut Vadelma Pi -lisävarusteet.
Edellä lueteltujen laitteistokomponenttien lisäksi projekti vaatii myös joitain ohjelmisteriippuvuuksia ja kirjastoja, jotka asennamme jatkuessamme.
Vaikka tämä opetusohjelma toimii käytetystä vadelma pi -käyttöjärjestelmästä riippumatta, käytän Raspberry Pi buster -käyttöjärjestelmää, joka toimii Pi 3: lla (pitäisi toimia myös Pi 4: llä) ja oletan, että olet perehtynyt Vadelma Pi: n asentamiseen Raspbian Buster -käyttöjärjestelmä (melkein sama prosessi kuin edelliset versiot), ja osaat SSH: n siihen päätelaitteella, kuten hyper. Jos sinulla on ongelmia tämän kanssa, tällä sivustolla on tonnia vadelma Pi -oppaita, jotka voivat auttaa
Pi: n valmistelu
Ennen kuin aloitamme komponenttien johdotuksen ja koodauksen, on joitain yksinkertaisia tehtäviä, jotka meidän on suoritettava vadelma pi: lle varmistaaksemme, että olemme valmiita lähtemään.
Vaihe 1: Pi I2C: n käyttöönotto
Tämän päivän projektin ytimessä ei ole pelkästään vadelma pi, vaan ADS1115 16bit I2C-pohjainen ADC. ADC: n avulla voimme liittää analogisia antureita Vadelma Pi: hen, koska Pi: llä itsessään ei ole sisäänrakennettua ADC: tä. Se vie tiedot sisään oman ADC: nsä kautta ja välittää ne vadelma pi: lle I2C: n kautta. Sellaisena meidän on sallittava I2C-tiedonsiirto Pi: ssä, jotta se voi kommunikoida sen kanssa.
Pi's I2C -väylä voidaan ottaa käyttöön tai poistaa käytöstä vadelma pi: n asetussivulta. Käynnistä se napsauttamalla Pi-kuvaketta työpöydällä ja valitsemalla asetukset ja Raspberry pi -määritykset.
Tämän pitäisi avata asetussivu. Tarkista I2C: n käytössä oleva valintanappi ja tallenna se napsauttamalla OK ja käynnistä Pi uudelleen käynnistääksesi muutokset.
Jos käytät Pi: tä Headless-tilassa, Raspbian-määrityssivulle pääsee suorittamalla sudo raspi-config.
Vaihe 2: ADS11xx-kirjaston asentaminen Adafruitista
Toinen asia, joka meidän on tehtävä, on asentaa ADS11xx python -kirjasto, joka sisältää toimintoja ja rutiineja, joiden avulla python-komentosarjan kirjoittaminen on helppoa, kun haemme arvoja ADC: ltä.
Toimi seuraavasti.
- Päivitä pi juoksemalla; sudo apt-get -päivitys, jota seuraa sudo apt-get -päivitys , päivittää pi: n varmistaen, että asennettavalla uudella ohjelmistolla ei ole yhteensopivuusongelmia.
- Suorita sitten cd ~ -komento varmistaaksesi, että olet kotihakemistossa.
- Asenna seuraavaksi rakentamisen välttämättömyydet suorittamalla; sudo apt-get install build-essential python-dev python-smbus git
- Kloonaa seuraavaksi Adafruit git -kansio, joka sisältää ADS-kirjaston, suorittamalla; git-klooni https://github.com/adafruit/Adafruit_Python_ADS1x15.git
- Vaihda kloonatun tiedoston hakemistoon ja suorita asennustiedosto käyttämällä; cd Adafruit_Python_ADS1x1z ja sudo python setup.py install
Tämän jälkeen asennuksen pitäisi nyt olla valmis.
Voit testata kirjaston asennusta liittämällä ADS1115: n alla olevan kaavio-osan mukaisesti ja suorittamalla kirjaston mukana toimitetun mallikoodin muuttamalla ensin sen kansioon käyttämällä; CD-esimerkkejä ja esimerkin suorittaminen käyttäen; python simpletest.py
Vaihe 3: Asenna Adafruit.IO Python -moduuli
Kuten johdannoissa mainittiin, julkaisemme lukemia jännite- ja virta-antureista Adafruit IO Cloudiin, josta sitä voidaan katsella kaikkialta maailmasta tai yhdistää IFTTT: hen haluamiesi toimintojen suorittamiseksi.
Adafruit.IO-python-moduuli sisältää aliohjelmia ja toimintoja, joita hyödynnämme tietojen suoratoistamiseksi helposti pilveen. Noudata alla olevia ohjeita moduulin asentamiseksi.
- Suorita cd ~ palataksesi kotihakemistoon.
- Suorita seuraavaksi komento; sudo pip3 asenna adafruit-io . Sen tulisi asentaa Adafruit IO python -moduuli.
Vaihe 4: Määritä Adafruit.io-tilisi
Adafruit IO: n käyttäminen edellyttää ehdottomasti ensin tilin luomista ja AIO-avaimen hankkimista. Python-komentosarjasi käyttää tätä AIO-avainta ja käyttäjänimeäsi Adafruit IO -pilvipalvelun käyttämiseen. Luo tili vierailemalla osoitteessa https://io.adafruit.com/, napsauta Aloita ilmaiseksi -painiketta ja täytä kaikki vaaditut parametrit. Kun Rekisteröityminen on valmis, sinun pitäisi nähdä Näytä AIO-avain -painike kotisivusi oikealla puolella.
Napsauta sitä saadaksesi AIO-avaimesi.
Kun avain on kopioitu, olemme valmiita lähtemään. Voit kuitenkin helpottaa tietojen lähettämistä pilvipalveluun luomalla myös syötteet, joille tiedot lähetetään. (Lisätietoja AIO-syötteistä löytyy täältä). Koska lähetämme periaatteessa virrankulutusta, luomme syötteen teholle. Luo syöte napsauttamalla AIO-sivun yläosassa olevaa syötettä ja napsauttamalla Lisää uusi syöte.
Anna sille mikä tahansa nimi, mutta haluat pitää asiat yksinkertaisina, kutsun sitä energiankulutukseksi. Voit myös päättää luoda syötteitä jännitteelle ja virralle ja mukauttaa koodia tietojen julkaisemiseksi niihin.
Kun kaikki tämä on paikallaan, olemme nyt valmiita aloittamaan projektin rakentamisen.
Pi-energiamittarin piirikaavio
Raspberry Pi Energy Monitor -projektin kaaviot ovat suhteellisen monimutkaisia, ja siihen liittyy kytkeminen vaihtojännitteeseen, kuten aiemmin mainittiin, varmista, että noudatat kaikkia tarvittavia varotoimia sähköiskun välttämiseksi. Jos et ole perehtynyt vaihtojännitteiden turvalliseen käsittelyyn, anna sen tyydyttää iloa, joka johtuu sen asentamisesta leipälevylle ilman virtaa.
Kaaviot sisältävät jännite- ja virta-anturiyksikön liittämisen ADC: hen, joka sitten lähettää tiedot antureista Vadelma Pi: lle. Yhteyksien seuraamisen helpottamiseksi kunkin yksikön kaaviot esitetään yksin.
Nykyisen anturin kaavio
Liitä nykyisen anturin komponentit alla olevien kaavioiden mukaisesti.
Tässä projektissa käytetty virtamuuntaja on esitetty alla, kuten näet, että meillä on siitä kolme johtoa, nimittäin maa, Cout ja 3.3V
Jänniteanturin kaaviot
Liitä jänniteanturin komponentit alla olevien kaavioiden mukaisesti.
Prosessoriyksikön kaaviot
Liitä kaikki yhdessä vadelma pi: iin liitetyn ADC: n (ADS1115) kanssa ja virta- ja jänniteantureiden lähdön kanssa, jotka on kytketty vastaavasti ADS1115: n napoihin A0 ja A1.
Varmista, että kummankin anturiyksikön GND-nastat on kytketty ADC: n tai vadelma-pi: n GND: hen.
Jotta asiat olisivat hieman epävakaampia, otin jännite- ja virta-anturit käyttöön Protoboardilla. Ei myöskään ole suositeltavaa rakentaa vaihtovirtajohtoa piirilevylle. Jos teet saman, lopullinen määritys saattaa näyttää alla olevalta kuvalta;
Kun yhteydet ovat valmiit, olemme nyt valmiita kirjoittamaan koodin projektille.
Pi-energiamittarin Python-koodi
Kuten vadelma pi -projekteissamme tavallista, kehitämme projektin koodin pythonilla. Napsauta työpöydän vadelma pi -kuvaketta, valitse ohjelmointi ja käynnistä haluamasi python-versio. Käytän Python 3: ta ja jotkut python 3: n toiminnot eivät välttämättä toimi python 2.7: ssä. Joten voi olla tarpeen tehdä joitain merkittäviä muutoksia koodiin, jos haluat käyttää python 2.7: ää. Jaon koodin pieniksi katkelmiksi ja jaan koko koodin kanssasi lopussa.
Valmis? Viileä.
Koodin takana oleva algoritmi on yksinkertainen. Python-komentosarjamme kysyy ADS1115: ltä (yli I2C) jännitteen ja virran lukemia. Vastaanotettu analogiarvo vastaanotetaan, näytteistetään ja saadaan jännitteen ja virran neliön keskiarvo. Teho kilowateina lasketaan ja lähetetään Adafruit IO -syöttöön tietyin väliajoin.
Aloitamme komentosarjan sisällyttämällä kaikki kirjastot, joita käytämme. Tämä sisältää sisäänrakennetut kirjastot, kuten aika- ja matematiikkakirjasto sekä muut aiemmin asentamamme kirjastot.
tuonti aika tuonti Adafruit_ADS1x15 alkaen Adafruit_IO tuonti * tuonti matematiikka
Seuraavaksi luomme ADS1115-kirjaston instanssin, jota käytetään jatkossa fyysisen ADC: n käsittelyyn.
# Luo ADS1115 ADC (16-bittinen) ilmentymä.. adc1 = Adafruit_ADS1x15.ADS1115 ()
Anna seuraavaksi Adafruit IO -käyttäjätunnuksesi ja AIO-avain.
username = 'kirjoita käyttäjänimesi lainausten väliin' AIO_KEY = 'aio-avain' aio = Client (käyttäjänimi, AIO_KEY)
Pidä avain turvallisena. Sitä voidaan käyttää Adafruit io -tilisi käyttämiseen ilman lupaasi.
Seuraavaksi luodaan muuttujia, kuten ADC: n vahvistus, haluamasi näytteiden määrä ja asetetaan pyöristys, joka ei todellakaan ole kriittinen.
GAIN = 1 # Katso ads1015 / 1115-ohjeista potentiaaliset arvot. näytteet = 200 # ilmoituksista otettujen näytteiden lukumäärä1115 paikkaa = int (2) # joukko pyöristystä
Seuraavaksi luomme hetken silmukan virran ja jännitteen seuraamiseksi ja tietojen lähettämiseksi Adafruit io: lle ajoittain. While-silmukka alkaa asettamalla kaikki muuttujat nollaksi.
kun taas True: # nollausmuuttujien lukumäärä = int (0) datai = datav = maxIValue = 0 #max nykyinen arvo näytteessä maxVValue = 0 #max jännite arvo näytteessä IrmsA0 = 0 #juurin keskimääräinen neliövirta VrmsA1 = 0 # keskimääräinen neliöjännite ampeeritA0 = 0 # virtahuippu voltitA1 = 0 #jännitekilowattit = kelluva (0)
Koska työskentelemme vaihtovirtapiirien kanssa, SCT-013: n lähtö ja jänniteanturi ovat siniaalto, joten virran ja jännitteen laskemiseksi siniaallolta meidän on saatava huippuarvot. Huippuarvojen saamiseksi otamme sekä jännitteen että virran (200 näytettä) ja löydämme korkeimmat arvot (huippuarvot).
alueella (näytteet): datai.insert (count, (abs (adc1.read_adc (0, gain = GAIN)))) datav.insert (count, (abs (adc1.read_adc (1, gain = GAIN)))) # katso, onko sinulla uusi maxValue- tulostus (datai), jos datai> maxIValue: maxIValue = datai, jos datav> maxVValue: maxVValue = datav
Seuraavaksi standardisoimme arvot muuntamalla ADC-arvoista todelliseen arvoon, jonka jälkeen käytämme sitten keskimääräisen neliön yhtälöä RMS-jännitteen ja virran löytämiseksi.
#laskee virta näytetietojen avulla # käytettävä sct-013 kalibroidaan 1000 mV: n ulostulolle @ 30 A. IrmsA0 = kelluva (maxIValue / kelluva (2047) * 30) IrmsA0 = pyöreä (IrmsA0, paikat) ampeeritA0 = IrmsA0 / math.sqrt (2) ampeeritA0 = pyöreät (ampeeritA0, paikat) # Laske jännite VrmsA1 = kelluva (maxVValue * 1100 / kelluva (2047)) VrmsA1 = pyöreä (VrmsA1, paikat) volttiaA1 = VrmsA1 / math.sqrt (2) volttiaA1 = pyöreä (volttiaA1, paikkaa) tulosta ('Jännite: {0}'. muoto (volttia1)) tulosta ('Nykyinen: {0} '. Muoto (ampsA0))
Kun tämä on tehty, teho lasketaan ja tiedot julkaistaan osoitteessa adafruit.io
#calculate power power = pyöreä (ampeerit0 * volttiaA1, paikkaa) tulosta ('Virta: {0}'. muoto (teho)) #postitiedot osoitteeseen adafruit.io EnergyUsage = aio.feeds ('EnergyUsage') aio.send_data (' Energiankäyttö ', teho)
Ilmaisilla tileillä Adafruit vaatii, että pyyntöjen tai tietojen lataamisen välillä on jonkin verran viivettä.
# Odota, ennen kuin toistat silmukan ajan. Lepotila (0)
Projektin täydellinen koodi on tämän sivun alaosassa
Demo
Kun koodi on valmis, tallenna se ja paina python IDE: n juoksupainiketta. Varmista ennen tätä, että Pi on yhteydessä Internetiin WiFi: n tai LAN: n kautta, ja että aio-avain ja käyttäjänimi ovat oikein. Jonkin ajan kuluttua sinun pitäisi alkaa nähdä energiatiedot (teho), jotka näytetään Adafruit.io -sivuston syötteessä. Laitteistoasetukset demoni aikana olivat tuollaiset
Voit viedä asioita eteenpäin luomalla koontinäytön osoitteeseen adafruit.io ja lisäämällä kaavion komponentin, jotta saat graafisen kuvan tiedoista alla olevan kuvan mukaisesti.
Siinä kaikki kaverit, voit nyt seurata energiankulutustasi mistä päin maailmaa tahansa. On tärkeää huomata, että on ehdottomasti paljon enemmän hienosäätöä ja kalibrointeja, jotta se muutettaisiin todella tarkaksi ratkaisuksi, mutta uskon, että tämä antaa sinulle melkein kaiken mitä tarvitset edetä.
Voit vapaasti ampua minulle kysymyksiä projektista kommenttiosion kautta. Yritän vastata mahdollisimman moniin. Seuraavaan kertaan.