- Nødvendige materialer:
- Kretsdiagram:
- Raspberry Python-program:
- Kontrollerende lysdioder med Raspberry Pi og Telegram bot:
Telegram er et optimalt program for å kombinere med Raspberry Pi for alle våre mobile kontrollformål. Den har veldig god utviklerstøtte, og mange funksjoner planlegges utgitt snart for å forbedre ytelsen til Telegram Bots. I vår forrige opplæring lærte vi hvordan vi kan sette opp en telegram-bot for bringebær-pi, og lærte også å ta en prat med den og dele bilder, dokumenter og lydfiler.
Nå vil vi fortsette til neste trinn ved å lære hvordan vi kan kontrollere GPIO-pinnene på bringebærpinner ved hjelp av Telegram, slik at vi gir litt maskinvarestøtte for bot. I denne opplæringen kobler vi fire lysdioder til Raspberry Pi GPIO-pinner og bytter dem ved hjelp av naturlig språk (chatter som) fra Telegram. Høres interessant ut, ikke sant? La oss komme i gang.
Nødvendige materialer:
- Fire LED (hvilken som helst farge)
- Raspberry Pi (med internettforbindelse)
- Brettbrett
- Koble ledninger
Forutsetninger:
Før du fortsetter med opplæringen, må du sørge for at Raspberry Pi er koblet til internett og at du kan kjøre pythonprogrammer på Pi. Les også den forrige veiledningen for å vite hvordan du setter opp Telegram-bot med Raspberry Pi Pi, siden jeg vil anta at du er kjent med de tingene for å fortsette med prosjektet.
Hvis du er ny på Raspberry Pi, følg vår Raspberry Pi Introduksjonsartikkel og andre Raspberry Pi-veiledninger.
Kretsdiagram:
Kretsdiagrammet for å kontrollere lysdioder ved hjelp av Raspberry Pi og Telegram Android App er ikke mer enn fire lysdioder og noen tilkoblingsledninger. Vi trenger ikke de nåværende begrensningsmotstandene siden Raspberry Pi GPIO-pinnene fungerer på 3,3V TTL. Følg kretsen nedenfor og koble til LED-lampen.
Tabellen nedenfor hjelper deg med å bestemme pin-nummeret og GPIO-nummeret for tilkobling av fire lysdioder.
Led Terminal |
PIN-kode |
GPIO-nummer |
Grønn anode |
Pin 31 |
GPIO 6 |
Rød anode |
Pin 33 |
GPIO 13 |
Gul anode |
Pin 35 |
GPIO 19 |
Hvit anode |
Pinne 37 |
GPIO 26 |
Katode av alle fire |
Pin 39 |
Bakke |
Nedenfor er kretsskjemaet der fire lysdioder er koblet til i henhold til tabellen gitt ovenfor:
Når tilkoblingene dine er, bør maskinvaren din se ut som noe nedenfor.
Raspberry Python-program:
Når maskinvaren er klar, kan vi fortsette med Python-programmet. I dette programmet må vi lese dataene (meldingen) sendt fra Telegram-boten og slå lysdioden deretter. For å gjøre det mer naturlig, i stedet for å sjekke hver setning og hardkode kodingen i vårt program, kan vi se etter ord og fortsette deretter.
Så programmet vil først og fremst se etter to ord, de er av og på. Når en av disse to ordene er oppdaget, vil den se etter andre nøkkelord som hvitt, gult, grønt og rødt. Den respektive fargedioden vil bare skiftes hvis ordet oppdages. Vi vil også oppdatere en streng for de oppdagede ordene for å sende en melding tilbake til telegram bot.
Det komplette programmet finner du nederst på denne siden; rett nedenfor har jeg forklart programmet ved å bryte det inn i små meningsfulle klynger.
For at dette programmet skal fungere, trenger vi telepotten lastet ned og importert i vår Raspberry Pi. I vår forrige opplæring har vi allerede lastet ned teleporten i Raspberry Pi, så nå må vi bare importere den til programmet vårt sammen med GPIO-biblioteket som vist nedenfor.
importer RPi.GPIO som GPIO importer telepot fra telepot.loop importer MessageLoop
Vi vil kontrollere for LED-lys ved hjelp av dette programmet, og fargen på LED-ene vil være hvit, gul, rød og grønn. De er koblet til pinnene vist i kretsskjemaet; la oss definere pin-navnene for disse lysdiodene basert på fargen, slik at den brukes i programmet.
hvit = 26 gul = 19 rød = 13 grønn = 6
Det neste trinnet ville være å definere alle disse LED-pinnene som utgangspinner og definere dem som slått av som standard ved å bruke linjene nedenfor.
#LED White GPIO.setup (white, GPIO.OUT) GPIO.output (white, 0) # Off initial #LED Yellow GPIO.setup (yellow, GPIO.OUT) GPIO.output (yellow, 0) # Off initial #LED Rød GPIO.setup (rød, GPIO.OUT) GPIO.output (rød, 0) # Off i utgangspunktet #LED grønn GPIO.setup (green, GPIO.OUT) GPIO.output (green, 0) # Off initial
Som vi lærte i vår forrige opplæring, vil alle handlingene som må gjøres av Raspberry-bot bli definert inne i funksjonshandlingen. Her må vi lage boten til å lytte til meldingen som sendes fra mobilen, sammenligne den med noen nøkkelord og slå LED deretter.
For hver melding vi sender fra mobil, vil det være en chat-ID og kommando. Denne chat-ID-en kreves av programmet for å svare tilbake til avsenderen. Så vi lagrer chat-ID og, melding som vist nedenfor.
chat_id = msg kommando = msg
Nå, uansett hva vi sender fra telefonen vil bli lagret som streng i den variable kommando . Så alt vi trenger å gjøre er å se etter stikkord i denne variabelen. Python har en kommando som gjør ting enkelt her. For eksempel, hvis vi må sjekke om ordet "on" er tilstede i strengen lagret i kommandovariabel, kan vi ganske enkelt bruke linjen nedenfor.
hvis 'på' i kommandoen:
På samme måte sjekker vi for alle nøkkelord, når vi først får en "på", fortsetter vi med å sjekke hvilken farge brukeren har nevnt. Dette gjøres også av de samme kommandoene ved å sammenligne de samme nøkkelordene. Vi oppdaterer også en streng som heter melding som kan bli svarte tilbake til brukeren som en statusmelding.
hvis 'på' i kommando: melding = "Slått på" hvis 'hvit' i kommando: melding = melding + "hvit" GPIO.output (hvit, 1) hvis 'gul' i kommando: melding = melding + "gul" GPIO.utgang (gul, 1) hvis 'rød' i kommando: melding = melding + "rød" GPIO. utgang (rød, 1) hvis 'grønn' i kommando: melding = melding + "grønn" GPIO.utgang (grønn, 1) hvis 'all' i kommandoen: melding = melding + "alle" GPIO.output (hvit, 1) GPIO.output (gul, 1) GPIO.output (rød, 1) GPIO.output (grønn, 1) melding = melding + "lys (er)" telegram_bot.sendMessage (chat_id, melding)
Som vist ovenfor ser vi etter nøkkelord som 'grønn', 'hvit', 'rød', 'gul' og 'alt' og 'slått på' den spesielle lysdioden alene. Når jobben er fullført, sender vi en melding tilbake til brukeren om hva som nettopp skjedde. Den samme metoden kan brukes til å slå av lysene godt.
hvis 'av' i kommando: melding = "Slått av" hvis 'hvit' i kommando: melding = melding + "hvit" GPIO.output (hvit, 0) hvis 'gul' i kommando: melding = melding + "gul" GPIO.utgang (gul, 0) hvis 'rød' i kommando: melding = melding + "rød" GPIO. utgang (rød, 0) hvis 'grønn' i kommando: melding = melding + "grønn" GPIO.utgang (grønn, 0) hvis 'all' i kommandoen: melding = melding + "alle" GPIO.output (hvit, 0) GPIO.output (gul, 0) GPIO.output (rød, 0) GPIO.output (grønn, 0) melding = melding + "lys (er)" telegram_bot.sendMessage (chat_id, melding)
Kontrollerende lysdioder med Raspberry Pi og Telegram bot:
Koble lysdiodene dine og start programmet på python. Forsikre deg om at du har endret Token-adressen til boten din. Og begynn å skrive inn kommandoene du ønsker. For eksempel for å slå på det røde og gule lyset kan du bruke en av følgende kommandoer.
1.Slå på rødt og gult lys
2.Slå på rød og gul farge til høyre
3. På rødt og gult
4.Please satt på den gule og røde lys
Som du kan se, ser bot bare etter nøkkelordene og vil ignorere de andre ordene i setningen, på denne måten kan du snakke med det naturlig. Fullstendig bearbeiding av prosjektet finner du i videoen som er gitt på slutten av denne siden.
Gå videre! lek med prosjektet ditt og ha det gøy. Du kan ta det til et helt nytt nivå nå. Med begge opplæringen kombinert har vi makten til å kontrollere hvilken som helst maskinvare fra smarttelefonen hvor som helst fra hele verden, og også få innganger / resultater fra vår Raspberry Pi i form av melding, lyd, bilde og til og med som dokument. Hvis du bytter ut lysdiodene med releer og AC-apparater, kan det være en smarttelefonstyrt hjemmeautomatisering. Så bruk kreativiteten din og bygg dine egne kule prosjekter…
Håper du likte prosjektet og likte å bygge noe lignende. Gi meg beskjed hvis du har problemer gjennom kommentarseksjonen, og jeg hjelper deg gjerne. Del også den kule ideen din med meg, og la oss se hva vi kan bygge.