Tweeting hamster bur (6 / 7 steg)
Steg 6: Raspberry Pi (koden)
Vi får nära nu, din hamster är nästan redo att komma in i sociala medier. Vi har sensorer, servon och kameror alla redo, vi behöver bara koppla in dem till Raspberry Pi och berätta för dem vad de ska göra. Jag har gått tillbaka genom alla filer är involverade i projektet och fyllt dem med kommentarer förklarar vad varje del av koden gör för någon av er som är intresserade.
Det finns en hel del kod krävs för att göra detta projekt fungerar, så jag har lagt det i en databas (repo) på GitHub. Du kan installera kommandoradsverktyget för GitHub (kallas git) på din pi genom att köra kommandot:
sudo lämplig-få installera git
Vi kan nu använda git för att klona repo på pi (i princip vi ska ladda ner alla filer på pi och vilken rätt mappstruktur att göra dem alla (se bilden ovan)). Följande kommandon bör få dig ställa in:
# cd till arbetskatalogen
CD ~ /
# klon repo
git clone git
Du bör nu ha alla koden du behöver. Vi behöver bara kolla ett par variabler är korrekta och Ställ upp åtkomsttoken för din Twitter bots.
Ställa in twitter åtkomst-token
Vi kommer att behöva spjällådan en ny katalog i projektet
mkdir ~/IsMartinRunning/.secrets
Skapar prefix katalognamnet med en prick gör det dolda (du kommer inte att kunna se den med "ls" måste du använda "ls - en"). Göra två filer (en för varje din Twitter bots) inne i denna katalog:
CD ~/IsMartinRuning/.secrets
Touch martinBot.access mentions.access
Nu i var och en av dessa filer behöver vi sätta autentiseringsuppgifter för en av Twitter robotar. Med de fyra första textraderna av filen skriver:
- Konsument-nyckeln
- Konsumenten hemligheten
- Åtkomst-token
- Tillgång token hemligheten
Du hittar dessa värden genom att gå till apps.twitter.com och gå till fliken "Nycklar och åtkomst-token" för din bot. Vi gör detta av säkerhetsskäl, det är helt möjligt att bara skriva dessa nycklar i skript sig, men sedan om du är värd dem i en offentlig reporäntan (som jag gör) alla har plötsligt tillgång till din twitter bots (vilket inte är önskvärt).
Nu låt oss gå igenom filerna, titta på vad de gör och om de behöver anpassa.
MartinBot/MartinBot.py
Detta är ett Python-skript som tar data från hjulet sensor dween som ett argument. Det tar en bild med webbkameran, kontrollerar huruvida detta nya kör slår någon av de tidigare personliga rekord, konstruerar en lämplig tweet och använder python biblioteket Twython för att skicka den.
Denna filen behöver lite arbete. Först och främst måste vi installera Twython biblioteket. Detta kan göras med hjälp av python paketet manager pip. Så egentligen det första vi måste du installera pip :)
# installera pip
sudo lämplig-få installera python-pip
# installera Twython med pip
sudo pip installera twython
Nästa måste vi du kontrollera att filsökvägar är korrekta. Linje 27, 40, 60 och 65 har sökvägar som måste vara korrekt för din pi (dvs du kan behöva ändra användarnamnet i sökvägen).
Slutligen behöver vi se till den seriella porten för webbkameran är korrekt (linje 24'/dev/video0"). Du kan kontrollera detta genom att dra ut WebCamen från pi, kör kommandot:
LS/dev
Sedan ansluta webbkameran tillbaka i och kör kommandot igen. Denna gången en ny port ska dyka upp och det är den du vill ha. Vi kommer att använda denna samma teknik till check Arduinos hamnar alltför.
MartinBot/image.png
Detta är den bild som webbkameran tar, redo för att laddas upp till Twitter.
MartinBot/personal_bests
Filen innehåller de högsta registrerade värdena för genomsnittliga hastighet och avstånd. Det används och uppdateras av skriptet MartinBot.py för nya poster.
MartinBot/wheel_listener.sh
Detta är ett Bash script som kommer loopas kontinuerligt lyssna på hjulet avkänning dween för alla uppgifter om en ny körning. När det blir uppgifterna kommer det kör skriptet MartinBot.py passerar i data för att använda.
Den seriella porten på linje 15 ("/dev/ttyACM0") måste anges till vilken port din hjul sensor dween är på (precis som webbkamera).
Sökvägen till filen på rad 19 måste vara korrekt.
circuit_diagrams / *
Detta är elscheman för dweens som de .fzz filerna används för att skapa dem med ett program som heter Fritzing (det är mycket användbart).
Dessa används inte faktiskt så du inte behöver oroa dem. Jag skulle bara vilja hålla allt det här tillsammans på GitHub.
get_mentions/get_mentions.py
Detta Python skript är mer komplex än den förra. Det träffar upp Twitter API söker alla tweets som nämner "@IsMartinRunning" (din kommer att automatiskt söka efter Twitter handtag oavsett konto äger twitter bot). Sedan kontrollerar den om dessa är nyare än den senaste det besvarade, dessa nya tweets sedan få sökte för sökord som "väder", "temperatur" och "behandla". Om något av dessa ord finns en svar tweet behöver skapas. Om de nämnde någon temperatur luftfuktighet sökord, signal skriptet en till den hdt_with_servo dween ber för temperatur/luftfuktighet data, om tweet innehöll nyckelordet behandla, skriptet sänder en signal till dween säga till den att aktivera behandla dispenser servo. Skriptet sedan kommer upp med ett lämpligt svar, tweets det och uppdaterar sedan den senaste svarade för att tweet.
Variabeln "serial_path" på linje 55 måste hänvisa till rätt seriell port för hdt_with_servo dween.
Filsökvägarna på linje 58, 92 och 145 måste vara korrekt.
get_mentions/mention_listener.sh
Denna Bash-script körs skriptet get_mentions.py varje minut (detta är så ofta som Twitter API tillåter).
Den fie sökväg på linje 13 måste vara korrekt.
get_mentions/most_recent
Den här filen innehåller tweet-id för den senaste tweeten som besvarade av skriptet get_mentions.py . Detta är så vi bara svara på tweets en gång.
skisser / ** / *
Dessa filer är Arduino skisser behövs för att göra sensorer och servon fungerar.
Phew, vet jag det är mycket att tänka på alla på en gång, men vi bör göras nu. Nästa låt oss få dessa skript körs.