Je voulais obtenir des données de détection de Raspberry Pi à partir de Node.js ainsi que d'Arduino Firmata, mais cela semble difficile, alors j'ai décidé de revenir à Python. Étant donné que GPIO de Raspberry Pi ne peut saisir que numériquement, TMP36 et LM35DZ Convertisseurs AD tels que MCP3008 et PCF8591 lors de l'utilisation de capteurs analogiques deviendra nécessaire. Écrivons un programme Python qui mesure la température en utilisant TMP36.
[SPI (Serial Peripheral Interface)](http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%83% BB% E3% 83% 9A% E3% 83% AA% E3% 83% 95% E3% 82% A7% E3% 83% A9% E3% 83% AB% E3% 83% BB% E3% 82% A4% E3% 83% B3% E3% 82% BF% E3% 83% 95% E3% 82% A7% E3% 83% BC% E3% 82% B9) est l'une des normes de communication série. Il semble que la méthode d'activation de SPI sur Raspberry Pi ait changé depuis la version 3.18 du noyau. Raspi-config dans Activation de l'interface SPI sur le Raspberry Pi Il décrit comment l'utiliser et comment l'activer manuellement. Cette fois, nous le ferons manuellement.
Si le noyau n'est pas 3.18.x, mettez à jour le firmware. Le package a également été mis à jour.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update
Vérifiez la version du noyau.
$ cat /proc/version
Linux version 3.18.11+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #777 PREEMPT Sat Apr 11 17:24:23 BST 2015
Modifiez / boot / config.txt
.
$ sudo vi /boot/config.txt
dtparam=spi=on
redémarrer.
$ sudo reboot
SPI est maintenant activé.
$ lsmod | grep spi
spi_bcm2708 6018 0
Câblez le MCP3008, le Raspberry Pi et le FT232RL avec une maquette.
Câblez avec MCP3008 et Raspberry Pi.
Câblez le TMP36.
Installez l'environnement de développement Python pour Raspberry Pi.
$ sudo apt-get update
$ sudo apt-get install python-dev
$ python -V
Python 2.7.3
Installez ez_setup et pip.
$ curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python
$ curl https://bootstrap.pypa.io/get-pip.py -o - | sudo python
$ pip -V
pip 6.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
py-spidev
Installez py-spidev pour faire fonctionner les périphériques SPI à partir de Python.
$ cd
$ git clone git://github.com/doceme/py-spidev
$ cd py-spidev
$ sudo python setup.py install
...
Writing /usr/local/lib/python2.7/dist-packages/spidev-3.0.egg-info
Créez un projet.
$ mkdir -p ~/python_apps/spidev-spike
$ cd !$
Écrivez un exemple de programme Python en vous référant au site suivant.
~/python_apps/spidev-spike/spi_tmp36.py
#!/usr/bin/env python
import time
import sys
import spidev
spi = spidev.SpiDev()
spi.open(0,0)
def readAdc(channel):
adc = spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data
def convertVolts(data):
volts = (data * 3.3) / float(1023)
volts = round(volts,4)
return volts
def convertTemp(volts):
temp = (100 * volts) - 50.0
temp = round(temp,4)
return temp
if __name__ == '__main__':
try:
while True:
data = readAdc(0)
print("adc : {:8} ".format(data))
volts = convertVolts(data)
temp = convertTemp(volts)
print("volts: {:8.2f}".format(volts))
print("temp : {:8.2f}".format(temp))
time.sleep(5)
except KeyboardInterrupt:
spi.close()
sys.exit(0)
Exécutez un programme Python. La température est affichée en degrés Celsius toutes les 5 secondes.
$ python spi_tmp36.py
adc : 232
volts: 0.75
temp : 24.84
adc : 233
volts: 0.75
temp : 25.16
adc : 233
volts: 0.75
temp : 25.16