Mundarija:
- 1 -qadam: dasturiy ta'minot mantig'i: tizim arxitekturasi
- 2 -qadam: 1 -qadam: Uskuna simlari
- 3 -qadam: 2 -qadam: Arduino
- 4 -qadam: 3 -qadam: NodeJS
- 5 -qadam: 4 -qadam: veb -interfeys
- 6 -qadam: Natija
Video: Arduino loyihasi: Nodejs + SQL ma'lumotlar bazasi va veb -sayt yordamida Internet orqali elektronni boshqarish: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Loyiha muallifi: Mahmed.tech
Ishlab chiqarilgan sanasi: 2017 yil 14 -iyul
Qiyinchilik darajasi: dasturlash bo'yicha ba'zi bilimlarga ega bo'lgan boshlovchi.
Uskuna talablari:
- Arduino Uno, Nano, Mega (menimcha, ketma -ket ulangan MCU ko'pchiligi ishlaydi)
- Yagona LED va oqim cheklovli rezistor. Agar ishonchingiz komil bo'lmasa, ushbu kalkulyatordan foydalaning: Ohms qonun kalkulyatori
- 10K potentsiometr.
Dastur talablari:
- Arduino IDE
- Node. JS (bu kompyuterda dasturiy ta'minot, o'rnatish juda oddiy)
- MySQL Server (men topgan eng oson usul - bu arzon veb -xostingdan foydalanish. Siz ham bepul domen nomlarini olishingiz mumkin)
Amaldagi dasturlash va skript tili:
Arduino (o'zgartirilgan C/C ++), JavaScript (Nodejs), PHP, HTML va CSS
Qisqacha aytganda, bu loyiha: veb -interfeysdan Arduino mikrokontrollerini boshqarish. Shunday qilib, har qanday elektr qurilmasini Internet bilan boshqaring. Men dasturlash va veb -ishlab chiqish haqidagi tushunchamni kengaytirmoqchi edim va buning uchun oddiy, ammo samarali loyihani bajarishdan ko'ra yaxshiroq yo'l. Uskuna minimal darajada saqlanadi, shuning uchun men ko'proq dasturiy ta'minotga e'tibor qaratishim mumkin. Shuning uchun men oddiy LED, qozon o'rnatish bilan bordim. Qozon ma'lumot yuboradi va svetodiod qabul qiladi (PWM yorqinligi). NodeJS yordamida ketma -ket ma'lumotlar o'qildi (potentsiometr qiymati) va yozildi (LED yorqinligi). Ushbu loyihaning qiyin qismi uzoqdan (veb -server) kirish ma'lumotlarini olish edi.
1 -qadam: dasturiy ta'minot mantig'i: tizim arxitekturasi
Potentsiometr ma'lumotlari:
Bu Arduino -dan boshlanadi, o'qiladigan pot qiymati ketma -ket chop etiladi. Biroq, bu safar biz qiymatni o'qish uchun Node. JS -dan foydalanamiz. NodeJS Arduino ulangan portga ketma -ket aloqani ochadi va bosilgan pot qiymatini o'qiydi. Keyin NodeJS ma'lumotlarni uzoq SQL ma'lumotlar bazasiga yuklaydi, bu har safar yangi pot qiymati chop etilganda sodir bo'ladi. Veb -sahifa SQL ma'lumotlar bazasi oralig'iga ulanadi va potentsiometr qiymatini oladi. Keyin bu veb -sahifada ko'rsatiladi.
Led ma'lumotlari:
PWM yorqinligi foydalanuvchi tomonidan uzoq veb -sahifada o'rnatiladi, shuning uchun uning sayohati spektrning qarama -qarshi uchidan boshlanadi. Kirish ma'lumotlari SQL ma'lumotlar bazasida saqlanadi, har bir o'rnatilgan intervalli PWM -ning o'zgarishi uchun ma'lumotlar bazasi tekshiriladi, bu NodeJS tomonidan amalga oshiriladi. Agar qiymat oldingi qiymatdan farq qilsa, yangi qiymat ketma -ket avtobus orqali Arduino -ga yuboriladi. Arduino nashrining PWM qiymatini o'zgartiradi va uning yorqinligini o'zgartiradi.
Ohm qonun kalkulyatori V = IR va P = IV = I²R = V²/R formulasidan foydalanadi. Bu juda muhim, chunki yorug'lik chastotasi oshishi bilan kuchlanish pasayishi ham oshadi. Ko'k chiroq qizil chiroqqa qaraganda yuqori chastotaga ega. Bu yuqori oldinga kuchlanish degan ma'noni anglatadi. Ishlab chiqarish turiga, hajmiga va ish hajmiga qarab o'zgaradi. O'rnatish uchun men 220 dyuymli rezistorni ketma -ket ishlatdim, erga salbiy va Arduino -dagi PWM piniga ijobiy. Idish analog pin bilan ulangan. 5VCC bilan bir uchi GND ikkinchisi va o'rta pin analog pinga ulangan (mening holatimda A0).
2 -qadam: 1 -qadam: Uskuna simlari
Bu juda oddiy: oqim chegaralovchi qarshiligingizni LED bilan ketma -ket ulang, siz boshqarayotganingizga ishonch hosil qiling. Bir nuqta GND ga, boshqa uchi Arduino piniga o'tadi. O'rnatish uchun men LED uchun 12 -pin va Pot uchun A7 -pinni ishlatardim. Menda sxemasi yo'q, chunki uning sxemasi juda oddiy. Biroq, men buni Internetda topdim (rasm)
3 -qadam: 2 -qadam: Arduino
Birinchidan, qozon va qozon kutilganidek ishlayaptimi, tekshirildi. Bu oddiy dastur yordamida sodir bo'ldi, bu erda pot qiymati LEDni boshqaradi. 0 dan 1023 gacha bo'lgan diapazonni 0 dan 255 gacha o'zgartirish uchun cheklash funktsiyasidan foydalanardim, lekin oddiy /4 ham ishlaydi. O'rtacha ketma -ket 10 o'qishning o'rtacha ko'rsatkichini hisobga olgan holda, potning qiymati tekislandi, bu boshoqlarni olib tashlashdir. (Biroq, bu yumshatish NodeJS bilan bog'liq muammolarni keltirib chiqardi, shuning uchun bu keyinchalik loyihada olib tashlandi - bu haqida ko'proq)
Arduino kodi
O'qish / yozishni ketma -ketligi Keyingi qadam - yorqinlikni sozlash uchun Arduino ide tomonidan taqdim etilgan ketma -ket monitor oynalari orqali foydalanuvchi kiritish. Buning uchun serial.parseInt () ishlatiladi, u butun sonni oladi va mag'lubiyatga e'tibor bermaydi. Bundan tashqari, kodga xato tekshiruvi qo'shiladi. PWM qiymatining amaldagi diapazoni 0 - 255, agar foydalanuvchi> 255 ga kirsa, u 255 qiymatini belgilaydi va agar foydalanuvchi qiymat kiritsa yoki <+/- 5 bo'lsa, men o'qishni o'zgaruvchan bo'lganidan beri barqaror qilish uchun qildim.. Nima uchun bu SQL yangilanishi bilan bog'liq katta muammo, bu haqda keyinroq.
4 -qadam: 3 -qadam: NodeJS
Men sizga SQL serverini qanday olish yoki sozlashni ko'rsatmayman. U erda juda ko'p darsliklar bor.
NodeJS dasturining 3 asosiy jihati bor:
Seriya ma'lumotlarini o'qing
Seriya ma'lumotlarini yozing
SQL ma'lumotlar bazasini yangilang
NodeJS -da ketma -ket ulanish uchun serialport deb nomlangan modulni yuklab olish kerak, uni npm buyrug'i yordamida bajarish mumkin. NodeJS dasturi saqlanadigan papkada CMD -ni oching, yozib o'rnating: npm install serialport Bundan tashqari, SQL ma'lumotlar bazasiga ulanish uchun SQL moduli o'rnatilishi kerak: npm mysql ni o'rnatish NodeJS - Serial port NodeJS bilan birinchi qadamim Dastur bosilgan ma'lumotlarni o'qish va Arduino -ga pwm yorqinligini yuborish edi. Bu bir xil braudrat va portda ketma -ket ulanishni ochish orqali amalga oshirildi. Aloqa o'rnatilgandan so'ng, men kiruvchi xabarlarni o'qib, konsol oynasida chop etdim. Yorqinlikni boshqarish uchun pwm qiymatini yozmoqchi bo'lganimda muammo ko'tarildi.
Bu xatolarni davom ettirdi: Port ochilmadi, mening birinchi yechimim kiruvchi ma'lumotlar mavjud bo'lganda yozish funktsiyasini chaqirish edi. Biroq, bu yomon tuzatish edi va men bu echimdan juda qoniqmadim, garchi u ishlagan bo'lsa ham, u faqat pot qiymati o'zgartirilganda yuboriladi. Ketma -ket modul uchun namuna kodi ham ishlamaydi, bir xil xato. Keyinchalik bilsam, dastur portni ochmasdan yozish funktsiyasini bajarishga harakat qilgandi, natijada bu xato yuz berdi. Men setInterval () funktsiyasidan foydalanib, bu muammoni hal qildim
SQL ma'lumotlar bazasiga ulanish uchun MySQL kutubxonasi ishlatilgan (npm MySQL -ni o'rnatish), chunki server uzoq joylashgan serverda localhost o'rniga serverning IP -manzili ishlatilgan.
var con ulanish ma'lumotlarini JSON formatida saqlaydi, ulanish muvaffaqiyatli amalga oshirilgach, ma'lumotlar bazasi so'ralishi mumkin. Jadvalni yangilash uchun ikkita vazifa yaratildi, ikkinchisi - SQL so'rovida parametrlarni tanlash. Yangilash jadvali yangi pot qiymatini olganda chaqiriladi va nashrida tekshirish so'rovi vaqti -vaqti bilan bajariladi.
NodeJSCode havolasi
5 -qadam: 4 -qadam: veb -interfeys
Veb -interfeys
Asosiy veb -sahifa PHP -da yozilgan, chunki menda CO323 ma'lumotlar bazasi va universitetdagi veb -moduli borasida tajribaga ega bo'lganman. Html jadval va forma sql ma'lumotlarini ko'rsatish uchun ishlatilgan.
PHP SQL kirish kodi: havola veb -interfeys bo'limiga o'ting.
HTML va CSS * Javascript veb -sahifa kodi: Havola Pastga o'ting
Yakuniy veb -sahifa
Tavsiya:
Ob -havo stantsiyasi: ESP8266 chuqur uyquda, SQL, kolba va grafik bo'yicha grafik: 3 qadam
Ob -havo stantsiyasi: ESP8266 chuqur uyquda, SQL, kolbadan chizish va chizish: Balkoningizdagi harorat, namlik yoki yorug'lik intensivligini bilish qiziq bo'larmidi? Men bilardim. Shunday qilib, men bunday ma'lumotlarni to'plash uchun oddiy ob -havo stantsiyasini yaratdim. Keyingi bo'limlar men yaratgan qadamlardir. Boshlaylik