diff --git a/config.toml b/config.toml index 64322f0..75001bb 100644 --- a/config.toml +++ b/config.toml @@ -24,151 +24,76 @@ theme = "doc-theme" weight = 40 [[menu.main]] - name = "Hardware Setup" - url = "/gettingstarted/connection/" - identifier = "gettingstarted@connection" - parent = "gettingstarted" + name = "Getting Started" + url = "/gettingstarted/" + identifier = "gettingstarted@gettingstarted" + parent="gettingstarted" weight = 10 -[[menu.main]] - name = "LoPy" - url = "/gettingstarted/connection/lopy/" - identifier = "gettingstarted@connection@lopy" - parent = "gettingstarted@connection" - weight = 10 - -[[menu.main]] - name = "LoPy 4" - url = "/gettingstarted/connection/lopy4/" - identifier = "gettingstarted@connection@lopy4" - parent = "gettingstarted@connection" - weight = 20 - -[[menu.main]] - name = "SiPy" - url = "/gettingstarted/connection/sipy/" - identifier = "gettingstarted@connection@sipy" - parent = "gettingstarted@connection" - weight = 30 - -[[menu.main]] - name = "GPy" - url = "/gettingstarted/connection/gpy/" - identifier = "gettingstarted@connection@gpy" - parent = "gettingstarted@connection" - weight = 40 - -[[menu.main]] - name = "FiPy" - url = "/gettingstarted/connection/fipy/" - identifier = "gettingstarted@connection@fipy" - parent = "gettingstarted@connection" - weight = 50 - -[[menu.main]] - name = "WiPy" - url = "/gettingstarted/connection/wipy/" - identifier = "gettingstarted@connection@wipy" - parent = "gettingstarted@connection" - weight = 60 - [[menu.main]] name = "Software" - url = "/gettingstarted/installation/" - identifier = "gettingstarted@installation" + url = "/gettingstarted/software/" + identifier = "gettingstarted@software" parent = "gettingstarted" - weight = 20 + weight = 30 [[menu.main]] name = "Drivers" - url = "/gettingstarted/installation/drivers/" - identifier = "gettingstarted@installation@drivers" - parent = "gettingstarted@installation" + url = "/gettingstarted/software/drivers/" + identifier = "gettingstarted@software@drivers" + parent = "gettingstarted@software" weight = 10 -[[menu.main]] - name = "Updating Firmware" - url = "/gettingstarted/installation/firmwaretool/" - identifier = "gettingstarted@installation@firmwaretool" - parent = "gettingstarted@installation" - weight = 20 + [[menu.main]] - name = "Pymakr" - url = "/gettingstarted/installation/pymakr/" - identifier = "gettingstarted@installation@pymakr" - parent = "gettingstarted@installation" - weight = 30 + name= "VS Code" + url="/gettingstarted/software/vscode/" + identifier= "gettingstarted@software@vscode" + parent= "gettingstarted@software" + weight=20 + +[[menu.main]] + name= "Atom" + url="/gettingstarted/software/atom/" + identifier= "gettingstarted@software@atom" + parent= "gettingstarted@software" + weight=30 [[menu.main]] name = "Programming the modules" url = "/gettingstarted/programming/" identifier = "gettingstarted@programming" parent = "gettingstarted" - weight = 30 - -[[menu.main]] - name = "Introduction to MicroPython" - url = "/gettingstarted/programming/micropython/" - identifier = "gettingstarted@programming@micropython" - parent = "gettingstarted@programming" - weight = 10 - -[[menu.main]] - name = "MicroPython Examples" - url = "/gettingstarted/programming/examples/" - identifier = "gettingstarted@programming@examples" - parent = "gettingstarted@programming" - weight = 20 - -[[menu.main]] - name = "Your first Pymakr project" - url = "/gettingstarted/programming/first-project/" - identifier = "gettingstarted@programming@first-project" - parent = "gettingstarted@programming" - weight = 30 - -[[menu.main]] - name = "REPL" - url = "/gettingstarted/programming/repl/" - identifier = "gettingstarted@programming@repl" - parent = "gettingstarted@programming" weight = 40 [[menu.main]] - name = "Serial USB (UART)" - url = "/gettingstarted/programming/repl/serial/" - identifier = "gettingstarted@programming@repl@serial" - parent = "gettingstarted@programming@repl" + name = "USB Serial" + url = "/gettingstarted/programming/usbserial/" + identifier = "gettingstarted@programming@usbserial" + parent = "gettingstarted@programming" weight = 10 [[menu.main]] - name = "Telnet REPL" - url = "/gettingstarted/programming/repl/telnet/" - identifier = "gettingstarted@programming@repl@telnet" - parent = "gettingstarted@programming@repl" - weight = 20 - -[[menu.main]] - name = "FTP" + name = "FTP & Telnet" url = "/gettingstarted/programming/ftp/" identifier = "gettingstarted@programming@ftp" parent = "gettingstarted@programming" - weight = 50 + weight = 20 [[menu.main]] name = "Safe boot" url = "/gettingstarted/programming/safeboot/" identifier = "gettingstarted@programming@safeboot" parent = "gettingstarted@programming" - weight = 60 + weight = 30 [[menu.main]] name = "Device Registration" url = "/gettingstarted/registration/" identifier = "gettingstarted@registration" parent = "gettingstarted" - weight = 40 + weight = 50 [[menu.main]] name = "Sigfox" @@ -198,160 +123,20 @@ theme = "doc-theme" parent = "gettingstarted@registration@lora" weight = 10 -# [[menu.main]] -# name = "Objenious" -# url = "/gettingstarted/registration/lora/objenious/" -# identifier = "gettingstarted@registration@lora@objenious" -# parent = "gettingstarted@registration@lora" -# weight = 20 - -# *** Pymakr Plugin [[menu.main]] - name = "Pymakr Plugin" - url = "/pymakr/installation/" - identifier = "pymakr" - weight = 44 - -[[menu.main]] - name = "Installation" - url = "/pymakr/installation/" - identifier = "pymakr@installation" - parent = "pymakr" - weight = 10 - -[[menu.main]] - name = "Atom" - url = "/pymakr/installation/atom/" - identifier = "pymakr@installation@atom" - parent = "pymakr@installation" - weight = 10 - -[[menu.main]] - name = "Visual Studio Code" - url = "/pymakr/installation/vscode/" - identifier = "pymakr@installation@vscode" - parent = "pymakr@installation" + name = "Chirpstack" + url = "/gettingstarted/registration/lora/chirpstack/" + identifier = "gettingstarted@registration@lora@chirpstack" + parent = "gettingstarted@registration@lora" weight = 20 [[menu.main]] - name = "Tools/Features" - url = "/pymakr/toolsfeatures/" - identifier = "pymakr@toolsfeatures" - parent = "pymakr" - weight = 20 - -[[menu.main]] - name = "Settings" - url = "/pymakr/settings/" - identifier = "pymakr@settings" - parent = "pymakr" + name = "Senet" + url = "/gettingstarted/registration/lora/senet/" + identifier = "gettingstarted@registration@lora@senet" + parent = "gettingstarted@registration@lora" weight = 30 -# *** Pymakr Online IDE -[[menu.main]] - name = "Pymakr Online" - url = "/pymakr-online/" - identifier = "pymakr-online" - weight = 45 - -[[menu.main]] - name = "How to Open" - url = "/pymakr-online/how-to-open/" - identifier = "pymakr-online@how-to-open" - parent = "pymakr-online" - weight = 10 - -[[menu.main]] - name = "Tools/Features" - url = "/pymakr-online/toolsfeatures/" - identifier = "pymakr-online@toolsfeatures" - parent = "pymakr-online" - weight = 20 - -# *** Pytrack, Pysense, Pyscan -[[menu.main]] - name = "Pytrack, Pysense, Pyscan" - url = "/pytrackpysense/" - identifier = "pytrackpysense" - weight = 50 - -[[menu.main]] - name = "Installing Software" - url = "/pytrackpysense/installation/" - identifier = "pytrackpysense@installation" - parent = "pytrackpysense" - weight = 10 - -[[menu.main]] - name = "Updating Firmware" - url = "/pytrackpysense/installation/firmware/" - identifier = "pytrackpysense@installation@firmware" - parent = "pytrackpysense@installation" - weight = 10 - -[[menu.main]] - name = "Installing Drivers - Windows 7" - url = "/pytrackpysense/installation/drivers/" - identifier = "pytrackpysense@installation@drivers" - parent = "pytrackpysense@installation" - weight = 20 - -[[menu.main]] - name = "Installing Libraries" - url = "/pytrackpysense/installation/libraries/" - identifier = "pytrackpysense@installation@libraries" - parent = "pytrackpysense@installation" - weight = 30 - -[[menu.main]] - name = "API Reference" - url = "/pytrackpysense/apireference/" - identifier = "pytrackpysense@apireference" - parent = "pytrackpysense" - weight = 20 - -[[menu.main]] - name = "Pytrack 2.0 X" - url = "/pytrackpysense/apireference/pytrack2/" - identifier = "pytrackpysense@apireference@pytrack2" - parent = "pytrackpysense@apireference" - weight = 10 - -[[menu.main]] - name = "Pytrack" - url = "/pytrackpysense/apireference/pytrack/" - identifier = "pytrackpysense@apireference@pytrack" - parent = "pytrackpysense@apireference" - weight = 20 - -[[menu.main]] - name = "Pysense 2.0 X" - url = "/pytrackpysense/apireference/pysense2/" - identifier = "pytrackpysense@apireference@pysense2" - parent = "pytrackpysense@apireference" - weight = 10 - -[[menu.main]] - name = "Pysense" - url = "/pytrackpysense/apireference/pysense/" - identifier = "pytrackpysense@apireference@pysense" - parent = "pytrackpysense@apireference" - weight = 20 - -[[menu.main]] - name = "Pyscan" - url = "/pytrackpysense/apireference/pyscan/" - identifier = "pytrackpysense@apireference@pyscan" - parent = "pytrackpysense@apireference" - weight = 30 - -[[menu.main]] - name = "Sleep" - url = "/pytrackpysense/apireference/sleep/" - identifier = "pytrackpysense@apireference@sleep" - parent = "pytrackpysense@apireference" - weight = 40 - # *** Tutorials & Examples [[menu.main]] name = "Tutorials & Examples" @@ -360,278 +145,274 @@ theme = "doc-theme" weight = 60 [[menu.main]] - name = "All Pycom Device Examples" - url = "/tutorials/all/" - identifier = "tutorials@all" + name = "Basic" + url = "/tutorials/basic/" + identifier = "tutorials@basic" parent = "tutorials" weight = 10 - [[menu.main]] name = "REPL" - url = "/tutorials/all/repl/" - identifier = "tutorials@all@repl" - parent = "tutorials@all" + url = "/tutorials/basic/repl/" + identifier = "tutorials@basic@repl" + parent = "tutorials@basic" weight = 10 - [[menu.main]] - name = "PyGate" - url = "/tutorials/PyGate/" - identifier = "tutorials@PyGate" - parent = "tutorials" - weight = 1 - -[[menu.main]] - name = "PoE" - url = "/tutorials/all/PoE/" - identifier = "tutorials@all@PoE" - parent = "tutorials@all" - weight = 12 - - -[[menu.main]] - name = "WLAN" - url = "/tutorials/all/wlan/" - identifier = "tutorials@all@wlan" - parent = "tutorials@all" + name = "Sleep" + url = "/tutorials/basic/sleep/" + identifier = "tutorials@basic@sleep" + parent = "tutorials@basic" weight = 20 - [[menu.main]] - name = "Bluetooth" - url = "/tutorials/all/ble/" - identifier = "tutorials@all@ble" - parent = "tutorials@all" + name = "Print" + url = "/tutorials/basic/print/" + identifier = "tutorials@basic@print" + parent = "tutorials@basic" weight = 30 - [[menu.main]] - name = "HTTPS" - url = "/tutorials/all/https/" - identifier = "tutorials@all@https" - parent = "tutorials@all" + name = "RGB LED" + url = "/tutorials/basic/rgbled/" + identifier = "tutorials@basic@rgbled" + parent = "tutorials@basic" weight = 40 - [[menu.main]] - name = "MQTT" - url = "/tutorials/all/mqtt/" - identifier = "tutorials@all@mqtt" - parent = "tutorials@all" + name = "GPIO" + url = "/tutorials/basic/gpio/" + identifier = "tutorials@basic@gpio" + parent = "tutorials@basic" weight = 50 - [[menu.main]] - name = "AWS" - url = "/tutorials/all/aws/" - identifier = "tutorials@all@aws" - parent = "tutorials@all" + name="Hardware" + url="/tutorials/hardware/" + identifier="tutorials@hardware" + parent="tutorials" + weight = 20 +[[menu.main]] + name="ADC" + url="/tutorials/hardware/adc/" + identifier="tutorials@hardware@adc" + parent="tutorials@hardware" + weight = 10 +[[menu.main]] + name="I2C" + url="/tutorials/hardware/i2c/" + identifier="tutorials@hardware@i2c" + parent="tutorials@hardware" + weight = 20 +[[menu.main]] + name="Onewire" + url="/tutorials/hardware/owd/" + identifier="tutorials@hardware@owd" + parent="tutorials@hardware" + weight = 30 +[[menu.main]] + name="PIR Sensor" + url="/tutorials/hardware/pir/" + identifier="tutorials@hardware@pir" + parent="tutorials@hardware" + weight = 40 +[[menu.main]] + name="Modbus" + url="/tutorials/hardware/modbus/" + identifier="tutorials@hardware@modbus" + parent="tutorials@hardware" + weight = 50 +[[menu.main]] + name="Threading" + url="/tutorials/hardware/threading/" + identifier="tutorials@hardware@threading" + parent="tutorials@hardware" weight = 60 - [[menu.main]] - name = "ADC" - url = "/tutorials/all/adc/" - identifier = "tutorials@all@adc" - parent = "tutorials@all" + name="Timers" + url="/tutorials/hardware/timers/" + identifier="tutorials@hardware@timers" + parent="tutorials@hardware" weight = 70 - [[menu.main]] - name = "I2C" - url = "/tutorials/all/i2c/" - identifier = "tutorials@all@i2c" - parent = "tutorials@all" + name="Touch" + url="/tutorials/hardware/touch/" + identifier="tutorials@hardware@touch" + parent="tutorials@hardware" weight = 80 [[menu.main]] - name = "Onewire Driver" - url = "/tutorials/all/owd/" - identifier = "tutorials@all@owd" - parent = "tutorials@all" - weight = 90 - -[[menu.main]] - name = "Threading" - url = "/tutorials/all/threading/" - identifier = "tutorials@all@threading" - parent = "tutorials@all" - weight = 100 - -[[menu.main]] - name = "RGB LED" - url = "/tutorials/all/rgbled/" - identifier = "tutorials@all@rgbled" - parent = "tutorials@all" - weight = 110 - -[[menu.main]] - name = "Timers" - url = "/tutorials/all/timers/" - identifier = "tutorials@all@timers" - parent = "tutorials@all" - weight = 120 - -[[menu.main]] - name = "PIR Sensor" - url = "/tutorials/all/pir/" - identifier = "tutorials@all@pir" - parent = "tutorials@all" - weight = 130 - -[[menu.main]] - name = "Modbus" - url = "/tutorials/all/modbus/" - identifier = "tutorials@all@modbus" - parent = "tutorials@all" - weight = 140 - -[[menu.main]] - name = "OTA update" - url = "/tutorials/all/ota/" - identifier = "tutorials@all@ota" - parent = "tutorials@all" - weight = 150 - -[[menu.main]] - name = "Lorawan OTA update" - url = "/tutorials/all/ota-lorawan/" - identifier = "tutorials@all@ota-lorawan" - parent = "tutorials@all" - weight = 155 - -[[menu.main]] - name = "RMT" - url = "/tutorials/all/rmt/" - identifier = "tutorials@all@rmt" - parent = "tutorials@all" - weight = 160 - -[[menu.main]] - name = "Socket" - url = "/tutorials/all/socket/" - identifier = "tutorials@all@socket" - parent = "tutorials@all" - weight = 170 - -[[menu.main]] - name = "Touch" - url = "/tutorials/all/touch/" - identifier = "tutorials@all@touch" - parent = "tutorials@all" - weight = 180 - -[[menu.main]] - name = "LoRa Examples" - url = "/tutorials/lora/" - identifier = "tutorials@lora" + name = "Networks" + url = "/tutorials/networks/" + identifier = "tutorials@networks" parent = "tutorials" - weight = 20 - + weight = 30 [[menu.main]] - name = "LoRa-MAC (Raw LoRa)" - url = "/tutorials/lora/lora-mac/" - identifier = "tutorials@lora@lora-mac" - parent = "tutorials@lora" + name = "WiFi" + url = "/tutorials/networks/wlan/" + identifier = "tutorials@networks@wlan" + parent = "tutorials@networks" weight = 10 - [[menu.main]] - name = "LoRaWAN with OTAA" - url = "/tutorials/lora/lorawan-otaa/" - identifier = "tutorials@lora@lorawan-otaa" - parent = "tutorials@lora" + name = "BLE" + url = "/tutorials/networks/ble/" + identifier = "tutorials@networks@ble" + parent = "tutorials@networks" + weight = 15 +[[menu.main]] + name = "SigFox" + url = "/tutorials/networks/sigfox/" + identifier = "tutorials@networks@sigfox" + parent = "tutorials@networks" weight = 20 - [[menu.main]] - name = "LoRaWAN with ABP" - url = "/tutorials/lora/lorawan-abp/" - identifier = "tutorials@lora@lorawan-abp" - parent = "tutorials@lora" + name = "LoRa" + url = "/tutorials/networks/LoRa/" + identifier = "tutorials@networks@lora" + parent = "tutorials@networks" weight = 30 [[menu.main]] - name = "LoRa-MAC Nano-Gateway" - url = "/tutorials/lora/lora-mac-nano-gateway/" - identifier = "tutorials@lora@lora-mac-nano-gateway" - parent = "tutorials@lora" + name = "LoRaWAN ABP" + url = "/tutorials/networks/lora/lorawan-abp/" + identifier = "tutorials@networks@lora@lorawan-abp" + parent = "tutorials@networks@lora" + weight = 10 +[[menu.main]] + name = "LoRaWAN OTAA" + url = "/tutorials/networks/lora/lorawan-otaa/" + identifier = "tutorials@networks@lora@lorawan-otaa" + parent = "tutorials@networks@lora" + weight = 20 +[[menu.main]] + name = "LoRaWAN Gateway" + url = "/tutorials/networks/lora/lorawan-nano-gateway/" + identifier = "tutorials@networks@lora@lorawan-gateway" + parent = "tutorials@networks@lora" + weight = 30 +[[menu.main]] + name = "LoRa RAW" + url = "/tutorials/networks/lora/lora-mac/" + identifier = "tutorials@networks@lora@lora-mac" + parent = "tutorials@networks@lora" weight = 40 - [[menu.main]] - name = "LoPy to LoPy" - url = "/tutorials/lora/module-module/" - identifier = "tutorials@lora@module-module" - parent = "tutorials@lora" + name = "LoRa RAW Gateway" + url = "/tutorials/networks/lora/lora-mac-nano-gateway/" + identifier = "tutorials@networks@lora@lora-mac-nano-gateway" + parent = "tutorials@networks@lora" weight = 50 - [[menu.main]] - name = "LoRaWAN Nano-Gateway" - url = "/tutorials/lora/lorawan-nano-gateway/" - identifier = "tutorials@lora@lorawan-nano-gateway" - parent = "tutorials@lora" + name = "Lopy to Lopy" + url = "/tutorials/networks/lora/module-module/" + identifier = "tutorials@networks@lora@module-module" + parent = "tutorials@networks@lora" weight = 60 [[menu.main]] - name = "RN2483 to LoPy" - url = "/tutorials/lora/rn2483-to-lopy/" - identifier = "tutorials@lora@rn2483-to-lopy" - parent = "tutorials@lora" - weight = 70 - -[[menu.main]] - name = "Sigfox Examples" - url = "/tutorials/sigfox/" - identifier = "tutorials@sigfox" - parent = "tutorials" - weight = 30 - -[[menu.main]] - name = "LTE Examples" - url = "/tutorials/lte/" - identifier = "tutorials@lte" - parent = "tutorials" + name = "LTE" + url = "/tutorials/networks/lte/" + identifier = "tutorials@networks@lte" + parent = "tutorials@networks" weight = 40 - [[menu.main]] - name = "CAT-M1" - url = "/tutorials/lte/cat-m1/" - identifier = "tutorials@lte@cat-m1" - parent = "tutorials@lte" - weight = 10 - -[[menu.main]] - name = "NB-IoT" - url = "/tutorials/lte/nb-iot/" - identifier = "tutorials@lte@nb-iot" - parent = "tutorials@lte" - weight = 20 - -[[menu.main]] - name = "Module IMEI" - url = "/tutorials/lte/imei/" - identifier = "tutorials@lte@imei" - parent = "tutorials@lte" - weight = 30 - -[[menu.main]] - name = "Modem Firmware Update" - url = "/tutorials/lte/firmware/" - identifier = "tutorials@lte@firmware" - parent = "tutorials@lte" - weight = 40 - -[[menu.main]] - name = "Pytrack Examples" - url = "/tutorials/pytrack/" - identifier = "tutorials@pytrack" - parent = "tutorials" + name = "Ethernet" + url = "/tutorials/networks/ethernet/" + identifier = "tutorials@networks@ethernet" + parent = "tutorials@networks" weight = 50 [[menu.main]] - name = "Pysense Examples" - url = "/tutorials/pysense/" - identifier = "tutorials@pysense" + name = "Network Protecols" + url = "/tutorials/networkprotecols/" + identifier = "tutorials@networkprotecols" parent = "tutorials" - weight = 60 + weight = 40 +[[menu.main]] + name = "AWS" + url = "/tutorials/networkprotecols/aws/" + identifier = "tutorials@networkprotecols@aws" + parent = "tutorials@networkprotecols" + weight = 10 +[[menu.main]] + name = "HTTP Webserver" + url = "/tutorials/networkprotecols/webserver/" + identifier = "tutorials@networkprotecols@webserver" + parent = "tutorials@networkprotecols" + weight = 15 +[[menu.main]] + name = "HTTPS" + url = "/tutorials/networkprotecols/https/" + identifier = "tutorials@networkprotecols@https" + parent = "tutorials@networkprotecols" + weight = 20 +[[menu.main]] + name = "MQTT" + url = "/tutorials/networkprotecols/mqtt/" + identifier = "tutorials@networkprotecols@mqtt" + parent = "tutorials@networkprotecols" + weight = 30 +[[menu.main]] + name = "PoE" + url = "/tutorials/networkprotecols/PoE/" + identifier = "tutorials@networkprotecols@poe" + parent = "tutorials@networkprotecols" + weight = 40 +[[menu.main]] + name = "NTP" + url = "/tutorials/networkprotecols/ntp/" + identifier = "tutorials@networkprotecols@ntp" + parent = "tutorials@networkprotecols" + weight = 45 +[[menu.main]] + name = "Sockets" + url = "/tutorials/networkprotecols/socket/" + identifier = "tutorials@networkprotecols@socket" + parent = "tutorials@networkprotecols" + weight = 50 [[menu.main]] - name = "Pyscan Examples" - url = "/tutorials/pyscan/" - identifier = "tutorials@pyscan" + name = "Expansion Boards" + url = "/tutorials/expansionboards/" + identifier = "tutorials@expansionboards" parent = "tutorials" - weight = 70 + weight = 50 +[[menu.main]] + name = "Pygate" + url = "/tutorials/expansionboards/pygate/" + identifier = "tutorials@expansionboards@pygate" + parent = "tutorials@expansionboards" + weight = 10 +[[menu.main]] + name = "pysense" + url = "/tutorials/expansionboards/pysense" + identifier = "tutorials@expansionboards@pysense" + parent = "tutorials@expansionboards" + weight = 20 +[[menu.main]] + name = "pysense 2.0 X" + url = "/tutorials/expansionboards/pysense2" + identifier = "tutorials@expansionboards@pysense2" + parent = "tutorials@expansionboards" + weight = 30 +[[menu.main]] + name = "pytrack" + url = "/tutorials/expansionboards/pytrack" + identifier = "tutorials@expansionboards@pytrack" + parent = "tutorials@expansionboards" + weight = 40 +[[menu.main]] + name = "pytrack 2.0 X" + url = "/tutorials/expansionboards/pytrack2" + identifier = "tutorials@expansionboards@pytrack2" + parent = "tutorials@expansionboards" + weight = 50 +[[menu.main]] + name = "pyscan" + url = "/tutorials/expansionboards/pyscan" + identifier = "tutorials@expansionboards@pyscan" + parent = "tutorials@expansionboards" + weight = 60 +[[menu.main]] + name = "Advanced" + url = "/tutorials/advanced/" + identifier = "tutorials@advanced" + parent = "tutorials" + weight = 60 # *** Firmware & API Reference [[menu.main]] @@ -880,12 +661,63 @@ theme = "doc-theme" weight = 30 [[menu.main]] - name = "pycom" + name = "Pycom" url = "/firmwareapi/pycom/pycom/" identifier = "firmwareapi@pycom@pycom" parent = "firmwareapi@pycom" weight = 40 +[[menu.main]] + name = "Expansion boards" + url = "/firmwareapi/pycom/expansionboards/" + identifier = "firmwareapi@pycom@expansionboards" + parent = "firmwareapi@pycom" + weight = 50 + +[[menu.main]] + name = "Pygate" + url = "/firmwareapi/pycom/expansionboards/pygate/" + identifier = "firmwareapi@pycom@expansionboards@pygate" + parent = "firmwareapi@pycom@expansionboards" + weight = 10 +[[menu.main]] + name = "pysense" + url = "/firmwareapi/pycom/expansionboards/pysense/" + identifier = "firmwareapi@pycom@expansionboards@pysense" + parent = "firmwareapi@pycom@expansionboards" + weight = 20 +[[menu.main]] + name = "pysense 2.0 x" + url = "/firmwareapi/pycom/expansionboards/pysense2/" + identifier = "firmwareapi@pycom@expansionboards@pysense2" + parent = "firmwareapi@pycom@expansionboards" + weight = 30 +[[menu.main]] + name = "pytrack" + url = "/firmwareapi/pycom/expansionboards/pytrack/" + identifier = "firmwareapi@pycom@expansionboards@pytrack" + parent = "firmwareapi@pycom@expansionboards" + weight = 40 +[[menu.main]] + name = "pytrack 2.0 x" + url = "/firmwareapi/pycom/expansionboards/pytrack2/" + identifier = "firmwareapi@pycom@expansionboards@pytrack2" + parent = "firmwareapi@pycom@expansionboards" + weight = 50 +[[menu.main]] + name = "pyscan" + url = "/firmwareapi/pycom/expansionboards/pyscan/" + identifier = "firmwareapi@pycom@expansionboards@pyscan" + parent = "firmwareapi@pycom@expansionboards" + weight = 60 +[[menu.main]] + name = "sleep" + url = "/firmwareapi/pycom/expansionboards/sleep/" + identifier = "firmwareapi@pycom@expansionboards@sleep" + parent = "firmwareapi@pycom@expansionboards" + weight = 70 + + [[menu.main]] name = "MicroPython Modules" url = "/firmwareapi/micropython/" @@ -1125,6 +957,13 @@ theme = "doc-theme" parent = "datasheets@oem" weight = 20 +[[menu.main]] + name = "L01 OEM Baseboard" + url = "/datasheets/oem/l01_reference/" + identifier = "datasheets@oem@l01_reference" + parent = "datasheets@oem" + weight = 25 + [[menu.main]] name = "L04" url = "/datasheets/oem/l04/" @@ -1140,81 +979,78 @@ theme = "doc-theme" weight = 40 [[menu.main]] - name = "L01 OEM Baseboard Reference" - url = "/datasheets/oem/l01_reference/" - identifier = "datasheets@oem@l01_reference" - parent = "datasheets@oem" - weight = 50 - -[[menu.main]] - name = "Universal OEM Baseboard Reference" + name = "Universal OEM Baseboard" url = "/datasheets/oem/universal_reference/" identifier = "datasheets@oem@universal_reference" parent = "datasheets@oem" weight = 60 +[[menu.main]] + name = "OEM Deepsleep" + url = "/datasheets/oem/deepsleep/" + identifier = "datasheets@oem@deepsleep" + parent = "datasheets@oem" + weight = 70 + [[menu.main]] name = "Expansion Boards and Shields" - url = "/datasheets/boards/" + url = "/datasheets/expansionboards/" identifier = "datasheets@boards" parent = "datasheets" weight = 30 [[menu.main]] name = "Pygate" - url = "/datasheets/boards/pygate/" + url = "/datasheets/expansionboards/pygate/" identifier = "datasheets@boards@pygate" parent = "datasheets@boards" - weight = 10 + weight = 5 -[[menu.main]] - name = "Expansion Board 3.0" - url = "/datasheets/boards/expansion3/" - identifier = "datasheets@boards@expansion3" - parent = "datasheets@boards" - weight = 10 - -[[menu.main]] - name = "Pytrack" - url = "/datasheets/boards/pytrack/" - identifier = "datasheets@boards@pytrack" - parent = "datasheets@boards" - weight = 20 [[menu.main]] name = "Pysense" - url = "/datasheets/boards/pysense/" + url = "/datasheets/expansionboards/pysense/" identifier = "datasheets@boards@pysense" parent = "datasheets@boards" - weight = 30 - + weight = 10 [[menu.main]] - name = "Pyscan" - url = "/datasheets/boards/pyscan/" - identifier = "datasheets@boards@pyscan" + name = "Pysense 2.0 X" + url = "/datasheets/expansionboards/pysense2/" + identifier = "datasheets@boards@pysense2" + parent = "datasheets@boards" + weight = 20 +[[menu.main]] + name = "Pytrack" + url = "/datasheets/expansionboards/pytrack/" + identifier = "datasheets@boards@pytrack" + parent = "datasheets@boards" + weight = 30 +[[menu.main]] + name = "Pytrack 2.0 X" + url = "/datasheets/expansionboards/pytrack2/" + identifier = "datasheets@boards@pytrack2" parent = "datasheets@boards" weight = 40 - -[[menu.main]] - name = "Expansion Board 2.0" - url = "/datasheets/boards/expansion2/" - identifier = "datasheets@boards@expansion2" + [[menu.main]] + name = "Pyscan" + url = "/datasheets/expansionboards/pyscan/" + identifier = "datasheets@boards@pyscan" parent = "datasheets@boards" weight = 50 - [[menu.main]] - name = "Deep Sleep Shield" - url = "/datasheets/boards/deepsleep/" - identifier = "datasheets@boards@deepsleep" + name = "Expansion Board 2.0" + url = "/datasheets/expansionboards/expansion2/" + identifier = "datasheets@boards@expansion2" parent = "datasheets@boards" weight = 60 - [[menu.main]] - name = "Deep Sleep API" - url = "/datasheets/boards/deepsleep/api/" - identifier = "datasheets@boards@deepsleep@api" - parent = "datasheets@boards@deepsleep" - weight = 10 + name = "Expansion Board 3.0" + url = "/datasheets/expansionboards/expansion3/" + identifier = "datasheets@boards@expansion3" + parent = "datasheets@boards" + weight = 70 + + [[menu.main]] name = "Notes" @@ -1223,6 +1059,40 @@ theme = "doc-theme" parent = "datasheets" weight = 40 +# firmware tool +[[menu.main]] + name = "Update Firmware" + url = "/updatefirmware/" + identifier = "updatefirmware" + weight = 85 + +[[menu.main]] + name = "Device" + url = "/updatefirmware/device/" + identifier = "updatefirmware@device" + parent= "updatefirmware" + weight = 10 +[[menu.main]] + name = "Device (OTA)" + url = "/updatefirmware/OTA/" + identifier = "updatefirmware@ota" + parent= "updatefirmware" + weight = 20 + +[[menu.main]] + name = "Expansion Board" + url = "/updatefirmware/expansionboard/" + identifier = "updatefirmware@expansionboard" + parent= "updatefirmware" + weight = 30 + +[[menu.main]] + name = "LTE Modem" + url = "/updatefirmware/ltemodem/" + identifier = "updatefirmware@ltemodem" + parent = "updatefirmware" + weight = 40 + # *** Pybytes [[menu.main]] name = "Pybytes" @@ -1568,56 +1438,56 @@ theme = "doc-theme" [[menu.main]] name = "Pymesh LICENCE" - url = "/pymesh/licence" + url = "/pymesh/licence/" identifier = "pymesh@licence" parent = "pymesh" weight = 10 [[menu.main]] name = "Simple Example" - url = "/pymesh/simple-example" + url = "/pymesh/simple-example/" identifier = "pymesh@simple-example" parent = "pymesh" weight = 20 [[menu.main]] name = "Pymesh Library API" - url = "/pymesh/lib-api" + url = "/pymesh/lib-api/" identifier = "pymesh@lib-api" parent = "pymesh" weight = 30 [[menu.main]] name = "Pymesh Library CLI" - url = "/pymesh/lib-cli" + url = "/pymesh/lib-cli/" identifier = "pymesh@lib-cli" parent = "pymesh" weight = 40 [[menu.main]] name = "Pymesh Library BLE RPC" - url = "/pymesh/lib-ble-rpc" + url = "/pymesh/lib-ble-rpc/" identifier = "pymesh@lib-ble-rpc" parent = "pymesh" weight = 50 [[menu.main]] name = "Border Router Examplee" - url = "/pymesh/pymesh-br" + url = "/pymesh/pymesh-br/" identifier = "pymesh@pymesh-br" parent = "pymesh" weight = 60 [[menu.main]] name = "Advanced Security Example" - url = "/pymesh/security" + url = "/pymesh/security/" identifier = "pymesh@security" parent = "pymesh" weight = 70 [[menu.main]] name = "Micropython API" - url = "/firmwareapi/pycom/network/lora/pymesh" + url = "/firmwareapi/pycom/network/lora/pymesh/" identifier = "pymesh@api" parent = "pymesh" weight = 90 @@ -1665,7 +1535,7 @@ theme = "doc-theme" weight = 30 # *** Documentation Notes [[menu.main]] - name = "Documentation Notes" + name = "Micropython Support" url = "/docnotes/" identifier = "docnotes" weight = 100 @@ -1683,6 +1553,24 @@ theme = "doc-theme" identifier = "docnotes@replscript" parent = "docnotes" weight = 20 +[[menu.main]] + name = "Micropython" + url = "/docnotes/micropython/" + identifier = "docnotes@micropython" + parent = "docnotes" + weight = 30 +[[menu.main]] + name = "Micropython examples" + url = "/docnotes/examples/" + identifier = "docnotes@examples" + parent = "docnotes" + weight = 40 +[[menu.main]] + name = "REPL commands" + url = "/docnotes/repl/" + identifier = "docnotes@repl" + parent = "docnotes" + weight = 50 [[menu.main]] name = "Mesh Networks" @@ -1718,3 +1606,9 @@ theme = "doc-theme" identifier = "advance@encryption" parent = "advance" weight = 30 + +[[menu.main]] + name="License" + url="/license/" + identifier="license" + weight = 500 diff --git a/content/_index.md b/content/_index.md index 9997fd7..033a604 100644 --- a/content/_index.md +++ b/content/_index.md @@ -12,21 +12,11 @@ Pycom ecosystem makes IoT development easy * Write [MicroPython](https://micropython.org/) code and up to three times faster compared to C/C++. * Send data to [Pybytes IoT platform](https://pybytes.pycom.io/?utm_source=docs&utm_medium=web&utm_campaign=getting-started-top) or use your device standalone with the range of supported networks. +* Start using our products [here!](/gettingstarted/) ![](gitbook/assets/getting_started.png) -## [Setting up the hardware](gettingstarted/connection) -Firstly we will cover how to connect the module to your computer either via USB or WiFi. -Secondly, we will explain how to connect various accessories such as antennas or SIM cards to your module. -## [Setting up your computer and Pymakr plugin](gettingstarted/installation) -You will need to install some software on your computer to interface with it. -The second part of this guide will guide you through installing drivers and performing firmware updates for your module/accessories. -And how to set up the Pymakr plugins and other software use to program your device. - -## [MicroPython crash course](/gettingstarted/programming) -Now that you have a connected module and all the required software installed it is time to begin programming your device. -This part of the guide will get you started with a basic example and point you in the right direction for getting your device connected to your chosen network. ## [Connecting to Pybytes IoT platform](pybytes/introduction) Connect your device to [Pybytes](https://pybytes.pycom.io/?utm_source=docs&utm_medium=web&utm_campaign=getting-started-bottom) with Wi-Fi, LoRa or Sigfox. Send data from your device just with one line command. diff --git a/content/datasheets/_index.md b/content/datasheets/_index.md index abfa4eb..13a239f 100644 --- a/content/datasheets/_index.md +++ b/content/datasheets/_index.md @@ -1,5 +1,5 @@ --- -title: "" +title: "Product info & Datasheets" aliases: - datasheets/introduction.html - datasheets/introduction.md @@ -11,42 +11,28 @@ The follow pages contain all information relating to each product, for example: ## Development Modules -- {{% refname "development/wipy2.md" %}}. -- {{% refname "development/wipy3.md" %}} - -- {{% refname "development/lopy.md" %}} - -- {{% refname "development/lopy4.md" %}} - -- {{% refname "development/sipy.md" %}} - -- {{% refname "development/gpy.md" %}} - -- {{% refname "development/fipy.md" %}} +- [Wipy 2.0](/datasheets/development/wipy2.md) +- [Wipy 3.0](/datasheets/development/wipy3.md) +- [Lopy](/datasheets/development/lopy.md) +- [Lopy 4](/datasheets/development/lopy4.md) +- [Gpy](/datasheets/development/gpy.md) +- [Sipy](/datasheets/development/sipy.md) ## OEM modules -- {{% refname "oem/w01.md" %}} +- [W01](/datasheets/oem/w01.md) +- [L01](/datasheets/oem/l01.md) +- [L04](/datasheets/oem/l04.md) +- [Baseboard](datasheets/oem/universal_reference.md) +- [Deepsleep](datasheets/oem/deepsleep.md) -- {{% refname "oem/l01.md" %}} +## Expansion boards +- [Expansion 2](/datasheets/expansionboards/expansion2.md) +- [Expansion 3](/datasheets/expansionboards/expansion3.md) +- [Pygate](/datasheets/expansionboards/pygate.md) +- [Pysense](/datasheets/expansionboards/pysense.md) +- [Pysense 2.0 X](/datasheets/expansionboards/pysense.md) +- [Pytrack](/datasheets/expansionboards/pytrack.md) +- [Pysense 2.0 X](/datasheets/expansionboards/pysense.md) -- {{% refname "oem/g01.md" %}} - -- {{% refname "oem/l01_reference.md" %}} - -- {{% refname "oem/universal_reference.md" %}} - -## Expansion Boards and Shields - -- {{% refname "boards/expansion3.md" %}} - -- {{% refname "boards/pytrack.md" %}} - -- {{% refname "boards/pysense.md" %}} - -- {{% refname "boards/pyscan.md" %}} - -- {{% refname "boards/expansion2.md" %}} - -- {{% refname "boards/deepsleep/" %}} diff --git a/content/datasheets/boards/README.md b/content/datasheets/boards/README.md deleted file mode 100644 index 45a1f58..0000000 --- a/content/datasheets/boards/README.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Expansion Boards and Shields" -aliases: - - product-info/boards - - chapter/datasheets/boards ---- - -This section contains all of the datasheets for the Pycom Expansion Boards and Shields. This includes the Expansion Board, Pytrack, Pysense and Deep Sleep Shield. - -{{% refname "expansion3.md" %}} - -{{% refname "pytrack.md" %}} - -{{% refname "pysense.md" %}} - -{{% refname "pyscan.md" %}} - -{{% refname "expansion2.md" %}} - -{{% refname "deepsleep/" %}} - diff --git a/content/datasheets/boards/_index.md b/content/datasheets/boards/_index.md deleted file mode 100644 index 03ddf9c..0000000 --- a/content/datasheets/boards/_index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Expansion Boards and Shields" -aliases: ---- - -This section contains all of the datasheets for the Pycom Expansion Boards and Shields. This includes the Expansion Board, Pytrack, Pysense and Deep Sleep Shield. - -{{% refname "pygate.md" %}} - -{{% refname "expansion3.md" %}} - -{{% refname "pytrack.md" %}} - -{{% refname "pysense.md" %}} - -{{% refname "pyscan.md" %}} - -{{% refname "expansion2.md" %}} - -{{% refname "deepsleep/" %}} diff --git a/content/datasheets/boards/deepsleep/README.md b/content/datasheets/boards/deepsleep/README.md deleted file mode 100644 index f766154..0000000 --- a/content/datasheets/boards/deepsleep/README.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Deep Sleep Shield" -aliases: - - product-info/boards/deepsleep - - chapter/datasheets/boards/deepsleep ---- - -The schematic of the Deep Sleep Shield is available as a PDF File. - - Deep Sleep Schematic - -## Pinout - -The pinout of the Deep Sleep Shield is available as a PDF File - - Deep Sleep Pinout - - -![](/gitbook/assets/deepsleep-pinout%20%281%29.png) - -{{% hint style="info" %}} -To correctly connect a WiPy 2.0, LoPy or SiPy to the Deep Sleep Shield, align the white triangle on the Shield with the Pycom device's LED. Once the Pycom device is seated with the Deep Sleep Shield, this can then be connected to the Expansion Board -{{% /hint %}} - -![](/gitbook/assets/deepsleep-image-1.jpg) - diff --git a/content/datasheets/boards/pygate.md b/content/datasheets/boards/pygate.md deleted file mode 100644 index da5a275..0000000 --- a/content/datasheets/boards/pygate.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Pygate" -aliases: - - datasheets/boards/pygate.html - - datasheets/boards/pygate.md - - product-info/boards/pygate - - chapter/datasheets/boards/pygate ---- - -## ![](/gitbook/assets/pygate.png) - -## Datasheet - -The datasheet of the Pygate Board is available as a PDF File. - - Pygate Datasheet - -## Battery Charger - -The Pygate features a single cell Li-Ion/Li-Po charger. When the board is being powered via the USB-C connector, the Pygate will charge the battery \(if connected\). - -## Troubleshooting - -* If PIC stays in bootloader mode, the [`dfu-util` update](/pytrackpysense/installation/firmware) should be performed diff --git a/content/datasheets/development/README.md b/content/datasheets/development/README.md deleted file mode 100644 index fa287ed..0000000 --- a/content/datasheets/development/README.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Development Modules" -aliases: - - product-info/development - - chapter/datasheets/development ---- - -This section contains all of the datasheets for the Pycom Development Devices. This includes the WiPy 2.0 and 3.0, LoPy, LoPy 4, SiPy, GPy, and FiPy. - -{{% refname "wipy2.md" %}} - -{{% refname "wipy3.md" %}} - -{{% refname "lopy.md" %}} - -{{% refname "lopy4.md" %}} - -{{% refname "sipy.md" %}} - -{{% refname "gpy.md" %}} - -{{% refname "fipy.md" %}} - diff --git a/content/datasheets/development/_index.md b/content/datasheets/development/_index.md index d4cc1a5..40e3d9e 100644 --- a/content/datasheets/development/_index.md +++ b/content/datasheets/development/_index.md @@ -5,17 +5,10 @@ aliases: This section contains all of the datasheets for the Pycom Development Devices. This includes the WiPy 2.0 and 3.0, LoPy, LoPy 4, SiPy, GPy, and FiPy. -{{% refname "wipy2.md" %}} - -{{% refname "wipy3.md" %}} - -{{% refname "lopy.md" %}} - -{{% refname "lopy4.md" %}} - -{{% refname "sipy.md" %}} - -{{% refname "gpy.md" %}} - -{{% refname "fipy.md" %}} - +- [Wipy 2.0](/datasheets/development/wipy2/) +- [Wipy 3.0](/datasheets/development/wipy3/) +- [Lopy](/datasheets/development/lopy/) +- [Lopy 4](/datasheets/development/lopy4/) +- [Sipy](/datasheets/development/sipy/) +- [Gpy](/datasheets/development/gpy/) +- [Fipy](/datasheets/development/fipy/) diff --git a/content/datasheets/development/fipy.md b/content/datasheets/development/fipy.md index 20f129c..00e355c 100644 --- a/content/datasheets/development/fipy.md +++ b/content/datasheets/development/fipy.md @@ -7,8 +7,6 @@ aliases: - chapter/datasheets/development/fipy --- -![](/gitbook/assets/assets-lil0igdl11z7jos_jpx-lkn7scqkkkb6tqb3uyo-lkn82srvkf3rhetvjpi-fipy-1.png) - {{% hint style="info" %}} Please Note: We have removed the labels from the pictures in the documentation due to inconsistencies with label orientation. *The LED must be aligned above the USB socket* when inserting or removing a development board from an expansion board/Pytrack/Pysense/Pyscan. @@ -22,13 +20,13 @@ aliases: ## Datasheet -The datasheet of the FiPy is available as a PDF File. +The datasheet of the FiPy is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_FiPy_v2.pdf) - FiPy Datasheet +The drawing of the LTE-M antenna is available as a [PDF File](/gitbook/assets/lte-m-antenna-drawing.pdf). -The drawing of the LTE-M antenna is available as a PDF File. - LTE-M Antenna Drawing +The Fipy is certified for [CE RED](/gitbook/assets/fipy_c03-b0-red-final.pdf) and [FCC DSS](/gitbook/assets/pycom-2ajmtfipy01r-fcc-grant-dss.pdf) [FCC DTS](/gitbook/assets/pycom-2ajmtfipy01r-fcc-grant-dts.pdf) [FCC DXX](/gitbook/assets/pycom-2ajmtfipy01r-fcc-grant-dxx.pdf) [FCC TNB](/gitbook/assets/pycom-2ajmtfipy01r-fcc-grant-tnb.pdf) +[ROHS certification](gitbook/assets/RoHs_declarations/RoHS-for-FiPy(8217-00091P)-20190523.pdf) ## Pinout The pinout of the FiPy is available as a PDF File diff --git a/content/datasheets/development/gpy.md b/content/datasheets/development/gpy.md index 7171733..e8cf191 100644 --- a/content/datasheets/development/gpy.md +++ b/content/datasheets/development/gpy.md @@ -15,7 +15,7 @@ aliases: **Store**: [Buy Here](https://pycom.io/product/gpy) -**Getting Started:** [Click Here](/gettingstarted/connection/gpy) +**Getting Started:** [Click Here](/gettingstarted/) ## Datasheet @@ -24,19 +24,17 @@ Please Note: We have removed the labels from the pictures in the documentation d {{% /hint %}} -The datasheet of the GPy is available as a PDF File. +The datasheet of the GPy is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_GPy_v2.pdf") - GPy Datasheet +The drawing of the LTE-M antenna is available as a [PDF File](/gitbook/assets/lte-m-antenna-drawing.pdf") -The drawing of the LTE-M antenna is available as a PDF File. +The Gpy is certified for [CE RED](/gitbook/assets/gpy_c03-b0-red-final.pdf) and [FCC DSS](/gitbook/assets/pycom-2ajmtgpy01r-fcc-grant-dss.pdf) [FCC DTS](/gitbook/assets/pycom-2ajmtgpy01r-fcc-grant-dts.pdf) [FCC TNB](//gitbook/assets/pycom-2ajmtgpy01r-fcc-grant-tnb.pdf) - LTE-M Antenna Drawing +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-GPy(8217-00090P)-20190523.pdf) ## Pinout -The pinout of the GPy is available as a PDF File - - GPy Pinout +The pinout of the GPy is available as a [PDF File](/gitbook/assets/gpy-pinout.pdf) ![](/gitbook/assets/gpy-pinout.png) diff --git a/content/datasheets/development/lopy.md b/content/datasheets/development/lopy.md index ed5bb8f..0095422 100644 --- a/content/datasheets/development/lopy.md +++ b/content/datasheets/development/lopy.md @@ -21,14 +21,15 @@ Please Note: We have removed the labels from the pictures in the documentation d ## Datasheet -The datasheet of the LoPy is available as a PDF File. +The datasheet of the LoPy is available as a [PDF File](gitbook/assets/specsheets/Pycom_002_Specsheets_LoPy_v2.pdf) + +The Lopy is certified for [CE RED](/gitbook/assets/16-213298_expertise_pycom_lopy-1.0r.pdf) and [FCC ACC](/gitbook/assets/2090acc16_grant.pdf") [FCC BCC](/gitbook/assets/2090bcc16_grant.pdf) [FCC CCC](/gitbook/assets/2090ccc16_grant.pdf) + - LoPy Datasheet ## Pinout -The pinout of the LoPy is available as a PDF File +The pinout of the LoPy is available as a [PDF File](/gitbook/assets/lopy-pinout.pdf) - LoPy Pinout ![](/gitbook/assets/lopy-pinout.png) diff --git a/content/datasheets/development/lopy4.md b/content/datasheets/development/lopy4.md index 3946e97..c33cd75 100644 --- a/content/datasheets/development/lopy4.md +++ b/content/datasheets/development/lopy4.md @@ -17,19 +17,21 @@ aliases: **Store**: [Buy Here](https://pycom.io/product/lopy4/) -**Getting Started:** [Click Here](/gettingstarted/connection/lopy4) +**Getting Started:** [Click Here](/gettingstarted/) ## Datasheet -The datasheet of the LoPy4 is available as a PDF File. +The datasheet of the LoPy4 is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_LoPy4_v2.pdf) + +The Lopy 4 is certified for [CE RED](/gitbook/assets/C03-B0-RED-final.pdf) and [FCC DSS](/gitbook/assets/Pycom-2AJMTLOPY4R-FCC-Grant-DSS.pdf) + +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-LoPy-4(8286-00027P)-20190523.pdf) - LoPy4 Datasheet ## Pinout -The pinout of the LoPy4 is available as a PDF File +The pinout of the LoPy4 is available as a [PDF File](/gitbook/assets/lopy4-pinout.pdf) - LoPy4 Pinout ![](/gitbook/assets/lopy4-pinout.png) diff --git a/content/datasheets/development/sipy.md b/content/datasheets/development/sipy.md index 1d8d322..f6a805e 100644 --- a/content/datasheets/development/sipy.md +++ b/content/datasheets/development/sipy.md @@ -17,21 +17,18 @@ aliases: **Store**: [Buy Here](https://pycom.io/product/sipy) -**Getting Started:** [Click Here](/gettingstarted/connection/sipy) +**Getting Started:** [Click Here](/gettingstarted/) ## Datasheet +The datasheet of the SiPy is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_SiPy_v2.pdf) - -The datasheet of the SiPy is available as a PDF File. - - SiPy Datasheet +The Sipy is certified for [CE RED](gitbook/assets/17-210585_expertise_sipy_sipy-1.0.pdf) ## Pinout -The pinout of the SiPy is available as a PDF File +The pinout of the SiPy is available as a [PDF File](/gitbook/assets/sipy-pinout.pdf) - SiPy Pinout ![](/gitbook/assets/sipy-pinout.png) diff --git a/content/datasheets/development/wipy2.md b/content/datasheets/development/wipy2.md index b6c8f37..87cb008 100644 --- a/content/datasheets/development/wipy2.md +++ b/content/datasheets/development/wipy2.md @@ -16,21 +16,18 @@ aliases: **Store**: Discontinued, See [WiPy3](../wipy3) -**Getting Started:** [Click Here](/gettingstarted/connection/wipy) +**Getting Started:** [Click Here](/gettingstarted/) ## Datasheet +The datasheet of the WiPy2 is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_WiPy2.0_v2.pdf) +The Wipy 2 is certified for [CE RED](/gitbook/assets/16-213297_expertise_pycom_wipy-2.0r.pdf) and [FCC ACC](/gitbook/assets/2091acc16_grant.pdf) [FCC BCC](/gitbook/assets/2091bcc16_grant.pdf) -The datasheet of the WiPy2 is available as a PDF File. - - WiPy 2 Datasheet ## Pinout -The pinout of the WiPy2 is available as a PDF File. - - WiPy 2 Pinout +The pinout of the WiPy2 is available as a [PDF File](/gitbook/assets/wipy2-pinout.pdf) ![](/gitbook/assets/wipy2-pinout.png) diff --git a/content/datasheets/development/wipy3.md b/content/datasheets/development/wipy3.md index 58adafe..067f01b 100644 --- a/content/datasheets/development/wipy3.md +++ b/content/datasheets/development/wipy3.md @@ -16,19 +16,20 @@ aliases: **Store**: [Buy Here](https://pycom.io/product/wipy-3-0/) -**Getting Started:** [Click Here](/gettingstarted/connection/wipy) +**Getting Started:** [Click Here](/gettingstarted/) ## Datasheet -The datasheet of the WiPy3 is available as a PDF File. +The datasheet of the WiPy3 is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_WiPy3.0_v2.pdf) - WiPy3 Datasheet +The Wipy 3 is certified for [CE RED](/gitbook/assets/17-214126_red-certificate_pycom_wipy-3.0.pdf) + +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS for WiPy 3(8286-00026P)-20190523.pdf) ## Pinout -The pinout of the WiPy3 is available as a PDF File. +The pinout of the WiPy3 is available as a [PDF File](/gitbook/assets/wipy3-pinout.pdf) - WiPy3 Pinout ![](/gitbook/assets/wipy3-pinout.png) diff --git a/content/datasheets/expansionboards/_index.md b/content/datasheets/expansionboards/_index.md new file mode 100644 index 0000000..aba81af --- /dev/null +++ b/content/datasheets/expansionboards/_index.md @@ -0,0 +1,16 @@ +--- +title: "Expansion Boards and Shields" +aliases: +--- + +This section contains all of the datasheets for the Pycom Expansion Boards and Shields. This includes the Expansion Board, Pytrack, Pysense and Deep Sleep Shield. + + +* [Pygate](../expansionboards/pygate/) +* [Pysense](../expansionboards/pysense/) +* [Pysense 2.0 X](../expansionboards/pysense2/) +* [Pytrack](../expansionboards/pytrack/) +* [Pytrack 2.0 X](../expansionboards/pytrack2/) +* [Pyscan](../expansionboards/pyscan/) +* [Expansion 2](../expansionboards/expansion2/) +* [Expansion 3](../expansionboards/expansion3/) \ No newline at end of file diff --git a/content/datasheets/boards/expansion2.md b/content/datasheets/expansionboards/expansion2.md similarity index 70% rename from content/datasheets/boards/expansion2.md rename to content/datasheets/expansionboards/expansion2.md index 89fa4f1..81ebd89 100644 --- a/content/datasheets/boards/expansion2.md +++ b/content/datasheets/expansionboards/expansion2.md @@ -6,21 +6,22 @@ aliases: - product-info/boards/expansion2 - chapter/datasheets/boards/expansion2 --- +**Store**: Discontinued, See [Expansionboard 3.0](../expansion3) ![](/gitbook/assets/expansion2.png) + ## Datasheet -The datasheet of the Expansion Board is available as a PDF File. +The datasheet of the Expansion Board is available as a [PDF File](/gitbook/assets/expansion2-specsheet.pdf) -Expansion Board 2 Datasheet +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-Expansion-Board(8286-00033P)-20190523.pdf) ## Pinout -The pinout of the Expansion Board is available as a PDF File +The pinout of the Expansion Board is available as a [PDF File](/gitbook/assets/expansion2-pinout.pdf) - Expansion Board 2 Pinout ![](/gitbook/assets/expansion2-pinout-1.png) diff --git a/content/datasheets/boards/expansion3.md b/content/datasheets/expansionboards/expansion3.md similarity index 76% rename from content/datasheets/boards/expansion3.md rename to content/datasheets/expansionboards/expansion3.md index 101389d..551a146 100644 --- a/content/datasheets/boards/expansion3.md +++ b/content/datasheets/expansionboards/expansion3.md @@ -6,20 +6,27 @@ aliases: - product-info/boards/expansion3 - chapter/datasheets/boards/expansion3 --- +**Store**: [Buy Here](https://pycom.io/product/expansion-board-3-0/) ## ![](/gitbook/assets/expansion3.png) ## Datasheet -The datasheet of the Expansion Board is available as a PDF File. +The datasheet of the Expansion Board is available as a [PDF File](/gitbook/assets/expansion3-specsheet-1.pdf) - Expansion Board Datasheet +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-Expansion-Board(8286-00033P)-20190523.pdf) ## Pinout -The pinout of the Expansion Board is available as a PDF File +The pinout of the Expansion Board is available as a [PDF File](/gitbook/assets/expansion3-pinout.pdf) - Expansion Board 3 Pinout +The expansion board contains 6 headers labeled: +- TX: TX UART communication of the development board +- RX: RX UART communication of the development board +- RUN +- BAT +- LED +- CHG ![](/gitbook/assets/expansion3-pinout-1.png) diff --git a/content/datasheets/expansionboards/pygate.md b/content/datasheets/expansionboards/pygate.md new file mode 100644 index 0000000..2917b76 --- /dev/null +++ b/content/datasheets/expansionboards/pygate.md @@ -0,0 +1,47 @@ +--- +title: "Pygate" +aliases: + - datasheets/boards/pygate.html + - datasheets/boards/pygate.md + - product-info/boards/pygate + - chapter/datasheets/boards/pygate +--- +**Store**: [Buy Here](https://pycom.io/product/pygate/) + +## ![](/gitbook/assets/pygate.png) + +## Datasheet + +The datasheet of the Pygate Board is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_Pygate_v1.pdf). + + +## Case Assembly + +Assembly of the Pygate case is very easy, and exists of a bottom half, a top half, 4 screws and 2 button inserts. + +First, insert the Pygate board, without a -py module into the bottom half of the case. You can recognize the bottom half as the part without writing and cutouts for the SD card holder and USB-C connector. Orient the Pygate board such that the USB connector lines up with the similar hole in the case. Once the board is flat in the case, insert the button extenders on the buttons. The long flat side should be inserted in the similarly sized holder in the case. + +>Note: The button extender will only go in one way, do not force it into place! + +Insert the -py module into the Pygate board, with the reset button and RGB LED over the USB connector. If applicable, insert the PoE adapter into the correct slot, with the ethernet port facing the other way compared to the USB-C connector. Attach the LoRa antenna connector wire to the top half of the Pygate case using one of the four cutouts, with the SMA connector facing outwards, using the included nuts. Then, attach the LoRa antenna to the Pygate board's U.FL antenna connector in the top right. Now connect any other peripherals as you wish. + +>The Pygate case supports up to 4 antennas and has space for a small battery when not using the PoE adapter board. + +If applicable, remove the ethernet port cutout from the top shell of the case. +Carefully position the top shell over the bottom shell, and screw in the 4 screws from the bottom. Do not overtighten the screws, as that could break the case and renders the buttons unusable. +Now, attach the antenna(s) to the SMA connector(s) and upload code! + +>On the back, there are two screw inserts to attach the case to a wall. + +![](/gitbook/assets/pygate-case.jpg) +The case will also work for the regular expansion board and has the SD card holder accessible from the outside. + + +## Battery Charger + +The Pygate features a single cell Li-Ion/Li-Po charger. When the board is being powered via the USB-C connector, the Pygate will charge the battery \(if connected\). + +## Troubleshooting + +* If PIC stays in bootloader mode, the [`dfu-util` update](/pytrackpysense/installation/firmware) should be performed + diff --git a/content/datasheets/boards/pyscan.md b/content/datasheets/expansionboards/pyscan.md similarity index 86% rename from content/datasheets/boards/pyscan.md rename to content/datasheets/expansionboards/pyscan.md index fea9f0b..f0597dd 100644 --- a/content/datasheets/boards/pyscan.md +++ b/content/datasheets/expansionboards/pyscan.md @@ -6,14 +6,15 @@ aliases: - product-info/boards/pyscan - chapter/datasheets/boards/pyscan --- +**Store**: [Buy Here](https://pycom.io/product/pyscan/) ![](/gitbook/assets/pyscan-new.png) ## Datasheet -The datasheet of the Pyscan is available as a PDF File. +The datasheet of the Pyscan is available as a [PDF File](/gitbook/assets/pyscan-specsheet.pdf) - Pyscan Datasheet +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-Pyscan(8286-00031P)-20190523.pdf) ## Pyscan Libraries diff --git a/content/datasheets/boards/pysense.md b/content/datasheets/expansionboards/pysense.md similarity index 66% rename from content/datasheets/boards/pysense.md rename to content/datasheets/expansionboards/pysense.md index cdead7f..19c431a 100644 --- a/content/datasheets/boards/pysense.md +++ b/content/datasheets/expansionboards/pysense.md @@ -6,20 +6,20 @@ aliases: - product-info/boards/pysense - chapter/datasheets/boards/pysense --- - +**Store**: [Buy Here](https://pycom.io/product/pysense/) ![](/gitbook/assets/pysense.png) ## Datasheet -The datasheet of the Pysense is available as a PDF File. +The datasheet of the Pysense is available as a [PDF File](/gitbook/assets/pysense-specsheet.pdf) - Pysense Datasheet +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-Pysense(8286-00030P)-20190523.pdf) ## Pinout -The pinout of the Pysense is available as a PDF File +The pinout of the Pysense is available as a [PDF File](/gitbook/assets/pysense-pinout.pdf) + - Pysense Pinout ![](/gitbook/assets/pysense-pinout-1.png) diff --git a/content/datasheets/expansionboards/pysense2.md b/content/datasheets/expansionboards/pysense2.md new file mode 100644 index 0000000..7f62fc0 --- /dev/null +++ b/content/datasheets/expansionboards/pysense2.md @@ -0,0 +1,38 @@ +--- +title: "Pysense" +aliases: + - datasheets/boards/pysense2.html + - datasheets/boards/pysense2.md + - product-info/boards/pysense2 + - chapter/datasheets/boards/pysense2 +--- +**Store**: [Buy Here](https://pycom.io/product/pysense-2-0-x/) + +![](/gitbook/assets/pysense.png) + + +## Datasheet + +The datasheet of the Pysense is available as a [PDF File](/gitbook/assets/pysense-specsheet.pdf) + + + +## Pinout + +The pinout of the Pysense is available as a [PDF File](/gitbook/assets/pysense-pinout.pdf) + + +![](/gitbook/assets/pysense-pinout-1.png) + +## Battery Charger + +The board features a single cell Li-Ion/Li-Po charger. When the board is being powered via the micro USB connector, it will charge the battery (if connected). + +## Mechanical Dimensions + +![](/gitbook/assets/Pysense_v1.1_MechanicalDimensions_b.png) + + +## 3D model for case design + +* Please see the 3D model (step format) diff --git a/content/datasheets/boards/pytrack.md b/content/datasheets/expansionboards/pytrack.md similarity index 66% rename from content/datasheets/boards/pytrack.md rename to content/datasheets/expansionboards/pytrack.md index 3118e28..ac7926a 100644 --- a/content/datasheets/boards/pytrack.md +++ b/content/datasheets/expansionboards/pytrack.md @@ -6,20 +6,21 @@ aliases: - product-info/boards/pytrack - chapter/datasheets/boards/pytrack --- +**Store**: [Buy Here](https://pycom.io/product/pytrack/) ![](/gitbook/assets/pytrack.png) + ## Datasheet -The datasheet of the Pytrack is available as a PDF File. +The datasheet of the Pytrack is available as a [PDF File](/gitbook/assets/pytrack-specsheet-1.pdf) - Pytrack Datasheet +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-Pysense(8286-00030P)-20190523.pdf) ## Pinout -The pinout of the Pytrack is available as a PDF File +The pinout of the Pytrack is available as a [PDF File](/gitbook/assets/pytrack-pinout.pdf) - Pytrack Pinout ![](/gitbook/assets/pytrack-pinout-1.png) diff --git a/content/datasheets/expansionboards/pytrack2.md b/content/datasheets/expansionboards/pytrack2.md new file mode 100644 index 0000000..48de900 --- /dev/null +++ b/content/datasheets/expansionboards/pytrack2.md @@ -0,0 +1,35 @@ +--- +title: "Pytrack" +aliases: + - datasheets/boards/pytrack2.html + - datasheets/boards/pytrack2.md + - product-info/boards/pytrack2 + - chapter/datasheets/boards/pytrack2 +--- +**Store**: [Buy Here](https://pycom.io/product/pytrack2-0-x/) + +![](/gitbook/assets/pytrack.png) + +## Datasheet + +The datasheet of the Pytrack is available as a [PDF File](/gitbook/assets/pytrack-specsheet-1.pdf) + +## Pinout + +The pinout of the Pytrack is available as a [PDF File](/gitbook/assets/pytrack-pinout.pdf") + +![](/gitbook/assets/pytrack-pinout-1.png) + +## Battery Charger + +The board features a single cell Li-Ion/Li-Po charger. When the board is being powered via the micro USB connector, it will charge the battery (if connected). + + + +## Mechanical Dimensions + +![](/gitbook/assets/Pysense_v1.1_MechanicalDimensions_b.png) + +## 3D model for case design + +* Please see the 3D model (step format) diff --git a/content/datasheets/oem/_index.md b/content/datasheets/oem/_index.md index 5ea05d4..8fa3496 100644 --- a/content/datasheets/oem/_index.md +++ b/content/datasheets/oem/_index.md @@ -7,12 +7,9 @@ aliases: This section contains all of the datasheets for the Pycom OEM Devices. This includes the W01, L01, L04, and G01. -{{% refname "w01.md" %}} - -{{% refname "l01.md" %}} - -{{% refname "g01.md" %}} - -{{% refname "l01\_reference.md" %}} - -{{% refname "universal\_reference.md" %}} +- [W01](/datasheets/oem/w01/) +- [L01](/datasheets/oem/l01/) +- [L01](/datasheets/oem/l01_reference/) +- [L04](/datasheets/oem/l04/) +- [Baseboard](datasheets/oem/universal_reference/) +- [Deepsleep](datasheets/oem/deepsleep/) \ No newline at end of file diff --git a/content/datasheets/boards/deepsleep/_index.md b/content/datasheets/oem/deepsleep.md similarity index 100% rename from content/datasheets/boards/deepsleep/_index.md rename to content/datasheets/oem/deepsleep.md diff --git a/content/datasheets/oem/g01.md b/content/datasheets/oem/g01.md index c65498b..53a28f9 100644 --- a/content/datasheets/oem/g01.md +++ b/content/datasheets/oem/g01.md @@ -7,27 +7,29 @@ aliases: - chapter/datasheets/oem/g01 --- -## ![](/gitbook/assets/assets-lil0igdl11z7jos_jpx-lkn7scqkkkb6tqb3uyo-lkn83xkh3nwgrgs_fwq-g01-1%20%282%29.png) ## Datasheet -The drawings for the G01 are available as a PDF File. +The drawings for the G01 are available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_G01_v2.pdf) + - G01 Datasheet ## Pinout -The pinout of the G01 is available as a PDF File +The pinout of the G01 is available as a [PDF File](/gitbook/assets/g01-pinout.pdf) - G01 Pinout +The G01 is certified for [CE RED](/gitbook/assets/17-213357_red-certificate_pycom_g01-1.0.pdf) and [FCC DSS](/gitbook/assets/pycom-2ajmtg01r-fcc-grant-dss.pdf) +[FCC DTS](/gitbook/assets/pycom-2ajmtg01r-fcc-grant-dts.pdf) +[FCC TNB](/gitbook/assets/pycom-2ajmtg01r-fcc-grant-tnb.pdf) + +[ROHS certification](/gitbook/assets/c03-b0-red-final.pdf) ![](/gitbook/assets/g01-pinout.png) ## Drawings -The drawings for the G01 is available as a PDF File. +The drawings for the G01 is available as a [PDF File](/gitbook/assets/g01-drawing.pdf) - G01 Drawings {{% hint style="info" %}} Please note that the PIN assignments for UART1 \(TX1/RX1\), SPI \(CLK, MOSI, MISO\) and I2C \(SDA, SCL\) are defaults and can be changed via software. diff --git a/content/datasheets/oem/l01.md b/content/datasheets/oem/l01.md index 7378a32..f408a1c 100644 --- a/content/datasheets/oem/l01.md +++ b/content/datasheets/oem/l01.md @@ -11,23 +11,24 @@ aliases: ## Datasheet -The drawings for the L01 are available as a PDF File. +The drawings for the L01 are available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_L01_v2.pdf) - L01 Datasheet +The L01 is certified for [CE RED](gitbook/assets/17-213356_red-certificate_pycom_l01-1.0.pdf) and [FCC DSS](/gitbook/assets/172181413_aa_00_final.pdf) +[FCC DTS](/gitbook/assets/172181414_aa_00_final.pdf) [FCC DAA](/gitbook/assets/172181411_aa_00_final.pdf) + +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-L01(f8217-00088P)-20190523.pdf) ## Pinout -The pinout of the L01 is available as a PDF File +The pinout of the L01 is available as a [PDF File](/gitbook/assets/l01-pinout.pdf) - L01 Pinout ![](/gitbook/assets/l01-pinout.png) ## Drawings -The drawings for the L01 is available as a PDF File. +The drawings for the L01 is available as a [PDF File](/gitbook/assets/l01-drawing.pdf) - L01 Drawing {{% hint style="info" %}} Please note that the PIN assignments for UART1 \(TX1/RX1\), SPI \(CLK, MOSI, MISO\) and I2C \(SDA, SCL\) are defaults and can be changed via software. diff --git a/content/datasheets/oem/l04.md b/content/datasheets/oem/l04.md index 7e4c660..c65cb95 100644 --- a/content/datasheets/oem/l04.md +++ b/content/datasheets/oem/l04.md @@ -11,23 +11,22 @@ aliases: ## Datasheet -The datasheet of the L04 is available as a PDF File. +The datasheet of the L04 is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_L04_v2.pdf) - L04 Datasheet +The L04 is certified for [see L01](../l01/) + +[ROHS certification](/gitbook/assets/RoHs_declarations/RoHS-for-L04(8286-00032P)-20190523.pdf) ## Pinout -The pinout of the L04 is available as a PDF File - - L04 Pinout +The pinout of the L04 is available as a [PDF File](/gitbook/assets/l04-pinout.pdf) ![](/gitbook/assets/l04-pinout.png) ## Drawings -The drawings for the L04 are available as a PDF File. +The drawings for the L04 are available as a [PDF File](/gitbook/assets/l04-drawing.pdf) - L04 Drawings {{% hint style="info" %}} Please note that the PIN assignments for UART1 \(TX1/RX1\), SPI \(CLK, MOSI, MISO\) and I2C \(SDA, SCL\) are defaults and can be changed via software. diff --git a/content/datasheets/oem/w01.md b/content/datasheets/oem/w01.md index 6043679..73787c6 100644 --- a/content/datasheets/oem/w01.md +++ b/content/datasheets/oem/w01.md @@ -11,22 +11,19 @@ aliases: ## Datasheet -The datasheet of the W01 is available as a PDF File. +The datasheet of the W01 is available as a [PDF File](/gitbook/assets/specsheets/Pycom_002_Specsheets_W01_v2.pdf) - W01 Datasheet ## Pinout -The pinout of the W01 is available as a PDF File +The pinout of the W01 is available as a [PDF File](/gitbook/assets/w01-pinout.pdf) - W01 Pinout ![](/gitbook/assets/w01-pinout.png) ## Drawings -The drawings for the W01 are available as a PDF File. +The drawings for the W01 are available as a [PDF File](/gitbook/assets/w01-drawing.pdf) - W01 Drawings {{% hint style="info" %}} Please note that the PIN assignments for UART1 \(TX1/RX1\), SPI \(CLK, MOSI, MISO\) and I2C \(SDA, SCL\) are defaults and can be changed via software. diff --git a/content/gettingstarted/programming/examples.md b/content/docnotes/examples.md similarity index 100% rename from content/gettingstarted/programming/examples.md rename to content/docnotes/examples.md diff --git a/content/gettingstarted/programming/micropython.md b/content/docnotes/micropython.md similarity index 100% rename from content/gettingstarted/programming/micropython.md rename to content/docnotes/micropython.md diff --git a/content/gettingstarted/programming/repl/_index.md b/content/docnotes/repl.md similarity index 100% rename from content/gettingstarted/programming/repl/_index.md rename to content/docnotes/repl.md diff --git a/content/gettingstarted/programming/repl/serial.md b/content/docnotes/serial.md similarity index 100% rename from content/gettingstarted/programming/repl/serial.md rename to content/docnotes/serial.md diff --git a/content/documents/_index.md b/content/documents/_index.md deleted file mode 100644 index 3e0f2df..0000000 --- a/content/documents/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: documents -disable_breadcrumbs: true ---- diff --git a/content/documents/certificates.md b/content/documents/certificates.md deleted file mode 100644 index 6c6694c..0000000 --- a/content/documents/certificates.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: "Certificates" -aliases: - - documents/certificates.html - - documents/certificates.md ---- - -## CE RED - -### Development Boards - -#### LoPy - -

