- Необходими материали:
- Електрическа схема:
- Програма Raspberry Python:
- Управление на светодиоди с Raspberry Pi и Telegram bot:
Telegram е оптимално приложение за комбиниране с Raspberry Pi за всички наши цели за мобилно управление. Той има много добра поддръжка за разработчици и много функции се планират да бъдат пуснати скоро, за да подобрят работата на Telegram Bots. В нашия предишен урок научихме как можем да настроим телеграм бот за малинов пи и също така се научихме да разговаряме с него и да споделяме изображения, документи и аудио файлове.
Сега ще преминем към следващата стъпка, като научим как можем да контролираме GPIO щифтовете на Raspberry Pins с помощта на Telegram, така че да осигурим хардуерна поддръжка за нашия бот. В този урок ще свържем четири светодиода към пиновете на Raspberry Pi GPIO и ще ги превключваме с помощта на естествен език (в чата като) от Telegram. Звучи интересно нали? Нека започнем.
Необходими материали:
- Четири светодиода (всеки цвят)
- Raspberry Pi (с интернет връзка)
- Макет
- Свързващи проводници
Предварителни условия:
Преди да продължите с урока, уверете се, че вашият Raspberry Pi е свързан с интернет и можете да стартирате програми на python на вашия Pi. Прочетете и предишния урок, за да знаете как да настроите бот на Telegram с Raspberry Pi Pi, тъй като предполагам, че сте запознати с тези неща, за да продължите с проекта.
Ако сте нов в Raspberry Pi, следвайте нашата статия за въвеждане на Raspberry Pi и други уроци за Raspberry Pi.
Електрическа схема:
Схемата на веригата за управление на светодиоди с помощта на Raspberry Pi и Telegram Android App не е нищо повече от четири светодиода и някои свързващи проводници. Няма да имаме нужда от текущите ограничителни резистори, тъй като пиновете Raspberry Pi GPIO работят на 3.3V TTL. Следвайте схемата по-долу и свържете вашия светодиод.
Следващата таблица ще ви помогне да определите номера на пина и GPIO номера за свързване на четири светодиода.
Led терминал |
ПИН номер |
GPIO номер |
Зелен анод |
ПИН 31 |
GPIO 6 |
Червен анод |
ПИН 33 |
GPIO 13 |
Жълт анод |
ПИН 35 |
GPIO 19 |
Бял анод |
ПИН 37 |
GPIO 26 |
Катод и на четирите |
ПИН 39 |
Земя |
По-долу е схемата на схемата, в която са свързани четири светодиода съгласно таблицата, дадена по-горе:
След като свържете вашата хардуерна настройка, трябва да изглежда по следния начин.
Програма Raspberry Python:
След като хардуерът е готов, можем да продължим с програмата Python. В тази програма трябва да прочетем данните (съобщението), изпратени от бота на Telegram, и да превключим съответно светодиода. За да бъде по-естествено, вместо да проверяваме всяко изречение и да кодираме твърдо тези изречения в нашата програма, можем да проверим за думи и да продължим съответно.
Така че програмата ще проверява предимно за две думи, те са включени и изключени. След като открие някоя от тези две думи, тя ще търси други ключови думи като бяло, жълто, зелено и червено. Съответният цветен светодиод ще се превключва само ако думата бъде открита. Също така ще актуализираме низ за откритите думи, за да изпратим съобщение обратно до телеграм бот.
Най- пълната програма може да се намери в дъното на тази страница; малко по-долу обясних програмата, като я разбих на малки смислени боклуци.
За да работи тази програма, се нуждаем от телепот, изтеглен и импортиран в нашата Raspberry Pi. В предишния ни урок вече изтеглихме телепорта в нашата Raspberry Pi, така че сега просто трябва да го импортираме в нашата програма заедно с библиотеката GPIO, както е показано по-долу.
импортиране на RPi.GPIO като GPIO импортиране на телепот от telepot.loop import MessageLoop
Ще контролираме LED светлините, използвайки тази програма и цветът на светодиодите ще бъде бял, жълт, червен и зелен. Те са свързани към щифтовете, показани на електрическата схема; нека дефинираме имената на щифтовете за тези светодиоди въз основа на техния цвят, така че да ги използваме в програмата.
бяло = 26 жълто = 19 червено = 13 зелено = 6
Следващата стъпка ще бъде да дефинирате всички тези LED щифтове като изходни щифтове и да ги дефинирате като изключени по подразбиране, като използвате долните редове.
#LED Бял GPIO.setup (бял, GPIO.OUT) GPIO.output (бял, 0) # Изключен първоначално #LED Жълт GPIO.setup (жълт, GPIO.OUT) GPIO.output (жълт, 0) # Изключен първоначално #LED Червен GPIO.setup (червен, GPIO.OUT) GPIO.output (червен, 0) # Off първоначално #LED зелен GPIO.setup (зелен, GPIO.OUT) GPIO.output (зелен, 0) # Off първоначално
Както разбрахме в нашия предишен урок, всички действия, които трябва да се извършат от бота на Raspberry, ще бъдат дефинирани във функцията. Тук трябва да накараме бота да прослушва съобщението, изпратено от мобилен телефон, да го сравним с някои ключови думи и да превключваме LED съответно.
За всяко съобщение, което изпращаме от мобилно устройство, ще има идентификатор за чат и команда. Този идентификатор на чата се изисква от програмата, за да отговори обратно на подателя. Така че запазваме идентификатора на чата и съобщението, както е показано по-долу.
chat_id = msg команда = msg
Сега, каквото изпратим от телефона, ще бъде записано като низ в командата на променливата. И така, всичко, което трябва да направим, е да проверим за ключови думи в тази променлива. Python има команда да улесни нещата тук. Например, ако трябва да проверим дали думата „on“ присъства в низа, съхраняван в командната променлива, можем просто да използваме долния ред.
ако 'on' в командата:
По същия начин проверяваме за всички ключови думи, след като получим „включено“, продължаваме да проверяваме за кой цвят е споменал потребителят. Това се прави и от същите команди чрез сравняване на едни и същи ключови думи. Също така актуализираме низ с име на съобщение, на което може да се отговори на потребителя като съобщение за състояние.
ако 'включено' в командата: съобщение = "включено", ако "бяло" в командата: съобщение = съобщение + "бяло" GPIO. изход (бяло, 1) ако "жълто" в команда: съобщение = съобщение + "жълто" GPIO.output (жълт, 1) ако 'червен' в команда: съобщение = съобщение + "червен" GPIO.output (червен, 1) ако 'зелен' в команда: съобщение = съобщение + "зелен" GPIO.output (зелен, 1) ако 'всички' в команда: съобщение = съобщение + "всички" GPIO.output (бяло, 1) GPIO.output (жълто, 1) GPIO.output (червено, 1) GPIO.output (зелено, 1) съобщение = съобщение + "светлина (и)" telegram_bot.sendMessage (chat_id, съобщение)
Както е показано по-горе, търсим ключови думи като „зелен“, „бял“, „червен“, „жълт“ и „всички“ и „Включен“ само този конкретен светодиод. След като работата приключи, ние изпращаме съобщение до потребителя за това, което току-що се е случило. В същия метод може да се използва за изключване на осветлението от добре.
ако 'изключено' в команда: съобщение = "Изключено", ако "бяло" в команда: съобщение = съобщение + "бяло" GPIO. изход (бяло, 0) ако е "жълто" в команда: съобщение = съобщение + "жълто" GPIO.output (жълт, 0), ако е "червен" в команда: съобщение = съобщение + "червен" GPIO. изход (червен, 0), ако е "зелен" в команда: съобщение = съобщение + "зелен" GPIO.output (зелен, 0) ако 'all' в команда: message = message + "all" GPIO.output (бяло, 0) GPIO.output (жълто, 0) GPIO.output (червено, 0) GPIO.output (зелено, 0) съобщение = съобщение + "светлина (и)" telegram_bot.sendMessage (chat_id, съобщение)
Управление на светодиоди с Raspberry Pi и Telegram bot:
Свържете своите светодиоди и стартирайте програмата си на python. Уверете се, че сте сменили адреса на токена за вашия бот. И започнете да пишете в командите, които желаете. Например, за да включите червената и жълтата светлина, можете да използвате някоя от следните команди.
1. Включете червената и жълтата светлина
2. Включете червения и жълтия цвят вдясно
3. На червено и жълто
4.Please постави върху по жълт и червен светлината
Както можете да видите, ботът търси само ключовите думи и ще игнорира останалите думи в изречението, по този начин можете да говорите с него по естествен начин. Цялостната работа на проекта може да бъде намерена във видеото, дадено в края на тази страница.
Продължавай! играйте с вашия проект и се забавлявайте. Вече можете да го изведете на съвсем ново ниво. И с двата урока, комбинирани, ние имаме силата да контролираме всеки хардуер от нашия смартфон навсякъде по света и също така да получаваме входове / резултати от нашия Raspberry Pi под формата на съобщение, аудио, изображение и дори като документ. Ако замените светодиодите с релета и променливотокови уреди, това може да е домашна автоматизация, контролирана от смартфон. Така че, използвайте креативността си и изградете свои собствени страхотни проекти…
Надявам се, че проектът ви е харесал и ви е харесало да изградите нещо подобно. Уведомете ме, ако имате някакви проблеми чрез раздела за коментари и ще се радвам да ви помогна. Също така споделете вашата готина идея с мен и ни дайте да видим какво можем да изградим.