RaspberryPi software PWM przez przeglądarkę

RaspberryPi software PWM przez przeglądarkę

Niedawno na mym biurku wylądowała nowiutka Malinka. Pomysłów na wykorzystanie jej miałem już w głowie mnóstwo. Jednym z nich było kontrolowanie jej z poziomu przeglądarki internetowej, a konkretniej – sterowanie PWM. Z góry zastrzegam, że nie jest to profesjonalna implementacja tego zagadnienia i wiem, że można to zrobić lepiej, jednak chciałbym zaprezentować mój sposób rozwiązania tego problemu.

Cały proces odbywał się w systemie Raspbian i tak też będę go przedstawiał. Na początek zainstalujmy wiringPi – bibliotekę do obsługi GPIO. Instalujemy GIT:

Następnie pobieramy wiringPi z oficjalnej strony autora:

później kolejno

Aby móc sterować naszą Maliną z przeglądarki potrzebny nam będzie serwer Apache:

Należy również zainstalować PHP5, dzięki któremu będziemy mogli interpretować skrypt dla przeglądarki:

Tworzymy nowy plik w katalogu /var/www o nazwie index.php (jeżeli w katalogu www/ znajduje się plik index.html należy go usunąć poleceniem sudo rm index.html)

i w edytorze wklejamy kod php:

A teraz nieco wyjaśnień: dane z formularza są zapisywane do tablicy POST w komórce [pwm] (linia 16), a następnie wykonuje się polecenie echo, które zapisuje wartość z tablicy w pliku war.txt (linia 20). W przeglądarce pod adresem IP naszej Malinki (jeżeli pracujesz na RPi w polu adresu strony możesz wpisać localhost), który można sprawdzić poleceniem ifconfig, powinniśmy zobaczyć taki widok:

chrome

 

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

Teraz czas na program uruchamiany na RaspberryPi. w katalogu /home/pi tworzymy nowy plik o nazwie pwm.c

i w edytorze wklejamy

Program jak widać jest bardzo prosty. Odczytuje wartość z pliku war.txt i zapisuje ją do zmiennej moc i porównuje ją z poprzednią wartością z pliku. Jeżeli są takie same, program kontynuuje swoje działanie i ustawia stan wysoki na pinie 0 na czas określony przez wartość z pliku, a następnie ustawia stan niski na resztę czasu okresu. Okres trwa 1ms i w tym czasie wypełnienie stanem wysokim jest procentowo równe wartości z pliku war.txt. Tak właśnie działa software PWM według mojego przepisu :).

Następnie kompilujemy (musimy pamiętać o dodaniu w komendzie dyrektywy -lwiringPi):

i uruchamiamy program w tle:

W tzw. międzyczasie budujemy sobie prosty układzik, żeby sprawdzić czy nasze software PWM działa

pwm

Łączymy jak na obrazku. Wartość rezystora to 220Ω. Wszystko powinno ładnie działać i dioda powinna świecić adekwatnie do tego jaką liczbę wprowadziliśmy w przeglądarce :)

Jest to mój pierwszy wpis na Majsterkowie, dlatego liczę na Wasze przychylne oko i obiektywne komentarze oraz oceny. W tym projekcie korzystałem z poradnika zamieszczonego na stronie http://mikrokontroler.pl/.

Dziękuję serdecznie i pozdrawiam

Maciej Tycner

Ocena: 4.16/5 (głosów: 63)
Nettigo - patron działu Elektronika

Podobne posty

Regulator PID na arduino.

Regulator PID na arduino.

Witam wszystkich majsterkowiczów! Chciałbym przedstawić wam moje nagranie dotyczące realizacji regulatora PID przy użyciu arduino.Regulatory…

12 komentarzy do “RaspberryPi software PWM przez przeglądarkę

    • Z przykładami tak już jest, że to tylko przykłady. Jak będziesz chciał zintegrować jakieś swoje rozwiązanie z użyciem gotowego oprogramowania napisanego w PHP to co zrobisz? Będziesz sięgał lewą ręką w rękawicy bokserskiej, pod kroczem, do tylnej kieszeni spodni?

      Odpowiedz
    • Oj tam, oj tam. Chłopak zrobił jak umiał. Chwali się że zrobił, a jak mu się zachce to dopracuje. Sam mam zrobiony NAS na bazie WYSE S10, w którym brak wsparcia dla DMA (o UDMA nawet nie wspomnę) co przypomina wystawianie portalu z pornografią przez modem analogowy :P. Ale jest i działa i daje się z niego odtwarzać filmy przez sieć i na tą chwilę więcej mi nie trzeba mimo że wrzucanie na niego trawa wieki. Dla niektórych obsługa GPIO to już nie lada wyzwanie.

      A tak z innej beczki – jakie jest zurzycie procesora przy takim programowym PWM’ie??? I jeżeli będą jakieś upgrade’y to proponuję zamienić apache’a czym lżejszym (nginx, lighttpd), a i php możnaby zamienić skryptem cgi ale to tylko luźne hint’y.

      Odpowiedz
      • dziękuję za podpowiedzi ;)
        Skorzystałem z tego, o czym każdy słyszał. Apache i PHP to chyba najpopularniejsze opcje, więc uczyniłem tak jak uczyniłem :)

        A co do zużycia CPU, to szczerze nie sprawdzałem, ale przy najbliższej okazji sprawdzę :)

        Odpowiedz
        • Pytałem bo jak ja się bawiłem RPi to skrypt który w pętli sprawdzał jedno GPIO i zapalał diodę na drugim jak się zmienił stan (wszystko w bashu :P) to mi top pokazywał zurzycie procesora na poziomie ~15% dla tego jednego procesu.

          Odpowiedz
          • W programie napisanym w C wystarczy przepisać odczyt z czystych plików na nazwane potoki i wykorzystać standardowy mechanizm blokowania na odczycie kiedy potok jest pusty. Teraz pewnie jest w stanie zjeść i 100% kiedy nic się nie dzieje.

            Odpowiedz
    • Tylko, jeżeli to jedyny sposób na opróżnienie kieszeni, o którym słyszałem, bądź jedyny, który znam i dzięki niemu opróżniam skutecznie tę kieszeń, to czemu mam robić to inaczej? Kiedy dowiem się, że można to zrobić drugą ręką, bez użycia kolana to chętnie spróbuję ;) dlatego też zamieściłem ten wpis – żeby dowiedzieć się od bardziej doświadczonych osób jak można zrobić to łatwiej/lepiej.

      Co do obsługi gpio: nie wiem dlaczego, ale nie działa mi załączone w gpio opcja pwm, dlatego napisałem własny nieskomplikowany program.

      Odpowiedz
    • Można się domyślić ;) to jest tylko szkielet, który nie jest „idiotoodporny” jak to mawiał mój nauczyciel informatyki. Bez problemu można dać takie zabezpieczenia, ale po co, skoro zakładam, że nie jestem idiotą ;)

      Odpowiedz
  • Jestem początkującym …
    Jobię tak jak autor napisał ;acz wywala mi błąd przy instalacji wiringpi macie może jakiś pomysł co z tym zrobić ?
    pozdrawiam :P

    Odpowiedz

Odpowiedz

anuluj

RaspberryPi software PWM przez przeglądarkę

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?