회로

IoT - HTML 및 셸 스크립트 만 사용하여 인터넷을 통해 라즈베리 파이 로봇 제어 : 그림이있는 9 단계

Closure ( A Short Film )

Closure ( A Short Film )

차례:

Anonim

이 instructable, 우리는 완전히 제어 IoT 라즈베리 파이 로봇을 만드는 방법을 배우게됩니다. 아이디어는 HTML 페이지에서 직접 명령 된 쉘 스크립트로 작성된 저수준 명령을 사용하여 로봇 (또는 기타)을 제어하는 ​​것입니다. 예를 들어 더 높은 수준의 언어를 Python으로 사용하지 않으면 로봇이 매우 빠르게 반응하고 빠르게 작동합니다.

프로젝트의이 부분에서 우리는 배울 것입니다 :

  • 라이브러리 WiringPi를 설치하고 사용하여 RPi GPIO를 제어하십시오.
  • H- 브리지를 사용한 제어 모터
  • RPi를 웹 서버로 만들기
  • 인터넷을 통해 로봇을 제어하는 ​​HTML 만들기

추가로 이동하여 로봇에 "비전"을 제공하려면이 자습서의 두 번째 부분으로 이동하십시오.

IoT : 인터넷을 통한 라스베리 파이 비디오 스 트리머 및 팬 / 틸트 카메라 원격 제어

거기에서, 당신은 배울 것입니다 :

  • PiCam으로 비디오를 스트리밍하는 방법
  • ServoBlaster 라이브러리 설치 및 사용 방법
  • 서보 모터를 제어하고 PAM / TILT 카메라 위치 메커니즘을 구축하는 방법
  • 인터넷을 통해 카메라 위치를 제어하는 ​​HTML 페이지 만들기

이러한 유형의 로봇을 제작하는 데 대한 훌륭한 비디오 자습서는 다음과 같습니다.

Alan H.가 개발 한 Raspberry PI 웹 브라우저 제어 로봇을 제작 한 방법에 대한 간단한 자습서.

거기에는 많은 아이디어가 있습니다. Alan에게 훌륭한 튜토리얼을 주셔서 감사합니다.

블록 다이어그램은 프로젝트의 기본 아이디어를 보여줍니다. RPi는 WebServer로 설정되고 HTML 페이지에서 명령을받습니다. 이 명령은 RPIO 제어 모터 (방향 및 속도)를 만들고 GPIO 상태를 변경하고 LED를 켜고 끄기로합니다. 알다시피, 로봇은 사실 IoT 프로젝트의 특별한 경우입니다. 원하는 것을 제어 할 수 있습니다. 이 Instructables는 여기에서 이륙 할 아이디어를 제공하려고합니다.

용품:

1 단계 : BOM

  • 라스베리 파이 모델 2 또는 3
  • L293-D H 브릿지
  • DC 모터 (2x)
  • 모터 용 9V 배터리
  • RPi 용 5V 배터리
  • LED 및 330 옴 저항
  • 브레드 보드
  • 배선
  • 모터 / 전자 제품을위한 아크릴 지원 (키트, CD 등이 될 수 있음)

2 단계 : WiringPi 라이브러리 설치

WiringPi는 Raspberry Pi를 위해 C로 작성된 GPIO 액세스 라이브러리입니다. RPi 및 전자 제품과 관련된 모든 프로젝트를 사용하고 단순화하는 것이 매우 쉽습니다.

WiringPi 라이브러리에는 명령 줄 유틸리티 "gpio"(wiringpi.com/the-gpio-utility) GPIO 핀을 프로그래밍하고 설정하는 데 사용할 수 있습니다.이 기능을 사용하여 핀을 읽고 쓸 수 있으며 심지어 핀을 사용하여 제어 할 수 있습니다 셸 스크립트. 스크립트에서 GPIO 핀을 조작하는 데 사용할 수 있습니다. 출력을 설정하고 입력을 읽습니다. 쉘 스크립트에서 gpio 명령을 사용하여 전체 프로그램을 작성할 수도 있습니다.

WiringPi를 설치하려면,

버전을 인쇄하려면 다음 명령을 사용하십시오.

gpio -v

정상적으로 액세스 할 수있는 모든 핀을 읽고 해당 번호의 테이블 (wiringPi, BCM_GPIO 및 물리적 핀 번호)을 인쇄하려면 " gpio readall " 모드와 현재 값을 사용하여 상호 참조 차트를 만듭니다. 이 명령은 또한 RPi의 버전 / 모델을 탐지하고 Pi에 적합한 핀 다이어그램을 출력합니다.

