- Componenten vereist
- Koppeling MLX90614 met Raspberry Pi
- Pi Camera-interface met Raspberry Pi
- SMTP-e-mail instellen met Raspberry Pi
- Python-code voor Pi om temperatuur van MLX90614 te lezen en e-mail met afbeelding te verzenden
- Temperatuur meten en e-mailwaarschuwing verzenden met PI
Sinds de corona-uitbraak is het erg moeilijk geworden om degenen te identificeren die wel of niet door het virus zijn getroffen. Om dit probleem op te lossen, worden vaak temperatuurapparaten gebruikt om de lichaamstemperatuur te meten. Deze apparaten hebben contactloze IR-temperatuursensoren die de lichaamstemperatuur kunnen meten zonder fysiek contact.
Er zijn veel temperatuurpistolen op de markt, maar geen van hen geeft een waarschuwing of e-mailmelding aan hogere autoriteiten om passende maatregelen te nemen wanneer de temperatuur een bepaalde limiet overschrijdt. In dit project zullen we een IR-temperatuursensor koppelen en de e-mailwaarschuwingen met de afbeelding van de persoon verzenden als de temperatuur van een bepaalde persoon de ingestelde waarde overschrijdt.
In de wereld van vandaag verandert het internet der dingen ons leven door een aantal systemen te ontwikkelen die op afstand kunnen worden gecontroleerd en bestuurd. In dit project gebruiken we de kracht van IoT en bouwen we een temperatuurbewakingsapparaat met e-mailwaarschuwingen met Raspberry Pi, MLX90614 en PiCamera.
Eerder hebben we ook andere soortgelijke thermometers gebouwd voor het meten van de lichaamstemperatuur, deze vind je hier.
- Arduino gebaseerde digitale thermometer met MAX30205
- Contactloze lichaamstemperatuur screening met behulp van RFID en Arduino met MLX90614
- Contactloze infraroodthermometer met Arduino
- Wandmontage contactloze thermometer met Arduino
- Slimme thermometer met Arduino met Android-applicatie
Componenten vereist
Hier gebruiken we Raspberry Pi 3 Raspbian OS. Alle basis hardware- en softwarevereisten zijn eerder besproken, je kunt het opzoeken in de Raspberry Pi Introductie en Raspberry PI LED Knipperend om aan de slag te gaan, behalve dat we nodig hebben:
- Raspberry Pi 3 (elke versie zou goed zijn).
- Pi Camera.
- MLX90614 - IR-temperatuursensor.
- Draden aansluiten.
- Breadboard.
- Voeding (5V, 2A / 3A)
Dit project is eenvoudig als we het in delen opdelen.
- MLX90614 begrijpen en koppelen met Raspberry pi.
- Aan de slag met Pi Camera.
- SMTP-e-mail instellen met Raspberry pi.
- Definitieve code ontwikkelen en begrijpen.
Raspberry Pi: Raspberry Pi is een computer van creditcardformaat die is ontworpen voor educatieve doeleinden. Vanwege de prijs en verbazingwekkende specificaties, zoals wifi aan boord, Bluetooth en programmeerbare GPIO-header, en het aantal mogelijke opties om een applicatie te maken, werd deze overgenomen door ontwikkelaars en elektronicahobbyisten. Je kunt het opzoeken in de Raspberry Pi Introductie en Raspberry PI LED Knipperend om aan de slag te gaan met het opstartproces.
MLX90614 IR-temperatuursensor: Er zijn veel sensoren op de markt die ons temperatuur en vochtigheid kunnen geven. Wat deze sensor anders maakt dan alle andere sensoren, is dat hij ons objecttemperatuur kan geven en andere sensoren de omgevingstemperatuur. We hebben DHT11 Sensor en LM35 uitgebreid gebruikt voor veel toepassingen waarbij luchtvochtigheid of temperatuur gemeten moet worden.
Maar hier voor het maken van een temperatuurpistool dat geen fysiek contact nodig heeft en de objecttemperatuur kan meten in plaats van de omgevingstemperatuur, gebruiken we IR-gebaseerde MLX90614. Volg de link voor meer informatie over infrarood- en IR-sensorcircuits.
MLX90614 sensor is vervaardigd door Melexis Microelectronics Integrated Systems, het werkt volgens het principe van infrarood thermozuil sensor voor temperatuurmeting. Deze sensoren bestaan uit twee interne eenheden die de temperatuuroutput geven. De eerste eenheid is de sensoreenheid die een infrarooddetector heeft, gevolgd door de tweede eenheid die de berekening van de gegevens uitvoert met digitale signaalverwerking (DSP). Deze sensor werkt volgens de wet van Stefan-Boltzmann, die het vermogen dat wordt uitgestraald door een zwart lichaam verklaart in termen van zijn temperatuur. In eenvoudige bewoordingen zendt elk object IR-energie uit en de intensiteit daarvan is recht evenredig met de temperatuur van dat object. MLX90614-sensor zet de rekenwaarde om in 17-bits ADCen dat toegankelijk is via het I2C-communicatieprotocol. Deze sensoren meten zowel de omgevingstemperatuur als de objecttemperatuur met een resolutie-kalibratie van 0,02 ° C. Raadpleeg het MLX90614-gegevensblad voor meer informatie over de kenmerken van de MLX90614-sensor.
Eigenschappen van MLX90614:
- Bedrijfsspanning: 3,6V tot 5V
- Omgevingstemperatuurbereik: -40 ° C tot 125 ° C
- Objecttemperatuurbereik: -70 ° C tot -382,2 ° C
- Resolutie / kalibratie: 0,02 ° C
- 17-bits ADC.
- I2C-communicatie.
Koppeling MLX90614 met Raspberry Pi
Eerst zullen we de bibliotheek en pakketten downloaden die nodig zijn om de MLX90614 succesvol te koppelen.
Stap 1: De I2C van Raspberry Pi-instelling inschakelen.
Typ sudo raspi-config en ga naar interface-opties.
Ga naar de I2C-optie en schakel deze in.
Stap 2: Download het pakket / de bibliotheek van MLX90614 door naar https://pypi.org/project/PyMLX90614/#files te gaan, klik met de rechtermuisknop en kopieer het linkadres.
Ga naar de RPI-terminal en typ wget en plak de gekopieerde link zoals hieronder.
Wget
Het zal de bibliotheek downloaden in de zip-bestandsnaam 'PyMLX90614-0.0.3.tar.gz' . Pak vervolgens de map uit met de extensie tar -xf bestandsnaam of gebruik de onderstaande opdracht om hetzelfde te doen.
tar -xf PyMLX90614-0.0.3.tar.gz
Vervolgens moeten we enkele vereiste pakketten installeren met behulp van de onderstaande opdrachten.
sudo apt-get install python-setuptools sudo apt-get install -y i2c-tools
Ga vervolgens naar de uitgepakte map met cd PyMLX90614-0.0.3 / en voer de opdracht uit.
sudo python setup.py installeren
Als u klaar bent met het volgen van de stappen, koppelt u de MLX90614-sensor gewoon aan Raspberry pi met behulp van het onderstaande circuit. Het onderstaande Raspberry Pi MLX90614-circuit is ontworpen met behulp van fritzing.
Als de verbindingen en de installatie goed zijn gedaan, kunnen we controleren of we de sensoradreswaarde op de I2C-bus krijgen met behulp van het commando i2cdetect -y 1 .
Als alles werkt zoals verwacht, kunnen we de onderstaande uitvoer op onze terminal zien.
0x5A vertegenwoordigt het adres van de sensor zoals vermeld op het gegevensblad. Het datasheetfragment dat hetzelfde laat zien, wordt hieronder gegeven.
Nu gaan we een nieuwe bestandsnaam mlxread.py maken en een voorbeeldprogramma schrijven om de gegevens van de sensor te controleren. De code voor hetzelfde wordt hieronder gegeven.
van smbus2 importeer SMBus uit mlx90614 importeer MLX90614 bus = SMBus (1) sensor = MLX90614 (bus, adres = 0x5A) print "Omgevingstemperatuur:", sensor.get_ambient () print "Objecttemperatuur:", sensor.get_object_1 () bus. dichtbij()
Zodra het bestand is gemaakt, zullen we het uitvoeren met de python-extensie python mlxread.py. De output die ik heb ontvangen, wordt hieronder weergegeven. Ik heb het programma meerdere keren uitgevoerd om te controleren of de waarden veranderen als ik er met mijn hand overheen beweeg.
Woah, we hebben de MLX90614 met succes gekoppeld aan onze Raspberry Pi, zoals je kunt bevestigen aan de hand van de bovenstaande afbeelding.
Pi Camera-interface met Raspberry Pi
Stap 1: De camera inschakelen vanuit de Raspberry Pi-instelling.
Typ sudo raspi-config en ga naar interface-opties.
Ga naar Camera en schakel de camera in.
Sluit nu de cameramodule aan zoals hieronder weergegeven.
Stap 2: Om te controleren of de camera correct is aangesloten, maken we een testafbeelding en slaan we die op ons bureaublad op (we gebruiken de volledige GUI Raspbian OS-versie)
raspistill -o Desktop / image.jpg
Hierdoor kan uw camera op een foto met de naamafbeelding klikken en die op uw bureaublad opslaan.
SMTP-e-mail instellen met Raspberry Pi
In deze sectie zullen we begrijpen hoe we ons GMAIL-account kunnen instellen om waarschuwingsmails te verzenden zodra de temperatuur de vooraf gedefinieerde ingestelde waarde overschrijdt.
SMTP is een Simple Mail Transfer Protocol, een toepassingslaagprotocol dat verantwoordelijk is voor e-mailservice met behulp van TCP / IP. Het biedt de mogelijkheid om e-mailberichten te verzenden en te ontvangen en wordt beheerd door de Internet Engineering Task Force (IETF).
Deze tutorial werkt alleen met GMAIL-accounts en om mogelijke fouten te voorkomen, wordt het aanbevolen om een nieuw Gmail-account te gebruiken.
Google staat gebruikers standaard niet toe om e-mail te verzenden met behulp van python-script. Om dit te laten werken, moeten we enkele minder veilige apps inschakelen door naar de accountinstellingen te gaan.
Stap 1: Ga naar de rechterhoek en klik op Mijn Beheer uw Google-account.
Stap 2: Klik op Beveiliging en scrol omlaag naar "Minder veilige app-toegang".
Stap 3: Schakel de minder veilige app in.
Stap 4: Herhaal ook met de andere e-mail-ID om de e-mail van het python-script te verzenden / ontvangen.
Stap 5: Download de vereiste pakketten.
sudo apt-get install ssmtp sudo apt-get install mailutils
Als u een fout krijgt bij het uitvoeren van de opdracht door middel van kopiëren en plakken, typ deze dan handmatig.
Stap 6: Nadat de installatie van alle bibliotheken is voltooid, moeten we wijzigingen aanbrengen in het bestand ssmtp.conf waar we de e- mailgegevens van de afzender moeten invoeren
Ga naar sudo nano /etc/ssmtp/ssmtp.conf
Scroll naar het einde en plak dit, mailhub = smtp.gmail.com: 587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = JA UseTLS = JA
Ik heb ook een screenshot van mijn terminals gedeeld ter referentie.
Ik heb zojuist een breadboard gebruikt om mijn verbinding tot stand te brengen, mijn hardware-opstelling ziet eruit als die van hem wanneer de MLX90614 en camera zijn aangesloten.
Python-code voor Pi om temperatuur van MLX90614 te lezen en e-mail met afbeelding te verzenden
Het python-programma voert alle noodzakelijke bewerkingen uit om de sensorgegevens te lezen, deze te vergelijken met de drempelwaarde, de e-mail te autoriseren en vervolgens de e-mail met de bijgevoegde afbeelding te verzenden. In eerste instantie hebben we een e-mailverklaring van bibliotheken, afzender en ontvanger nodig. E-mail kan worden verzonden door smtplib, maar we willen alleen dat de e-mail wordt georganiseerd met een onderwerp, hoofdtekst en andere bijlage, dit wordt gedaan met behulp van Multipurpose Internet Mail Extensions (MIME). De volledige code vindt u onderaan deze pagina.
importeer RPi.GPIO als gpio importeer picamera importeer tijd importeer smtplib uit e-mail.MIMEMultipart importeer MIMEMultipart uit e-mail.MIMEText importeer MIMEBase uit e-mail.MIMEBase importeer MIMEBase uit e-mail importeer encoders uit e-mail.mime.image importeer MIMEImage uit smbus2 importeer SMBus uit mlx90614
Daarna definiëren we het e-mailadres van de afzender, het e-mailadres van de ontvanger, het onderwerp van de e-mail, de hoofdtekst en het bijlagebericht.
fromaddr = "[email protected]" # wijzig het e-mailadres dienovereenkomstig toaddr = "[email protected]" mail = MIMEMultipart () mail = fromaddr mail = toaddr mail = "Temperatuurwaarde overschrijdt alert" body = "Gelieve de bijgevoegde te vinden beeld"
Vervolgens maken we een functie waarmee we een e-mail kunnen verzenden.
def sendMail (data): mail.attach (MIMEText (body, 'plain')) print data dat = '% s.jpg'% data print dat attachment = open (dat, 'rb') image = MIMEImage (attachment.read ()) attachment.close () mail.attach (afbeelding) server = smtplib.SMTP ('smtp.gmail.com', 587) server.starttls () server.login (vanaddr, "test12345 @") tekst = mail. as_string () server.sendmail (fromaddr, toaddr, text) server.quit ()
Vervolgens maken we een functie om de afbeelding vast te leggen die via e-mail wordt verzonden en slaat de afbeelding ook op met gegevens en tijd.
def capture_image (): data = time.strftime ("% d_% b_% Y-% H:% M:% S") camera.start_preview () time.sleep (5) print data camera.capture ('% s. jpg '% data) camera.stop_preview () time.sleep (1) sendMail (data)
Vervolgens maken we enkele instellingen met PiCamera.
camera = picamera.PiCamera () camera.rotation = 0 camera.awb_mode = 'auto' camera.brightness = 55
En eindelijk hebben we een while (1) -lus die oneindig zal lopen. Het leest de gegevens van de MLX90614-temperatuursensor en als de temperatuur de ingestelde waarde overschrijdt, wordt de functie capture_image () aangeroepen die vervolgens de functie sendMail (data) aanroept om de beeldopname via e-mail te verzenden.
Temperatuur meten en e-mailwaarschuwing verzenden met PI
Als de hardware en software klaar zijn, voer je de python-code uit (geef hieronder) op je pi. Het zal de waarde van de temperatuur die van de sensor is afgelezen, afdrukken zoals hieronder weergegeven.
Als de objecttemperatuur de drempeltemperatuur overschrijdt, neemt ons python-programma een afbeelding van de camera, slaat deze op op raspberry pi en deelt deze ook via e-mail. Hieronder ziet u een voorbeeld van een e-mail die vanaf Raspberry Pi is verzonden.
De volledige werking van het project is ook te vinden in de onderstaande video. Ik hoop dat je het artikel leuk vond, als je vragen hebt, laat ze dan achter in de reacties hieronder of je kunt ook onze forums gebruiken om je vragen te stellen en in contact te komen met de community.