Spisu treści:

Projekt Arduino: sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: 6 kroków
Projekt Arduino: sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: 6 kroków

Wideo: Projekt Arduino: sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: 6 kroków

Wideo: Projekt Arduino: sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: 6 kroków
Wideo: CS50 2013 - Week 9 2024, Listopad
Anonim
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + SQL Database i strony internetowej
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + SQL Database i strony internetowej
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + SQL Database i strony internetowej
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + SQL Database i strony internetowej
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + SQL Database i strony internetowej
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + SQL Database i strony internetowej

Projekt autorstwa: Mahmed.tech

Data wykonania: 14 lipca 2017 r.

Poziom trudności: początkujący z pewną wiedzą programistyczną.

Wymagania sprzętowe:

- Arduino Uno, Nano, Mega (myślę, że większość MCU z połączeniem szeregowym będzie działać)

- Pojedyncza dioda LED i rezystor ograniczający prąd. Użyj tego kalkulatora, jeśli nie jesteś pewien: Kalkulator prawa Ohma

- Potencjometr 10K.

Wymagania dotyczące oprogramowania:

- Arduino IDE

- Node. JS (jest to oprogramowanie na komputer, bardzo proste w instalacji)

- MySQL Server (najłatwiejszy sposób, jaki znalazłem, to skorzystanie z taniego hostingu internetowego. Możesz również uzyskać bezpłatne nazwy domen)

Użyty język programowania i skryptów:

Arduino (zmodyfikowany C/C++), JavaScript (Nodejs), PHP, HTML i CSS

WprowadzenieTen projekt w pigułce: Sterowanie mikrokontrolerem Arduino z interfejsu internetowego. Dlatego kontroluj dowolne urządzenie elektryczne z dowolnego miejsca za pomocą Internetu. Chciałem poszerzyć moje rozumienie programowania i tworzenia stron internetowych i nie ma lepszego sposobu na zrobienie tego niż zrobienie prostego, ale skutecznego projektu. Sprzęt jest utrzymywany na minimalnym poziomie, więc mogłem skupić się bardziej na oprogramowaniu. Dlatego zdecydowałem się na prostą konfigurację LED, potencjometr. Garnek wyśle dane, a dioda odbierze (jasność PWM). Za pomocą NodeJS odczytywano dane szeregowe (wartość potencjometru) i zapisywano (jasność diody). Trudną częścią tego projektu było uzyskanie danych wejściowych ze zdalnej lokalizacji (serwer WWW)

Krok 1: Logika oprogramowania: Architektura systemu

Logika oprogramowania: architektura systemu
Logika oprogramowania: architektura systemu

Dane potencjometru:

To zaczyna się od Arduino, odczytana wartość pot jest drukiem seryjnym. Jednak tym razem do odczytania wartości użyjemy Node. JS. NodeJS otworzy komunikację szeregową do tego samego portu, do którego podłączone jest Arduino, i odczyta wydrukowaną wartość potencjometru. NodeJS prześle następnie dane do zdalnej bazy danych SQL, co będzie się działo za każdym razem, gdy zostanie wydrukowana nowa wartość pot. Strona internetowa połączy się z ustawionym interwałem bazy danych SQL i pobierze wartość potencjometru. To będzie następnie wyświetlane na stronie internetowej.

Dane Led:

Dla diody led jasność PWM będzie ustawiana przez użytkownika na zdalnej stronie internetowej, więc jej podróż zaczyna się na przeciwległym końcu spektrum. Dane wejściowe są zapisywane do bazy danych SQL, co ustawiony interwał baza jest sprawdzana pod kątem zmiany w led PWM, robi to NodeJS. Jeśli wartość jest inna niż poprzednia, nowa wartość zostanie wysłana do Arduino za pośrednictwem magistrali szeregowej. Arduino zmienia wyjściową wartość PWM diody LED, aby zmienić jej jasność.

Kalkulator prawa Ohma używa wzoru V = IR i P = IV = I²R = V²/R W tym projekcie będę używał niebieskiej diody LED. Jest to ważne, ponieważ wraz ze wzrostem częstotliwości światła wzrasta również spadek napięcia. Ponieważ niebieskie światło ma wyższą częstotliwość w porównaniu do czegoś takiego jak czerwona dioda. Oznacza to wyższe napięcie przewodzenia. W zależności od marki, typu i rozmiaru zakres roboczy będzie się różnić. Do mojej konfiguracji użyłem szeregowo rezystora 220 Ω, ujemnego do masy i dodatniego do pinu PWM na Arduino. Garnek był podłączony do pinu analogowego. Z 5VCC jeden koniec GND drugi i środkowy pin podłączony do pinu analogowego (w moim przypadku A0).

Krok 2: Krok 1: Okablowanie sprzętowe

Krok 1: Okablowanie sprzętowe
Krok 1: Okablowanie sprzętowe

