mardi 10 septembre 2013

Web server on STM32F4DISCOVERY using Murata SN8200 Wi-Fi Network Controller Module

Instead of PC based servers, stm32 microcontroller may be used along with WiFi module as Embedded Web Server. The basic idea is utilizing this microcontroller for monitoring and controlling an embedded system  through a web application. Without using a computer, WiFi module can communicate to the owner of the overall system which is able to manage appliances from any location outside.

In this demonstration the server is still listening for incoming connections. Once a client connects to the server, it sends back a web page. This page (Fig. 1) allows to the client to control the four LEDs: LED1, LED2, LED3 and LED4 of the STM32F4-DISCOVERY board as it's shown in (Fig. 2).

Fig. 1. Web page for LEDs control



Fig. 2.STM32F4-DISCOVERY

In this application I used client-server architecture where the client accesses the server via LAN and Internet router. The client sends the request to the server. This request is processed by the router to connect to the Internet. The web processes the made request and finally the client connects to the desired web server. Requested data is sent to the client.

Each time the client select the LEDs to turn on, he presses the button "Send" to confirm his request. This request is a GET request which contain the ID of the LEDs to turn on or off.
For example, if the client selects LED1 and LED2, the request that will be send in this form :
"GET /leds.cgi?led=1&led=2 HTTP/1.1"

You can find a quick video demonstration  on YouTube.

mercredi 6 février 2013

Générer un signal PWM avec un STM32F4


PWM ou Pulse Width Modulation est la technique utilisée pour générer des signaux analogiques à partir d'un appareil numérique. Dans ce tutoriel, nous allons apprendre les bases de la technique PWM et nous verrons comment mettre en œuvre la génération d'un signal PWM avec le micro-contrôleur STM32F4DISCOVERY et aussi avec le système temps réel ChibiOS/RT.

     1- Principe de base du PWM : 

Un appareil numérique, comme un micro-contrôleur STM32 ou autres (PIC , Arduino ..)ne peut générer que deux niveaux sur ses lignes de sortie, soit un niveau haut égale à 5v ou 3.3v selon le micro-contrôleur que vous utilisez soit un niveau bas égale à 0V. Mais que faire si nous voulons générer 0.7v ou 2.9V ou n'importe quelle tension de sortie entre 0-V+ ? 
Pour ce genre de condition, au lieu de générer une sortie de tension continue, nous générons une onde carrée comme montre la figure.


Donc vous pouvez remarquer que si le pourcentage du temps au niveau haut augmente la tension moyenne à la sortie augmente . Ainsi, si cette sortie est reliée à un moteur ou à une LED lumineuse et on suppose que le rapport cyclique (pulse width) est à 25% de la période, il tourne à 25% de la vitesse maximale à V+ de même pour la LED sa luminosité sera à 25% de la luminosité maximale à V+. 
Pour conclure, l'astuce consiste à faire varier le rapport cyclique entre 0-100% et obtenir le même pourcentage de la tension d'entrée à la sortie.

     2- Programmer un signal PWM avec les librairies STM32 :

À partir du user manual stm32f4 on remarque que les 4 LEDs de l'stm32f4 sont connectés au port entrée sortie D avec les pins PD12,PD13,PD14 et PD15 et ces derniers sont aussi liés à des canaux PWM de 16 bits du timer 4.
Voici un programme qui génère 4 signaux pwm avec leurs configurations et le calculer de la période et des rapports cycliques.


     3- Programmer un signal PWM avec systéme temps réel ChibiOS/RT:

ChibiOS / RT est conçu pour les applications profondément ancrées en temps réel où l'efficacité et l'exécution du code compact sont des exigences importantes. 
Il peut être utiliser dans de nombreux domaines applicatifs, par exemple:
  • Les applications robotiques.
  • L'enseignement et l'apprentissage de la technologie RTOS.
Pour avoir plus de détail sur ce système temps réel vous pouvez visiter ChibiOS/RT Homepage ou encore Getting started with the STM32F4-Discovery board and ChibiOS/RT.

Revenons à notre application  pour générer des signaux PWM la couche HAL (Hardware Abstraction Layer) dans ChibiOS/RT fournit un mécanisme très simple.
Et voici un programme très simple qui génère 4 signaux pwm.


La vidéo ci-dessous montre que l'STM32F4 génère 4 signaux pwm et comme les canaux des timers 4 sont relié aux LEDs donc on peut voir nos signaux à travers ces LEDs: