|
|
(14 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | ...Back to [[Projects:]]
| + | * <span style="color:red">NOTE!! This is a legacy page - this board is now called "trigBoard" Go to the [[TrigBoard]] page for the latest. If you need references to old revisions, please contact me [http://www.kdcircuits.com HERE]</span> |
− | | |
− | [[File:PusherHeader.png|600px]]
| |
− | | |
− | The Pusher Board is an IoT project that does one thing - it pushes you a notification triggered by a digital input. Well, it's much more than that, but this is the inspiration. I wanted to design a WiFi board that essentially sleeps most of its life, but when that door switch, flood sensor, motion sensor, etc.. gets triggered, I just want a notification immediately on my phone. And that's about it... a perfect IoT device in the background doing its job.
| |
− | | |
− | = Latest Release Version 4 = | |
− | | |
− | [[File:PusherHookedUp.png|600px]]
| |
− | | |
− | * Simple IoT development board that was designed to trigger "Push Notifications" on a smart phone/tablet based on a trigger event.
| |
− | * Unique low-power front-end to enable sub 1uA sleep current - uses a pulse to trigger wake-up, so even if door/window/etc is opened, the same ultra low currents can be maintained. Compare to standard pull-up/down resistor based digital input designs with significantly higher leakage current.
| |
− | * The board will wake itself up once an hour to check the battery voltage - if running low, a push notification is sent to warn the user. This timer can be used to check other things as well - temperature changes, accelerometers, or other environmental sensors.
| |
− | * Based on ESP8266 WiFi Module (ESP-12S) - all source code is available for download and developed in the popular Arduino IDE.
| |
− | * Battery Input can be any Lithium Polymer 3.7V - standard micro JST connector jack is used (please double check polarity),any of [https://www.adafruit.com/category/574 these] would work nicely.
| |
− | * Sensor input to trigger the "Wake Up" is a simple passive switch. Typically a standard magnetic door/window switch is used and the board can be configured to wake on the "opening" (Normally Closed) or "closure" (Normally Open) of the contact. Solder jumpers set this - Normally Closed is Default, so standard door/window switches wake the board up when opened.
| |
− | * Battery Charging On-Board via MicroUSB - set for 4.2V at 500mA. 5V input pads broken out for energy harvesting experimentation.
| |
− | * Dimensions only 0.8" x 1.6 " (20.32mm x 40.64mm)
| |
− | | |
− | [[File:PusherV4diagram.png|700px]]
| |
− | | |
− | == What is the Pusher Board? ==
| |
− | coming soon...
| |
− | | |
− | == Purchase Pusher Board ==
| |
− | coming soon...
| |
− | | |
− | == Pusher Board Operation ==
| |
− | coming soon...
| |
− | | |
− | == Pusher Board Base Firmware ==
| |
− | | |
− | Note! the board is preloaded with the base firmware out-of-the-box, but if you want to develop/modify your own firmware, this section will go through the steps for getting the base code to compile.
| |
− | | |
− | Base Firmware Downloads:
| |
− | [http://kevindarrah.com/micro/Pusher/pusherRelease_12_02_17.zip Released 12/02/17]
| |
− | | |
− | Base Firmware Developed on Arduino V1.8.3 - can download [https://www.arduino.cc/en/Main/OldSoftwareReleases#previous here]
| |
− | | |
− | Then you'll find that the code does not compile and that's because you need several libraries and the board manager installed. Here's what you need:
| |
− | | |
− | First, go to File>>Preferences and add this URL to to the "Additional Boards Manager URL". http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json
| |
− | | |
− | [[File:BoardManagerURL.png|400px]] | |
− | | |
− | Now, the ESP8266 boards will be available for installation. Go to Tools>>Board>>Boards Manager... Search for ESP8266, and go ahead and click install. Note, I'm using v2.3.0
| |
− | | |
− | [[File:ESP8266Install.png|400px]]
| |
− | | |
− | After the boards are installed, you can select any of the ESP8266 boards out there from the Board Selection. For the Pusher board, I have been using the Adafruit Huzzah, here are my settings. Note that I always upload as fast as possible:
| |
− | | |
− | [[File:Pusher Huzzah Settings.png|400px]]
| |
− | | |
− | Next, you'll need to install the specific Arduino Libraries I'm using in the base code. The first one is is the [https://github.com/tzapu/WiFiManager WiFi Manager by tzapu] - the easiest way to install the library is to go to Sketch>>Include Library>>Manage Libraries. Then type in WIFImanager. Go ahead and install the library - note I'm using v0.12.0
| |
− | | |
− | [[File:WiFiManager.png|400px]]
| |
− | | |
− | Do the same for the [http://arduinojson.org/ Arduino JSON library by Benoit Blanchon] - can just search for JSON. I'm using v5.11.1
| |
− | | |
− | [[File:ArduinoJSON.png|400px]]
| |
− | | |
− | Then that should be it - the other libraries are automatically installed with the ESP8266 board manager.
| |
− | | |
− | See the "Testing and Programming" section below for information on loading the code over a wired USB-Serial connection. The other option is to load code wirelessly "OTA - Over the Air". In the "Pusher Board Operation" section this is shown.
| |
− | | |
− | | |
− | == Pusher Board Projects ==
| |
− | coming soon...
| |
− | | |
− | == Pusher Projects ==
| |
− | coming soon...
| |
− | | |
− | == Testing and Programming ==
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://youtu.be/UXrrbPTy5oA
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | Note that it may take a few tries to get it to upload, so don't give up if it fails after a few tries.
| |
− | | |
− | Also, for development, the USB connector for charging can also power the board - here's an example setup:
| |
− | | |
− | [[File:PusherDevSetup.png|400px]]
| |
− | | |
− | = Version 1 =
| |
− | | |
− | [[File:Screen Shot 2017-06-04 at 1.38.08 PM.png|600px]]
| |
− | | |
− | Very first prototype board
| |
− | * Mostly through hole components for easy testing and assembly
| |
− | * ESP8266 based (ESP-12S module)
| |
− | * Wake on regular timer interval - set for 1hr during my testing.
| |
− | * Wake on Digital Input - Normally Closed type contact, so works nicely with door sensors.
| |
− | * Tested sleep current <1uA that's years and years of battery life.
| |
− | * Max Battery Voltage is ~4.2VDC, so designed to be used with standard Lithium Batteries.
| |
− | * <span style="color:red">Note: this board does require re-work in order to exercise all of the functionality. Please watch assembly videos below for detailed information</span>
| |
− | | |
− | Here's a quick demo!
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=uZfLxPxB040
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | Installed on my door for testing:
| |
− | | |
− | [[File:PusherOnDoor.png|400px]]
| |
− | | |
− | == Schematic ==
| |
− | | |
− | [[File:PusherV1SCH.png|800px]]
| |
− | | |
− | == Purchase ==
| |
− | given to [https://www.patreon.com/kdarrah Patrons]
| |
− | | |
− | == Parts ==
| |
− | | |
− | Parts list [http://www.kevindarrah.com/wp-content/uploads/2017/06/PusherV1.xlsx HERE]
| |
− | | |
− | == Assembly ==
| |
− | | |
− | Soldering the board together:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=By7cdjjjARA
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | The rework changes:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=FK6x7CBLZwU
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | Battery Voltage Measurement Circuit Change:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=GjaDDxgOrZs
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | == Tutorials ==
| |
− | | |
− | Programming and Testing the board:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=4uPHQPIezF8
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | That Sample Code [http://www.kevindarrah.com/download/arduino_code/pusherV1_Sample.ino HERE]
| |
− | | |
− | Pusher Board Sending Push Notifications with Pushbullet and hardware walkthrough
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=-HtSMk6jyEo
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | I'm using Pushbullet for the Notifications: https://www.pushbullet.com (~$40/yr for unlimited pushes - 500/mo for free version)
| |
− | That's nice because you don't need to develop your own app or anything. Just set up an account with them and you're good to go. Go to settings, account, and API - generate your token and copy that whole thing into the code - should be something like o.xyz...
| |
− | THE CODE [http://kevindarrah.com/download/arduino_code/pusher_PUSHBULLET.ino HERE]
| |
− | Richard's Channel: https://www.youtube.com/channel/UCLgqthbPlZGr8DuHDKKr9EA
| |
− | And where I found the Pushbullet API code: https://steve0hh.github.io/2016/12/04/how-to-send-push-notifications-using-esp8266.html
| |
− | <span style="color:red">Update 7/28/17 I did have two instances where the board failed to go back to sleep after wake. I had to unplug the battery to resolve</span>
| |
− | | |
− | And if you're having problems getting the Arduino IDE setup, check out this video:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=dgw8tnPFGSY
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | The .json url [http://arduino.esp8266.com/stable/package_esp8266com_index.json HERE]
| |
− | | |
− | = Version 2 =
| |
− | | |
− | [[File:PusherV2gerb.png|600px]]
| |
− | | |
− | Changes to V2:
| |
− | * Fixed up the issues from V1 - mostly the circuit to pulse-wake the board
| |
− | * Added in support for Normally Open style contacts, so now with an on-board switch, the board can either be woken up from a contact closing or opening.
| |
− | * JST connectors for battery and sensor input - can use [https://www.amazon.com/gp/product/B0167X4D9M/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1 these]
| |
− | | |
− | == Schematic ==
| |
− | | |
− | [[File:PusherV2sch.png|800px]]
| |
− | | |
− | == Parts ==
| |
− | | |
− | Parts list [http://www.kevindarrah.com/wp-content/uploads/2017/08/PusherV2.xlsx HERE]
| |
− | | |
− | == Assembly ==
| |
− | | |
− | Soldering the board is pretty much the same as V1.
| |
− | | |
− | The Q4 Rework Change:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://youtu.be/MQ7WJsdvSTA
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | = Version 3 =
| |
− | | |
− | [[File:PusherV3front.png|300px]] [[File:PusherV3back.png|278px]]
| |
− | | |
− | * Miniaturized version - all surface mount components
| |
− | * Dimensions only 0.8" x 1.6 " (20.32mm x 40.64mm)
| |
− | * Optimized circuit design from V2
| |
− | * Battery Charging on board via MicroUSB connector
| |
− | | |
− | == Schematic ==
| |
− | | |
− | [[File:PusherV3schemo.png|800px]]
| |
− | | |
− | == Parts ==
| |
− | | |
− | Parts list [http://www.kevindarrah.com/wp-content/uploads/2017/09/PusherV3-BOM.xlsx HERE]
| |
− | | |
− | [https://youtu.be/hRYtdxOmJgk Ordering Stencils Tutorial]
| |
− | [https://youtu.be/UpQykPK9-ks Ordering Parts Tutorial]
| |
− | | |
− | == Assembly ==
| |
− | | |
− | Since this board is all surface mount - a top paste stencil is recommended. [http://www.kevindarrah.com/wp-content/uploads/2017/09/PusherV3_1_SolderPaste_Top.GTP_.zip HERE] is the file to get this made.
| |
− | | |
− | I usually get my stainless stencils from [http://www.electrodragon.com/product/pcb-stencil-service-frameless/ Electrodragon], but you can go with [https://www.pcbway.com PCBway] or you could even get a plastic stencil from [https://www.pololu.com/product/446 Pololu]. I would only recommend a stainless stencil for this job though.
| |
− | | |
− | Before you take start the assembly, check [https://www.youtube.com/watch?v=qqoHTKhIBRo this video] out I made a while back
| |
− | | |
− | Tools I use:
| |
− | Soldering Station [https://www.amazon.com/gp/product/B00ANZRT4M/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1 Hakko FX888D] and I like a [https://www.amazon.com/Hakko-T18-BR02-Soldering-FX-8801-Conical/dp/B00762AGYU/ref=pd_sim_328_2?_encoding=UTF8&pd_rd_i=B00762AGYU&pd_rd_r=K5RJ0Q1JNNW5W4P97F4K&pd_rd_w=YbtRE&pd_rd_wg=tC0mS&psc=1&refRID=K5RJ0Q1JNNW5W4P97F4K these tips]
| |
− | Hot Air Station here: https://www.amazon.com/gp/product/B00ITMPQS2/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1
| |
− | Solder Paste: SMD291SNL10 (I keep mine refrigerated when not in use, then sit out for an hour or so before I need it)
| |
− | https://www.digikey.com/product-detail/en/chip-quik-inc/SMD291SNL10/SMD291SNL10-ND/2057272
| |
− | Get a decent [https://www.amazon.com/gp/product/B000LDG2HQ/ref=oh_aui_search_detailpage?ie=UTF8&psc=1 Loupe]
| |
− | Quality [https://www.amazon.com/gp/product/B00FZPEWI6/ref=oh_aui_search_detailpage?ie=UTF8&psc=1 tweezers]
| |
− | And some good [https://www.amazon.com/gp/product/B01GRJ92T2/ref=oh_aui_search_detailpage?ie=UTF8&psc=1 Flux]
| |
− | | |
− | This board is so tiny and dense that I couldn't place the silk screen designators, so here's where all of the parts go:
| |
− | | |
− | [[File:PusherV3topASSY.png|400px]] [[File:PusherV3botASSY.png|400px]]
| |
− | | |
− | Full Assembly Video:
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://www.youtube.com/watch?v=kSt96169Z2U
| |
− | |dimensions=560x315
| |
− | }}
| |
− | | |
− | == Programming ==
| |
− | | |
− | {{#evt:
| |
− | service=youtube
| |
− | |id=https://youtu.be/AAt3OcIzOUI
| |
− | |dimensions=560x315
| |
− | }}
| |
− | [http://kevindarrah.com/download/arduino_code/pusherV3_Sample.ino Pusher V3 Sample]
| |