gpio readall

첫 번째 모니터 스크린 샷은 위의 두 가지 명령 결과를 보여줍니다.

OUTPUT 모드로 핀 (BCM_GPIO 핀 번호 체계)을 설정하려면 명령을 사용해야합니다.

핀의 모드가 정의되면 출력에 논리 상태를 서명 할 수 있습니다.

330ohm 저항과 양극과 GND를 사용하여 GPIO.10에서 GND로 LED를 설치하십시오. 모든 것이 제대로 작동하는지 확인하기 위해 몇 가지 검사를하십시오. gpio-readall 명령으로 모니터를 확인하십시오 (여기 사진 참조).

핀을 출력 또는 입력으로 설정하는 것 외에도 일부는 PWM 출력으로 설정할 수 있습니다. 물리 핀 Pin 12 또는 GPIO.18의 경우입니다.

핀을 설정하려면 :

gpio -g 모드 18 pwm

또는

GPIO 모드 1 pwm 참고 : ( "1")은 GPIO의 wPi ID입니다.

PWM 값을 설정하려면 :

gpio pwm 1 XXX 참고 : XXX ia value between 0 -> 1023

전의.:

gpio pwm 1 512 참고 : 모터 또는 LED는 50 % duty-cicle입니다.

이 특정 핀의 설정을 제거하려면 :

gpio unexport 1

모든 핀 설정을 제거하려면 :

gpio unexportall

3 단계 : 라스베리 파이와 WiringPi로 모터 제어하기

이 시점에서 WiringPi 라이브러리가 설치되고 RPi 모니터의 명령 줄에서 모든 GPIO를 직접 제어 할 수 있습니다. 다음 단계는 모터를 제어하기위한 로직을 생성하는 것입니다. 이를 위해 우리는 H-Bridge, L-293-D를 사용할 것입니다. 이 H-Bridge는 2 개의 모터를 제어 할 수 있습니다. 그것은 각 모터, 3 입력 :

  • 모터 왼쪽 : "사용"; "motor +"및 "motor-"
  • 모터 오른쪽 : "사용"; "motor +"및 "motor-"

"모터 인 에이블"입력은 함께 연결되며 GPIO.18에 의해 제어됩니다. 이 핀은 속도 제어에 대한 책임을집니다. 속도를 제어하고 싶지 않다면, 예를 들어 HIGH로 두십시오. 이 단계에서 더 자세히 논의 할 것입니다.

모터 LEFT가 앞으로 나오도록하려면 모터 +를 HIGH, 모터를 LOW로 설정해야한다는 규칙을 만들어 보겠습니다. 반대 방향으로 주행하려면 반대 방향으로 모터를 작동시켜야합니다. HIGH는 모터, LOW는 모터를 나타냅니다.

모터 방향을 제어하기위한 올바른 입력을 실제로 정의하는 가장 좋은 방법은 실제 모터가 어셈블리 일 때 모터 방향을 테스트하는 것입니다.

H- 브리지 입력에 GPIO를 할당 해 봅시다.

  • 모터 좌측 + : GPIO.5
  • 모터 좌측 - : GPIO.6
  • 모터 오른쪽 + : GPIO.13
  • 모터 오른쪽 - : GPIO.19

위의 가정을 토대로 GPIO에 할당 할 수있는 수준의 로직 테이블을 구축 할 수 있습니다 (표 그림 참조). 다음 단계는 모터를 구동하기위한 쉘 스크립트를 만드는 것이다.

모든 스크립트 파일은 본질적으로 일반 텍스트입니다. 텍스트 파일을 실행하려고 할 때 쉘은 스크립트인지 아닌지와 모든 것을 올바르게 처리하는 방법에 대한 단서를 파싱합니다. 이 때문에 몇 가지 지침을 알아야합니다.

  • 모든 스크립트는 "#! / bin / bash"(The Hash-Bang Hack)
  • 모든 새로운 줄은 새로운 명령입니다.
  • 주석 행은 #
  • 명령은 ()로 둘러싸여 있습니다.

