2016-09-19

Termosenzor MAX6675 na RaspberryPI

Po prvotním nadšení z pořízení Raspberry PI a provozování Kodi mě napadlo, že bych mohl taky zkusit do něj něco zapojit a tak jsem na eBayi zakoupil termo čidlo MAX6675. Zatím jsem neměl jasný účel pro jaký to chci použít, ale znáte to, prostě to chcete a stejně trvá měsíc, než to z Číny přijde... Uběhl necelý půlrok a já našel důvod, proč ho zprovoznit: Důvodem se stal výměnný pobyt ve Finsku, kde sice přežívám jen se základním vybavením, ale Raspberry mám s sebou také.



Co činí komplikace? MAX6675 thermocouple je původně prvek pro Andruino, ne Raspberry, ovládá se přes sběrnici SPI, nicméně tu má Raspberry také a proto je možné pži použití knihovny WiringPI zprovoznit systém i na této platformě. V podstatě by to nemělo být vůbec složité, jde o to to jenom správně zapojit piny podle schématu, program zkompilovat a spustit, ale...

Předně PINOUT se může lišit podle SW konfigurace. Já použil vzor z tohoto webu podle tohoto videa. Protože však z materiálů není na první pohled zřejmé, jak to zapojit, tak přidávám překreslené schéma:


Dále je třeba Raspberry PI 3 oživit vhodným softwarem a ovládat. Jako operační systém posloužil Raspbian GNU/Linux 8, tedy super základní verze Linuxu bez GUI. Připojení na něj tradičně přes Putty a hurá na konfiguraci.

Na začátek je dobré si OS vylepšit podle mého dřívějšího návodu
sudo su
apt-get update
sudo apt-get install git-core
cd wiringPi
./build
gpio -v
gpio readall !dont take care about error
cd ..
sudo raspi-config
Advanced => SPI => Enable => Finish
shutdown -r
gpio load spi 
mkdir MAX6675Pi

cd MAX6675Pi
gcc myMAX6675.cpp -lwiringPi -o thermometer
chmod +x thermometer
./thermometer

Teď už program poskytuje nějaké hodnoty a je možné se pustit do složitějších programátorských činností. Pro méně zkušené, program teď běží v aktivním režimu, takže po přerušení přestane snímat hodnoty. Předělat to lze jednak spuštěním na pozadí nebo vytvořením služby, ale o tom později.
./thermometer &
Zkoušel jsem také jiný předpřipravený program z GitHubu autora mttrb, ale ten počítá s jiným zapojením. Když se mi jej konečně podařilo zkompilovat, tak nefungoval, proto jsem využil triviálního příkladu výše.



Mám v plánu tento jednoduchý návod ještě rozšířit o složitější funkcionalitu, zejména co se týká zobrazování hodnot uživatelsky přívětivým způsobem, ale o tom později, doufám, že vám tento "návod" usnadnil začátek...

Můj C++ kód nezobrazuje záporné hodnoty teploty! Kdyby to chtěl někdo opravit, rád zveřejním novou verzi...
 

1 komentář :

  1. Hi mate, Don't speak Chzech, but thanks for the graphical pinout and C++ source. You saved me quite some time when I was stuck on a very different pinout :)

    OdpovědětVymazat

Dotaz, připomínka, oprava?
(pokud máte problém s vložením příspěvku, vyzkoušejte to v prohlížeči Chrome)