LoPy CE RED Certificate

- -#### LoPy 4.0 - -

LoPy 4.0 CE RED Certificate

- -#### WiPy 2.0 - -

WiPy 2.0 CE RED Certificate

- -#### WiPy 3.0 - -

WiPy 3.0 CE RED Certificate

- -#### SiPy - -

SiPy CE RED Certificate

- -#### GPy - -

GPy CE RED Certificate

- -#### FiPy - -

FiPy CE RED Certificate

- -### OEM Modules - -#### L01 - -

L01 CE RED Certificate

- -#### W01 - -

W01 CE RED Certificate

- -#### G01 - -

G01 CE RED Certificate

- -## FCC - -### Development Boards - -#### LoPy - -

LoPy FCC Certificate

- -

LoPy FCC Certificate

- -

LoPy FCC Certificate

- -#### LoPy 4.0 - -

LoPy 4.0 FCC Certificate

- -#### WiPy 2.0 - -

WiPy 2.0 FCC Certificate

- -

WiPy 2.0 FCC Certificate

- -#### GPy - -

GPy FCC Certificate

- -

GPy FCC Certificate

- -

GPy FCC Certificate

- -#### FiPy - -

FiPy FCC Certificate

- -

FiPy FCC Certificate

- -

FiPy FCC Certificate

