mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
adding RAK8212 support
This commit is contained in:
parent
662017ab8d
commit
62317d9490
@ -48,6 +48,7 @@ env:
|
||||
- BOARD=THINGY52 DFU_UPDATE_BUILD=1
|
||||
- BOARD=STM32L496GDISCOVERY
|
||||
- BOARD=RAK8211
|
||||
- BOARD=RAK8212
|
||||
|
||||
script: make
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/bin/false
|
||||
# This file is part of Espruino, a JavaScript interpreter for Microcontrollers
|
||||
#
|
||||
# Copyright (C) 2013 Gordon Williams <gw@pur3.co.uk>
|
||||
# Copyright (C) 2018 Gordon Williams <gw@pur3.co.uk>
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
@ -22,7 +22,7 @@ import pinutils;
|
||||
info = {
|
||||
'name' : "iTracker RAK8211",
|
||||
#https://github.com/RAKWireless/ITRACKER-Arduino-SDK
|
||||
'link' : [ "http://docs.rakwireless.com/en/RAK8211/Hardware%20Design/RAK8211-G%20Datasheet%20V1.0.pdf" ],
|
||||
'link' : [ "http://www.rakwireless.com/en/download/Cellular/RAK8211" ],
|
||||
'espruino_page_link' : 'RAK8211',
|
||||
'default_console' : "EV_SERIAL1",
|
||||
'default_console_tx' : "D29",
|
||||
@ -150,8 +150,7 @@ def get_pins():
|
||||
pinutils.findpin(pins, "PD19", True)["functions"]["LIS3DH_SDA"]=0;
|
||||
pinutils.findpin(pins, "PD25", True)["functions"]["LIS3DH_INT1"]=0;
|
||||
pinutils.findpin(pins, "PD27", True)["functions"]["LIS3DH_INT2"]=0;
|
||||
pinutils.findpin(pins, "PD26", True)["functions"]["LIS3DH_RES"]=0;
|
||||
pinutils.findpin(pins, "PD21", True)["functions"]["OPT_SDA"]=0;
|
||||
pinutils.findpin(pins, "PD26", True)["functions"]["OPT_SDA"]=0;
|
||||
pinutils.findpin(pins, "PD23", True)["functions"]["OPT_SCL"]=0;
|
||||
pinutils.findpin(pins, "PD22", True)["functions"]["OPT_INT"]=0;
|
||||
|
||||
|
||||
164
boards/RAK8212.py
Normal file
164
boards/RAK8212.py
Normal file
@ -0,0 +1,164 @@
|
||||
#!/bin/false
|
||||
# This file is part of Espruino, a JavaScript interpreter for Microcontrollers
|
||||
#
|
||||
# Copyright (C) 2018 Gordon Williams <gw@pur3.co.uk>
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------
|
||||
# This file contains information for a specific board - the available pins, and where LEDs,
|
||||
# Buttons, and other in-built peripherals are. It is used to build documentation as well
|
||||
# as various source and header files for Espruino.
|
||||
# ----------------------------------------------------------------------------------------
|
||||
|
||||
import pinutils;
|
||||
|
||||
# Schematic http://docs.rakwireless.com/en/Cellular/RAK8212/Hardware%20Specification/RAK8212_iTRACKER_BG96_V30_20180322.pdf
|
||||
|
||||
info = {
|
||||
'name' : "iTracker RAK8212",
|
||||
#https://github.com/RAKWireless/ITRACKER-Arduino-SDK
|
||||
'link' : [ "http://www.rakwireless.com/en/download/Cellular/RAK8212" ],
|
||||
'espruino_page_link' : 'RAK8212',
|
||||
'default_console' : "EV_SERIAL1",
|
||||
'default_console_tx' : "D29",
|
||||
'default_console_rx' : "D28",
|
||||
'default_console_baudrate' : "9600",
|
||||
'variables' : 2500, # How many variables are allocated for Espruino to use. RAM will be overflowed if this number is too high and code won't compile.
|
||||
'bootloader' : 1,
|
||||
'binary_name' : 'espruino_%v_RAK8212.hex',
|
||||
'build' : {
|
||||
'optimizeflags' : '-Os',
|
||||
'libraries' : [
|
||||
'BLUETOOTH',
|
||||
'NET'
|
||||
],
|
||||
'makefile' : [
|
||||
'DEFINES+=-DCONFIG_GPIO_AS_PINRESET', # Allow the reset pin to work
|
||||
'DEFINES+=-DCONFIG_NFCT_PINS_AS_GPIOS', # Don't use NFC - the pins are used for GPS
|
||||
'DEFINES+=-DHAL_NFC_ENGINEERING_BC_FTPAN_WORKAROUND=1', # Looks like proper production nRF52s had this issue
|
||||
'DEFINES+=-DBLUETOOTH_NAME_PREFIX=\'"iTracker"\'',
|
||||
'DFU_PRIVATE_KEY=targets/nrf5x_dfu/dfu_private_key.pem',
|
||||
'DFU_SETTINGS=--application-version 0xff --hw-version 52 --sd-req 0x8C',
|
||||
'JSMODULESOURCES += libs/js/AT.min.js',
|
||||
'JSMODULESOURCES += libs/js/GPS.min.js',
|
||||
'JSMODULESOURCES += libs/js/BME280.min.js',
|
||||
'JSMODULESOURCES += libs/js/LIS2MDL.min.js',
|
||||
'JSMODULESOURCES += libs/js/LIS3DH.min.js',
|
||||
'JSMODULESOURCES += libs/js/OPT3001.min.js',
|
||||
# 'JSMODULESOURCES += libs/js/UG96.min.js',
|
||||
# 'JSMODULESOURCES += libs/js/ATSMS.min.js',
|
||||
# 'JSMODULESOURCES += libs/js/QuectelM35.min.js',
|
||||
'JSMODULESOURCES += iTracker:libs/js/rak/RAK8212.min.js'
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
chip = {
|
||||
'part' : "NRF52832",
|
||||
'family' : "NRF52",
|
||||
'package' : "QFN48",
|
||||
'ram' : 64,
|
||||
'flash' : 512,
|
||||
'speed' : 64,
|
||||
'usart' : 3,
|
||||
'spi' : 3,
|
||||
'i2c' : 2,
|
||||
'adc' : 1,
|
||||
'dac' : 0,
|
||||
'saved_code' : {
|
||||
'address' : ((118 - 3) * 4096), # Bootloader takes pages 120-127, FS takes 118-119
|
||||
'page_size' : 4096,
|
||||
'pages' : 3,
|
||||
'flash_available' : 512 - ((31 + 8 + 1 + 3)*4) # Softdevice uses 31 pages of flash, bootloader 8, FS 1, code 3. Each page is 4 kb.
|
||||
},
|
||||
};
|
||||
|
||||
devices = {
|
||||
'LED1' : { 'pin' : 'D12' }, # Pin negated in software
|
||||
'BTN1' : { 'pin' : 'D30', 'pinstate' : 'IN_PULLDOWN' },
|
||||
'GPRS' : {'pin_tx' : 'D12', 'pin_rx' : 'D20', 'pin_reset' : 'D14', 'pin_pwrkey' : 'D15', 'pin_pwron' : 'D6'},
|
||||
'GPS' : {'pin_tx' : 'D9', 'pin_rx' : 'D8', 'pin_standby' : 'D7', 'pin_pwron' : 'D10', 'pin_reset' : 'D31'},
|
||||
'BME' : {'pin_cs' : 'D2', 'pin_sdi' : 'D3', 'pin_sck': 'D4', 'pin_sdo' : 'D5'},
|
||||
'LIS2MDL' : {'pin_scl' : 'D11', 'pin_sda': 'D13', 'pin_int' : 'D16'},
|
||||
'LIS3DH' : {'pin_scl' : 'D18', 'pin_sda' : 'D19', 'pin_int1' : 'D25', 'pin_res' : 'D26', 'pin_int2' : 'D27'},
|
||||
'OPT' : {'pin_sda' : '21', 'pin_scl' : 'D23', 'pin_int' : 'D22'},
|
||||
# Pin D22 is used for clock when driving neopixels - as not specifying a pin seems to break things
|
||||
};
|
||||
|
||||
# left-right, or top-bottom order
|
||||
board = {
|
||||
'right' : [ 'D21', '3V', 'GND', 'D30', '',
|
||||
'GND', '3V', 'D29', 'D28', '',
|
||||
'3V', 'SWDIO', 'SWDCLK', 'GND' ],
|
||||
'_hide_not_on_connectors' : True,
|
||||
'_notes' : {
|
||||
'D21' : "Also RESET if configured",
|
||||
'D30' : "Labelled TILT_DOUT",
|
||||
'D29' : "Labelled SENSOR_DOUT2",
|
||||
'D28' : "Labelled SENSOR_DOUT1"
|
||||
}
|
||||
};
|
||||
|
||||
board["_css"] = """
|
||||
#board {
|
||||
width: 480px;
|
||||
height: 526px;
|
||||
top: 0px;
|
||||
left : 0px;
|
||||
background-image: url(img/RAK8212.png);
|
||||
}
|
||||
#boardcontainer {
|
||||
height: 506px;
|
||||
}
|
||||
#right {
|
||||
top: 59px;
|
||||
left: 480px;
|
||||
}
|
||||
.rightpin {
|
||||
height: 26px;
|
||||
}
|
||||
""";
|
||||
|
||||
def get_pins():
|
||||
pins = pinutils.generate_pins(0,31) # 32 General Purpose I/O Pins.
|
||||
# Software negation LED1
|
||||
pinutils.findpin(pins, "PD12", True)["functions"]["NEGATED"]=0;
|
||||
# Add pin functions
|
||||
pinutils.findpin(pins, "PD0", True)["functions"]["XL1"]=0;
|
||||
pinutils.findpin(pins, "PD1", True)["functions"]["XL2"]=0;
|
||||
pinutils.findpin(pins, "PD28", True)["functions"]["ADC1_IN4"]=0;
|
||||
pinutils.findpin(pins, "PD7", True)["functions"]["LTE_RX"]=0;
|
||||
pinutils.findpin(pins, "PD8", True)["functions"]["LTE_CTS"]=0;
|
||||
pinutils.findpin(pins, "PD9", True)["functions"]["LTE_TX"]=0;
|
||||
pinutils.findpin(pins, "PD10", True)["functions"]["LTE_RTS"]=0;
|
||||
pinutils.findpin(pins, "PD28", True)["functions"]["USART1_TX"]=0;
|
||||
pinutils.findpin(pins, "PD29", True)["functions"]["USART1_RX"]=0;
|
||||
pinutils.findpin(pins, "PD14", True)["functions"]["GPRS_RESET"]=0;
|
||||
pinutils.findpin(pins, "PD15", True)["functions"]["GPRS_PWRKEY"]=0;
|
||||
pinutils.findpin(pins, "PD6", True)["functions"]["GPRS_PWN_ON"]=0;
|
||||
pinutils.findpin(pins, "PD31", True)["functions"]["GPS_RESET"]=0;
|
||||
pinutils.findpin(pins, "PD2", True)["functions"]["BME_CS"]=0;
|
||||
pinutils.findpin(pins, "PD3", True)["functions"]["BME_SDI"]=0;
|
||||
pinutils.findpin(pins, "PD4", True)["functions"]["BME_SCK"]=0;
|
||||
pinutils.findpin(pins, "PD5", True)["functions"]["BME_SDO"]=0;
|
||||
pinutils.findpin(pins, "PD11", True)["functions"]["LIS2MDL_SCL"]=0;
|
||||
pinutils.findpin(pins, "PD13", True)["functions"]["LIS2MDL_SDA"]=0;
|
||||
pinutils.findpin(pins, "PD16", True)["functions"]["LIS2MDL_INT"]=0;
|
||||
pinutils.findpin(pins, "PD18", True)["functions"]["LIS3DH_SCL"]=0;
|
||||
pinutils.findpin(pins, "PD19", True)["functions"]["LIS3DH_SDA"]=0;
|
||||
pinutils.findpin(pins, "PD25", True)["functions"]["LIS3DH_INT1"]=0;
|
||||
pinutils.findpin(pins, "PD27", True)["functions"]["LIS3DH_INT2"]=0;
|
||||
pinutils.findpin(pins, "PD26", True)["functions"]["OPT_SDA"]=0;
|
||||
pinutils.findpin(pins, "PD23", True)["functions"]["OPT_SCL"]=0;
|
||||
pinutils.findpin(pins, "PD22", True)["functions"]["OPT_INT"]=0;
|
||||
|
||||
|
||||
# everything is non-5v tolerant
|
||||
for pin in pins:
|
||||
pin["functions"]["3.3"]=0;
|
||||
|
||||
#The boot/reset button will function as a reset button in normal operation. Pin reset on PD21 needs to be enabled on the nRF52832 device for this to work.
|
||||
return pins
|
||||
BIN
boards/img/RAK8212.png
Normal file
BIN
boards/img/RAK8212.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 453 KiB |
@ -129,6 +129,11 @@ exports.setCellOn = function(isOn, callback) {
|
||||
PINS.PWR_GPRS_ON.reset(); // turn power off.
|
||||
if (callback) setTimeout(callback,1000);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/// Set whether the BQ24210 should charge the battery (default is yes)
|
||||
exports.setCharging = function(isCharging) {
|
||||
PINS.BQ_EN.write(!isCharging);
|
||||
};
|
||||
|
||||
|
||||
|
||||
8
libs/js/rak/RAK8211.min.js
vendored
8
libs/js/rak/RAK8211.min.js
vendored
@ -1,4 +1,4 @@
|
||||
var g=D2,h=D3,k=D4,l=D5,d=D6,m=D8,n=D9,e=D10,p=D11,q=D12,r=D13,f=D15,t=D16,u=D18,v=D19,w=D20,x=D26,y=D22,z=D23,A=D25;exports.setGPSOn=function(c,b){Serial1.removeAllListeners();delete this.GPS;if(c)return Serial1.setup(9600,{tx:m,rx:n}),e.set(),this.GPS=require("GPS").connect(Serial1,b);e.reset()};exports.setEnvOn=function(c,b){this.BME280&&this.BME280.setPower(!1);delete this.BME280;if(c){var a=new SPI;a.setup({miso:l,mosi:h,sck:k});b&&setTimeout(b,100,this.BME280);return this.BME280=
|
||||
require("BME280").connectSPI(a,g)}};exports.setMagOn=function(c,b){this.LIS2MDL&&this.LIS2MDL.off();delete this.LIS2MDL;if(c){var a=new I2C;a.setup({sda:r,scl:p});b&&setTimeout(b,100,this.LIS2MDL);return this.LIS2MDL=require("LIS2MDL").connectI2C(a,{"int":t})}};exports.setAccelOn=function(c,b){this.LIS3DH&&this.LIS3DH.off();delete this.LIS3DH;if(c){var a=new I2C;a.setup({sda:v,scl:u});b&&setTimeout(b,100,this.LIS3DH);return this.LIS3DH=require("LIS3DH").connectI2C(a,{"int":A})}};exports.setOptoOn=
|
||||
function(c,b){this.OPT3001&&this.OPT3001.off();delete this.OPT3001;if(c){var a=new I2C;a.setup({sda:x,scl:z,bitrate:4E5});b&&setTimeout(b,1E3,this.OPT3001);return this.OPT3001=require("OPT3001").connectI2C(a,{"int":y})}};exports.setCellOn=function(c,b){if(c)return(new Promise(function(a){Serial1.removeAllListeners();Serial1.on("data",function(a){});Serial1.setup(115200,{tx:q,rx:w});d.reset();setTimeout(a,200)})).then(function(){d.set();return new Promise(function(a){setTimeout(a,200)})}).then(function(){f.set();
|
||||
return new Promise(function(a){setTimeout(a,2E3)})}).then(function(){f.reset();return new Promise(function(a){setTimeout(a,5E3)})}).then(function(){Serial1.removeAllListeners();b&&setTimeout(b,10,Serial1)});d.reset();b&&setTimeout(b,1E3)}
|
||||
var g=D2,h=D3,k=D4,l=D5,d=D6,m=D8,n=D9,e=D10,p=D11,q=D12,r=D13,f=D15,t=D16,u=D17,v=D18,w=D19,x=D20,y=D26,z=D22,A=D23,B=D25;exports.setGPSOn=function(c,b){Serial1.removeAllListeners();delete this.GPS;if(c)return Serial1.setup(9600,{tx:m,rx:n}),e.set(),this.GPS=require("GPS").connect(Serial1,b);e.reset()};exports.setEnvOn=function(c,b){this.BME280&&this.BME280.setPower(!1);delete this.BME280;if(c){var a=new SPI;a.setup({miso:l,mosi:h,sck:k});b&&setTimeout(b,100,this.BME280);return this.BME280=
|
||||
require("BME280").connectSPI(a,g)}};exports.setMagOn=function(c,b){this.LIS2MDL&&this.LIS2MDL.off();delete this.LIS2MDL;if(c){var a=new I2C;a.setup({sda:r,scl:p});b&&setTimeout(b,100,this.LIS2MDL);return this.LIS2MDL=require("LIS2MDL").connectI2C(a,{"int":t})}};exports.setAccelOn=function(c,b){this.LIS3DH&&this.LIS3DH.off();delete this.LIS3DH;if(c){var a=new I2C;a.setup({sda:w,scl:v});b&&setTimeout(b,100,this.LIS3DH);return this.LIS3DH=require("LIS3DH").connectI2C(a,{"int":B})}};exports.setOptoOn=
|
||||
function(c,b){this.OPT3001&&this.OPT3001.off();delete this.OPT3001;if(c){var a=new I2C;a.setup({sda:y,scl:A,bitrate:4E5});b&&setTimeout(b,1E3,this.OPT3001);return this.OPT3001=require("OPT3001").connectI2C(a,{"int":z})}};exports.setCellOn=function(c,b){if(c)return(new Promise(function(a){Serial1.removeAllListeners();Serial1.on("data",function(a){});Serial1.setup(115200,{tx:q,rx:x});d.reset();setTimeout(a,200)})).then(function(){d.set();return new Promise(function(a){setTimeout(a,200)})}).then(function(){f.set();
|
||||
return new Promise(function(a){setTimeout(a,2E3)})}).then(function(){f.reset();return new Promise(function(a){setTimeout(a,5E3)})}).then(function(){Serial1.removeAllListeners();b&&setTimeout(b,10,Serial1)});d.reset();b&&setTimeout(b,1E3)};exports.setCharging=function(c){u.write(!c)}
|
||||
123
libs/js/rak/RAK8212.js
Normal file
123
libs/js/rak/RAK8212.js
Normal file
@ -0,0 +1,123 @@
|
||||
/*
|
||||
http://www.discoverytelecom.eu/upload/iblock/7c7/m35_at_command.pdf
|
||||
https://www.hobbielektronika.hu/forum/getfile.php?id=203810
|
||||
|
||||
*/
|
||||
var PINS = {
|
||||
BME_CS : D2,
|
||||
BME_SDI : D3,
|
||||
BME_SCK : D4,
|
||||
BME_SDO : D5,
|
||||
PWR_GPRS_ON : D6, // 1=on, 0=off
|
||||
LTE_RXD : D7,
|
||||
LTE_CTS : D8,
|
||||
LTE_TXD : D9,
|
||||
LTE_RTS : D10,
|
||||
LIS2MDL_SCL : D11,
|
||||
LIS2MDL_SDA : D13,
|
||||
GPRS_RESET : D14,
|
||||
GPRS_PWRKEY : D15,
|
||||
LIS2MDL_INT : D16,
|
||||
BQ_EN : D17,
|
||||
LIS3DH_SCL : D18,
|
||||
LIS3DH_SDA : D19,
|
||||
TP5 : D20, // test point
|
||||
// D21 is reset
|
||||
OPT_SDA : D26,
|
||||
OPT_INT : D22,
|
||||
OPT_SCL : D23,
|
||||
LIS3DH_INT1 : D25,
|
||||
LIS3DH_RES : D26,
|
||||
LIS3DH_INT2 : D27,
|
||||
SENSOR_DOUT1 : D28,
|
||||
SENSOR_DOUT2 : D29,
|
||||
TILT_DOUT : D30,
|
||||
GPS_RESET : D31 // 1=normal, 0=reset (internal pullup)
|
||||
};
|
||||
|
||||
/// Returns BME280 instance. callback when initialised. Call 'getData' to get the information
|
||||
exports.setEnvOn = function(isOn, callback) {
|
||||
if (this.BME280) this.BME280.setPower(false);
|
||||
delete this.BME280;
|
||||
if (isOn) {
|
||||
var spi = new SPI();
|
||||
spi.setup({miso : PINS.BME_SDO, mosi : PINS.BME_SDI, sck: PINS.BME_SCK });
|
||||
if (callback) setTimeout(callback, 100, this.BME280); // wait for first reading
|
||||
return this.BME280 = require("BME280").connectSPI(spi, PINS.BME_CS);
|
||||
}
|
||||
};
|
||||
|
||||
/// Returns a LIS2MDL instance. callback when initialised. Then use 'read' to get data
|
||||
exports.setMagOn = function(isOn, callback) {
|
||||
if (this.LIS2MDL) this.LIS2MDL.off();
|
||||
delete this.LIS2MDL;
|
||||
if (isOn) {
|
||||
var i2c = new I2C();
|
||||
i2c.setup({sda:PINS.LIS2MDL_SDA, scl:PINS.LIS2MDL_SCL});
|
||||
if (callback) setTimeout(callback, 100, this.LIS2MDL); // wait for first reading
|
||||
// {int:pin} isn't used yet, but at some point the module might include support
|
||||
return this.LIS2MDL = require("LIS2MDL").connectI2C(i2c, { int : PINS.LIS2MDL_INT });
|
||||
}
|
||||
};
|
||||
|
||||
/// Returns a LIS3DH instance. callback when initialised. Then use 'read' to get data
|
||||
exports.setAccelOn = function(isOn, callback) {
|
||||
if (this.LIS3DH) this.LIS3DH.off();
|
||||
delete this.LIS3DH;
|
||||
if (isOn) {
|
||||
var i2c = new I2C();
|
||||
i2c.setup({sda:PINS.LIS3DH_SDA, scl:PINS.LIS3DH_SCL});
|
||||
if (callback) setTimeout(callback, 100, this.LIS3DH); // wait for first reading
|
||||
// {int:pin} isn't used yet, but at some point the module might include support
|
||||
return this.LIS3DH = require("LIS3DH").connectI2C(i2c, { int : PINS.LIS3DH_INT1});
|
||||
}
|
||||
};
|
||||
|
||||
/// Returns a OPT3001 instance. callback when initialised. Then use 'read' to get data
|
||||
exports.setOptoOn = function(isOn, callback) {
|
||||
if (this.OPT3001) this.OPT3001.off();
|
||||
delete this.OPT3001;
|
||||
if (isOn) {
|
||||
var i2c = new I2C();
|
||||
i2c.setup({sda:PINS.OPT_SDA, scl:PINS.OPT_SCL,bitrate:400000});
|
||||
if (callback) setTimeout(callback, 1000, this.OPT3001); // wait for first reading
|
||||
// {int:pin} isn't used yet, but at some point the module might include support
|
||||
return this.OPT3001 = require("OPT3001").connectI2C(i2c, { int : PINS.OPT_INT });
|
||||
}
|
||||
};
|
||||
|
||||
// Turn cell connectivity on - will take around 8 seconds. Calls the `callback(usart)` when done. You then need to connect either SMS or QuectelM35 to the serial device `usart`
|
||||
exports.setCellOn = function(isOn, callback) {
|
||||
if (isOn) {
|
||||
var that=this;
|
||||
return new Promise(function(resolve) {
|
||||
Serial1.removeAllListeners();
|
||||
Serial1.on('data', function(x) {}); // suck up any data that gets transmitted from the modem as it boots (RDY, etc)
|
||||
Serial1.setup(115200,{tx:PINS.LTE_TXD, rx:PINS.LTE_RXD, cts:PINS.LTE_RTS});
|
||||
PINS.PWR_GPRS_ON.reset();
|
||||
setTimeout(resolve,200);
|
||||
}).then(function() {
|
||||
PINS.PWR_GPRS_ON.set();
|
||||
return new Promise(function(resolve){setTimeout(resolve,200);});
|
||||
}).then(function() {
|
||||
PINS.GPRS_PWRKEY.set();
|
||||
return new Promise(function(resolve){setTimeout(resolve,2000);});
|
||||
}).then(function() {
|
||||
PINS.GPRS_PWRKEY.reset();
|
||||
return new Promise(function(resolve){setTimeout(resolve,5000);});
|
||||
}).then(function() {
|
||||
Serial1.removeAllListeners();
|
||||
if (callback) setTimeout(callback,10,Serial1);
|
||||
});
|
||||
} else {
|
||||
PINS.PWR_GPRS_ON.reset(); // turn power off.
|
||||
if (callback) setTimeout(callback,1000);
|
||||
}
|
||||
};
|
||||
|
||||
/// Set whether the BQ24210 should charge the battery (default is yes)
|
||||
exports.setCharging = function(isCharging) {
|
||||
PINS.BQ_EN.write(!isCharging);
|
||||
};
|
||||
|
||||
|
||||
5
libs/js/rak/RAK8212.min.js
vendored
Normal file
5
libs/js/rak/RAK8212.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
var a={BME_CS:D2,BME_SDI:D3,BME_SCK:D4,BME_SDO:D5,PWR_GPRS_ON:D6,LTE_RXD:D7,LTE_CTS:D8,LTE_TXD:D9,LTE_RTS:D10,LIS2MDL_SCL:D11,LIS2MDL_SDA:D13,GPRS_RESET:D14,GPRS_PWRKEY:D15,LIS2MDL_INT:D16,BQ_EN:D17,LIS3DH_SCL:D18,LIS3DH_SDA:D19,TP5:D20,OPT_SDA:D26,OPT_INT:D22,OPT_SCL:D23,LIS3DH_INT1:D25,LIS3DH_RES:D26,LIS3DH_INT2:D27,SENSOR_DOUT1:D28,SENSOR_DOUT2:D29,TILT_DOUT:D30,GPS_RESET:D31};exports.setEnvOn=function(d,b){this.BME280&&this.BME280.setPower(!1);delete this.BME280;if(d){var c=new SPI;
|
||||
c.setup({miso:a.BME_SDO,mosi:a.BME_SDI,sck:a.BME_SCK});b&&setTimeout(b,100,this.BME280);return this.BME280=require("BME280").connectSPI(c,a.BME_CS)}};exports.setMagOn=function(d,b){this.LIS2MDL&&this.LIS2MDL.off();delete this.LIS2MDL;if(d){var c=new I2C;c.setup({sda:a.LIS2MDL_SDA,scl:a.LIS2MDL_SCL});b&&setTimeout(b,100,this.LIS2MDL);return this.LIS2MDL=require("LIS2MDL").connectI2C(c,{"int":a.LIS2MDL_INT})}};exports.setAccelOn=function(d,b){this.LIS3DH&&this.LIS3DH.off();delete this.LIS3DH;if(d){var c=
|
||||
new I2C;c.setup({sda:a.LIS3DH_SDA,scl:a.LIS3DH_SCL});b&&setTimeout(b,100,this.LIS3DH);return this.LIS3DH=require("LIS3DH").connectI2C(c,{"int":a.LIS3DH_INT1})}};exports.setOptoOn=function(d,b){this.OPT3001&&this.OPT3001.off();delete this.OPT3001;if(d){var c=new I2C;c.setup({sda:a.OPT_SDA,scl:a.OPT_SCL,bitrate:4E5});b&&setTimeout(b,1E3,this.OPT3001);return this.OPT3001=require("OPT3001").connectI2C(c,{"int":a.OPT_INT})}};exports.setCellOn=function(d,b){if(d)return(new Promise(function(c){Serial1.removeAllListeners();
|
||||
Serial1.on("data",function(a){});Serial1.setup(115200,{tx:a.LTE_RXD,rx:a.LTE_TXD,cts:a.LTS_RTS});a.PWR_GPRS_ON.reset();setTimeout(c,200)})).then(function(){a.PWR_GPRS_ON.set();return new Promise(function(a){setTimeout(a,200)})}).then(function(){a.GPRS_PWRKEY.set();return new Promise(function(a){setTimeout(a,2E3)})}).then(function(){a.GPRS_PWRKEY.reset();return new Promise(function(a){setTimeout(a,5E3)})}).then(function(){Serial1.removeAllListeners();b&&setTimeout(b,10,Serial1)});a.PWR_GPRS_ON.reset();
|
||||
b&&setTimeout(b,1E3)};exports.setCharging=function(d){a.BQ_EN.write(!d)}
|
||||
@ -6,6 +6,7 @@ cd `dirname $0`
|
||||
wget https://www.espruino.com/modules/AT.min.js -O AT.min.js
|
||||
#wget https://www.espruino.com/modules/QuectelM35.min.js -O QuectelM35.min.js
|
||||
#wget https://www.espruino.com/modules/ATSMS.min.js -O ATSMS.min.js
|
||||
#wget https://www.espruino.com/modules/UG96.min.js -O UG96.min.js
|
||||
wget https://www.espruino.com/modules/GPS.min.js -O GPS.min.js
|
||||
wget https://www.espruino.com/modules/graphical_menu.min.js -O graphical_menu.min.js
|
||||
wget https://www.espruino.com/modules/BME280.min.js -O BME280.min.js
|
||||
@ -23,4 +24,5 @@ wget https://www.espruino.com/modules/BH1745.min.js -O BH1745.min.js
|
||||
wget https://www.espruino.com/modules/EspruinoWiFi.min.js -O espruino_wifi/Wifi.min.js
|
||||
node ../../../EspruinoDocs/bin/minify.js nordic/Thingy.js nordic/Thingy.min.js
|
||||
node ../../../EspruinoDocs/bin/minify.js rak/RAK8211.js rak/RAK8211.min.js
|
||||
node ../../../EspruinoDocs/bin/minify.js rak/RAK8212.js rak/RAK8212.min.js
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user