Saya mengalami masalah tetapi memastikan proyek saya benar-benar layak.
Yang ingin saya arsipkan: Kontrol mesin kopi Senseo saya melalui internet. Itu hanya untuk mengendalikan 2 tombol.
Solusi mudah pertama:
- Siapkan server NodeJS di Raspberry Pi saya.
- Saya pasang GPIO Raspberry saya ke 2 transistor, untuk mengontrol tombol mesin kopi
- Saya dapat mengontrol GPIO Raspberry langsung di Javascript. Misalnya memanggil http://myraspberrypi.com/makemeacoffee mengaktifkan GPIO, mengaktifkan tombol, dan aliran kopi
Tetapi: Saya tidak ingin memasukkan raspberry saya ke mesin kopi saya (saya butuh Pi untuk keperluan lain), dan saya pikir bahwa decoupling server web dan pengontrolnya sendiri adalah ide yang bagus. Jika besok saya ingin memantau suhu kamar mandi saya, atau mengendalikan mesin kopi kedua (menggunakan ESP8266 lain) saya ingin dapat melakukannya tanpa memikirkan kembali semuanya.
Apa yang perlu saya arsipkan adalah ESP8266 dengan NodeMCU untuk menggunakannya sebagai pengontrol tanpa kepala Wi-Fi (lihat tautan ini ). Raspberry GPIO tidak lagi digunakan (itu intinya). Hanya ada server web NodeJS di Pi.
Berikut ini sketsa arsitekturnya:
Biarkan saya mengklarifikasi peran komponen utama:
- Raspberry Pi: Host server web NodeJS
- Server web NodeJS: Melayani halaman web untuk pengguna akhir. Pada dasarnya halaman dengan tombol "Buatkan saya kopi". Di belakang layar, kita perlu "menekan" tombol air panas, tunggu 30 detik, lalu "tekan" tombol kopi. Server web melakukannya dengan mengirimkan permintaan HTTP ke ESP8266 (melalui Wi-Fi). Server NodeJS juga melakukan pencatatan dan analisis data (berapa banyak kopi yang Anda minum tahun ini?)
- ESP8266: Menggunakan NodeMCU. GPIO-nya dipasang ke transistor yang mengendalikan tombol mesin kopi. Saya tidak peduli bagaimana memberi daya pada ESP8266. Ini menjalankan server web untuk mendengarkan permintaan Raspberry Pi dan melakukan tindakan pada GPIO yang sesuai.
Apakah arsitektur ini layak? Apakah arsitektur ini fleksibel?
EDIT, untuk menjawab Sean Houlihane (spoiler agar posnya relatif singkat):
Saya tidak 100% yakin tentang ini, tetapi transistor tampaknya sudah cukup. Sakelar mesin kopi bekerja pada tegangan rendah (3,3V) dan ESP8266 tidak akan berbagi tanah dengan mesin kopi.
Tentang penginderaan suhu, dan kontrol ketinggian air, mesin kopi Senseo memiliki built-in ini. Penggunaan umum: Tekan tombol tengah untuk memulai proses pemanasan, pilih ukuran kopi Anda dengan menekan tombol "tunggal" atau "ganda". Setelah proses memanaskan berakhir, kopi mulai mengalir. Jika tidak ada cukup air, air itu berakhir dan LED berkedip.
Kemajuan yang saya harapkan:
- Versi 1.0 akan "Cukup jalankan mesin kopi, saya yakin sudah siap". Saya mengontrol tombol cangkir tunggal dan tombol panas.
Versi 2.0 akan menjadi "Jalankan mesin dan beri saya umpan balik" Saya punya ESP8266 lain, dicolokkan ke LED umpan balik (Agar saya bisa tahu kapan itu memanas dan kapan keluar dari air) dan satu lagi ke skala untuk memastikan bahwa cangkir ada sebelum menjalankan mesin kopi. Saya mungkin juga menambahkan peringatan ketika mesin kopi dijalankan untuk memberi tahu pengguna untuk mengganti pod.
Versi 3.0 akan menemukan cara untuk mengetahui apakah pod telah diubah, dengan melacak pembukaan mekanisme dengan semacam saklar. Tapi ini di luar cakupan proyek saya saat ini.