Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt]Sterowanie diodą LED w PHP
Forum PHP.pl > Inne > Oceny
xxdrago
Witam, dzisiaj chciałem pokazać , że php nie służy tylko do tworzenia stron.
Lubie się bawić więc z małą pomocą znajomego stworzyłem sobie skrypt w php którym steruję diodą LED.
Całość jest oparta o CDC-IO (LINK).

Funkcje:
  • Zapal/Zgaś
  • Miganie diody LED (Wolne)
  • Miganie diody LED (Szybkie)
  • Miganie diody LED (Bardzo Szybkie)


Chciałem też dodać , że ta jedna dioda to jest przykład można podpiąć pod to 10 diod i nimi sterować, można też np. gasić światło w pokoju będąc 500km od domu.
Czego tylko człowiek zapragnie smile.gif

Udostępniam skrypt nie jest on napisany jakoś optymalnie, jest tylko przykładem jak to wygląda.
(Mogłem w sumie napisać ładnie funkcje biggrin.gif)

KOD:
  1. <?php
  2. ?>
  3. <form name="post" action="index.php" method="POST">
  4. <?php
  5. include("php_serial.class.php");
  6. $serial = new phpSerial();
  7. $serial->deviceSet("COM8:");
  8. $serial->confBaudRate(115200);
  9. $serial->confParity("none");
  10. $serial->confCharacterLength(8);
  11. $serial->confStopBits(1);
  12. $serial->confFlowControl("none");
  13.  
  14. if ($_SESSION['dane'] == 'zapalona') {
  15. echo '
  16. <input type="submit" name="opcja_1" value="Zgas"><br>';
  17. }
  18. if ($_SESSION['dane'] == '') {
  19. echo '
  20. <input type="submit" name="opcja_2" value="Zapal"><br>
  21. <form name="post" action="index.php" method="POST">';
  22. }
  23.  
  24. if ($_POST['opcja_1']) {
  25. $serial->deviceOpen();
  26. $serial->sendMessage("ff ddrb =\r");
  27. usleep(2000);
  28. $serial->sendMessage("00 portb =\r");
  29. $_SESSION['dane'] = '';
  30. header('Location: index.php');
  31. }
  32. if ($_POST['opcja_2']) {
  33. $serial->deviceOpen();
  34. $serial->sendMessage("ff ddrb =\r");
  35. usleep(2000);
  36. $serial->sendMessage("01 portb =\r");
  37. $_SESSION['dane'] = 'zapalona';
  38. header('Location: index.php');
  39. }
  40. if ($_POST['opcja_3']) {
  41. $serial->deviceOpen();
  42. $serial->sendMessage("ff ddrb =\r");
  43. usleep(2000);
  44. for ($i = 1; $i <= 5; $i++) {
  45. $serial->sendMessage("01 portb =\r");
  46. usleep(1000000);
  47. $serial->sendMessage("00 portb =\r");
  48. usleep(1000000);
  49. }
  50. header('Location: index.php');
  51. $serial->deviceClose();
  52. }
  53. if ($_POST['opcja_4']) {
  54. for ($i = 1; $i <= 5; $i++) {
  55. $serial->deviceOpen();
  56. $serial->sendMessage("ff ddrb =\r");
  57. usleep(2000);
  58. $serial->sendMessage("01 portb =\r");
  59. usleep(500000);
  60. $serial->sendMessage("00 portb =\r");
  61. usleep(500000);
  62. }
  63. header('Location: index.php');
  64. $serial->deviceClose();
  65. }
  66. if ($_POST['opcja_5']) {
  67. $serial->deviceOpen();
  68. $serial->sendMessage("ff ddrb =\r");
  69. usleep(2000);
  70. for ($i = 1; $i <= 30; $i++) {
  71. $serial->sendMessage("01 portb =\r");
  72. usleep(100000);
  73. $serial->sendMessage("00 portb =\r");
  74. usleep(100000);
  75. }
  76. header('Location: index.php');
  77. $serial->deviceClose();
  78. }
  79.  
  80. ?>
  81. <input type="submit" name="opcja_3" value="Miganie diody LED (Wolne)"><br>
  82. <input type="submit" name="opcja_4" value="Miganie diody LED (Szybkie)"><br>
  83. <input type="submit" name="opcja_5" value="Miganie diody LED (Bardzo Szybkie)"><br>
  84. </form>


żeby całość chodziło wymagana jest klasa: PHP SERIAL

A tutaj przykładowy filmik jak to wygląda:
http://youtu.be/X8CEi_AFMlo

Wiem, że jakość filmu jest do "dupy" w najbliższym czasie pojawi się ładny filmik w HD smile.gif
strife
No no gratuluje pomysłu, fajnie to wygląda smile.gif

To teraz możesz sobie zrobić miganie, gdy nowy post na forum ktoś napisze biggrin.gif

Co do filmiku fajnie jakbyś zrobił dwa ujęcia, jedno gdy klikasz drugie, które jest efektem tego co zrobiłeś czyli widok samej diody.
xxdrago
hehe, miało być tak jak ty mówisz ale miałem małe problemy, a chciałem się pochwalić znajomym.

Co do tego mrugania jak nowy post ciekawy pomysł tylko nie mam dostępu do bazy/plików biggrin.gif

TheSnake
Przecież to inny program tym steruje, a Ty z PHP tylko go odpalasz...

P.S. Nikt nie mówił, że PHP jest tylko do tworzenia stron, ale po co skoro są lepsze narzędzia do takich rzeczy.
xxdrago
Ja z poziomu php wysyłam komendy do Atmegi wink.gif , wiem że są lepsze ale po co jak umiem PHP? na sam początek w sam raz smile.gif
#luq
Fajny pomysł, tylko dużo łatwiej byłoby sterować z wiersza poleceń.
Chwila roboty to będzie.

Co do samego kodu no nie poraża, ale tak jak piszę - pomysł fajny.
Damonsson
Noo muszę przyznać, że świetny pomysł, może jakiś patent na to ;D
toaspzoo
Co do nowych postów to można przecież porównywać ze starą wczytaną stronką itp.

Przecież posty są oznaczone Post #7 itp.
mls
Od siebie dodam, że do obsługi komunikacji z portami znacznie wygodniejsza w użyciu jest biblioteka DIO. Mam napisany niejeden już projekt w którym PHP komunikuje się z jakimś urządzeniem (najczęściej Arduino lub modem) i ta biblioteka działa najszybciej i najstabilniej.
Niestety, przyjęło się, że PHP to język pomagający tworzyć serwisy internetowe. A tak wcale nie jest - jest to jak najbardziej normalny język programowania, w którym spokojnie można pisać np. wielowątkowe serwery komunikujące się z określonym sprzętem lub nawet całkiem łatwo stworzyć serwer SMS. Pomysłów jest ogrom, trzeba tylko przestać myśleć o PHP jako o "Personal Home Page"... wink.gif
!*!
Cytat(mls @ 11.02.2012, 14:20:17 ) *
nawet całkiem łatwo stworzyć serwer SMS.


Ciekawe, napisz coś więcej.
cepa
Cytat(mls @ 11.02.2012, 15:20:17 ) *
Niestety, przyjęło się, że PHP to język pomagający tworzyć serwisy internetowe. A tak wcale nie jest - jest to jak najbardziej normalny język programowania, w którym spokojnie można pisać np. wielowątkowe serwery komunikujące się z określonym sprzętem lub nawet całkiem łatwo stworzyć serwer SMS. Pomysłów jest ogrom, trzeba tylko przestać myśleć o PHP jako o "Personal Home Page"... wink.gif


a widziales w php jakiekolwiek wsparcie dla watkow, mutexow itp nie wspominajac o braku zarzadzania zasobami?
php to jezyk do tworzenia aplikacji internetowych, nawet nie do wszystkich i czas najwyzszy sie z tym pogodzic, do pewnych zastosowan sie nadaje do innych nie

co do pomyslu sterowania ledem... jako ciekawostka spoko,
ale nie traktowal bym tego w kategorii "o jaki zajebisty jest php bo mozna diode zapalic na comie" bo to mozna bylo zrobic jednym poleceniem w C 20 lat temu tongue.gif


Cytat(!*! @ 11.02.2012, 21:52:04 ) *
Ciekawe, napisz coś więcej.


chociazby http://gnokii.org/

problemem nie jest to czy sie da / jak wyslac sms, tylko jak wyslac/odebrac DUZO sms'ow (skala) tongue.gif
mls
Cytat(!*! @ 11.02.2012, 20:52:04 ) *
Ciekawe, napisz coś więcej.


