Мазмұны:
- 1 -қадам: Бағдарламалық қамтамасыз ету логикасы: жүйелік архитектура
- 2 -қадам: 1 -қадам: аппараттық сымдар
- 3 -қадам: 2 -қадам: Arduino
- 4 -қадам: 3 -қадам: NodeJS
- 5 -қадам: 4 -қадам: веб -интерфейс
- 6 -қадам: Нәтиже
Бейне: Arduino жобасы: Nodejs + SQL дерекқоры мен веб -сайтты қолдана отырып, Интернетте электрониканы басқару: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Жоба авторы: Mahmed.tech
Жасалған күні: 14 шілде 2017 ж
Қиындық деңгейі: Бағдарламалау бойынша кейбір білімдері бар бастаушы.
Жабдыққа қойылатын талаптар:
- Arduino Uno, Nano, Mega (менің ойымша, сериялық байланысы бар MCU көпшілігі жұмыс істейді)
- Жалғыз жарықдиодты және токты шектейтін резистор. Егер сіз сенімді болмасаңыз, осы калькуляторды қолданыңыз: Ohms Law Calculator
- 10K потенциометр.
Бағдарламалық қамтамасыз ету талаптары:
- Arduino IDE
- Node. JS (бұл компьютердегі бағдарламалық қамтамасыз ету, орнату өте қарапайым)
- MySQL сервері (арзан веб -хостингті қолданудың ең оңай жолы - ақысыз домендік атауларды алуға болады)
Қолданылатын бағдарламалау және сценарий тілі:
Arduino (өзгертілген C/C ++), JavaScript (Nodejs), PHP, HTML және CSS
Кіріспе Бұл жоба қысқаша түрде: Arduino микроконтроллерін веб -интерфейстен басқару. Сондықтан кез келген электрлік құрылғыны интернет арқылы кез келген жерден басқарыңыз. Мен бағдарламалау мен веб -әзірлеу туралы түсінігімді кеңейткім келді және қарапайым, бірақ тиімді жобаны орындаудан гөрі мұны істеудің жақсы әдісі. Бағдарламалық жасақтамаға көбірек назар аудару үшін аппараттық құралдар минималды. Сондықтан мен қарапайым жарықдиодты, кастрөлді орнатумен жүрдім. Кәстрөл деректерді жібереді, ал жарық диодты қабылдайды (PWM жарықтығы). NodeJS көмегімен сериялық деректер оқылды (потенциометрдің мәні) және жазылды (жарық диодты жарықтылық). Бұл жобаның қиын бөлігі қашықтағы жерден кіру деректерін алу болды (веб -сервер)
1 -қадам: Бағдарламалық қамтамасыз ету логикасы: жүйелік архитектура
Потенциометр деректері:
Бұл Arduino -дан басталады, оқылатын кастрюль мәні сериялық басып шығару болып табылады. Алайда, бұл жолы біз мәнді оқу үшін Node. JS қолданамыз. NodeJS Arduino қосылған портқа сериялық байланысты ашады және басылған ыдыстың мәнін оқиды. Содан кейін NodeJS деректерді қашықтағы SQL дерекқорына жүктейді, бұл жаңа ыдыс мәні басып шығарылған сайын болады. Веб -бет SQL мәліметтер қорының интервалына қосылады және потенциометрдің мәнін шығарады. Содан кейін бұл веб -бетте көрсетіледі.
Жарықдиодты деректер:
Жетекші үшін PWM жарықтығын пайдаланушы қашықтағы веб -бетте орнатады, сондықтан оның саяхаты спектрдің қарама -қарсы жағынан басталады. Кіріс деректері SQL дерекқорына сақталады, әрбір орнатылған интервал деректер қорының басқарылатын PWM өзгеруіне тексеріледі, мұны NodeJS жасайды. Егер мән алдыңғы мәннен өзгеше болса, онда жаңа мән Arduino -ға сериялық шина арқылы жіберіледі. Arduino PWM шығысын өзгертіп, оның жарықтығын өзгертеді.
Ом заңының калькуляторы V = IR және P = IV = I²R = V²/R формуласын қолданады. Бұл жоба үшін мен көк жарықдиодты қолданамын. Бұл өте маңызды, себебі жарық жиілігі артқан сайын кернеудің төмендеуі де артады. Көгілдір жарық қызыл светодиодқа қарағанда жоғары жиілікке ие болғандықтан. Бұл жоғары кернеуді білдіреді. Жұмыс түріне, түріне және көлеміне байланысты жұмыс ауқымы әр түрлі болады. Орнату үшін мен 220 Ω резисторды тізбектей қолдандым, жерге теріс және Arduino PWM түйреуішіне оң. Кәстрөл аналогтық істікке қосылды. 5VCC бір ұшында GND екіншісінде және аналогты түйреуішке қосылған ортаңғы істікшеде (менің жағдайда A0).
2 -қадам: 1 -қадам: аппараттық сымдар
Бұл өте қарапайым: ағымдағы шектеуші резисторды жарықдиодты шамға тізбектей жалғап, оның дұрыс бағытта екеніне көз жеткізіңіз. Бір нүкте GND -ге өтеді, екінші ұшы Arduino пиніне түседі. Орнату үшін мен светодиод үшін 12 -ші сымды, ал горшок үшін A7 -ді қолдандым. Менде схема жоқ, өйткені оның қарапайым схемасы. Алайда мен оны интернеттен таптым (сурет)
3 -қадам: 2 -қадам: Arduino
Алдымен, сым мен кастрөл күтілгендей жұмыс істеп тұрғанын тексерді. Бұл кастрөлдің мәні светодиодты басқаратын қарапайым бағдарламаның арқасында болды. Мен 0 -ден 1023 -ке дейінгі диапазонды 0 -ден 255 -ке дейін өзгерту үшін constrain функциясын қолдандым, бірақ қарапайым /4 де жұмыс істейді. Кәстрөлдің мәні қатарынан 10 оқудан орташа орташа мәнді алу арқылы тегістелді, бұл шыңдарды кетіру үшін. (Алайда, бұл тегістеу NodeJS -те проблемалар туғызды, сондықтан ол кейінірек жобада жойылды - толығырақ)
Arduino коды
Сериялық оқу / жазу Келесі қадам - жарықтықты орнату үшін Arduino ide ұсынған сериялық монитор терезелері арқылы пайдаланушының кірісін алу. Ол үшін serial.parseInt () пайдаланылады, ол бүтін мәнді қабылдайды және жолды елемейді. Сондай -ақ, кодқа қатені тексеру қосылады. PWM мәнінің жарамды диапазоны 0 - 255, егер пайдаланушы> 255 енгізсе, онда ол 255 мәнін тағайындайды, ал егер қолданушы мән енгізсе немесе <+/- 5 болса, мен мұны ауытқу кезінен берік оқу үшін жасадым.. Неліктен бұл SQL жаңартумен байланысты үлкен мәселе, бұл туралы кейінірек.
4 -қадам: 3 -қадам: NodeJS
Мен сізге SQL серверін қалай алу керектігін көрсетпеймін. Онда көптеген оқулықтар бар.
NodeJS бағдарламасының 3 негізгі аспектісі бар:
Сериялық деректерді оқу
Сериялық деректерді жазу
SQL деректер қорын жаңартыңыз
NodeJS ішінде сериялық қосылу үшін nport пәрмені арқылы жасалатын serialport деп аталатын модульді жүктеу керек. NodeJS бағдарламасы сақталатын қалтада CMD ашыңыз, теру арқылы орнатыңыз: npm install serialport Сондай -ақ SQL модулін SQL дерекқорына қосылу үшін орнату керек: npm mysql орнату NodeJS - сериялық порт NodeJS -пен бірінші қадамым Бағдарлама басылған деректерді оқу және Arduino -ға pwm жарықтығын жіберу болды. Бұл сол брудрат пен портта сериялық қосылымды ашу арқылы жасалды. Байланыс орнатылғаннан кейін мен кіріс хабарламаларды оқыдым және оны консоль терезесіне басып шығардым. Жарықтықты бақылау үшін pwm мәнін жазуға тырысқанда мәселе көтерілді.
Ол қателіктер жібере берді: Порт ашық емес, менің бастапқы шешімім кіріс деректері болған кезде жазу функциясын шақыру болды. Дегенмен, бұл нашар түзету болды және мен шешімге қанағаттанбадым, ол жұмыс істегеніне қарамастан, ол тек кастрюльдің мәні өзгерген кезде жіберіледі. Сериялық модульге арналған мысал коды жұмыс істемейді немесе сол қатені жібереді. Мен кейінірек білдім, бұл бағдарлама портты ашпай -ақ жазу функциясын орындауға тырысады, нәтижесінде қате пайда болды. Мен setInterval () функциясын қолдану арқылы бұл мәселені шештім
NodeJS - MySQL MySQL кітапханасы SQL дерекқорына қосылу үшін пайдаланылды (npm MySQL орнату), себебі сервер алыс жерде сервердің IP мекенжайы localhost орнына пайдаланылды.
var con қосылым туралы ақпаратты JSON форматында сақтайды, байланыс сәтті орнатылғаннан кейін, дерекқорды сұрауға болады. Кестені жаңарту үшін 2 функция құрылды, екіншісі SQL сұрауында параметрлерді таңдау арқылы. Жаңарту кестесі жаңа сыйымдылық мәні алынған кезде шақырылады және жарықтықты тексеру сұранысы мезгіл -мезгіл жұмыс істейді.
NodeJSCode сілтемесі
5 -қадам: 4 -қадам: веб -интерфейс
Веб -интерфейс
Негізгі веб -бет PHP -де жазылған, өйткені менде CO323 мәліметтер базасы мен университеттегі веб -модульде біраз тәжірибе болды. Html кестесі мен формасы sql деректерін көрсету үшін пайдаланылды.
PHP SQL қатынас коды: сілтеме Веб -интерфейс бөліміне өтіңіз.
HTML & CSS * Javascript веб -бет коды: Сілтеме Төменге қарай айналдырыңыз
Соңғы веб -бет
Ұсынылған:
Ауа райы станциясы: ESP8266 терең ұйқы режимінде, SQL, колба бойынша графиктік және графикалық: 3 қадам
Ауа райы станциясы: ESP8266 Терең ұйқыда, SQL, колбадан графикті түсіру: плитканың температурасын, ылғалдылығын немесе жарық қарқындылығын білу қызықты болар ма еді? Мен білер едім. Мен осындай деректерді жинау үшін қарапайым метеорологиялық станция жасадым. Келесі бөлімдер - мен оны жасау үшін жасаған қадамдар. Жұмысты бастайық