==== BMP180 dual-purpose sensor ==== {{:interfaces:esp32-bmp180.jpg?200}} This dual-purpose sensor is used to measure temperature and barometric pressure. It operates as an I2C slave device. The actual sensor is tiny but a board is available from China with the I2C connections and power on a standard 0.1 inch header which makes it easily accessible. === Micropython === Setup sudo apt-get install picocom sudo pip3 install mpfshell Detect picocom -b 115200 /dev/ttyUSB0 from machine import Pin, I2C i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000) i2c.scan() [119] Install wget https://raw.githubusercontent.com/micropython-IMU/micropython-bmp180/master/bmp180.py mpfshell --nocolor -no ttyUSB0 -c put bmp180.py Connected to esp32 mpfshell --nocolor -no ttyUSB0 -c ls Connected to esp32 Remote files in '/': bmp180.py boot.py Run picocom -b 115200 /dev/ttyUSB0 from machine import Pin, I2C i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000) from bmp180 import BMP180 bmp180 = BMP180(i2c) print (bmp180.temperature) 26.95987 Demo (test.py) ''' No license. ''' from machine import Pin, I2C from bmp180 import BMP180 class Test(): ''' No comment ''' def __init__(self): self.bus = I2C(scl=Pin(22), sda=Pin(21), freq=100000) self.bmp180 = BMP180(self.bus) def print_temp(self): print (self.bmp180.temperature) Upload mpfshell --nocolor -no ttyUSB0 -c put test.py Run picocom -b 115200 /dev/ttyUSB0 picocom v3.1 port is : /dev/ttyUSB0 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 stopbits are : 1 escape is : C-a local echo is : no noinit is : no noreset is : no hangup is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv -E imap is : omap is : emap is : crcrlf,delbs, logfile is : none initstring : none exit_after is : not set exit is : no Type [C-a] [C-h] to see available commands Terminal ready >>> import machine >>> machine.reset() ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0018,len:4 load:0x3fff001c,len:5008 ho 0 tail 12 room 4 load:0x40078000,len:10600 ho 0 tail 12 room 4 load:0x40080400,len:5684 entry 0x400806bc I (548) cpu_start: Pro cpu up. I (548) cpu_start: Application information: I (548) cpu_start: Compile time: Aug 16 2020 00:54:20 I (551) cpu_start: ELF file SHA256: 0000000000000000... I (557) cpu_start: ESP-IDF: v3.3.2 I (562) cpu_start: Starting app cpu, entry point is 0x40082f30 I (552) cpu_start: App cpu up. I (572) heap_init: Initializing. RAM available for dynamic allocation: I (579) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM I (585) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM I (591) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM I (598) heap_init: At 3FFBDB5C len 00000004 (0 KiB): DRAM I (604) heap_init: At 3FFCA9E8 len 00015618 (85 KiB): DRAM I (610) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM I (616) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM I (623) heap_init: At 4009DE28 len 000021D8 (8 KiB): IRAM I (629) cpu_start: Pro cpu start user code I (312) cpu_start: Starting scheduler on PRO CPU. I (0) cpu_start: Starting scheduler on APP CPU. MicroPython v1.12-665-g60f5b941e on 2020-08-16; ESP32 module with ESP32 Type "help()" for more information. >>> from test import Test >>> x = Test() >>> x.print_temp() 27.09271 === Resources === [[https://docs.micropython.org/en/latest/esp32/quickref.html|ESP32 quick reference]] [[https://github.com/micropython-IMU/micropython-bmp180|BMP180 Micropython]]