Isi kandungan:

Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL .: 6 Langkah
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL .: 6 Langkah

Video: Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL .: 6 Langkah

Video: Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL .: 6 Langkah
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, November
Anonim
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL
Projek Arduino: Kawal Elektronik Melalui Internet Menggunakan Pangkalan Data & Laman Web Nodejs + SQL

Projek Oleh: Mahmed.tech

Tarikh Dibuat: 14 Julai 2017

Tahap Kesukaran: Permulaan dengan beberapa pengetahuan pengaturcaraan.

Keperluan Perkakasan:

- Arduino Uno, Nano, Mega (saya rasa kebanyakan MCU dengan sambungan bersiri akan berfungsi)

- Perintang penghad LED & Arus tunggal. Gunakan kalkulator ini jika anda tidak pasti: Ohms Law Calculator

- Potensiometer 10K.

Keperluan Perisian:

- Arduino IDE

- Node. JS (ini adalah perisian di komputer, sangat mudah dipasang)

- Pelayan MySQL (cara termudah yang saya dapati adalah menggunakan web hosting yang murah. Anda juga boleh mendapatkan nama domain percuma)

Bahasa pengaturcaraan & skrip yang digunakan:

Arduino (Diubah C / C ++), JavaScript (Nodejs), PHP, HTML & CSS

Pengenalan Projek ini secara ringkas: Mengendalikan mikrokontroler Arduino dari antara muka web. Oleh itu, kendalikan sebarang alat elektrik dari mana sahaja dengan internet. Saya ingin meningkatkan pemahaman saya mengenai pengaturcaraan dan pembangunan web dan cara apa yang lebih baik untuk melakukannya daripada melakukan projek yang mudah tetapi berkesan. Perkakasan disimpan minimum sehingga saya dapat lebih fokus pada perisian. Oleh itu, saya pergi dengan pemasangan LED sederhana, periuk. Pot akan menghantar data dan led akan menerima (kecerahan PWM). Menggunakan NodeJS data bersiri dibaca (nilai potensiometer) dan ditulis (kecerahan dipimpin). Bahagian yang sukar dalam projek ini adalah mendapatkan data input dari lokasi terpencil (pelayan web)

Langkah 1: Logik Perisian: Senibina Sistem

Logik Perisian: Senibina Sistem
Logik Perisian: Senibina Sistem

Data Potensiometer:

Ini bermula dari Arduino, nilai pot baca adalah cetakan bersiri. Namun, kali ini kita akan menggunakan Node. JS untuk membaca nilainya. NodeJS akan membuka komunikasi bersiri ke port yang sama dengan Arduino yang disambungkan dan membaca nilai pot dicetak. NodeJS kemudian akan memuat naik data ke pangkalan data SQL jauh, ini akan berlaku setiap kali nilai pot baru dicetak. Halaman web akan menyambung ke selang set pangkalan data SQL dan mengambil nilai potensiometer. Ini kemudian akan dipaparkan di laman web.

Data yang diketuai:

Untuk dipimpin, kecerahan PWM akan ditetapkan oleh pengguna di laman web yang jauh, jadi perjalanannya bermula di hujung spektrum yang bertentangan. Data input disimpan ke pangkalan data SQL, setiap selang set pangkalan data diperiksa untuk perubahan dalam PWM yang dipimpin, ini dilakukan oleh NodeJS. Sekiranya nilainya berbeza dengan nilai sebelumnya, maka nilai baru akan dihantar ke Arduino melalui bas bersiri. Arduino mengubah nilai output PWM dari led untuk mengubah kecerahannya.

Kalkulator undang-undang Ohms menggunakan formula V = IR dan P = IV = I²R = V² / R Untuk projek ini, saya akan menggunakan led biru. Ini penting kerana apabila frekuensi cahaya meningkat, penurunan voltan juga meningkat. Oleh kerana cahaya biru mempunyai frekuensi yang lebih tinggi dibandingkan dengan sesuatu seperti lampu merah. Ini bermaksud voltan hadapan yang lebih tinggi. Bergantung pada bentuk, jenis, dan ukuran julat kerja akan berbeza-beza. Untuk persediaan saya, saya menggunakan perintang 220 Ω secara bersiri, negatif ke tanah dan positif ke pin PWM pada Arduino. Periuk disambungkan ke pin analog. Dengan 5VCC satu hujung GND yang lain dan pin tengah disambungkan ke pin analog (A0 dalam kes saya).

Langkah 2: Langkah 1: Pendawaian Perkakasan

Langkah 1: Pendawaian Perkakasan
Langkah 1: Pendawaian Perkakasan

Ini sangat mudah: Sambungkan perintang had semasa anda secara bersiri dengan LED, pastikan anda dipimpin dengan betul. Satu mata akan pergi ke GND sementara hujung yang lain akan menuju ke pin Arduino. Untuk persediaan saya, saya menggunakan pin 12 untuk led dan A7 untuk Pot. Saya tidak mempunyai skema kerana litarnya sangat mudah. Walau bagaimanapun, saya menjumpai ini dalam talian (gambar)

