En dos artículos en los que describimos los montajes de los transmisores para espionaje Spyfone I y Spyfone II, utilizamos la tecnología analógica tradicional que es bastante accesible, aunque se supere. A pesar de ofrecer buenos resultados dentro de lo que proponemos, hoy existen tecnologías mucho más avanzadas para soluciones inalámbricas usando transmisión digital. Texas Instruments (www.ti.com) ofrece diversas plataformas para el desarrollo de soluciones digitales inalámbricas y es de las que trataremos en este artículo.

Los sistemas de comunicación digital para cortas distancias presentan innumerables ventajas en relación a los analógicos antiguos, siendo por eso, utilizado prácticamente en todos los tipos de equipos que utilizan esta modalidad de comunicación.

Además de poder evitar las señales interferentes, que ocurren en ambientes ruidosos, son prácticamente a prueba de interceptación y tienen una capacidad de inclusión de información muy grande.

Así, además de la posibilidad de transmitir sonido con gran fidelidad en el formato digital, datos e incluso imágenes pueden ser transferidas de un local a otro.

Existen hoy más de una docena de tecnologías diferentes que pueden ser utilizadas en las comunicaciones inalámbricas a cortas distancias, tales como:

• Estándar IEEE 802.15

• Personal Area Networks (PAN)

• RF Sub-1 GHz

• RF 2.4 GHz

• RFID / NFC

• GPS

 

Estas tecnologías se aplican en una gran cantidad de aplicaciones prácticas, tales como:

• Sistemas de alarma y seguridad

• Aplicaciones automotrices

• Automatización residencial e iluminación

• Medidas y control de energía

• Electrónica de consumo portátil

• Equipos médicos

• Controles remotos

• Sonido inalámbrico

 

El nuevo producto que el lector puede desarrollar con estos recursos es el Spyfone III, un espía electrónico indetectable y de excepcional calidad de sonido, y que, además, puede ser desactivado remotamente por una señal de control, en caso de amenaza de ubicación.

La elección de qué herramienta de desarrollo utilizar depende de la aplicación, resultando difícil para un diseñador menos experimentado hacer la elección.

Texas Instruments, además de las herramientas de desarrollo, tiene una documentación técnica que facilita el trabajo del diseñador en la elección de la solución ideal para su caso.

Se trata de un manual de 65 páginas en el que se detallan cada herramienta con sus aplicaciones, sus características y el acceso a la herramienta de desarrollo y kits.

El documento en PDF de 6 Mb, con el código slab056c, puede ser accedido en el siguiente enlace.

http://www.ti.com/lit/sg/slab056c/slab056c.pdf

Ver el índice que aborda este documento.

 


 

 

 

18.977MBMemory Usage38.92msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.20
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1746440754 "last" => 1746440754...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.45KB) (293μs)
  • afterInitialise (1.14MB) (3.61ms)
  • afterRoute (179.16KB) (877μs)
  • beforeRenderComponent com_content (100.65KB) (435μs)
  • Before Access::preloadComponents (all components) (33.45KB) (195μs)
  • After Access::preloadComponents (all components) (107.06KB) (354μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (8μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (18.36ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.08KB) (1.78ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (28μs)
  • afterRenderComponent com_content (411.64KB) (5.73ms)
  • afterDispatch (2.25KB) (50μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.33KB) (1.55ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (315μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (87μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (1.12ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (551μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (68μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (183μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (47μs)
  • afterRender (288.81KB) (3.16ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (47.16%)
    18.36ms
    1 x afterRenderComponent com_content (411.64KB) (14.72%)
    5.73ms
    1 x afterInitialise (1.14MB) (9.28%)
    3.61ms
    1 x afterRender (288.81KB) (8.12%)
    3.16ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.08KB) (4.57%)
    1.78ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.33KB) (3.99%)
    1.55ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.02KB) (2.89%)
    1.12ms
    1 x afterRoute (179.16KB) (2.25%)
    877μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.42%)
    551μs
    1 x beforeRenderComponent com_content (100.65KB) (1.12%)
    435μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.91%)
    354μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.81%)
    315μs
    1 x afterLoad (85.45KB) (0.75%)
    293μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.5%)
    195μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.47%)
    183μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.22%)
    87μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.17%)
    68μs
    1 x afterDispatch (2.25KB) (0.13%)
    50μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.12%)
    47μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.07%)
    28μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    8μs
23 statements were executed, 5 of which were duplicates, 18 unique11.07ms1.55MB
  • SELECT @@SESSION.sql_mode;31μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 171μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)150μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`45μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest68μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`231μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)209μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.62ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`293μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.4383'71μs912B/libraries/src/Table/Table.php:780Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`250μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '4383'131μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)154μs6.12KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`175μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)262μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`177μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC387μs6.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`200μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1154μs656B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)89μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context64μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)157μs6.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 183μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content
  • warningassets - No asset found for com_content.article.4383, falling back to com_content