Archives de catégorie : Geek, le monde est geek

Le Raspberry Pi Zero pour seulement 5 USD

Raspberry Pi Zero (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/11/Pi-Zero-Features-Graphic-Small NULL.jpg)La fondation Raspberry Pi vient d’annoncer le lancement d’une version minimaliste de leur célèbre carte ordinateur embarqué nommée Raspberry Pi Zero. Pour un prix de seulement 5$, ce circuit de la moitié de la taille d’une carte de crédit embarque le même processeur Broadcom BCM2835 que la carte originale mais cadencé à 1 GHz ce qui apporte des performances améliorées de 40%. La mémoire vive est de 512Mo et les entrées-sorties sont réduites avec un port HDMI, deux ports micro-USB et un lecteur de carte micro-SD. Le connecteur “standard” de 40 broches pour les entrées-sorties GPIO est présent, ainsi que des broches permettant une sortie vidéo composite.

Merci à Ars Technica pour l’information (http://arstechnica NULL.com/gadgets/2015/11/pi-zero-a-full-raspberry-pi-for-just-4/).

Intel ComputeStick avec processeur Core M

Intel Core M Skylake die (Ars Technica) (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/09/DSC01086 NULL.jpg)Dans la continuité de la présentation de sa nouvelle gamme de micro-processeur basés sur l’architecture SkyLake, Intel a annoncé une mise à jour de son pico-ordinateur ComputeStick. Bien que différent en format des Raspberry Pi et consort, le ComputeStick présente de nombreuse similitude et peut être utilisé dans des projets d’informatique embarqué.

Comme la génération précédente (http://arstechnica NULL.com/gadgets/2015/04/intels-compute-stick-a-full-pc-thats-tiny-in-size-and-performance/), c’est un équipement un peu plus gros qu’un dongle USB et qui comporte une sortie HDMI pour un écran, un connecteur USB ainsi que des connexions WiFi et Bluetooth. La nouveauté est que cette fois-ci le processeur est dans la même veine que celui de la gamme principale d’Intel, les Core m3 et Core m5 devraient offrir une augmentation importante des performances par rapport à l’Atom utilisé auparavant. Aucune autre info n’est disponible. Rappelons que la version Atom était à 110 USD pour 1Go de RAM et 8Go de Flash avec Linux et 150 USD pour la version 2Go de RAM et 32Go de Flash sous Windows.

Ars Technica (de qui provient la nouvelle (http://arstechnica NULL.com/gadgets/2015/09/intel-announces-a-beefed-up-core-m-compute-stick-with-skylake/)) indique au passage que cette augmentation importante de performance a été rendue possible parce que la taille du die du micro-processeur a été presque divisée par 2 et que la dissipation typique de puissance (TDP) est très faible autour de 4,5W.

ARM Radio par I2PHD : un récepteur SDR 8-900KHz à échantillonnage direct

ARM Radio par I2PHD réception Europe 1 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/07/arm_radio_europe1 NULL.jpg)Alberto de I2PHD est l’excellent concepteur du logiciel WinRAD qui a servi de base à HDSDR (http://xv4y NULL.radioclub NULL.asia/2014/12/20/reception-ads-b-et-decouverte-de-ma-clef-rtl-sdr/) (WinRAD HD), très connu des amateurs de radio SDR I/Q et RTL-SDR, ainsi que d’Argo (http://xv4y NULL.radioclub NULL.asia/2012/05/27/nouvelle-version-build-140-dargo-par-i2phd/), logiciel de QRSS. Depuis quelques temps il avait commencé à se pencher sur l’écriture de codes SDR pour les processeurs ARM Cortex M.

Il vient juste de participer à un concours de créations de circuits autour des micro-contrôleurs ARM et partage en ligne le design et le code source de son projet ARM Radio (http://www NULL.sdradio NULL.eu/weaksignals/code/ARM_Radio NULL.pdf). Au niveau matériel, la volonté est celle de la simplicité puisqu’il n’y a quelques composants en dehors de la carte STM32F429 Discovery qui intègre déjà un écran tactile LCD. Le convertisseur ADC intégré au micro-contrôleur réalise la numérisation du signal qui est ensuite traité numériquement par le Cortex M4 à 200 MHz. A noté que ce dernier disposant d’unité SIMD Neon, les performances sont excellentes.

ARM Radio par I2PHD schéma bloc de principe (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/07/I2PHD_ARM_Radio_schema_principe NULL.png)A noter que si la réception d’Europe 1 sur le grandes ondes ne vous paraît pas une application intéressante, l’intérêt de ce projet est qu’il peut être adapté à n’importe quelle bande de fréquence avec l’ajout d’un premier étage de conversion HF et que le code source étant ouvert vous pourrez implémenter n’importe quelle démodulation.

C.H.I.P. : Un ordinateur embarqué (style Raspberry-Pi) pour 9$

CHIP board AllWinner A13 (Ars Technica) (http://arstechnica NULL.com/information-technology/2015/05/move-over-raspberry-pi-this-startup-is-building-a-9-computer/)Selon Ars Technica, la startup américaine Next Thing travaille sur un équivalent du Rasperry Pi mais pour un prix plancher de 9 USD (http://arstechnica NULL.com/information-technology/2015/05/move-over-raspberry-pi-this-startup-is-building-a-9-computer/). C’est en fait un “à-côté” d’un projet existant, mais ils se sont dit qu’ils pourraient en faire profiter la communauté et ont placé le projet sur KickStarter où il a rencontré un succès énorme avec plus de 627 000$ levés à ce jour depuis 12 000 contributeurs. Les lots de productions prévus pour décembre 2015 sont bientôt épuisés et les commandes arrivent pour ceux de janvier 2016!

Cette carte beaucoup plus petite que la plupart de ses consoeurs embarquement un CPU AllWinner A13 à 1GHz (simple-coeur Cortex A8 et GPU Mali400) , 512Mo de RAM et 4Go de Flash pour la mémoire de masse. Elle intègre WiFi et Bluetooth ainsi qu’une sortie vidéo composite en plus du port USB habituel. Avec un adaptateur, vous pouvez aussi brancher un écran HDMI ou VGA.

PocketCHIP AllWinner A13 (Ars Technica)Des compléments sont disponibles avec le PocketC.H.I.P. qui le transforme en mini-tablette (plutôt au format GameBoy) avec écran tactile 4,3″ 470×272, batterie 3000mAh, mini clavier à membrane, connecteurs GPIO… Le paquet comprenant un Pocket CHIP et une carte CHIP est disponible pour les contributions à partir de 49$.

A noter qu’à part pour les USA où la livraison est à 5$, c’est 20$ de frais de port, ce qui limite un peu l’intérêt pour les paquets les moins chers…

Nouveau micro-contrôleur Atmel avec une autonomie sur piles mesurées en dizaines d’années

Atmel SAM L21 (Photo Ars Technica) (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/04/atmel-640x427 NULL.jpg)Atmel a annoncé il y a quelques jours une nouvelle famille de circuits intégrés basés sur une architecture ARM Cortex M0. L’objectif visé par les nouveaux micro-contrôleurs SAM L21 (http://www NULL.atmel NULL.com/products/microcontrollers/arm/sam-l NULL.aspx) est une consommation extrêmement basse de l’ordre de la dizaine d’années. On parle de consommations situées entre 35µA/MHz en fonctionnement et 200nA en veille profonde. C’est environ 4 fois mieux que les meilleurs circuits actuels en utilisation, et le gain en veille profonde est encore plus important. En effet, alors qu’habituellement on se contente d’éteindre l’horloge interne des circuits, les SAM L21 permettent de complètement déconnecter certaines parties du circuit-intégré tout en permettant aux autres de continuer à communiquer, réduisant ainsi les pertes par fuites à presque zéro.

Cette nouvelle puce dispose d’un coeur Cortex M0 32 bits à 42 MHz, jusqu’à 256Ko de mémoire Flash, jusqu’à 32Ko de mémoire SRAM et jusqu’à 8Ko d’une autre mémoire SRAM spéciale qui reste alimentée même dans le mode veille le plus profond. En plus des périphériques habituellement trouvé dans les MCU (ADC et DAC 12bits, GPIO, USB, I2C, SPI, UART…) qui sont paramétrables, le L21 dispose de la gestion d’interface tactiles, d’un circuit spécial pour le chiffrement AES et d’un Générateur de Nombres Aléatoires Véritables (TRNG, True Random Number Generator). Ceci la rend donc parfaitement adapté pour les systèmes embarqué et les commandes à distance sécurisées.

L’article d’origine provient d’Ars Technica (http://arstechnica NULL.com/information-technology/2015/03/new-arm-powered-chip-aims-for-battery-life-measured-in-decades/).

Bibliothèque PHP de traitement de fichiers logs ADIF v3

Logo QScope.org (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2013/08/logo_qscope_b NULL.png)Ceci est une nouvelle version de la bibliothèque PHP que j’avais précédemment publié (http://xv4y NULL.radioclub NULL.asia/2013/10/15/bibliotheque-php-de-traitement-de-fichiers-logs-adif-v2/). Elle accepte maintenant conforme à la norme ADIF v3 et accepte de manière transparente les fichiers au format traditionnels ADI ou au nouveau format ADX (XML). C’est la librairie que j’utilise pour mon site d’analyse de log en ligne QScope.org.

Ce code ne gagnerait pas un concours de beauté, mais il fonctionne. J’avoue que les tests avec le format XML ont été limités à l’exemple donné avec la norme ADIF v3, car je n’ai pas de logiciel capable de générer de tels fichiers. Aucune comparaison de performance n’a été faite entre les deux formats, mais je soupçonne que le format traditionnel est un peu plus rapide à importer, même si la limite viendra plus rapidement de la base de données que du parsing.

<?php

/*

=== ADIF v3 Parser library v2.00 (2015-03-10) ===

   This Library his based on work by Jason Harris KJ4IWX but has been simplified and improved for better ADIF compatiblity by Yannick DEVOS XV4Y
   Version 2.00 introduces transparent support for ADX (XML) file format coming with ADIF v3 specifications
   
   Copyright 2011-2013 Jason Harris KJ4IWX (Apache v2.00 License)
   Copyright 2015 Yannick DEVOS XV4Y (GNU GPL v3.00 License)
   Any commercial use is subject to authorization from the respective authors
	
	This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

---

	This PHP library is designed to work with the Jelix 1.5 PHP Framework and PHP 5.4.
	However, it can simply be called by any PHP program.
	
	Usage for ADI and ADX files (with Jelix):
		$ADIFParser = jClasses::createInstance('yourmodule~ADIFParser');
		$ADIFParser->initialize($complete_path_to_the_file);

		echo ($ADIFParser->get_header('adif_ver'));			// Will display the ADIF version
		$all_headers_array = $ADIFParser->get_header(); 	// Will return the whole headers in an array
		while(($record = $ADIFParser->get_record())!=-1) {	// Check for end of file
			if ($record!=false) {							// If line is empty we skip
				if(count($record) == 0) {
					break;
				};
				echo ($record['call']);
				echo ($record['qso_date']);
				echo ($record['mode']);
				// Do whatever you like with the ADIF fields...
			};
		};

	Fore more infos find contacts at:
	http://xv4y.radioclub.asia/
	http://www.qscope.org/

*/

class ADIFParser
{
	var $is_adx = false;	// default to ADI file (traditionnal format)
	var $data; 				// the adif data
	var $i; 				// the iterator
	var $headers = array();
	
	public function initialize($file) //this function parses the header
	{
		// We read the first line and check if it is XML (ADX) or not
		$this->file_handler = fopen($file,'r');
		$firstline = fgets($this->file_handler);
		if (stripos($firstline, "<?xml")!==false) $this->is_adx = true;
		fclose($this->file_handler);

		if (!$this->is_adx) {	// This is an old fashion ADI file format
			$eoh=$eof=false;
			$this->data='';
		
			// And we start from the begining
			$this->file_handler = fopen($file,'r');
			while (!$eoh && !$eof) {	// We will try to locate the <EOH> tag
				$newdata = fgets($this->file_handler);	// $this->file_handler contains a handler in the case of ADI files
				if (!$newdata) {
					$eof = true;
				} else {
					if (stripos($newdata, "<eoh>")===false) {
						$this->data .= $newdata;
					} else {
						$eoh = true;
					}
				};
			}
			if($eoh == false) //did we find the end of headers?
			{
				// If this ADIF file has no header (like FT5ZM), we need to re-open the file because we already went to the end
				fclose($this->file_handler);
				$this->file_handler = fopen($file,'r');
				return 0;
			};
		
		
			//get headers
		
			$this->i = 0;
			$in_tag = false;
			$tag = "";
			$value_length = "";
			$value = "";
			$pos = strlen($this->data)-1;
				
			while($this->i < $pos)
			{
				//skip comments
				if($this->data[$this->i] == "#")
				{
					while($this->i < $pos)
					{
						if($this->data[$this->i] == "\n")
						{
							break;
						}
				
						$this->i++;
					}
				}else{
					//find the beginning of a tag
					if($this->data[$this->i] == "<")
					{
						$this->i++;
						//record the key
						while($this->data[$this->i] < $pos && $this->data[$this->i] != ':')
						{
							$tag = $tag.$this->data[$this->i];
							$this->i++;
						}
					
						$this->i++; //iterate past the :
					
						//find out how long the value is
					
						while($this->data[$this->i] < $pos && $this->data[$this->i] != '>')
						{
							$value_length = $value_length.$this->data[$this->i];
							$this->i++;
						}
					
						$this->i++; //iterate past the >
					
						$len = (int)$value_length;
						//copy the value into the buffer
						while($len > 0 && $this->i < $pos)
						{
							$value = $value.$this->data[$this->i];
							$len--;
							$this->i++;
						};

						$this->headers[strtolower(trim($tag))] = $value; //convert it to lowercase and trim it in case of \r
						//clear all of our variables
						$tag = "";
						$value_length = "";
						$value = "";
					
					}
				}
			
				$this->i++;
			};
			return 1;
		} else {	// This is the new ADX (XML) file format
			$this->is_adx = true;
			$this->xml_reader = new XMLReader;
			$this->xml_reader->open($file); // In this case, $file contains a file path
			if (!$this->xml_reader) return -1;	// Not able to open the file

			while ($this->xml_reader->read() && $this->xml_reader->name != 'HEADER');		// Looking for the header

			if ($this->xml_reader->name == 'HEADER') {
				// Load the current xml element into simplexml
				$xml = simplexml_load_string($this->xml_reader->readOuterXML());
				$this->headers = array_change_key_case(json_decode(json_encode($xml),TRUE),CASE_LOWER);

			} else {
				return 0;	// No header, this should mean invalid file for ADX
			}
			while ($this->xml_reader->read() && $this->xml_reader->name != 'RECORD');		// Now we go to the first RECORD
			if ($this->xml_reader->name != 'RECORD') {
				$this->xml_reader->close();
				return -2;	// This is an empty or invalid ADX file
			}
		return 1;	// All is normal
		}
	}
	
	//the following function does the processing of the array into its key and value pairs
	public function record_to_array(&$record)
	{
		$return = array();
		for($a = 0; $a < strlen($record); $a++)
		{
			if($record[$a] == '<') //find the start of the tag
			{
				$tag_name = "";
				$value = "";
				$len_str = "";
				$len = 0;
				$a++; //go past the <
				while($record[$a] != ':') //get the tag
				{
					$tag_name = $tag_name.$record[$a]; //append this char to the tag name
					$a++;
				};
				$a++; //iterate past the colon
				while($record[$a] != '>' && $record[$a] != ':')
				{
					$len_str = $len_str.$record[$a];
					$a++;
				};
				if($record[$a] == ':')
				{
					while($record[$a] != '>')
					{
						$a++;
					};
				};
				$len = (int)$len_str;
				while($len > 0)
				{
					$a++;
					$value = $value.$record[$a];
					$len--;
				};
				$return[strtolower($tag_name)] = $value;
			};
			//skip comments
			if($record[$a] == "#")
			{
				while($a < strlen($record))
				{
					if($record[$a] == "\n")
					{
						break;
					}
					$a++;
				}
			}
		};
		return $return;
	}
	
	
	//finds the next record in the file
	public function get_record()
	{
		if (!$this->is_adx) {
			$record ='';
			$out_condition = false;
			while (!$out_condition) {
				$newdata = fgets($this->file_handler);
				if ($newdata===false) {
					$out_condition = true;
					fclose($this->file_handler);
					return -1;	// This is the end of file
				} else {
					$end = stripos($newdata , "<eor>");
					if($end !== false) { //we got a full line
						$record .= substr($newdata, 0, $end);
						$out_condition = true;
						return $this->record_to_array($record); //process and return output
					} else {
					$record .= $newdata;	// The line is not complete and we need to fetch a new string
					}
				}
			}
		} else {
			// Loop through the Records
			if ($this->xml_reader->name == 'RECORD') {
				// Load the current xml element into simplexml and we’re off and running!
				$xml = simplexml_load_string($this->xml_reader->readOuterXML());
				$this->xml_reader->next('RECORD');
				$array = array_change_key_case(json_decode(json_encode($xml),TRUE),CASE_LOWER);

				return $array;
			} else {
				$this->xml_reader->close();
				return -1;
			}
		}
 	}
	
	public function get_header($key='')	// Changed to return the whole array if no key provided
	{
		if(array_key_exists(strtolower($key), $this->headers))
		{
			return $this->headers[strtolower($key)];
		} else if (empty($key)) {
			return $this->headers;
		} else {
			return NULL;
		}
	}
	
}
?>

Comparaison de différents modules “chinois” d’alimentation à découpage

Si les régulateurs linéaires tel que 7805 ou LM317 font toujours partie de la base de la “caisse à outils” des amateurs d’électronique, il faut avouer qu’aujourd’hui il existe des alternatives bien plus intéressantes pour un coût raisonnable. Tout d’abord, il y a les régulateurs linéaires LDO (Low Drop-Out, soit faible chute de tension) comme le LM1117 de Texas Instruments qui offrent une efficacité accrue et une plage de fonctionnement plus grande sans pour autant être plus complexes à mettre en place. Il n’en reste pas moins que la tension “superflue” est évacuée sous forme de chaleur, en pure perte.

Modules chinois LM2596 - bajdi.com (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/02/LM2596-boards-1024x682 NULL.jpg)Ensuite, les usines chinoises se sont mises à produire des modules prêts à l’emploi utilisant la technologie de régulation de tension à découpage, et ces modules sont disponibles à la vente en ligne à des prix très raisonnables. Pour faire bref, sur une alimentation à découpage l’efficacité est accrue (plus de dissipation systématique en chaleur) au prix d’une complexité de mise en oeuvre et d’un besoin de filtrage supérieur car le découpage se fait en haute fréquence (quelques KiloHertz à quelques MégaHertz). Cerise sur le gâteau, les alimentations à découpage ou convertisseur de tension peuvent aussi se présenter en montage Boost ou Step-Up pour produire une alimentation en sortie supérieure à celle en entrée. C’est  l’idéal pour compenser le déchargement d’une batterie de secours, passant de 13,8V à 12V, mais la sortie du régulateur restant à 13,8V.

Toutefois, tout n’est pas si rose dans le monde de l’électronique Made in China, et cet article présente de mesures précises sur les modules d’alimentation à découpage les plus courants et leurs défauts ou qualités (http://www NULL.bajdi NULL.com/testing-switch-mode-voltage-regulators/). En particulier, les circuits les plus courants à base de LM2576 ont une efficacité relativement faible (inférieure à 80%) et en pratique ne permettent pas de sortir plus de 2A sans se mettre à osciller. Je vais avouer que je suis très friand de ces modules, et qu’il reste tout de même de très bonnes alternatives aux régulateurs linéaires.

Comparaison de différents sites web avec informations aviation ADS-B

Contre toute attente, mois qui n’ai jamais été un écouteur (SWL) passionné, je me suis pris au jeu de la réception des signaux ADS-B provenant des avions survolant ma région du delta du Mékong.

J’avoue que je considère toujours que ça va me passer dès que j’aurai épuisé l’aspect technique de la chose. Après avoir essayé les différentes solutions logicielles sous Windows, je suis passé à une solution autonome sous Linux. Mon ami Benoît ma gentiment mis à disposition une CubieBoard 2 (http://xv4y NULL.radioclub NULL.asia/2013/08/09/reception-de-la-cubieboard2/) qui traînait dans un de ses tiroirs (il lui préfère les Raspberry Pi) que j’ai utilisé pour démoduler les signaux I/Q du 1090 MHz provenant de la clef RTL-SDR, décoder les signaux et les envoyer sur le site web de FlightRadar24 (http://www NULL.flightradar24 NULL.com/10 NULL.51,106 NULL.14/7). La distribution Linux que j’ai choisi pour cela est Cubieez qui est basée sur Debian comme Rapsbian dont elle reprend une grande partie des éléments. La majorité des programmes compilés pour Rapsberry Pi (jeu d’instructions ARMv6) tournent sur la CubieBoard (ARMv7).

CubieBoard 2 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2013/08/100_3640 NULL.jpg)Cela prend environ 10% du temps CPU quand le AllWinner A20 tourne à 912 MHz. Cela m’a permis d’une part d’en réduire la cadence pour diminuer la consommation et la chaleur, et aussi d’envisager la transmission des données sur d’autres sites webs comme FlightAware (http://flightaware NULL.com) et PlaneFinder (http://planefinder NULL.net). Avec le CPU à 528 MHz, la partie démodulation et décodage (programme dump1090) prend environ 25-30% d’un coeur CPU, le reste (transmission des informations décodées sur 3 sites web) jamais plus de 10% du deuxième coeur.

Je vais donc vous donner mon avis sur les différents sites web et leurs solutions pour la réception des signaux avec clef RTL-SDR et l’envoi des informations, mais du point de vue du feeder (celui qui alimente les sites) et non de l’utilisateur. Le plus important est que les trois sites web testés fonctionnent parfaitement et que l’installation de leurs suites logicielles se fait sans difficultés particulières. Certaines sont plus aisées que d’autres, mais dans aucun cas je n’ai eu de difficultés bloquantes.

Le premier que j’ai installé est le package fr24feed expérimental de FlightRadar24 (http://forum NULL.flightradar24 NULL.com/threads/7563-Flightradar24-decoder-feeder-BETA-testing-(Win-RPi-Linux-OSX)). Il est disponible pour plusieurs plateforme (Windows, OS X, Linux) et plus important a été compilé sur les architectures ARM (Raspberry Pi et CubieBoard). Encore en version béta, il est pourtant déjà bien testé et sa documentation est assez claire. Sur une distribution Debian, l’installation se fait en une commande via un package .deb, ensuite la configuration est interactive et les logs assez complets. Il intègre une version modifiée du démodulateur/décodeur Dump1090 ainsi que le feeder par lui même qui envoie les données vers le site web. En creusant un peu, on peut “séparer” le fonctionnement des deux pour utiliser la sortie de dump1090 avec d’autres programmes. J’ai séché un peu sur ce sujet et rapidement quelqu’un m’a répondu sur le forum qui est une bonne source d’information.

Le package logiciel le mieux documenté est de loin PiAware, celui de FlightAware (http://flightaware NULL.com/adsb/piaware/build). La documentation est en français et décrit par le menu tous les aspects matériel (avec une liste de courses) et logiciels de l’installation, ainsi que les cas de figure où vous alimentez plusieurs sites web en même temps, ce qui n’est pas le cas de manière claire chez les autres. Une image complète de Rapsbian est disponible si vous installez sur un Rapsberry Pi. Dans les autres cas, la procédure d’installation (http://flightaware NULL.com/adsb/piaware/install) est elle-même est très simple avec là aussi un seul fichier package .deb à installer et quelques commandes supplémentaires à taper pour finaliser la configuration. Point positif, le code source est disponible et l’installation est très flexible. A noter que volontairement dump1090 n’est pas intégré dans le package.

Pour terminer, il faut avouer que PFclient (le feeder de PlaneFinder) est en retrait en terme de simplicité d’installation. Tout d’abord, il requiert l’installation préalable d’une librairie d’interpréteur JSNode plutôt lourde et dont l’installation n’est pas des plus évidente. Ensuite, le fait d’être basé sur ce language de programmation (issu du JavaScript) ajoute une couche. L’auteur est disponible par e-mail et m’a répondu très promptement en envoyant toutes les informations, mais celles-ci peuvent rebuter les moins aguerris. Au final cela fonctionne, mais la consommation de mémoire importante de JSNode peut poser problème sur les cartes Rapsberry Pi de première génération qui n’ont que 256 Mo de mémoire vive.

Couverture ADS-B XV4Y (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/02/PlaneFinderStatsCoverage NULL.png)Le site web le plus abouti est à mon avis celui de FlightRadar24. A la fois du point de vue utilisateur par la justesse de ses informations mais aussi par ses statistiques pour les “feeders” ADS-B qui alimente le site web. Tout est accessible rapidement en un clic ou deux. Les informations sont présentées sur une unique page, mais elles sont  pertinentes avec un archivage des jours précédents. Il lui manque juste un comparatif entre les différents “feeders” comme le fait par exemple PlaneFinder. Ce site ajoute une vue historique sur les 7 derniers jours intéressante mais présente moins de chiffres (pas le nombre d’avions reçus chaque jour par exemple). PlaneFinder offre aussi une visualisation globale et personnelle de la couverture (voir ci-contre) qui est très informative pour connaître les performances de sa chaîne de réception.

Le site dont le back-office est le plus étoffé est sans contest FlightAware (http://flightaware NULL.com/adsb/stats/user/xv4y). Les statistiques offre plus ou moins les mêmes informations, mais avec un niveau de détail supérieur agréable si on ne veut pas aller voir les logs du récepteur en ligne de commande. Il y a aussi une comparaison avec les récepteurs “voisin” et même des classements très exhaustifs (http://flightaware NULL.com/adsb/stats/) ce qui est motivant pour améliorer les performances. Il est possible de commander intégralement le système du récepteur et de faire les mises à jour applicative et système via le site web, ainsi que de l’arrêter complètement. Personnellement je n’aime pas trop l’idée qui pose pour moi des problèmes de sécurité, mais c’est une solution agréable pour ceux qui ne sont pas fan de ligne de commande UNIX.

Au passage, j’ai encore amélioré ma chaîne de réception et je suis maintenant égal au “radar” officiel F-VVTS1 de FlightRadar24 installé à Ho Chi Minh Ville. J’ai tout simplement remplacé ma chaîne de changer de genre pour un connecteur directement soudé sur le câble. A 50 MHz la solution précédente ne posait aucun problème, mais à 1 GHz les pertes étaient loin d’être négligeables.

Antenne colinéaire coaxiale pour le 1090 MHz – Suite

J’avoue que j’étais un peu grisé d’avoir assemblé et monté une antenne si efficace en très peu de temps (http://xv4y NULL.radioclub NULL.asia/2015/02/05/antenne-colineaire-coaxiale-pour-le-1090-mhz-frequence-aviation-ads-b/). Vendredi matin j’avais décidé d’améliorer mon antenne colinéaire coaxiale pour recevoir les signaux ADS-B des avions. Je prévoyais une heure pour y ajouter 3 éléments demi-onde, la glisser dans un radôme et l’installer plus haut et avec plus de dégagement du mât en PVC.

Radôme et éléments demi-onde 1090 MHz ADS-B (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/02/DSCN3993 NULL.jpg)J’avais lu sur des forums que certains avaient construits de telles antennes avec 8 ou 12 éléments. En rentrant de déposer mon fils à l’école je passe au marché acheter une canne à pêche en fibre de verre pour 2€, et je me mets au travail, profitant d’une journée sans clients à la maison. Bien mal m’en prit! J’avais oublié que le mieux est l’ennemi du bien!

Pour vous donner la conclusion tout de suite, j’ai perdu de nombreuses heures pour finalement revenir exactement à la même antenne que celle d’origine, avec le radôme en plus il est vrai. Quatre et cinq éléments sont les configurations qui m’ont donné les meilleurs résultats. Pour ceux qui veulent fabriquer ce type d’antenne, je leur conseillerais de ne pas aller au delà pour réussir à coup sûr, ensuite la reproductibilité s’avère délicate.

Quand on y réfléchit un peu (ce que j’avais oublié de faire), c’est logique :

  • Tout d’abord à ajouter les éléments on augmente le gain max, mais on multiplie les lobes parasites, augmentant les zones d’ombres et l’irrégularité de la réception.
  • De plus, avec un plus grand nombre d’éléments la bande passante de l’antenne se réduit et sa mise au point devient plus délicate. Or dans mon cas c’est juste un bricolage approximatif et sans appareil de mesure pour valider le montage. Tout est fait à plusieurs pourcents près, ce qui devient vite critique.

La malchance s’en est mêlée, et j’ai aussi eu un problème de faux-contact dans un raccord PL-PL qui m’a fait soupçonné le matériau utilisé pour le radôme que je savais “transparent” en HF mais pas en UHF. Je suis parti un peu dans toutes les directions…

En recherchant un peu dans la littérature sur ce type d’antenne, j’ai remarqué que beaucoup les faisaient commencer et se terminer par des éléments coaxiaux 1/4 λ en plus du quart-d’onde terminal. Cela me paraissait logique du point de vue de l’impédance et j’ai pensé que cela pouvait jouer, que la version cinq éléments marchait par coup de chance. Finalement non, après différents essais c’est bien la version “tout en éléments 1/2 λ” qui fonctionne le mieux dans mon cas avec une descente en ligne 75Ω.

Antenne ADS-B installée XV4Y (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/02/DSCN3994 NULL.jpg)Le radôme en fibre de verre n’est pas en cause et s’avère bien le meilleur matériaux pour mes montages HF, VHF et UHF : durable, économique, facilement disponible en plusieurs tailles. Le but du radôme est d’apporter d’une part une stabilité mécanique et une protection face aux intempéries, mais aussi de rigidifier l’antenne et de s’assurer qu’elle est bien verticale pour homogénéiser la couverture.

Au final, après quelques heures de test, la réception est effectivement améliorée. Je pense que la prochaine étape sera d’installer la suite logicielle fournie par FlightRadar24 (dump1090 et FR24feeder) (http://forum NULL.flightradar24 NULL.com/threads/7563-Flightradar24-decoder-feeder-BETA-testing-(Win-RPi-Linux-OSX)) sur une CubieBoard (http://xv4y NULL.radioclub NULL.asia/2013/08/09/reception-de-la-cubieboard2/) que temporairement je vais emprunter à un ami. Cela me permettra de réduire la longueur de la ligne coaxiale de 10m (la partie en RG-8). Ensuite, pour essayer d’égaler les performances exceptionnelles du récepteur installé à Saigon (F-VVTS1) ce sera difficile. Je pense que d’une part le matériel à 800€ de FlightRadar24 (http://www NULL.flightradar24 NULL.com/free-ads-b-equipment) est plus performant que ma clef RTL-SDR (http://xv4y NULL.radioclub NULL.asia/2014/12/20/reception-ads-b-et-decouverte-de-ma-clef-rtl-sdr/) et que d’autre part il doit être installé bien plus haut que les 15 mètres de ma maison.

Antenne colinéaire coaxiale pour le 1090 MHz (fréquence aviation ADS-B)

Antenne colinéaire coaxiale 1090MHzJ’ai recommencé à jouer avec la réception des signaux ADS-B grâce à la clef USB RTL-SDR (http://xv4y NULL.radioclub NULL.asia/2014/12/20/reception-ads-b-et-decouverte-de-ma-clef-rtl-sdr/). Tout d’abord j’ai légèrement améliorée l’antenne existante (en principe une petite beam pour le 6 mètres et le 2 mètres) en lui adjoignant deux éléments de dipôle vertical pour le 1090 MHz. L’effet était très nette, avec maintenant plus de zones d’ombres dans l’antenne et une zone couverte d’environ 50 km.

Comme j’ai remplacé le câble coaxial de ma verticale 20 mètres par le câble chinois 13mm (http://xv4y NULL.radioclub NULL.asia/2015/01/18/cable-coaxial-chinois-75ohms-sywv-75-9/), il me restait une ligne 75Ω de libre. Je me suis dit que ce serait bête de la laisser inutilisée et je me suis fabriqué un antenne colinéaire avec une chute de coaxial 13mm suivant un schéma trouvé sur internet (http://www NULL.balarad NULL.net). Ce type d’antenne n’a rien de nouveau et j’avais des plans par F2FK pour en fabriquer une similaire pour le 2 mètres dans mon recueil du RCNEG de 1993. J’avoue que là je ne me suis pas soucié de l’impédance et que j’ai fait ça au petit bonheur la chance en une petite heure. D’ailleurs, à revoir les photos que j’ai pris à la dernière minute sur le toit, je me rends compte que le nombre d’éléments est impaires, et je me demande si ce ne serait pas mieux en en rajoutant un à la base.

DSCN3992 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/02/DSCN3992 NULL.jpg)Les résultats ont largement dépassé mes espérances avec une zone de réception allant jusqu’à 400km! Tous les avions passant à moins de 150 km sont reçus à coup sûr, y compris ceux au sol à l’aéroport voisin (Trà Nóc – VCA (http://fr NULL.wikipedia NULL.org/wiki/Aéroport_international_de_Cần_Thơ)), ceux en approche sur les îles de Phú Quốc et Côn Đảo et ceux passant au large dans la mer de l’Est pour remonter vers le Nord. J’en ai bien entendu profité pour améliorer l’installation de l’antenne et le dégagement, ce qui aide, mais je note que la réception vers le nord est moins bonne, vraisemblablement gênée par le mât en PVC. Il faudrait que je fasse un déport…

Les pistes d’améliorations sont multiples, avec la ligne de descente qui pourrait être remplacée par du 13mm chinois et surtout une adaptation d’impédance et une symétrisation correctement réalisée. Toutefois, si vous avez un peu de câble qui traîne et du temps, ce type d’antenne est redoutable en réception pour les bandes autour de 1GHz. Le câble que j’ai sous la main étant en alu avec diélectrique en mousse de PE, il est aussi très très léger, facilitant la tenue physique. Pour les bandes inférieures, il faut prévoir un radôme ou une fixation différente pour garder l’antenne bien rigide.

Radar Virtuel XV4Y T-VVCT1 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2015/02/VirtualRadarXV4Y NULL.png)