==== MicroPython Utility === {{:projects:espbmp180.jpg?200|ESP-01 BMP180}} This utility works like a shell interpreter but pastes the content of a script into a MicroPython device on a local UART interface or network address and displays any output from the device. === Install === hg clone http://hg.kewl.org/pub/mpu cd mpu make sudo make install === Examples === ==Simple== Run script directly to interpret code on MicroPython device, else invoke with python in the shell to run locally. #! /usr/local/bin/mpu /dev/ttyUSB1 # vim: shiftwidth=4 tabstop=4 softtabstop=4 expandtab for i in range(1, 5): print("{} Hello".format(i)) for i in range(1, 5): print("World!", end = ' ') print() This is the output from MicroPython or python. 1 Hello World! World! World! World! 2 Hello World! World! World! World! 3 Hello World! World! World! World! 4 Hello World! World! World! World! ==Temperature== BMP180 attached to ESP8266 as per pictured above. #! /usr/local/bin/mpu /dev/ttyUSB1 import sys import time from machine import Pin, I2C from ustruct import unpack bus = I2C(scl=Pin(2), sda=Pin(0), freq=100000) try: chipid = ord(bus.readfrom_mem(119, 0xD0, 1)) except: print("BMP180 NOT FOUND") sys.exit() if (chipid != 0x55): print("BMP180 NOT DETECTED") sys.exit() def read(addr): W = bus.readfrom_mem(119, addr, 2) W = unpack('>h', W) W = W[0] return W AC1 = read(0xAA) AC2 = read(0xAC) AC3 = read(0xAE) AC4 = read(0xB0) AC5 = read(0xB2) AC6 = read(0xB4) B1 = read(0xB6) B2 = read(0xB8) MB = read(0xBA) MC = read(0xBC) MD = read(0xBE) bus.writeto_mem(119, 0xF4, bytearray([0x2E])) time.sleep_ms(5) UT = read(0xF6) X1 = ((UT - AC6) * AC5) / 32768 X2 = (MC * 2048) / (X1 + MD) B5 = X1 + X2 T = ((B5 + 8) / 16) / 10 print ("{} degrees centigrade".format(T)) Output 29.4593 degrees centigrade