Langkah 3: Langkah 2: Arduino

Pertama, plumbum dan periuk diperiksa sama ada berfungsi seperti yang diharapkan. Ini diturunkan oleh program sederhana di mana nilai pot mengawal led. Saya menggunakan fungsi kekangan untuk mengubah julat periuk 0 hingga 1023 hingga 0 hingga 255, tetapi sederhana / 4 berfungsi juga. Nilai periuk dihaluskan dengan mengambil rata-rata rata-rata dari 10 bacaan berturut-turut, ini adalah untuk menghilangkan lonjakan. (Walau bagaimanapun, kelancaran ini menyebabkan masalah dengan NodeJS jadi ini dikeluarkan semasa projek - lebih lanjut mengenai itu)

Kod Arduino

Baca / Tulis SerialLangkah seterusnya adalah mengambil input pengguna melalui tetingkap monitor bersiri yang disediakan oleh ide Arduino untuk mengatur kecerahan. Untuk melakukan ini, serial.parseInt () digunakan yang mengambil nilai integer dan mengabaikan rentetan. Juga, pemeriksaan ralat ditambahkan pada kod. Julat nilai PWM yang sah adalah 0 - 255, apabila pengguna memasukkan> 255 maka ia memberikan nilai 255 dan jika pengguna memasukkan nilai atau <+/- 5 saya telah melakukan ini untuk menjadikan bacaan lebih stabil sejak turun naik. Mengapa ini adalah masalah besar yang berkaitan dengan pengemaskinian SQL, lebih banyak lagi kemudian.

Langkah 4: Langkah 3: NodeJS

Saya tidak akan menunjukkan kepada anda cara mendapatkan atau menyediakan dan pelayan SQL. Terdapat banyak tutorial di luar sana.

Terdapat 3 aspek utama untuk program NodeJS:

Baca Data Bersiri

Tulis Data Bersiri

Kemas kini Pangkalan Data SQL

Untuk membuat sambungan bersiri dalam NodeJS, modul yang disebut serialport mesti dimuat turun yang boleh dilakukan menggunakan perintah npm. Buka CMD pada folder di mana program NodeJS akan disimpan, pasang dengan menaip: npm install serialport Juga modul SQL harus dipasang untuk dapat menyambung ke pangkalan data sql: npm pasang mysql NodeJS - Port Serial Langkah pertama saya dengan NodeJS program ini adalah untuk membaca data yang dicetak dan mengirim kecerahan pwm ke Arduino. Ini dilakukan dengan membuka sambungan bersambung pada braudrate dan port yang sama. Setelah sambungan terjalin, saya membaca mesej masuk dan mencetaknya ke tetingkap konsol. Masalah timbul ketika saya cuba menulis nilai pwm untuk mengawal kecerahan.

Ia terus melemparkan kesalahan: Port Not Open, penyelesaian awal saya adalah memanggil fungsi tulis ketika ada data masuk. Walau bagaimanapun, ini adalah cara yang tidak baik dan saya tidak berpuas hati dengan penyelesaiannya, walaupun ia berjaya, ia hanya akan dihantar apabila nilai pot berubah. Contoh kod untuk modul bersiri tidak berfungsi sama ada menyebabkan kesalahan yang sama. Saya kemudian mengetahui bahawa program ini berusaha untuk menjalankan fungsi menulis tanpa membuka port, yang mengakibatkan kesalahan itu. Saya menemui masalah ini dengan menggunakan fungsi setInterval ()

NodeJS - MySQLPustaka MySQL digunakan (npm pasang MySQL) untuk menyambung ke pangkalan data SQL kerana pelayan di lokasi terpencil alamat IP pelayan digunakan dan bukan localhost.

var con menyimpan maklumat sambungan dalam format JSON, setelah sambungan berjaya dibuat, pangkalan data dapat ditanyakan. 2 fungsi dibuat satu untuk mengemas kini jadual yang lain memilih dengan parameter mengambil pertanyaan SQL. Jadual kemas kini dipanggil apabila nilai periuk baru diterima dan pertanyaan pemeriksaan kecerahan akan berjalan secara berkala.

Pautan NodeJSCode

Langkah 5: Langkah 4: Antara Muka Web

Langkah 4: Antara Muka Web
Langkah 4: Antara Muka Web

Antara Muka Web

Laman web utama ditulis dalam PHP kerana saya sudah mempunyai beberapa pengalaman dari Pangkalan Data CO323 dan modul Web di universiti. Jadual & borang html digunakan untuk memaparkan data sql.

Kod Akses PHP SQL: Pautan Tatal ke bahagian antara muka web.

HTML & CSS * Kod Halaman Web Javascript: Pautan Tatal ke bawah

Laman Web Akhir

Disyorkan: