Une voiture wifi basée sur Arduino
au moyen d’openWRT
But : Une voiture sans fil bricolage basées sur Arduino. En contrôlant la voiture, on peut voir les autres choses dans la région éloignée, ou peuvent contrôler la sécurité.
Effet de photo :
Principe :
l brosse openWRT en routeur sans fil (comme WR703N) et installez mjpeg - le serpentin et le logiciel ser2net.
l Mjpeg est utilisé pour traiter les données vidéo de la caméra et puis de l’envoyer via le protocole Http au tiers.
l la tierce partie tels que téléphone mobile par l’intermédiaire de routeurs d’accès wifi, instructions de contrôle d’envoi dans la connexion TCP
l après avoir reçu des instructions par ser2net, routeur enverrait l’instruction à la liaison d’un port série, il s’agit d’Arduino UNO.
l après avoir reçu des instructions, Arduino peut contrôler l’expansion de Conseil (ou bouclier), et puis le bouclier contrôlerait moteur, capteurs, servos et autres composants électroniques. Enfin, le moteur et l’appareil à gouverner exécutera les instructions.
Connexion :
Accessoires principaux :
Caméra : châssis : http://www.smartarduino.com/wifi-web-camera-car-t...
Châssis de voiture :
http://www.smartarduino.com/car-chassis_d005005002...
Arduino : http://www.smartarduino.com/arduino-compatible_d0...
Bouclier de l’Arduino : http://www.smartarduino.com/arduino-shields_d0010...
Code :
1. #include
2. #include
3.
4. //UART PROTOCOLE / / /
5. #define UART_FLAG 0XFF
6. //Moto////////////////////////////////
7. / / PROTO : DRAPEAU DEV DIRECTION VIDE DRAPEAU
8. #define MOTO 0 x 00
9. #define commandement avancé de 0 x 01 //MOTO
10. #define 0 x 02 en arrière
11. #define TOURNEGAUCHE 0 x 03
12. #define TOURNEDROITE 0 x 04
13. #define CARSTOP 0 x 00
14. //Servo///////////////////////////////
15. / / PROTO : DRAPEAU DEV SERVONUM POS DRAPEAU
16. #define SERVO 0 x 01
17. //Moto Vitesse / / /
18. / / PROTO : DRAPEAU DEV MOTOSIDE INDICATEUR DE VITESSE
19. #define 0 x 02 de DSVt
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) ; se connecter au M3
28. AF_DCMotor motorR(4,MOTOR12_8KHZ) ; se connecter à M4
29. int motor_speed = 200 ; [modifid] moteur vitesse 150-200,---min:100 ; max : 255
30. int motor_delay = 400 ; [modifid] temps de retard à l’étape
31.
32. //-------------------define servo----------------------------------------------//
33. servo hand_t_servo ; Créez l’objet servo pour contrôler un servo
34. servo hand_d_servo ; Créez l’objet servo pour contrôler un servo
35. int hand_t_pos = 90 ; //
36. int hand_d_pos = 90 ; //
37. int hand_delay = 1 ; [modifid] vitesse de main
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. d’autre
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. affaire plus loin :
76. carGoFwd() ;
77. break ;
78. affaire vers l’arrière :
79. carGoBwd() ;
80. la rupture ;
81. affaire TOURNEGAUCHE :
82. carTurnL() ;
83. break ;
84. affaire TOURNEDROITE :
85. carTurnR() ;
86. break ;
87. affaire CARSTOP :
88. carStop() ;
89. break ;
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] == DSVt)
99. {}
100. CHNSpeed(rxData[2], rxData[3]);
101. UARTReveived = 0 ;
102.}
103.}
104.}
105.
106. //CAR MOUVEMENTS
107. Sub 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. Sub 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. Sub 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. Sub 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. Sub carStop()
144. {}
145. b_motor_stop() ;
146. Serial.print("carStop") ;
147. delay(5) ;
148.}
149. //CAR VITESSE
150. void CHNSpeed (int wheelDIR, int wheelSpeed)
151. {}
152. if(wheelDIR == 0X01) //LEFT roue
153. {}
154. motorL.setSpeed(wheelSpeed) ;
155.}
156. autre if(wheelDIR == 0X02) //RIGHT roue
157. {}
158. motorR.setSpeed(wheelSpeed) ;
159.}
160.}
161. //SERVO TOUR
162. void servoSet (int servoNum, int pos)
163. {}
164. if(pos > 180) pos = 160 ;
165. sinon si pos (pos < 0) = 0 ;
166. switch(servoNum)
167. {}
168. cas 0 x 07 :
169. hand_t_servo.write(pos) ;
170. Serial.print("X") ;
171. Serial.print(pos) ;
172. break ;
173. cas 0 x 08 :
174. hand_d_servo.write(pos) ;
175. Serial.print("Y") ;
176. Serial.print(pos) ;
177. break ;
178.}
179.}
180. void setup()
181. {}
182. Serial.begin(9600) ;
183. b_motor_stop() ;
184. b_servo_ini() ;
185. / / delay(2000) ; temps d’attente
186. Serial.println("Hello! WiFi voiture") ;
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) ; attache le servo sur la broche 9 à l’objet de servo
196. hand_d_servo.attach(10) ; s’adapte sur le servo sur la broche 10 l’objet de servo
197. hand_t_servo.write(hand_t_pos) ;
198. hand_d_servo.write(hand_d_pos) ;
199.}