쉘이 텍스트 파일을 파싱 할 때 파일을 스크립트로 식별하는 가장 직접적인 방법은 #! / bin / bash (The Hash-Bang Hack)의 첫 줄을 만드는 것입니다. 다른 쉘을 사용하는 경우 여기에서 경로를 대체하십시오. 주석 행은 해쉬 (#)로 시작하지만, 쾅 (!)과 셸 경로는이 주석 규칙을 무시할 해킹 일종의 뒤에 추가되며이 줄이 가리키는 셸에서 스크립트가 강제로 실행됩니다.

예를 들어, 위의 표를 기반으로 "전진 (Forward)"모터를 실행하기위한 쉘 스크립트를 작성하려면 다음과 같이 파일을 작성해야합니다 (NANO를 사용하고 있습니다).

sudo nano forward.cgi

#! / bin / bash

gpio -g 5 1 쓰기

gpio -g 6 0 쓰기

gpio -g 쓰기 13 1

gpio -g 쓰기 19 0

스크립트가 생성되면 실행 권한을 부여해야합니다.

sudo chmod 755 forward.cgi

이제 스크립트를 실행합니다.

sudo ./forward.cgi

4 개의 LED가 스크립트 테스트에 사용되었으므로 실제 모터가 추가 단계에서 추가됩니다. 작동하면 해당 LED가 켜져 있어야합니다 (사진 참조).

파일 확장명으로 .cgi를 사용합니다. CGI는 "공용 게이트웨이 인터페이스"를 의미합니다. 웹 서버가 웹 페이지를 동적으로 생성하는 서버에 설치된 실행 가능 프로그램과 인터페이스하는 표준 방법입니다. 이러한 프로그램은 CGI 스크립트 또는 단순히 CGI로 알려져 있습니다. 이들은 대개 스크립팅 언어로 작성되지만 모든 프로그래밍 언어로 작성할 수 있습니다.

계속해서 이전 표의 다른 가능성에 대해 동일한 아이디어를 적용해야합니다.

sudo nano stop.cgi

#! / bin / bash

gpio -g 5 0 쓰기

gpio -g 6 0 쓰기

gpio -g 쓰기 13 0

gpio -g 쓰기 19 0

sudo nano reverse.cgi

#! / bin / bash

gpio -g 5 0 쓰기

gpio -g 6 1 쓰기

gpio -g 쓰기 13 0

gpio -g 쓰기 19 1

sudo nano left.cgi

#! / bin / bash

gpio -g 5 0 쓰기

gpio -g 6 1 쓰기

gpio -g 쓰기 13 1

gpio -g 쓰기 19 0

sudo nano right.cgi

#! / bin / bash

gpio -g 5 1 쓰기

gpio -g 6 0 쓰기

gpio -g 쓰기 13 0

gpio -g 쓰기 19 1

스크립트가 생성되면 forward.cgi와 마찬가지로 실행 권한을 부여해야합니다.

sudo chmod 755 stop.cgi

sudo chmod 755 reverse.cgi

sudo chmod 755 left.cgi

sudo chmod 755 right.cgi

이제 몇 가지 테스트를 실행하여 모두 작동하는지 확인하십시오.

./forward.cgi

./left.cgi

./reverse.cgi

./right.cgi

./stop.cgi

사용 된 프로그램에 대한 특정 디렉토리가 있고이를 "bin"이라고 부르는 것이 좋습니다. 따라서 우리가 프로젝트에서 사용할 스크립트를 저장하려면 모든 실행 가능한 스크립트 (또는 바이너리 파일)가 들어있는 cgi-bin과 같은 디렉토리를 만들어야합니다. 예 : / var / www / cgi-bin.

그래서 우리 웹 페이지가 위치 할 var 아래에 www라는 디렉토리를 만들고 그 아래에 스크립트가있는 cgi-bin 디렉토리를 만들어 봅시다 :

sudo mkdir / var / www

sudo mkdir / var / www / cgi-bin

이제 모든 파일을이 새 디렉토리로 이동하십시오.