To bardzo proste: wystarczy podłączyć szeregowo rezystor ograniczający prąd z diodą LED, aby upewnić się, że jest prawidłowo prowadzony. Jeden punkt trafi do GND, a drugi koniec do pinu Arduino. W mojej konfiguracji użyłem pinu 12 dla diody LED i A7 dla Pot. Nie mam schematu, ponieważ jest to bardzo prosty obwód. Jednak znalazłem to w Internecie (zdjęcie)

Krok 3: Krok 2: Arduino

Najpierw sprawdzono, czy dioda i garnek działają zgodnie z oczekiwaniami. Zostało to obniżone za pomocą prostego programu, w którym wartość puli kontroluje diodę led. Użyłem funkcji ograniczenia, aby zmienić zakres pot od 0 do 1023 na 0 do 255, ale prosty /4 również działa. Wartość puli została wygładzona poprzez wzięcie średniej średniej z 10 kolejnych odczytów, ma to na celu usunięcie kolców. (Jednak to wygładzanie powodowało problemy z NodeJS, więc zostało to usunięte później w projekcie - więcej na ten temat)

Kod Arduino

Odczyt / zapis szeregowy Następnym krokiem jest wprowadzenie danych przez użytkownika za pośrednictwem okien monitora szeregowego dostarczonego przez Arduino ide, aby ustawić jasność. W tym celu używana jest metoda serial.parseInt(), która przyjmuje wartość całkowitą i ignoruje ciąg znaków. Ponadto do kodu dodawane jest sprawdzanie błędów. Prawidłowy zakres wartości PWM to 0 - 255, gdy użytkownik wprowadzi >255, to przypisuje wartość 255, a jeśli użytkownik wprowadzi wartość lub < +/-5 Zrobiłem to, aby odczyt był bardziej stabilny, ponieważ był wahania. Dlaczego jest to duży problem związany z aktualizacją SQL, o czym później.

Krok 4: Krok 3: NodeJS

Nie będę pokazywał, jak zdobyć lub skonfigurować serwer SQL. Istnieje mnóstwo samouczków.

Istnieją 3 główne aspekty programu NodeJS:

Czytaj dane szeregowe

Zapisz dane szeregowe

Aktualizuj bazę danych SQL

Aby nawiązać połączenie szeregowe w ramach NodeJS, należy pobrać moduł o nazwie port szeregowy, co można zrobić za pomocą polecenia npm. Otwórz CMD w folderze, w którym będzie przechowywany program NodeJS, zainstaluj wpisując: npm install serialport Również moduł SQL musi być zainstalowany, aby móc połączyć się z bazą danych sql: npm install mysql NodeJS - Port szeregowy Mój pierwszy krok z NodeJS program miał odczytać wydrukowane dane i wysłać jasność pwm do Arduino. Dokonano tego poprzez otwarcie połączenia szeregowego w tym samym braudrate i porcie. Po nawiązaniu połączenia czytałem przychodzące wiadomości i wyświetlałem je w oknie konsoli. Problem pojawił się, gdy próbowałem napisać wartość pwm, aby kontrolować jasność.

Ciągle zgłaszał błędy: Port Not Open, moim pierwszym rozwiązaniem było wywołanie funkcji zapisu, gdy przychodzą dane. Jednak była to zła poprawka i byłem dość niezadowolony z rozwiązania, mimo że zadziałało, zostanie wysłane tylko wtedy, gdy zmieni się wartość puli. Przykładowy kod modułu szeregowego również nie zadziała, zgłaszając ten sam błąd. Później dowiedziałem się, że program próbował wykonać funkcję zapisu bez otwierania portu, co spowodowało ten błąd. Pokonałem ten problem za pomocą funkcji setInterval()

NodeJS - MySQL Do połączenia z bazą danych SQL użyto biblioteki MySQL (npm instaluje MySQL), ponieważ serwer w zdalnej lokalizacji używany był adres IP serwera zamiast localhost.

var con przechowuje informacje o połączeniu w formacie JSON, po pomyślnym nawiązaniu połączenia baza danych może zostać przeszukana. Utworzono 2 funkcje jedna do aktualizacji tabeli druga do wyboru z parametrami uwzględnionymi w zapytaniu SQL. Tabela aktualizacji jest wywoływana po otrzymaniu nowej wartości potencjometru, a zapytanie o sprawdzenie jasności będzie uruchamiane okresowo.

Łącze NodeJSCode

Krok 5: Krok 4: Interfejs sieciowy

Krok 4: Interfejs sieciowy
Krok 4: Interfejs sieciowy

Interfejs sieciowy

Strona główna została napisana w PHP, ponieważ miałem już pewne doświadczenie z moimi bazami danych CO323 i modułem Web na uniwersytecie. Do wyświetlenia danych sql użyto tabeli i formularza HTML.

Kod dostępu PHP SQL: Link Przewiń do sekcji interfejsu internetowego.

HTML i CSS * Kod strony internetowej JavaScript: Link Przewiń w dół

Ostateczna strona internetowa

Zalecana: