Przeszukaj forum
Pokazywanie wyników dla tagów 'WIFI'.
Znaleziono 16 wyników
-
Witam serdecznie, Borykam się z dziwnym dla mnie problemem, otóż zbudowałem sobie pojazd rc składający się z czterech silników, arduino, nakładki od iduino i modułu esp32 wroom do komunikacji wifi z telefonem. Do sterowania użyłem aplikacji z google play, który wysyła 5 zapytań GET; "GET /?State=F", "GET /?State=B","GET /?State=L","GET /?State=R", "GET /?State=S". Kolejno są to : przód, tył, lewo, prawo i stop. Sygnały schodzą na esp jak i są przekazywane na arduino dopóki układ jest zasilany z kabla usb. Niestety gdy uruchomię z zasilania bateryjnego, to silniki na sygnały nie reaguję, podobnie jest gdy obwód jest zasilany z kabla usb, a przełączę przycisk zasilania bateryjnego, to wywala komunikację z komputerem. Kod sterujący silnikami w zależności od otrzymanej komendy, a pod nim kod z esp32, który odbiera sygnały z telefonu i przekazuje na arduino. Wydaje mi się, że jest kwestia zasilania, ale nie dam sobie ręki uciąć, może ktoś miał podobny problem? Z góry dziękuję za odpowiedzi. #include <AFMotor.h> // Inicjalizacja motor shield AF_DCMotor motor1(1); // Motor 1 podłączony do kanału M1 AF_DCMotor motor2(2); // Motor 2 podłączony do kanału M2 AF_DCMotor motor3(3); // Motor 3 podłączony do kanału M3 AF_DCMotor motor4(4); // Motor 4 podłączony do kanału M4 void setup() { Serial.begin(9600); // Komunikacja z ESP32 Serial.println("Arduino is ready to receive commands"); } void loop() { if (Serial.available()) { char command = Serial.read(); Serial.print("Received command: "); Serial.println(command); switch (command) { case 'F': // Ruch do przodu Serial.println("Moving forward"); motor1.setSpeed(255); // Maksymalna prędkość motor1.run(FORWARD); motor2.setSpeed(255); motor2.run(FORWARD); motor3.setSpeed(255); motor3.run(FORWARD); motor4.setSpeed(255); motor4.run(FORWARD); break; case 'B': // Ruch do tyłu Serial.println("Moving backward"); motor1.setSpeed(255); motor1.run(BACKWARD); motor2.setSpeed(255); motor2.run(BACKWARD); motor3.setSpeed(255); motor3.run(BACKWARD); motor4.setSpeed(255); motor4.run(BACKWARD); break; case 'R': // Skręt w prawo Serial.println("Turning right"); motor1.setSpeed(255); motor1.run(FORWARD); motor2.setSpeed(255); motor2.run(BACKWARD); motor3.setSpeed(255); motor3.run(FORWARD); motor4.setSpeed(255); motor4.run(BACKWARD); break; case 'L': // Skręt w lewo Serial.println("Turning left"); motor1.setSpeed(255); motor1.run(BACKWARD); motor2.setSpeed(255); motor2.run(FORWARD); motor3.setSpeed(255); motor3.run(BACKWARD); motor4.setSpeed(255); motor4.run(FORWARD); break; case 'S': // Stop Serial.println("Stopping"); motor1.setSpeed(0); motor1.run(RELEASE); motor2.setSpeed(0); motor2.run(RELEASE); motor3.setSpeed(0); motor3.run(RELEASE); motor4.setSpeed(0); motor4.run(RELEASE); break; default: Serial.println("Unknown command"); break; } } } #include <WiFi.h> // Nazwa i hasło sieci Wi-Fi const char* ssid = "RC_CONNECTION"; const char* password = "12345678"; // Inicjalizacja serwera WiFiServer server(80); // Piny dla Serial1 const int RX_PIN = 16; const int TX_PIN = 17; void setup() { Serial.begin(115200); Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); // Używamy Serial1 do komunikacji z Arduino // Ustawienie ESP32 jako Access Point WiFi.softAP(ssid, password); Serial.println("Access Point utworzony:"); Serial.print("SSID: "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.softAPIP()); // Uruchomienie serwera server.begin(); } void loop() { WiFiClient client = server.available(); // Sprawdzenie, czy są klienci if (client) { Serial.println("New connection"); String currentLine = ""; // do trzymania danych z klienta while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // Wysyła komendę do komputera przez Serial if (c == '\n') { // Przetwarzanie żądania GET Serial.println("Processing request:"); Serial.println(currentLine); // Wysłanie komendy do Arduino przez Serial1 if (currentLine.indexOf("GET /?State=F") >= 0) { Serial1.println("F"); } else if (currentLine.indexOf("GET /?State=B") >= 0) { Serial1.println("B"); } else if (currentLine.indexOf("GET /?State=R") >= 0) { Serial1.println("R"); } else if (currentLine.indexOf("GET /?State=L") >= 0) { Serial1.println("L"); } else if (currentLine.indexOf("GET /?State=S") >= 0) { Serial1.println("S"); } // Wysłanie odpowiedzi do klienta client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("Komenda otrzymana"); client.println(); break; } else if (c != '\r') { currentLine += c; } } yield(); // Dodanie yield() w celu uniknięcia resetowania przez watchdog } client.stop(); Serial.println("Client Disconnected"); } delay(10); // Dodanie niewielkiego opóźnienia, aby odciążyć procesor }
- 3 odpowiedzi
-
- ESP32-wroom
- Motor Shield
- (i 3 więcej)
-
Miernik smogu z pomiarem podstawowych parametrów pogodowych
cooltechproject opublikował temat w Projekty - DIY
W zeszłym tygodniu zabrałem się za kolejny ciekawy projekt, miernik poziomu jakości powietrza z pomiarem podstawowych parametrów pogodowych. Nie będę się rozpisywał na temat projektu gdyż jest on doskonale opisany przez autora na stronie: https://github.com/hackerspace-silesia/Smogomierz, ja osobiście korzystałem z tej instrukcji. Części: WiFi ESP8266 NodeMCU v3 czujnik cząstek stałych PM 1, 2.5 i 10 - PMS7003 adapter do czujnika PMS czujnik temperatury, wilgotności i ciśnienia BME280 Złożenie całości zajmuje nie więcej niż 15 minut. W kolejnym kroku ładujemy kod (zgodnie z instrukcją) ja skorzystałem z gotowej paczki Smogly. System po skonfigurowaniu przez panel WWW jest gotowy do współpracy z popularnymi serwisami monitorującymi typu AirMonitor, aui.eco, Luftdaten.info czy thingspeak (z którego w moim przypadku korzystam jako pośrednika danych w celu ich wysyłki do 'Ramki cyfrowej - centrum informacji' - opisywanej w innym wątku. Po zamontowaniu całości w obudowie, zapewnieniu przepływu powietrza, całość działa bez zarzutu (aktualnie w trakcie testowania). W celu codziennego monitorowania parametrów najbardziej sprawdzi się wg mnie serwis aqi.eco, z którym smogly działa bez problemów. Serwis aqi.eco automatycznie generuje dedykowaną stronę dla każdego czujnika na której można sprawdzić bieżące odczyty oraz historię długoterminową na wykresach. W serwisie jest też dostępna mapa czujników w Polsce i Europie. Po testach podzielę się z Państwem wrażeniami i opinią. -
Cześć, Mam problem z połączeniem się z internetem przez moje wifi (ruter TP-lint na kartę sim). Co ciekawe raspberry bez problemy łączy się z internetem przez hospot telefonu. Moje Raspberry Pi 4B 2GB zainstalowałem na nim system 2023-02-21-raspios-bullseye-arm64. Mam jeszcze Raspbbery Pi 3 i łączy się bez problemu. Przeinstalowałem już sysytem i to nie pomogło. Co mogę sprawdzić w pierwszej kolejności?
-
Dzień dobry, mam Chińską kamerę, która nie chce połączyć się z wifi, nie wiem jakich aplikacji użyć by ją konfigurować, na kamerze nie ma numeru UID. Niestety kamery nie da się podłączyć przez przewód LAN z względu na jej lokalizacje. Wszystkie aplikacje wymagają numeru UID którego nie ma a po zeskanowaniu kodu QR wyskakuję błąd UID.
-
Witam, mam problem nagłej potrzeby. Prostu układ: esp8266 nodemcu v3 podłączony pod zasilacz impulsowy 12V przekaźnik 8 kanałowy z optoizolacją zasilany na 5V Z Zasilania 12V idzie też prąd na stabilizator 5V - ten zasila tylko i wyłącznie wejście Vcc płytki przekaźnika. problem jest taki, że przekaźnik normalnie działa w przypadku gdy styk IN1 załącze z arduino leonardo. Wszystko jest idealnie z arduino. Natomiast gdy spróbuję to samo zrobić z esp zamiast arduino, to na przekaźniku zapala się tylko LED że 1 styk został załączony, jednak nie słychać nawet charakterystycznego "trzasku" przełączania styku a sam kanał nie działa i nic się nie dzieje oprócz led sygnalizującego załączenie styku. Problem palący czasowo, ktos wie czemu arduino normalnie załącza styk na przekaźniku a esp już nie? I jak to rozwiązać?
-
Witam, Jak zrobić system komunikacji płytki nucleo przez wifi z komputerem. Stm 32 kontroluje silniki i czujniki i przesyła dane do komputera. Program w komputerze podejmuje decyzje i przesyła je do Stm który podejmuje działania. Czy nie lepiej w roli nucleo sprawdził by się komputer jednopłytkowy?
-
Witam. Od trzech tygodni jestem użytkownikiem maliny 4b. Ostatnio zauważyłem pewien problem i nie wiem jak go rozwiązać. Po podłączeniu do sieci wi-fi mimo że widać że połączenie jest w jakości 3/4 kreski, to po próbowaniu otworzenia jakiejkolwiek strony www, wyświetla się że nie ma internetu lub że strona jest niedostępna. Co mam robić i czy reinstalacja systemu NOOBS, może coś pomóc. Sprawdzałem również ustawienia rutera i spróbowałem zrobić to co potrafiłem. Chciałbym również zaznaczyć że ruter widzi urządzenie. Z góry dziękuję za odpowiedzi, sugestie i rozwiązania.
- 4 odpowiedzi
-
- Raspberry Pi
- Raspberry Pi 4
- (i 2 więcej)
-
Cześć, Zwracam się do Was z pytaniem - czy ktoś spotkał się z tym, że musiał usunąć łączność Bluetooth i wifi w konsoli PS3 slim? Jest jeden mikroukład, który odpowiada za obie sieci, wpadłem na pomysł jego wylutowania, ale nie wiem czy nie zakłóci to pracy konsoli.. sprzęt trafił do mojego serwisu, niestety nigdy tego nie robiłem, a chciałbym się tego nauczyć. Będę bardzo wdzięczny za wszystkie odpowiedzi 🙂 pozdrawiam serdecznie !
- 5 odpowiedzi
-
- Początkujący
- PS3
-
(i 3 więcej)
Tagi:
-
Sprzedam Sprzedam elementy do budowy "Czegokolwiek" :)
1endriu990 opublikował temat w Sprzedam/Kupię/Zamienię/Praca
witam mam na sprzedaż kilka , kilkanaście elementów sprzedam wszystko w bardzo okazyjnej cenie , taniej niż z Chin :) Podaję linki tych produktów, oraz link do olx ( kilka aukcji) proszę się nie opierać na tamtych cenach wszystko do dogadania) https://kamami.pl/esp8266/574128-plytka-rozwojowa-d1-mini-v3-wifi-esp8266.html https://www.banggood.com/pl/Geekcreit-D1-Mini-16-Pro-16-Module-+-ESP8266-Series-WiFi-Wireless-Antenna-p-1144951.html?gmcCountry=PL¤cy=PLN&createTmp=1&utm_source=googleshopping&utm_medium=cpc_bgs&utm_content=sxxx&utm_campaign=ssc-pl-all-newcustom-0904&gclid=EAIaIQobChMIq-Xlv8Sb7AIVWeDtCh2xgw00EAYYBSABEgI2C_D_BwE&cur_warehouse=CN https://pl.banggood.com/DC-Power-Shield-V1_0_0-For-D1-Mini-Development-Board-p-1160039.html?cur_warehouse=CN https://www.banggood.com/Geekcreit-AM2302-DHT22-Temperature-And-Humidity-Sensor-Module-Geekcreit-for-Arduino-products-that-work-with-official-Arduino-boards-p-937403.html?rmmds=detail-left-hotproducts__3&cur_warehouse=CN https://botland.com.pl/pl/przekazniki/8228-modul-przekaznika-1-kanal-styki-10a250vac-cewka-5v-5903351241229.html?gclid=EAIaIQobChMI_JrJkMib7AIVheJ3Ch38cQCdEAYYBCABEgI_OvD_BwE-
- arduino
- przekaźnik
-
(i 2 więcej)
Tagi:
-
Dzień dobry cześć wszystkim. Planuję wzmocnić sygnał mojej bezprzewodowej echosondy ktora będzie pływać na łodce radio control . Jest plan aby echosonda łączyła się z malinką poprzez wifi co znacznie zwiększy jej zasięg. Malina sama w sobie ma zbyt mały zasięg chodzi mi o minimum 300 metrów dlatego tylko wchodzi w grę dołożenie do niej antenty 2,4 ghz konkretnie modułowej na 5v bo tyle mają moje akumulatory pakietowe i na tyle działa malina. Nie chce żadnych konwerterów, ponieważ wszytsko razem i tak już będzie ważyć sporo a to znacznie obniży ładowność łódki. Przekonałem cały internet i fora ale nie znalazłem informacji jak to skonfigurować a co ciekawsze żadnej antenty na 5 v która będzie miała na jednym kablu wejscie zasilania oraz będzie można do niej podlaczyc sygnał wifi który będzie nadawać. Widziałem że to da się zrobić ale owy Pan chce za samą usługę 800 zł trochę zbyt dużo jak na takie urządzenie. Załączam zdjęcie jak owy zestaw wygląda. Proszę o jakieś wskazówki albo gdzie ewentualnie mógłbym zacząć szukać, jakieś hasztagi konkretne, może źle szukam.
-
Od pewnego czasu próbuję "pożenić" dwa elementy ze sobą, płytkę do sterowania przekaźnikami z UNO https://botland.com.pl/pl/arduino-shield-ekspandery-wyprowadzen/2731-dfrobot-relay-shield-przekazniki-dla-arduino-v21.html i WiFiXBee https://botland.com.pl/pl/moduly-glowne-xbee/8606-dfrobot-wifibee-mt7681-modul-wifi-xbee.html Ten zestaw ma działać jako samodzielny układ nadzorujący środowisko (sterowanie grzałkami, wentylatorami) z użyciem sensorów (np. DHT21), ale też ma wysyłać dane o środowisku na serwer baz danych InfluxDB, oraz podgląd stanu na zbiorczy "komputer" w postaci albo ESP8266 NodeMCUv3 albo RaspberryPi. Generalnie łączność powinna być po WiFi. No i z tego centralnego "komputera" powinna być możliwość np. włączenia przekaźnika niezależnie od danych środowiskowych - czyli prosty interfejs www. XBee z siecią mi się poprawnie łączy. Mogę otworzyć w przeglądarce jego stronę z konfiguracją gpio. Rozumiem że do wysyłania danych na serwer powinienem użyć XBee jako klienta TCP... niestety nigdzie nie znalazłem jakiegokolwiek przykładu który mógłby mnie naprowadzić na rozwiązanie. Zastanawiam się też czy jednak nie powinien on pracować w trybie AP jeśli ma też przyjmować polecenia z zewnątrz? Wyprzedzające pewne odpowiedzi... Owszem można by użyć innych elementów... jednak zależy mi na tym by wykorzystać to co mam. Coś podpowiecie... w którym kierunku szukać?
-
Witam, korzystam z ESP8266 D1 mini i chcę zrobić projekt, w którym mógłbym sterować serwomechanizmem za pomocą strony internetowej. Na stronie posiadam zwykłego inputa do którego wpisuję wartość, następnie po wciśnięciu przycisku chciałbym aby ta wartość była wysyłana, oraz aby uruchamiał się serwomechanizm, który odchyli się o kąt podany w inpucie. Mój problem polega na tym, że stronę tworzę poprzez Client.println, a skrypt ze strony mam napisany w javascript, przez co nie jestem w stanie wyciągnąć wartości tej zmiennej do arduino, bo dla arduino ta strona jest tylko ciągiem znaków do wyświetlenia. Myślałem nad ewentualnym tworzeniem pliku za pomocą js do którego będzie wpisywana wartość z inputa, a w arduino bym sobie ten plik na spokojnie odczytał. Niestety js z tego co wiem to nie obsługuje tworzenia plików. Mam nadzieję, że przedstawiłem swój problem zrozumiale dla innych oraz, że znajdę kogoś kto mi z tym pomoże.
-
Cześć, ostatnio ćwiczę trochę z pomiarami temperatury i wilgotności czyli DHT + ESP8266. Męczę różne konfigurację bazując na tym kodzie ze strony https://lastminuteengineers.com/esp8266-dht11-dht22-web-server-tutorial/ : #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include "DHT.h" // Uncomment one of the lines below for whatever DHT sensor type you're using! //#define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT21 // DHT 21 (AM2301) #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 /*Put your SSID & Password*/ const char* ssid = "YourNetworkName"; // Enter SSID here const char* password = "YourPassword"; //Enter Password here ESP8266WebServer server(80); // DHT Sensor uint8_t DHTPin = D8; // Initialize DHT sensor. DHT dht(DHTPin, DHTTYPE); float Temperature; float Humidity; void setup() { Serial.begin(115200); delay(100); pinMode(DHTPin, INPUT); dht.begin(); Serial.println("Connecting to "); Serial.println(ssid); //connect to your local wi-fi network WiFi.begin(ssid, password); //check wi-fi is connected to wi-fi network while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected..!"); Serial.print("Got IP: "); Serial.println(WiFi.localIP()); server.on("/", handle_OnConnect); server.onNotFound(handle_NotFound); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); } void handle_OnConnect() { Temperature = dht.readTemperature(); // Gets the values of the temperature Humidity = dht.readHumidity(); // Gets the values of the humidity server.send(200, "text/html", SendHTML(Temperature,Humidity)); } void handle_NotFound(){ server.send(404, "text/plain", "Not found"); } String SendHTML(float Temperaturestat,float Humiditystat){ String ptr = "<!DOCTYPE html> <html>\n"; ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n"; ptr +="<title>ESP8266 Weather Report</title>\n"; ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n"; ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n"; ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n"; ptr +="</style>\n"; ptr +="</head>\n"; ptr +="<body>\n"; ptr +="<div id=\"webpage\">\n"; ptr +="<h1>ESP8266 NodeMCU Weather Report</h1>\n"; ptr +="<p>Temperature: "; ptr +=(int)Temperaturestat; ptr +="°C</p>"; ptr +="<p>Humidity: "; ptr +=(int)Humiditystat; ptr +="%</p>"; ptr +="</div>\n"; ptr +="</body>\n"; ptr +="</html>\n"; return ptr; } Mam jednak kilka uwag i pytań. Podczas podgrywania programu (lub resetu/wyłączenia zasilania) moduł dht musi być odłączony od układu ESP. W innym wypadku program się nie podegra (w przypadku resetu nie wystartują pomiary). Dodałem w kodzie, zasilanie układu dht, po kilku sekundach od podegrania/resetu, dzięki temu moduł DHT działa prawidłowo. Pytanie brzmi dlaczego tak się dzieje? Czy jest to jakiś konflikt na magistrali 1-wire?? Wyczytałem że dht korzysta z takiej właśnie (zmodyfikowanej) magistrali. Jeśli to jest ta przyczyna to może ktoś zna szczegóły? Jeśli to coś innego to co? 🙂 Kolejna moja zagwozdka to czy jest możliwość podgarnia programu a dopiero później zadeklarować nazwę sieci i hasło? Myślałem wstępnie o wpisywaniu tego przez konsolę szeregową ale czy jest to możliwe? A jeśli tak to zapisy do zmiennej a następnie reset całego układu i to wszystko wywołane z konsoli szeregowej? Ponieważ trochę się już nad tym zastanawiam proszę o jakąś podpowiedź. 🙂 Pozdrawiam.
- 12 odpowiedzi
-
- Esp8266 nodemcu
- dht11
-
(i 1 więcej)
Tagi:
-
1. Wprowadzenie Pewnego dnia zapragnąłem stać się właścicielem lampki nocnej RGB, którą mógłbym sterować smartfonem przy wykorzystaniu przeglądarki internetowej. Z możliwością sterowania w przyszłości takimi systemami, jak Domoticz, czy też asystentem takim jak Google Home Mini, czy Alexa Amazon. Nie potrzebuje dużej mocy, aby na przykład móc czytać przy jej świetle literaturę piękną, a raczej preferuję podejście proekologiczne w zużyciu energii. Lampka ma pełnić funkcję głównie dekoracyjną tworząc przyjemny nastrój w pomieszczeniu. Przeglądając ofertę dostępnych na rynku rozwiązań doszedłem do wniosku, że ceny tego typu urządzeń są w moim mniemaniu bardzo wysokie, więc postanowiłem zbudować lampkę własnoręcznie. Moją uwagę przykuł jeden z modeli marki Xiaomi, a mianowicie Mi Bedside Lamp (cena to około 250 pln). Na tym projekcie będę bazował podczas budowy. Całość planuję wykonać z materiałów ekologicznych, oczywiście w miarę moich skromnych możliwości. 1.1. Lampka nocna Mi Bedside Lamp Silver. 1.2. Lampka nocna Mi Bedside Lamp Silver – schemat budowy wewnętrznej. 1.3. Lampka nocna Mi Bedside Lamp Silver – prezentacja wyglądu podświetlenia w różnych kolorach. 2. WS2812 Według producenta WS2812 jest on inteligentnym sterownikiem LED z wbudowanym źródłem światła. Bliższe rzeczywistości jest jednak stwierdzenie, że układ ten składa się zazwyczaj z diody RGB 5050 z wbudowanym w nią sterownikiem WS2811. Należy zaznaczyć, że rozwiązanie to produkowane jest wielu typach obudów. Ogromną zaletą takiego rozwiązania w przeciwieństwie do konwencjonalnych diod RGB jest możliwość szeregowego łączenia i sterowania niemalże dowolną liczbą diod za pomocą pojedynczego przewodu sygnałowego z cyfrowego pinu mikrokontrolera. 2.1. Schemat szeregowego połączenia WS2812. Na rynku dostępne jest wiele wersji WS2812 w różnych obudowach. Dość popularną wersją, która została wykorzystana tym w projekcie jest wersja WS2812B w obudowie 5050. Wersja WS2812 posiada sześć nóżek, natomiast wersja z dopiskiem B tylko cztery. Największą różnicą między modelami bez dopisku B i z dopiskiem jest zabezpieczenie przed odwrotnym podłączeniem zasilania diody dla wersji B, co w przypadku standardowej wersji skutkuje zniszczeniem elementu. 2.2. Pojedyncza dioda WS2812 w wersji obudowy 5050. 2.3. Pojedyncza dioda WS2812B w wersji obudowy 5050. 2.4. Schemat szeregowego łączenia WS2812B. Podczas pracy z WS2812 niezależnie od wersji należy pamiętać, aby: Nie przekraczać napięcia zasilania powyżej 5V, ponieważ uszkodzimy układ. Dodać kondensator elektrolityczny o pojemności od 100µF do 1000µF (na 6.3V lub wyższy) przy zasilaniu pierwszej diody. Dodać rezystor o wartości od 300Ω do 1kΩ pomiędzy mikrokontrolerem, a pierwszym pinem DIN i aby umieść go jak najbliżej diody. W miarę możliwości jak najbardziej skrócić odległość pomiędzy mikrokontrolerem, a pierwszą diodą. Nie podłączać diod przy włączonym zasilaniu. Jeśli nie mamy innego wyboru, to należy zachować kolejność: masa, zasilanie, linia sterująca, a odłączamy w odwrotnej kolejności. Jeżeli diody zasilane są z oddzielnego źródła zasilania, to najpierw należy doprowadzić zasilanie do diod, a następnie do mikrokontrolera. 3. Projekt i narzędzia Główną część lampy stanowi szklany słoik, wewnątrz są warstwy rozpraszające światło w postaci arkusza kalki technicznej i białego papieru. Całość została osadzona w kartonowej podstawie. Całość będzie składała się z: Szklany słoik, najlepiej wypiaskowany aby dobrze rozpraszał światło. Ja użyłem słoika Ikea Dropper, ale nada się każdy inny podobny. Ten, którego użyłem nie jest idealny, ponieważ nie jest w całości wypiaskowany. Kalka techniczna do rozpraszania światła. Pomaga uzyskać lepsze rozproszenie, zwłaszcza gdy piaskowanie nie jest całkowite. Kartka białego papieru A4. Również pomocna przy rozpraszaniu, warto wąski pasek umieścić przy tuż przy diodach. Karton, tektura. Do do budowy podstawy, jeśli nie umiemy sobie takiej podstawy wyrzeźbić na przykład z drewna lub nie mamy drukarki 3D. Klej biurowy, przeźroczysta taśma klejąca. Ładowarka z wyjściem USB 5V 1A+. Taka, jakiej używa się się do ładowania większości smartfonów. Kabel USB – micro USB o długości dostosowanej do własnych potrzeb. W projekcie zastosowałem taki o długość 100 cm. Kondensator elektrolityczny w przedziale od 100µF do 1000µF na 6.3V. W projekcie został użyty 1000µF 6.3V. Rezystor o wartości od 300Ω do 1kΩ. W projekcie został użyty 470Ω ¼W. Gniazdo wejściowe microUSB do zasilania układu. Z racji braku gniazda użyłem moduły TP4056, co daje dodatkową możliwość zastosowania w przyszłości zasilania bateryjnego z ogniw 18650. Koło / pierścień diod WS2812B + moduł ESP8266 (ESP-01 / ESP-01S) + łącznik ESP-01S/ESP-01 RGB LED. W tym konkretnym projekcie zostało użyte koło z 16 diodami. Lutownica lub stacja lutownicza, stop lutowniczy i topnik. Przewody, kilka cm. Cążki do metalu. Śrubokręt, nożyczki, czy inne narzędzia potrzebne do obróbki wybranego materiału. 3.1. Zestaw składający się z WS2812B, ESP-01 i łącznika. 4. Schemat połączeń Jeśli korzystamy z gotowego zestawu, to schemat połączeń jest bardzo prosty. 4.1. Schemat połączeń wszystkich podzespołów. 5. Kod i programowanie #include <adafruit_neopixel.h> #include <esp8266wifi.h> const char* ssid = "<nazwa_sieci_wifi>"; const char* password = "<haslo_do_sieci_wifi>"; Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, 2, NEO_GRB + NEO_KHZ800); WiFiServer server(80); long aniMillis = 0; byte aniFlag = 0; void setup() { Serial.begin(115200); delay(100); strip.begin(); for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0); strip.show(); } IPAddress ip(192, 168, 0, 100); IPAddress gateway(192, 168, 0, 1); IPAddress subnet(255, 255, 255, 0); WiFi.config(ip, gateway, subnet); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } server.begin(); } void loop() { while (WiFi.status() == WL_CONNECTED) { WiFiClient client = server.available(); if (!client) { return; } while (!client.available()) { delay(10); } String request = client.readStringUntil('\r'); client.flush(); if (request.indexOf("/off") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0); strip.show(); } } // jasnosc if (request.indexOf("/b0") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setBrightness(30); strip.show(); } } if (request.indexOf("/b1") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setBrightness(128); strip.show(); } } if (request.indexOf("/b2") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setBrightness(255); strip.show(); } } // jasnosc end // kolory // bialy if (request.indexOf("/c0") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 255, 255, 255); strip.show(); } } // zoly if (request.indexOf("/c1") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 255, 255, 0); strip.show(); } } // pomaranczowy if (request.indexOf("/c2") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 255, 127, 0); strip.show(); } } // czerwony if (request.indexOf("/c3") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 255, 0, 0); strip.show(); } } // rozany if (request.indexOf("/c4") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 255, 0, 127); strip.show(); } } // magenta if (request.indexOf("/c5") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 255, 0, 255); strip.show(); } } // fioletowy if (request.indexOf("/c6") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 127, 0, 255); strip.show(); } } // niebieski if (request.indexOf("/c7") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0, 0, 255); strip.show(); } } // blekitny if (request.indexOf("/c8") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0, 127, 255); strip.show(); } } // cyjan if (request.indexOf("/c9") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0, 255, 255); strip.show(); } } // wiosenna zielen if (request.indexOf("/c10") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0, 255, 127); strip.show(); } } // zielony if (request.indexOf("/c11") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 0, 255, 0); strip.show(); } } // zielen chartreuse if (request.indexOf("/c12") > 0) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, 127, 255, 0); strip.show(); } } // kolory end client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println(""); client.println(""); client.println(""); client.println("<title>Lampka</title>"); client.println("<meta charset="\"utf-8\"">"); client.println("<meta name="\"apple-mobile-web-app-capable\"" content="\"yes\"">"); client.println("<meta name="\"apple-mobile-web-app-status-bar-style\"" content="\"black\"">"); client.println("<meta name="\"robots\"" content="\"none\"">"); client.println("<meta name="\"viewport\"" content="\"width=device-width," initial-scale="1\"">"); client.println("<style>"); client.println("body {background: #313236; text-align: center; padding: 0; margin: 50px 0;}"); client.println("button {border: 0; font: bold 12px Verdana, sans-serif; color: #000000; width: 85px; height: 85px; border-radius: 50%;}"); client.println(".b0 {background: #000000; color: #ffffff;}"); client.println(".b1 {background: #949494;}"); client.println(".b2 {background: #bdbebd;}"); client.println(".b3 {background: #e9e9e9;}"); client.println(".c0 {background: rgb(255, 255, 255); margin-right: 266px;}"); // bialy client.println(".c1 {background: rgb(255, 255, 0);}"); // zolty client.println(".c2 {background: rgb(255, 127, 0);}"); // pomaranczowy client.println(".c3 {background: rgb(255, 0, 0);}"); //czerwony client.println(".c4 {background: rgb(255, 0, 127);}"); // rozany client.println(".c5 {background: rgb(255, 0, 255);}"); // magenta client.println(".c6 {background: rgb(127, 0, 255);}"); // fioletowy client.println(".c7 {background: rgb(0, 0, 255);}"); // niebieski client.println(".c8 {background: rgb(0, 127, 255);}"); // blekitny client.println(".c9 {background: rgb(0, 255, 255);}"); // cyjan client.println(".c10 {background: rgb(0, 255, 127);}"); // wiosenna zielen client.println(".c11 {background: rgb(0, 255, 0);}"); // zielony client.println(".c12 {background: rgb(127, 255, 0);}"); // zielen chartreuse client.println(".mgb4 {margin-bottom: 4px;}"); client.println(".mgb50 {margin-bottom: 50px;}"); client.println("</style>"); client.println(""); client.println(""); client.println("<a href="\"/b0\""><button class="\"b1" mgb50\"="">MIN</button></a>"); client.println("<a href="\"/b1\""><button class="\"b2" mgb50\"="">50%</button></a>"); client.println("<a href="\"/b2\""><button class="\"b3" mgb50\"="">MAX</button></a>"); client.println("<a href="\"/off\""><button class="\"b0" mgb50\"="">OFF</button></a><br>"); client.println("<a href="\"/c0\""><button class="\"c0" mgb4\"=""></button></a><br>"); client.println("<a href="\"/c1\""><button class="\"c1" mgb4\"=""></button></a>"); client.println("<a href="\"/c2\""><button class="\"c2" mgb4\"=""></button></a>"); client.println("<a href="\"/c3\""><button class="\"c3" mgb4\"=""></button></a>"); client.println("<a href="\"/c4\""><button class="\"c4" mgb4\"=""></button></a><br>"); client.println("<a href="\"/c5\""><button class="\"c5" mgb4\"=""></button></a>"); client.println("<a href="\"/c6\""><button class="\"c6" mgb4\"=""></button></a>"); client.println("<a href="\"/c7\""><button class="\"c7" mgb4\"=""></button></a>"); client.println("<a href="\"/c8\""><button class="\"c8" mgb4\"=""></button></a><br>"); client.println("<a href="\"/c9\""><button class="\"c9\""></button></a>"); client.println("<a href="\"/c10\""><button class="\"c10\""></button></a>"); client.println("<a href="\"/c11\""><button class="\"c11\""></button></a>"); client.println("<a href="\"/c12\""><button class="\"c12\""></button></a>"); client.println(""); client.println(""); delay(10); } setup(); } 6. Efekt końcowy Efekt końcowy prezentuje się tak, jak to widać na poniższych zdjęciach. Należy zaznaczyć, że w rzeczywistości podświetlenie jest bardziej jednolite, niż widać to na zdjęciach. Prawdopodobnie ekspozycja podczas robienia zdjęcia byłą zbyt długa, ale ciężko zrobić w inny sposób zdjęcia w nocy bez dobrego sprzętu. Obsługa lampki odbywa się przez interfejs sieciowy pod adresem 192.168.0.100. 6.1. Interfejs sieciowy pod adresem 192.168.0.100. 6.2. Wnętrze podstawy lampy. 6.3. Warstwy rozpraszające światło bez i z koszem. 6.4. Wybrane kolory.
-
Telegram – darmowy, niekomercyjny bazujący na chmurze obliczeniowej komunikator internetowy. Użytkownicy mogą wysyłać wiadomości, zdjęcia, filmy, naklejki, nagrania oraz pliki różnego typu. Internet rzeczy od dawna wkracza w codzienne życie - inteligentny dom, inteligentny telewizor, a nawet inteligentny czajnik. Podstawą naszych projektów będzie płyta NodeMCU z wbudowanym układem ESP. Jak również małe rzeczy, które ma każdy inżynier elektronik: diody LED, przewody łączące, płytka prototypowa i przewód microUSB do flashowania i zasilania płyty. Schemat podłączenia: Krótka noga diody LED w ziemi, długa szpilka D3. Nie zapominaj, że płyta ma kilka cech w kategorii pinów, więc dołączam pinout. Dodanie nodemcu do Arduino IDE (połączenie pakietu esp8266). Instalacja pakietu ESP8266 będzie konieczna, abyśmy mogli pracować z nodemcu w IDE Arduino. Przed zainstalowaniem pakietu upewnij się, że nie masz zainstalowanej innej wersji. W przeciwnym razie pamiętaj o usunięciu go przed instalacją. A następnie wykonaj proste czynności: Uruchom środowisko programistyczne - Arduino IDE Otwórz ustawienia W polu "Dodatkowe linki do Menedżera płyt" wklej link do pakietu esp8266 http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json Idź do Narzędzia - Płyty- Menedżera płyt Przewiń w dół. Znajdź esp8266. Wybierz wersję 2.3.0. Zainstaluj. W Narzędzia - zakładka wybierz nodemcu. Reszta ustawień płyty zostanie ustawiona automatycznie. Zdjęcia są po-rosyjsku, ale interfejs jest taki sam. Zainstaluj bibliotekę telegram Aby nasz elektroniczny przyjaciel pojawił się na tablicy, będziesz potrzebować biblioteki https://github.com/CasaJasmina/TelegramBot-Library Tworzenie bota telegramu Nadszedł czas, aby stworzyć naszego cyfrowego przyjaciela, który będzie wiernie i łagodnie obsługiwał wszystkie nasze zespoły. Otwórz bot @BotFather. Aby utworzyć nowego bota write /newbot. Postępuj zgodnie z instrukcjami, wybierz nazwę i zaloguj się na nią, a na koniec skopiuj token bota, będziesz potrzebować go podczas flashowania tablicy nodemcu. Oprogramowanie Łączymy potrzebne biblioteki. #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <TelegramBot.h> Wskazujemy pin diody, wifi sieć token bota. #define LED 0 //D3 const char* ssid = "ssid"; const char* password = "password"; const char BotToken[] = "token:token"; Wskazujemy bota WiFiClientSecure net_ssl; TelegramBot bot (BotToken, net_ssl); W void setup ustawiamy szybkość komunikacji z komputerem, spróbujemy połączyć się z Wi-Fi, wpisujemy adres IP urządzenia w sieci, uruchamiamy bota i konfigurujemy pinmode dla diody LED. void setup() { Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println(WiFi.localIP()); bot.begin(); pinMode(LED, OUTPUT); } Patrzymy do void loop. Sprawdzamy, czy mamy nowe wiadomości. message m = bot.getUpdates(); Czytamy wiadomość i robimy odpowiednie żądanie. if (m.text.equals("on")){ digitalWrite(LED, HIGH); bot.sendMessage(m.chat_id, "The Led 1 is now ON"); }else if (m.text.equals("off")){ digitalWrite(LED, LOW); bot.sendMessage(m.chat_id, "The Led 1 is now OFF"); } Szkic: https://drive.google.com/open?id=1QAi0px4sz3RTfgBjZFvs_rP2KBU84z7O Wgrywamy szkic do płyty. Testujemy Gdy, szkic jest na płycie i obwód jest podłączony do źródła prądu, możemy przetestować urządzenie. Wyślijmy “on” lub “off” aby włączyć lub wyłączyć diodę. Druga część artykułu to prototyp domu inteligentnego. Przed rozpoczęciem montażu określmy funkcje tego urządzenia: Kontrola obciążenia AC Sterowanie taśmą LED RGB Informacje o wizycie w lokalu Ekran z notatkami i czasem Informacje o temperaturze, ciśnieniu i wilgotności gleby Pierwszym krokiem w montażu urządzenia wieloskładnikowego będzie praca z chłodzeniem, prototypowaniem i zasilaniem. Zalecam zainstalowanie na chipie radiatore esp12, ponieważ sam układ na płycie nodemcu nagrzewa się nawet bez podłączonych czujników. Planujemy podłączyć dużą liczbę urządzeń I / O i jednocześnie przesyłać dane przez Internet, co bez dodatkowego chłodzenia doprowadzi do awarii. Grzejnik jest mocowany w najprostszy możliwy sposób za pomocą dwustronnej taśmy przewodzącej ciepło (można ją kupić od Chińczyków za 2,5 USD). Jako grzejnik można użyć dowolnego profilu aluminiowego. 2) Dla wygody podłączenia płytki i urządzeń, proponuję podzielić standardową płytkę na części. Bierzemy jedną dużą płytkę i dzielimy ją na pół. Z jednej strony oderwij linię energetyczną. Bierzemy każdy kawałek sklejki i przyklejamy uzyskane części, jak sobie życzysz, ale radzę skupić się na drutach łączących. Dla wygody możesz podpisać linię energetyczną markerem. Najważniejszą częścią przygotowania do montażu - jest zasilianie. Powinno wystarczyć, więc bierzemy ładowarkę na 2 ampery. Wtyczka zasilania powinna być tak umieszczona, abyś mógł wygodnie pracować. Najpierw obróć niepotrzebny przewód USB do zasilacza. Z jednej strony powinna być wtyczka USB, az drugiej dwie nogi z 5 V i ziemią. Dołącz go do linii 5V. OD niej podłącz nodemcu za pomocą czarnego i czerwonego przewodów. 3.3V weźmiemy od płyty, bo ona ma przetwornik napięcia ams1117, który da 800mA, czego nam wystarczy. Weź od płytki 3,3 V i i podłączyć do odpowiedniej linii energetycznej za pomocą czarnych i pomarańczowych przewodów. Prace przygotowawcze zostały zakończone, oznacza to, że nadszedł czas, aby rozpocząć selekcję komponentów w celu rozwiązania tych celów. Zarządzanie gniazdami: aby kontrolować prąd przemienny, potrzebujemy relay. Zarządzanie paskiem LED RGB: aby kontrolować pasek LED, będziemy potrzebować 3 tranzystorów mosfet , 3 rezystorów o 100 om i 3 o 10 kom każdy. Fiksacja ruchu: aby fiksować ruch, potrzebujemy czujnika ruchu PIR. Informacje o temperaturze: do pomiaru temperatury użyjemy czujnika ds18b20. Informacje o ciśnieniu: do pomiaru ciśnienia użyjemy czujnika bmp180. Informacje o wilgotności gleby roślinnej: do pomiaru wilgotności gleby używamy odpowiedniego czujnika. Wyświetl czas i notatki: Aby wyświetlić czas i notatki, potrzebujesz ekranu LCD. Dodatkowe małe rzeczy Problem z breadboardem rozwiązany, ale do niego nadal potrzebne przewody tata-tata i tata-mama. Opornik 4,7 kΩ i pięć diody LED. Wybrano składniki. Łączmy je wszystkie razem. Przed montażem zwracam uwagę na to, że wszystkie moduły będą zasilane 5 woltami, z wyjątkiem ds18b20. Zasilanie uziemienia i taśmy LED muszą być podłączone. Koniecznie sprawdź adres ekranu i2c i adresy czujników temperatury. Oryginalny schemat i obrazek. Czas rzucić szkic na mikrokontroler. Zainstaluj wszystkie niezbędne biblioteki w IDE Arduino. Archiwum biblioteki można pobrać tutaj. Aby zainstalować, po prostu przenieś całą zawartość do folderu z bibliotekami. Uzupełnij adresy czujników temperatury, ekranu, pinów wszystkich modułów, ustawień sieci Wi-Fi, tokena bota. Szkic (nie zapomnij secrerts.h) Teraz, gdziekolwiek jesteś, możesz uzyskać informacje o swoim domu za pomocą telegram bota. Lista działań Relayon - włączyć rele Relayoff - wyłączyć rele Setnote text - zrobić notatkę na lcd Deletenote - usunąć notatkę RGB taśma Red - czerwony Green - zielony Blue - niebieski Off - wyłączyć taśmę Otrzymanie danych Pressure - ciśnienie Temp1 - temperatura pierwszego czujnika Temp2 - temperatura drugiego czujnika Plant - nawilżenie ziemi Last - ostatnia wizyta Timeon - czas uruchomienia systemu Łącząc odrobinę wyobraźni, możesz stworzyć wiele różnych ciekawych urządzeń, a Twój dom będzie naprawdę inteligentny. Na przykład kilka urządzeń z nodeMCU (i dowolną inną odpowiednią płytą) może wysyłać wiadomości o swoich wskaźnikach do telegramu-bota i reagować na te wskaźniki. Na przykład czujnik temperatury napisał do bota, że temperatura w pomieszczeniu wynosi 29 stopni Celsjusza. Urządzenie odpowiedzialne za włączenie wentylatora lub klimatyzatora rozważyło tę informację i zdecydowało włączyć lub wyłączyć chłodzenie, gdy stało się chłodniej. Jako zadanie domowe musisz wykonać automatyczną kontrolę odczytów z czujników, a w przypadku ważnych zdarzeń (gleba stała się sucha lub ktoś przyszedł do twojego domu), aby powiadomić cię przez telegram bota. Na wyniki muszą pisać w komentarzach. To bardzo interesujące, co zrobiłeś.
-
Potrzebuję prosty przykład sterowania gniazdka WiFi z Peceta, najlepiej w Excel VBA. Ktoś poratuje? Wojciech G.