jeudi 17 octobre 2013

Django, Apache 2 et les fichiers statiques

helloworld.png

On désigne par fichiers statiques des fichiers additionnels tels que des images, des feuilles de style CSS ou encore des fichiers JavaScript. Django est capable de les prendre en charge, cependant il est nécessaire de configurer l'application ainsi que le serveur virtuel Apache.

L'utilisation de fichiers statiques depuis un projet Django n'est pas compliquée en soit, mais la moindre erreur de configuration peut rapidement virer au casse tête. Cet article propose un pas à pas le plus simple possible pour y parvenir.

Plutôt que de repartir de zéro, on reprendra comme base le projet de l'article précédent : Django, Apache 2 et le module WSGI.

Lire la suite

samedi 12 octobre 2013

Django, Apache 2 et module WSGI (mise à jour)

helloworld.png

Comme le bon vin, Django se bonifie avec le temps. Mieux encore, il se simplifie ! C'est notamment le cas pour son intégration avec Apache 2 via le module WSGI.

Un précédent article proposait une démarche permettant de servir une application Django 1.3 avec Apache 2 et le module WSGI. Depuis, Django est passé en version 1.4 puis 1.5. L'occasion de remettre ça !

L'environnement utilisé pour cet article repose sur la distribution Debian Wheezy 7.1 amd64. On y a ajouté les paquets apache2, lib-apache2-mod-wsgi et Django 1.5.4.

Lire la suite

samedi 19 janvier 2013

Chartit, ou des graphiques avec Django

Example.png

Example.png

Différentes solutions sont envisageables pour créer des graphiques avec Django. Django Chartit propose de créer simplement des graphiques interactifs en JavaScript. Il est notamment possible d'afficher la valeur d'un point dans une info-bulle lorsque le pointeur le survole.

La documentation de Django Chartit propose un exemple de mise en œuvre mais qui peut se révéler trop succinct pour les non-initiés au web, au JavaScript, etc... À l'opposé le projet de démonstration est tellement conséquent qu'on finit par s'y perdre, sans savoir distinguer l'indispensable du superflu.

Cet article propose de créer un projet Django avec une application complète affichant un graphique à l'aide de Django Chartit. Celui-ci s'inspire très fortement de l'exemple de la documentation, mais en détaillant toutes les étapes sans exception. En le suivant pas à pas, tout un chacun devrait parvenir à ses fins !

Lire la suite

mardi 20 novembre 2012

Utilisation du Square-Wave Output du DS1307

P1010221_r1024.JPG

P1010221_r1024.JPG

Le composant DS1307 de Maxim Integrated est une horloge temps réel série s'interfaçant sur un bus I2C. Le DS1307 offre également une sortie qui peut-être configurée en sortie logique ou en sortie de générateur de signal carré.

Bien que parfaitement documentée et simple d'utilisation, cette sortie est relativement peu utilisée. Cet article propose de l'exploiter en ajoutant quelques méthodes à la bibliothèque Arduino RTClib de JeeLabs.

Lire la suite

jeudi 8 novembre 2012

Utilisation de la RAM du DS1307

P1010221_r1024.JPG

P1010221_r1024.JPG

Le composant DS1307 de Maxim Integrated est une horloge temps réel série s'interfaçant sur un bus I2C. Outre sa fonction première, le DS1307 offre également quelques octets de mémoire vive (RAM) sauvegardés même en cas de coupure de l'alimentation, si toutefois une pile de sauvegarde est présente.

Bien que parfaitement documenté, cet espace mémoire est bien souvent oublié. Cet article propose de l'exploiter en ajoutant quelques méthodes à la bibliothèque Arduino RTClib de JeeLabs.

Lire la suite

samedi 22 septembre 2012

Environnement de construction pour Arduino Leonardo

ArduinoLeonardoFront.jpg

Si l'environnement de construction iDreamMicro prend en charge les cartes de développements Arduino Uno et Arduino Mega2560 depuis le début ou presque, la carte Arduino Leonardo avait été oubliée... La création d'un nouvel environnement de construction comble cette lacune. Celui-ci est très  […]

Lire la suite

SCons et les méthodes d'environnement

sconstruct.png
"""
Build project.
"""
def BuildProject(env, sources, target_name):    
    # Build program.
    env.Program(target = target_name + '.elf', source = sources)
    
AddMethod(Environment, BuildProject)

L'environnement de construction de la plateforme iDreamMicro permet de compiler en une seule fois plusieurs projets et plusieurs bibliothèques. Par conséquent, le principe de construction est le même d'un projet à l'autre ou d'une bibliothèque à l'autre.

Jusqu'ici on s'est contenté de dupliquer les scripts de construction. Mais cette situation ne peut perdurer, à plus forte raison quand SCons offre le nécessaire pour factoriser et éviter la duplication. La solution consiste à utiliser les méthodes d'environnement.

Lire la suite

SCons et les variables de construction

env_arduino_uno_py.png
env = Environment()
env.Append(NEW_VARIABLE = 'added')
print "NEW_VARIABLE =", env['NEW_VARIABLE']

Les précédents articles autour de SCons ont amené à concevoir un environnement de construction relativement complet, avec la construction de bibliothèques et de projets. Cet environnement utilise plusieurs fichiers SConstruct et SConscript qui doivent s'échanger des paramètres. Certains paramètres sont relatifs à un environnement en particulier. Par conséquent et afin d'éviter de les passer à tord et à travers, il semble judicieux d'en faire des variables de construction.

SCons permet justement d'ajouter des variables à un environnement de construction. Cet article a pour objectif de présenter cette fonctionnalité ainsi que son intégration dans les environnements de la plateforme iDreamMicro.

Lire la suite

Construction de plusieurs projets

project-sconstruct-diff.png

L'article précédent a abordé la construction d'un projet et des bibliothèques qu'il utilise. Dans le cas d'une plateforme telle qu'un réseau de capteurs, on peut vouloir construire plusieurs projets et leurs bibliothèques en une seule fois. Cet article propose une solution permettant de répondre à ce besoin.

Lire la suite

mercredi 25 juillet 2012

EKitsZone W5200 Ethernet Shield

P1010077.png

P1010077.png

La plateforme de développement Arduino bénéficie d'une large communauté et d'un grand nombre de modules, shields ou breakout boards divers et variés. Il existe notamment des shields permettant d'ajouter une connexion réseau Ethernet tels que l'Arduino Ethernet Shield.

Le shield officiel embarque un contrôleur Ethernet WIZnet W5100. Le W5200 Ethernet Shield d'EkitsZone est quant à lui basé sur un contrôleur Ethernet WIZnet W5200.

Cet article présente la mise en œuvre du W5200 Ethernet Shield sur une carte de développement Arduino Uno. L'environnement de développement utilisé est Arduino en version 1.0.1.

Lire la suite

Compter le nombre d'éléments d'un tableau

/**************************************************************************//**
 * \def     ITEMS_IN_ARRAY
 * \brief   Get number of items in array.
 ******************************************************************************/
#define ITEMS_IN_ARRAY(array)   (sizeof(array) / sizeof(*array))

En programmation, la nécessité de compter le nombre d'éléments que contient un tableau est récurrente. Certains langages tels que le Java ou le C# l'indiquent via des fonctions ou des propriétés, mais pas le C.

Cet article propose un moyen simple d'y parvenir, en l'occurrence une macro prenant en paramètre le tableau à mesurer.

Lire la suite

mardi 24 juillet 2012

Les assertions avec Arduino

assert.png
void foo(char* p_string)
{
    // Check the preconditions.
    assert(NULL != p_string);

    // ...
}

En informatique, une assertion est une expression qui doit être évaluée à vrai. Si le résultat de l'évaluation est faux, c'est qu'il y a un problème, une erreur qui ne doit pas se produire. Les assertions peuvent par exemple être utilisées pour s'assurer qu'une valeur est bien comprise entre deux bornes, qu'un pointeur n'est pas nul, etc...

Arduino utilise AVR-GCC et l'AVR Libc qui propose de prendre en charge les assertions via la bibliothèque assert définie dans le fichier d'entête assert.h.

Cet article propose de découvrir les assertions de l'AVR Libc puis de les mettre en œuvre sur Arduino.

Lire la suite

mardi 26 juin 2012

ATmega TWI Bit Rate Generator Unit

Overview_of_the_TWI_Module_color.png

La plupart des microcontrôleurs megaAVR d'Atmel, dont l'ATmega328P, dispose d'un module I2C ou TWI. Celui-ci se décompose en plusieurs sous ensembles ou units :

  • Bit Rate Generator Unit ;
  • Bus Interface Unit ;
  • Address Match Unit ;
  • Control Unit.

Overview_of_the_TWI_Module_color.png

Cet article se focalise sur le Bit Rate Generator Unit et propose d'apprendre à le configurer sur un ATmega328P. Par conséquent, il n'a pas pour objectif de proposer une bibliothèque TWI complète, cette dernière étant en cours de développement.

Le Bit Rate Generator Unit contrôle la période du signal SCL en mode maître ou master. Cette période est déterminée par la configuration du bit rate dans le registre TWBR et du prescaler dans le registre TWSR.

Le bit rate est le débit binaire, c'est à dire le nombre de bits par seconde envoyés ou reçus sur le bus TWI. Le prescaler est un diviseur de fréquence. Il permet de diviser la fréquence CPU pour atteindre la fréquence SCL du bus TWI.

Lire la suite

lundi 18 juin 2012

Réception de l'heure DCF77 sur Arduino

P1010072_r800.jpg

P1010072_r800.jpg

DCF77 est un système de transmission de l'heure légale par ondes radio. Il a été mis en service le 1er janvier 1959 par la Physikalisch-Technische Bundesanstalt (PTB), sur une initiative du gouvernement allemand. Son émetteur est situé à Mainflingen en Allemagne. Il possède une horloge atomique au césium et donne l'heure absolue, avec un écart théorique d'une seconde d'erreur pour un million d'années.

L'information est émise en grandes ondes par un émetteur de 30 kW dont la portée est de 1500 km. Elle est recevable sur plusieurs pays ouest-européens, dont la France métropolitaine, l'Allemagne ou l'Italie. De nombreux appareils du quotidien reçoivent l'heure DCF77 : stations météo, radio-réveils, etc...

Des modules de réception DCF77 sont disponibles pour le grand public, et notamment celui que cet article propose de mettre en œuvre avec Arduino. Plutôt que de développer une nouvelle bibliothèque, on utilisera la bibliothèque Funkuhr développée par Fiendie.

Lire la suite

vendredi 1 juin 2012

Shield Arduino Mega R3

ArduinoMegaR3Shield.png

Après un shield pour Arduino Uno et Leonardo, iDreamMicro propose un nouveau shield pour les cartes Arduino Mega.

ArduinoMegaR3Shield.png

Naturellement, ce shield respecte le form factor des cartes de développements Arduino Mega. Il pourra donc prendre place sur celles-ci ainsi que sur toutes les cartes compatibles.

Lire la suite

mercredi 30 mai 2012

Shield Arduino R3

ArduinoR3.png

La révision 3 de la carte Arduino Uno (Arduino Uno R3) est apparue en fin d'année 2011. Cette révision est également valable pour la nouvelle carte de développement Arduino Leonardo. Par rapport à la révision 2 (Arduino Uno R2), celle-ci comporte notamment quatre nouvelles broches sur les connecteurs d'entrée/sortie (encadrées en rouge sur la photo) :

  • broches TWI AD4/SDA (données) et AD5/SCL (horloge) reportées sur le connecteur IOH ;
  • broche IOREF sur le connecteur POWER fournissant aux shields la tension de la carte Arduino afin d'assurer la compatibilité 3,3V/5V ;
  • une broche non câblée réservée à un usage futur sur le connecteur POWER.

ArduinoR3.png

Le shield proposé dans l'article Arduino est libre, sauf son logiciel de CAO ! est avant tout conçu pour la révision 2. Même s'il peut très bien prendre place sur une carte Arduino Uno R3, iDreamMicro propose une nouvelle version de ce shield compatible avec la révision 3, toujours réalisé à l'aide de Kicad.

Lire la suite

mercredi 9 mai 2012

Construction d'une bibliothèque

Après les deux précédents articles sur la configuration d'un environnement de construction SCons pour AVR-GCC, celui-ci propose de construire un logiciel recourant à des bibliothèques.

Comme dans l'article précédent, le projet servant de support fait basculer le niveau d'une sortie du microcontrôleur mais plutôt que de la piloter en direct, il propose de développer une bibliothèque digital_io réalisant cette tâche.

L'environnement de construction mis en place dans l'article précédent servira de base pour ce nouveau projet. Toutefois l'arborescence évolue et comporte désormais différents sous-dossiers afin de le structurer.

Lire la suite

Bibliothèque digital_io

    // Configure pin direction.
    DDRB |= (1 << PB5);

    // Set pin level.
    PORTB |= (1 << PB5);

Ces quelques lignes de code ne parleront sans doute qu'aux personnes connaissant les microcontrôleurs, voire même seulement à celles connaissant les microcontrôleurs AVR d'Atmel. En effet, elles configurent le PORTB5 d'un ATmega en sortie et le mettent au niveau logique haut.

Certes, c'est le meilleur moyen de réduire l'empreinte mémoire du logiciel sans recourir à l'assembleur. Mais c'est loin d'être le plus parlant. Sans oublier que ce code n'est pas portable. C'est à dire que le jour où on souhaitera troquer l'AVR pour un autre microcontrôleur tel qu'un PIC ou un MSP430, il sera nécessaire de revenir sur l'ensemble du logiciel.

Afin de remédier aux inconvénients cités ci-dessus, iDreamMicro propose dans cet article de découvrir la bibliothèque digital_io. Elle permet de piloter les ports d'entrée/sortie numériques des microcontrôleurs AVR d'Atmel :

  • configuration des ports d'entrée/sortie ;
  • lecture du niveau d'entrée ;
  • écriture du niveau de sortie.

La tout en offrant abstraction, portabilité et réutilisabilité. Les quelques lignes ci-dessous ne sont-elles pas plus parlantes ?

    // Declare pin.
    digital_io__pin_position_t output =
        DIGITAL_IO__PORT_B | DIGITAL_IO__PIN_5;

    // Configure pin direction.
    digital_io__configure_pin(output, DIGITAL_IO__DIRECTION__OUTPUT);

    // Set pin level.
    digital_io__set_pin_level(output, DIGITAL_IO__LEVEL__HIGH);

Lire la suite

Ouverture du dépôt idreammicro-avr

Un système de gestion de version permet de conserver l'ensemble des révisions d'un logiciel. iDreamMicro a choisi d'utiliser ce type de système, et plus particulièrement Subversion. iDreamMicro a ouvert un dépôt dédié à ses développements pour microcontrôleur AVR avec AVR-GCC. Celui-ci est  […]

Lire la suite

vendredi 6 avril 2012

myAVR Board MK2 et mySmartUSB MK2 dans Arduino

mysmartusb.jpg

Le kit de développement myAVR Board MK2 est une carte de développement construite autour d'un microcontrôleur Atmel AVR ATmega8. Il intègre un programmateur ISP/convertisseur USB vers UART/SPI/TWI mySmartUSB MK2.

Comme la plupart des programmateurs de microcontrôleurs Atmel AVR, mySmartUSB MK2 est compatible avec AVRDUDE. Intéressant, AVRDUDE est lui même utilisé par de nombreux environnements de développement tels que AVR-GCC, WinAVR ou encore Arduino.

Mais alors, serait-il possible d'utiliser le programmateur mySmartUSB MK2 dans Arduino ? Affirmatif ! Et le kit myAVR Board MK2 ? Affirmatif !

Cependant, une petite configuration de l'environnement Arduino est nécessaire. Cet article propose de la réaliser pas à pas.

Lire la suite

- page 1 de 2