sudo mv /*.cgi / var / www / cgi-bin

cd / var / www / cgi-bin

line 명령 ls를 사용하면 생성 된 파일을 볼 수 있습니다 (사진 참조).

ls

우리가 다른 단계로 넘어 가기 전에 마지막으로 한 가지. RPi를 재부팅하면 GPIO가 INPUT 인 기본 상태로 돌아갑니다. 따라서 우리는 어떤 라스베리가 시작될 때 실행되는 /etc/rc.local 스크립트를 변경해야합니다. 스크립트의 마지막 명령 바로 앞에 오는 ==> exit 0, GPIO 모드 명령을 포함해야합니다.

sudo nano /etc/rc.local

gpio -g 모드 5 아웃

gpio -g 모드 6 아웃

gpio -g mode 13 out

gpio -g mode 19 out

출구 0

이제 RPI가 시작될 때마다 설계된 출력을 제어 할 준비가됩니다.

4 단계 : 모터 속도 제어 및 LED 켜기 / 끄기 (선택 사항)

모터 제어를위한 H-Bridge, L293-D를 사용하게되면 방향 이외에도 제어 속도가 필요한지 결정해야합니다.

두 가지 가능성 :

  • 고정 속도 : 2 개의 저항을 갖는 전압 제수를 사용하여 H- 브리지 인 에이블 핀 (1 및 9)을 + 5V (최대 속도) 또는 기타 비례 값에 연결
  • Raspberry Pi에 연결된 핀 1과 9 사용 GPIO.18

보통 속도를 일정하게 유지할 수는 있지만 속도를 제어하는 ​​방법을 탐색합시다. 이를 위해서는 PWM 신호를 사용해야합니다. "지시"(특정 모터에 대한 값을 테스트해야 함)와 같은 스크립트 그룹을 만들어 보겠습니다.

sudo nano nospeed.cgi

#! / bin / bash

gpio pwm 1 0

sudo nano lowspeed.cgi

#! / bin / bash

gpio pwm 1 250

sudo nano regularspeed.cgi

#! / bin / bash

gpio pwm 1 512

sudo noano highspeed.cgi

#! / bin / bash

gpio pwm 1 1023

스크립트가 생성되면 forward.cgi와 마찬가지로 실행 권한을 부여해야합니다.

sudo chmod 755 nospeed.cgi

sudo chmod 755 lowspeed.cgi

sudo chmod 755 regularspeed.cgi

sudo chmod 755 highspeed.cgi

이제는 모든 테스트가 제대로 작동하는지 확인하기위한 몇 가지 테스트 만 실행합니다.

./lowspeedcgi

./regularspeed.cgi

./highspeed.cgi

./nospeedcgi

제 경우에는 GPIO에 연결된 LED가 있습니다 .18 그래서 밝기에 따라 명령이 작동한다는 것을 알 수 있습니다.

마지막으로, 예를 들어 램프를 켜거나 끄기 위해 디지털 출력을 제어하는 ​​추가 스크립트를 준비해 보겠습니다. 우리는 GPIO.10을 사용합니다 :

sudo nano llighton.cgi

#! / bin / bash

gpio -g 10 1 쓰기

sudo nano llightoff.cgi

#! / bin / bash

gpio -g 10 0 쓰기

sudo chmod 755 lighton.cgi

sudo chmod 755 lightoff.cgi

이전과 마찬가지로 GPIO를 추가로 사용하려면 /etc/rc.local 스크립트를 변경해야합니다.

sudo nano /etc/rc.local

gpio -g 모드 5 아웃

gpio -g 모드 6 아웃

gpio -g mode 13 out

gpio -g mode 19 out

gpio -g mode 10 out

GPIO 모드 1 pwm

출구 0

나가기 전에 list line으로 gpio mode 1 pwm을 갖는 것이 좋다.

5 단계 : LIGHTTPD 웹 서버 설치

LIGHTTPD는 매우 가볍고 빠른 웹 서버 (예 : Apache 대신 사용할 수 있음)를 설치합니다. lighttpd wiki 페이지에서 설명한 것처럼 "Lighttpd는 고성능 환경에 맞게 최적화 된 안전하고 빠르며 호환성이 뛰어나고 유연한 웹 서버입니다. 다른 WebServers와 비교하여 메모리 사용량이 매우 적으며 CPU로드를 처리합니다.

Lighttpd 웹 서버와 구성 요소를 설치해 보겠습니다.

sudo apt-get -y install lighttpd

sudo lighttpd-enable-mod cgi

sudo lighttpd-enable-mod fastcgi

기본적으로 Lighttpd는 index.html ~에서의 페이지 / var / www / html. 우리는 그것을 바꿀 것이기 때문에 index.html은 / var / www 아래에 위치 할 것입니다. 이를 위해 Ligghttpd 설정 파일을 편집해야합니다 :

sudo nano /etc/lighttpd/lighttpd.conf

변화:

server.document-root = "/ var / www / html"

으로:

server.document-root = "/ var / www"

이 변경 사항을 적용하려면 웹 서버를 중지했다가 다시 시작해야합니다.

sudo /etc/init.d/lighttpd stop

sudo /etc/init.d/lighttpd start

이 시점에서 웹 서버가 실행 중이고 index.html 페이지가 / var / www에 있으면 RPI IP 주소를 입력하여 모든 브라우저에서 액세스 할 수 있습니다.

간단한 테스트 웹 페이지를 만들자. (테스트를 위해, 이전에 png 파일 인 /images/robot52.png를 이미지 디렉토리로 옮겼다.)

cd / var / www

sudo nano index.html


MJRoBot RPi 웹 로봇 제어


페이지 편집을 마치면 저장하고 사용 권한을 변경하십시오.

sudo chmod 755 index.html

최종 결과는 위의 스크린 샷에서 확인할 수 있습니다.

이제 브라우저를 열고 라스베리 파이 IP 주소 (예 : 내 경우 10.0.0.31)를 입력하십시오.

6 단계 : 로봇을 제어하기위한 HTML 페이지 만들기

우리 페이지의 간단한 디자인에 대해 생각해 봅시다. 우리가 가질 수있는 명령은 무엇입니까?

  1. 조명을 켜고 끄기위한 두 개의 버튼 ==>은 스크립트와 함께 작동합니다 : lighton.cgi 및 lighoff.cgi
  2. 모터 방향 제어를위한 다섯 개의 버튼 ==>은 forward.cgi, stop.cgi, left.cgi, right.cgi 및 reverse.cgi와 같이 스크립트와 함께 작동합니다.
  3. 모터 속도 제어 ==> 네 개의 버튼은 스크립트와 함께 작동합니다 : nospeed.cgi, lowspeed.cgi, regularspeed.cgi 및 high speed.cgi

마지막 단계에서 만든 index.html을 사용하여 스크립트를 실행하는 함수를 호출하는 버튼을 포함 시키십시오.

예를 들어 LED (GPIO.10)를 켜는 버튼을 만듭니다.

버튼 {color : blue; 배경 : lightgrey; 국경 : 1px 고체 # 000; border-radius : 8px; 직책 : 센터; } <button style='height: 50.0px;width: 100.0px;'> <p align='middle'><img src='//img.gwsigeps.com/img//images/lighton.png' style='height: 40.0px;'></button>

위의 HTML은 "밝은 램프"가있는 둥근 버튼을 이미지로 만듭니다 (위의 마지막 페이지 참조).
"onclick = lighton ()"명령으로 버튼을 누르면 "lighton () 함수가 호출됩니다.

function lighton () {xmlhttp.open ( &quot;GET&quot;, &quot;cgi-bin / lighton.cgi&quot;, true); xmlhttp.send (); }

그리고 lighton () 함수가 호출되면, lighton.cgi 스크립트가 실행되고 "voilá", LED가 켜집니다.

모든 버튼에 동일한 절차를 사용해야합니다. 전체 HTML 페이지를 볼 수있는 모양과 채우기를 구성하는 일부 HTML 함수가 있습니다. HTML 소스는 아래에서 볼 수 있습니다 (이전 단계에서 사용 된 LED 설정으로 페이지 테스트).

<html> <head> </head> <style> body {background-color: lightyellow} h1 {color:blue} button { color: blue; background:lightgrey; border: 1px solid #000; border-radius: 8px; position: center; } </style> <body> <div style='text-align:center'> <a id="menu-9"></a><h2>MJRoBot RPi 웹 로봇 제어 <img style='height: 100px' src='/images/robot52.png'></h2> <br /> <button style='height: 50px; width: 100px' onclick='lighton()'><img style='height: 40px' src='/images/lighton.png'></button> <img hspace='20' style='padding-left: 200px'> <button style='height: 50px; width: 100px' onclick='lightoff()'><img style='height: 35px' src='/images/lightoff.png'></button> <br /> <span style='display:inline-block;padding:5px;border:1px solid #fc0; font-size: 140%;font-weight: bold;'> <br /> <button style='height: 75px; width: 75px' onclick='forward()'><img style='height: 65px' src='/images/forward.png'></button> <br /><br /> <img hspace='10' style='padding-left: 5px'> <button style='height: 75px; width: 75px' onclick='left()'><img style='height: 65px' src='/images/left.png'></button> <img hspace='20' style='padding-left: 10px'> <button style='height: 75px; width: 75px' onclick='stop()'><img style='height: 63px' src='/images/stop.png'></button> <img hspace='20' style='padding-left: 10px'> <button style='height: 75px; width: 75px' onclick='right()'><img style='height: 65px' src='/images/right.png'></button> <img hspace='10' style='padding-left: 5px'> <br /><br /> <button style='height: 75px; width: 75px' onclick='reverse()'><img style='height: 65px' src='/images/reverse.png'></button> <br /><br /> <p>모터 속도 제어</p> <img hspace='10' style='padding-left: 5px'> <button style='height: 50px; width: 50px; font-size: 18px' onclick='nospeed()'>0</button> <img hspace='30' style='padding-left: 20px'> <button style='height: 50px; width: 50px; font-size: 18px' onclick='lowspeed()'>--</button> <img hspace='30' style='padding-left: 20px'> <button style='height: 50px; width: 50px; font-size: 18px' onclick='regularspeed()'>==</button> <img hspace='30' style='padding-left: 20px'> <button style='height: 50px; width: 50px; font-size: 18px' onclick='highspeed()'>++</button> <img hspace='10' style='padding-left: 5px'> <br /> </span> </div> <script> var xmlhttp; xmlhttp=new XMLHttpRequest(); function lighton() { xmlhttp.open('GET','cgi-bin/lighton.cgi',true); xmlhttp.send(); } function lightoff() { xmlhttp.open('GET','cgi-bin/lightoff.cgi',true); xmlhttp.send(); } function forward() { xmlhttp.open('GET','cgi-bin/forward.cgi',true); xmlhttp.send(); } function stop() { xmlhttp.open('GET','cgi-bin/stop.cgi',true); xmlhttp.send(); } function left() { xmlhttp.open('GET','cgi-bin/left.cgi',true); xmlhttp.send(); } function right() { xmlhttp.open('GET','cgi-bin/right.cgi',true); xmlhttp.send(); } function reverse() { xmlhttp.open('GET','cgi-bin/reverse.cgi',true); xmlhttp.send(); } function lowspeed() { xmlhttp.open('GET','cgi-bin/lowspeed.cgi',true); xmlhttp.send(); } function regularspeed() { xmlhttp.open('GET','cgi-bin/regularspeed.cgi',true); xmlhttp.send(); } function highspeed() { xmlhttp.open('GET','cgi-bin/highspeed.cgi',true); xmlhttp.send(); } function nospeed() { xmlhttp.open('GET','cgi-bin/nospeed.cgi',true); xmlhttp.send(); } </script> </body> </html>

7 단계 : 로봇 본체 조립

우선 플랫폼을 찾아야합니다. 4 개의 DC 모터가있는 4WD 키트가 있습니다. 나는 그것이 4WD를 통제하는 것은 쉽지 않다는 것을 깨달았고, 여기의 생각이 이동성 분석이 아니라면, 나는 풀 카를 조립했다. 그러나 진짜 테스트를 위해 나는 단지 2 대의 바퀴와 코스터를 사용할 것이다 (사용한 탈취제 롤 ).

본체와 모터가 제 위치에 놓인 후, 프로토 보드를 포함시켜 모터 연결을 만들고 테스트하십시오. 외부 배터리를 사용하여 각각의 모터를 테스트하십시오.

모터는 위 그림과 같이 H-Bridge L293-D로 제어됩니다. 이 시점에서 H-Bridge 입력에서 + 5V 및 GND 프로브를 사용하여 모터를 제어하고 RPI GPIO를 시뮬레이트하여 테스트를 수행 할 수도 있습니다.

8 단계 : RPi 설치

일단 모두 작동하면 RPI를 추가 할 차례입니다. 전체 회로는 위에 나와 있습니다.

저레벨 섀시의 모터 사이에 RPi 5V 배터리를 설치합니다. RPI가 위에 있습니다.

모든 케이블 연결을 RPi에서 켜십시오. 이전 단계가 모두 OK이면 RPi IP 주소를 사용하여 로봇을 제어 할 수 있습니다. 즐겨 찾는 WebBrowser 및 안전한 여행을여십시오!

Bellow, 웹 페이지를 사용하여 로봇을 테스트하는 비디오 :

9 단계 : 결론

소개에서 논의 된 바와 같이, 로봇은 거의 IoT 프로젝트를 개발할 구실이다. 우리가 여기서 한 것은 인터넷을 통해 RPi GPIO를 제어하는 ​​것입니다. 우리는 거기서 시작하는 것을 제어 할 수 있습니다!

내 다음 다루기 힘든 IoT : 인터넷을 통해 라스베리 파이 비디오 스 트리머 및 팬 / 틸트 카메라 원격 제어가 PiCam을 탐색합니다. 어떻게 스트리밍 비디오 및 servos를 사용하여 카메라 위치를 제어하는 ​​방법. 목표는 인터넷으로 제어 할 수 있지만 비디오 스트리밍을 수신 할 수있는 로버가있는 두 프로젝트를 병합하는 것입니다.

비디오 벨로우즈는 어떻게 끝날지 보여줍니다 :

이 Instructable에 사용 된 전체 파일과 문서는 GITHUB에서 찾을 수 있습니다.

http://github.com/Mjrovai/MJRoBot-Web-RPi-Robot

언제나 그렇듯이이 프로젝트가 다른 사람들이 전자 공학, 로봇 공학, 라스베리 파이 및 IoT의 흥미 진진한 세계에서 자신의 길을 찾도록 도울 수 있기를 바랍니다.

더 많은 프로젝트는 내 블로그 : MJRoBot.org를 방문하십시오.

세계의 남쪽에서 Saludos! 내 다음 instructable에서 보자!

고맙습니다

마르셀로

2 명의 사람들이이 프로젝트를 만들었습니다!

  • PeterM506 님이 그것을 만들었습니다!

  • hikmetozgozen 그것을 만들었습니다!

이 프로젝트를 만들었습니까? 그것을 우리와 공유하십시오!

권장 사항

  • 1986 년 라스베리 파이 비디오 초인종

  • 통합 PIXEL LED 디스플레이가있는 수직 바텀 아케이드

  • 인터넷 클래스 클래스

  • 원예 경연 대회

  • 팸플릿

  • 파티 챌린지

111 토론

0

네온

2 년 전

몇 가지 테스트를 수행하고 있습니다.

./forward.cgi

./left.cgi

./reverse.cgi

./right.cgi

./stop.cgi

모두 작동하는지 확인하려면 다음을 수행하십시오.

그리고 모든 일은 괜찮습니다.

하지만 웹 페이지를 클릭하면 아무것도 표시되지 않습니다.

5 답글 0

fearfighter2네온

대답 1 년 전

나는 같은 문제가있다.

0

John_03fearfighter2

대답 1 년 전

나는 같은 문제가있다.

내가 웹 페이지를 클릭하면 어떻게 될까요?

내가 이것을 실행하면

http://192.168.1.6/cgi-bin/forward.cgi

http://192.168.1.6/cgi-bin/stop.cgi

그쪽의 일

1

John_03John_03

대답 1 년 전

여보세요

찾았어요!

sudo vim /etc/lighttpd/lighttpd.conf

추가 대상 :

server.modules = (

"mod_cgi",

)

이제 효과가있다.

0

프레야 H4John_03

2 개월 전 답변

여보세요,
위에서 설명한 것과 같은 문제가 있지만 웹 페이지의 버튼을 통해 빛을 제어 할 수 있지만 모터는 제어 할 수 없습니다.
모터는 터미널에서 테스트 할 때 작동합니다.
lighttpd.conf 파일에 mod_cgi를 추가하려했지만 아직 성공하지 못했습니다. 도움이 될만한 다른 것을 제안 해 주실 수 있습니까?
감사!

0

John_03프레야 H4

2 개월 전 답변

같은 폴더 루트에있는 모든 파일을 섞어 내려고, 하위 폴더, 이미지 스크립트를 만들지 마십시오. …..

0

WilliamS287

1 년 전

안녕하세요, 문제가 있습니다. 내 cgi 파일은 터미널에서 실행하면 정상적으로 실행되지만 웹 서버에서 실행하려고하면 아무 일도 일어나지 않습니다. 네가 내가이 문제를 해결하도록 도울 수 있는지 궁금해서.

감사!

2 답글 0

fearfighter2WilliamS287

대답 1 년 전

나는 같은 문제가있다.

0

아킬레스 하우 톤fearfighter2

4 개월 전 답변

심지어 나는 같은 문제가있다.

0

mpham4k

8 개월 전

웹 페이지를 클릭하면 버튼이 작동하지 않습니다. 755 모든 .cgi 파일을 변경했지만 동일한 문제가 있습니다. 도와 주시고 해결 방법을 알려주십시오.

감사,

MP

1

찬단 A14

질문 1 년 전의 3 단계

내가 새로운 디렉토리로 파일을 옮길 때
Sudo MV /*.CGI / car / www / cgi-bin
그것은 보여준다
MV : '/*.cgi'을 통계 할 수 없습니다 : 파일이나 디렉토리가 없습니다.

1 답변 0

예술 작품 99찬단 A14

답변 됨 8 개월 전

그 sudo mv ./*.cgi / var / www / cgi-bin

첫 번째 슬래시 앞에 점이 표시됩니다. 나는 저자가 약간 실수했다고 생각한다.

0

Kzona

질문 11 개월 전

Maciej12345와 같은 오류 메시지가 나타납니다.

입력 할 때 :

mv : '/*.cgi'통계 없음 : 해당 파일 또는 디렉토리 없음

내가 뭘 잘못하고 있죠?

이 문제와 관련하여 지금까지 훌륭한 튜토리얼입니다!

답 2 개 0

예술 작품 99Kzona

답변 됨 8 개월 전

그 sudo mv ./*.cgi / var / www / cgi-bin

첫 번째 슬래시 앞에 점이 표시됩니다. 나는 저자가 약간 실수했다고 생각한다.

0

KzonaKzona

답변 : 11 개월 전

온라인을 파고 들었다 …. 분명히 나는 ​​그것을 편집 할 필요가 있었다 :

sudo mv ~ / wiringPi / *. cgi / var / www / cgi-bin

이제 작동하고 파일이 이동되었습니다.

0

fhernandezg77

질문 11 개월 전

안녕 mjrovai, 내가 GPIO18 핀 또는 배선 파이 0 PWM으로 설정하고 전에 /etc/rc.local에 포함 … 내 0 라스베리를 다시 시작하면이 라인을 종료,이 핀은 1 값을 가지고 있으며, 스크립트는 속도가 느린 , 등 모터 속도를 제어하지 않는 작품 … 오직 앞으로, 중지, 오른쪽, 역방향 및 CGI 스크립트를 작동합니다. 나는 L298N 모터 드라이버를 사용하고 EN1과 EN2를 GPIO18 핀에 연결했습니다. 내 랩스 베리는 파이 3 모델 B입니다.

제발 도와 주실 수 있습니까?

0

fhernandezg77

11 개월 전

안녕 mjrovai, 내가 GPIO18 핀 또는 배선 파이 0 PWM으로 설정하고 전에 /etc/rc.local에 포함 … 내 0 라스베리를 다시 시작하면이 라인을 종료,이 핀은 1 값을 가지고 있으며, 스크립트는 속도가 느린 , 등 모터 속도를 제어하지 않는 작품 … 오직 앞으로, 중지, 오른쪽, 역방향 및 CGI 스크립트를 작동합니다. 나는 L298N 모터 드라이버를 사용하고 EN1과 EN2를 GPIO18 핀에 연결했습니다. 내 랩스 베리는 파이 3 모델 B입니다.

제발 도와 주실 수 있습니까?

0

Maciej12345

질문 1 년 전

gpio에서 정보를 HTML 페이지에 표시하는 방법. gpio로 GND를 연결하면 페이지의 정보가 표시되고 버튼을 눌렀습니다. 모든 슈퍼 디자인이 작동합니다.

0

DaniellO1

질문 1 년 전

이 멋진 튜토리얼을 가져 주셔서 감사합니다. cgi를 실행하기 위해 웹 사이트의 버튼을 가져올 때까지 모든 것이 순조롭게 진행되었습니다. 웬일인지 버튼을 클릭하면 작동하지 않습니다. RPi 모니터에서 cgi 파일을 실행할 때 모두 작동합니다. 어떤 아이디어? 다시 한 번 감사드립니다!

1 답변 0

DaniellO1DaniellO1

답변 : 1 년 전

당신의 응답을 주셔서 감사합니다! 나는 그것이 마침내 작동하게했다. SD 카드를 다시 포맷하고 새로 시작해야했습니다. 나는 다시 당신의 지시를 따랐고 완벽하게 작동했습니다!