El control de módulos APC220 mediante un smartphone y una aplicación implica una conexión a través de un adaptador USB serial para activar y controlar dispositivos como luces, motores u otros aparatos.
Los módulos APC220 son dispositivos de comunicación inalámbrica que se enlazan con un adaptador USB serial para permitir la conexión con un smartphone. Utilizando una aplicación específicamente diseñada para interactuar con estos módulos, los usuarios pueden controlar dispositivos conectados a los módulos APC220.
La aplicación proporciona una interfaz amigable que permite la configuración de la comunicación con los módulos APC220. Los usuarios pueden enviar comandos desde su smartphone para encender o apagar luces, activar motores u operar otros dispositivos conectados a estos módulos.
La conexión inalámbrica entre el smartphone y los módulos APC220 a través del adaptador USB serial brinda una forma conveniente y eficiente de controlar dispositivos a distancia. Esta configuración ofrece un gran potencial para la automatización de tareas, el control remoto de aparatos y la creación de sistemas versátiles que pueden ser activados o gestionados con facilidad desde un teléfono inteligente.
El sistema de control de módulos APC220 con un smartphone y una aplicación, utilizando un adaptador USB serial, implica la utilización de un receptor que puede ser un Arduino Mini Pro. Este Arduino Mini Pro actúa como receptor de las señales enviadas desde el smartphone a través de los módulos APC220.
El Arduino Mini Pro funciona como el centro de control que recibe las instrucciones transmitidas desde la aplicación en el smartphone mediante los módulos APC220 conectados a través del adaptador USB serial. El Arduino Mini Pro puede interpretar estas señales y ejecutar comandos específicos para encender o apagar luces, activar motores u operar otros dispositivos conectados a él.
Esta combinación de componentes —módulos APC220 para la comunicación inalámbrica, un adaptador USB serial para conectar los módulos al smartphone y un Arduino Mini Pro como receptor— ofrece una solución flexible y versátil para el control remoto de dispositivos. Los usuarios pueden aprovechar la aplicación en su smartphone para enviar comandos al Arduino Mini Pro y así controlar los dispositivos conectados en tiempo real desde cualquier lugar donde se encuentren.
Placas y módulos usados en este proyecto
Arduino mini pro
El Arduino Pro Mini es una placa de microcontrolador basada en el ATmega328 .
Tiene 14 pines de entrada / salida digital (de los cuales 6 se pueden usar como salidas PWM), 6 entradas analógicas, un resonador integrado, un botón de reinicio y orificios para montar encabezados de pines. Se puede conectar un encabezado de seis pines a un cable FTDI o una placa de conexión Sparkfun para proporcionar alimentación USB y comunicación a la placa.
El Arduino Pro Mini está diseñado para su instalación semipermanente en objetos o exposiciones. La placa viene sin encabezados premontados, lo que permite el uso de varios tipos de conectores o la soldadura directa de cables. El diseño del pin es compatible con el Arduino Mini.
Hay dos versiones del Pro Mini. Uno corre a 3.3V y 8 MHz, el otro a 5V y 16 MHz.
Microcontrolador | ATmega328 * |
Fuente de alimentación de la placa | 3,35-12 V (modelo de 3,3 V) o 5-12 V (modelo de 5 V) |
Voltaje de funcionamiento del circuito | 3.3V o 5V (dependiendo del modelo) |
Pines de E / S digitales | 14 |
Pines PWM | 6 6 |
UART | 1 |
SPI | 1 |
I2C | 1 |
Pines de entrada analógica | 6 6 |
Interrupciones externas | 2 |
Corriente CC por pin de E / S | 40 mA |
Memoria flash | 32 KB de los cuales 2 KB utilizados por el gestor de arranque * |
SRAM | 2 KB * |
EEPROM | 1 KB * |
Velocidad de reloj | 8 MHz (versiones de 3.3V) o 16 MHz (versiones de 5V) |
Módulo Apc220
El módulo de datos de radio APC220 es una solución de radio de alta potencia y muy versátil, es fácil de configurar e integrar en cualquier proyecto que requiera un enlace de RF inalámbrico. Es perfecto para aplicaciones robóticas si necesita control inalámbrico. Puede conectar uno de estos Los módulos con su MCU a través de la interfaz TTL, y se conectan a su PC con otro módulo APC220 a través de un convertidor TTL / USB.
Especificación
- Frecuencia de trabajo: 420 MHz a 450 MHz
- Potencia: 3.5-5.5V
- Corriente: <25-35mA
- Temperatura de trabajo: -20 ° C ~ + 70 ° C
- Alcance: línea de visión de 1200 m (1200 bps)
- Interfaz: UART / TTL
- Velocidad de transmisión: 1200-19200 bps
- Velocidad de transmisión (aire): 1200-19200 bps
- Buffer de recepción: 256 bytes
- Tamaño: 37mm × 17 mm × 6.6mm
- Peso: 30 g
PinOut
Pin | Definicion | Detalle |
---|---|---|
1 | SET | Establecer parámetros (bajo) |
2 | AUX | Señal UART- Transmisión (baja) Transmisión (alta) |
3 | TXD | UART TX |
4 | RXD | UART RX |
5 | ES | Desactive el dispositivo cuando aplique <0,5 V. Habilite el dispositivo cuando lo deje desconectado o aplique> 1,6 V |
6 | VCC | 3.3V-5.5V de potencia |
7 | GND | Tierra 0V |
Descargar RF-Magic
Datasheet
Ejecutar APC22X_V12A.exe (RF-Magic) como administrador si su sistema no es Windows XP.
NOTA : en el software reconocerá el módulo APC220 y puerto serie COMX automáticamente una vez que la abrimos. Revisar en el Administrador de dispositivos para verificar el puerto COM correcto.
Configure RF-magic como en el marco cuadrado rojo a continuación (configuración predeterminada), y haga clic en Escribir W para escribir su configuración, luego haga clic en Leer R para leer los parámetros que ha establecido.
Configuración
Configuración de escritura y lectura
Parámetro | Rango | Predeterminado |
---|---|---|
Frecuencia de RF | Resolución 1KHz, precisión ± 100Hz | 434MHz |
Tasa RF TRx | 1200, 2400, 4800, 9600, 19200 bps | 9600bps |
Potencia de RF | 0-9 | 9 |
Tasa de serie | 1200, 2400, 4800, 9600, 19200, 38400, 57600bps | 9600bps |
ID NETO | 0-65535 (16 bits) | 12345 |
ID DE NODO | 123456789012 | |
Serie Patity | Deshabilitar, la extraña Patity, incluso Patity | Deshabilitar |
Configure el otro módulo APC220 de la misma manera, con la misma configuración de parámetros.
Adaptador usb serial
Descripción
FTDI Basic Program Downloader USB to TTL FT232RL 3.3V 5V DTR
Esta es una placa de conexión básica para el FTDI FT232RL USB a serie IC. El pinout de esta placa coincide con el cable FTDI para funcionar con placas Arduino oficiales y placas Arduino de 5V clonadas. También se puede utilizar para aplicaciones seriales generales. La principal diferencia con esta placa es que resalta el pin DTR en lugar del pin RTS del cable FTDI. El pin DTR permite que un objetivo Arduino se reinicie automáticamente cuando se descarga un nuevo Sketch. Esta es una característica realmente agradable y permite descargar un boceto sin tener que presionar el botón de reinicio. Esta placa reiniciará automáticamente cualquier placa Arduino que tenga el pin de reinicio en un conector de 6 pines.
Esta placa tiene LED TX y RX que hacen que sea un poco mejor usarla sobre el cable FTDI. De hecho, puede ver el tráfico en serie en los LED para verificar si la placa está funcionando.
Esta placa fue diseñada para disminuir el costo del desarrollo de Arduino y aumentar la facilidad de uso (¡la función de reinicio automático es genial!). Nuestras placas Arduino Pro y LilyPads utilizan este tipo de conector.
Una de las características agradables de esta placa es un puente en la parte posterior de la placa que permite que la placa se configure a 3.3 V o 5 V (tanto la salida de potencia como el nivel de E / S). Esta placa se envía de forma predeterminada a 5 V, pero puede cortar la traza predeterminada y agregar un puente de soldadura si necesita cambiar a 3,3 V.
CARACTERÍSTICAS
- Diseño de interfaz estándar, compatible con una variedad de Arduinos como el Pro Mini
- Chip FTDI FT232 original, rendimiento estable
- Con indicador de encendido, envío, recepción, indicadores LED de estado de funcionamiento
- Con opciones de suministro de nivel TTL de 3,3 V y 5 V
- Módulo TTL de USB a serie, descargue STC SCM
- Conexión de puerto mini USB
- Standard interface, compliant with Arduino official controller; With power, sending, reveiving indicator, With 3.3V / 5V power supply; Can be used as ordinary USB to serial TTL module, download STC singlechip
Hardware introduction
- Adopt FTDI company’s FT232RL chip
- Lead out FT232RL chip all signal port, TTL / CMOS level
- RXD/TXD send-receive communication indicator
- USB power supply, can choose 5V or 3.3V interface level (if you need other level, can provide target voltage in VCC and GND pin)
Un Jumper
8 Led de 3 mm
8 resistores de 1KOhm
Pines hembras
8 Pulsadores
Pines macho
Un zócalos para arduino mini pro
PCB
Descarga el archivo gerber gratis desde aquí y mandarlo a fabricar opcionalmente–> https://www.pcbway.com/project/shareproject/Dual_Synchronized_Radio_Frequency_Control_for_Motor_Lights_and_more.html
App inventor
Descargar app y archivo fuente –> serial_app_ardu_radio
Código fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 |
//Más proyectos en http://www.rogerbit.com //Suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 //Grupo en Facebook https://www.facebook.com/groups/RogerBit/ //declaración de variables String cadena; int luz1 = 10; int luz2 = 11; int luz3 = 12; int luz4 = 13; int luz5 = A0; int luz6 = A1; int luz7 = A2; int luz8 = A3; int pul1 = 0; int pul2 = 0; int pul3 = 0; int pul4 = 0; int pul5 = 0; int pul6 = 0; int pul7 = 0; int pul8 = 0; int estado1 = 0; int estado2 = 0; int estado3 = 0; int estado4 = 0; int estado5 = 0; int estado6 = 0; int estado7 = 0; int estado8 = 0; void setup () { Serial.begin(9600);// setea la velocidad del puerto serial pinMode(luz1, OUTPUT); pinMode(luz2, OUTPUT); pinMode(luz3, OUTPUT); pinMode(luz4, OUTPUT); pinMode(luz5, OUTPUT); pinMode(luz6, OUTPUT); pinMode(luz7, OUTPUT); pinMode(luz8, OUTPUT); pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); pinMode(9, INPUT_PULLUP); delay(10); } void loop () { //lee las cadenas que ingresan al puerto serie if (Serial.available()) { cadena = String(""); while (Serial.available()) { cadena = cadena + char(Serial.read()); delay(1); } } //Lectura de botones pul1 = digitalRead(2); pul2 = digitalRead(3); pul3 = digitalRead(4); pul4 = digitalRead(5); pul5 = digitalRead(6); pul6 = digitalRead(7); pul7 = digitalRead(8); pul8 = digitalRead(9); //Enciende o apaga la luz if (pul1 == LOW) {//Si el pulsador 1 está precionado se cumple esta condición pul1 = digitalRead(2);//Leemos el estado del botón nuevamente if(estado1 ==0){//Si la variable estado2 es igual a 0 se cumple esta condición Serial.print("luz1on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado1 =1;//Asignamos el valor 1 a la variable "estado1" digitalWrite (luz1,HIGH); } else{ Serial.print("luz1off");//Enviamos esta cadena para apagar la luz digitalWrite (luz1,LOW); estado1 =0; } while(pul1 == LOW){ pul1 = digitalRead(2);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul2 == LOW) {//Si el pulsador 2 está precionado se cumple esta condición pul2 = digitalRead(3);//Leemos el estado del botón nuevamente if(estado2 ==0){//Si la variable estado2 es igual a 0 se cumple esta condición Serial.print("luz2on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado2 =1;//Asignamos el valor 1 a la variable "estado2" digitalWrite (luz2,HIGH); } else{ Serial.print("luz2off");//Enviamos esta cadena para apagar la luz digitalWrite (luz2,LOW); estado2 =0; } while(pul2 == LOW){ pul2 = digitalRead(3);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul3 == LOW) {//Si el pulsador 3 está precionado se cumple esta condición pul3 = digitalRead(4);//Leemos el estado del botón nuevamente if(estado3 ==0){//Si la variable estado3 es igual a 0 se cumple esta condición Serial.print("luz3on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado3 =1;//Asignamos el valor 1 a la variable "estado3" digitalWrite (luz3,HIGH); } else{ Serial.print("luz3off");//Enviamos esta cadena para apagar la luz digitalWrite (luz3,LOW); estado3 =0; } while(pul3 == LOW){ pul3 = digitalRead(4);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul4 == LOW) {//Si el pulsador 4 está precionado se cumple esta condición pul4 = digitalRead(5);//Leemos el estado del botón nuevamente if(estado4 ==0){//Si la variable estado4 es igual a 0 se cumple esta condición Serial.print("luz4on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado4 =1;//Asignamos el valor 1 a la variable "estado4" digitalWrite (luz4,HIGH); } else{ Serial.print("luz4off");//Enviamos esta cadena para apagar la luz digitalWrite (luz4,LOW); estado4 =0; } while(pul4 == LOW){ pul4 = digitalRead(5);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul5 == LOW) {//Si el pulsador 5 está precionado se cumple esta condición pul5 = digitalRead(6);//Leemos el estado del botón nuevamente if(estado5 ==0){//Si la variable estado5 es igual a 0 se cumple esta condición Serial.print("luz5on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado5 =1;//Asignamos el valor 1 a la variable "estado5" digitalWrite (luz5,HIGH); } else{ Serial.print("luz5off");//Enviamos esta cadena para apagar la luz digitalWrite (luz5,LOW); estado5 =0; } while(pul5 == LOW){ pul5 = digitalRead(6);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul6 == LOW) {//Si el pulsador 6 está precionado se cumple esta condición pul6 = digitalRead(7);//Leemos el estado del botón nuevamente if(estado6 ==0){//Si la variable estado6 es igual a 0 se cumple esta condición Serial.print("luz6on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado6 =1;//Asignamos el valor 1 a la variable "estado6" digitalWrite (luz6,HIGH); } else{ Serial.print("luz6off");//Enviamos esta cadena para apagar la luz digitalWrite (luz6,LOW); estado6 =0; } while(pul6 == LOW){ pul6 = digitalRead(7);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul7 == LOW) {//Si el pulsador 7 está precionado se cumple esta condición pul7 = digitalRead(8);//Leemos el estado del botón nuevamente if(estado7 ==0){//Si la variable estado7 es igual a 0 se cumple esta condición Serial.print("luz7on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado7 =1;//Asignamos el valor 1 a la variable "estado7" digitalWrite (luz7,HIGH); } else{ Serial.print("luz7off");//Enviamos esta cadena para apagar la luz digitalWrite (luz7,LOW); estado7 =0; } while(pul7 == LOW){ pul7 = digitalRead(8);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------------------------------------------------------------------------- //Enciende o apaga la luz if (pul8 == LOW) {//Si el pulsador 8 está precionado se cumple esta condición pul8 = digitalRead(9);//Leemos el estado del botón nuevamente if(estado8 ==0){//Si la variable estado8 es igual a 0 se cumple esta condición Serial.print("luz8on");// Enviamos esta cadena de caracteres x el puerto serial para encender la luz estado8 =1;//Asignamos el valor 1 a la variable "estado8" digitalWrite (luz8,HIGH); } else{ Serial.print("luz8off");//Enviamos esta cadena para apagar la luz digitalWrite (luz8,LOW); estado8 =0; } while(pul8 == LOW){ pul8 = digitalRead(9);//Se cumple esta condición mientras esté precionado el botón } delay(50); } //----------------Se compara la cadena obtenida del módulo apc220---------------------------------------------------- //-------------------------------------------------------------------- if (cadena == "luz1off") {//compara el valor de la cadena obetinada digitalWrite (luz1,LOW);// Serial.print("Luz 1 apagada"); estado1 =0; } if (cadena == "luz1on") {//compara el valor de la cadena obetinada digitalWrite (luz1,HIGH);// Serial.print("Luz 1 encendida"); estado1 =1; } //-------------------------------------------------------------------- if (cadena == "luz2off") {//compara el valor de la cadena obetinada digitalWrite (luz2,LOW);// Serial.print("Luz 2 apagada"); estado2 =0; } if (cadena == "luz2on") {//compara el valor de la cadena obetinada digitalWrite (luz2,HIGH);// Serial.print("Luz 2 encendida"); estado2 =1; } //-------------------------------------------------------------------- if (cadena == "luz3off") {//compara el valor de la cadena obetinada digitalWrite (luz3,LOW);// Serial.print("Luz 3 apagada"); estado3 =0; } if (cadena == "luz3on") {//compara el valor de la cadena obetinada digitalWrite (luz3,HIGH);// Serial.print("Luz 3 encendida"); estado3 =1; } //-------------------------------------------------------------------- if (cadena == "luz4off") {//compara el valor de la cadena obetinada digitalWrite (luz4,LOW);// Serial.print("Luz 4 apagada"); estado4 =0; } if (cadena == "luz4on") {//compara el valor de la cadena obetinada digitalWrite (luz4,HIGH);// Serial.print("Luz 4 encendida"); estado4 =1; } //-------------------------------------------------------------------- if (cadena == "luz5off") {//compara el valor de la cadena obetinada digitalWrite (luz5,LOW);// Serial.print("Luz 5 apagada"); estado5 =0; } if (cadena == "luz5on") {//compara el valor de la cadena obetinada digitalWrite (luz5,HIGH);// Serial.print("Luz 5 encendida"); estado5 =1; } //-------------------------------------------------------------------- if (cadena == "luz6off") {//compara el valor de la cadena obetinada digitalWrite (luz6,LOW);// Serial.print("Luz 6 apagada"); estado6 =0; } if (cadena == "luz6on") {//compara el valor de la cadena obetinada digitalWrite (luz6,HIGH);// Serial.print("Luz 6 encendida"); estado6 =1; } //-------------------------------------------------------------------- if (cadena == "luz7off") {//compara el valor de la cadena obetinada digitalWrite (luz7,LOW);// Serial.print("Luz 7 apagada"); estado7 =0; } if (cadena == "luz7on") {//compara el valor de la cadena obetinada digitalWrite (luz7,HIGH);// Serial.print("Luz 7 encendida"); estado7 =1; } //-------------------------------------------------------------------- if (cadena == "luz8off") {//compara el valor de la cadena obetinada digitalWrite (luz8,LOW);// Serial.print("Luz 8 apagada"); estado8 =0; } if (cadena == "luz8on") {//compara el valor de la cadena obetinada digitalWrite (luz8,HIGH);// Serial.print("Luz 8 encendida"); estado8 =1; } cadena = ""; } |
PROYECTO RECOMENDADO