Innehållsförteckning:

Beargardian: 5 steg
Beargardian: 5 steg

Video: Beargardian: 5 steg

Video: Beargardian: 5 steg
Video: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, November
Anonim
Beargardian
Beargardian

Hej killar till skolan jag behövde en idé för ett projekt. Så jag tänkte, det måste vara ett projekt med hallon pi och det är lokalt. Plötsligt fick jag en bra idé och fråga mig inte hur jag får den idén men jag tänkte på en uppgradering för en babyvakt. Tänk bara en sekund på den idén, de flesta babyvakterna har bara funktionen att lyssna på barnets rum.

Funktionerna

  • En liten ljusshow med justerbara färger
  • En kamera som visar levande bilder
  • En högtalare för att spela musik
  • Sensorer för att fånga bebisens rörelse
  • Allt som visas på en webbplats

Kort information

Låt mig förklara detta i en kort version. Så vi behöver en webbplats och för det här projektet använder jag Flask, vi behöver också en databas och jag använder mysql, också ett skript som kör hårdvaran och det här är med python (3) och som sista behöver vi en serverinställning det skulle vara nginx på PI.

Vad behöver vi

  • Raspberry Pi 3
  • Stegmotorn 28BYJ
  • Stegmotor förarchip ULN2003 stegmodul
  • En rgb -ledning med 3 motstånd 330Ohm
  • Pi NoIR -kameran V2
  • Ultraljudssensorn HC-SR04
  • Mikromodulen från ardiuno
  • MAX98357A
  • En högtalare 8Ohm
  • Och glöm inte att köpa en björn

Konfigurera hallon pi ----------------------------------------------- ---------------------------------------------------------- --------------------------

Först måste vi konfigurera Pi. Börja redan med att logga in via kitt, om du inte har kitt rekommenderar jag att du laddar ner det här, helt enkelt skriver du in din statiska ip av Pi med ssh och du fortsätter med det. Om du måste installera din Raspberry Pi fick jag dåliga nyheter, jag förklarar inte detta i det här projektet.

Installera paket

sudo apt uppdatering

sudo apt installera -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Virtuell miljö

python3 -m pip install -uppgradera pip setuptools hjul virtualenv

mkdir {ditt projektmappnamn} && cd {ditt projektmappnamn} python3 -m venv --system-site-packages env source env/bin/aktivera python -m pip installera mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-connector-python passlib

Nu måste du klona git -förvaret i din projektmapp

github.com/NMCT-S2-Project-I/Project-I.git

Om du tittar i din projektmapp måste du se 5 mappar

  • konf
  • env
  • sensor
  • kvm
  • webb

Databas

sudo systemctl status mysql

ss -lt | grep mysql sudo mysql

skapa en användare i databasen med alla privilegier och skapa din databas

skapa användarens 'användare'@'localhost' identifierad med 'lösenord';

skapa databas ditt databasnamn; bevilja alla privilegier på ditt databasnamn.* till 'användare'@'localhost' med alternativ för bidrag;

Conf -filer för servern

I uwsgi-flask.ini ändrar du 'module = …' till 'module = web: app' och sökvägen till din virtualenv som du skapade. I de andra filerna måste du ändra sökvägarna till de faktiska absoluta sökvägarna i din katalog.

När du väl kommit på det kan du ställa in filerna på rätt plats.

sudo cp conf/project1-*. service/etc/systemd/system/

sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*

nu måste vi ställa detta tillgängligt

sudo cp conf/nginx/etc/nginx/sites-available/project1

sudo rm/etc/nginx/sites-enabled/default sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1 sudo systemctl restart nginx.service sudo nginx -t

Om allt gick bra borde du ha hej världen med det här kommandot

wget -qO - lokal värd

Gjort ! Tja, det är för den delen att låta köra ditt system …

Steg 1: Anslut hårdvaran till Pi

Koppla hårdvaran till Pi
Koppla hårdvaran till Pi

med BCM

ljud MAX98357A

  • BCK till GPIO 18
  • Data till GPIO 21
  • LRCK till GPIO 19

ljus

  • röd till GPIO 17
  • grön till GPIO 27
  • blå till GPIO 22

motormodul ULN2003

  • stift 1 till GPIO 5
  • stift 2 till GPIO 6
  • stift 3 till GPIO 13
  • stift 4 till GPIO 26

mikro

D0 till GPIO 21

ultraljudssensor

  • trig till GPIO 16
  • eko till GPIO 20

Steg 2: Kodning av huvudprogrammen

Jag går inte in på detaljer här men du kan checka ut min kod i github.

Till att börja med gjorde jag min html och css, ett index, inloggning, register, startskärm, musik, addmusic, addbear, ljus, kamera, kamerainställningar, sensor, instrumentpanelsida. HTML -filerna måste finnas i mallarna och css -filerna i static/css -mappen. Du kan helt anpassa css som du vill.

Om du gjort den här delen måste du ställa in din kolv. Kolven är lätt att använda bara ett exempel på hejvärlden

# importkolv först

från kolvimport * @app.route ('/') def index (): return render_template ('index.html')

Nu i min kod är detta redan fyllt i, det enda du behöver göra är att ändra databasanvändaren och lösenordet till det från dig och naturligtvis göra samma databas som du också kan hitta i github.

Steg 3: Skapa databasen

Skapa databasen
Skapa databasen

För de riktiga fansen ska jag berätta hur du skapar samma databas.

Så först måste vi skapa databasen om du inte gjorde det i steg ett.

skapa databas beargardian;

När du väl gjort detta skapar du tabellerna i mysql workbench eller phpadmin

användartabell har

  • användar ID
  • förnamn
  • efternamn
  • e-post
  • barnnamn
  • lösenord med sha1
  • användarmapp
  • playmusic (int)
  • playlight (int)
  • spela in (int)

musikbord har

  • musikID
  • låt
  • väg
  • användarmapp
  • status
  • volym

inspelningsbord har

  • inspelnings -ID
  • väg
  • användarmapp
  • tid
  • dag

färgtabell har

  • colorID
  • röd
  • grön
  • blå
  • ljusstyrka
  • användar ID

björnbord har

  • bearID (decimal (8))
  • userID default null
  • björnamn

sensorbord har

  • sensorID
  • distans
  • mikro
  • bearID
  • tid
  • dag
  • sovdags

Så nu har du skapat databasen framgångsrikt, låt oss gå till hårdvaran.

Steg 4: Maskinvarukodning

Jag ska visa lite kod och berätta varför jag gjorde det på det sättet.

Till att börja med använde jag trådning, vilket absolut måste är i detta projekt. Vad är tråden, hmmm bra fråga! Väl hotande i python är att köra flera program samtidigt. Så om du till exempel ändrar färg kan du också spela in. Det är lätt att använda oroa dig inte.

import _threaddef function_name (något, something_else): kod som ska köras

_thread.start_new_thread (function_name, tuple_with_the_functions_variables)

Om du tittade på mitt program såg du logger.info ('…'). Detta är utskriftsfunktionen men mycket bättre, för på Pi kan du inte skriva ut saker så jag gör en fil och skriver ut den där. Yoe kan ställa in loggfilen med denna kod.

logger = logging.getLogger (_ namn _) logger.setLevel (logging. INFO) # skapa en filhanterare = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# skapa ett loggningsformat

formatter = logging. Formatter (' %(asctime) s - %(name) s - %(message) s') handler.setFormatter (formatter)

# lägg till hanterarna i loggaren

logger.addHandler (hanterare)

logger.info ('starta hårdvara / n ---------------------------------------')

vidare i själva koden förklarar jag allt.

Rekommenderad: