- PVSM.RU - https://www.pvsm.ru -

Мы уже писали о том, как сделать умный термостат [1], чтобы отапливать дом, и рассказывали, как, потратив всего 5 долларов, из подручных материалов собрать спектрометр [2]. Сегодня мы делимся переводом статьи о превращении простой кофеварки в устройство, которое может включаться и выключаться по заданным вами условиям. Все перечисленные приборы работают при помощи Python, а у нас скоро стартует курс по Fullstack-разработке [3] на этом языке. Подробности преображения кофеварки читайте под катом.
Вам нравится идея приготовления кофе на ходу? Из своей постели? Пока вы едете в автобусе домой? Тогда Tweet-a-pot для вас. Tweet-a-pot — это устройство с поддержкой Twitter. Эта кофеварка при помощи Twitter и платы Arduino позволяет владельцу приготовить кофе из любого места, где есть сотовая связь.
Tweet-a-pot — простая реализация удалённого управления устройством. Немного программирования, кое-какое оборудование — и вы получите кофеварку с поддержкой Twitter. Посмотрите короткое видео, за него отдельное спасибо Sam [4]:

Вам понадобятся:
1. Реле Power Switch Tail [5] с проводами без оплётки — это интерфейс к переменному току высокого напряжения.
2. Любая плата Arduino.
3. Компьютер с Python и Arduino IDE.
4. Капельная кофеварка.

Arduino и Twitter будут общаться через Python. Библиотека, позволяющая работать с API Twitter, называется python-twitter [6]. После установки [7]Python установите библиотеку python-twitter и все её зависимости. Если возникнут проблемы, просто обратитесь к документации python-twitter. Затем установите Arduino IDE [8], чтобы запрограммировать Arduino и иметь возможность взаимодействия через последовательный порт. После настройки и проверки работы нужно получить данные учётной записи Twitter.

Раньше взаимодействие с Twitter было простым, в код достаточно было ввести имя и пароль, всё работало. Теперь Twitter серьёзнее относится к информации о пользователях, аутентификация работает через OAuth, то есть нужно зарегистрировать своё приложение в Twitter и получить ключ API. Создайте для проекта отдельный аккаунт. Затем зайдите на dev.twitter.com и зарегистрируйте своё приложение, это позволит вам получить:
токен доступа;
секрет токена доступа;
ключ клиента;
секрет клиента.
Все эти ключи будут необходимы для взаимодействия с API Twitter.