Daemon w PHP komunikujący się bezpośrednio z modemem (np. na porcie szeregowym) zajmujący się po pierwsze pobieraniem danych z kolejki (baza danych), konwersją na PDU i wysłaniem tego do modemu a po drugie - odczytujący (co określony interwał czasowy lub asynchronicznie, w zależności od modemu) nowe odebrane wiadomości i wrzucający je do bazy.
Do tego klient WWW do zarządzania kolejką i do odczytu wiadomości.
xxdrago
Ja dałem, przykład z diodą znajomy zrobił sobie coś takiego:
http://www.youtube.com/watch?v=4JQKcl2n9-w...eature=youtu.be

PS: za te posty sie biorę.
Speedy
Wielkiej filozofii nie ma. Wysyłasz komendę na port szeregowy, do którego jest podpięty jakiś mikrokontroler z diodą i tyle.
Jeśli jest to jakiśtam projekt na początek, to ok, ale nie zachwycałbym się szczególnie czymś takim.
pisii35
Na mnie też jakoś to wielkiego wrażenia nie zrobiło...
corran_horn
bardzo ciekawy pomysłsmile.gif
Spawnm
Cytat(cepa @ 14.02.2012, 23:46:02 ) *
a widziales w php jakiekolwiek wsparcie dla watkow, mutexow itp

Z tych itp. można by dać phpowy pcntl, da się na nim stworzyć klasy działające podobnie do wielowątkowości.

A pomysł z tematu fajny, bardziej ciekawostka, jednak fajne biggrin.gif
Fifi209
Cytat(xxdrago @ 15.02.2012, 20:04:10 ) *
Ja dałem, przykład z diodą znajomy zrobił sobie coś takiego:
http://www.youtube.com/watch?v=4JQKcl2n9-w...eature=youtu.be

Podziwiam! Bardzo fajne, oryginalny pomysł smile.gif
piotrooo89
u nas w firmie sterujemy wiatrakiem za pomocą php i mamy zawsze świeże powietrze biggrin.gif
xxdrago
Cytat(piotrooo89 @ 21.02.2012, 15:09:52 ) *
u nas w firmie sterujemy wiatrakiem za pomocą php i mamy zawsze świeże powietrze biggrin.gif

I potem wam wiedzę wywiewa, wielu pisze , że wybrałem zły język ja się z tym nie zgadzam, można też to zrobić w c++? Ale po co? Skoro umiem php.Nie wiem ale kocham ten język i się nim fascynuje zakochany.gif zakochany.gif

Pozdrawiam
Orzeszekk
Cytat(xxdrago @ 21.02.2012, 15:40:32 ) *
I potem wam wiedzę wywiewa, wielu pisze , że wybrałem zły język ja się z tym nie zgadzam, można też to zrobić w c++? Ale po co? Skoro umiem php.Nie wiem ale kocham ten język i się nim fascynuje zakochany.gif zakochany.gif

Pozdrawiam


poznasz w takim samym stopniu inny, to pokochasz bardziej.
gothye
ja dla odmiany 2 lata temu popełniłem stację meteo :



czujnik DS18B20 podłączony do Attiny2313[oprogramowanie w C] => MAX232 => Debian

Demon [c] odpytuje czujnik o temperaturę co minutę i zapisuje do bazy (mysql) potem na www za pomocą PHP

Jak znajdę chwilę wolnego czasu ,dołożę czujnik ciśnienia atmosferycznego , oraz pomiar wilgoci powietrza .
Sam serwer na debianie oprócz udostępniania plików , serwera www i sql ,od nie dawna pełni rolę "mózgu" całego domku wink.gif

Nie dawno powstał pomysł aby dołączyć do niego magistralę rs485 a z tej magistrali odpytywać konkretne urządzenia wejścia/wyjścia

a to zdjęcie tyłu serwera , i zamieszczonego modułu z attiny2313

Fifi209
Sam zrobiłeś obudowę do tego serwera? I z ciekawości jaki masz tam zasilacz?

I co miałeś na myśli pisząc, że pełni rolę "mózgu" domu?
gothye
Obudowa serwera jest fabryczna Fractal Design Array Mini ITX NAS
z zasilaczem 300W ,ale zamontowana płyta ITX pobiera 15W , 2 dyski 3.5" każdy po 25W , więc pobór prądu jest znikomy , a na serwerze z procesorem 1.5Ghz atom i 2Gb RAM ,mogę śmiało testować stronki ,(co najciekawsze na serwerze czas ładowania stron jest 2 razy mniejszy jak na laptopie z Dual Core smile.gif )

