Difference between revisions of "Pusher"

From Kevin Darrah Wiki
Jump to: navigation, search
(Replaced content with "* <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...")
 
(17 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 "trigBoardGo to the [[TrigBoard]] page for the latestIf 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 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
 
}}
 
 
 
 
 
= 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]
 

Latest revision as of 13:22, 6 January 2018

  • 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 HERE