- -

FiPy FCC Certificate

- -### OEM Modules - -#### L01 - -

L01 FCC Certificate

- -

L01 FCC Certificate

- -

L01 FCC Certificate

- -#### W01 - -

W01 FCC Certificate

- -

W01 FCC Certificate

- -#### G01 - -

G01 FCC Certificate

- -

G01 FCC Certificate

- -

G01 FCC Certificate

diff --git a/content/documents/rohs.md b/content/documents/rohs.md deleted file mode 100644 index 12d8214..0000000 --- a/content/documents/rohs.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: "RoHS declarations" -aliases: - - documents/rohs.html - - documents/rohs.md ---- - -## RoHS declarations - - - - - -#### LoPy 4.0 - -

LoPy 4.0

- -#### WiPy 3.0 - -

WiPy 3.0

- -#### GPy - -

GPy

- -#### FiPy - -

FiPy

- -#### L01 - -

L01

- -#### W01 - -

W01

- -#### G01 - -

G01

- -#### L04 - -

L04

- -#### Expansion Board - -

Expansion board

- -#### Universal OEM reference board - -

Universal OEM reference board

- -#### Pysense - -

Pysense

- -#### Pytrack - -

Pytrack

- -#### Pyscan - -

Pyscan

diff --git a/content/firmwareapi/_index.md b/content/firmwareapi/_index.md index 8fc6eb4..287d98a 100644 --- a/content/firmwareapi/_index.md +++ b/content/firmwareapi/_index.md @@ -1,8 +1,8 @@ --- -title: "" +title: "Introduction" aliases: - - /tutorial/introduction - - /tutorial/introduction.md + - firmwareapi/expansionboards/_index.html + - firmwareapi/expansionboards/_index.html --- diff --git a/content/datasheets/boards/deepsleep/api.md b/content/firmwareapi/deepsleep.md similarity index 100% rename from content/datasheets/boards/deepsleep/api.md rename to content/firmwareapi/deepsleep.md diff --git a/content/pytrackpysense/installation/libraries.md b/content/firmwareapi/pycom/expansionboards/_index.md similarity index 63% rename from content/pytrackpysense/installation/libraries.md rename to content/firmwareapi/pycom/expansionboards/_index.md index 998ebef..ba59e3d 100644 --- a/content/pytrackpysense/installation/libraries.md +++ b/content/firmwareapi/pycom/expansionboards/_index.md @@ -1,25 +1,27 @@ --- -title: "Installing Libraries" +title: "Product info & Datasheets" aliases: - - pytrackpysense/installation/libraries.html - - pytrackpysense/installation/libraries.md - - chapter/pytrackpysense/installation/libraries + - firmwareapi/introduction.html + - firmwareapi/introduction.md + - product-info + - chapter/firmwareapi --- - -To utilise the sensors on the Pytrack and Pysense, Pycom has written libraries to make reading to/from the various sensors accessible via an API. These libraries reside at the Pycom GitHub repository and the latest versions can be found under the releases page. - -[GitHub Repository](https://github.com/pycom/pycom-libraries) +As the development for these devices are on going with additional features being added, every week, it is essential to ensure you frequently check for updates on the Pytrack/Pysense/Pyscan. As well as updating the device firmware, it is important to check the [GitHub repository](https://github.com/pycom/pycom-libraries) for the respective library files as they as also being updated, to include additional features/functionality. {{% hint style="info" %}} Please note that updated libraries are available for the Pytrack 2.0 X and Pysense 2.0 X in the pytrack-2 and pysense-2 directories on GitHub. These new libraries will allow you to use the new additional features. {{% /hint %}} -Download the repository as a `.zip` file, navigate to the correct device (Pysense/Pytrack), extract the files and then upload the desired files to the device in the instructions below. - ## Uploading the Libraries to a Device -These libraries should be uploaded to a device (LoPy, SiPy, WiPy 3.0, etc.) in the same process as a standard MicroPython library. The various `.py` files should be placed into the `/lib` folder on the device. For example, if using the Pysense and the user wishes to enable the only Accelerometer and the Light Sensor, they should place the following `.py` files into the device's `/lib` folder: +These libraries should be uploaded to a device (LoPy, SiPy, WiPy 3.0, etc.) in the same process as a standard MicroPython library. The various `.py` files should be placed into the `/lib` folder on the device. + +Add as many or as few of the libraries that are required. + +In addition to the Pysense or Pytrack specific libraries, for hardware version 1.x boards you also need to upload the `pycoproc.py` file from the `_lib/pycoproc_` folder inside the libraries archive. For the Pytrack 2.0 X and Pysense 2.0 X, the pycoproc.py file is included in the pytrack-2 and pysense-2 directories to avoid confusion over which library to use. + +For example, if using the Pysense and the user wishes to enable the only Accelerometer and the Light Sensor, they should place the following `.py` files into the device's `/lib` folder: ```text - pysense.py @@ -27,10 +29,6 @@ These libraries should be uploaded to a device (LoPy, SiPy, WiPy 3.0, etc.) in t - LTR329ALS01.py ``` -Add as many or as few of the libraries that are required. - -In addition to the Pysense or Pytrack specific libraries, for hardware version 1.x boards you also need to upload the `pycoproc.py` file from the `_lib/pycoproc_` folder inside the libraries archive. For the Pytrack 2.0 X and Pysense 2.0 X, the pycoproc.py file is included in the pytrack-2 and pysense-2 directories to avoid confusion over which library to use. - {{% hint style="info" %}} The Pytrack and Pysense boards behave the same as the Expansion Board. `Upload`, `Run` and upload code to Pycom modules via the Pymakr Plugin, in exactly the same process. {{% /hint %}} diff --git a/content/firmwareapi/pycom/machine/pygate.md b/content/firmwareapi/pycom/expansionboards/pygate.md similarity index 84% rename from content/firmwareapi/pycom/machine/pygate.md rename to content/firmwareapi/pycom/expansionboards/pygate.md index d7b1e7a..e65e0a7 100644 --- a/content/firmwareapi/pycom/machine/pygate.md +++ b/content/firmwareapi/pycom/expansionboards/pygate.md @@ -6,7 +6,9 @@ aliases: - chapter/firmwareapi/pycom/machine/pygate --- -The Pygate is an 8-channel LoRaWAN gateway. Connect a WiPy, Gpy or LoPy4 board to the Pygate and flash the Pygate firmware. See the [Pygate tutorial](/tutorials/all/pygate) to get started. +The Pygate is an 8-channel LoRaWAN gateway. Connect a WiPy, Gpy or LoPy4 board to the Pygate and flash the Pygate firmware. See the [Pygate tutorial](/tutorials/expansionboards/pygate) to get started. + +>Note: Make sure to update the firmware of the device to the pygate version in order to access the functions below. ## Methods diff --git a/content/pytrackpysense/apireference/pyscan.md b/content/firmwareapi/pycom/expansionboards/pyscan.md similarity index 100% rename from content/pytrackpysense/apireference/pyscan.md rename to content/firmwareapi/pycom/expansionboards/pyscan.md diff --git a/content/pytrackpysense/apireference/pysense.md b/content/firmwareapi/pycom/expansionboards/pysense.md similarity index 100% rename from content/pytrackpysense/apireference/pysense.md rename to content/firmwareapi/pycom/expansionboards/pysense.md diff --git a/content/pytrackpysense/apireference/pysense2.md b/content/firmwareapi/pycom/expansionboards/pysense2.md similarity index 100% rename from content/pytrackpysense/apireference/pysense2.md rename to content/firmwareapi/pycom/expansionboards/pysense2.md diff --git a/content/pytrackpysense/apireference/pytrack.md b/content/firmwareapi/pycom/expansionboards/pytrack.md similarity index 100% rename from content/pytrackpysense/apireference/pytrack.md rename to content/firmwareapi/pycom/expansionboards/pytrack.md diff --git a/content/pytrackpysense/apireference/pytrack2.md b/content/firmwareapi/pycom/expansionboards/pytrack2.md similarity index 100% rename from content/pytrackpysense/apireference/pytrack2.md rename to content/firmwareapi/pycom/expansionboards/pytrack2.md diff --git a/content/pytrackpysense/apireference/sleep.md b/content/firmwareapi/pycom/expansionboards/sleep.md similarity index 100% rename from content/pytrackpysense/apireference/sleep.md rename to content/firmwareapi/pycom/expansionboards/sleep.md diff --git a/content/gettingstarted/_index.md b/content/gettingstarted/_index.md index e5f472f..5a3c900 100644 --- a/content/gettingstarted/_index.md +++ b/content/gettingstarted/_index.md @@ -1,35 +1,152 @@ --- -title: "" +title: "Getting Started" aliases: - gettingstarted/introduction.html - gettingstarted/introduction.md - chapter/gettingstarted - getting-started - - gettingstarted/introduction + - gettingstarted/gettingstarted - chapter/gettingstarted/introduction disable_breadcrumbs: true --- -So, you've decided to order a Pycom development module. Firstly we would like to congratulate you in making an excellent decision. If you haven't yet placed your order we highly recommend you check out the [products](../products) page before you place your order to ensure you know which accessories you might require. +Welcome to the getting started guide for your device! +In the following guide, we will explain the basic process to get started using your Pycom products. -![](/gitbook/assets/getting_started%20%281%29.png) +1. [Setting up the hardware](#step-1-setting-up-the-hardware) +2. [Setting up your computer](#step-2-setting-up-your-computer) +3. [Programming the module](#step-3-programming-your-module) -## [Step 1: Setting up the hardware](connection/) -In the first part of this getting started guide, we will take you through setting up your device. Firstly we will cover how to connect the module to your computer either via USB or WiFi. Secondly we will explain how to connect various accessories such as antennas or SIM cards to your module. + -## [Step 2: Setting up your computer](installation/) +# Step 1: Setting up the hardware -Now that your module is successfully connected, you will need to install some software on your computer to interface with it. The second part of this guide will guide you through installing drivers; performing firmware updates for your module/accessories to ensure you have the most stable and feature packed version; and how to setup the software use to program the device. +Congratulations on your Pycom module! In the first part of this getting started guide, we will take you through setting up your device. Firstly we will cover how to connect the module to your computer via USB. -## [Step 3: Using your module](programming/) +#### Connect your board to your computer through USB -Now that you have a connected module and all the required software installed it is time to begin programming your device. This part of the guide will get you started with a basic example and point you in the right direction for getting your device connected to your chosen network. +This step works the same for all our development boards and expansion boards. Insert your development board (Lopy, Wipy, etc.) into the expansion board (Pytrack, Pysense, etc.) with the reset button and RGB LED above the USB connector like shown below.Connect an USB cable to the USB port and your computer. Now, you can talk to your device through USB, but we still need some software to upload your first program! -## [Step 4: Connecting to a network](registration/) +![](/gitbook/assets/expansion_board_3_lopy4.png) -Now that you familiar with programming your device you will no doubt be keen to get it connected to one of the advertised wireless networks. This usually requires some registration. This step will detail how to get registered and connected to various wireless networks. +>Note: If you do not have an expansion board, you are able to use a [USB-Serial converter](/gettinstarted/programming/usbserial/) or [WiFi](/gettingstarted/programming/ftp/) to connect. + +# Step 2: Setting up your computer + +Now that your module is successfully connected, you will need to install some software on your computer to interface with it. For this, we use Pymakr, a plugin for both Visual Studio Code or Atom IDE. Through one of the environments, we can connect to the board and talk python! Follow the link below for the installation instructions: + +- [Atom](/pymakr/software/atom/) + +- [VS Code](/pymakr/software/vscode/) + +# Step 3: Programming your module + +Now that you have a connected module and all the required software installed it is time to begin programming your device! + +In this first example, we will make the on-board RGB LED flash different colors. +### Creating a project in Pymakr + +1. Firstly you will need to create a new, empty, directory on your computer. + + For this example we will create one called `RGB-Blink`. + +2. Next you will need to open either Atom or Visual Studio Code depending on + + which you setup previously. + +3. Once the text editor has loaded you will need to click `File` > `Open`, and open the directory you created in step 1 {{% hint style="info" %}} -You can navigate through this guide using the arrow buttons at the bottom of the page. +If you are using Atom, it is important to check at this point that Atom has successfully identified the project. The name of the directory you created in step 1 (`RGB-Blink` in this case) should be shown in the Pymakr pane like so: + +![](/gitbook/assets/atom_project.png) + +If this is not the case you can press `alt-ctrl-r` on Windows/Linux or `ctrl-alt-cmd-l` on macOS, in order to reload Atom and fix the issue. {{% /hint %}} + +4. Now that you have created a poject, we need to add some files. A standard MicroPython project will have a `lib` folder for additional libraries, and two python files: `main.py` and `boot.py`. + + * `main.py` This script runs directly after `boot.py` and should contain the main code you wish to run on your device. + + * `boot.py` This is the first script that runs on your module when it turns on. This is often used to connect a module to a network without cluttering up the `main.py` file. As a beginner you generally do not need to use a `boot.py`. + + * It is often a good idea to split out re-usable code into libraries. If you want to create or use libraries created by others, you will need to create a `lib` directory and put the library files in this. It is important that you put `.py` files directly into `lib` rather than creating a directory tree. By default MicroPython will not detect any libraries within sub-directories. + +Your file structure should look something like this: +![]() + +### Controlling the on-board RGB LED + +Now that you have setup and configured your project, we can move on to programming your module. The first thing we will need to do is import some libraries in order to interact with the on-board LED. The Pycom firmware comes with a large amount of libraries for standard functionality built-in. You can find out more about these in the [API documentation](/firmwareapi/introduction). For this example you will need to open the `main.py` file and add the following code: + +```python +import pycom +import time +``` + +This will import two libraries, `Pycom` which is responsible for Pycom specific features, such as the on-board LED and `time` which is a standard library used timing and delays. + +You may have noticed that when you power up your Pycom module, the on-board LED blinks blue on a regular basis. This "heartbeat" is used as a way of know that your module has powered up and started correctly. Before we can change the colour of this LED we need to disable this heart beat. Below your imports you will need to add the following: + + +```python +pycom.heartbeat(False) +``` + + +Now it's time to test your code. On the Pymakr pane/bottom of the window you will see a `run` button. (If you haven't connected to your device yet, you will need to do that first). When you click the run button, the code in the currently open file will be executed on the device, but it won't copy it to the device. After running this code, you should see that that on-board LED stops blinking blue. + +Now that we can confirm the device is connected and Pymakr is able to run code on it, we can complete our script to blink the LED like so: + +```python +import pycom +import time + +pycom.heartbeat(False) + +while True: + #colors in hexadecimal (0xRRGGBB) + pycom.rgbled(0xFF0000) # Red + time.sleep(1) + pycom.rgbled(0x00FF00) # Green + time.sleep(1) + pycom.rgbled(0x0000FF) # Blue + time.sleep(1) +``` + +Once you run the above script, it will run forever. You will notice this prevents you from accessing the interactive REPL on the device (You cannot see the `>>>` prompt). In order to stop the script, click onto the Pymakr terminal, and press `ctrl-c` on your keyboard. This should stop the script running and return you to the interactive REPL. + +Great work, the RGB-LED on your device should now blink in red, green and blue + +### Uploading to your module + +In the previous section we got code running on on your Pycom module using the `run` feature of Pymakr. This is useful for quick testing but has a couple of drawbacks. Firstly the code does not remain on the device permanently. If you reboot the device, it will no longer be running your code. Secondly, it will only work if you are using libraries built into the firmware. If you need any extra libraries, these need to be copied to the device first. This is where the `upload` feature comes in. If instead of `run` you click `upload`, Pymakr will upload all the files in the project (so long as their type is in the `sync_file_types` setting for your project). These then persist on your device even between reboots, and allows you to use libraries from the `lib` folder in your project. + + +If you need to remove files from your device you can use the following commands: + +```python +import os +os.fsformat('/flash') +``` + +# Step 4: Further reading +Now that we got the basic example running, you can continue with the links below. + +* [More examples](/tutorials/) + +* [Documentation](/firmwareapi/) + +* [Get started using the FTP and Telnet Server](/gettingstarted/programming/ftp/) + +* [Connect using Pybytes](/pybytes/gettingstarted/) + +* [Registering with a network](/gettingstarted/network/) + +* [Updating the firmware of your device](/firmwareupdate/) + + + \ No newline at end of file diff --git a/content/gettingstarted/hardware/_index.md b/content/gettingstarted/hardware/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/gettingstarted/installation/README.md b/content/gettingstarted/installation/README.md deleted file mode 100644 index 6a51ff0..0000000 --- a/content/gettingstarted/installation/README.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Software" -aliases: - - chapter/gettingstarted/installation/installingsoftware ---- -To get you up and running, Pycom provides a suite of tools to assist with developing and programming your Pycom Devices: - -1. [**Drivers:**](drivers) If you are using Microsoft Windows, you might be required to install drivers for our products to function correctly. -2. [**Pycom firmware update utility:**](firmwaretool) This tool automates the process of upgrading the firmware of your Pycom device. It is important that you use this tool before you attempt to use your device. Not only to ensure you have the most stable and feature packed firmware, but also to ensure all the functionality of your device is enable. E.g. this tool also activates your two year free sigfox connectivity. -3. [**Development Environment:**](pymakr) Pymakr is a plug-in for Atom and Visual Studio Code developed by Pycom to make development for Pycom modules super easy. It allows you to use your favourite text editor while simplifying the process of uploading code to the device. - diff --git a/content/gettingstarted/installation/_index.md b/content/gettingstarted/installation/_index.md deleted file mode 100644 index 0f9a80c..0000000 --- a/content/gettingstarted/installation/_index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Software setup" -aliases: - - chapter/gettingstarted/installation/installingsoftware ---- - -To get you up and running, Pycom provides a suite of tools to assist with developing and programming your Pycom Devices: - -1. [**Drivers:**](drivers) If you are using Microsoft Windows, you might be required to install drivers for our products to function correctly. -2. [**Pycom firmware update utility:**](firmwaretool) This tool automates the process of upgrading the firmware of your Pycom device. It is important that you use this tool before you attempt to use your device. Not only to ensure you have the most stable and feature packed firmware, but also to ensure all the functionality of your device is enable. E.g. this tool also activates your two year free sigfox connectivity. -3. [**Development Environment:**](pymakr) Pymakr is a plug-in for Atom and Visual Studio Code developed by Pycom to make development for Pycom modules super easy. It allows you to use your favourite text editor while simplifying the process of uploading code to the device. diff --git a/content/gettingstarted/installation/firmwaretool.md b/content/gettingstarted/installation/firmwaretool.md deleted file mode 100644 index ee7e785..0000000 --- a/content/gettingstarted/installation/firmwaretool.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Updating Firmware" -aliases: - - gettingstarted/installation/firmwaretool.html - - gettingstarted/installation/firmwaretool.md - - chapter/gettingstarted/installation/firmwaretool ---- - -We strongly recommend you to upgrade your firmware to the latest version as we are constantly making improvements and adding new features to the devices. - -Here are the download links to the update tool. Please download the appropriate one for your OS and follow the instructions on the screen. - -* [Windows](https://software.pycom.io/findupgrade?product=pycom-firmware-updater&type=all&platform=win32&redirect=true) -* [macOS](https://software.pycom.io/findupgrade?product=pycom-firmware-updater&type=all&platform=macos&redirect=true) (10.11 or Higher) -* [Linux](https://software.pycom.io/findupgrade?product=pycom-firmware-updater&type=all&platform=unix&redirect=true) (requires `dialog` and `python-serial` package) - -{{% hint style="info" %}} -Previous versions of firmware are available for download [**here**](/advance/downgrade). -{{% /hint %}} - -## Updating Device Firmware - -The basic firmware upgrade procedure can be found below, please follow these steps carefully: - -After you're done with upgrading, you can use the Pymakr Plugins to upload and run programs in your device. - - -### Expansion Board 3.0 - -When using a Pysense/Pytrack/Pyscan/Expansion Board 3.0 to update your module you are not required to make a connection between "G23" and "GND", the Pysense/Pytrack/Pyscan/Expansion Board 3.0 will do this automatically. - -1. Before connecting your module to a Pysense/Pytrack board, you should update the firmware on the Pysense/Pytrack. Instructions on how to do this can be found [here](/pytrackpysense/installation/firmware). -2. Disconnect your device from your computer -3. Insert module into Expansion Board -4. Reconnect the board via USB to your computer -5. Run the Firmware Upgrade tool - -![](/gitbook/assets/firmware-update-2.png) - -6. Disconnect the USB cable from the board and reconnect it, your device is now ready to use - -### Expansion Board 2.0 - -1. Disconnect your device from your computer -2. Insert module into the Expansion Board -3. Connect a jumper cable or wire between `G23` and `GND` -4. Reconnect the board via USB to your computer, this puts the device in ‘firmware update mode'. -5. Run the Firmware Upgrade tool - -![](/gitbook/assets/firmware-update.png) - -6. Remove the `G23` to `GND` jumper cable/wire - -7. Reboot the device (button or power off then on), your device is now ready to use - -If you are having any issues, make sure the **TX and RX jumpers** are present on your Expansion Board, as the jumpers sometimes come loose in the box during transport. Without these jumpers, the updater will fail. - - -After you're done with upgrading, you can use the Pymakr Plugins to upload and run programs in your device. diff --git a/content/gettingstarted/installation/pymakr.md b/content/gettingstarted/installation/pymakr.md deleted file mode 100644 index e9f21a1..0000000 --- a/content/gettingstarted/installation/pymakr.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Pymakr" -aliases: - - gettingstarted/installation/pymakr.html - - gettingstarted/installation/pymakr.md - - chapter/gettingstarted/installation/pymakr ---- - -![](/gitbook/assets/pymakr-logo-1%20%281%29.png) - -## Pymakr Plugins - -To make it as easy as possible Pycom has developed a plugin for two popular text editors, called Pymakr. These plugins have been built and are available for the following platforms: - -- {{% refname "/pymakr/installation/atom" %}} - -- {{% refname "/pymakr/installation/vscode" %}} diff --git a/content/gettingstarted/programming/README.md b/content/gettingstarted/programming/README.md deleted file mode 100644 index 6d0c858..0000000 --- a/content/gettingstarted/programming/README.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Programming the modules" -aliases: - - chapter/gettingstarted/programming ---- - -Now that you have connected and updated your pycom module and installed all the required software on your computer, we can begin programming your Pycom module. - -If this is your first time using a Pycom module we highly recommend you read through the following pages: - -* [**Introduction to MicroPython:**](micropython) This page will explain what Micropython is and its relation to Python. -* [**MicroPython Examples:**](examples) We also recommend you browse these short MicroPython examples to familiarise yourself with its syntax. This is not meant as a comprehensive guide to MicroPython programming but rather a reference to those who already know programming. If you are new to python, or programming all together, we highly recommend searching the internet for Python tutorials. There are many very good tutorials available for free and the skills you learn will be easily transferable to our platform. -* [**Your first Pymakr project:**](first-project) Once you understand what MicroPython is, this guide will take you through setting up your first Pymakr project to blink the on-board RGB LED. This guide will explain the structure of a MicroPython project as well as how to upload it to your module. - -Once you are familiar with MicroPython and Pymakr, the recommended way of uploading code to your module, you can explore the pages below. These will discuss in greater detail the various mechanisms for running code on your device as well as how to recover it if something goes wrong. - -* [**REPL:**](repl/) The REPL (Read Evaluate Print Loop) is an interactive terminal that allows you to type in and test your code directly on the device, just like interactive python interpreter. It can be accessed via [UART](repl/serial) or [Telnet](repl/telnet). This is accessed easiest by using Pymakr but if you wish to use other tools, this page will explain how. -* [**FTP:**](ftp) All Pycom modules start up with a WiFi access point enabled, and a simple FTP server running on it. Once connected to the WiFi network, you can use FTP to transfer files over to your device wirelessly. This can be very useful if you do not have physical access to your device. -* [**Safe Boot:**](safeboot) It is possible that some code you upload to your module will prevent you accessing the REPL or FTP server, preventing you from updating your scripts. This guide will detail how to safe boot your module and how to remove the offending scripts from it. - diff --git a/content/gettingstarted/programming/_index.md b/content/gettingstarted/programming/_index.md index 7df6c81..e69de29 100644 --- a/content/gettingstarted/programming/_index.md +++ b/content/gettingstarted/programming/_index.md @@ -1,19 +0,0 @@ ---- -title: "Programming the modules" -aliases: ---- - -Now that you have connected and updated your pycom module and installed all the required software on your computer, we can begin programming your Pycom module. - -If this is your first time using a Pycom module we highly recommend you read through the following pages: - -* [**Introduction to MicroPython:**](micropython) This page will explain what Micropython is and its relation to Python. -* [**MicroPython Examples:**](examples) We also recommend you browse these short MicroPython examples to familiarise yourself with its syntax. This is not meant as a comprehensive guide to MicroPython programming but rather a reference to those who already know programming. If you are new to python, or programming all together, we highly recommend searching the internet for Python tutorials. There are many very good tutorials available for free and the skills you learn will be easily transferable to our platform. -* [**Your first Pymakr project:**](first-project) Once you understand what MicroPython is, this guide will take you through setting up your first Pymakr project to blink the on-board RGB LED. This guide will explain the structure of a MicroPython project as well as how to upload it to your module. - -Once you are familiar with MicroPython and Pymakr, the recommended way of uploading code to your module, you can explore the pages below. These will discuss in greater detail the various mechanisms for running code on your device as well as how to recover it if something goes wrong. - -* [**REPL:**](repl/) The REPL (Read Evaluate Print Loop) is an interactive terminal that allows you to type in and test your code directly on the device, just like interactive python interpreter. It can be accessed via [UART](repl/serial) or [Telnet](repl/telnet). This is accessed easiest by using Pymakr but if you wish to use other tools, this page will explain how. -* [**FTP:**](ftp) All Pycom modules start up with a WiFi access point enabled, and a simple FTP server running on it. Once connected to the WiFi network, you can use FTP to transfer files over to your device wirelessly. This can be very useful if you do not have physical access to your device. -* [**Safe Boot:**](safeboot) It is possible that some code you upload to your module will prevent you accessing the REPL or FTP server, preventing you from updating your scripts. This guide will detail how to safe boot your module and how to remove the offending scripts from it. - diff --git a/content/gettingstarted/programming/first-project.md b/content/gettingstarted/programming/first-project.md deleted file mode 100644 index 5b40ad6..0000000 --- a/content/gettingstarted/programming/first-project.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: "Your first Pymakr project" -aliases: - - gettingstarted/programming/first-project.html - - gettingstarted/programming/first-project.md - - chapter/gettingstarted/programming/first-project ---- - -This guide will take you through how to setup your first project with Pymakr and make the on-board RGB LED flash various colours. - -## Creating a project in Pymakr - -1. Firstly you will need to create a new, empty, directory on your computer. - - For this example we will create one called `RGB-Blink`. - -2. Next you will need to open either Atom or Visual Studio Code depending on - - which you setup previously. - -3. Once the text editor has loaded you will need to click `File` > `Open`, and open the directory you created in step 1 - -{{% hint style="info" %}} -If you are using Atom, it is important to check at this point that Atom has successfully identified the project. The name of the directory you created in step 1 (`RGB-Blink` in this case) should be shown in the Pymakr pane like so: - -![](/gitbook/assets/atom_project.png) - -If this is not the case you can press `alt-ctrl-r` on Windows/Linux or `ctrl-alt-cmd-l` on macOS, in order to reload Atom and fix the issue. -{{% /hint %}} - -4. Now that you have a project created, we need to add some files to it. A standard MicroPython project has the following structure: - -```text -RGB-Blink -|-lib -| |- some_library.py -|-boot.py -|-main.py -``` - -* `boot.py` This is the first script that runs on your module when it - - turns on. This is often used to connect a module to a WiFi network so that - - Telnet and FTP can be used without connecting to the WiFi AP created by the - - module and not cluttering up the `main.py` file. As a beginner you do not - - need to use a `boot.py`. - -* `main.py` This script runs directly after `boot.py` and should contain - - the main code you wish to run on your device. - -* `lib` It is often a good idea to split out re-usable code into libraries. - - If you want to create or use libraries created by others, you will need to - - create a `lib` directory and put the library files in this. It is important - - that you put `.py` files directly into `lib` rather than creating a directory - - tree. By default MicroPython will not detect any libraries within - - sub-directories. - -For this example, you will just need to create a `main.py` file. - -Now that the project structure is setup, you may wish to configure project specific settings for Pymakr e.g. Which serial port to use. On Atom you need to click the `^` button on the Pymakr pane, then click `Project Settings`. On Visual Studio Code you need to click the `All commands` button on the bottom of the windows, then click `Pymakr > Project Settings`. This creates a file called `pymakr.conf` inside your project and populates it with default settings copied over from your global settings. A detailed explanation of these settings can be found [here](/pymakr/settings). - -## Controlling the on-board LED - -Now that you have setup and configured your project, we can move on to programming your module. The first thing we will need to do is import some libraries in order to interact with the on-board LED. The Pycom firmware comes with a large amount of libraries for standard functionality built-in. You can find out more about these in the [API documentation](/firmwareapi/introduction). For this example you will need to open the `main.py` file and add the following code: - -```python - -import pycom -import time -``` - -This will import two libraries, `Pycom` which is responsible for Pycom specific features, such as the on-board LED and `time` which is a standard library used timing and delays. - -You may have noticed that when you power up your Pycom module, the on-board LED blinks blue on a regular basis. This "heartbeat" is used as a way of know that your module has powered up and started correctly. Before we can change the colour of this LED we need to disable this heart beat. Below your imports you will need to add the following: - -```python - -pycom.heartbeat(False) -``` - -Now it's time to test your code. On the Pymakr pane/bottom of the window you will see a `run` button. (If you haven't connected to your device yet, you will need to do that first). When you click the run button, the code in the currently open file will be executed on the device, but it won't copy it to the device. After running this code, you should see that that on-board LED stops blinking blue. - -Now that we can confirm the device is connected and Pymakr is able to run code on it, we can complete our script to blink the LED like so: - -```python - -import pycom -import time - -pycom.heartbeat(False) - -while True: - pycom.rgbled(0xFF0000) # Red - time.sleep(1) - pycom.rgbled(0x00FF00) # Green - time.sleep(1) - pycom.rgbled(0x0000FF) # Blue - time.sleep(1) -``` - -Once you run the above script, it will run forever. You will notice this prevents you from accessing the interactive REPL on the device (You cannot see the `>>>` prompt). In order to stop the script, click onto the Pymakr terminal, and press `ctrl-c` on your keyboard. This should stop the script running and return you to the interactive REPL. - -## Uploading to your module - -In the previous section we got code running on on your Pycom module using the `run` feature of Pymakr. This is useful for quick testing but has a couple of drawbacks. Firstly the code does not remain on the device permanently. If you reboot the device, it will no longer be running your code. Secondly, it will only work if you are using libraries built into the firmware. If you need any extra libraries, these need to be copied to the device first. This is where the `upload` feature comes in. If instead of `run` you click `upload`, Pymakr will upload all the files in the project (so long as their type is in the `sync_file_types` setting for your project). These then persist on your device even between reboots, and allows you to use libraries from the `lib` folder in your project. - -If you need to remove files from your device you have two options, either connect via FTP and manage your files that way or format the device's internal flash like so: - -```python - -import os -os.fsformat('/flash') -``` diff --git a/content/gettingstarted/programming/ftp.md b/content/gettingstarted/programming/ftp.md index bb589d5..3fac669 100644 --- a/content/gettingstarted/programming/ftp.md +++ b/content/gettingstarted/programming/ftp.md @@ -1,5 +1,5 @@ --- -title: "FTP" +title: "FTP & Telnet" aliases: - gettingstarted/programming/ftp.html - gettingstarted/programming/ftp.md @@ -8,13 +8,23 @@ aliases: There is a small internal file system accessible with each Pycom device, called `/flash`. This is stored within the external serial flash memory. If a microSD card is also connected and mounted, it will be available as well. When the device starts up, it will always boot from the `boot.py` located in the `/flash` file system. +The first time(s), your device will create an Access Point (AP) you can connect to using your computer's WiFi. + +By default, the device will create a WiFi access point with the following credentials: +* SSID: `xxpy-wlan-####` +* Password: `www.pycom.io` + +>Note: This method of connection is not recommended for first time users. It is possible to lock yourself out of the device, requiring a USB connection. + +Once connected to this network you will be able to access the telnet and FTP servers running on the LoPy4. + The file system is accessible via the native FTP server running on each Pycom device. Open an FTP client and connect to: * url: `ftp://192.168.4.1` * username: `micro` * password: `python` -See [network.server](/firmwareapi/pycom/network/server) for information on how to change the defaults. The recommended clients are: +See [network.server](/firmwareapi/pycom/network/server/) for information on how to change the defaults. The recommended clients are: * macOS/Linux: default FTP client * Windows: Filezilla and FireFTP diff --git a/content/gettingstarted/programming/repl/README.md b/content/gettingstarted/programming/repl/README.md deleted file mode 100644 index 41280fe..0000000 --- a/content/gettingstarted/programming/repl/README.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "REPL" -aliases: - - chapter/gettingstarted/programming/repl ---- - -REPL stands for Read Evaluate Print Loop, and is the name given to the interactive MicroPython prompt that is accessible on the Pycom devices. Using the REPL is by far the easiest way to test out Python code and run commands. You can use the REPL in addition to writing scripts in `main.py`. - -The following pages will explain how to use the REPL with both Serial USB and Telnet connections. - -The REPL includes the following features: - -* Input history: use arrow up and arrow down to scroll through the history -* Tab completion: press tab to auto-complete variables or module names -* Halt any executing code: with `Ctrl-C` -* Copy/paste code or output: `Ctrl-C` and `Ctrl-V` - -{{% hint style="info" %}} -There are a number of useful shortcuts for interacting with the MicroPython REPL. See below for the key combinations; - -* `Ctrl-A` on a blank line will enter raw REPL mode. This is similar to permanent paste mode, except that characters are not echoed back. -* `Ctrl-B` on a blank like goes to normal REPL mode. -* `Ctrl-C` cancels any input, or interrupts the currently running code. -* `Ctrl-D` on a blank line will do a soft reset. -* `Ctrl-E` enters ‘paste mode' that allows you to copy and paste chunks of text. Exit this mode using `Ctrl-D`. -* `Ctrl-F` performs a "safe-boot" of the device that prevents `boot.py` and `main.py` from executing -{{% /hint %}} - diff --git a/content/gettingstarted/programming/repl/telnet.md b/content/gettingstarted/programming/repl/telnet.md deleted file mode 100644 index aac3f65..0000000 --- a/content/gettingstarted/programming/repl/telnet.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Telnet REPL" -aliases: - - gettingstarted/programming/repl/telnet.html - - gettingstarted/programming/repl/telnet.md - - chapter/gettingstarted/programming/repl/telnet ---- - -Pycom devices also support a connection via `telnet`, using the device's on board WiFi/WLAN. Connect to the device's WiFi Access Point (AP) and using the following credentials to connect to the AP. The WiFi `SSID` will appear upon powering on a Pycom Device for the first time (e.g. `lopy-`). To re-enable this feature at a later date, please see [network.WLAN](/firmwareapi/pycom/network/wlan). - -* password: `www.pycom.io` - -## Telnet Server - -Additionally, to use the MircoPython REPL over telnet, further authentication is required. The default credentials for the telnet server are: - -* username: `micro` -* password: `python` - -See [network.server](/firmwareapi/pycom/network/server) for info on how to change the default authentication. - -## All platforms - -By far the easiest way to access the Telnet REPL is via the our [Pymakr plug-in](/pymakr/installation/) for Atom and Visual Studio Code. This adds a pane to the bottom of the editors that allows you to directly access the REPL and any output from the device. Detailed instructions on how to setup Pymakr can be found [here](/pymakr/installation/). - -## macOS and Linux - -Once the host machine is connected to the Pycom device's Access Point, a telnet connection may be opened from a terminal instance. - -```bash -$ telnet 192.168.4.1 -``` - -Upon connection, the telnet program will prompt for the `username` and `password` in the section above. - -## Windows - -A terminal emulator is needed to open a telnet connection from Windows; the easiest option is to download the free program, [PuTTY](http://www.putty.org/). - -1. With PuTTY open, select telnet as connection type and leave the default port (`23`) -2. Next enter the IP address of the Pycom device (e.g. `192.168.4.1`) -3. Finally click `Open` - -{{% hint style="info" %}} -When using a Pycom device with a personal, home or office WiFi access point, the telnet connection may still be used. In this instance, the user will need to determine the Pycom device's local IP address and substitute this for `192.168.4.1`, referred to in the earlier sections. -{{% /hint %}} diff --git a/content/gettingstarted/programming/safeboot.md b/content/gettingstarted/programming/safeboot.md index 5d317f2..676c914 100644 --- a/content/gettingstarted/programming/safeboot.md +++ b/content/gettingstarted/programming/safeboot.md @@ -33,7 +33,6 @@ The selection made during safe boot is not persistent, therefore after the next If problems occur within the filesystem or you wish to factory reset your module to remove your code, run following code in the REPL: ```python - >>> import os >>> os.fsformat('/flash') ``` @@ -47,7 +46,6 @@ Be aware, resetting the flash filesystem will delete all files inside the intern Pycom devices support both soft and hard resets. A soft reset clears the state of the MicroPython virtual machine but leaves hardware peripherals unaffected. To do a soft reset, press `Ctrl+D` on the REPL or from within a script, run: ```python - >>> import sys >>> sys.exit() ``` @@ -55,7 +53,6 @@ Pycom devices support both soft and hard resets. A soft reset clears the state o A hard reset is the same as performing a power cycle to the device. In order to hard reset the device, press the `reset` switch or run: ```python - >>> import machine >>> machine.reset() ``` diff --git a/content/gettingstarted/programming/usbserial.md b/content/gettingstarted/programming/usbserial.md new file mode 100644 index 0000000..00b522e --- /dev/null +++ b/content/gettingstarted/programming/usbserial.md @@ -0,0 +1,17 @@ +--- +title: "USB Serial Converter" +aliases: + - gettingstarted/hardware/usbserial.html + - gettingstarted/hardware/usbserial.md + - chapter/gettingstarted/hardware/usbserial +--- +When you do not own an expansion board, it is possible to connect to your device using a USB to Serial adapter. +> Note: We do not recommend this setup for beginners. + +To connect to your device using a USB to Serial adapter, connect the following pins: + +![](/gitbook/assets/uart_lopy4.png) +>Note: Please ensure the signal and voltage level of your UART adapter does not exceed 3.3V. When possible, change the settings on your adapter. + +* Connect the `RX` and `TX` of your USB converter to the `TX` and `RX` of the device respectively. +* To put the device into bootloader mode to update the firmware, you will need to connect `P2` to `GND`. We recommend to connect a button for this. diff --git a/content/gettingstarted/software/_index.md b/content/gettingstarted/software/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/pymakr/installation/atom.md b/content/gettingstarted/software/atom.md similarity index 62% rename from content/pymakr/installation/atom.md rename to content/gettingstarted/software/atom.md index e298b4b..dd750f8 100644 --- a/content/pymakr/installation/atom.md +++ b/content/gettingstarted/software/atom.md @@ -6,9 +6,7 @@ aliases: - chapter/pymakr/installation/atom --- -For beginners, users getting started with MicroPython & Pycom as well as Atom text editor users, we recommend the **Pymakr Plugin for Atom**. This section will help you get started using the Atom Text Editor & Pymakr Plugin. - -Please follow these steps to install the [Pymakr Plugin](https://atom.io/packages/pymakr): +For beginners, users getting started with MicroPython & Pycom as well as Atom text editor users, we recommend the **Pymakr Plugin for Atom**. This section will help you get started using the Atom Text Editor & Pymakr Plugin.Please follow these steps to install the [Pymakr Plugin](https://atom.io/packages/pymakr): 1. [Download and install](https://atom.io) Atom. Ensure that you have Atom installed and open. @@ -46,23 +44,4 @@ After installing the Pymakr Plugin, you need to take a few seconds to configure These settings can also be applied on a per project basis by clicking `Settings` then `Project Settings`. This will open a JSON file which you can edit to enter your desired settings. -{{% hint style="info" %}} -This process is easiest with either a Pycom Expansion Board or a Pytrack/Pysense as the addresses are automatically selected. For external products such as FTDI USB Serial Cables, the serial address may need to be copied manually. Additionally, the reset button on the device may also need to be pressed before a connection message appears. -{{% /hint %}} - -## Connecting via Telnet - -After installing the Pymakr Plugin, a device may be connected via the telnet interface. Please see the following steps: - -1. Ensure that Pycom device is turned on -2. Connect the host computer to the WiFi Access Point named after your board (the SSID will be as follows e.g. `lopy-wlan-xxxx`, `wipy-wlan-xxxx`, etc.). The password is `www.pycom.io`. -3. Go to `Settings` > `Global Settings` - -![](/gitbook/assets/atom_global_settings.png) - -4. In `Devices Addresses (List)`, enter `192.168.4.1` as the address. - -![](/gitbook/assets/atom_device_list.png) - -4. The default username and password are `micro` and `python`, respectively. -5. Click `192.168.4.1` in the Devices List pane, Pymakr will now connect via telnet. +>This process is easiest with either a Pycom Expansion Board or a Pytrack/Pysense as the addresses are automatically selected. For external products such as FTDI USB Serial Cables, the serial address may need to be copied manually. Additionally, the reset button on the device may also need to be pressed before a connection message appears. diff --git a/content/gettingstarted/installation/drivers.md b/content/gettingstarted/software/drivers.md similarity index 86% rename from content/gettingstarted/installation/drivers.md rename to content/gettingstarted/software/drivers.md index 514c220..75db0e8 100644 --- a/content/gettingstarted/installation/drivers.md +++ b/content/gettingstarted/software/drivers.md @@ -31,7 +31,7 @@ First navigate open the Windows start menu and search/navigate to \`Device Manag ![](/gitbook/assets/win7-1.png) -Right click the device and select `Update Driver Software`. +Right click the device and select "Update Driver Software". ![](/gitbook/assets/win7-2%20%281%29.png) @@ -47,7 +47,7 @@ Specify the folder in which the drivers are contained. If you haven't extracted ![](/gitbook/assets/win7-5%20%281%29.png) -You may receive a warning, suggesting that Windows can't verify the publisher of this driver. Click `Install this driver software anyway` as this link points to our official driver. +You may receive a warning, suggesting that Windows can't verify the publisher of this driver. Click "Install this driver software anyway" as this link points to our official driver. ![](/gitbook/assets/win7-6%20%281%29.png) @@ -55,6 +55,6 @@ If the installation was successful, you should now see a window specifying that ![](/gitbook/assets/win7-7.png) -To confirm that the installation was correct, navigate back to the `Device Manager` and click the dropdown for other devices. The warning label should now be gone and Pytrack/Pysense should be installed. +To confirm that the installation was correct, navigate back to the Device Manager and click the dropdown for other devices. The warning label should now be gone and Pytrack/Pysense should be installed. ![](/gitbook/assets/win7-8.png) diff --git a/content/pymakr/installation/vscode.md b/content/gettingstarted/software/vscode.md similarity index 64% rename from content/pymakr/installation/vscode.md rename to content/gettingstarted/software/vscode.md index 6775327..8c45b9a 100644 --- a/content/pymakr/installation/vscode.md +++ b/content/gettingstarted/software/vscode.md @@ -6,9 +6,9 @@ aliases: - chapter/pymakr/installation/vscode --- -Pycom also supports Microsoft's Visual Studio Code IDE platform with the Pymakr Plugin. To download and install Visual Studio Code, navigate to [VS Code](https://code.visualstudio.com/). +Pycom supports Microsoft's Visual Studio Code IDE platform with the Pymakr Plugin. -You will also need NodeJS installed on your PC. Please download the latest LTS version available [from the NodeJS website.](https://nodejs.org/) +First [download and install Visual Studio Code](https://code.visualstudio.com/). You will also need NodeJS installed on your PC. Please download the latest LTS version available [from the NodeJS website.](https://nodejs.org/) Please follow these steps to install the [Pymakr VSCode Extension](https://marketplace.visualstudio.com/items?itemName=pycom.Pymakr): @@ -68,30 +68,4 @@ After installing the Pymakr Plugin, you need to take a few seconds to configure These settings can also be applied on a per project basis by clicking `All commands` then `Pymakr > Project Settings`. This will open a JSON file which you can edit to enter your desired settings for the currently open project. -{{% hint style="info" %}} -This process is easiest with either a Pycom Expansion Board or a Pytrack/Pysense as the addresses are automatically selected. For external products such as FTDI USB Serial Cables, the serial address may need to be copied manually. Additionally, the reset button on the device may also need to be pressed before a connection message appears. -{{% /hint %}} - -## Connecting via Telnet - -After installing the Pymakr Plugin, a device may be connected via the telnet interface. Please see the following steps: - -1. Ensure that Pycom device is turned on -2. Connect the host computer to the WiFi Access Point named after your board - - (the SSID will be as follows e.g. `lopy-wlan-xxxx`, `wipy-wlan-xxxx`, etc.). - - The password is `www.pycom.io`. - -3. Follow the steps as above in the "Connecting via Serial USB" section but - - enter `192.168.4.1` as the address. - -4. The default username and password are `micro` and `python`, - - respectively. - -5. Finally close the JSON file, click `All commands`, then `Pymakr > Connect`, - - Pymakr will now connect via telnet. - +>Note: This process is easiest with either a Pycom Expansion Board or a Pytrack/Pysense as the addresses are automatically selected. For external products such as FTDI USB Serial Cables, the serial address may need to be copied manually. Additionally, the reset button on the device may also need to be pressed before a connection message appears. \ No newline at end of file diff --git a/content/documents/license.md b/content/license.md similarity index 100% rename from content/documents/license.md rename to content/license.md diff --git a/content/products/_index.md b/content/products/_index.md new file mode 100644 index 0000000..af2950c --- /dev/null +++ b/content/products/_index.md @@ -0,0 +1,56 @@ +--- +title: "Pycom Products" +aliases: +disable_breadcrumbs: true +--- + +At Pycom, we manufacture and sell several different categories: + +* [Development Boards](#development-boards) +* [Expansion Boards](#expansion-boards) +* [OEM Modules](#oem-modules) +* [Accessories](#accessories) + +## Development boards + + +Below you will find tables of all Pycom products. These tables illustrate the functionality of our various products, their compatibility with each other, as well as what accessories are required to utilise certain functionality. + +| Module | WiFi | Bluetooth | LoRa | Sigfox | LTE CAT-M1NB-IoT | +| :--- | :---: | :---: | :---: | :---: | :---: | +| [WiPy 3.0](/datasheets/development/wipy3) | ✔ | ✔ | | | | +| [SiPy](/datasheets/development/sipy) | ✔ | ✔ | | ✔ | | +| [GPy](/datasheets/development/gpy) | ✔ | ✔ | | | ✔ | +| [LoPy](/datasheets/development/lopy) | ✔ | ✔ | ✔ | | | +| [LoPy4](/datasheets/development/lopy4) | ✔ | ✔ | ✔ | ✔ | | +| [FiPy](/datasheets/development/fipy) | ✔ | ✔ | ✔ | ✔ | ✔ | +| Antennas | [External WiFi/BT Antenna Kit](https://pycom.io/product/external-wifi-antenna/) | [External WiFi/BT Antenna Kit](https://pycom.io/product/external-wifi-antenna/) | [LoRa & Sigfox Antenna Kit](https://pycom.io/product/lora-antenna-kit/) | [LoRa & Sigfox Antenna Kit](https://pycom.io/product/lora-antenna-kit/) | [LTE-M Antenna Kit](https://pycom.io/product/lte-m-antenna-kit/) | + +## Expansion boards +| Name | Function | +| :--- | :--- | +| [Pygate](/datasheets/expansionboards/pygate/) | An 8-channel LoRa gateway | +| [Pysense](/datasheets/expansionboards/pysense/) | Sensor board | +| [Pysense 2.0 X](/datasheets/expansionboards/pysense2/) | Sensor header | +| [Pytrack](/datasheets/expansionboards/pytrack/) | GPS board| +| [Pytrack 2.0 X](/datasheets/expansionboards/pytrack2/) | GPS board with sensor header | +| [Expansionboard 3.0](/datasheets/expansionboards/expansion3/) | General purpose expansion board | + +## OEM Modules + +| OEM Module | [L01/W01 Reference Board](/datasheets/oem/l01_reference) | [Universal Reference Board](/datasheets/oem/universal_reference) | +| :--- | :---: | :---: | +| [W01](/datasheets/oem/w01) | ✔ | ✔ | +| [L01](/datasheets/oem/l01) | ✔ | ✔ | +| [L04](/datasheets/oem/l04) | | ✔ | +| [G01](/datasheets/oem/g01) | | ✔ | + + +## Accessories + +| Accessory | Expansionboard | Pygate | Pytrack / Pysense | Battery Size | +| :--- | :--- | :--- | :--- | :--- | +[Pycase](https://pycom.io/product/pycase-clear/) | ✔ | | | small | +[Pygate case](https://pycom.io/product/pygate-case/) | ✔ | ✔ | | tiny | +[Small IP67 Case](https://pycom.io/product/ip67-case-for-pysense-pytrack/) | | | ✔| 18650 | +[Universal IP76 Case](https://pycom.io/product/universal-ip67-case/) | ✔ | ✔ | ✔| 18650 | \ No newline at end of file diff --git a/content/pymakr-online/_index.md b/content/pymakr-online/_index.md deleted file mode 100644 index e13ccd0..0000000 --- a/content/pymakr-online/_index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Pymakr Online" -aliases: - - pymakr-online/introduction ---- - -![](/gitbook/assets/pymakr-online/pymakr-online.jpg) - -## What is Pymakr Online? - -Pymakr Online is an online IDE for your MicroPython projects. We brought our Pymakr Plugin for Atom and Visual Studio code into Pybytes as an IDE, so you won't necessarily need to have those code editors installed anymore in order to work with your Pycom devices. - -## What does Pymakr Online offer you? - -* Everything you would expect from a code editor: syntax highlighting, auto complete, multi tabs, file tree, search box etc. -* REPL terminal -* Import from multiple sources (blank/device/project/Github repository), export to a zip file/device/project -* Device activity indicator: track what's going between Pymakr Online and your device. - -## Let's get started! - -* [How to Open Pymakr Online](/pymakr-online/how-to-open) -* [Tools and features](/pymakr-online/toolsfeatures) - diff --git a/content/pymakr-online/how-to-open.md b/content/pymakr-online/how-to-open.md deleted file mode 100644 index ad95ad9..0000000 --- a/content/pymakr-online/how-to-open.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "How to Open Pymakr Online" -aliases: - - pymakr-online/how-to-open.html - - pymakr-online/how-to-open.md - - pymakr-online/how-to-open ---- - -## The two different ways of opening Pymakr Online - -Pymakr Online can be opened in two different ways: - -### 1. from the device page, which will open Pymakr Online linked to that device - -![](/gitbook/assets/pymakr-online/pymakr-online-device.jpg) - -### 2. from Pymakr Online initial page, which is accessible from the side bar menu. - -![](/gitbook/assets/pymakr-online/pymakr-online-sidebar.jpg) -![](/gitbook/assets/pymakr-online/pymakr-online-initial-page.jpg) - -*Pymakr Online initial page* - -## The differences between the two ways of opening Pymakr online - -### From the device page - -![](/gitbook/assets/pymakr-online/pymakr-linked.jpg) - -If you have opened Pymakr Online from a device page, you may notice: - -1. Device activity indicator. To track what's going on between the Pymakr Online and the linked device. -2. REPL terminal. -3. Save and upload current file. That will save that file on the cloud and upload it to your device. -4. Refresh hierarchy. That will request the device its hierarchy, in case the files structure has been changed. -5. Download file. That will request the file from the device, forcing the download of it. Warning: that will override your changes in case you haven't uploaded the file to the device. - -### From the Pymakr initial page - -![](/gitbook/assets/pymakr-online/pymakr-no-device.jpg) - -1. Save/export button. - -Since there's no device linked in this way of opening Pymakr Online, there are no device related actions here (download file, device activity indicator etc). Instead, you decide what you are going to do with your code: - -![](/gitbook/assets/pymakr-online/pymakr-export-modal.png) - -*Modal opened after clicking on Save/Export button* diff --git a/content/pymakr-online/toolsfeatures.md b/content/pymakr-online/toolsfeatures.md deleted file mode 100644 index 27c963e..0000000 --- a/content/pymakr-online/toolsfeatures.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: "Tools/Features" -aliases: - - pymakr/toolsfeatures.html - - pymakr/toolsfeatures.md - - chapter/pymakr/toolsfeatures ---- - -There are two different ways of opening Pymakr Online. Each way has some differences on the features and purposes. Read more at [How to Open Pymakr Online](/pymakr-online/how-to-open) - -# Pymakr Online linked to a device - -If you open Pymakr Online from a device page, Pymakr will be linked to that device. - -_**Note: Your device needs to be online in order to be reachable by Pymakr Online**_ - -## Terminal - -Just like Pymakr Plugin, Pymakr Online also has a REPL (Read Evaluate Print Line) terminal. The REPL allows you to run code on your device, line by line. To begin coding, open Pymakr from a device (device's page > pymakr tab > open Pymakr button), go to the terminal and start typing your code. - - -## Download a file - -When Pymakr is loaded, the IDE will request the device its hierarchy (the folder structure). If you open a file that has never been opened in Pymakr Online before, that file's content will be downloaded and saved on the cloud, so the next time you open that same file, the content download won't be necessary, unless you want to. Maybe you changed that file's content in somewhere else and want to force a download to get the current content which is in the device. - -To download the file from the linked device, click on the download icon next to the file name at file tree. - -![](/gitbook/assets/pymakr-online/pymakr-download-icon.jpg) - -That will download the file content from the device and save it into the cloud. - -![](/gitbook/assets/pymakr-online/last-update-one-day-ago.jpg) - -*In this case, that file has been updated yesterday.* - -![](/gitbook/assets/pymakr-online/last-update-few-seconds-ago.jpg) - -*After downloading the main.py content from the device.* - -## Upload a file - -After making any changes in a file, you will be able to upload it into your device by clicking on "Save and Upload" link. - -![](/gitbook/assets/pymakr-online/save-upload.jpg) - - -_**Note: That will upload only the current file.**_ - -After downloading or uploading a file, its content is stored on the cloud. - -## Update Hierarchy - -If you want to refresh your device's hierarchy in Pymakr, you should click on Refresh Hierarchy icon next to your device name. That will request the hierarchy from the device, creating or deleting folders according to your device's file hierarchy. - -![](/gitbook/assets/pymakr-online/pymakr-hierarchy.jpg) - - -# Pymakr Online not linked to a device - -Pymakr Online can be opened without being linked to a device, from [Pymakr Online](https://www.pybytes.pycom.io/pymakr) initial page. - -Since there's no device linked in this way of opening Pymakr Online, there are no device related actions here (download file, device activity indicator etc). Instead, you decide what you are going to do with your code: upload to a project, download a zip file or upload to a device. - -Before exporting your project, you first need to import a project into Pymakr or start with a blank project: - -## Import code into Pymakr Online - -![](/gitbook/assets/pymakr-online/pymakr-online-initial-page.jpg) - -*Pymakr Online initial page* - -### 1. Blank project - -This will open Pymakr Online with the essential files of MicroPython project (main.py and boot.py). - -### 2. Project/Release - -1. After clicking on Project button, you will see this page, where you must choose one project: - -![](/gitbook/assets/pymakr-online/pymakr-projects.jpg) - -2. And finally, choose the release you want to work with. That will open Pymakr with the files of the selected release. - -![](/gitbook/assets/pymakr-online/pymakr-releases.jpg) - -### 3. Device - -At this section you can import the code from a device and work with it in Pymakr Online. Note this won't have any connection to any device once it's loaded. - -1. Choose the device you want to work with: - -![](/gitbook/assets/pymakr-online/pymakr-devices.jpg) - -2. If you already worked with that device in Pymakr Online, you can use the latest saved code on the cloud, so the device doesn't need to be online, or even turned on. That will instantly open Pymakr with that code. - - -![](/gitbook/assets/pymakr-online/pymakr-device-import-1.jpg) - - -If you want the current files from the device and you are not sure if the saved code on the cloud is up to date, you can download those files from the device by clicking on "Request files from device" button. That will bring you to another modal, which will show you the download progress. - -![](/gitbook/assets/pymakr-online/pymakr-device-import-2.jpg) - -Once the download has been completed, you can now work with the device's files in Pymakr Online: - -![](/gitbook/assets/pymakr-online/pymakr-device-import-3.jpg)! - - -### 4. Zip file - -This feature allows you to upload a zip file of your project into Pymakr Online and start to work with it from there. The zip file can not be bigger than 4MB. - -### 5. Github Repository - -1. Firstly, type the repository name you want to import your code from and press enter: - -![](/gitbook/assets/pymakr-online/pymakr-github-import-1.jpg)! - -2. Then select your repository by clicking on it. - -![](/gitbook/assets/pymakr-online/pymakr-github-import-2.jpg)! - -3. Select the branch - -![](/gitbook/assets/pymakr-online/pymakr-github-import-3.jpg)! - -4. Wait for a few seconds until the download of the files from the selected branch is completed and then you can start working on Pymakr with those files! - -![](/gitbook/assets/pymakr-online/pymakr-github-import-4.jpg)! - -_**Note: There's a usage limit of the Github API. You won't be able to search a lot and select different repositories in the same day. Use this feature with moderation.**_ - - -## Save/Export - -To export your project, ensure that you have opened Pymakr Online from the Pymakr initial page (accessible from the sidebar menu) and not from the device page. For any option here, the size limit is 4MB. - -1. Click on Save/Export button. - -![](/gitbook/assets/pymakr-online/pymakr-export.jpg) - -2. Choose an option: - -![](/gitbook/assets/pymakr-online/pymakr-export-modal.png) - -* Upload to a project will be released soon. - -* Create and Download a zip file from all of the files from your project. - -![](/gitbook/assets/pymakr-online/pymakr-download-zip.jpg) - -* You can also export to a device. This modal will open after clicking on "UPLOAD TO DEVICE" button. Note that your device needs to be online in order to receive the files from Pymakr Online. - -![](/gitbook/assets/pymakr-online/pymakr-devices-list.jpg) - -* Wait while Pymakr Online is uploading your project to the selected device. -![](/gitbook/assets/pymakr-online/pymakr-upload.jpg) - -* Once the upload is done, your device will restart and load the new code. -![](/gitbook/assets/pymakr-online/pymakr-download-completed.jpg) - - -# Create a new file or folder - -To create a file or folder in Pymakr Online, disregarding of how you opened it, you just need to right click on the folder you want to create the file or folder in. - -![](/gitbook/assets/pymakr-online/pymakr-create-folder.jpg) - -In this case, I'm creating a folder called 'new-folder' under the project root. For that, I right clicked on the project name. - -Now type the name of the file/folder: -![](/gitbook/assets/pymakr-online/pymakr-create-folder-1.jpg) - -_**Note: Pymakr Online only supports the formats .py .txt .log .json .html .js .cet .crt**_ -_**A folder name can not contain dots (.)**_ - -If you want to delete a folder or file, right click on the item to be deleted and then click on "Delete file" or "Delete folder". - -![](/gitbook/assets/pymakr-online/pymakr-create-folder-2.jpg) - - - - - - diff --git a/content/pymakr/installation/_index.md b/content/pymakr/installation/_index.md deleted file mode 100644 index 0fd2470..0000000 --- a/content/pymakr/installation/_index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Installation" -aliases: -disable_breadcrumbs: true ---- - -![](/gitbook/assets/pymakr-logo-1.png) - -## Pymakr Plugins - -To make it as easy as possible Pycom has developed a plugin for two popular text editors, called Pymakr. These plugins have been built and are available for the following platforms: - -- {{% refname "atom.md" %}} - -- {{% refname "vscode.md" %}} diff --git a/content/pymakr/toolsfeatures.md b/content/pymakr/toolsfeatures.md deleted file mode 100644 index 3a2360b..0000000 --- a/content/pymakr/toolsfeatures.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: "Tools/Features" -aliases: - - pymakr/toolsfeatures.html - - pymakr/toolsfeatures.md - - chapter/pymakr/toolsfeatures ---- - -## Console (REPL) - -MicroPython has an interactive code tool known as the REPL (Read Evaluate Print Line). The REPL allows you to run code on your device, line by line. To begin coding, go to the Pymakr Plugin Console and start typing your code. Start by making the LED change colour. - -```python - -import pycom # we need this module to control the LED - -pycom.heartbeat(False) # disable the blue blinking -pycom.rgbled(0x00ff00) # make the LED light up green in colour -``` - -You can change the colour by adjusting the hex RGB value. - -```python - -pycom.rgbled(0xff0000) # now make the LED light up red in colour -``` - -The console can be used to run any python code, also functions or loops. - -Use `print()` to output contents of variables to the console for you to read. Returned values from functions will also be displayed if they are not caught in a variable. This will not happen for code running from the main or boot files. Here you need to use `print()` to output to the console. - -{{% hint style="info" %}} -Note that after writing or pasting any indented code like a function or a while loop, the user will have to press enter up to three times to tell MicroPython the code is to be closed (this is standard MicroPython & Python behaviour). - -Also be aware that code written into the REPL is not saved after the device is powered off/on again. -{{% /hint %}} - -## Run - -To test code on a device, create a new `.py` file or open an existing one, type the desired code, save the file and then press the `Run` button. This will run the code directly onto the Pycom board and output the results of the script to the REPL. - -{{% hint style="info" %}} -Changes made to files won't be automatically uploaded to the board upon restarting or exiting the `Run` feature, as the Pycom board will not store this code. In order to push the code permanently to a device, use the `Upload` feature. -{{% /hint %}} - -## Projects - -Pymakr Plugin supports user projects, allowing for pre-configured settings such as default serial address/credentials, files to be ignored and folders to sync. - -## pymakr.conf - -Pymakr Plugin supports local project settings using a file called `pymakr.conf`. This can be used to store the default serial address of a device, which files to ignore and other settings. An example `pymakr.conf` is shown below: - -```javascript -{ - "address": "/dev/cu.usbserial-AB001234", - "username": "micro", - "password": "python", - "sync_folder": "scripts" -} -``` - -## Upload - -The Pymakr Plugins have a feature to sync and upload code to a device. This can be used for both uploading code to a device as well as testing out scripts by running them live on the device. The following steps demonstrate how to use this feature. - -To start using the `Upload` feature, ensure that a project folder has been created for the device. For example, if using the `pymakr.conf` from above, this project folder should be named `scripts`. This folder should have the following structure: - -![](/gitbook/assets/mp-filestructure%20%281%29.png) - -Library files should be placed into the `lib` folder, certificates into the `cert` folder and so on. The `Upload` button will take the highest level folder (currently open) and upload this to the connected Pycom device. The files will be pushed to the device in exactly the same structure as within the code editor's file directory. - -## More - -Clicking the `More` button within the Pymakr Plugin allows for some additional features. See the options below for specific functionality. - -### Get Firmware Version - -Retrieves the firmware version of the Pycom device connected to the Pymakr Plugin instance. - -### Get WiFi AP SSID - -Retrieves the default WiFi Access Point SSID of the Pycom device connected to the Pymakr Plugin instance. - -### Get Serial Ports - -Retrieves the various serial ports that are available to the Pymakr Plugin instance. - diff --git a/content/pytrackpysense/_index.md b/content/pytrackpysense/_index.md deleted file mode 100644 index a9ac73e..0000000 --- a/content/pytrackpysense/_index.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: "Introduction" -aliases: - - pytrackpysense/introduction.html - - pytrackpysense/introduction.md - - chapter/pytrackpysense - - expansion3/introduction.html - - expansion3/introduction.md - - chapter/expansion3 -disable_breadcrumbs: true ---- - -In addition to the Expansion Board, Pycom also offers three additional types of sensor boards, which are ideal for quickly building a fully functioning IoT solution! Whether the application is environment sensing or asset tracking, these additional boards support a variety of sensors. New versions of the Pytrack and Pysense are now available with additional features: - -## Pytrack 2.0 X - -Pytrack 2.0 X is an improved location enabled version of the Expansion Board, intended for use in GPS applications such as asset tracking or monitoring. - -![](/gitbook/assets/pytrack20X.png) - -## New Features on Pytrack 2.0 X - -* External 6 pin connector to add new Pycom sensor range Pynodes. You can technically have upto 256 nodes connected in a daisy chain (data bus) although we are sure you would never reach that number -* SMA connector for External active / passive GPS antennas when the built-in GPS antenna needs a boost! -* circuity to enable full power down of module for hard resets without needing to put module in Deep sleep. -* safeboot button for when things go wrong - -## Pysense 2.0 X - -Pysense 2.0 X is an improved sensor packed version of the Expansion Board, intended for use in environment sensing applications such as temperature, humidity monitoring, and light sensing. - -![](/gitbook/assets/pysense20X.png) - -## New Features on Pysense 2.0 X - -* External 6 pin connector to add new Pycom sensor range Pynodes (Coming Soon!) -* A new circuity to enable full power down of module for hard resets without needing to put module in Deep sleep. -* Enhanced isolation of onboard sensors to improve reliability of sensor reporting. -* New safeboot button for when things go wrong - -## Pytrack 1 - -Pytrack is a location enabled version of the Expansion Board, intended for use in GPS applications such as asset tracking or monitoring. - -![](/gitbook/assets/pytrack.png) - -### Features & Hardware - -The Pytrack is has a number of features including GPS, 3-Axis Accelerometer and Battery Charger. See the list below for detailed specifics about each sensor, including datasheets. - -* Serial USB -* 3-Axis Accelerometer ([LIS2HH12](apireference/pytrack.md#3-axis-accelerometer-lis-2-hh-12)) -* Battery Charger (BQ24040 with JST connector) -* GPS and GLONASS ([L76-L](apireference/pytrack.md#gps-with-glonass-quectel-l-76-l-gnss)) -* MicroSD Card Reader - -All of the included sensors are connected to the Pycom device via the I2C interface. These pins are located at `P22` (SDA) and `P21` (SCL). - -You can find the datasheet and more info here: {{% refname "../datasheets/boards/pytrack.md" %}} - -## Pysense 1 - -Pysense is a sensor packed version of the Expansion Board, intended for use in environment sensing applications such as temperature, humidity monitoring, and light sensing. - -![](/gitbook/assets/pysense.png) - -### Features & Hardware - -The Pysense is packed with a number of sensors and hardware, see the list below for detailed specifics about each sensor, including datasheets. - -* Serial USB -* 3-Axis Accelerometer ([LIS2HH12](apireference/pysense.md#3-axis-accelerometer-lis-2-hh-12)) -* Battery Charger (BQ24040 with JST connector) -* Digital Ambient Light Sensor ([LTR-329ALS-01](apireference/pysense.md#digital-ambient-light-sensor-ltr-329-als-01)) -* Humidity and Temperature Sensor ([SI7006-A20](apireference/pysense.md#humidity-and-temperature-sensor-si-7006-a20)) -* Barometric Pressure Sensor with Altimeter ([MPL3115A2](apireference/pysense.md#barometric-pressure-sensor-with-altimeter-mpl-3115-a2)) -* MicroSD Card Reader - -All of the included sensors are connected to the Pycom device via the I2C interface. These pins are located at `GPI09` (SDA) and `GPI08` (SCL). - -You can find the datasheet and more info here: {{% refname "../datasheets/boards/pysense.md" %}} - -## Pyscan - -Pyscan is a RFID-NFC enabled version of the Expansion Board, intended for use in scanning applications, such as RFID/NFC readers. - -![](/gitbook/assets/pyscan.png) - -### Features & Hardware - -The Pyscan is packed with a number of sensors and hardware, see the list below for detailed specifics about each sensor, including datasheets. - -* 3-Axis Accelerometer ([LIS2HH12](apireference/pyscan.md#3-axis-accelerometer-lis-2-hh-12)) -* Digital Ambient Light Sensor ([LTR-329ALS-01](apireference/pyscan.md#digital-ambient-light-sensor-ltr-329-als-01)) -* RFID-NFC Chip ([MFRC63002HN](apireference/pyscan.md#pyscan-nfc-library-mfrc-6300)) -* Serial USB -* Battery Charger (BQ24040 with JST connector) -* MicroSD Card Reader -* Ultra low power operation (~1uA in deep sleep) - -All of the included sensors are connected to the Pycom device via the I2C interface. These pins are located at `P22` (SDA) and `P21` (SCL). - -You can find the datasheet and more info here: {{% refname "../datasheets/boards/pyscan.md" %}} diff --git a/content/pytrackpysense/apireference/README.md b/content/pytrackpysense/apireference/README.md deleted file mode 100644 index 3433db1..0000000 --- a/content/pytrackpysense/apireference/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "API Reference" -aliases: - - chapter/pytrackpysense/apireference ---- - -To simplify usability, APIs for the libraries have been created, abstracting away the low level interactions with the sensors. The next following pages refer to the respective libraries for the Pytrack, Pysense, and Pyscan. - diff --git a/content/pytrackpysense/apireference/_index.md b/content/pytrackpysense/apireference/_index.md deleted file mode 100644 index 34e32cf..0000000 --- a/content/pytrackpysense/apireference/_index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "API Reference" -aliases: ---- - -To simplify usability, APIs for the libraries have been created, abstracting away the low level interactions with the sensors. The next following pages refer to the respective libraries for the Pytrack, Pysense, and Pyscan. - -{{% hint style="info" %}} -Please note that updated libraries are available for the Pytrack 2.0 X and Pysense 2.0 X in the pytrack-2 and pysense-2 directories on GitHub. -These new libraries will allow you to use the new additional features. -{{% /hint %}} diff --git a/content/pytrackpysense/installation/README.md b/content/pytrackpysense/installation/README.md deleted file mode 100644 index c26bdaf..0000000 --- a/content/pytrackpysense/installation/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Installing Software" -aliases: - - chapter/pytrackpysense/installation ---- - -As the development for these devices are on going with additional features being added, every week, it is essential to ensure you frequently check for updates on the Pytrack/Pysense/Pyscan. As well as updating the device firmware, it is important to check the [GitHub repository](https://github.com/pycom/pycom-libraries) for the respective library files as they as also being updated, to include additional features/functionality. - diff --git a/content/pytrackpysense/installation/_index.md b/content/pytrackpysense/installation/_index.md deleted file mode 100644 index 29b430d..0000000 --- a/content/pytrackpysense/installation/_index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Installing Software" -aliases: ---- - -As the development for these devices are on going with additional features being added, every week, it is essential to ensure you frequently check for updates on the Pytrack/Pysense/Pyscan. As well as updating the device firmware, it is important to check the [GitHub repository](https://github.com/pycom/pycom-libraries) for the respective library files as they as also being updated, to include additional features/functionality. - -{{% hint style="info" %}} -Please note that updated libraries are available for the Pytrack 2.0 X and Pysense 2.0 X in the pytrack-2 and pysense-2 directories on GitHub. -These new libraries will allow you to use the new additional features. -{{% /hint %}} diff --git a/content/pytrackpysense/installation/drivers.md b/content/pytrackpysense/installation/drivers.md deleted file mode 100644 index 52a5c33..0000000 --- a/content/pytrackpysense/installation/drivers.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Installing Drivers - Windows 7" -aliases: - - pytrackpysense/installation/drivers.html - - pytrackpysense/installation/drivers.md - - chapter/pytrackpysense/installation/drivers ---- - -Pytrack and Pysense will work out of the box for Windows 8/10/+ (please download the correct driver through Windows Update), macOS as well as Linux. If using Windows 7, drivers to support the boards will need to be installed. - -Please follow the instructions below to install the required drivers. - -## Download - -Please download the driver software from the link below. - -[Unsigned driver for Windows 7 compatible with Pycom products](/gitbook/assets/pycom.inf.zip) -Please note that this driver is not suitable for the Expansion Board 1 & 2. -As these drivers are not signed, you may need to disable driver signing enforcement in your Windows operating system. - -## Installation - -First navigate open the Windows start menu and search/navigate to `Device Manager`. You should see your Pytrack/Pysense in the dropdown under **other devices**. - -![](/gitbook/assets/win7-1.png) - -Right click the device and select `Update Driver Software`. - -![](/gitbook/assets/win7-2.png) - -Select the option to **Browse my computer for driver software**. - -![](/gitbook/assets/win7-3.png) - -Next you will need to navigate to where you downloaded the driver to (e.g. **Downloads** Folder). - -![](/gitbook/assets/win7-4.png) - -Specify the folder in which the drivers are contained. If you haven't extracted the `.zip` file, please do this before selecting the folder. - -![](/gitbook/assets/win7-5.png) - -You may receive a warning, suggesting that windows can't verify the publisher of this driver. Click `Install this driver software anyway` as this link points to our official driver. - -![](/gitbook/assets/win7-6.png) - -If the installation was successful, you should now see a window specifying that the driver was correctly installed. - -![](/gitbook/assets/win7-7.png) - -To confirm that the installation was correct, navigate back to the `Device Manager` and click the dropdown for other devices. The warning label should now be gone and Pytrack/Pysense should be installed. - -![](/gitbook/assets/win7-8.png) diff --git a/content/pytrackpysense/installation/pycom.inf b/content/pytrackpysense/installation/pycom.inf deleted file mode 100644 index cb00f95..0000000 --- a/content/pytrackpysense/installation/pycom.inf +++ /dev/null @@ -1,71 +0,0 @@ -; M-Stack CDC-ACM Windows INF file -; -; This file has been tested on Windows 7, 64-bit. It may or may not work on -; Windows versions earlier than 7. Improvements and bug reports are welcome. -; - -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%MFGNAME% -DriverVer=05/16/2014,1.0.0.18 - -[Manufacturer] -%MFGNAME%=DeviceList, NTx86, NTamd64, NTia64, NTarm - -[DeviceList.NTamd64] -%DESC_CDC_PYSENSE% = DriverInstall, %VID_PID_PYSENSE_STRING% -%DESC_CDC_PYTRACK% = DriverInstall, %VID_PID_PYTRACK_STRING% -%DESC_CDC_PYSCAN% = DriverInstall, %VID_PID_PYSCAN_STRING% -%DESC_CDC_EXPANSION3% = DriverInstall, %VID_PID_EXPANSION3_STRING% - -[DeviceList.NTx86] -%DESC_CDC_PYSENSE% = DriverInstall, %VID_PID_PYSENSE_STRING% -%DESC_CDC_PYTRACK% = DriverInstall, %VID_PID_PYTRACK_STRING% -%DESC_CDC_PYSCAN% = DriverInstall, %VID_PID_PYSCAN_STRING% -%DESC_CDC_EXPANSION3% = DriverInstall, %VID_PID_EXPANSION3_STRING% - -[DeviceList.NTia64] -%DESC_CDC_PYSENSE% = DriverInstall, %VID_PID_PYSENSE_STRING% -%DESC_CDC_PYTRACK% = DriverInstall, %VID_PID_PYTRACK_STRING% -%DESC_CDC_PYSCAN% = DriverInstall, %VID_PID_PYSCAN_STRING% -%DESC_CDC_EXPANSION3% = DriverInstall, %VID_PID_EXPANSION3_STRING% - -[DeviceList.NTarm] -%DESC_CDC_PYSENSE% = DriverInstall, %VID_PID_PYSENSE_STRING% -%DESC_CDC_PYTRACK% = DriverInstall, %VID_PID_PYTRACK_STRING% -%DESC_CDC_PYSCAN% = DriverInstall, %VID_PID_PYSCAN_STRING% -%DESC_CDC_EXPANSION3% = DriverInstall, %VID_PID_EXPANSION3_STRING% - -; For the DriverInstall sections below see: -; http://support.microsoft.com/kb/837637 -; http://www.microchip.com/forums/m488342.aspx -; -; This INF file includes mdmcpq.inf, which is a standard Windows -; INF file that you can find by searching for it recursively from -; %WINDIR%. It's in the WinSxS folders. In that file, you can see -; the symbols referenced here (eg: FakeModemCopyFileSection, etc). - -[DriverInstall.NT] -include=mdmcpq.inf -CopyFiles=FakeModemCopyFileSection - -[DriverInstall.NT.Services] -include=mdmcpq.inf -AddService=usbser, 0x00000002, LowerFilter_Service_Inst - -[DriverInstall.HW] -include=mdmcpq.inf -AddReg=LowerFilterAddReg - -[Strings] -MFGNAME = "Pycom Ltd" -DESC_CDC_PYSENSE = "Pysense" -DESC_CDC_PYTRACK = "Pytrack" -DESC_CDC_PYSCAN = "Pyscan" -DESC_CDC_EXPANSION3 = "Expansion3" -VID_PID_PYSENSE_STRING = "USB\VID_04D8&PID_F012" -VID_PID_PYTRACK_STRING = "USB\VID_04D8&PID_F013" -VID_PID_EXPANSION3_STRING = "USB\VID_04D8&PID_EF98" -VID_PID_PYSCAN_STRING = "USB\VID_04D8&PID_EF38" diff --git a/content/pytrackpysense/introduction.md b/content/pytrackpysense/introduction.md deleted file mode 100644 index 526f216..0000000 --- a/content/pytrackpysense/introduction.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: "Introduction" -aliases: - - pytrackpysense/introduction.html - - pytrackpysense/introduction.md - - chapter/pytrackpysense ---- - -In addition to the Expansion Board, Pycom also offers three additional types of sensor boards, which are ideal for quickly building a fully functioning IoT solution! Whether the application is environment sensing or asset tracking, these additional boards support a variety of sensors. New versions of the Pytrack and Pysense are now available with additional features: - -## Pytrack 2.0 X - -Pytrack 2.0 X is an improved location enabled version of the Expansion Board, intended for use in GPS applications such as asset tracking or monitoring. - -![](/gitbook/assets/pytrack20X.png) - -## New Features on Pytrack 2.0 X - -* External 6 pin connector to add new Pycom sensor range Pynodes. You can technically have upto 256 nodes connected in a daisy chain (data bus) although we are sure you would never reach that number -* SMA connector for External active / passive GPS antennas when the built-in GPS antenna needs a boost! -* circuity to enable full power down of module for hard resets without needing to put module in Deep sleep. -* safeboot button for when things go wrong - -## Pysense 2.0 X - -Pysense 2.0 X is an improved sensor packed version of the Expansion Board, intended for use in environment sensing applications such as temperature, humidity monitoring, and light sensing. - -![](/gitbook/assets/pysense20X.png) - -## New Features on Pysense 2.0 X - -* External 6 pin connector to add new Pycom sensor range Pynodes (Coming Soon!) -* A new circuity to enable full power down of module for hard resets without needing to put module in Deep sleep. -* Enhanced isolation of onboard sensors to improve reliability of sensor reporting. -* New safeboot button for when things go wrong - -## Pytrack 1 - -Pytrack is a location enabled version of the Expansion Board, intended for use in GPS applications such as asset tracking or monitoring. - -![](/gitbook/assets/pytrack.png) - -### Features & Hardware - -The Pytrack is has a number of features including GPS, 3-Axis Accelerometer and Battery Charger. See the list below for detailed specifics about each sensor, including datasheets. - -* Serial USB -* 3-Axis Accelerometer ([LIS2HH12](apireference/pytrack.md#3-axis-accelerometer-lis-2-hh-12)) -* Battery Charger (BQ24040 with JST connector) -* GPS and GLONASS ([L76-L](apireference/pytrack.md#gps-with-glonass-quectel-l-76-l-gnss)) -* MicroSD Card Reader - -All of the included sensors are connected to the Pycom device via the I2C interface. These pins are located at `P22` (SDA) and `P21` (SCL). - -You can find the datasheet and more info here: {{% refname "../datasheets/boards/pytrack.md" %}} - -## Pysense 1 - -Pysense is a sensor packed version of the Expansion Board, intended for use in environment sensing applications such as temperature, humidity monitoring, and light sensing. - -![](/gitbook/assets/pysense.png) - -### Features & Hardware - -The Pysense is packed with a number of sensors and hardware, see the list below for detailed specifics about each sensor, including datasheets. - -* Serial USB -* 3-Axis Accelerometer ([LIS2HH12](apireference/pysense.md#3-axis-accelerometer-lis-2-hh-12)) -* Battery Charger (BQ24040 with JST connector) -* Digital Ambient Light Sensor ([LTR-329ALS-01](apireference/pysense.md#digital-ambient-light-sensor-ltr-329-als-01)) -* Humidity and Temperature Sensor ([SI7006-A20](apireference/pysense.md#humidity-and-temperature-sensor-si-7006-a20)) -* Barometric Pressure Sensor with Altimeter ([MPL3115A2](apireference/pysense.md#barometric-pressure-sensor-with-altimeter-mpl-3115-a2)) -* MicroSD Card Reader - -All of the included sensors are connected to the Pycom device via the I2C interface. These pins are located at `GPI09` (SDA) and `GPI08` (SCL). - -You can find the datasheet and more info here: {{% refname "../datasheets/boards/pysense.md" %}} - -## Pyscan - -Pyscan is a RFID-NFC enabled version of the Expansion Board, intended for use in scanning applications, such as RFID/NFC readers. - -![](/gitbook/assets/pyscan.png) - -### Features & Hardware - -The Pyscan is packed with a number of sensors and hardware, see the list below for detailed specifics about each sensor, including datasheets. - -* 3-Axis Accelerometer ([LIS2HH12](apireference/pyscan.md#3-axis-accelerometer-lis-2-hh-12)) -* Digital Ambient Light Sensor ([LTR-329ALS-01](apireference/pyscan.md#digital-ambient-light-sensor-ltr-329-als-01)) -* RFID-NFC Chip ([MFRC63002HN](apireference/pyscan.md#pyscan-nfc-library-mfrc-6300)) -* Serial USB -* Battery Charger (BQ24040 with JST connector) -* MicroSD Card Reader -* Ultra low power operation (~1uA in deep sleep) - -All of the included sensors are connected to the Pycom device via the I2C interface. These pins are located at `P22` (SDA) and `P21` (SCL). - -You can find the datasheet and more info here: {{% refname "../datasheets/boards/pyscan.md" %}} diff --git a/content/tutorials/PyGate.md b/content/tutorials/PyGate.md index 3bd41ef..395e205 100644 --- a/content/tutorials/PyGate.md +++ b/content/tutorials/PyGate.md @@ -85,7 +85,7 @@ print("Wifi Connection established") # Sync time via NTP server for GW timestamps on Events rtc = RTC() -rtc.ntp_sync(server="0.pool.ntp.org") +rtc.ntp_sync(server="pool.ntp.org") # Read the GW config file from Filesystem fp = open('/flash/config.json','r') diff --git a/content/tutorials/_index.md b/content/tutorials/_index.md index 16f31c5..6c79d45 100644 --- a/content/tutorials/_index.md +++ b/content/tutorials/_index.md @@ -15,6 +15,6 @@ This section contains tutorials and examples for use with Pycom modules and Expa General Pycom tutorials contains tutorials that may be run on any Pycom device, such as connecting to a WiFi network, Bluetooth, controlling I/O pins etc. Later sections are specific to the LoPy and SiPy devices such as setting up a LoRa node or connecting to the Sigfox network. The final sections are related to examples using the Pytrack and Pysense. -Before starting, ensure that any Pycom devices are running the latest firmware; for instructions see [Firmware Updates](/gettingstarted/installation/firmwaretool). +Before starting, ensure that any Pycom devices are running the latest firmware; for instructions see [Firmware Updates](/updatefirmware/device/). The source code for these tutorials, along with the required libraries can be found in in the [pycom-libraries](https://github.com/pycom/pycom-libraries) repository. diff --git a/content/tutorials/all/README.md b/content/tutorials/all/README.md deleted file mode 100644 index 4af2ef7..0000000 --- a/content/tutorials/all/README.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "All Pycom Device Examples" -aliases: - - chapter/tutorials/all ---- - -This section contains generic examples that will work across all Pycom devices and Expansion Boards. - diff --git a/content/tutorials/all/_index.md b/content/tutorials/all/_index.md deleted file mode 100644 index 921604c..0000000 --- a/content/tutorials/all/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "All Pycom Device Examples" -aliases: ---- - -This section contains generic examples that will work across all Pycom devices and Expansion Boards. - diff --git a/content/tutorials/basic/_index.md b/content/tutorials/basic/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/tutorials/basic/gpio.md b/content/tutorials/basic/gpio.md new file mode 100644 index 0000000..7b54efe --- /dev/null +++ b/content/tutorials/basic/gpio.md @@ -0,0 +1,42 @@ +--- +title: "GPIO" +aliases: + - tutorials/basic/gpio.html + - tutorials/basic/gpio.md + - chapter/tutorials/basic/gpio +--- +The module has several spare General Purpose Input-Output (GPIO) pins available for you to use with your own sensors and actuators. + +## Output +Controlling the GPIO pins of the modules is rather easy. In the example below, we can let the orange LED on the expansion board blink. + +```python +from machine import Pin +import time +led = Pin('P9', mode=Pin.OUT) + +while True: + print("high") + led.value(1) + time.sleep(1) + print("low") + led.value(0) + time.sleep(1) +``` +## Input + +Sometimes, it would be useful to know the state of a pin. For example, you could use the button on the xpansion board to toggle the led + +```python +from machine import Pin +import time +led = Pin('P9', mode = Pin.OUT) +button = Pin('P10', mode = Pin.IN) + +while True: + if(button() == 1): + led.value(1) + else: + led.value(0) +``` + diff --git a/content/tutorials/basic/print.md b/content/tutorials/basic/print.md new file mode 100644 index 0000000..c022116 --- /dev/null +++ b/content/tutorials/basic/print.md @@ -0,0 +1,14 @@ +--- +title: "Print" +aliases: + - tutorials/all/print.html + - tutorials/all/print.md + - chapter/tutorials/basic/print +--- + +Using the `print()` statements in your python script is quite easy. But did you know you can also concatinate strigns and variables inline? If you are formiliar with C, it's functionality is similar to the `printf()` function, but with `\n` always included. + +```python +import machine +print("hello world: " + str(machine.rng()) + " random number" ) +``` \ No newline at end of file diff --git a/content/tutorials/all/repl.md b/content/tutorials/basic/repl.md similarity index 99% rename from content/tutorials/all/repl.md rename to content/tutorials/basic/repl.md index 6e1a655..0498d1e 100644 --- a/content/tutorials/all/repl.md +++ b/content/tutorials/basic/repl.md @@ -9,7 +9,6 @@ aliases: Using the Pymakr Plugin, open and connect a device or use serial terminal (PuTTY, screen, picocom, etc). Upon connecting, there should be a blank screen with a flashing cursor. Press Enter and a MicroPython prompt should appear, i.e. `>>>`. Let's make sure it is working with the obligatory test: ```python - >>> print("Hello LoPy!") Hello LoPy! ``` @@ -23,7 +22,6 @@ If this is not working, try either a hard reset or a soft reset; see below. Here are some other example, utilising the device's hardware features: ```python - >>> from machine import Pin >>> led = Pin('G16', mode=Pin.OUT, value=1) >>> led(0) @@ -42,7 +40,6 @@ Here are some other example, utilising the device's hardware features: If something goes wrong, the device can be reset with two methods. The first is to press `CTRL-D` at the MicroPython prompt, which will perform a soft reset. A message, as following, will appear: ```python - >>> PYB: soft reboot MicroPython v1.4.6-146-g1d8b5e5 on 2016-10-21; LoPy with ESP32 diff --git a/content/tutorials/all/rgbled.md b/content/tutorials/basic/rgbled.md similarity index 99% rename from content/tutorials/all/rgbled.md rename to content/tutorials/basic/rgbled.md index 74fc7bd..86b75e9 100644 --- a/content/tutorials/all/rgbled.md +++ b/content/tutorials/basic/rgbled.md @@ -9,7 +9,6 @@ aliases: By default the heartbeat LED flashes in blue colour once every 4s to signal that the system is alive. This can be overridden through the `pycom` module. ```python - import pycom pycom.heartbeat(False) @@ -21,7 +20,6 @@ The heartbeat LED is also used to indicate that an error was detected. The following piece of code uses the RGB LED to make a traffic light that runs for 10 cycles. ```python - import pycom import time diff --git a/content/tutorials/basic/sleep.md b/content/tutorials/basic/sleep.md new file mode 100644 index 0000000..ebd119c --- /dev/null +++ b/content/tutorials/basic/sleep.md @@ -0,0 +1,113 @@ + +--- +title: "Sleep" +aliases: + - tutorials/all/sleep.html + - tutorials/all/sleep.md + - chapter/tutorials/basic/sleep +--- + +There are several methods to make your device sleep. First we cover the basic sleep. Similar to `delay()` used in Arduino, sleep will yield your program until the time is over. Important is that the all microcontroller functions keep running. Also the LoRa, SigFox and LTE modems can be used directly (without re-attaching) after regular sleep. + +```python +import time + +time.sleep(1) #sleep 1 second + +time.sleep_ms(10) #sleep 10 milliseconds + +time.sleep_us(10) #sleep 10 microseconds +``` + +Similar to `yield()`, in micropython we use +```python +import machine +machine.idle() +``` + +### Power saving +To save power, we can also put the controller into sleep modes using the following examples. + +#### Light sleep + +The `machine.sleep()` command will put the controller into a light sleep mode. WiFi and BLE are switched off, but the main CPU and RAM are still running. the LoRa, SigFox and LTE modems are stopped as well and have to be re-initialized after wakeup. The controller will continue running the code after waking up. GPIO states are also conserved. Setting the second argument to `True` will restore the WiFi and BLE after wakeup. + +```python +import machine +import time +print("this will be printed before: " + str(time.ticks_ms())) +machine.sleep(1000*10, True) +print("this will be printed after 10 seconds: " str(time.ticks_ms())) +``` + +#### Deep sleep +Deepsleep disables, next to the lightsleep, the main CPU and RAM. This leaves only a low power coprocessor and RTC timer running. After waking up, the board will start again at `boot.py`, just like with pressing the reset button. The CPU counter (`time.ticks()`) will continue to count however! +You can also leave the brackets empty to sleep indefinetely, until the reset button is pressed, the power is removed, or an external wake up signal (interrupt) is provided. Be aware that the LTE modem. *** + + +```python +import machine +print("Wake up") +machine.deepsleep(1000) #deepsleep 1 second +print("this will never get printed!") +``` + +#### Wake up reason + +Sometimes, we want to know the reason the board woke up, to differentiate the difference between pressing the reset button and waking up from sleep. We can also determine the time left on the sleep timer. Try the example below: + +```python +import machine +import time +(wake_reason, gpio_list) = machine.wake_reason() +print("Device running for: " + str(time.ticks_ms()) + "ms") +print("Remaining sleep time: " + str(machine.remaining_sleep_time()) + "ms" ) +if wake_reason == machine.PWRON_WAKE: + print("Woke up by reset button") +elif wake_reason == machine.PIN_WAKE: + print("Woke up by external pin (external interrupt)") + print(*gpio_list, sep=", ") +elif wake_reason == machine.RTC_WAKE: + print("Woke up by RTC (timer ran out)") +elif wake_reason == machine.ULP_WAKE: + print("Woke up by ULP (capacitive touch)") + +machine.pin_sleep_wakeup(('P3', 'P4'), mode=machine.WAKEUP_ANY_HIGH, enable_pull=True) + +machine.deepsleep(1000*60) #sleep for 1 minute +print("This will never be printed") +``` + +>Note `pybytes.deepsleep()` is fundamentally the same function as `machine.deepsleep()`, but will gracefully stop the pybytes platform functionality. + +#### Other methods + +The expansionboards (Pysense 2.0 X, and Pytrack 2.0 X, DeepSleep shield) use a different mechanism to put the controller to sleep. A separate controller on the expansion board will put the main controller to sleep. This will actually cut all power from the module for the set amount of time, hard resetting it. Cutting power to the expansion board will work as well. Using this method, we can still recover the wake up reason and remaining sleep time. The example below works was written for a Pysense, but works on any of the boards by changing the first lines + +```python +from pysense import Pysense +py = Pysense() +py.setup_sleep(10) # set sleep time of 10 seconds +py.go_to_sleep() +print("this will never be printed") +``` +Using this method, we can also wake the board using the accelerometer and external pin `P6` by rising (`True`) or falling (`False`) edge + +```python +from pysense import Pysense +from LIS2HH12 import LIS2HH12 + +py = Pysense() +acc = LIS2HH12() + +# enable activity and also inactivity interrupts, using the default callback handler +py.setup_int_wake_up(True, True) + +# set the acceleration threshold to 2000mG (2G) and the min duration to 200ms +acc.enable_activity_interrupt(2000, 200) + +py.set_int_pin_wake_up(True) #wake up on rising edge on pin 6 of the expansion header + +py.go_to_sleep()# the device will sleep indefinitely, until pin 6 goes high, or the accelerometer is triggered +``` +LTE Power saving mode (PSM) \ No newline at end of file diff --git a/content/tutorials/expansionboards/_index.md b/content/tutorials/expansionboards/_index.md new file mode 100644 index 0000000..b75c4f6 --- /dev/null +++ b/content/tutorials/expansionboards/_index.md @@ -0,0 +1,15 @@ +--- +title: "Overview" +aliases: + - tutorials/expansionboards/introduction.html + - tutorials/expansionboards/introduction.md + - chapter/tutorials/expansionboards +disable_breadcrumbs: true +--- + +* [Pygate](../expansionboards/pygate/) +* [Pysense](../expansionboards/pysense/) +* [Pysense 2.0 X](../expansionboards/pysense2/) +* [Pytrack](../expansionboards/pytrack/) +* [Pytrack 2.0 X](../expansionboards/pytrack2/) +* [Pyscan](../expansionboards/pyscan/) \ No newline at end of file diff --git a/content/tutorials/expansionboards/pygate.md b/content/tutorials/expansionboards/pygate.md new file mode 100644 index 0000000..b3cfe90 --- /dev/null +++ b/content/tutorials/expansionboards/pygate.md @@ -0,0 +1,288 @@ +## Pygate + +The Pygate is an 8-channel LoRaWAN gateway. This page will help you get started with it. + +{{% hint style="info" %}} +While the Pygate shield has the radio chips required to act as a LoRaWAN gateway, it will require a WiPy3, GPy or LoPy4 to run the LoRaWAN gateway software and provide connectivity to the LoRaWAN server (TTN / ChirpStack etc.) via WiFi, Ethernet (with the optional PyEthernet adapter) or LTE-M (a GPy with a mobile subscription is required for LTE-M connectivity). +{{% /hint %}} + +A USB connection is recommended for the initial firmware update of the Pycom development module (WiPy 3, GPy, LoPy4) and to upload the configuration & start-up script. The module can be updated over the air via WiFi / LTE-M (depending on network capabilities) or via Ethernet connection which allows installation of the gateway in remote locations. + +The Pygate board can have the PyEthernet adapter connected which allows an Ethernet connection. The PyEthernet also supports PoE. Please check the separate [page and warning for PoE-NI!](/tutorials/all/poe) + +### Quickstart + +To connect your Pygate to a LoRa server, please follow these steps: + +1. Attach a WiPy 3, GPy or LoPy 4 to the Pygate. The RGB LED of the development board should be aligned with the USB port of the Pygate. +1. Attach the LoRa Antenna to the Pygate. +1. Flash the Pycom Device with with a firmware build where Pygate functionality is enabled. In the firmware update tool, please choose pygate as the firmware type. +1. Create a `config.json` for your Pygate and upload it (please check the template further below). +1. Create a `main.py` that creates an uplink (wifi, ethernet or lte) and runs the LoRa packet forwarder (see example below). +1. Run the `main.py`. This file is automatically execute every time the module resets. +1. Now it is operational. The communication from other LoRa nodes such as a LoPy4 will now reach the gateway and will receive up and downlink messages via the PyGate. +1. To stop the Pygate at any time press Ctrl-C on the REPL and run `machine.pygate_deinit()`. It will take a few seconds to stop the gateway tasks and safely power-off the concentrator. + + +Make sure you supply a config matching your region (EU868, US915, etc), e.g. https://github.com/Lora-net/packet_forwarder/tree/master/lora_pkt_fwd/cfg. If you are in EU region, it should be sufficient to update the example below with your GW ID, the LoRa server address and port number. + +{{% hint style="info" %}} +**Note** Running the LoRa gateway on a GPy can get you close to the memory limit of the device. To avoid running out of memory one should not *run* the WiFi task and the LTE task at the same time. This shouldn't really restrict your use of the Pygate, since you wouldn't be *using* WiFi and LTE at the same time. The tasks *run* when you explicitly initialize them with ``wlan = WLAN()`` or ``lte = LTE()``, or when they get automatically started upon boot based on the settings ``pycom.wifi_on_boot(True)`` or ``pycom.lte_modem_en_on_boot(True)``. Bottom line, if you have trouble starting the LoRa packet forwarder, please double check these settings and make sure at least the network that you don't use is not automatically started.{{% /hint %}} + + + +### Example TTN Wifi + +The following example shows the script and json file to run the Pygate over Wifi connecting to [The Things Network](https://www.thethingsnetwork.org/). + +1. log in to https://console.thethingsnetwork.org/ +1. go to Gateways and register a new gateway +1. select "I'm using a legacy packet forwarder" +1. make up a EUI (8 byte hexadecimal value) and register it on the TTN website +1. enter the EUI in your `config.json` under `gateway_ID` (Just enter the hex digits without the "eui-" prefix and without spaces) +1. select your Frequency Plan +1. select a router - also enter the hostname in your `config.json` under `server_address` +1. enter your wifi SSID and password in `main.py` +1. upload `config.json` and `main.py` and reset the board +1. you will see how it creates the uplink connection and then start the LoRa GW. It will print out some debug information while it is running. After some initialization it will print "LoRa GW started" and the LED will turn green. + + + +```python +from network import WLAN +import time +import machine +from machine import RTC +import pycom + +# Disable Hearbeat +pycom.heartbeat(False) + +# Define callback function for Pygate events +def machine_cb (arg): + evt = machine.events() + if (evt & machine.PYGATE_START_EVT): + # Green + pycom.rgbled(0x103300) + elif (evt & machine.PYGATE_ERROR_EVT): + # Red + pycom.rgbled(0x331000) + elif (evt & machine.PYGATE_STOP_EVT): + # RGB off + pycom.rgbled(0x000000) + +# register callback function +machine.callback(trigger = (machine.PYGATE_START_EVT | machine.PYGATE_STOP_EVT | machine.PYGATE_ERROR_EVT), handler=machine_cb) + +# Connect to a Wifi Network +wlan = WLAN(mode=WLAN.STA) +wlan.connect(ssid='', auth=(WLAN.WPA2, "")) + +while not wlan.isconnected(): + time.sleep(1) + +print("Wifi Connection established") + +# Sync time via NTP server for GW timestamps on Events +rtc = RTC() +rtc.ntp_sync(server="pool.ntp.org") + +# Read the GW config file from Filesystem +fp = open('/flash/config.json','r') +buf = fp.read() + +# Start the Pygate +machine.pygate_init(buf) + +``` + +A sample `config.json` file for gateway configuration in EU868 region: + +```json +{ + "SX1301_conf": { + "lorawan_public": true, + "clksrc": 1, + "antenna_gain": 0, + "radio_0": { + "enable": true, + "type": "SX1257", + "freq": 867500000, + "rssi_offset": -164.0, + "tx_enable": true, + "tx_freq_min": 863000000, + "tx_freq_max": 870000000 + }, + "radio_1": { + "enable": true, + "type": "SX1257", + "freq": 868500000, + "rssi_offset": -164.0, + "tx_enable": false + }, + "chan_multiSF_0": { + "enable": true, + "radio": 1, + "if": -400000 + }, + "chan_multiSF_1": { + "enable": true, + "radio": 1, + "if": -200000 + }, + "chan_multiSF_2": { + "enable": true, + "radio": 1, + "if": 0 + }, + "chan_multiSF_3": { + "enable": true, + "radio": 0, + "if": -400000 + }, + "chan_multiSF_4": { + "enable": true, + "radio": 0, + "if": -200000 + }, + "chan_multiSF_5": { + "enable": true, + "radio": 0, + "if": 0 + }, + "chan_multiSF_6": { + "enable": true, + "radio": 0, + "if": 200000 + }, + "chan_multiSF_7": { + "enable": true, + "radio": 0, + "if": 400000 + }, + "chan_Lora_std": { + "enable": true, + "radio": 1, + "if": -200000, + "bandwidth": 250000, + "spread_factor": 7 + }, + "chan_FSK": { + "enable": true, + "radio": 1, + "if": 300000, + "bandwidth": 125000, + "datarate": 50000 + }, + "tx_lut_0": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_1": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_2": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_3": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_4": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_5": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_6": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 9, + "dig_gain": 3 + }, + "tx_lut_7": { + "pa_gain": 0, + "mix_gain": 6, + "rf_power": 11, + "dig_gain": 3 + }, + "tx_lut_8": { + "pa_gain": 0, + "mix_gain": 5, + "rf_power": 13, + "dig_gain": 2 + }, + "tx_lut_9": { + "pa_gain": 0, + "mix_gain": 8, + "rf_power": 14, + "dig_gain": 3 + }, + "tx_lut_10": { + "pa_gain": 0, + "mix_gain": 6, + "rf_power": 15, + "dig_gain": 2 + }, + "tx_lut_11": { + "pa_gain": 0, + "mix_gain": 6, + "rf_power": 16, + "dig_gain": 1 + }, + "tx_lut_12": { + "pa_gain": 0, + "mix_gain": 9, + "rf_power": 17, + "dig_gain": 3 + }, + "tx_lut_13": { + "pa_gain": 0, + "mix_gain": 10, + "rf_power": 18, + "dig_gain": 3 + }, + "tx_lut_14": { + "pa_gain": 0, + "mix_gain": 11, + "rf_power": 19, + "dig_gain": 3 + }, + "tx_lut_15": { + "pa_gain": 0, + "mix_gain": 12, + "rf_power": 20, + "dig_gain": 3 + } + }, + + "gateway_conf": { + "gateway_ID": "XXXXXXXXXXXXXXXX", + "server_address": "router.eu.thethings.network", + "serv_port_up": 1700, + "serv_port_down": 1700, + "keepalive_interval": 10, + "stat_interval": 30, + "push_timeout_ms": 100, + "forward_crc_valid": true, + "forward_crc_error": false, + "forward_crc_disabled": false + } +} +``` diff --git a/content/tutorials/pyscan.md b/content/tutorials/expansionboards/pyscan.md similarity index 97% rename from content/tutorials/pyscan.md rename to content/tutorials/expansionboards/pyscan.md index a2eac2f..402d525 100644 --- a/content/tutorials/pyscan.md +++ b/content/tutorials/expansionboards/pyscan.md @@ -6,7 +6,7 @@ aliases: - chapter/tutorials/pyscan --- -This basic example shows how to read an NFC card and authenticate it using a pre-defined access list. +This basic example shows how to read an NFC card and authenticate it using a pre-defined access list. ```python diff --git a/content/tutorials/pysense.md b/content/tutorials/expansionboards/pysense.md similarity index 100% rename from content/tutorials/pysense.md rename to content/tutorials/expansionboards/pysense.md diff --git a/content/tutorials/pytrack.md b/content/tutorials/expansionboards/pytrack.md similarity index 93% rename from content/tutorials/pytrack.md rename to content/tutorials/expansionboards/pytrack.md index 00513d3..a9c8395 100644 --- a/content/tutorials/pytrack.md +++ b/content/tutorials/expansionboards/pytrack.md @@ -10,6 +10,8 @@ Both the Pysense and Pytrack use the same accelerometer. Please see the [Pysense ## Example +>Note: You need to add the libraries in the `lib` folder before the example will work + You can find this example in the [pycom/pycom-libraries](https://github.com/pycom/pycom-libraries) GitHub repository. ```python diff --git a/content/tutorials/hardware/_index.md b/content/tutorials/hardware/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/tutorials/all/adc.md b/content/tutorials/hardware/adc.md similarity index 100% rename from content/tutorials/all/adc.md rename to content/tutorials/hardware/adc.md diff --git a/content/tutorials/all/i2c.md b/content/tutorials/hardware/i2c.md similarity index 100% rename from content/tutorials/all/i2c.md rename to content/tutorials/hardware/i2c.md diff --git a/content/tutorials/all/modbus.md b/content/tutorials/hardware/modbus.md similarity index 100% rename from content/tutorials/all/modbus.md rename to content/tutorials/hardware/modbus.md diff --git a/content/tutorials/all/owd.md b/content/tutorials/hardware/owd.md similarity index 100% rename from content/tutorials/all/owd.md rename to content/tutorials/hardware/owd.md diff --git a/content/tutorials/all/pir.md b/content/tutorials/hardware/pir.md similarity index 100% rename from content/tutorials/all/pir.md rename to content/tutorials/hardware/pir.md diff --git a/content/tutorials/all/rmt.md b/content/tutorials/hardware/rmt.md similarity index 100% rename from content/tutorials/all/rmt.md rename to content/tutorials/hardware/rmt.md diff --git a/content/tutorials/all/threading.md b/content/tutorials/hardware/threading.md similarity index 100% rename from content/tutorials/all/threading.md rename to content/tutorials/hardware/threading.md diff --git a/content/tutorials/all/timers.md b/content/tutorials/hardware/timers.md similarity index 100% rename from content/tutorials/all/timers.md rename to content/tutorials/hardware/timers.md diff --git a/content/tutorials/all/touch.md b/content/tutorials/hardware/touch.md similarity index 99% rename from content/tutorials/all/touch.md rename to content/tutorials/hardware/touch.md index 5eed2ce..d4cb436 100644 --- a/content/tutorials/all/touch.md +++ b/content/tutorials/hardware/touch.md @@ -1,5 +1,5 @@ --- -title: "TOUCH" +title: "Touch" aliases: - tutorials/all/touch.html - tutorials/all/touch.md diff --git a/content/tutorials/lora/README.md b/content/tutorials/lora/README.md deleted file mode 100644 index 63f8ea4..0000000 --- a/content/tutorials/lora/README.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "LoRa Examples" -aliases: - - chapter/tutorials/lora ---- - -The following tutorials demonstrate the use of the LoRa functionality on the LoPy. LoRa can work in 2 different modes; **LoRa-MAC** (which we also call Raw-LoRa) and **LoRaWAN** mode. - -LoRa-MAC mode basically accesses de radio directly and packets are sent using the LoRa modulation on the selected frequency without any headers, addressing information or encryption. Only a CRC is added at the tail of the packet and this is removed before the received frame is passed on to the application. This mode can be used to build any higher level protocol that can benefit from the long range features of the LoRa modulation. Typical uses cases include LoPy to LoPy direct communication and a LoRa packet forwarder. - -LoRaWAN mode implements the full LoRaWAN stack for a class A device. It supports both OTAA and ABP connection methods, as well as advanced features like adding and removing custom channels to support "special" frequencies plans like the those used in New Zealand. - diff --git a/content/tutorials/lora/_index.md b/content/tutorials/lora/_index.md deleted file mode 100644 index 3d063e3..0000000 --- a/content/tutorials/lora/_index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "LoRa Examples" -aliases: ---- - -The following tutorials demonstrate the use of the LoRa functionality on the LoPy. LoRa can work in 2 different modes; **LoRa-MAC** (which we also call Raw-LoRa) and **LoRaWAN** mode. - -LoRa-MAC mode basically accesses de radio directly and packets are sent using the LoRa modulation on the selected frequency without any headers, addressing information or encryption. Only a CRC is added at the tail of the packet and this is removed before the received frame is passed on to the application. This mode can be used to build any higher level protocol that can benefit from the long range features of the LoRa modulation. Typical uses cases include LoPy to LoPy direct communication and a LoRa packet forwarder. - -LoRaWAN mode implements the full LoRaWAN stack for a class A device. It supports both OTAA and ABP connection methods, as well as advanced features like adding and removing custom channels to support "special" frequencies plans like the those used in New Zealand. - diff --git a/content/tutorials/all/PoE.md b/content/tutorials/networkprotecols/PoE.md similarity index 100% rename from content/tutorials/all/PoE.md rename to content/tutorials/networkprotecols/PoE.md diff --git a/content/tutorials/networkprotecols/_index.md b/content/tutorials/networkprotecols/_index.md new file mode 100644 index 0000000..d338687 --- /dev/null +++ b/content/tutorials/networkprotecols/_index.md @@ -0,0 +1,11 @@ +--- +title: "Network Protecols" +aliases: + - tutorials/networkprotecols.html + - tutorials/networkprotecols +--- +Using our devices, several different network protecols can be used. We have grouped them in different categories. Not all examples will work with every network. Generally, WiFi and LTE examples are simi SigFox and LoRa examples + +**Transport Layer** + +**Cloud** \ No newline at end of file diff --git a/content/tutorials/all/aws.md b/content/tutorials/networkprotecols/aws.md similarity index 99% rename from content/tutorials/all/aws.md rename to content/tutorials/networkprotecols/aws.md index 6714366..4a40e5b 100644 --- a/content/tutorials/all/aws.md +++ b/content/tutorials/networkprotecols/aws.md @@ -38,7 +38,6 @@ For more information see this Note: only weekday counts from 0 (Monday) to 6 (Sunday) +```python +from network import WLAN +import time +import machine + +wlan = WLAN(mode=WLAN.STA) +wlan.connect(ssid="Pycom", auth=(WLAN.WPA2, "PyE!ndh0ven#")) #for the connection details, check your router. +while not wlan.isconnected(): + machine.idle() +print("connected to WiFi") +rtc = machine.RTC() +rtc.ntp_sync("pool.ntp.org") +while not rtc.synced(): + machine.idle() +print("RTC synced with NTP time") +#adjust your local timezone, by default, NTP time will be GMT +time.timezone(2*60**2) #we are located at GMT+2, thus 2*60*60 + +while True: + print(time.localtime()) + time.sleep(1) +``` diff --git a/content/tutorials/all/ota-lorawan.md b/content/tutorials/networkprotecols/ota-lorawan.md similarity index 100% rename from content/tutorials/all/ota-lorawan.md rename to content/tutorials/networkprotecols/ota-lorawan.md diff --git a/content/tutorials/all/ota.md b/content/tutorials/networkprotecols/ota.md similarity index 100% rename from content/tutorials/all/ota.md rename to content/tutorials/networkprotecols/ota.md diff --git a/content/tutorials/all/socket.md b/content/tutorials/networkprotecols/socket.md similarity index 99% rename from content/tutorials/all/socket.md rename to content/tutorials/networkprotecols/socket.md index 3207992..ad9ecc3 100644 --- a/content/tutorials/all/socket.md +++ b/content/tutorials/networkprotecols/socket.md @@ -1,5 +1,5 @@ --- -title: "" +title: "Sockets" aliases: - tutorials/all/Socket.html - tutorials/all/Socket.md @@ -12,7 +12,6 @@ Detailed information about this class can be found in [usocket](). The following example sets up a server which can accept 5 connections in parallel, create a new thread for each connected client, receives and sends back data then close the socket. ```python - import usocket import _thread import time @@ -59,7 +58,6 @@ while True: The following example sets up a client which can connect to a server with 2 non-blocking sockets, create a new thread to handle the non-blocking sockets. ```python - import socket import _thread import time @@ -147,8 +145,6 @@ _thread.start_new_thread(socket_thread, (p,)) ### Connecting to a server with non-blocking SSL wrapped socket ```python - - import socket import ssl import _thread diff --git a/content/tutorials/networkprotecols/webserver.md b/content/tutorials/networkprotecols/webserver.md new file mode 100644 index 0000000..4e8a411 --- /dev/null +++ b/content/tutorials/networkprotecols/webserver.md @@ -0,0 +1,33 @@ +--- +title: "HTTP Webserver Example" +aliases: + - tutorials/networks/webserver.html + - tutorials/networks/webserver.md + - chapter/tutorials/networks/webserver +--- + +Using the WiFi connection, we can create a simple webserver on the module + +```python +from network import WLAN +import socket + +wlan = WLAN() +wlan.init(mode=WLAN.STA, ssid="", auth=(WLAN.WPA2, "")) #you can use both STA or AP mode for the webserver + +sock = socket.socket(usocket.AF_INET, usocket.SOCK_STREAM) #use the socket on the WLAN (INET) adapter, and use stream (TCP) +sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #set the options to use IP addresses, and check the default option to reuse. +sock.bind(("192.168.4.1"), 80) #use the socket on this ip address, using this port. Change the IP address if you are using STA mode. + +sock.listen(5) #allow for 5 simultaneous connections + + +while True: + # Accept the connection of the clients + (clientsocket, address) = serversocket.accept() + # Reply with the webpage + + + + + diff --git a/content/tutorials/networks/_index.md b/content/tutorials/networks/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/tutorials/all/ble.md b/content/tutorials/networks/ble.md similarity index 83% rename from content/tutorials/all/ble.md rename to content/tutorials/networks/ble.md index aa94014..7bfee02 100644 --- a/content/tutorials/all/ble.md +++ b/content/tutorials/networks/ble.md @@ -8,24 +8,11 @@ aliases: At present, basic BLE functionality is available. More features will be implemented in the near future, such as pairing. This page will be updated in line with these features. -Full info on `bluetooth` can be found within [Bluetooth page]() of the Firmware API Reference. - -## Scan for BLE Devices - -Scan for all of the advertising devices within range of the scanning device. - -```python - -bluetooth.start_scan(10) # starts scanning and stop after 10 seconds -bluetooth.start_scan(-1) # starts scanning indefinitely until bluetooth.stop_scan() is called -``` - -## Raw Data from a BLE Device +## Scan for BLE devices A quick usage example that scans and prints the raw data from advertisements. ```python - from network import Bluetooth bluetooth = Bluetooth() @@ -35,12 +22,11 @@ while True: print(bluetooth.get_adv()) ``` -## Connect to a BLE Device +## Connect to a BLE device Connecting to a device that is sending advertisements. ```python - from network import Bluetooth import ubinascii bluetooth = Bluetooth() @@ -61,12 +47,11 @@ while True: print("Connected to device with addr = {}".format(ubinascii.hexlify(adv.mac))) ``` -## Connect to a BLE Device and Retrieve Data +## Connect to a BLE Device and retrieve data Connecting to a device named 'Heart Rate' and receiving data from it's services. ```python - from network import Bluetooth import time bt = Bluetooth() @@ -96,12 +81,11 @@ while True: time.sleep(0.050) ``` -## Retrieve the Name & Manufacturer from a BLE Device +## Connect to a BLE device and get name and manufacturer data Using `resolve_adv_data()` to attempt to retrieve the name and manufacturer data from the advertiser. ```python - import ubinascii from network import Bluetooth bluetooth = Bluetooth() diff --git a/content/tutorials/networks/ethernet.md b/content/tutorials/networks/ethernet.md new file mode 100644 index 0000000..d96622f --- /dev/null +++ b/content/tutorials/networks/ethernet.md @@ -0,0 +1,10 @@ +--- +title: "Ethernet Examples" +aliases: + - tutorials/networks/ethernet.html + - tutorials/networks/ethernet.md + - chapter/tutorials/networks/ethernet +--- + +Using the Power over Ethernet (PoE) adapter on the Pygate board, we are able to connect to the local area network. +>Note: Make sure you have flashed the Pygate firmware to your -py board! \ No newline at end of file diff --git a/content/tutorials/networks/lora/_index.md b/content/tutorials/networks/lora/_index.md new file mode 100644 index 0000000..d7d0c64 --- /dev/null +++ b/content/tutorials/networks/lora/_index.md @@ -0,0 +1,19 @@ +--- +title: "LoRa Examples" +aliases: +--- + +The following tutorials demonstrate the use of the LoRa functionality on the LoPy. LoRa can work in 2 different modes; **LoRa-MAC** (which we also call Raw-LoRa) and **LoRaWAN** mode. + +* **LoRaWAN mode** implements the full LoRaWAN stack for a class A device. It supports both OTAA and ABP connection methods, as well as advanced features like adding and removing custom channels to support "special" frequencies plans like the those used in New Zealand. There are two basic ways of accessing the LoraWAN network: + * [LoRaWAN ABP](../lora/lorawan-abp/) + * [LoRaWAN OTAA](../lora/lorawan-otaa/) +>Note: When using LoRaWAN, first register with one of the [networks](/gettingstarted/registration/lora/) + +* **LoRa-MAC mode** basically accesses de radio directly and packets are sent using the LoRa modulation on the selected frequency without any headers, addressing information or encryption. Only a CRC is added at the tail of the packet and this is removed before the received frame is passed on to the application. This mode can be used to build any higher level protocol that can benefit from the long range features of the LoRa modulation. Typical uses cases include LoPy to LoPy direct communication and a LoRa packet forwarder. + * [LoRa-MAC](../lora/lora-mac/) + + +* **Lopy to Lopy** You are also able to connect two devices to each other using LoRa frequencies. We have one example explaining more about that + * [Lopy to Lopy](../lora/module-module/) + diff --git a/content/tutorials/lora/lora-mac-nano-gateway.md b/content/tutorials/networks/lora/lora-mac-nano-gateway.md similarity index 100% rename from content/tutorials/lora/lora-mac-nano-gateway.md rename to content/tutorials/networks/lora/lora-mac-nano-gateway.md diff --git a/content/tutorials/lora/lora-mac.md b/content/tutorials/networks/lora/lora-mac.md similarity index 100% rename from content/tutorials/lora/lora-mac.md rename to content/tutorials/networks/lora/lora-mac.md diff --git a/content/tutorials/lora/lorawan-abp.md b/content/tutorials/networks/lora/lorawan-abp.md similarity index 100% rename from content/tutorials/lora/lorawan-abp.md rename to content/tutorials/networks/lora/lorawan-abp.md diff --git a/content/tutorials/lora/lorawan-nano-gateway.md b/content/tutorials/networks/lora/lorawan-nano-gateway.md similarity index 100% rename from content/tutorials/lora/lorawan-nano-gateway.md rename to content/tutorials/networks/lora/lorawan-nano-gateway.md diff --git a/content/tutorials/lora/lorawan-otaa.md b/content/tutorials/networks/lora/lorawan-otaa.md similarity index 100% rename from content/tutorials/lora/lorawan-otaa.md rename to content/tutorials/networks/lora/lorawan-otaa.md diff --git a/content/tutorials/lora/module-module.md b/content/tutorials/networks/lora/module-module.md similarity index 100% rename from content/tutorials/lora/module-module.md rename to content/tutorials/networks/lora/module-module.md diff --git a/content/tutorials/lora/rn2483-to-lopy.md b/content/tutorials/networks/lora/rn2483-to-lopy.md similarity index 100% rename from content/tutorials/lora/rn2483-to-lopy.md rename to content/tutorials/networks/lora/rn2483-to-lopy.md diff --git a/content/tutorials/lte/README.md b/content/tutorials/networks/lte/README.md similarity index 100% rename from content/tutorials/lte/README.md rename to content/tutorials/networks/lte/README.md diff --git a/content/tutorials/lte/_index.md b/content/tutorials/networks/lte/_index.md similarity index 64% rename from content/tutorials/lte/_index.md rename to content/tutorials/networks/lte/_index.md index 6d600e6..3a18f01 100644 --- a/content/tutorials/lte/_index.md +++ b/content/tutorials/networks/lte/_index.md @@ -7,3 +7,17 @@ aliases: The following tutorials demonstrate the use of the LTE CAT-M1 and NB-IoT functionality on cellular enabled Pycom modules. Our cellular modules support both LTE CAT-M1 and NB-IoT, these are new lower power, long range, cellular protocols. These are not the same as the full version of 2G/3G/LTE supported by cell phones, and require your local carriers to support them. At the time of writing, CAT-M1 and NB-IoT connectivity is not widely available so be sure to check with local carriers if support is available where you are. + +Both networks make can make use of the same example: +(Make sure you check the coverage map of your provider to confirm coverage in your area) +```python + +from network import LTE +import machine +lte = LTE() +lte.attach(band=20, apn="your apn") +while not lte.isattached()" + machine.idle() +print("LTE modem attached!") + +``` diff --git a/content/tutorials/lte/cat-m1.md b/content/tutorials/networks/lte/cat-m1.md similarity index 100% rename from content/tutorials/lte/cat-m1.md rename to content/tutorials/networks/lte/cat-m1.md diff --git a/content/tutorials/lte/imei.md b/content/tutorials/networks/lte/imei.md similarity index 100% rename from content/tutorials/lte/imei.md rename to content/tutorials/networks/lte/imei.md diff --git a/content/tutorials/lte/nb-iot.md b/content/tutorials/networks/lte/nb-iot.md similarity index 100% rename from content/tutorials/lte/nb-iot.md rename to content/tutorials/networks/lte/nb-iot.md diff --git a/content/tutorials/sigfox.md b/content/tutorials/networks/sigfox.md similarity index 99% rename from content/tutorials/sigfox.md rename to content/tutorials/networks/sigfox.md index c11b068..0a2d21e 100644 --- a/content/tutorials/sigfox.md +++ b/content/tutorials/networks/sigfox.md @@ -11,7 +11,6 @@ Before you start, make sure that your device was registered with [Sigfox](/getti The following tutorials demonstrate how to register and get started with the SiPy. The board can be configured for operation in various countries based upon specified RCZ zones (see the `Sigfox` class for more info). The SiPy, LoPy 4, and FiPy supports both uplink and downlink `Sigfox` messages as well as device to device communication via its FSK Mode `Sigfox`. ```python - from network import Sigfox import socket ​ diff --git a/content/tutorials/networks/wifisniffer.md b/content/tutorials/networks/wifisniffer.md new file mode 100644 index 0000000..af660e6 --- /dev/null +++ b/content/tutorials/networks/wifisniffer.md @@ -0,0 +1,29 @@ +--- +title: "WiFi Sniffer" +aliases: + +--- +A WiFi sniffer can be very useful when testing the presence of a mobile phone or other device. The following example will return the MAC addresses of devices in range. + +```python +from network import WLAN +import ubinascii + + +def pack_cb(pack): + mac = bytearray(6) + pk = wlan.wifi_packet() + control = pk.data[0] + subtype = (0xF0 & control) >> 4 + type = 0x0C & control + #print("Control:{}, subtype:{}, type:{}".format(control, subtype, type)) + if subtype == 4: + for i in range (0,6): + mac[i] = pk.data[10 + i] + print ("Wifi Node with MAC: {}".format(ubinascii.hexlify(mac))) + +wlan = WLAN(mode=WLAN.STA, antenna=WLAN.EXT_ANT) +wlan.callback(trigger=WLAN.EVENT_PKT_MGMT, handler=pack_cb) +wlan.promiscuous(True) + +``` \ No newline at end of file diff --git a/content/tutorials/all/wlan.md b/content/tutorials/networks/wlan.md similarity index 60% rename from content/tutorials/all/wlan.md rename to content/tutorials/networks/wlan.md index 162916a..8d95c9d 100644 --- a/content/tutorials/all/wlan.md +++ b/content/tutorials/networks/wlan.md @@ -1,53 +1,59 @@ --- -title: "WLAN" +title: "WiFi Examples" aliases: - - tutorials/all/wlan.html - - tutorials/all/wlan.md - - chapter/tutorials/all/wlan + - tutorials/networks/wlan.html + - tutorials/networks/wlan.md + - chapter/tutorials/networks/wlan --- -The WLAN is a system feature of all Pycom devices, therefore it is enabled by default. +The WLAN (WiFi) is a system feature of all Pycom devices, therefore it is enabled by default. -In order to retrieve the current WLAN instance, run: +>Note: Changing the WLAN settings while using the Telnet server might break the wireless connection to the device permanently. Please use caution or a USB cable :) + +On this page, we cover: +1. [Connecting to the Device](#connecting-to-the-device) +2. [Connecting to a Router](#connecting-to-a-router) + +>Note: Generally, code in either sections is applicable to both WLAN modes. + +## Connecting to the Device +Using the WLAN class from network, you can change the name (SSID) and security settings (auth) of the access point. ```python +from network import WLAN +wlan = WLAN(mode=WLAN.AP) ->>> from network import WLAN ->>> wlan = WLAN() # we call the constructor without params +wlan.init(ssid="hello world", auth=None) +#use the line below to apply a password +#wlan.init(ssid="hi", auth=(WLAN.WPA2, "eightletters")) ``` - -The current mode (`WLAN.AP` after power up) may be checked by running: - -```python - ->>> wlan.mode() -``` - -{{% hint style="danger" %}} - -When changing the WLAN mode, if following the instructions below, the WLAN connection to the Pycom device will be broken. This means commands will not run interactively over WiFi. - -**There are two ways around this:** - -1. Put this setup code into the `boot.py` file of the Pycom device so that it gets executed automatically after reset. -2. Duplicate the REPL on UART. This way commands can be run via Serial USB. - - -{{% /hint %}} +The device will not be able to access the internet, but you will be able to run a simple webserver. By default, the ip address will be configured to `192.168.4.1`. ## Connecting to a Router The WLAN network class always boots in `WLAN.AP` mode; to connect it to an existing network, the WiFi class must be configured as a station: ```python - from network import WLAN +import machine wlan = WLAN(mode=WLAN.STA) + +wlan.connect(ssid='ssid', auth=(WLAN,WPA2, 'password')) +while not wlan.isconnected(): + machine.idle() +print("WiFi connected succesfully") +print(wlan.ifconfig()) ``` -Now the device may proceed to scan for networks: +>Note: If the device hangs in the `while` loop, probably your network is out of reach, or you made a mistake entering your WiFi credentials. + +### Scan +If you are not always in reach of your network (maybe you have a moving device), you can also scan for the network using the example below. ```python +from network import WLAN +import machine +wlan = WLAN(mode=WLAN.STA) nets = wlan.scan() for net in nets: @@ -60,9 +66,9 @@ for net in nets: break ``` -## Assigning a Static IP Address at Boot Up +### Assigning a Static IP Address at Boot Up -If the users wants their device to connect to a home router upon boot up, using with a fixed IP address, use the following script as `/flash/boot.py`: +If you want to connect your device to a wireless router, and access it from a telnet terminal, you can use the following example to assign a fixed ip address (`192.168.1.10`, check with your wifi network for possibilities), use the following script as `/boot.py`: ```python @@ -70,10 +76,10 @@ import machine from network import WLAN wlan = WLAN() # get current object, without changing the mode -if machine.reset_cause() != machine.SOFT_RESET: +if machine.reset_cause() != machine.SOFT_RESET: #do not reset the wireless connection on soft reset. wlan.init(mode=WLAN.STA) # configuration below MUST match your home router settings!! - wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.178.1', '8.8.8.8')) + wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.1.10', '8.8.8.8')) # (ip, subnet_mask, gateway, DNS_server) if not wlan.isconnected(): # change the line below to match your network ssid, security and password @@ -86,7 +92,7 @@ if not wlan.isconnected(): Notice how we check for the reset cause and the connection status, this is crucial in order to be able to soft reset the LoPy during a telnet session without breaking the connection. {{% /hint %}} -## Multiple Networks using a Static IP Address +### Multiple Networks using a Static IP Address The following script holds a list with nets and an optional list of `wlan_config` to set a fixed IP @@ -100,7 +106,8 @@ os.dupterm(uart) known_nets = { '': {'pwd': ''}, - '': {'pwd': '', 'wlan_config': ('10.0.0.114', '255.255.0.0', '10.0.0.1', '10.0.0.1')}, # (ip, subnet_mask, gateway, DNS_server) + '': {'pwd': '', + 'wlan_config': ('10.0.0.114', '255.255.0.0', '10.0.0.1', '10.0.0.1')}, # (ip, subnet_mask, gateway, DNS_server) } if machine.reset_cause() != machine.SOFT_RESET: @@ -133,29 +140,26 @@ if machine.reset_cause() != machine.SOFT_RESET: wl.init(mode=WLAN.AP, ssid=original_ssid, auth=original_auth, channel=6, antenna=WLAN.INT_ANT) ``` -## Connecting to a WPA2-Enterprise network - -### Connecting with EAP-TLS: +### Connecting to a WPA2-Enterprise network +* **Connecting with EAP-TLS:** Before connecting, obtain and copy the public and private keys to the device, e.g. under location `/flash/cert`. If it is required to validate the server's public key, an appropriate CA certificate (chain) must also be provided. ```python - from network import WLAN wlan = WLAN(mode=WLAN.STA) wlan.connect(ssid='mywifi', auth=(WLAN.WPA2_ENT,), identity='myidentity', ca_certs='/flash/cert/ca.pem', keyfile='/flash/cert/client.key', certfile='/flash/cert/client.crt') ``` -### Connecting with EAP-PEAP or EAP-TTLS: - +* **Connecting with EAP-PEAP or EAP-TTLS:** In case of EAP-PEAP (or EAP-TTLS), the client key and certificate are not necessary, only a username and password pair. If it is required to validate the server's public key, an appropriate CA certificate (chain) must also be provided. ```python - from network import WLAN wlan = WLAN(mode=WLAN.STA) wlan.connect(ssid='mywifi', auth=(WLAN.WPA2_ENT, 'username', 'password'), identity='myidentity', ca_certs='/flash/cert/ca.pem') ``` + diff --git a/content/tutorials/wifi.md b/content/tutorials/wifi.md new file mode 100644 index 0000000..a654f82 --- /dev/null +++ b/content/tutorials/wifi.md @@ -0,0 +1,7 @@ +--- +title: "WiFi Examples" +aliases: + - tutorials/wifi.html + - tutorials/wifi.md + - chapter/tutorials/wifi +--- diff --git a/content/updatefirmware/OTA.md b/content/updatefirmware/OTA.md new file mode 100644 index 0000000..e6c10bd --- /dev/null +++ b/content/updatefirmware/OTA.md @@ -0,0 +1,19 @@ +--- +title: "Over The Air" +aliases: + - updatefirmwate/OTA.html + - updatefirmwate/OTA.md + - chapter/updatefirmwate/OTA + +--- + +There are several ways to update the firmware of your device Over the Air. One way is through using the [pybytes](https://pybytes.pycom.io/devices) platform. + +## Pybytes +1. Go to your device (make sure it is connected to the platform!) +2. Click on the configuration tab +3. Use the OTA firmware update tool here. + +## Own service + + diff --git a/content/updatefirmware/_index.md b/content/updatefirmware/_index.md new file mode 100644 index 0000000..05078a8 --- /dev/null +++ b/content/updatefirmware/_index.md @@ -0,0 +1,14 @@ +--- +title: "Update Firmware" +aliases: + - updatefirmware/introduction.html + - updatefirmware/introduction.md + - chapter/updatefirmware + +disable_breadcrumbs: true +--- +You can update the firmware of several different boards using different methods: +* [Device](/updatefirmware/device/) +* [Device (OTA)](/updatefirmware/OTA/) +* [Expansion Board](/updatefirmware/expansionboard/) +* [LTE Modem](/updatefirmware/ltemodem/) diff --git a/content/updatefirmware/device.md b/content/updatefirmware/device.md new file mode 100644 index 0000000..45c766c --- /dev/null +++ b/content/updatefirmware/device.md @@ -0,0 +1,48 @@ +--- +title: "Updating Device Firmware" +aliases: + - updatefirmware/device.html + - updatefirmware/device.md + - chapter/updatefirmware/device +--- + +We strongly recommend you to upgrade your firmware to the latest version as we are constantly making improvements and adding new features to the devices. + +Here are the download links to the update tool. Please download the appropriate one for your OS and follow the instructions on the screen. + +* [Windows](https://software.pycom.io/findupgrade?product=pycom-firmware-updater&type=all&platform=win32&redirect=true) +* [macOS](https://software.pycom.io/findupgrade?product=pycom-firmware-updater&type=all&platform=macos&redirect=true) (10.11 or Higher) +* [Linux](https://software.pycom.io/findupgrade?product=pycom-firmware-updater&type=all&platform=unix&redirect=true) (requires `dialog` and `python-serial` package) + +{{% hint style="info" %}} +Previous versions of firmware are available for download [here](/advance/downgrade). +{{% /hint %}} +Jum to [common issues](#common-issues) +## Updating Device Firmware + +The basic firmware upgrade procedure can be found below, please follow these steps carefully: + +After you're done with upgrading, you can use the Pymakr Plugins to upload and run programs in your device. + +1. Before connecting your module to a Pysense / Pytrack board, you should update the firmware on the Pysense/Pytrack board. Instructions on how to do this can be found [here](/updatefirmware/expansionboard/). +2. Disconnect your device from your computer +3. Insert module into Expansion Board + * On Expansionboard 2.0, connect a jumper cable or wire between `G23` and `GND` +4. Reconnect the board via USB to your computer +5. Run the Firmware Upgrade tool and click through the menus + +![](/gitbook/assets/firmware-update-2.png) + +6. The firmware version of your device is now upgraded to the latest version. + * On Expansionboard 2.0, remove the jumper cable. + +After you're done with upgrading, you can use the Pymakr Plugins to upload and run programs in your device. + +## Common issues: + +* If you are having any issues, make sure the **TX and RX jumpers** are present on your Expansion Board, as the jumpers sometimes come loose in the box during transport. Without these jumpers, the updater will fail. +* On MacOS, the firmware upgrade tool needs access to the `/tmp` folder +* On MacOS, there is an issue with signing of the firmware tool. Go to system preferences --> Security & Privacy --> General, and click "Allow" for the Pycom Firmware Updater tool. + + + diff --git a/content/pytrackpysense/installation/firmware.md b/content/updatefirmware/expansionboard.md similarity index 97% rename from content/pytrackpysense/installation/firmware.md rename to content/updatefirmware/expansionboard.md index 4e50c5d..ab39728 100644 --- a/content/pytrackpysense/installation/firmware.md +++ b/content/updatefirmware/expansionboard.md @@ -1,9 +1,9 @@ --- -title: "Updating Firmware" +title: "Updating Expansion Board Firmware " aliases: - - pytrackpysense/installation/firmware.html - - pytrackpysense/installation/firmware.md - - chapter/pytrackpysense/installation/firmware + - updatefirmware/expansionboard.html + - updatefirmware/expansionboard.md + - chapter/updatefirmware/expansionboard --- To update the firmware on the Pysense/Pytrack/Pyscan/Expansion Board v3, please see the following instructions. The firmware of Pysense/Pytrack/Pyscan/Expansion Board v3 can be updated via the USB port using the terminal tool, `DFU-util`. diff --git a/content/tutorials/lte/firmware.md b/content/updatefirmware/ltemodem.md similarity index 99% rename from content/tutorials/lte/firmware.md rename to content/updatefirmware/ltemodem.md index a103b7f..f4e9b8c 100644 --- a/content/tutorials/lte/firmware.md +++ b/content/updatefirmware/ltemodem.md @@ -5,8 +5,6 @@ aliases: - tutorials/lte/firmware.md - chapter/tutorials/lte/firmware --- -search: false ---- # Modem Firmware Update diff --git a/content/updatefirmware/ota.md b/content/updatefirmware/ota.md new file mode 100644 index 0000000..0f21355 --- /dev/null +++ b/content/updatefirmware/ota.md @@ -0,0 +1,18 @@ +--- +title: "Over The Air" +aliases: + - updatefirmwate/OTA.html + - updatefirmwate/OTA.md + - chapter/updatefirmwate/OTA + +--- + +There are several ways to update the firmware of your device Over the Air. One way is through using the [pybytes](https://pybytes.pycom.io/devices) platform. +## Pybytes +1. Go to your device (make sure it is connected to the platform!) +2. Click on the configuration tab +3. Use the OTA firmware update tool here + +## Own service + + diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for Expansion Board(8286-00033P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-Expansion Board(8286-00033P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for Expansion Board(8286-00033P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-Expansion Board(8286-00033P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for FiPy(8217-00091P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-FiPy(8217-00091P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for FiPy(8217-00091P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-FiPy(8217-00091P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for G01(8217-00087P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-G01(8217-00087P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for G01(8217-00087P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-G01(8217-00087P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for GPy(8217-00090P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-GPy(8217-00090P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for GPy(8217-00090P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-GPy(8217-00090P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for L01(f8217-00088P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-L01(f8217-00088P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for L01(f8217-00088P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-L01(f8217-00088P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for L04(8286-00032P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-L04(8286-00032P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for L04(8286-00032P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-L04(8286-00032P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for LoPy 4(8286-00027P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-LoPy-4(8286-00027P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for LoPy 4(8286-00027P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-LoPy-4(8286-00027P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for Pyscan(8286-00031P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-Pyscan(8286-00031P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for Pyscan(8286-00031P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-Pyscan(8286-00031P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for Pysense(8286-00030P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-Pysense(8286-00030P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for Pysense(8286-00030P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-Pysense(8286-00030P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for Pytrack(8286-00029P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-Pytrack(8286-00029P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for Pytrack(8286-00029P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-Pytrack(8286-00029P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for Universal OEM reference board(8286-00034P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-Universal-OEM-reference-board(8286-00034P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for Universal OEM reference board(8286-00034P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-Universal-OEM-reference-board(8286-00034P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for W01(8286-00028P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-W01(8286-00028P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for W01(8286-00028P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-W01(8286-00028P)-20190523.pdf diff --git a/static/gitbook/assets/RoHs_declarations/RoHS for WiPy 3(8286-00026P)-20190523.pdf b/static/gitbook/assets/RoHs_declarations/RoHS-for-WiPy-3(8286-00026P)-20190523.pdf similarity index 100% rename from static/gitbook/assets/RoHs_declarations/RoHS for WiPy 3(8286-00026P)-20190523.pdf rename to static/gitbook/assets/RoHs_declarations/RoHS-for-WiPy-3(8286-00026P)-20190523.pdf diff --git a/static/gitbook/assets/pygate-case.jpg b/static/gitbook/assets/pygate-case.jpg new file mode 100644 index 0000000..314562c Binary files /dev/null and b/static/gitbook/assets/pygate-case.jpg differ diff --git a/themes/doc-theme/static/css/doc-theme.css b/themes/doc-theme/static/css/doc-theme.css index 1069263..16176b6 100644 --- a/themes/doc-theme/static/css/doc-theme.css +++ b/themes/doc-theme/static/css/doc-theme.css @@ -325,7 +325,7 @@ code { } .primary--text { - color: #00cc96; + color: green; /*#00cc96; */ } .v-window { diff --git a/themes/doc-theme/static/css/vuetify.css b/themes/doc-theme/static/css/vuetify.css index 703f9a4..dfad456 100644 --- a/themes/doc-theme/static/css/vuetify.css +++ b/themes/doc-theme/static/css/vuetify.css @@ -2743,10 +2743,19 @@ video { -webkit-transform: scale(0) rotate(-45deg); transform: scale(0) rotate(-45deg); } -.blockquote { - padding: 16px 0 16px 24px; - font-size: 18px; +/*changes 09-07-2020: + removed . before blockquote + changed padding from 16px 0px 16px 24px + changed font-size from 18px + added background-color + added border-radius +*/ +blockquote { + padding: 10px 0 10px 10px; + font-size: 14px; font-weight: 300; + background-color:rgba(0,128,0,0.7); + border-radius: 5px; } code, kbd { @@ -2756,17 +2765,25 @@ kbd { font-size: 85%; font-weight: 900; } -code:after, + +/* changes 09-07-2020: + commented code::before and code:after + changed code color + commented box-shadow +*/ + +/*code:after,*/ kbd:after, -code:before, +/*code:before, */ kbd:before { content: "\00a0"; letter-spacing: -1px; } code { background-color: #f5f5f5; - color: #bd4147; + color: #1E1E3C; /*#bd4147; box-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12); + */ } kbd { background: #616161; @@ -2850,8 +2867,11 @@ ol { font-size: 12px !important; font-weight: 400; } +/* changes 09-07-2020: + changed margin-bottom from 16px + */ p { - margin-bottom: 16px; + margin-bottom: 10px; } .overflow-hidden { overflow: hidden;