У мене виникають проблеми, але переконуюсь, що мій проект справді здійсненний.
Що я хочу архівувати: керуйте моєю кавовою машиною Senseo через Інтернет. Вона зводиться до простого керування двома кнопками.
Перше просте рішення:
- Налаштуйте сервер NodeJS на моєму Raspberry Pi.
- Я підключаю свої Raspberry GPIO до 2 транзисторів, щоб керувати кнопками кавової машини
- Я можу керувати Raspberry GPIO безпосередньо в Javascript. Наприклад, виклик http://myraspberrypi.com/makemeacoffee активує GPIO, активує кнопки та потоки кави
Але: я не хочу підключати свою малину до своєї кавомашини (мені потрібен Pi для інших цілей), і я вважаю, що роз'єднання веб-сервера та самого контролера є хорошою ідеєю. Якщо завтра я хочу контролювати температуру своєї ванної кімнати або контролювати другу кавоварку (за допомогою іншої ESP8266), я хочу це зробити, не переосмислюючи все.
Що мені потрібно архівувати, це ESP8266 з NodeMCU, щоб використовувати його як контролер без голови Wi-Fi (див. Це посилання ). Raspberry GPIO більше не використовується (в цьому справа). На Pi є лише веб-сервер NodeJS.
Ось короткий ескіз архітектури:
Дозвольте мені уточнити роль основних компонентів:
- Raspberry Pi: розміщує веб-сервер NodeJS
- Веб-сервер NodeJS: обслуговує веб-сторінки кінцевому користувачеві. В основному сторінка з кнопкою "Зробіть мені каву". За сценою нам потрібно «натиснути» кнопку нагрівання води, почекати 30 секунд, потім «натиснути» кнопку кави. Веб-сервер робить це, надсилаючи HTTP-запити на ESP8266 (через Wi-Fi). Сервер NodeJS також здійснює реєстрацію та аналіз даних (скільки кави ви випили цього року?)
- ESP8266: використовує NodeMCU. Її GPIO підключені до транзистора, що управляє кнопками кавоварки. Мене не цікавить, як живити ESP8266. Він запускає веб-сервер для прослуховування запитів Raspberry Pi та відповідних дій для GPIO.
Чи здійснена ця архітектура? Чи гнучка ця архітектура?
EDIT, щоб відповісти на Шона Хуліхана (спойлер, щоб посада була відносно короткою):
Я не впевнений у цьому на 100%, але транзистор, здається, достатньо. Вимикач кавової машини працює на низькій напрузі (3,3 В), і ESP8266 не поділить землю з кавомашиною.
Щодо зондування температури та контролю рівня води, кавоварка Senseo має цю вбудовану. Типове використання: Натисніть центральну кнопку, щоб запустити процес нагрівання, виберіть розмір кави, натиснувши кнопку "єдиний" або "подвійний". Як тільки процес нагрівання закінчується, кава починає текти. Якщо води недостатньо, вона закінчується і блимає світлодіод.
Я очікую прогресу:
- Версія 1.0 буде "Просто запустіть кавоварку, я впевнений, що вона готова". Я керую однією кнопкою чашки та кнопкою нагрівання.
Версія 2.0 буде "Запустити машину та дай мені зворотній зв'язок" У мене був ще один ESP8266, підключений до світлодіодного сигналу зворотного зв’язку (щоб я міг знати, коли він нагрівається і коли його немає у воді) та ще один на шкалі, щоб переконатися, що чашка є перед тим, як запустити кавоварку. Я також можу додати попередження, коли кавоварка працює, щоб сказати користувачеві змінити стручок.
Версія 3.0 буде знаходити спосіб визначити, чи змінився стручок, відстежуючи відкриття механізму деяким вимикачем. Але це зараз не входить в рамки мого проекту.