Код в основном работает с python-twitter, запрашивая у Twitter статусы пользователя x, затем берёт последний статус и ищет тег #driptwit. Если строка #driptwitstop найдена, в последовательный порт (и в Arduino) Python посылает значение ASCII 1, а если не найдена, то 0. Сообщения проверяются каждые 15 секунд. Как вы видите, в коде ниже вводятся полученные от Twitter ключи:
#******************************************#
# Tweet-a-Pot by Gregg Horton 2011 #
# Please email changes or #
# updates to greggawatt@instructables.com #
# so i can keep it updated #
# *****************************************#
##Import Libraries
import twitter
import serial
import time
##authenticate yourself with twitter
api = twitter.Api(consumer_key='your key here', consumer_secret='your key here', access_token_key='your key here', access_token_secret='your here here')
##set to your serial port
ser = serial.Serial('/dev/ttyUSB0', 19200)
## check serial port
def checkokay():
ser.flushInput()
time.sleep(3)
line=ser.readline()
time.sleep(3)
if line == ' ':
line=ser.readline()
print 'here'
## Welcome message
print 'Welcome To Drip Twit!'
def driptwit():
status = []
x = 0
status = api.GetUserTimeline('yourusername') ##grab latest statuses
checkIt = [s.text for s in status] ##put status in an array
drip = checkIt[0].split() ##split first tweet into words
## check for match and write to serial if match
if drip[0] == '#driptwit':
print 'Tweet Recieved, Making Coffee'
ser.write('1')
elif drip[0] == '#driptwitstop': ##break if done
ser.write('0')
print 'stopped, awaiting instructions.'
else:
ser.write('0')
print 'Awaiting Tweet'
while 1:
driptwit() ## call driptwit function
time.sleep(15) ## sleep for 15 seconds to avoid rate limiting
Единственная связь между кодом на Python и кодом в Arduino — это одно значение, подаваемое через последовательный порт. Python отправляет его в ASCII, поэтому Arduino интерпретирует его как битовое число, в нашем случае 1 на Python означает 49 в Arduino. Я не знал, как заставить Python посылать в порт байты, поэтому просто изменил код Arduino так, чтобы он реагировал на нужное значение:
/*
Tweet-a-pot Gregg Horton 2011
Please email changes to greggawatt@instructables.com so i
can improve this code!
Enables blinking/relay control over twitter, using python code
Based off of Blink and Serial demo code
*/
int relayPin = 13; // LED connected to digital pin 13
int incomingByte = 0; //declare incoming byte
// The setup() method runs once, when the sketch starts
void setup() {
// initialize the digital pin as an output:
pinMode(relayPin, OUTPUT);
Serial.begin(19200); // set up Serial library at 19200 bps
Serial.println("Arduino is ready!");
}
// the loop() method runs over and over again,
// as long as the Arduino has power
void loop() {
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
Serial.println(incomingByte);
if (incomingByte == 49) {
digitalWrite(relayPin, HIGH);
} else {
digitalWrite(relayPin, LOW);
}
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}

Установка довольно проста: напряжение управляется через Power Switch Tail, позволяющее подключить два провода, один — к земле, другой — к управляющему контакту, чтобы включать и выключать реле.
Как видно из кода, всё, что вам нужно, — условный оператор установки высокого и низкого напряжений. Подключите Arduino к компьютеру и убедитесь, что последовательный порт установлен, подключите выводы Power Switch Tail к контакту 13 и к земле. После соедините кофеварку и реле, а затем включите реле в обычную розетку. Это просто! Увлёкшись, не забудьте о кофе и воде в самой кофеварке.






Я провёл много испытаний, прежде чем подключить всё к настоящей кофеварке (и даже после этого обнаружил несколько ошибок), но, как только вы заставите устройство работать, настанет время готовить кофе. Наполните кофеварку водой и кофе, с вашего отдельного аккаунта отправьте сообщение в Твиттер. Если в сообщении есть слово #driptwit, кофеварка запустится, а если в нём #driptwitstop или что-то другое, кофеварка выключится. Как только кофе будет готов, снова отправьте сообщение, чтобы выключить устройство, — и насладитесь чашкой горячего твит-кофе.

Этот проект будет работать с любым устройством переменного тока, которым захочется управлять дистанционно. Включать свет или открывать ворота по тому же принципу — не проблема. Значительным улучшением проекта была бы интеграция с кабельным интернетом, чтобы не занимать отдельный компьютер. Особую благодарность хочу выразить команде разработчиков python-twitter, без них проект оказался бы намного сложнее.
Конечно, кофе ассоциируется прежде всего с Java, курс по разработке [9] на котором у нас тоже есть, но если вы хотите чувствовать себя ближе к железу, управлять им, писать производительный код, то вы можете обратить внимание на наш курс по разработке на C++ [10], если же нравится лаконичный Python, то присмотритесь к программе курса Fullstack-разработчик на Python [3]. А за кружкой кофе можно заниматься аналитикой данных [11] или узнать [12], как начать карьеру или прокачаться в других направлениях:

Python, веб-разработка
Data Science и Machine Learning
Мобильная разработка
Java и C#
От основ — в глубину
А также:
Курс по DevOps [29]
Автор:
KD637
Источник [30]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/366627
Ссылки в тексте:
[1] умный термостат: https://habr.com/ru/company/skillfactory/blog/569712/
[2] спектрометр: https://habr.com/ru/company/skillfactory/blog/566194/
[3] Fullstack-разработке: https://skillfactory.ru/python-fullstack-web-developer?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_FPW&utm_term=regular&utm_content=310721
[4] Sam: https://www.instructables.com/member/calischs/
[5] Power Switch Tail: http://powerswitchtail.com/default.aspx
[6] python-twitter: http://code.google.com/p/Python-twitter/
[7] установки : http://www.google.com/search?client=ubuntu&channel=fs&q=how+to+install+Python&ie=utf-8&oe=utf-8
[8] Arduino IDE: http://www.arduino.cc/en/Main/Software
[9] курс по разработке: https://skillfactory.ru/java?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_JAVA&utm_term=regular&utm_content=310721
[10] разработке на C++: https://skillfactory.ru/cplus?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_CPLUS&utm_term=regular&utm_content=310721
[11] аналитикой данных: https://skillfactory.ru/dataanalystpro?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_DAPR&utm_term=regular&utm_content=310721
[12] узнать: https://skillfactory.ru/dstpro?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_CDEV&utm_term=regular&utm_content=310721
[13] Курс «Python для веб-разработки»: https://skillfactory.ru/python-for-web-developers?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_PWS&utm_term=regular&utm_content=310721
[14] Профессия Frontend-разработчик: https://skillfactory.ru/frontend?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_FR&utm_term=regular&utm_content=310721
[15] Профессия Веб-разработчик: https://skillfactory.ru/webdev?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_WEBDEV&utm_term=regular&utm_content=310721
[16] Профессия Data Scientist: https://skillfactory.ru/dstpro?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_DSPR&utm_term=regular&utm_content=310721
[17] Курс «Математика для Data Science»: https://skillfactory.ru/math-stat-for-ds#syllabus?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_MAT&utm_term=regular&utm_content=310721
[18] Курс «Математика и Machine Learning для Data Science»: https://skillfactory.ru/math_and_ml?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_MATML&utm_term=regular&utm_content=310721
[19] Курс по Data Engineering: https://skillfactory.ru/dataengineer?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_DEA&utm_term=regular&utm_content=310721
[20] Курс «Machine Learning и Deep Learning»: https://skillfactory.ru/ml-and-dl?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_MLDL&utm_term=regular&utm_content=310721
[21] Курс по Machine Learning: https://skillfactory.ru/ml-programma-machine-learning-online?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_ML&utm_term=regular&utm_content=310721
[22] Профессия iOS-разработчик: https://skillfactory.ru/iosdev?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_IOSDEV&utm_term=regular&utm_content=310721
[23] Профессия Android-разработчик: https://skillfactory.ru/android?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_ANDR&utm_term=regular&utm_content=310721
[24] Профессия QA-инженер на JAVA: https://skillfactory.ru/java-qa-engineer?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_QAJA&utm_term=regular&utm_content=310721
[25] Профессия C#-разработчик: https://skillfactory.ru/csharp?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_CDEV&utm_term=regular&utm_content=310721
[26] Профессия Разработчик игр на Unity: https://skillfactory.ru/game-dev?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_GAMEDEV&utm_term=regular&utm_content=310721
[27] Курс «Алгоритмы и структуры данных»: https://skillfactory.ru/algo?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_algo&utm_term=regular&utm_content=310721
[28] Профессия Этичный хакер: https://skillfactory.ru/cybersecurity?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_HACKER&utm_term=regular&utm_content=310721
[29] Курс по DevOps: https://skillfactory.ru/devops?utm_source=infopartners&utm_medium=habr&utm_campaign=habr_DEVOPS&utm_term=regular&utm_content=310721
[30] Источник: https://habr.com/ru/post/570596/?utm_source=habrahabr&utm_medium=rss&utm_campaign=570596
Нажмите здесь для печати.