Spisu treści:
- Krok 1: Logika oprogramowania: Architektura systemu
- Krok 2: Krok 1: Okablowanie sprzętowe
- Krok 3: Krok 2: Arduino
- Krok 4: Krok 3: NodeJS
- Krok 5: Krok 4: Interfejs sieciowy
- Krok 6: Wynik
Wideo: Projekt Arduino: sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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
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:
Jak podłączyć NodeMCU ESP8266 do bazy danych MySQL: 7 kroków
Jak połączyć NodeMCU ESP8266 z bazą danych MySQL: MySQL to szeroko stosowany system zarządzania relacyjnymi bazami danych (RDBMS), który wykorzystuje ustrukturyzowany język zapytań (SQL). W pewnym momencie możesz chcieć przesłać dane czujnika Arduino/NodeMCU do bazy danych MySQL. W tej instrukcji zobaczymy, jak się połączyć
Utwórz oprogramowanie bazy danych Ms Access, aby przygotować wynagrodzenie w Twojej firmie: 6 kroków
Utwórz oprogramowanie bazy danych Ms Access, aby przygotować wynagrodzenie w Twojej firmie: Dam ci krótką instrukcję, jak utworzyć system płacowy przy użyciu dostępu MS do generowania miesięcznych wynagrodzeń i łatwego drukowania odcinków wynagrodzeń za pomocą tego. W ten sposób możesz przechowywać w bazie danych comiesięczne dane dotyczące wynagrodzeń i edytować lub przeglądać z opóźnieniem
System obecności oparty na odciskach palców i RFID przy użyciu Raspberry Pi i bazy danych MySQL: 5 kroków
System obecności oparty na odciskach palców i RFID przy użyciu Raspberry Pi i bazy danych MySQL: wideo tego projektu
Jak projektować relacyjne bazy danych w programie Microsoft Access dla początkujących: 17 kroków
Jak projektować relacyjne bazy danych w programie Microsoft Access dla początkujących: Poniższy zestaw instrukcji zawiera szczegółowe informacje na temat projektowania relacyjnych baz danych w programie Microsoft Access. Ten przewodnik pokaże najpierw, jak prawidłowo połączyć dwie (2) tabele. Następnie opiszę szczegółowo, jak utworzyć formularz z tej nowej relacji, umożliwiając użytkownikowi wprowadzenie
Tworzenie bazy danych za pomocą XAMPP: 4 kroki
Tworzenie bazy danych za pomocą XAMPP: XAMPP to całkowicie darmowa dystrybucja Apache zawierająca MariaDB, PHP i Perl. XAMPP zapewnia graficzny interfejs dla SQL, pozwalający na przechowywanie informacji w bazie danych, którą dziś stworzymy. Kiedy po raz pierwszy zacząłem używać baz danych w projektach