Skip to content
antoinezaz edited this page Apr 21, 2016 · 20 revisions

Pre requis

  • un raspberry
  • une sonde de température
  • une base mongo-db avec Mlab

Boot système sur une carte SD à partir d'une image Raspbian

  • Télécharger l'image Raspbian Jessie lite
  • Lecture de la carte SD sur un pc
  • Monter l'image sur la carte SD pour Linux :
    • df -h <- pour lister les partitions
    • Run umount /dev/mmcblk0p1, et umount /dev/mmcblk0p2
    • dd bs=4M if=2016-03-18-raspbian-jessie.img of=/dev/mmcblk0

Branchement de la sonde

  • Broche 1 (GND*) sur la PIN 6 du Respberry Pi
  • Broche 2 (Data**) sur la PIN 7 (GPIO #4) du Respberry Pi
  • Broche 3 (VDD) sur la PIN 1 (3.3V) du Raspberry Pi

*GND = G sur le capteur

**Data = S sur le capteur

Test de la récupération des données

  • Ajouter au fichier /boot/config.txt la ligne suivante : dtoverlay=w1-gpio
  • Relancer le programme: sudo reboot
  • Lancer les commandes suivantes :
    • sudo modprobe w1-gpio
    • sudo modprobe w1-therm
    • cd /sys/bus/w1/devices/
  • ls -> permet de vérifier que l'on récupère bien les données du capteur

Création d'un compte sur www.mlab.com

  • Récupration de l'API KEY
  • Création d'une nouvelle base de données
  • Création d'une collection
  • Ajouter un éléments avec les champs ID celcius et fahrenheit
  • Activation du data API access

Partage de connexion internet entre un Mac et un Raspberry

Brancher le câble Ethernet de la Raspberry sur du routeur pour obtenir une connexion internet Lancer les commandes suivantes sur le shell de la raspberry:

  • sudo apt-get install bridge-utils
  • sudo nano /etc/network/interfaces //édite le fichier

Ajouter les lignes suivantes :

  • "auto br0
  • iface br0 inet dhcp
  • bridge_ports wlan0 eth0"

Création d'un programme en python pour récupérer la température

Ce programme permet de récupérer les données de la sonde de température Dans un premier nous chargeons les modules pour récupérer les données du capteur:

  • os.system('modprobe w1-gpio')
  • os.system('modprobe w1-therm')

Extraction de la température:

def read_temp_raw():

`f = open(device_file, 'r')`

`lines = f.readlines()`

`f.close()`

`return lines`

def read_temp():

`lines = read_temp_raw()`

`while lines[0].strip()[-3:] != 'YES':`

    `time.sleep(0.2)`

    `lines = read_temp_raw()`

`equals_pos = lines[1].find('t=')`

`if equals_pos != -1:`

    `temp_string = lines[1][equals_pos+2:]`

    `temp_c = float(temp_string) / 1000.0`

    `temp_f = temp_c * 9.0 / 5.0 + 32.0`

envoie des données à mLab:

comand = '{"celcius":"'+str(temp_c)+'","farenheit":"'+str(temp_f)+'"}'

     `os.system('curl -i -X POST -H "Content-Type:application/json" -d '+comand+' https://api.mlab.com/api/1/databases/temperature_raspberry/collections/data_rasp?apiKey=P1k7QvxL9EdwCVkpRJL6NqB-XX9peOlt')`

Récupération des données du serveur mLab sur une application Android

  • Interrogation du serveur toutes les 1/2 secondes pour récupérer les données
  • Affichage des données sur la vue principale