"Mózg" , za mocą serwera odbywa się sterowanie oświetleniem ,ogrzewaniem ,pomiarem mocy pobieranej w danej gałęzi zasilania w domu , jest na chwile obecną zamontowanych 22 czujki ruchu ,4 czujki CO , ok 20 kontaktronów w oknach . ,sterowanie bramą wjazdową .

ekspander wejść



topologia systemu :



moduł ekspandera przed zmontowaniem:

po zmontowaniu i uruchomieniu :


moduł GSM :


wysyła/odbiera komunikaty z zewnątrz z 16 numerami max .

pod centrala do zasilania / ładowania akumulatorów.




Demon sterujący napisany jest w C , od niedawna implementuje w nim sieć neuronową w wolnych chwilach .zdjęcia przedstawiają system z przed 2 lat ,obecnie nieco inaczej wygląda i troszkę się zmieniło
Fifi209
No jestem pod wrażeniem, a te kontaktrony normalnie kabelkami podłączyłeś czy jakoś bezprzewodowo?

I co masz na myśli sterowanie bramą? Bramą to chyba wygodniej z pilota smile.gif
gothye
Wewnątrz budynku wszytko wykonane jest przewodowo , w sumie ok 2km przewodu 6x0.35 mm2 zużyłem na instalację .
Z bramą akurat inne podejście wykonałem ,aby mechanizm suwny bramy był zasilany z zasilania rezerwowego w przypadku padu zasilania (kiedyś mi się dość często zdarzało ) . Sterowanie otwarcia oczywiście odbywa się z pilota radiowego (433MHz) ale o otwarciu bramy decyduje dalej serwer smile.gif aby uniknąć możliwego włamania ,po za tym przy naruszeniu strefy/stref pod czas czuwania jest brane wiele innych warunków ,lecz nie chcę teraz za bardzo się rozpisywać na ten temat .

Nie dawno znalazłem oprogramowanie dla Debiana umożliwiające wykorzystanie serwera jako rejestratora CCTV z możliwością podglądu przez www (przewody mam już poprowadzone ) więc myślę że na wiosnę zacznę nieco modernizacje systemu smile.gif
Fifi209
Powiem Ci imponujesz mi smile.gif Sam najchętniej bym WSZYSTKO podłączył do komputera i sterował biggrin.gif



Sam planuję zakupić coś takiego: http://www.whelectronics.pl/karta-przekaz%...6.html?cPath=21
I zacząć się bawić smile.gif szkoda, że te przekaźniki tylko na jeden styk ;/
xxdrago
Cytat(Fifi209 @ 23.02.2012, 19:47:01 ) *
Powiem Ci imponujesz mi smile.gif Sam najchętniej bym WSZYSTKO podłączył do komputera i sterował biggrin.gif



Sam planuję zakupić coś takiego: http://www.whelectronics.pl/karta-przekaz%...6.html?cPath=21
I zacząć się bawić smile.gif szkoda, że te przekaźniki tylko na jeden styk ;/

Wiesz, co w internecie można już kupić coś takiego jak ja mam za około 60 zł i możesz tym sterować 512 diod led z poziomu pc (oczywiście zdałby się do dużej ilości diod stabilizator ULN2003A koszt około 2 zł jeden). Tylko trzeba mieć trochę wiadomości na temat i po prostu lubić się bawić. Arktura ja dla do mikrokontrolera wysyłam dane tak: 00000001 binary gdzie 1 to dioda zapalona gdzie 0 to zgaszona (00000011 - 2 diody się palą od prawej strony), potem to zamieniasz na decimal czyli
00000001 to jest 1 Decimal i 1 Hexadecimal do atmega wysyłasz w hex. To tak w skrócie mniej więcej jak to działa smile.gif
Fifi209
A mógłbyś zarzucić jakimś linkiem? Szczerze nie ma znaczenia jak tym steruje bo oprogramowanie sam sobie chce napisać, w ramach nauki i zabawy, więc to że tam dają program to nie jest wyznacznik dla mnie.

Ogólnie chciałbym połączyć dwa zainteresowania: programowanie i elektronika
Jednak nie potrafię znaleźć jakiś dobrych polskich materiałów, więc chyba metodą prób i błędów.
gothye
zakładając że sterujesz z USB np za pomoca FT232 => jako konerter RS232 ,w linux wysyłanie komend z poziomu php na port rs232 jest banalnie proste ,potem już tylko jakiś AVR'ek np Atmega8 i multipleksowanie na 74HC574 i możesz wiele portów dzięki temu uzyskać .

