Interacció amb SiPy1.0r de pycom
Contingut
Introducció
Esquemàtic de la placa de proves IoT-ttnCat
Després de prémer el botó de reset:
rst:0x1 (POWERON_RESET),boot:0x3f (SPI_FAST_FLASH_BOOT) ets Jun 8 2016 00:22:57 rst:0x10 (RTCWDT_RTC_RESET),boot:0x3f (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:QIO, clock div:2 load:0x3fff9010,len:8 load:0x3fff9018,len:248 load:0x40078000,len:4056 load:0x4009fc00,len:920 entry 0x4009fde4 I (1577) wifi: wifi firmware version: 2a22b2d I (1593) wifi: pp_task_hdl : 3ffd6b74, prio:23, stack:8192 I (1593) wifi: Init lldesc rx mblock:10 I (1593) wifi: Init lldesc rx ampdu len mblock:7 I (1595) wifi: Init lldesc rx ampdu entry mblock:4 I (1600) wifi: sleep disable I (2588) wifi: frc2_timer_task_hdl:3ffdcbc4, prio:22, stack:2048 I (2612) wifi: mode : softAP (24:0a:c4:00:e3:81) MicroPython v1.8.6-493-g99ac80fe on 2017-03-03; SiPy with ESP32 Type "help()" for more information. >>> help() Welcome to MicroPython! For online help please visit http://micropython.org/help/. For further help on a specific object, type help(obj) >>> from network import Sigfox >>> import socket >>> import ubinascii >>> sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ1) >>> sigfox.mac() b'p\xb3\xd5I\x99\n\xfcF' >>> sigfox.id() b'\x00M*]' >>> sigfox.pac() b'\x93n\xf7\x10\x01\xc8&\x9d' >>> ubinascii.hexlify(sigfox.mac()) b'70b3d549990afc46' >>> ubinascii.hexlify(sigfox.id()) b'004d2a5d' >>> ubinascii.hexlify(sigfox.pac()) b'936ef71001c8269d' >>>
Instruccions de micropython específiques per a SiPy de pycom
Pujar programes
Dins del sistema d'arxius del SiPy hi ha dos arxius clau: boot.py i main.py
L'arxiu boot.py, si existeix, s'executa després d'un reset. És el primer que fa el sistema. És el lloc ideal per a connectar el dispositiu a una xarxa sense fils i definir quins perifèrics estan connectats i com.
L'arxiu main.py, si existeix, s'executa tot just després d'acabar l'execució de boot.py. És el programa principal.
Explicació del bootloader i safe boot
boot.py original:
# boot.py -- run on boot-up import os from machine import UART uart = UART(0, 115200) os.dupterm(uart)
main.py original:
# main.py -- put your code here!
Mode bootloader
Per a posar la placa IoT-ttnCat em mode bootloader canvieu el pont present a LOW LEVEL BOOTLOADER de la posició LOW a la posició LEVEL.
Mode safe boot
Per a posar la placa IoT-ttnCat em mode safe boot canvieu el pont present a SAFE BOOT de la posició SAFE a la posició BOOT.
Fent servir FTP per a pujar programes
Quan el dispositiu és nou, o en mode safe boot, el dispositiu fa de punt d'accés (podeu revisar les xarxes sense fils i hi trobareu una xarxa amb l'SSID similar a sipy-wlan-e380. Feu servir com a contrasenya de connexió www.pycom.io).
Un cop us hi connecteu al punt d'accés del dispositiu hi podeu accedir emprant la URL ftp://192.168.4.1, per exemple des del navegador d'arxius de Debian, i llur nom d'usuari és micro i llur contrasenya python.
I2C
Imatge de la distribució de pins
SDA: GPIO12
SCL: GPIO13
gist de github per a fer escaneig de dispositius I2C
>>> from machine import I2C >>> i2c = I2C(0, I2C.MASTER, baudrate=100000) >>> devices = i2c.scan() >>> len(devices) 2 >>> print (devices) [60, 118] >>> hex(devices[0]) '0x3c' >>> hex(devices[1]) '0x76' >>>
Sensor BME280
MicroPython: BME280 with ESP32 and ESP8266 (Pressure, Temperature, Humidity)
Pantalla SSD1306
OLED display SSD1306 in MicroPython, example with a I2C digital barometer BME280 (or BMP180)
Biblioteques emprades a aquest projecte:
Exemple d'ús
Connecteu-vos al punt d'accés del SiPy (exemple d'SSID: sipy-wlan-e380 i contrasenya www.pycom.io). Mitjançant el navegador d'arxius de Debian accediu a la carpeta de biblioteques ftp://192.168.4.1/flash/lib i copieu la biblioteca bme280.py.
Des del terminal podeu provar la biblioteca bme280.py:
>>> from machine import I2C >>> import machine, time, bme280 >>> i2c = I2C(0, I2C.MASTER, baudrate=100000) >>> bme = bme280.BME280(i2c=i2c,address=0x76) >>> temp,pa,hum = bme.values >>> print(temp) 24.15C >>> print(pa) 1008.67hPa >>> print(hum) 49.87%