Ein Wifi-Auto basierend auf Arduino
durch Klage gegen openWRT
Ziel: DIY wireless Auto basierend auf Arduino. Durch das Auto zu steuern, wir sehen die anderen Dinge in den remote-Standort oder die Sicherheit zu überwachen.
Wirkung von Bild:
Prinzip:
l Pinsel OpenWRT in WLAN-Router (wie WR703N) und Mjpeg - Streamer und ser2net Software zu installieren.
l Mjpeg wird verwendet, um befassen sich mit der video-Daten von der Kamera, und dann schicken Sie es über das HTTP-Protokoll an den dritten.
l den dritten z. B. Mobiltelefon über Wifi Zugang Router, senden Steuerbefehle in die TCP-Verbindung
l nach Erhalt Anweisungen durch ser2net Router würde Anweisung an die Bindung an einen seriellen Anschluss senden, das Arduino UNO ist.
l nach Erhalt Anweisungen, Arduino kann steuern die Expansion-Board (oder Schild), und dann würde das Schild steuern Sensoren, Motor, Servos und anderen elektronischen Komponenten. Zu guter Letzt werden der Motor und Lenkgetriebe Anweisungen auszuführen.
Anschluss:
Wichtigsten Zubehör:
Kamera: Chassis: http://www.smartarduino.com/wifi-web-camera-car-t...
Karosserie:
http://www.smartarduino.com/Car-chassis_d005005002...
Arduino: http://www.smartarduino.com/arduino-compatible_d0...
Arduino Shield: http://www.smartarduino.com/arduino-shields_d0010...
Code:
1. #include
2. #include
3.
4. //UART PROTOKOLL / / /
5. #define UART_FLAG 0XFF
6. //Moto////////////////////////////////
(7) / / PROTO: FLAG FLAGGE DEV RICHTUNG LEER
8. #define MOTO 0 x 00
9. #define vorwärts 0 x 01 //MOTO Befehl
10. #define nach hinten 0X02
11. #define TURNLEFT 0X03
12. #define TURNRIGHT 0 x 04
13. #define CARSTOP 0 x 00
14. //Servo///////////////////////////////
15. / / PROTO: FLAGGE DEV SERVONUM POS FLAGGE
16. #define SERVO 0 x 01
17. //Moto Geschwindigkeit / / /
18. / / PROTO: FLAGGE DEV MOTOSIDE GESCHWINDIGKEIT FLAGGE
19. #define MOTOSPEED 0X02
20. //////////////////////////////////////
21. Int n = 1;
22. Int FlagCount = 0;
23. Int TempData = 0;
24. Int UARTReveived = 0;
25. Int RxData [5];
26. //-------------------define motor----------------------------------------------//
27. AF_DCMotor motorL(3,MOTOR12_8KHZ); verbinden Sie mit M3
28. AF_DCMotor motorR(4,MOTOR12_8KHZ); verbinden Sie mit M4
29. Int Motor_speed = 200; [Modifid] Motordrehzahl 150-200,---Min:100; Max: 255
30. Int Motor_delay = 400; [Modifid] Delay-Zeit im Schritt
31.
32. //-------------------define servo----------------------------------------------//
33. Servo Hand_t_servo; Erstellen Sie Servo-Objekt um ein Servo Steuern
34. Servo Hand_d_servo; Erstellen Sie Servo-Objekt um ein Servo Steuern
35. Int Hand_t_pos = 90; //
36. Int Hand_d_pos = 90; //
37. Int Hand_delay = 1; [Modifid] Geschwindigkeit der hand
38.
39. //------------------main program-----------------------------------------------//
40. void loop()
41. {}
42. if(Serial.available())
43. {}
44. TempData = Serial.read();
45. delay(3);
46. if(tempData == UART_FLAG && flagCount < 2)
47. {}
48. RxData [0] = TempData;
49. FlagCount ++;
50.}
51. sonst
52. {}
53. RxData [n] = TempData;
54. n++;
55.}
56. if(flagCount == 2)
57. {}
58. RxData [4] == UART_FLAG;
59. UARTReveived = 1;
60. n = 1;
61. FlagCount = 0;
62. TempData = 0;
63. Serial.flush();
64.}
65.}
66. if(UARTReveived == 1)
67. {}
68. Serial.print("rxData:");
69. Serial.print(rxData[0]);
70. Serial.println(rxData[1]);
71. if(rxData[1] == MOTO)
72. {}
73. switch(rxData[2])
74. {}
75. Fall nach vorn:
76. carGoFwd();
77. Pause;
78. Fall rückwärts:
79. carGoBwd();
80. Pause;
81. Fall TURNLEFT:
82. carTurnL();
83. Pause;
84. Fall TURNRIGHT:
85. carTurnR();
86. Pause;
87. Fall CARSTOP:
88. carStop();
89. Pause;
90.}
91. UARTReveived = 0;
92.}
93. ElseIf (RxData [1] == SERVO)
94. {}
95. servoSet(rxData[2], rxData[3]);
96. UARTReveived = 0;
97.}
98. ElseIf (RxData [1] == MOTOSPEED)
99. {}
100. CHNSpeed(rxData[2], rxData[3]);
101. UARTReveived = 0;
102.}
103.}
104.}
105.
106. //CAR BEWEGUNGEN
107. void carGoFwd()
108. {}
109. motorL.setSpeed(motor_speed);
110. motorR.setSpeed(motor_speed);
111. motorL.run(FORWARD);
112. motorR.run(FORWARD);
113. Serial.print("forward");
114. delay(motor_delay);
115.}
116. void carGoBwd()
117. {}
118. motorL.setSpeed(motor_speed);
119. motorR.setSpeed(motor_speed);
120. motorL.run(BACKWARD);
121. motorR.run(BACKWARD);
122. Serial.print("Backward");
123. delay(motor_delay);
124.}
125. void carTurnL()
126. {}
127. motorL.setSpeed(motor_speed);
128. motorR.setSpeed(motor_speed);
129. motorL.run(BACKWARD);
130. motorR.run(FORWARD);
131. delay(motor_delay);
132. Serial.print("TurnL");
133.}
134. void carTurnR()
135. {}
136. motorL.setSpeed(motor_speed);
137. motorR.setSpeed(motor_speed);
138. motorL.run(FORWARD);
139. motorR.run(BACKWARD);
140. delay(motor_delay);
141. Serial.print("TurnR");
142.}
143. void carStop()
144. {}
145. b_motor_stop();
146. Serial.print("carStop");
147. delay(5);
148.}
149. //CAR GESCHWINDIGKEIT
150. void CHNSpeed (Int WheelDIR, Int WheelSpeed)
151. {}
152. if(wheelDIR == 0X01) //LEFT Rad
153. {}
154. motorL.setSpeed(wheelSpeed);
155.}
156. sonst if(wheelDIR == 0X02) //RIGHT Rad
157. {}
158. motorR.setSpeed(wheelSpeed);
159.}
160.}
161. //SERVO WENDE
162. void Hublängenpositioniersystem (Int ServoNum, Int pos)
163. {}
164. if(pos > 180) pos = 160;
165. ElseIf pos (pos < 0) = 0;
166. switch(servoNum)
167. {}
168. Fall 0X07:
169. hand_t_servo.write(pos);
170. Serial.print("X");
171. Serial.print(pos);
172. Pause;
173. Fall 0X08:
174. hand_d_servo.write(pos);
175. Serial.print("Y");
176. Serial.print(pos);
177. Pause;
178.}
179.}
180. void setup()
181. {}
182. Serial.begin(9600);
183. b_motor_stop();
184. b_servo_ini();
185. / / delay(2000); Wartezeit
186. Serial.println("Hello! WiFi-Auto");
187.}
188.
189. void b_motor_stop() {}
190. motorL.run(RELEASE);
191. motorR.run(RELEASE);
192.}
193.
194. void b_servo_ini() {}
195. hand_t_servo.attach(9); legt das Servo auf Pin 9 mit dem Servo-Objekt
196. hand_d_servo.attach(10); legt das Servo auf Pin 10 auf das Servo-Objekt
197. hand_t_servo.write(hand_t_pos);
198. hand_d_servo.write(hand_d_pos);
199.}