Jak nie chcesz multipleksować możesz użyć ekspanderów na I2C np PCF'a

kod do obsługi RS232 i peryferii z poziomu AVR jest do znalezienia w necie ,polecam forum elektroda.pl do poszukiwania wink.gif
Fifi209
@up
Wcale nie interesuje mnie sterowanie za pomocą PHP ;p
gothye
więc powyższy przykład można potraktować dowolnym językiem programowania w sterowaniu wink.gif
xxdrago
Fifi209, ogólnie to w Google jest trochę tego...
Tutaj masz schemat:
http://www.recursion.jp/avrcdc/cdc-io.html#usage

Ale lepiej kupić zaprogramowaną atmege, no chyba , że masz programator. Ja aktualnie mam zamiar zrobić wyświetlaczu prosty zegarek w PHP biggrin.gif
Rzuć sobie hasłem: multipleksowanie w G. Bardzo prosty przykład smile.gif ....


gothye, pokaż ten sterownik do pieca CO smile.gif
mls
Skoro już tak się chwalimy swoim "hardware"... to od siebie też coś wrzucę wink.gif
http://youtu.be/SkNko-P37Io

Zbudowany kilka lat temu, dość prosty termometr oparty na Arduino i kilku czujnikach Dallas DS18B20/18S20. Żeby nie było, że nie w temacie PHP - dane o temperaturach są na bieżąco wysyłane do serwerka napisanego w PHP i uruchomionego jako daemon na domowym serwerze z Ubuntu.
gothye
Cytat(xxdrago @ 28.02.2012, 16:19:31 ) *
gothye, pokaż ten sterownik do pieca CO smile.gif



dopiero teraz znalazłem do niego zdjęcia :



marcio
Cytat
Ja aktualnie mam zamiar zrobić wyświetlaczu prosty zegarek w PHP

Tez chce sobie zbudowac zegarek za pomoca display bede musial zaporzyczyc kilka komponentow ze szkoly i poprosic pana zeby pomogl mi zrobic zasilanie za pomoca baterii ;p
piterek-23
-> gothye

Czy poprzez moduł GSM da się sterować Twoim domem przez SMS ?
Fifi209
Cytat(piterek-23 @ 19.04.2012, 18:08:11 ) *
Czy poprzez moduł GSM da się sterować Twoim domem przez SMS ?


Wiadomość od Dom:
Cześć, gdzie jesteś? Za ile mam otworzyć bramę


;d
gothye
Cytat(piterek-23 @ 19.04.2012, 18:08:11 ) *
-> gothye

Czy poprzez moduł GSM da się sterować Twoim domem przez SMS ?


Tak smile.gif
piterek-23
Cytat(gothye @ 20.04.2012, 20:31:35 ) *
Tak smile.gif


A możesz coś więcej powiedzieć na ten temat: jak, w jaki sposób itd. ? Lub chociaż podesłać jakieś linki.

Poszukuje jakiś informacji, żeby wykonać coś takiego: wysyłam jakiś określony SMS na swojego kompa, a on po odebraniu uruchamia określony skrypt.

Do dyspozycji mam modem USB (HUAWEI E160G) i telefon SonyEricsson (K770i)
Działam na systemie Linux Ubuntu 10.04

Próbowałem na modemie: gammu i minicom. Za pomocą komend AT potrafię wysłać i odebrać SMS, zadzwonić...
Jak to zrobić żeby działało jak sobie wymyśliłem ?


Cytat(Fifi209 @ 19.04.2012, 22:31:23 ) *
Wiadomość od Dom:
Cześć, gdzie jesteś? Za ile mam otworzyć bramę


;d


Bez komentarza...


gothye
U mnie bramka SMS na SIM300 połączona jest z resztą systemu komunikowało się na początku za pomocą RS485 (obecnie CAN)
To co serwer uruchamia zależy od komunikatu ,numeru telefonu z którego doszedł oraz przypisanej temu akcji .
Na debian'a napisałem aplikację (demona) w C który ma połączenie z bazą SQL (Mysql) pobierając dane z bazy i jednocześnie z magistrali systemowej ,następuje sterowanie resztą systemu .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.