From 87475856a131f3dd66b67467bb3f4fd50d236738 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 3 Jul 2020 00:37:18 -0400 Subject: [PATCH] updd --- .../code/ATTINYPROGRAMMER_IS_IN_RESOURCES | 0 Attiny_Solar_Energy_Harvest/docs/26.log | 2 +- Attiny_Solar_Energy_Harvest/docs/26.pdf | Bin 144157 -> 144157 bytes Attiny_Solar_Energy_Harvest/docs/27.aux | 30 ++ Attiny_Solar_Energy_Harvest/docs/27.log | 365 ++++++++++++++++ Attiny_Solar_Energy_Harvest/docs/27.tex | 392 ++++++++++++++++++ Attiny_Solar_Energy_Harvest/docs/27.tex~ | 384 +++++++++++++++++ Attiny_Solar_Energy_Harvest/docs/27.tez | 384 +++++++++++++++++ Attiny_Solar_Energy_Harvest/docs/28.aux | 31 ++ Attiny_Solar_Energy_Harvest/docs/28.log | 381 +++++++++++++++++ Attiny_Solar_Energy_Harvest/docs/28.pdf | Bin 0 -> 144865 bytes Attiny_Solar_Energy_Harvest/docs/28.tex | 392 ++++++++++++++++++ Attiny_Solar_Energy_Harvest/docs/28.tex~ | 392 ++++++++++++++++++ 13 files changed, 2752 insertions(+), 1 deletion(-) create mode 100644 Attiny_Solar_Energy_Harvest/code/ATTINYPROGRAMMER_IS_IN_RESOURCES create mode 100644 Attiny_Solar_Energy_Harvest/docs/27.aux create mode 100644 Attiny_Solar_Energy_Harvest/docs/27.log create mode 100644 Attiny_Solar_Energy_Harvest/docs/27.tex create mode 100644 Attiny_Solar_Energy_Harvest/docs/27.tex~ create mode 100644 Attiny_Solar_Energy_Harvest/docs/27.tez create mode 100644 Attiny_Solar_Energy_Harvest/docs/28.aux create mode 100644 Attiny_Solar_Energy_Harvest/docs/28.log create mode 100644 Attiny_Solar_Energy_Harvest/docs/28.pdf create mode 100644 Attiny_Solar_Energy_Harvest/docs/28.tex create mode 100644 Attiny_Solar_Energy_Harvest/docs/28.tex~ diff --git a/Attiny_Solar_Energy_Harvest/code/ATTINYPROGRAMMER_IS_IN_RESOURCES b/Attiny_Solar_Energy_Harvest/code/ATTINYPROGRAMMER_IS_IN_RESOURCES new file mode 100644 index 0000000..e69de29 diff --git a/Attiny_Solar_Energy_Harvest/docs/26.log b/Attiny_Solar_Energy_Harvest/docs/26.log index 31474cf..f1cde29 100644 --- a/Attiny_Solar_Energy_Harvest/docs/26.log +++ b/Attiny_Solar_Energy_Harvest/docs/26.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2019.8.17) 2 JUN 2020 00:53 +This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2019.8.17) 3 JUL 2020 00:30 entering extended mode restricted \write18 enabled. %&-line parsing enabled. diff --git a/Attiny_Solar_Energy_Harvest/docs/26.pdf b/Attiny_Solar_Energy_Harvest/docs/26.pdf index ece5b4bf591e0892ef94fa0377e1691a6dfebac8..f0521e895beea9adeaa471199d645fcbea6d18f7 100644 GIT binary patch delta 138 zcmbRHjAQOIj)oS-ElgbMI_3t(20&zLple{FZeXCU$))d`pW>2OlB%HLVr67tWMBYS zvfWIbDVfXJ&C=P~!pYg#(9z7<)Xc)w(#_1t+{MV$%+bWj$=KDvPQiwdlI?d4nH(7b DfY7~ozWFIGi6yBD8ZK5wAX&JQ z?Plss$z0B6MwTwdrbebFmS!&ICT8Y_W~R patch level 3 +Babel <3.9r> and hyphenation patterns for 3 language(s) loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo +File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 99. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2017/01/12 v0.06k Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen103 +\Gin@req@width=\dimen104 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2016/02/21 v3.3-144 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2016/05/22 v1.7-166 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 67. +\captionmargin=\dimen105 +\captionmargin@=\dimen106 +\captionwidth=\dimen107 +\caption@tempdima=\dimen108 +\caption@indent=\dimen109 +\caption@parindent=\dimen110 +\caption@hangindent=\dimen111 +) +\c@ContinuedFloat=\count88 +) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2016/05/14 v3.1 Provides the ifpdf switch +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count89 +\Gm@cntv=\count90 +\c@Gm@tempcnt=\count91 +\Gm@bindingoffset=\dimen112 +\Gm@wd@mp=\dimen113 +\Gm@odd@mp=\dimen114 +\Gm@even@mp=\dimen115 +\Gm@layoutwidth=\dimen116 +\Gm@layoutheight=\dimen117 +\Gm@layouthoffset=\dimen118 +\Gm@layoutvoffset=\dimen119 +\Gm@dimlist=\toks15 +) (./27.aux) +\openout1 = `27.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. + +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count92 +\scratchdimen=\dimen120 +\scratchbox=\box26 +\nofMPsegments=\count93 +\nofMParguments=\count94 +\everyMPshowfont=\toks16 +\MPscratchCnt=\count95 +\MPscratchDim=\dimen121 +\MPnumerator=\count96 +\makeMPintoPDFobject=\count97 +\everyMPtoPDFconversion=\toks17 +) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2016/05/21 v0.22 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty +Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +38. +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 456. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: End \AtBeginDocument code. + +*geometry* detected driver: dvips +*geometry* verbose mode - [ preamble ] result: +* driver: dvips +* paper: custom +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* vratio: 1:1 +* modes: +* h-part:(L,W,R)=(54.2025pt, 325.215pt, 54.2025pt) +* v-part:(T,H,B)=(79.49689pt, 491.43622pt, 79.49689pt) +* \paperwidth=433.62pt +* \paperheight=650.43pt +* \textwidth=325.215pt +* \textheight=491.43622pt +* \oddsidemargin=-18.06749pt +* \evensidemargin=-18.06749pt +* \topmargin=-29.7731pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=59.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +LaTeX Font Info: Try loading font information for OMS+cmr on input line 22. +(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd +File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 22. + +Underfull \hbox (badness 10000) in paragraph at lines 34--37 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 34--37 + + [] + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <10.95> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <9> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 41. +[1 +Non-PDF special ignored! + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +[2] [3] [4] +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + +[5] +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + +[6] [7] +Overfull \hbox (2319.18137pt too wide) in paragraph at lines 257--257 +[]\OT1/cmtt/m/n/10.95 9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the +lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputd +riveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpu +llupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan +be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the v +oltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayo +fsensors + [] + +[8] [9] +Overfull \hbox (4.7657pt too wide) in paragraph at lines 306--307 +[]\OT1/cmr/m/n/10.95 Added ac-celerom-e-ter pcb break-out. Pack-age is small, b +ut thanks + [] + +[10] +Overfull \hbox (206.16063pt too wide) in paragraph at lines 312--313 +[]\OT1/cmr/m/n/10.95 I searched for LoRa mod-ules, and came across this https:/ +/www.disk91.com/2015/technology/networks/first- + [] + +[11] [12] +Overfull \hbox (3.92412pt too wide) in paragraph at lines 385--386 +\OT1/cmr/m/n/10.95 https://www.eevblog.com/forum/microcontrollers/powering-devi +ces- + [] + +[13] +Overfull \hbox (2.00143pt too wide) in paragraph at lines 387--388 +[]\OT1/cmr/m/n/10.95 leonerd TODO LINK HERE (book-marks in main mach) at-tiny81 +5 + [] + +! You can't use `macro parameter character #' in horizontal mode. +l.389 ...-very-low-power-comms-simple/msg3016400/# + msg3016400 - Forum post re... + +? +! Emergency stop. +l.389 ...-very-low-power-comms-simple/msg3016400/# + msg3016400 - Forum post re... +End of file on the terminal! + + +Here is how much of TeX's memory you used: + 3524 strings out of 494945 + 53584 string characters out of 6181032 + 120046 words of memory out of 5000000 + 6803 multiletter control sequences out of 15000+600000 + 8977 words of font info for 32 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 39i,8n,38p,877b,250s stack positions out of 5000i,500n,10000p,200000b,80000s +! ==> Fatal error occurred, no output PDF file produced! diff --git a/Attiny_Solar_Energy_Harvest/docs/27.tex b/Attiny_Solar_Energy_Harvest/docs/27.tex new file mode 100644 index 0000000..4578b29 --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/27.tex @@ -0,0 +1,392 @@ + +\documentclass[11pt]{article} +%Gummi|065|=) +\usepackage{graphicx} +\usepackage{caption} +\usepackage{xcolor} +\usepackage[vcentering,dvips]{geometry} +\geometry{papersize={6in,9in},total={4.5in,6.8in}} +%\title{\textbf{Door Alarm}} +\author{Steak Electronics} +\date{} +\begin{document} + +%\maketitle + +%\tableofcontents +\textcolor{green!60!blue!70}{ + \section{Attiny Solar Energy Harvest Tests}} + +I have the following: +\begin{itemize} +\item Solar panels +\item Attiny 10 +\end{itemize} +To this list, I will add a supercap, and an energy harvesting IC. The goal being to load the super cap during the day, and to run 24/7. I will need an exceptionally low power micro. The super cap will need to be about 3.3V or 5V. +\textcolor{green!60!blue!70}{ +\subsection{Micro Considerations}} +The Arduino Atmega328P is not an option. I'm looking to have a current draw of only 1mA max, (ideally 500uA) when active. Moteino is also not an option for this. Those are made for batteries. I want to be battery free. A super cap, however can be used to store energy. I'll get to that shortly. + +For micros, I have some Attiny10 on hand, and these have a reasonably low power pull in active mode. Let's build those up first. What will the micro do? No idea. I haven't a clue. + +\textcolor{green!60!blue!70}{ +\subsubsection{Micro Notes}} +Must run at 1.8V / 1MHz per front page of data sheet, for 200uA draw in active mode. +\\ +\\ + + +\textcolor{green!60!blue!70}{ +\subsection{Energy Storage}} +I don't want a battery. Let's go with a super cap. The solar panels will only be active some of the time, so I will want to harvest energy with some kind of IC into the cap when the sun is out.\footnote{Reference: www.analog.com/media/en/technical-documentation/technical-articles/solarenergyharvesting.pdf is a start. I'll need to do more research.} + +\textcolor{green!60!blue!70}{ \subsection{Make parts, not scrap}} I will +want to make sure that all parts I build are perf board parts, not +breadboard scrap (to be torn down and rebuilt again). This is an Attiny, +so no need to test much, yet. + +\textcolor{green!60!blue!70}{ +\subsection{Programming}} +To program the Attiny10, I'll use the Arduino adapter from the Junk + Arduino blog. I built it up\footnote{Had slight error where the Arduino + board wouldn't read - pins too short on headers, then the arduino wouldn't boot - due to bad connection on perf board shield. Thankfully, the USB port didn't try to run. Protection circuitry cut in on the laptop.}, and was able to Read the memory. In order to upload to the board, you will need a compiler setup. You can possibly do it in AVRGCC, but instead I opted for either Arduino IDE (via Attiny10Core which didn't work), and then went to Mplab. In order for mplab 5.25 to work, it will need XC8 compiler, and there is a pack that can be downloaded through the IDE to get Attiny10 support. + +It appears the AVR Dragon (which I have) can not be used. However, other programmers can be used. Pickit 4, Mkavrii, stk600, I think. + + +\textcolor{green!60!blue!70}{ \subsubsection{Testing Arduino Loader}} +Tested this with the blink\_LED.c in code folder. The code is as simple as possible. +It is the following: +\begin{verbatim} +//#include +#include +#include + +int main(void) +{ + // PB2 output + DDRB = 1<<2; + + while(1) + { + // Toggle PB2 + PINB = 1<<2; + _delay_ms(500); + } +} +\end{verbatim} +When programmed in Mplab, with XC8 compiler, and Attiny10 support, I get the following +hex output: +\begin{verbatim} +:100000000AC020C01FC01EC01DC01CC01BC01AC01B +:1000100019C018C017C011271FBFCFE5D0E0DEBF41 +:0A002000CDBF03D000C0F894FFCF5D +:10002A0044E041B940B95FE966E871E05150604087 +:0A003A007040E1F700C00000F5CFB0 +:02004400DDCF0E +:00000001FF +\end{verbatim} +The content of this hex isn't the focus of this passage. Instead, I want you to review the +results of a D for Dump Memory, by the Arduino Loader. +\begin{verbatim} + +Current memory state: + +registers, SRAM + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +0000: 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0030: 00 00 00 00 00 00 03 00 00 79 00 03 00 00 00 00 +0040: B7 AD AE FA 58 70 63 6B FB 5A B4 1B FF FF 35 3F +0050: 67 D7 33 43 DF 5F FB 72 C9 7D FE E9 9D C5 00 12 +NVM lock + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F00: FF FF +configuration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F40: FF FF +calibration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F80: 79 FF +device ID + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3FC0: 1E 90 03 FF +program + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +4000: 0A C0 20 C0 1F C0 1E C0 1D C0 1C C0 1B C0 1A C0 +4010: 19 C0 18 C0 17 C0 11 27 1F BF CF E5 D0 E0 DE BF +4020: CD BF 03 D0 00 C0 F8 94 FF CF 44 E0 41 B9 40 B9 +4030: 5F E9 66 E8 71 E0 51 50 60 40 70 40 E1 F7 00 C0 +4040: 00 00 F5 CF DD CF FF FF FF FF FF FF FF FF FF FF +4050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +4060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +(...some memory omitted here for brevity...) +43E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +43F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +\end{verbatim} + +Notice that the "AC020C01F" is set. That is from the hex. But the 01000... +before it seems to be missing. Some deciphering of how the Arduino programs +the Attiny is in order here. It also doesn't end the same. + +Regardless, when programming, the Arduino reports 70 bytes written, and +likewise in the Mplab project memorymap.xml file, it also notes 70 bytes +for the sketch. This lines up.\footnote{Although for an unknown reason, every command registers twice on the Arduino serial monitor, but this appears to be harmless.} + +The blinking LED works. Let's move on. + +\textcolor{green!60!blue!70}{\subsubsection{Conclusion on Arduino Programming Attiny10}} +It's possible, but you have to make a dedicated jig (almost), so it might be easier to use the official programming tools. However, based on this https://www.avrfreaks.net/forum/pickit-4-and-avr-mcu I might not have a choice. So I will use the Arduino for now. But will have to devise what on board parts are req'd for programming, and incorporate into proto board layout. + +\textcolor{green!60!blue!70}{ \subsubsection{IO Port Switching Speed}} +Using the above code without any delay\_ms, I get the following results from a default clock +speed, and a 128KHz clock speed. This test was done to confirm that I could change the clock with +\begin{verbatim} + //Write CCP + CCP = 0xD8; + //change CLK to 128KHz + CLKMSR = 0b01; +\end{verbatim} +There was no issue. +\begin{verbatim} +Default CLK (8MHz? or 1MHz?): 160KHz IO Switch +128KHz CLK: 2.5KHz IO Switch +\end{verbatim} +I am going to pursue 128KHz for starters, for lower current dissipation. Note that with the Arduino loader, it is cumbersome to test and change code as you move along. It is +therefore going to be necessary to use a programmer, with a dedicated header on board. +\textcolor{green!60!blue!70}{ \subsubsection{VCC 1.8V}} +The lowest power supported: 1.8V can be applied, without any configuration +needed. It does not affect IO switching speed (although obviously amplitude is affected). +\begin{verbatim} +128KHz CLK (5.0V): 2.5256 KHz IO switch +128KHz CLK (3.3V): 2.5477 KHz IO switch +128KHz CLK (1.8V): 2.5849 KHz IO switch +\end{verbatim} +As voltage drops, IO increases. +\\ +\\ +\textbf{VCC Dropout voltage:} +\\ +From 1.5, it drops out at 1.248V or so. Comes back at about 1.34V +\\ +\\ +Test size of 1. +\\ +\\ +Can't run this with one (AA) battery, but you could with 2. +\\ +\\ +Current Draw: 128KHz - IO test, 1.8V, 0.08mA (~78uA) (tested w/3478A) +\\ +\\ +\textcolor{green!60!blue!70}{\subsection{Application}} +First, I need a board for these and a programmer, to quickly program. Second, I need an application. I want extremely low power. Hopefully, solar with no batteries, to start. This is extremely low - that is the point. Let's keep this ridiculous. + +Given the power requirements put me under 1mA (with my current panels), I'm considering the following: EEPROMs would require SPI protocol. Doable, but overcomplicated for now. +\\ +\\ +Eink (need to find a small and cheap enough option. So far, they have either too many pins, and/or use too much current. Something like what stores use to display prices would work, but that doesn't get the data out, only makes it readable.), +\\ +\\ +Third option would be RF. That is a viable path, but not today. Let's skip that for now. +\\ +\\ +Fourth option that comes to mind is IR. IR diodes, as in TV remotes, would work well here. I am choosing this as the first project. I will have dumb clients, that consist of - Attiny / IR / Sensor powered by solar. I will have a BBB that receives the IR data, and does all intelligent data gathering. To keep things simple, the IR will be binary ADC data, or otherwise sensor numbers. No SPI, no protocol complexity. That would require space on the Attiny. +\\ +\\ +Let's build some boards based on the above. +\\ +\\ +For sensors: +While building, I came across an option. Hall effect sensors. I think also capacitive sensors can be used. This may find a use in a gate sensor, for when a driveway gate is opened or closed. With a small battery, it would work for years. + +Footprints: I had to make a footprint for this module on board package for one sensor. The solution to get footprints right? copy graphic image and make it into silkscreen on the board. Easy. + +The sensor I looked at was a temp and humidity sensor SHT11 (SHT10 is obsolete). It is low power enough. However, it's \$20. So not in my price range. Otherwise, it would work here. Looks like communication is a shift register, or SPI. + +\textcolor{green!60!blue!70}{ +\subsubsection{Magnetic Current Sensor}} +There is this: +BM14270AMUV-LB +Which is low enough current here (<1mA). But \$7 in qty, and req's I2C. Not today. + +\textcolor{green!60!blue!70}{ +\subsubsection{Accelerometers}} +These are an option. + +Best pinout (for deadbug) is LIS344ALHTR (but lacks vcc down to 1.8) +2nd Best pinout with full 1.8 -3.6 vcc is ADXL337BCPZ-RL7 +(Keep in mind, these are low end options only) +(Analog output only. keep it simple for now.) +Runner up to all above, is KXTC9-2050-FR . But has worse pinout. + +Going with AD part. \$5 in single qty. +Digital output Accelmeters are cheaper. + +All have tiny package sizes. + +Since I am grabbing 1 output only, will need to orient or choose correct output. + +PINOUT: When I said best pinout, I meant that you can solder this by hand or with hot air, without much difficulty, because the layout does not require all pins to be connected (hoping I don't get bit by floating pins, though). Or, the layout has PWR and GND together, which means some pins can be bridged. + +\textcolor{green!60!blue!70}{ +\subsubsection{Temperature Sensors}} +Temperature can be boring, but why not. Let's throw one of these on: LMT84LP . Pin compatible with LM35. Supply current is maybe 8uA. Extremely low. +LM84 (1.5V starts, to 5.5), LM85 (1.8V to 5.5) + +\textcolor{green!60!blue!70}{ +\subsubsection{Gas Sensors}} +Lowest is 5mV as of writing on dkey. Skipping. The SHT would work, but its too expensive. + +\textcolor{green!60!blue!70}{ +\subsubsection{Supercap}} +For now, trying this: +FG0V155ZF + + + + + + + + + + +\textcolor{green!60!blue!70}{ +\subsubsection{Hall Effect Sensors - Push Pull vs Open Drain Outputs}} +\begin{verbatim}9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputdriveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpullupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the voltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayofsensors +\end{verbatim} From DRV5032 data sheet. + +\textcolor{green!60!blue!70}{ +\subsection{Starting Sensors}} +So as a recap, to start with affordable, low power sensors for my project, I have the following types: +\begin{itemize} +\item Temp sensor (cheapest) +\item Magnetic Sensor (hall effect) +\item Movement Sensor (accellerometer) (analog output) (tiny package) +\item capacitive sensor (azoteq)(may only be short range) +\end{itemize} + +Output, I have not determined yet. IR will not work, as its too high power. Unless I dedicate a battery just for the IR diode... Or make it battery powered. I'll start with batteries, but for solar panel and supercap, it will likely not be viable, unless I transmit extremely rarely. That is also an option, however. + +\subsubsection{Farad to mA} +1.5F supercap can supply 1.5A for 1 second. That is 0.025A for 60 seconds, or 25mA for a minute. +Let's stay I use half that, so 12mA for 60 seconds is my supply. If I transmit once every other hour (when in sunlight)... + +\subsection{PCB} +I have built rev2 of the board today. Using an Uno, user must remember to include VCC and GND. So the programming takes up all 6 pins. The 0.1'' headers were slightly close to the resistors, and the top row of VCC and GND headers are separated, so I labeled them V+2, and GND2.\footnote{Forgetting to plug in GND, and or 5v+ (for Uno), while still plugging in the TPI pins, did not break the Attiny10, in my tests today.} + +The 0.05'' pin headers work perfect for scope probes. The extra breakout I made demonstrates this. + +\subsection{PCB Programming} + +By default, the Attiny10 idles around 1.5mA (5V), before programming. + +First thing to do, is to program it into a low power mode. + +In order to use low power, whilst using the Uno, I will need to add a jumper to the PCB, +so that you can switch between V+2, and V+1. Three pin jumper. Outside pins are each V+, internal goes to Attiny V+. I'll need to remove the trace on gerber rev2, that goes from 4 to VCC. + +\subsubsection{PCB programming and use} +It's not possible to leave the Arduino plugged in, while testing the Attiny10. +example: Even if you power down the Uno, and use a jumper to change V+ rails, +the power dissipation through the TPI pins (10,11,12,13) will cause a draw of about 545uA, and the Attiny10 will not toggle its led. +Therefore, not only a power jumper is required to use the Attiny, but also +a 4 or 5 pin 0.1" cable for the TPI pins, must be disconnected before using the Attiny. +\footnote{In code section, mplab - tests2, the power draw of the 128KHz internal CLK with PB2 flipping at about 400us a cycle, at 3V VCC is about 115uA. At 2V it is ~95uA.} + +\subsection{PCB Rev3} +\begin{itemize} +\item Added jumper to switch between different power rails, so that + Arduino can be left sort of plugged in (turns out, it is still required to disconnect 9,10,11,12,13 pins, so use a 4/5 pin cable). This makes testing low power (2-3V) code, easier, while still programming with the 5V Uno. +\item Added SOT23-6 breakout + \item Moved Resistors further from 9,10,11,12,13 pins. + \item Added separate board for analog Accelerometer. + \item Moved VCC breakout (0.5'' header pins) to connect directly to tiny, not to bottom Voltage rail. + \item Added note about VCC and GND must be connected when programming. + \item Added accelerometer pcb breakout. Package is small, but thanks to pinout/unused pins - is reasonable to solder with hot air. I knew this when I chose it... Then I forgot it earlier today. +\end{itemize} + +\subsection{RF Comms} +I want to use RF to communicate with this device. The IR would work, but would require batteries. If I'm going to use batteries I may as well use RF. Ideally, RF without batteries would be nice. + +I searched for LoRa modules, and came across this https://www.disk91.com/2015/technology/networks/first-step-in-lora-land-microchip-rn2483-test/ + +I've added the datasheets. The RN2483 can be set with a UART, which means two pins on the Attiny. I will want to use a transistor to turn off the module (not using sleep mode), when not in use, so that's another pin. The 4th pin would be for whatever sensor I'm using. Right now, I'm thinking an accelerometer to watch for motion on a door or gate. I may need more pins, as I'd like to be able to switch the accel ic on and off as well. + +There is the Attiny40, and also an Attiny402. Different, but both worth considering. The Attiny40 is covered by my programmer, the 402 is not. 40 is from early 2010's, the 202/402 is from 2017. Also the Attiny20, which is less pins than the 40. But covered by my programmer. I would lean towards the 10 or the 20. 40 is too much IO. + +Attiny10 has I2C on board (TWI). I'm going to stick with the 10. Keep it simple. + +\subsection{Present Questions} +questions: +is a two pin UART the best I can expect to find for simple rf comms +is lora a reasonable solution here? I want as low power as possible, + Lora is not the lowest but if I transmit rarely, and for a short time perhaps it won't matter. + +Is there some other way to transmit data? I don't want to use ultrasonic waves, and IR seems to be too much current, as well +as requiring line of sight / lens. + +\subsubsection{Plan of attack} +I'm going to prototype with the Microchip RF modules for now, and see if I can get this working off a solar panel. I have an ADC, and with RESET disabled another IO. Goal is now: + +Configure RF modules w/arduino. + + +Configure RF module (one Uno receiver, other tiny transmitter) + + +Attach any sensor that uses ADC. (temp sensor, resistor light or thermocouple, current sensor (monitoring power supply), and I have the ones I already tested today (but will hold off on - the accelerometer, and hall effect). + +Desired applications +- Temp of hot surface (boiler) monitoring +- Solar current input monitoring. + +As I've already worked with a current sense before in my battery project (Electronics\_Projects\_2019), I will use again the INA169. It seems to be low enough power for my needs, though I will double check in practice. The data sheet lacks obvious power dissipation figures, while sensing, though quiescient is about 50uA. + +\subsection{Other Sensors} +I need to verify that the following sensors could be used with low power: + +Light dependent Resistor / Diode + + +Sound sensor (mic) + +\subsection{RF Searching} +RF Transceiver ICs require assembly/programming/time, so we want RF Transceiver modules instead. There are a number of roughly 10mA TX active, but that is the lowest I can find. Among these ics (not modules), most are SPI, have their own ARM core... The modules are a bit better in having some that can be controlled by serial. I like the TRM-433-LT, but I will skip this for now (\$20 each). + +I also like the RC11xx-RC232, though the latter is about 30mA TX. That may be the best I can hope for. These two are 433MHz (ISM is 433 - 434MHz). The radiocrafts product is essentially a simplified solution, preprogrammed with a uart which can be used to adjust settings. This option appears to be on part with the microchip offering I've looked at, the RN2483, in fact they both came up on my search results, next to each other. RN doesn't have what IC they use but RC, uses CC1110. + +Another option: + +ZETAPLUS-433-SO is faster than others (500Kbs), and has lower TX (18mA). Up to 2KM range... + +There's more options (over \$18), but for the following specifications, the above three are basically what you can choose from. Ignoring those with high TX power rates (sparkfun), or requires SPI (stmicro) +Specs: +\begin{itemize} +\item In stock +\item Frequency 433-434MHz +\item battery powered vcc range (2) +\end{itemize} +\footnote{There's only 25.} + +I will start with two Radiocraft modules. Let's see how that plays out.\footnote{A set of Dev boards for the radiocraft are \$250. Ouch.} + + +\subsection{PCB Rev 5} +\begin{itemize} +\item Added instructions to back of board to speed up getting back to this project after some time. +\item Moved resistors to be further away from programming header +\item Fixed missed connection from JMP to V1 / V2 when I moved barrel plug, and added back the bottom right mounting hole in rev4. +\item Changed prg/jmp/vcc to v1/jmp/v2 (either v rail can be used for programming) + \end{itemize} + + +\subsection{Further Notes} +https://www.eevblog.com/forum/microcontrollers/powering-devices-via-gpio-pins/msg2720044/\#msg2720044 - Using GPIO to power devices. + +leonerd TODO LINK HERE (bookmarks in main mach) attiny815 with rf. notice the coiled antennas + +https://www.eevblog.com/forum/beginners/rf-very-low-power-comms-simple/msg3016400/#msg3016400 - Forum post regarding this project. + +\end{document} + diff --git a/Attiny_Solar_Energy_Harvest/docs/27.tex~ b/Attiny_Solar_Energy_Harvest/docs/27.tex~ new file mode 100644 index 0000000..22c50ec --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/27.tex~ @@ -0,0 +1,384 @@ + +\documentclass[11pt]{article} +%Gummi|065|=) +\usepackage{graphicx} +\usepackage{caption} +\usepackage{xcolor} +\usepackage[vcentering,dvips]{geometry} +\geometry{papersize={6in,9in},total={4.5in,6.8in}} +%\title{\textbf{Door Alarm}} +\author{Steak Electronics} +\date{} +\begin{document} + +%\maketitle + +%\tableofcontents +\textcolor{green!60!blue!70}{ + \section{Attiny Solar Energy Harvest Tests}} + +I have the following: +\begin{itemize} +\item Solar panels +\item Attiny 10 +\end{itemize} +To this list, I will add a supercap, and an energy harvesting IC. The goal being to load the super cap during the day, and to run 24/7. I will need an exceptionally low power micro. The super cap will need to be about 3.3V or 5V. +\textcolor{green!60!blue!70}{ +\subsection{Micro Considerations}} +The Arduino Atmega328P is not an option. I'm looking to have a current draw of only 1mA max, (ideally 500uA) when active. Moteino is also not an option for this. Those are made for batteries. I want to be battery free. A super cap, however can be used to store energy. I'll get to that shortly. + +For micros, I have some Attiny10 on hand, and these have a reasonably low power pull in active mode. Let's build those up first. What will the micro do? No idea. I haven't a clue. + +\textcolor{green!60!blue!70}{ +\subsubsection{Micro Notes}} +Must run at 1.8V / 1MHz per front page of data sheet, for 200uA draw in active mode. +\\ +\\ + + +\textcolor{green!60!blue!70}{ +\subsection{Energy Storage}} +I don't want a battery. Let's go with a super cap. The solar panels will only be active some of the time, so I will want to harvest energy with some kind of IC into the cap when the sun is out.\footnote{Reference: www.analog.com/media/en/technical-documentation/technical-articles/solarenergyharvesting.pdf is a start. I'll need to do more research.} + +\textcolor{green!60!blue!70}{ \subsection{Make parts, not scrap}} I will +want to make sure that all parts I build are perf board parts, not +breadboard scrap (to be torn down and rebuilt again). This is an Attiny, +so no need to test much, yet. + +\textcolor{green!60!blue!70}{ +\subsection{Programming}} +To program the Attiny10, I'll use the Arduino adapter from the Junk + Arduino blog. I built it up\footnote{Had slight error where the Arduino + board wouldn't read - pins too short on headers, then the arduino wouldn't boot - due to bad connection on perf board shield. Thankfully, the USB port didn't try to run. Protection circuitry cut in on the laptop.}, and was able to Read the memory. In order to upload to the board, you will need a compiler setup. You can possibly do it in AVRGCC, but instead I opted for either Arduino IDE (via Attiny10Core which didn't work), and then went to Mplab. In order for mplab 5.25 to work, it will need XC8 compiler, and there is a pack that can be downloaded through the IDE to get Attiny10 support. + +It appears the AVR Dragon (which I have) can not be used. However, other programmers can be used. Pickit 4, Mkavrii, stk600, I think. + + +\textcolor{green!60!blue!70}{ \subsubsection{Testing Arduino Loader}} +Tested this with the blink\_LED.c in code folder. The code is as simple as possible. +It is the following: +\begin{verbatim} +//#include +#include +#include + +int main(void) +{ + // PB2 output + DDRB = 1<<2; + + while(1) + { + // Toggle PB2 + PINB = 1<<2; + _delay_ms(500); + } +} +\end{verbatim} +When programmed in Mplab, with XC8 compiler, and Attiny10 support, I get the following +hex output: +\begin{verbatim} +:100000000AC020C01FC01EC01DC01CC01BC01AC01B +:1000100019C018C017C011271FBFCFE5D0E0DEBF41 +:0A002000CDBF03D000C0F894FFCF5D +:10002A0044E041B940B95FE966E871E05150604087 +:0A003A007040E1F700C00000F5CFB0 +:02004400DDCF0E +:00000001FF +\end{verbatim} +The content of this hex isn't the focus of this passage. Instead, I want you to review the +results of a D for Dump Memory, by the Arduino Loader. +\begin{verbatim} + +Current memory state: + +registers, SRAM + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +0000: 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0030: 00 00 00 00 00 00 03 00 00 79 00 03 00 00 00 00 +0040: B7 AD AE FA 58 70 63 6B FB 5A B4 1B FF FF 35 3F +0050: 67 D7 33 43 DF 5F FB 72 C9 7D FE E9 9D C5 00 12 +NVM lock + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F00: FF FF +configuration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F40: FF FF +calibration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F80: 79 FF +device ID + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3FC0: 1E 90 03 FF +program + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +4000: 0A C0 20 C0 1F C0 1E C0 1D C0 1C C0 1B C0 1A C0 +4010: 19 C0 18 C0 17 C0 11 27 1F BF CF E5 D0 E0 DE BF +4020: CD BF 03 D0 00 C0 F8 94 FF CF 44 E0 41 B9 40 B9 +4030: 5F E9 66 E8 71 E0 51 50 60 40 70 40 E1 F7 00 C0 +4040: 00 00 F5 CF DD CF FF FF FF FF FF FF FF FF FF FF +4050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +4060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +(...some memory omitted here for brevity...) +43E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +43F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +\end{verbatim} + +Notice that the "AC020C01F" is set. That is from the hex. But the 01000... +before it seems to be missing. Some deciphering of how the Arduino programs +the Attiny is in order here. It also doesn't end the same. + +Regardless, when programming, the Arduino reports 70 bytes written, and +likewise in the Mplab project memorymap.xml file, it also notes 70 bytes +for the sketch. This lines up.\footnote{Although for an unknown reason, every command registers twice on the Arduino serial monitor, but this appears to be harmless.} + +The blinking LED works. Let's move on. + +\textcolor{green!60!blue!70}{\subsubsection{Conclusion on Arduino Programming Attiny10}} +It's possible, but you have to make a dedicated jig (almost), so it might be easier to use the official programming tools. However, based on this https://www.avrfreaks.net/forum/pickit-4-and-avr-mcu I might not have a choice. So I will use the Arduino for now. But will have to devise what on board parts are req'd for programming, and incorporate into proto board layout. + +\textcolor{green!60!blue!70}{ \subsubsection{IO Port Switching Speed}} +Using the above code without any delay\_ms, I get the following results from a default clock +speed, and a 128KHz clock speed. This test was done to confirm that I could change the clock with +\begin{verbatim} + //Write CCP + CCP = 0xD8; + //change CLK to 128KHz + CLKMSR = 0b01; +\end{verbatim} +There was no issue. +\begin{verbatim} +Default CLK (8MHz? or 1MHz?): 160KHz IO Switch +128KHz CLK: 2.5KHz IO Switch +\end{verbatim} +I am going to pursue 128KHz for starters, for lower current dissipation. Note that with the Arduino loader, it is cumbersome to test and change code as you move along. It is +therefore going to be necessary to use a programmer, with a dedicated header on board. +\textcolor{green!60!blue!70}{ \subsubsection{VCC 1.8V}} +The lowest power supported: 1.8V can be applied, without any configuration +needed. It does not affect IO switching speed (although obviously amplitude is affected). +\begin{verbatim} +128KHz CLK (5.0V): 2.5256 KHz IO switch +128KHz CLK (3.3V): 2.5477 KHz IO switch +128KHz CLK (1.8V): 2.5849 KHz IO switch +\end{verbatim} +As voltage drops, IO increases. +\\ +\\ +\textbf{VCC Dropout voltage:} +\\ +From 1.5, it drops out at 1.248V or so. Comes back at about 1.34V +\\ +\\ +Test size of 1. +\\ +\\ +Can't run this with one (AA) battery, but you could with 2. +\\ +\\ +Current Draw: 128KHz - IO test, 1.8V, 0.08mA (~78uA) (tested w/3478A) +\\ +\\ +\textcolor{green!60!blue!70}{\subsection{Application}} +First, I need a board for these and a programmer, to quickly program. Second, I need an application. I want extremely low power. Hopefully, solar with no batteries, to start. This is extremely low - that is the point. Let's keep this ridiculous. + +Given the power requirements put me under 1mA (with my current panels), I'm considering the following: EEPROMs would require SPI protocol. Doable, but overcomplicated for now. +\\ +\\ +Eink (need to find a small and cheap enough option. So far, they have either too many pins, and/or use too much current. Something like what stores use to display prices would work, but that doesn't get the data out, only makes it readable.), +\\ +\\ +Third option would be RF. That is a viable path, but not today. Let's skip that for now. +\\ +\\ +Fourth option that comes to mind is IR. IR diodes, as in TV remotes, would work well here. I am choosing this as the first project. I will have dumb clients, that consist of - Attiny / IR / Sensor powered by solar. I will have a BBB that receives the IR data, and does all intelligent data gathering. To keep things simple, the IR will be binary ADC data, or otherwise sensor numbers. No SPI, no protocol complexity. That would require space on the Attiny. +\\ +\\ +Let's build some boards based on the above. +\\ +\\ +For sensors: +While building, I came across an option. Hall effect sensors. I think also capacitive sensors can be used. This may find a use in a gate sensor, for when a driveway gate is opened or closed. With a small battery, it would work for years. + +Footprints: I had to make a footprint for this module on board package for one sensor. The solution to get footprints right? copy graphic image and make it into silkscreen on the board. Easy. + +The sensor I looked at was a temp and humidity sensor SHT11 (SHT10 is obsolete). It is low power enough. However, it's \$20. So not in my price range. Otherwise, it would work here. Looks like communication is a shift register, or SPI. + +\textcolor{green!60!blue!70}{ +\subsubsection{Magnetic Current Sensor}} +There is this: +BM14270AMUV-LB +Which is low enough current here (<1mA). But \$7 in qty, and req's I2C. Not today. + +\textcolor{green!60!blue!70}{ +\subsubsection{Accelerometers}} +These are an option. + +Best pinout (for deadbug) is LIS344ALHTR (but lacks vcc down to 1.8) +2nd Best pinout with full 1.8 -3.6 vcc is ADXL337BCPZ-RL7 +(Keep in mind, these are low end options only) +(Analog output only. keep it simple for now.) +Runner up to all above, is KXTC9-2050-FR . But has worse pinout. + +Going with AD part. \$5 in single qty. +Digital output Accelmeters are cheaper. + +All have tiny package sizes. + +Since I am grabbing 1 output only, will need to orient or choose correct output. + +PINOUT: When I said best pinout, I meant that you can solder this by hand or with hot air, without much difficulty, because the layout does not require all pins to be connected (hoping I don't get bit by floating pins, though). Or, the layout has PWR and GND together, which means some pins can be bridged. + +\textcolor{green!60!blue!70}{ +\subsubsection{Temperature Sensors}} +Temperature can be boring, but why not. Let's throw one of these on: LMT84LP . Pin compatible with LM35. Supply current is maybe 8uA. Extremely low. +LM84 (1.5V starts, to 5.5), LM85 (1.8V to 5.5) + +\textcolor{green!60!blue!70}{ +\subsubsection{Gas Sensors}} +Lowest is 5mV as of writing on dkey. Skipping. The SHT would work, but its too expensive. + +\textcolor{green!60!blue!70}{ +\subsubsection{Supercap}} +For now, trying this: +FG0V155ZF + + + + + + + + + + +\textcolor{green!60!blue!70}{ +\subsubsection{Hall Effect Sensors - Push Pull vs Open Drain Outputs}} +\begin{verbatim}9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputdriveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpullupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the voltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayofsensors +\end{verbatim} From DRV5032 data sheet. + +\textcolor{green!60!blue!70}{ +\subsection{Starting Sensors}} +So as a recap, to start with affordable, low power sensors for my project, I have the following types: +\begin{itemize} +\item Temp sensor (cheapest) +\item Magnetic Sensor (hall effect) +\item Movement Sensor (accellerometer) (analog output) (tiny package) +\item capacitive sensor (azoteq)(may only be short range) +\end{itemize} + +Output, I have not determined yet. IR will not work, as its too high power. Unless I dedicate a battery just for the IR diode... Or make it battery powered. I'll start with batteries, but for solar panel and supercap, it will likely not be viable, unless I transmit extremely rarely. That is also an option, however. + +\subsubsection{Farad to mA} +1.5F supercap can supply 1.5A for 1 second. That is 0.025A for 60 seconds, or 25mA for a minute. +Let's stay I use half that, so 12mA for 60 seconds is my supply. If I transmit once every other hour (when in sunlight)... + +\subsection{PCB} +I have built rev2 of the board today. Using an Uno, user must remember to include VCC and GND. So the programming takes up all 6 pins. The 0.1'' headers were slightly close to the resistors, and the top row of VCC and GND headers are separated, so I labeled them V+2, and GND2.\footnote{Forgetting to plug in GND, and or 5v+ (for Uno), while still plugging in the TPI pins, did not break the Attiny10, in my tests today.} + +The 0.05'' pin headers work perfect for scope probes. The extra breakout I made demonstrates this. + +\subsection{PCB Programming} + +By default, the Attiny10 idles around 1.5mA (5V), before programming. + +First thing to do, is to program it into a low power mode. + +In order to use low power, whilst using the Uno, I will need to add a jumper to the PCB, +so that you can switch between V+2, and V+1. Three pin jumper. Outside pins are each V+, internal goes to Attiny V+. I'll need to remove the trace on gerber rev2, that goes from 4 to VCC. + +\subsubsection{PCB programming and use} +It's not possible to leave the Arduino plugged in, while testing the Attiny10. +example: Even if you power down the Uno, and use a jumper to change V+ rails, +the power dissipation through the TPI pins (10,11,12,13) will cause a draw of about 545uA, and the Attiny10 will not toggle its led. +Therefore, not only a power jumper is required to use the Attiny, but also +a 4 or 5 pin 0.1" cable for the TPI pins, must be disconnected before using the Attiny. +\footnote{In code section, mplab - tests2, the power draw of the 128KHz internal CLK with PB2 flipping at about 400us a cycle, at 3V VCC is about 115uA. At 2V it is ~95uA.} + +\subsection{PCB Rev3} +\begin{itemize} +\item Added jumper to switch between different power rails, so that + Arduino can be left sort of plugged in (turns out, it is still required to disconnect 9,10,11,12,13 pins, so use a 4/5 pin cable). This makes testing low power (2-3V) code, easier, while still programming with the 5V Uno. +\item Added SOT23-6 breakout + \item Moved Resistors further from 9,10,11,12,13 pins. + \item Added separate board for analog Accelerometer. + \item Moved VCC breakout (0.5'' header pins) to connect directly to tiny, not to bottom Voltage rail. + \item Added note about VCC and GND must be connected when programming. + \item Added accelerometer pcb breakout. Package is small, but thanks to pinout/unused pins - is reasonable to solder with hot air. I knew this when I chose it... Then I forgot it earlier today. +\end{itemize} + +\subsection{RF Comms} +I want to use RF to communicate with this device. The IR would work, but would require batteries. If I'm going to use batteries I may as well use RF. Ideally, RF without batteries would be nice. + +I searched for LoRa modules, and came across this https://www.disk91.com/2015/technology/networks/first-step-in-lora-land-microchip-rn2483-test/ + +I've added the datasheets. The RN2483 can be set with a UART, which means two pins on the Attiny. I will want to use a transistor to turn off the module (not using sleep mode), when not in use, so that's another pin. The 4th pin would be for whatever sensor I'm using. Right now, I'm thinking an accelerometer to watch for motion on a door or gate. I may need more pins, as I'd like to be able to switch the accel ic on and off as well. + +There is the Attiny40, and also an Attiny402. Different, but both worth considering. The Attiny40 is covered by my programmer, the 402 is not. 40 is from early 2010's, the 202/402 is from 2017. Also the Attiny20, which is less pins than the 40. But covered by my programmer. I would lean towards the 10 or the 20. 40 is too much IO. + +Attiny10 has I2C on board (TWI). I'm going to stick with the 10. Keep it simple. + +\subsection{Present Questions} +questions: +is a two pin UART the best I can expect to find for simple rf comms +is lora a reasonable solution here? I want as low power as possible, + Lora is not the lowest but if I transmit rarely, and for a short time perhaps it won't matter. + +Is there some other way to transmit data? I don't want to use ultrasonic waves, and IR seems to be too much current, as well +as requiring line of sight / lens. + +\subsubsection{Plan of attack} +I'm going to prototype with the Microchip RF modules for now, and see if I can get this working off a solar panel. I have an ADC, and with RESET disabled another IO. Goal is now: + +Configure RF modules w/arduino. + + +Configure RF module (one Uno receiver, other tiny transmitter) + + +Attach any sensor that uses ADC. (temp sensor, resistor light or thermocouple, current sensor (monitoring power supply), and I have the ones I already tested today (but will hold off on - the accelerometer, and hall effect). + +Desired applications +- Temp of hot surface (boiler) monitoring +- Solar current input monitoring. + +As I've already worked with a current sense before in my battery project (Electronics\_Projects\_2019), I will use again the INA169. It seems to be low enough power for my needs, though I will double check in practice. The data sheet lacks obvious power dissipation figures, while sensing, though quiescient is about 50uA. + +\subsection{Other Sensors} +I need to verify that the following sensors could be used with low power: + +Light dependent Resistor / Diode + + +Sound sensor (mic) + +\subsection{RF Searching} +RF Transceiver ICs require assembly/programming/time, so we want RF Transceiver modules instead. There are a number of roughly 10mA TX active, but that is the lowest I can find. Among these ics (not modules), most are SPI, have their own ARM core... The modules are a bit better in having some that can be controlled by serial. I like the TRM-433-LT, but I will skip this for now (\$20 each). + +I also like the RC11xx-RC232, though the latter is about 30mA TX. That may be the best I can hope for. These two are 433MHz (ISM is 433 - 434MHz). The radiocrafts product is essentially a simplified solution, preprogrammed with a uart which can be used to adjust settings. This option appears to be on part with the microchip offering I've looked at, the RN2483, in fact they both came up on my search results, next to each other. RN doesn't have what IC they use but RC, uses CC1110. + +Another option: + +ZETAPLUS-433-SO is faster than others (500Kbs), and has lower TX (18mA). Up to 2KM range... + +There's more options (over \$18), but for the following specifications, the above three are basically what you can choose from. Ignoring those with high TX power rates (sparkfun), or requires SPI (stmicro) +Specs: +\begin{itemize} +\item In stock +\item Frequency 433-434MHz +\item battery powered vcc range (2) +\end{itemize} +\footnote{There's only 25.} + +I will start with two Radiocraft modules. Let's see how that plays out.\footnote{A set of Dev boards for the radiocraft are \$250. Ouch.} + + + + + +\subsection{Further Notes} +https://www.eevblog.com/forum/microcontrollers/powering-devices-via-gpio-pins/msg2720044/\#msg2720044 - Using GPIO to power devices. + +leonerd TODO LINK HERE (bookmarks in main mach) attiny815 with rf. notice the coiled antennas + +\end{document} + diff --git a/Attiny_Solar_Energy_Harvest/docs/27.tez b/Attiny_Solar_Energy_Harvest/docs/27.tez new file mode 100644 index 0000000..22c50ec --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/27.tez @@ -0,0 +1,384 @@ + +\documentclass[11pt]{article} +%Gummi|065|=) +\usepackage{graphicx} +\usepackage{caption} +\usepackage{xcolor} +\usepackage[vcentering,dvips]{geometry} +\geometry{papersize={6in,9in},total={4.5in,6.8in}} +%\title{\textbf{Door Alarm}} +\author{Steak Electronics} +\date{} +\begin{document} + +%\maketitle + +%\tableofcontents +\textcolor{green!60!blue!70}{ + \section{Attiny Solar Energy Harvest Tests}} + +I have the following: +\begin{itemize} +\item Solar panels +\item Attiny 10 +\end{itemize} +To this list, I will add a supercap, and an energy harvesting IC. The goal being to load the super cap during the day, and to run 24/7. I will need an exceptionally low power micro. The super cap will need to be about 3.3V or 5V. +\textcolor{green!60!blue!70}{ +\subsection{Micro Considerations}} +The Arduino Atmega328P is not an option. I'm looking to have a current draw of only 1mA max, (ideally 500uA) when active. Moteino is also not an option for this. Those are made for batteries. I want to be battery free. A super cap, however can be used to store energy. I'll get to that shortly. + +For micros, I have some Attiny10 on hand, and these have a reasonably low power pull in active mode. Let's build those up first. What will the micro do? No idea. I haven't a clue. + +\textcolor{green!60!blue!70}{ +\subsubsection{Micro Notes}} +Must run at 1.8V / 1MHz per front page of data sheet, for 200uA draw in active mode. +\\ +\\ + + +\textcolor{green!60!blue!70}{ +\subsection{Energy Storage}} +I don't want a battery. Let's go with a super cap. The solar panels will only be active some of the time, so I will want to harvest energy with some kind of IC into the cap when the sun is out.\footnote{Reference: www.analog.com/media/en/technical-documentation/technical-articles/solarenergyharvesting.pdf is a start. I'll need to do more research.} + +\textcolor{green!60!blue!70}{ \subsection{Make parts, not scrap}} I will +want to make sure that all parts I build are perf board parts, not +breadboard scrap (to be torn down and rebuilt again). This is an Attiny, +so no need to test much, yet. + +\textcolor{green!60!blue!70}{ +\subsection{Programming}} +To program the Attiny10, I'll use the Arduino adapter from the Junk + Arduino blog. I built it up\footnote{Had slight error where the Arduino + board wouldn't read - pins too short on headers, then the arduino wouldn't boot - due to bad connection on perf board shield. Thankfully, the USB port didn't try to run. Protection circuitry cut in on the laptop.}, and was able to Read the memory. In order to upload to the board, you will need a compiler setup. You can possibly do it in AVRGCC, but instead I opted for either Arduino IDE (via Attiny10Core which didn't work), and then went to Mplab. In order for mplab 5.25 to work, it will need XC8 compiler, and there is a pack that can be downloaded through the IDE to get Attiny10 support. + +It appears the AVR Dragon (which I have) can not be used. However, other programmers can be used. Pickit 4, Mkavrii, stk600, I think. + + +\textcolor{green!60!blue!70}{ \subsubsection{Testing Arduino Loader}} +Tested this with the blink\_LED.c in code folder. The code is as simple as possible. +It is the following: +\begin{verbatim} +//#include +#include +#include + +int main(void) +{ + // PB2 output + DDRB = 1<<2; + + while(1) + { + // Toggle PB2 + PINB = 1<<2; + _delay_ms(500); + } +} +\end{verbatim} +When programmed in Mplab, with XC8 compiler, and Attiny10 support, I get the following +hex output: +\begin{verbatim} +:100000000AC020C01FC01EC01DC01CC01BC01AC01B +:1000100019C018C017C011271FBFCFE5D0E0DEBF41 +:0A002000CDBF03D000C0F894FFCF5D +:10002A0044E041B940B95FE966E871E05150604087 +:0A003A007040E1F700C00000F5CFB0 +:02004400DDCF0E +:00000001FF +\end{verbatim} +The content of this hex isn't the focus of this passage. Instead, I want you to review the +results of a D for Dump Memory, by the Arduino Loader. +\begin{verbatim} + +Current memory state: + +registers, SRAM + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +0000: 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0030: 00 00 00 00 00 00 03 00 00 79 00 03 00 00 00 00 +0040: B7 AD AE FA 58 70 63 6B FB 5A B4 1B FF FF 35 3F +0050: 67 D7 33 43 DF 5F FB 72 C9 7D FE E9 9D C5 00 12 +NVM lock + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F00: FF FF +configuration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F40: FF FF +calibration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F80: 79 FF +device ID + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3FC0: 1E 90 03 FF +program + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +4000: 0A C0 20 C0 1F C0 1E C0 1D C0 1C C0 1B C0 1A C0 +4010: 19 C0 18 C0 17 C0 11 27 1F BF CF E5 D0 E0 DE BF +4020: CD BF 03 D0 00 C0 F8 94 FF CF 44 E0 41 B9 40 B9 +4030: 5F E9 66 E8 71 E0 51 50 60 40 70 40 E1 F7 00 C0 +4040: 00 00 F5 CF DD CF FF FF FF FF FF FF FF FF FF FF +4050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +4060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +(...some memory omitted here for brevity...) +43E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +43F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +\end{verbatim} + +Notice that the "AC020C01F" is set. That is from the hex. But the 01000... +before it seems to be missing. Some deciphering of how the Arduino programs +the Attiny is in order here. It also doesn't end the same. + +Regardless, when programming, the Arduino reports 70 bytes written, and +likewise in the Mplab project memorymap.xml file, it also notes 70 bytes +for the sketch. This lines up.\footnote{Although for an unknown reason, every command registers twice on the Arduino serial monitor, but this appears to be harmless.} + +The blinking LED works. Let's move on. + +\textcolor{green!60!blue!70}{\subsubsection{Conclusion on Arduino Programming Attiny10}} +It's possible, but you have to make a dedicated jig (almost), so it might be easier to use the official programming tools. However, based on this https://www.avrfreaks.net/forum/pickit-4-and-avr-mcu I might not have a choice. So I will use the Arduino for now. But will have to devise what on board parts are req'd for programming, and incorporate into proto board layout. + +\textcolor{green!60!blue!70}{ \subsubsection{IO Port Switching Speed}} +Using the above code without any delay\_ms, I get the following results from a default clock +speed, and a 128KHz clock speed. This test was done to confirm that I could change the clock with +\begin{verbatim} + //Write CCP + CCP = 0xD8; + //change CLK to 128KHz + CLKMSR = 0b01; +\end{verbatim} +There was no issue. +\begin{verbatim} +Default CLK (8MHz? or 1MHz?): 160KHz IO Switch +128KHz CLK: 2.5KHz IO Switch +\end{verbatim} +I am going to pursue 128KHz for starters, for lower current dissipation. Note that with the Arduino loader, it is cumbersome to test and change code as you move along. It is +therefore going to be necessary to use a programmer, with a dedicated header on board. +\textcolor{green!60!blue!70}{ \subsubsection{VCC 1.8V}} +The lowest power supported: 1.8V can be applied, without any configuration +needed. It does not affect IO switching speed (although obviously amplitude is affected). +\begin{verbatim} +128KHz CLK (5.0V): 2.5256 KHz IO switch +128KHz CLK (3.3V): 2.5477 KHz IO switch +128KHz CLK (1.8V): 2.5849 KHz IO switch +\end{verbatim} +As voltage drops, IO increases. +\\ +\\ +\textbf{VCC Dropout voltage:} +\\ +From 1.5, it drops out at 1.248V or so. Comes back at about 1.34V +\\ +\\ +Test size of 1. +\\ +\\ +Can't run this with one (AA) battery, but you could with 2. +\\ +\\ +Current Draw: 128KHz - IO test, 1.8V, 0.08mA (~78uA) (tested w/3478A) +\\ +\\ +\textcolor{green!60!blue!70}{\subsection{Application}} +First, I need a board for these and a programmer, to quickly program. Second, I need an application. I want extremely low power. Hopefully, solar with no batteries, to start. This is extremely low - that is the point. Let's keep this ridiculous. + +Given the power requirements put me under 1mA (with my current panels), I'm considering the following: EEPROMs would require SPI protocol. Doable, but overcomplicated for now. +\\ +\\ +Eink (need to find a small and cheap enough option. So far, they have either too many pins, and/or use too much current. Something like what stores use to display prices would work, but that doesn't get the data out, only makes it readable.), +\\ +\\ +Third option would be RF. That is a viable path, but not today. Let's skip that for now. +\\ +\\ +Fourth option that comes to mind is IR. IR diodes, as in TV remotes, would work well here. I am choosing this as the first project. I will have dumb clients, that consist of - Attiny / IR / Sensor powered by solar. I will have a BBB that receives the IR data, and does all intelligent data gathering. To keep things simple, the IR will be binary ADC data, or otherwise sensor numbers. No SPI, no protocol complexity. That would require space on the Attiny. +\\ +\\ +Let's build some boards based on the above. +\\ +\\ +For sensors: +While building, I came across an option. Hall effect sensors. I think also capacitive sensors can be used. This may find a use in a gate sensor, for when a driveway gate is opened or closed. With a small battery, it would work for years. + +Footprints: I had to make a footprint for this module on board package for one sensor. The solution to get footprints right? copy graphic image and make it into silkscreen on the board. Easy. + +The sensor I looked at was a temp and humidity sensor SHT11 (SHT10 is obsolete). It is low power enough. However, it's \$20. So not in my price range. Otherwise, it would work here. Looks like communication is a shift register, or SPI. + +\textcolor{green!60!blue!70}{ +\subsubsection{Magnetic Current Sensor}} +There is this: +BM14270AMUV-LB +Which is low enough current here (<1mA). But \$7 in qty, and req's I2C. Not today. + +\textcolor{green!60!blue!70}{ +\subsubsection{Accelerometers}} +These are an option. + +Best pinout (for deadbug) is LIS344ALHTR (but lacks vcc down to 1.8) +2nd Best pinout with full 1.8 -3.6 vcc is ADXL337BCPZ-RL7 +(Keep in mind, these are low end options only) +(Analog output only. keep it simple for now.) +Runner up to all above, is KXTC9-2050-FR . But has worse pinout. + +Going with AD part. \$5 in single qty. +Digital output Accelmeters are cheaper. + +All have tiny package sizes. + +Since I am grabbing 1 output only, will need to orient or choose correct output. + +PINOUT: When I said best pinout, I meant that you can solder this by hand or with hot air, without much difficulty, because the layout does not require all pins to be connected (hoping I don't get bit by floating pins, though). Or, the layout has PWR and GND together, which means some pins can be bridged. + +\textcolor{green!60!blue!70}{ +\subsubsection{Temperature Sensors}} +Temperature can be boring, but why not. Let's throw one of these on: LMT84LP . Pin compatible with LM35. Supply current is maybe 8uA. Extremely low. +LM84 (1.5V starts, to 5.5), LM85 (1.8V to 5.5) + +\textcolor{green!60!blue!70}{ +\subsubsection{Gas Sensors}} +Lowest is 5mV as of writing on dkey. Skipping. The SHT would work, but its too expensive. + +\textcolor{green!60!blue!70}{ +\subsubsection{Supercap}} +For now, trying this: +FG0V155ZF + + + + + + + + + + +\textcolor{green!60!blue!70}{ +\subsubsection{Hall Effect Sensors - Push Pull vs Open Drain Outputs}} +\begin{verbatim}9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputdriveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpullupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the voltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayofsensors +\end{verbatim} From DRV5032 data sheet. + +\textcolor{green!60!blue!70}{ +\subsection{Starting Sensors}} +So as a recap, to start with affordable, low power sensors for my project, I have the following types: +\begin{itemize} +\item Temp sensor (cheapest) +\item Magnetic Sensor (hall effect) +\item Movement Sensor (accellerometer) (analog output) (tiny package) +\item capacitive sensor (azoteq)(may only be short range) +\end{itemize} + +Output, I have not determined yet. IR will not work, as its too high power. Unless I dedicate a battery just for the IR diode... Or make it battery powered. I'll start with batteries, but for solar panel and supercap, it will likely not be viable, unless I transmit extremely rarely. That is also an option, however. + +\subsubsection{Farad to mA} +1.5F supercap can supply 1.5A for 1 second. That is 0.025A for 60 seconds, or 25mA for a minute. +Let's stay I use half that, so 12mA for 60 seconds is my supply. If I transmit once every other hour (when in sunlight)... + +\subsection{PCB} +I have built rev2 of the board today. Using an Uno, user must remember to include VCC and GND. So the programming takes up all 6 pins. The 0.1'' headers were slightly close to the resistors, and the top row of VCC and GND headers are separated, so I labeled them V+2, and GND2.\footnote{Forgetting to plug in GND, and or 5v+ (for Uno), while still plugging in the TPI pins, did not break the Attiny10, in my tests today.} + +The 0.05'' pin headers work perfect for scope probes. The extra breakout I made demonstrates this. + +\subsection{PCB Programming} + +By default, the Attiny10 idles around 1.5mA (5V), before programming. + +First thing to do, is to program it into a low power mode. + +In order to use low power, whilst using the Uno, I will need to add a jumper to the PCB, +so that you can switch between V+2, and V+1. Three pin jumper. Outside pins are each V+, internal goes to Attiny V+. I'll need to remove the trace on gerber rev2, that goes from 4 to VCC. + +\subsubsection{PCB programming and use} +It's not possible to leave the Arduino plugged in, while testing the Attiny10. +example: Even if you power down the Uno, and use a jumper to change V+ rails, +the power dissipation through the TPI pins (10,11,12,13) will cause a draw of about 545uA, and the Attiny10 will not toggle its led. +Therefore, not only a power jumper is required to use the Attiny, but also +a 4 or 5 pin 0.1" cable for the TPI pins, must be disconnected before using the Attiny. +\footnote{In code section, mplab - tests2, the power draw of the 128KHz internal CLK with PB2 flipping at about 400us a cycle, at 3V VCC is about 115uA. At 2V it is ~95uA.} + +\subsection{PCB Rev3} +\begin{itemize} +\item Added jumper to switch between different power rails, so that + Arduino can be left sort of plugged in (turns out, it is still required to disconnect 9,10,11,12,13 pins, so use a 4/5 pin cable). This makes testing low power (2-3V) code, easier, while still programming with the 5V Uno. +\item Added SOT23-6 breakout + \item Moved Resistors further from 9,10,11,12,13 pins. + \item Added separate board for analog Accelerometer. + \item Moved VCC breakout (0.5'' header pins) to connect directly to tiny, not to bottom Voltage rail. + \item Added note about VCC and GND must be connected when programming. + \item Added accelerometer pcb breakout. Package is small, but thanks to pinout/unused pins - is reasonable to solder with hot air. I knew this when I chose it... Then I forgot it earlier today. +\end{itemize} + +\subsection{RF Comms} +I want to use RF to communicate with this device. The IR would work, but would require batteries. If I'm going to use batteries I may as well use RF. Ideally, RF without batteries would be nice. + +I searched for LoRa modules, and came across this https://www.disk91.com/2015/technology/networks/first-step-in-lora-land-microchip-rn2483-test/ + +I've added the datasheets. The RN2483 can be set with a UART, which means two pins on the Attiny. I will want to use a transistor to turn off the module (not using sleep mode), when not in use, so that's another pin. The 4th pin would be for whatever sensor I'm using. Right now, I'm thinking an accelerometer to watch for motion on a door or gate. I may need more pins, as I'd like to be able to switch the accel ic on and off as well. + +There is the Attiny40, and also an Attiny402. Different, but both worth considering. The Attiny40 is covered by my programmer, the 402 is not. 40 is from early 2010's, the 202/402 is from 2017. Also the Attiny20, which is less pins than the 40. But covered by my programmer. I would lean towards the 10 or the 20. 40 is too much IO. + +Attiny10 has I2C on board (TWI). I'm going to stick with the 10. Keep it simple. + +\subsection{Present Questions} +questions: +is a two pin UART the best I can expect to find for simple rf comms +is lora a reasonable solution here? I want as low power as possible, + Lora is not the lowest but if I transmit rarely, and for a short time perhaps it won't matter. + +Is there some other way to transmit data? I don't want to use ultrasonic waves, and IR seems to be too much current, as well +as requiring line of sight / lens. + +\subsubsection{Plan of attack} +I'm going to prototype with the Microchip RF modules for now, and see if I can get this working off a solar panel. I have an ADC, and with RESET disabled another IO. Goal is now: + +Configure RF modules w/arduino. + + +Configure RF module (one Uno receiver, other tiny transmitter) + + +Attach any sensor that uses ADC. (temp sensor, resistor light or thermocouple, current sensor (monitoring power supply), and I have the ones I already tested today (but will hold off on - the accelerometer, and hall effect). + +Desired applications +- Temp of hot surface (boiler) monitoring +- Solar current input monitoring. + +As I've already worked with a current sense before in my battery project (Electronics\_Projects\_2019), I will use again the INA169. It seems to be low enough power for my needs, though I will double check in practice. The data sheet lacks obvious power dissipation figures, while sensing, though quiescient is about 50uA. + +\subsection{Other Sensors} +I need to verify that the following sensors could be used with low power: + +Light dependent Resistor / Diode + + +Sound sensor (mic) + +\subsection{RF Searching} +RF Transceiver ICs require assembly/programming/time, so we want RF Transceiver modules instead. There are a number of roughly 10mA TX active, but that is the lowest I can find. Among these ics (not modules), most are SPI, have their own ARM core... The modules are a bit better in having some that can be controlled by serial. I like the TRM-433-LT, but I will skip this for now (\$20 each). + +I also like the RC11xx-RC232, though the latter is about 30mA TX. That may be the best I can hope for. These two are 433MHz (ISM is 433 - 434MHz). The radiocrafts product is essentially a simplified solution, preprogrammed with a uart which can be used to adjust settings. This option appears to be on part with the microchip offering I've looked at, the RN2483, in fact they both came up on my search results, next to each other. RN doesn't have what IC they use but RC, uses CC1110. + +Another option: + +ZETAPLUS-433-SO is faster than others (500Kbs), and has lower TX (18mA). Up to 2KM range... + +There's more options (over \$18), but for the following specifications, the above three are basically what you can choose from. Ignoring those with high TX power rates (sparkfun), or requires SPI (stmicro) +Specs: +\begin{itemize} +\item In stock +\item Frequency 433-434MHz +\item battery powered vcc range (2) +\end{itemize} +\footnote{There's only 25.} + +I will start with two Radiocraft modules. Let's see how that plays out.\footnote{A set of Dev boards for the radiocraft are \$250. Ouch.} + + + + + +\subsection{Further Notes} +https://www.eevblog.com/forum/microcontrollers/powering-devices-via-gpio-pins/msg2720044/\#msg2720044 - Using GPIO to power devices. + +leonerd TODO LINK HERE (bookmarks in main mach) attiny815 with rf. notice the coiled antennas + +\end{document} + diff --git a/Attiny_Solar_Energy_Harvest/docs/28.aux b/Attiny_Solar_Energy_Harvest/docs/28.aux new file mode 100644 index 0000000..1fecccb --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/28.aux @@ -0,0 +1,31 @@ +\relax +\@writefile{toc}{\contentsline {section}{\numberline {1}Attiny Solar Energy Harvest Tests}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Micro Considerations}{1}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Micro Notes}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Energy Storage}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Make parts, not scrap}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.4}Programming}{2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.4.1}Testing Arduino Loader}{2}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.4.2}Conclusion on Arduino Programming Attiny10}{5}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.4.3}IO Port Switching Speed}{5}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.4.4}VCC 1.8V}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.5}Application}{6}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.5.1}Magnetic Current Sensor}{7}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.5.2}Accelerometers}{7}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.5.3}Temperature Sensors}{8}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.5.4}Gas Sensors}{8}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.5.5}Supercap}{8}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.5.6}Hall Effect Sensors - Push Pull vs Open Drain Outputs}{8}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.6}Starting Sensors}{8}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.6.1}Farad to mA}{9}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.7}PCB}{9}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.8}PCB Programming}{9}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.8.1}PCB programming and use}{10}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.9}PCB Rev3}{10}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.10}RF Comms}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.11}Present Questions}{11}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.11.1}Plan of attack}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.12}Other Sensors}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.13}RF Searching}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.14}PCB Rev 5}{13}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.15}Further Notes}{14}} diff --git a/Attiny_Solar_Energy_Harvest/docs/28.log b/Attiny_Solar_Energy_Harvest/docs/28.log new file mode 100644 index 0000000..7454689 --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/28.log @@ -0,0 +1,381 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2019.8.17) 3 JUL 2020 00:34 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2020/ +Attiny_Solar_Energy_Harvest/docs/28.tex + +(/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2020/A +ttiny_Solar_Energy_Harvest/docs/28.tex +LaTeX2e <2017/01/01> patch level 3 +Babel <3.9r> and hyphenation patterns for 3 language(s) loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo +File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 99. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2017/01/12 v0.06k Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count87 +)) +\Gin@req@height=\dimen103 +\Gin@req@width=\dimen104 +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2016/02/21 v3.3-144 Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2016/05/22 v1.7-166 caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 67. +\captionmargin=\dimen105 +\captionmargin@=\dimen106 +\captionwidth=\dimen107 +\caption@tempdima=\dimen108 +\caption@indent=\dimen109 +\caption@parindent=\dimen110 +\caption@hangindent=\dimen111 +) +\c@ContinuedFloat=\count88 +) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2016/05/14 v3.1 Provides the ifpdf switch +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count89 +\Gm@cntv=\count90 +\c@Gm@tempcnt=\count91 +\Gm@bindingoffset=\dimen112 +\Gm@wd@mp=\dimen113 +\Gm@odd@mp=\dimen114 +\Gm@even@mp=\dimen115 +\Gm@layoutwidth=\dimen116 +\Gm@layoutheight=\dimen117 +\Gm@layouthoffset=\dimen118 +\Gm@layoutvoffset=\dimen119 +\Gm@dimlist=\toks15 +) (./28.aux) +\openout1 = `28.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 12. +LaTeX Font Info: ... okay on input line 12. + +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count92 +\scratchdimen=\dimen120 +\scratchbox=\box26 +\nofMPsegments=\count93 +\nofMParguments=\count94 +\everyMPshowfont=\toks16 +\MPscratchCnt=\count95 +\MPscratchDim=\dimen121 +\MPnumerator=\count96 +\makeMPintoPDFobject=\count97 +\everyMPtoPDFconversion=\toks17 +) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2016/05/21 v0.22 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty +Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +38. +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 456. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: End \AtBeginDocument code. + +*geometry* detected driver: dvips +*geometry* verbose mode - [ preamble ] result: +* driver: dvips +* paper: custom +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* vratio: 1:1 +* modes: +* h-part:(L,W,R)=(54.2025pt, 325.215pt, 54.2025pt) +* v-part:(T,H,B)=(79.49689pt, 491.43622pt, 79.49689pt) +* \paperwidth=433.62pt +* \paperheight=650.43pt +* \textwidth=325.215pt +* \textheight=491.43622pt +* \oddsidemargin=-18.06749pt +* \evensidemargin=-18.06749pt +* \topmargin=-29.7731pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=11.0pt +* \footskip=30.0pt +* \marginparwidth=59.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +LaTeX Font Info: Try loading font information for OMS+cmr on input line 22. +(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd +File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 22. + +Underfull \hbox (badness 10000) in paragraph at lines 34--37 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 34--37 + + [] + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <10.95> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <9> on input line 41. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 41. +[1 +Non-PDF special ignored! + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +[2] [3] [4] +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 164--181 + + [] + +[5] +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 184--201 + + [] + +[6] [7] +Overfull \hbox (2319.18137pt too wide) in paragraph at lines 257--257 +[]\OT1/cmtt/m/n/10.95 9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the +lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputd +riveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpu +llupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan +be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the v +oltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayo +fsensors + [] + +[8] [9] +Overfull \hbox (4.7657pt too wide) in paragraph at lines 306--307 +[]\OT1/cmr/m/n/10.95 Added ac-celerom-e-ter pcb break-out. Pack-age is small, b +ut thanks + [] + +[10] +Overfull \hbox (206.16063pt too wide) in paragraph at lines 312--313 +[]\OT1/cmr/m/n/10.95 I searched for LoRa mod-ules, and came across this https:/ +/www.disk91.com/2015/technology/networks/first- + [] + +[11] [12] +Overfull \hbox (3.92412pt too wide) in paragraph at lines 385--386 +\OT1/cmr/m/n/10.95 https://www.eevblog.com/forum/microcontrollers/powering-devi +ces- + [] + +[13] +Overfull \hbox (2.00143pt too wide) in paragraph at lines 387--388 +[]\OT1/cmr/m/n/10.95 leonerd TODO LINK HERE (book-marks in main mach) at-tiny81 +5 + [] + + +Overfull \hbox (29.1366pt too wide) in paragraph at lines 389--390 +[]\OT1/cmr/m/n/10.95 https://www.eevblog.com/forum/beginners/rf-very-low-power- +comms- + [] + + +Overfull \hbox (9.33832pt too wide) in paragraph at lines 389--390 +\OT1/cmr/m/n/10.95 simple/msg3016400/#msg3016400 - Fo-rum post re-gard-ing this + project. + [] + +[14] (./28.aux) ) +Here is how much of TeX's memory you used: + 3527 strings out of 494945 + 53604 string characters out of 6181032 + 120046 words of memory out of 5000000 + 6804 multiletter control sequences out of 15000+600000 + 8977 words of font info for 32 fonts, out of 8000000 for 9000 + 14 hyphenation exceptions out of 8191 + 39i,8n,38p,877b,250s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on 28.pdf (14 pages, 144865 bytes). +PDF statistics: + 82 PDF objects out of 1000 (max. 8388607) + 57 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 1 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/Attiny_Solar_Energy_Harvest/docs/28.pdf b/Attiny_Solar_Energy_Harvest/docs/28.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7e47edd1e3de334f4860df1ba868285111af2cf2 GIT binary patch literal 144865 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 literal 0 HcmV?d00001 diff --git a/Attiny_Solar_Energy_Harvest/docs/28.tex b/Attiny_Solar_Energy_Harvest/docs/28.tex new file mode 100644 index 0000000..114be9b --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/28.tex @@ -0,0 +1,392 @@ + +\documentclass[11pt]{article} +%Gummi|065|=) +\usepackage{graphicx} +\usepackage{caption} +\usepackage{xcolor} +\usepackage[vcentering,dvips]{geometry} +\geometry{papersize={6in,9in},total={4.5in,6.8in}} +%\title{\textbf{Door Alarm}} +\author{Steak Electronics} +\date{} +\begin{document} + +%\maketitle + +%\tableofcontents +\textcolor{green!60!blue!70}{ + \section{Attiny Solar Energy Harvest Tests}} + +I have the following: +\begin{itemize} +\item Solar panels +\item Attiny 10 +\end{itemize} +To this list, I will add a supercap, and an energy harvesting IC. The goal being to load the super cap during the day, and to run 24/7. I will need an exceptionally low power micro. The super cap will need to be about 3.3V or 5V. +\textcolor{green!60!blue!70}{ +\subsection{Micro Considerations}} +The Arduino Atmega328P is not an option. I'm looking to have a current draw of only 1mA max, (ideally 500uA) when active. Moteino is also not an option for this. Those are made for batteries. I want to be battery free. A super cap, however can be used to store energy. I'll get to that shortly. + +For micros, I have some Attiny10 on hand, and these have a reasonably low power pull in active mode. Let's build those up first. What will the micro do? No idea. I haven't a clue. + +\textcolor{green!60!blue!70}{ +\subsubsection{Micro Notes}} +Must run at 1.8V / 1MHz per front page of data sheet, for 200uA draw in active mode. +\\ +\\ + + +\textcolor{green!60!blue!70}{ +\subsection{Energy Storage}} +I don't want a battery. Let's go with a super cap. The solar panels will only be active some of the time, so I will want to harvest energy with some kind of IC into the cap when the sun is out.\footnote{Reference: www.analog.com/media/en/technical-documentation/technical-articles/solarenergyharvesting.pdf is a start. I'll need to do more research.} + +\textcolor{green!60!blue!70}{ \subsection{Make parts, not scrap}} I will +want to make sure that all parts I build are perf board parts, not +breadboard scrap (to be torn down and rebuilt again). This is an Attiny, +so no need to test much, yet. + +\textcolor{green!60!blue!70}{ +\subsection{Programming}} +To program the Attiny10, I'll use the Arduino adapter from the Junk + Arduino blog. I built it up\footnote{Had slight error where the Arduino + board wouldn't read - pins too short on headers, then the arduino wouldn't boot - due to bad connection on perf board shield. Thankfully, the USB port didn't try to run. Protection circuitry cut in on the laptop.}, and was able to Read the memory. In order to upload to the board, you will need a compiler setup. You can possibly do it in AVRGCC, but instead I opted for either Arduino IDE (via Attiny10Core which didn't work), and then went to Mplab. In order for mplab 5.25 to work, it will need XC8 compiler, and there is a pack that can be downloaded through the IDE to get Attiny10 support. + +It appears the AVR Dragon (which I have) can not be used. However, other programmers can be used. Pickit 4, Mkavrii, stk600, I think. + + +\textcolor{green!60!blue!70}{ \subsubsection{Testing Arduino Loader}} +Tested this with the blink\_LED.c in code folder. The code is as simple as possible. +It is the following: +\begin{verbatim} +//#include +#include +#include + +int main(void) +{ + // PB2 output + DDRB = 1<<2; + + while(1) + { + // Toggle PB2 + PINB = 1<<2; + _delay_ms(500); + } +} +\end{verbatim} +When programmed in Mplab, with XC8 compiler, and Attiny10 support, I get the following +hex output: +\begin{verbatim} +:100000000AC020C01FC01EC01DC01CC01BC01AC01B +:1000100019C018C017C011271FBFCFE5D0E0DEBF41 +:0A002000CDBF03D000C0F894FFCF5D +:10002A0044E041B940B95FE966E871E05150604087 +:0A003A007040E1F700C00000F5CFB0 +:02004400DDCF0E +:00000001FF +\end{verbatim} +The content of this hex isn't the focus of this passage. Instead, I want you to review the +results of a D for Dump Memory, by the Arduino Loader. +\begin{verbatim} + +Current memory state: + +registers, SRAM + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +0000: 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0030: 00 00 00 00 00 00 03 00 00 79 00 03 00 00 00 00 +0040: B7 AD AE FA 58 70 63 6B FB 5A B4 1B FF FF 35 3F +0050: 67 D7 33 43 DF 5F FB 72 C9 7D FE E9 9D C5 00 12 +NVM lock + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F00: FF FF +configuration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F40: FF FF +calibration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F80: 79 FF +device ID + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3FC0: 1E 90 03 FF +program + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +4000: 0A C0 20 C0 1F C0 1E C0 1D C0 1C C0 1B C0 1A C0 +4010: 19 C0 18 C0 17 C0 11 27 1F BF CF E5 D0 E0 DE BF +4020: CD BF 03 D0 00 C0 F8 94 FF CF 44 E0 41 B9 40 B9 +4030: 5F E9 66 E8 71 E0 51 50 60 40 70 40 E1 F7 00 C0 +4040: 00 00 F5 CF DD CF FF FF FF FF FF FF FF FF FF FF +4050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +4060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +(...some memory omitted here for brevity...) +43E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +43F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +\end{verbatim} + +Notice that the "AC020C01F" is set. That is from the hex. But the 01000... +before it seems to be missing. Some deciphering of how the Arduino programs +the Attiny is in order here. It also doesn't end the same. + +Regardless, when programming, the Arduino reports 70 bytes written, and +likewise in the Mplab project memorymap.xml file, it also notes 70 bytes +for the sketch. This lines up.\footnote{Although for an unknown reason, every command registers twice on the Arduino serial monitor, but this appears to be harmless.} + +The blinking LED works. Let's move on. + +\textcolor{green!60!blue!70}{\subsubsection{Conclusion on Arduino Programming Attiny10}} +It's possible, but you have to make a dedicated jig (almost), so it might be easier to use the official programming tools. However, based on this https://www.avrfreaks.net/forum/pickit-4-and-avr-mcu I might not have a choice. So I will use the Arduino for now. But will have to devise what on board parts are req'd for programming, and incorporate into proto board layout. + +\textcolor{green!60!blue!70}{ \subsubsection{IO Port Switching Speed}} +Using the above code without any delay\_ms, I get the following results from a default clock +speed, and a 128KHz clock speed. This test was done to confirm that I could change the clock with +\begin{verbatim} + //Write CCP + CCP = 0xD8; + //change CLK to 128KHz + CLKMSR = 0b01; +\end{verbatim} +There was no issue. +\begin{verbatim} +Default CLK (8MHz? or 1MHz?): 160KHz IO Switch +128KHz CLK: 2.5KHz IO Switch +\end{verbatim} +I am going to pursue 128KHz for starters, for lower current dissipation. Note that with the Arduino loader, it is cumbersome to test and change code as you move along. It is +therefore going to be necessary to use a programmer, with a dedicated header on board. +\textcolor{green!60!blue!70}{ \subsubsection{VCC 1.8V}} +The lowest power supported: 1.8V can be applied, without any configuration +needed. It does not affect IO switching speed (although obviously amplitude is affected). +\begin{verbatim} +128KHz CLK (5.0V): 2.5256 KHz IO switch +128KHz CLK (3.3V): 2.5477 KHz IO switch +128KHz CLK (1.8V): 2.5849 KHz IO switch +\end{verbatim} +As voltage drops, IO increases. +\\ +\\ +\textbf{VCC Dropout voltage:} +\\ +From 1.5, it drops out at 1.248V or so. Comes back at about 1.34V +\\ +\\ +Test size of 1. +\\ +\\ +Can't run this with one (AA) battery, but you could with 2. +\\ +\\ +Current Draw: 128KHz - IO test, 1.8V, 0.08mA (~78uA) (tested w/3478A) +\\ +\\ +\textcolor{green!60!blue!70}{\subsection{Application}} +First, I need a board for these and a programmer, to quickly program. Second, I need an application. I want extremely low power. Hopefully, solar with no batteries, to start. This is extremely low - that is the point. Let's keep this ridiculous. + +Given the power requirements put me under 1mA (with my current panels), I'm considering the following: EEPROMs would require SPI protocol. Doable, but overcomplicated for now. +\\ +\\ +Eink (need to find a small and cheap enough option. So far, they have either too many pins, and/or use too much current. Something like what stores use to display prices would work, but that doesn't get the data out, only makes it readable.), +\\ +\\ +Third option would be RF. That is a viable path, but not today. Let's skip that for now. +\\ +\\ +Fourth option that comes to mind is IR. IR diodes, as in TV remotes, would work well here. I am choosing this as the first project. I will have dumb clients, that consist of - Attiny / IR / Sensor powered by solar. I will have a BBB that receives the IR data, and does all intelligent data gathering. To keep things simple, the IR will be binary ADC data, or otherwise sensor numbers. No SPI, no protocol complexity. That would require space on the Attiny. +\\ +\\ +Let's build some boards based on the above. +\\ +\\ +For sensors: +While building, I came across an option. Hall effect sensors. I think also capacitive sensors can be used. This may find a use in a gate sensor, for when a driveway gate is opened or closed. With a small battery, it would work for years. + +Footprints: I had to make a footprint for this module on board package for one sensor. The solution to get footprints right? copy graphic image and make it into silkscreen on the board. Easy. + +The sensor I looked at was a temp and humidity sensor SHT11 (SHT10 is obsolete). It is low power enough. However, it's \$20. So not in my price range. Otherwise, it would work here. Looks like communication is a shift register, or SPI. + +\textcolor{green!60!blue!70}{ +\subsubsection{Magnetic Current Sensor}} +There is this: +BM14270AMUV-LB +Which is low enough current here (<1mA). But \$7 in qty, and req's I2C. Not today. + +\textcolor{green!60!blue!70}{ +\subsubsection{Accelerometers}} +These are an option. + +Best pinout (for deadbug) is LIS344ALHTR (but lacks vcc down to 1.8) +2nd Best pinout with full 1.8 -3.6 vcc is ADXL337BCPZ-RL7 +(Keep in mind, these are low end options only) +(Analog output only. keep it simple for now.) +Runner up to all above, is KXTC9-2050-FR . But has worse pinout. + +Going with AD part. \$5 in single qty. +Digital output Accelmeters are cheaper. + +All have tiny package sizes. + +Since I am grabbing 1 output only, will need to orient or choose correct output. + +PINOUT: When I said best pinout, I meant that you can solder this by hand or with hot air, without much difficulty, because the layout does not require all pins to be connected (hoping I don't get bit by floating pins, though). Or, the layout has PWR and GND together, which means some pins can be bridged. + +\textcolor{green!60!blue!70}{ +\subsubsection{Temperature Sensors}} +Temperature can be boring, but why not. Let's throw one of these on: LMT84LP . Pin compatible with LM35. Supply current is maybe 8uA. Extremely low. +LM84 (1.5V starts, to 5.5), LM85 (1.8V to 5.5) + +\textcolor{green!60!blue!70}{ +\subsubsection{Gas Sensors}} +Lowest is 5mV as of writing on dkey. Skipping. The SHT would work, but its too expensive. + +\textcolor{green!60!blue!70}{ +\subsubsection{Supercap}} +For now, trying this: +FG0V155ZF + + + + + + + + + + +\textcolor{green!60!blue!70}{ +\subsubsection{Hall Effect Sensors - Push Pull vs Open Drain Outputs}} +\begin{verbatim}9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputdriveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpullupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the voltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayofsensors +\end{verbatim} From DRV5032 data sheet. + +\textcolor{green!60!blue!70}{ +\subsection{Starting Sensors}} +So as a recap, to start with affordable, low power sensors for my project, I have the following types: +\begin{itemize} +\item Temp sensor (cheapest) +\item Magnetic Sensor (hall effect) +\item Movement Sensor (accellerometer) (analog output) (tiny package) +\item capacitive sensor (azoteq)(may only be short range) +\end{itemize} + +Output, I have not determined yet. IR will not work, as its too high power. Unless I dedicate a battery just for the IR diode... Or make it battery powered. I'll start with batteries, but for solar panel and supercap, it will likely not be viable, unless I transmit extremely rarely. That is also an option, however. + +\subsubsection{Farad to mA} +1.5F supercap can supply 1.5A for 1 second. That is 0.025A for 60 seconds, or 25mA for a minute. +Let's stay I use half that, so 12mA for 60 seconds is my supply. If I transmit once every other hour (when in sunlight)... + +\subsection{PCB} +I have built rev2 of the board today. Using an Uno, user must remember to include VCC and GND. So the programming takes up all 6 pins. The 0.1'' headers were slightly close to the resistors, and the top row of VCC and GND headers are separated, so I labeled them V+2, and GND2.\footnote{Forgetting to plug in GND, and or 5v+ (for Uno), while still plugging in the TPI pins, did not break the Attiny10, in my tests today.} + +The 0.05'' pin headers work perfect for scope probes. The extra breakout I made demonstrates this. + +\subsection{PCB Programming} + +By default, the Attiny10 idles around 1.5mA (5V), before programming. + +First thing to do, is to program it into a low power mode. + +In order to use low power, whilst using the Uno, I will need to add a jumper to the PCB, +so that you can switch between V+2, and V+1. Three pin jumper. Outside pins are each V+, internal goes to Attiny V+. I'll need to remove the trace on gerber rev2, that goes from 4 to VCC. + +\subsubsection{PCB programming and use} +It's not possible to leave the Arduino plugged in, while testing the Attiny10. +example: Even if you power down the Uno, and use a jumper to change V+ rails, +the power dissipation through the TPI pins (10,11,12,13) will cause a draw of about 545uA, and the Attiny10 will not toggle its led. +Therefore, not only a power jumper is required to use the Attiny, but also +a 4 or 5 pin 0.1" cable for the TPI pins, must be disconnected before using the Attiny. +\footnote{In code section, mplab - tests2, the power draw of the 128KHz internal CLK with PB2 flipping at about 400us a cycle, at 3V VCC is about 115uA. At 2V it is ~95uA.} + +\subsection{PCB Rev3} +\begin{itemize} +\item Added jumper to switch between different power rails, so that + Arduino can be left sort of plugged in (turns out, it is still required to disconnect 9,10,11,12,13 pins, so use a 4/5 pin cable). This makes testing low power (2-3V) code, easier, while still programming with the 5V Uno. +\item Added SOT23-6 breakout + \item Moved Resistors further from 9,10,11,12,13 pins. + \item Added separate board for analog Accelerometer. + \item Moved VCC breakout (0.5'' header pins) to connect directly to tiny, not to bottom Voltage rail. + \item Added note about VCC and GND must be connected when programming. + \item Added accelerometer pcb breakout. Package is small, but thanks to pinout/unused pins - is reasonable to solder with hot air. I knew this when I chose it... Then I forgot it earlier today. +\end{itemize} + +\subsection{RF Comms} +I want to use RF to communicate with this device. The IR would work, but would require batteries. If I'm going to use batteries I may as well use RF. Ideally, RF without batteries would be nice. + +I searched for LoRa modules, and came across this https://www.disk91.com/2015/technology/networks/first-step-in-lora-land-microchip-rn2483-test/ + +I've added the datasheets. The RN2483 can be set with a UART, which means two pins on the Attiny. I will want to use a transistor to turn off the module (not using sleep mode), when not in use, so that's another pin. The 4th pin would be for whatever sensor I'm using. Right now, I'm thinking an accelerometer to watch for motion on a door or gate. I may need more pins, as I'd like to be able to switch the accel ic on and off as well. + +There is the Attiny40, and also an Attiny402. Different, but both worth considering. The Attiny40 is covered by my programmer, the 402 is not. 40 is from early 2010's, the 202/402 is from 2017. Also the Attiny20, which is less pins than the 40. But covered by my programmer. I would lean towards the 10 or the 20. 40 is too much IO. + +Attiny10 has I2C on board (TWI). I'm going to stick with the 10. Keep it simple. + +\subsection{Present Questions} +questions: +is a two pin UART the best I can expect to find for simple rf comms +is lora a reasonable solution here? I want as low power as possible, + Lora is not the lowest but if I transmit rarely, and for a short time perhaps it won't matter. + +Is there some other way to transmit data? I don't want to use ultrasonic waves, and IR seems to be too much current, as well +as requiring line of sight / lens. + +\subsubsection{Plan of attack} +I'm going to prototype with the Microchip RF modules for now, and see if I can get this working off a solar panel. I have an ADC, and with RESET disabled another IO. Goal is now: + +Configure RF modules w/arduino. + + +Configure RF module (one Uno receiver, other tiny transmitter) + + +Attach any sensor that uses ADC. (temp sensor, resistor light or thermocouple, current sensor (monitoring power supply), and I have the ones I already tested today (but will hold off on - the accelerometer, and hall effect). + +Desired applications +- Temp of hot surface (boiler) monitoring +- Solar current input monitoring. + +As I've already worked with a current sense before in my battery project (Electronics\_Projects\_2019), I will use again the INA169. It seems to be low enough power for my needs, though I will double check in practice. The data sheet lacks obvious power dissipation figures, while sensing, though quiescient is about 50uA. + +\subsection{Other Sensors} +I need to verify that the following sensors could be used with low power: + +Light dependent Resistor / Diode + + +Sound sensor (mic) + +\subsection{RF Searching} +RF Transceiver ICs require assembly/programming/time, so we want RF Transceiver modules instead. There are a number of roughly 10mA TX active, but that is the lowest I can find. Among these ics (not modules), most are SPI, have their own ARM core... The modules are a bit better in having some that can be controlled by serial. I like the TRM-433-LT, but I will skip this for now (\$20 each). + +I also like the RC11xx-RC232, though the latter is about 30mA TX. That may be the best I can hope for. These two are 433MHz (ISM is 433 - 434MHz). The radiocrafts product is essentially a simplified solution, preprogrammed with a uart which can be used to adjust settings. This option appears to be on part with the microchip offering I've looked at, the RN2483, in fact they both came up on my search results, next to each other. RN doesn't have what IC they use but RC, uses CC1110. + +Another option: + +ZETAPLUS-433-SO is faster than others (500Kbs), and has lower TX (18mA). Up to 2KM range... + +There's more options (over \$18), but for the following specifications, the above three are basically what you can choose from. Ignoring those with high TX power rates (sparkfun), or requires SPI (stmicro) +Specs: +\begin{itemize} +\item In stock +\item Frequency 433-434MHz +\item battery powered vcc range (2) +\end{itemize} +\footnote{There's only 25.} + +I will start with two Radiocraft modules. Let's see how that plays out.\footnote{A set of Dev boards for the radiocraft are \$250. Ouch.} + + +\subsection{PCB Rev 5} +\begin{itemize} +\item Added instructions to back of board to speed up getting back to this project after some time. +\item Moved resistors to be further away from programming header +\item Fixed missed connection from JMP to V1 / V2 when I moved barrel plug, and added back the bottom right mounting hole in rev4. +\item Changed prg/jmp/vcc to v1/jmp/v2 (either v rail can be used for programming) + \end{itemize} + + +\subsection{Further Notes} +https://www.eevblog.com/forum/microcontrollers/powering-devices-via-gpio-pins/msg2720044/\#msg2720044 - Using GPIO to power devices. + +leonerd TODO LINK HERE (bookmarks in main mach) attiny815 with rf. notice the coiled antennas + +https://www.eevblog.com/forum/beginners/rf-very-low-power-comms-simple/msg3016400/\#msg3016400 - Forum post regarding this project. + +\end{document} + diff --git a/Attiny_Solar_Energy_Harvest/docs/28.tex~ b/Attiny_Solar_Energy_Harvest/docs/28.tex~ new file mode 100644 index 0000000..4578b29 --- /dev/null +++ b/Attiny_Solar_Energy_Harvest/docs/28.tex~ @@ -0,0 +1,392 @@ + +\documentclass[11pt]{article} +%Gummi|065|=) +\usepackage{graphicx} +\usepackage{caption} +\usepackage{xcolor} +\usepackage[vcentering,dvips]{geometry} +\geometry{papersize={6in,9in},total={4.5in,6.8in}} +%\title{\textbf{Door Alarm}} +\author{Steak Electronics} +\date{} +\begin{document} + +%\maketitle + +%\tableofcontents +\textcolor{green!60!blue!70}{ + \section{Attiny Solar Energy Harvest Tests}} + +I have the following: +\begin{itemize} +\item Solar panels +\item Attiny 10 +\end{itemize} +To this list, I will add a supercap, and an energy harvesting IC. The goal being to load the super cap during the day, and to run 24/7. I will need an exceptionally low power micro. The super cap will need to be about 3.3V or 5V. +\textcolor{green!60!blue!70}{ +\subsection{Micro Considerations}} +The Arduino Atmega328P is not an option. I'm looking to have a current draw of only 1mA max, (ideally 500uA) when active. Moteino is also not an option for this. Those are made for batteries. I want to be battery free. A super cap, however can be used to store energy. I'll get to that shortly. + +For micros, I have some Attiny10 on hand, and these have a reasonably low power pull in active mode. Let's build those up first. What will the micro do? No idea. I haven't a clue. + +\textcolor{green!60!blue!70}{ +\subsubsection{Micro Notes}} +Must run at 1.8V / 1MHz per front page of data sheet, for 200uA draw in active mode. +\\ +\\ + + +\textcolor{green!60!blue!70}{ +\subsection{Energy Storage}} +I don't want a battery. Let's go with a super cap. The solar panels will only be active some of the time, so I will want to harvest energy with some kind of IC into the cap when the sun is out.\footnote{Reference: www.analog.com/media/en/technical-documentation/technical-articles/solarenergyharvesting.pdf is a start. I'll need to do more research.} + +\textcolor{green!60!blue!70}{ \subsection{Make parts, not scrap}} I will +want to make sure that all parts I build are perf board parts, not +breadboard scrap (to be torn down and rebuilt again). This is an Attiny, +so no need to test much, yet. + +\textcolor{green!60!blue!70}{ +\subsection{Programming}} +To program the Attiny10, I'll use the Arduino adapter from the Junk + Arduino blog. I built it up\footnote{Had slight error where the Arduino + board wouldn't read - pins too short on headers, then the arduino wouldn't boot - due to bad connection on perf board shield. Thankfully, the USB port didn't try to run. Protection circuitry cut in on the laptop.}, and was able to Read the memory. In order to upload to the board, you will need a compiler setup. You can possibly do it in AVRGCC, but instead I opted for either Arduino IDE (via Attiny10Core which didn't work), and then went to Mplab. In order for mplab 5.25 to work, it will need XC8 compiler, and there is a pack that can be downloaded through the IDE to get Attiny10 support. + +It appears the AVR Dragon (which I have) can not be used. However, other programmers can be used. Pickit 4, Mkavrii, stk600, I think. + + +\textcolor{green!60!blue!70}{ \subsubsection{Testing Arduino Loader}} +Tested this with the blink\_LED.c in code folder. The code is as simple as possible. +It is the following: +\begin{verbatim} +//#include +#include +#include + +int main(void) +{ + // PB2 output + DDRB = 1<<2; + + while(1) + { + // Toggle PB2 + PINB = 1<<2; + _delay_ms(500); + } +} +\end{verbatim} +When programmed in Mplab, with XC8 compiler, and Attiny10 support, I get the following +hex output: +\begin{verbatim} +:100000000AC020C01FC01EC01DC01CC01BC01AC01B +:1000100019C018C017C011271FBFCFE5D0E0DEBF41 +:0A002000CDBF03D000C0F894FFCF5D +:10002A0044E041B940B95FE966E871E05150604087 +:0A003A007040E1F700C00000F5CFB0 +:02004400DDCF0E +:00000001FF +\end{verbatim} +The content of this hex isn't the focus of this passage. Instead, I want you to review the +results of a D for Dump Memory, by the Arduino Loader. +\begin{verbatim} + +Current memory state: + +registers, SRAM + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +0000: 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +0030: 00 00 00 00 00 00 03 00 00 79 00 03 00 00 00 00 +0040: B7 AD AE FA 58 70 63 6B FB 5A B4 1B FF FF 35 3F +0050: 67 D7 33 43 DF 5F FB 72 C9 7D FE E9 9D C5 00 12 +NVM lock + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F00: FF FF +configuration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F40: FF FF +calibration + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3F80: 79 FF +device ID + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +3FC0: 1E 90 03 FF +program + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +4000: 0A C0 20 C0 1F C0 1E C0 1D C0 1C C0 1B C0 1A C0 +4010: 19 C0 18 C0 17 C0 11 27 1F BF CF E5 D0 E0 DE BF +4020: CD BF 03 D0 00 C0 F8 94 FF CF 44 E0 41 B9 40 B9 +4030: 5F E9 66 E8 71 E0 51 50 60 40 70 40 E1 F7 00 C0 +4040: 00 00 F5 CF DD CF FF FF FF FF FF FF FF FF FF FF +4050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +4060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +(...some memory omitted here for brevity...) +43E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +43F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF +\end{verbatim} + +Notice that the "AC020C01F" is set. That is from the hex. But the 01000... +before it seems to be missing. Some deciphering of how the Arduino programs +the Attiny is in order here. It also doesn't end the same. + +Regardless, when programming, the Arduino reports 70 bytes written, and +likewise in the Mplab project memorymap.xml file, it also notes 70 bytes +for the sketch. This lines up.\footnote{Although for an unknown reason, every command registers twice on the Arduino serial monitor, but this appears to be harmless.} + +The blinking LED works. Let's move on. + +\textcolor{green!60!blue!70}{\subsubsection{Conclusion on Arduino Programming Attiny10}} +It's possible, but you have to make a dedicated jig (almost), so it might be easier to use the official programming tools. However, based on this https://www.avrfreaks.net/forum/pickit-4-and-avr-mcu I might not have a choice. So I will use the Arduino for now. But will have to devise what on board parts are req'd for programming, and incorporate into proto board layout. + +\textcolor{green!60!blue!70}{ \subsubsection{IO Port Switching Speed}} +Using the above code without any delay\_ms, I get the following results from a default clock +speed, and a 128KHz clock speed. This test was done to confirm that I could change the clock with +\begin{verbatim} + //Write CCP + CCP = 0xD8; + //change CLK to 128KHz + CLKMSR = 0b01; +\end{verbatim} +There was no issue. +\begin{verbatim} +Default CLK (8MHz? or 1MHz?): 160KHz IO Switch +128KHz CLK: 2.5KHz IO Switch +\end{verbatim} +I am going to pursue 128KHz for starters, for lower current dissipation. Note that with the Arduino loader, it is cumbersome to test and change code as you move along. It is +therefore going to be necessary to use a programmer, with a dedicated header on board. +\textcolor{green!60!blue!70}{ \subsubsection{VCC 1.8V}} +The lowest power supported: 1.8V can be applied, without any configuration +needed. It does not affect IO switching speed (although obviously amplitude is affected). +\begin{verbatim} +128KHz CLK (5.0V): 2.5256 KHz IO switch +128KHz CLK (3.3V): 2.5477 KHz IO switch +128KHz CLK (1.8V): 2.5849 KHz IO switch +\end{verbatim} +As voltage drops, IO increases. +\\ +\\ +\textbf{VCC Dropout voltage:} +\\ +From 1.5, it drops out at 1.248V or so. Comes back at about 1.34V +\\ +\\ +Test size of 1. +\\ +\\ +Can't run this with one (AA) battery, but you could with 2. +\\ +\\ +Current Draw: 128KHz - IO test, 1.8V, 0.08mA (~78uA) (tested w/3478A) +\\ +\\ +\textcolor{green!60!blue!70}{\subsection{Application}} +First, I need a board for these and a programmer, to quickly program. Second, I need an application. I want extremely low power. Hopefully, solar with no batteries, to start. This is extremely low - that is the point. Let's keep this ridiculous. + +Given the power requirements put me under 1mA (with my current panels), I'm considering the following: EEPROMs would require SPI protocol. Doable, but overcomplicated for now. +\\ +\\ +Eink (need to find a small and cheap enough option. So far, they have either too many pins, and/or use too much current. Something like what stores use to display prices would work, but that doesn't get the data out, only makes it readable.), +\\ +\\ +Third option would be RF. That is a viable path, but not today. Let's skip that for now. +\\ +\\ +Fourth option that comes to mind is IR. IR diodes, as in TV remotes, would work well here. I am choosing this as the first project. I will have dumb clients, that consist of - Attiny / IR / Sensor powered by solar. I will have a BBB that receives the IR data, and does all intelligent data gathering. To keep things simple, the IR will be binary ADC data, or otherwise sensor numbers. No SPI, no protocol complexity. That would require space on the Attiny. +\\ +\\ +Let's build some boards based on the above. +\\ +\\ +For sensors: +While building, I came across an option. Hall effect sensors. I think also capacitive sensors can be used. This may find a use in a gate sensor, for when a driveway gate is opened or closed. With a small battery, it would work for years. + +Footprints: I had to make a footprint for this module on board package for one sensor. The solution to get footprints right? copy graphic image and make it into silkscreen on the board. Easy. + +The sensor I looked at was a temp and humidity sensor SHT11 (SHT10 is obsolete). It is low power enough. However, it's \$20. So not in my price range. Otherwise, it would work here. Looks like communication is a shift register, or SPI. + +\textcolor{green!60!blue!70}{ +\subsubsection{Magnetic Current Sensor}} +There is this: +BM14270AMUV-LB +Which is low enough current here (<1mA). But \$7 in qty, and req's I2C. Not today. + +\textcolor{green!60!blue!70}{ +\subsubsection{Accelerometers}} +These are an option. + +Best pinout (for deadbug) is LIS344ALHTR (but lacks vcc down to 1.8) +2nd Best pinout with full 1.8 -3.6 vcc is ADXL337BCPZ-RL7 +(Keep in mind, these are low end options only) +(Analog output only. keep it simple for now.) +Runner up to all above, is KXTC9-2050-FR . But has worse pinout. + +Going with AD part. \$5 in single qty. +Digital output Accelmeters are cheaper. + +All have tiny package sizes. + +Since I am grabbing 1 output only, will need to orient or choose correct output. + +PINOUT: When I said best pinout, I meant that you can solder this by hand or with hot air, without much difficulty, because the layout does not require all pins to be connected (hoping I don't get bit by floating pins, though). Or, the layout has PWR and GND together, which means some pins can be bridged. + +\textcolor{green!60!blue!70}{ +\subsubsection{Temperature Sensors}} +Temperature can be boring, but why not. Let's throw one of these on: LMT84LP . Pin compatible with LM35. Supply current is maybe 8uA. Extremely low. +LM84 (1.5V starts, to 5.5), LM85 (1.8V to 5.5) + +\textcolor{green!60!blue!70}{ +\subsubsection{Gas Sensors}} +Lowest is 5mV as of writing on dkey. Skipping. The SHT would work, but its too expensive. + +\textcolor{green!60!blue!70}{ +\subsubsection{Supercap}} +For now, trying this: +FG0V155ZF + + + + + + + + + + +\textcolor{green!60!blue!70}{ +\subsubsection{Hall Effect Sensors - Push Pull vs Open Drain Outputs}} +\begin{verbatim}9.1.1OutputTypeTradeoffsThe push-pulloutputallowsfor the lowestsystempowerconsumptionbecausethereis no currentleakagepathwhenthe outputdriveshighor low. The open-drainoutputinvolvesa leakagepaththroughthe externalpullupresistorwhenthe outputdriveslow.The open-drainoutputsof multipledevicescan be tied togetherto forma logicalAND.In this setup,if any sensordriveslow, the voltageon the sharednodebecomeslow. Thiscan allowa singleGPIOto measurean arrayofsensors +\end{verbatim} From DRV5032 data sheet. + +\textcolor{green!60!blue!70}{ +\subsection{Starting Sensors}} +So as a recap, to start with affordable, low power sensors for my project, I have the following types: +\begin{itemize} +\item Temp sensor (cheapest) +\item Magnetic Sensor (hall effect) +\item Movement Sensor (accellerometer) (analog output) (tiny package) +\item capacitive sensor (azoteq)(may only be short range) +\end{itemize} + +Output, I have not determined yet. IR will not work, as its too high power. Unless I dedicate a battery just for the IR diode... Or make it battery powered. I'll start with batteries, but for solar panel and supercap, it will likely not be viable, unless I transmit extremely rarely. That is also an option, however. + +\subsubsection{Farad to mA} +1.5F supercap can supply 1.5A for 1 second. That is 0.025A for 60 seconds, or 25mA for a minute. +Let's stay I use half that, so 12mA for 60 seconds is my supply. If I transmit once every other hour (when in sunlight)... + +\subsection{PCB} +I have built rev2 of the board today. Using an Uno, user must remember to include VCC and GND. So the programming takes up all 6 pins. The 0.1'' headers were slightly close to the resistors, and the top row of VCC and GND headers are separated, so I labeled them V+2, and GND2.\footnote{Forgetting to plug in GND, and or 5v+ (for Uno), while still plugging in the TPI pins, did not break the Attiny10, in my tests today.} + +The 0.05'' pin headers work perfect for scope probes. The extra breakout I made demonstrates this. + +\subsection{PCB Programming} + +By default, the Attiny10 idles around 1.5mA (5V), before programming. + +First thing to do, is to program it into a low power mode. + +In order to use low power, whilst using the Uno, I will need to add a jumper to the PCB, +so that you can switch between V+2, and V+1. Three pin jumper. Outside pins are each V+, internal goes to Attiny V+. I'll need to remove the trace on gerber rev2, that goes from 4 to VCC. + +\subsubsection{PCB programming and use} +It's not possible to leave the Arduino plugged in, while testing the Attiny10. +example: Even if you power down the Uno, and use a jumper to change V+ rails, +the power dissipation through the TPI pins (10,11,12,13) will cause a draw of about 545uA, and the Attiny10 will not toggle its led. +Therefore, not only a power jumper is required to use the Attiny, but also +a 4 or 5 pin 0.1" cable for the TPI pins, must be disconnected before using the Attiny. +\footnote{In code section, mplab - tests2, the power draw of the 128KHz internal CLK with PB2 flipping at about 400us a cycle, at 3V VCC is about 115uA. At 2V it is ~95uA.} + +\subsection{PCB Rev3} +\begin{itemize} +\item Added jumper to switch between different power rails, so that + Arduino can be left sort of plugged in (turns out, it is still required to disconnect 9,10,11,12,13 pins, so use a 4/5 pin cable). This makes testing low power (2-3V) code, easier, while still programming with the 5V Uno. +\item Added SOT23-6 breakout + \item Moved Resistors further from 9,10,11,12,13 pins. + \item Added separate board for analog Accelerometer. + \item Moved VCC breakout (0.5'' header pins) to connect directly to tiny, not to bottom Voltage rail. + \item Added note about VCC and GND must be connected when programming. + \item Added accelerometer pcb breakout. Package is small, but thanks to pinout/unused pins - is reasonable to solder with hot air. I knew this when I chose it... Then I forgot it earlier today. +\end{itemize} + +\subsection{RF Comms} +I want to use RF to communicate with this device. The IR would work, but would require batteries. If I'm going to use batteries I may as well use RF. Ideally, RF without batteries would be nice. + +I searched for LoRa modules, and came across this https://www.disk91.com/2015/technology/networks/first-step-in-lora-land-microchip-rn2483-test/ + +I've added the datasheets. The RN2483 can be set with a UART, which means two pins on the Attiny. I will want to use a transistor to turn off the module (not using sleep mode), when not in use, so that's another pin. The 4th pin would be for whatever sensor I'm using. Right now, I'm thinking an accelerometer to watch for motion on a door or gate. I may need more pins, as I'd like to be able to switch the accel ic on and off as well. + +There is the Attiny40, and also an Attiny402. Different, but both worth considering. The Attiny40 is covered by my programmer, the 402 is not. 40 is from early 2010's, the 202/402 is from 2017. Also the Attiny20, which is less pins than the 40. But covered by my programmer. I would lean towards the 10 or the 20. 40 is too much IO. + +Attiny10 has I2C on board (TWI). I'm going to stick with the 10. Keep it simple. + +\subsection{Present Questions} +questions: +is a two pin UART the best I can expect to find for simple rf comms +is lora a reasonable solution here? I want as low power as possible, + Lora is not the lowest but if I transmit rarely, and for a short time perhaps it won't matter. + +Is there some other way to transmit data? I don't want to use ultrasonic waves, and IR seems to be too much current, as well +as requiring line of sight / lens. + +\subsubsection{Plan of attack} +I'm going to prototype with the Microchip RF modules for now, and see if I can get this working off a solar panel. I have an ADC, and with RESET disabled another IO. Goal is now: + +Configure RF modules w/arduino. + + +Configure RF module (one Uno receiver, other tiny transmitter) + + +Attach any sensor that uses ADC. (temp sensor, resistor light or thermocouple, current sensor (monitoring power supply), and I have the ones I already tested today (but will hold off on - the accelerometer, and hall effect). + +Desired applications +- Temp of hot surface (boiler) monitoring +- Solar current input monitoring. + +As I've already worked with a current sense before in my battery project (Electronics\_Projects\_2019), I will use again the INA169. It seems to be low enough power for my needs, though I will double check in practice. The data sheet lacks obvious power dissipation figures, while sensing, though quiescient is about 50uA. + +\subsection{Other Sensors} +I need to verify that the following sensors could be used with low power: + +Light dependent Resistor / Diode + + +Sound sensor (mic) + +\subsection{RF Searching} +RF Transceiver ICs require assembly/programming/time, so we want RF Transceiver modules instead. There are a number of roughly 10mA TX active, but that is the lowest I can find. Among these ics (not modules), most are SPI, have their own ARM core... The modules are a bit better in having some that can be controlled by serial. I like the TRM-433-LT, but I will skip this for now (\$20 each). + +I also like the RC11xx-RC232, though the latter is about 30mA TX. That may be the best I can hope for. These two are 433MHz (ISM is 433 - 434MHz). The radiocrafts product is essentially a simplified solution, preprogrammed with a uart which can be used to adjust settings. This option appears to be on part with the microchip offering I've looked at, the RN2483, in fact they both came up on my search results, next to each other. RN doesn't have what IC they use but RC, uses CC1110. + +Another option: + +ZETAPLUS-433-SO is faster than others (500Kbs), and has lower TX (18mA). Up to 2KM range... + +There's more options (over \$18), but for the following specifications, the above three are basically what you can choose from. Ignoring those with high TX power rates (sparkfun), or requires SPI (stmicro) +Specs: +\begin{itemize} +\item In stock +\item Frequency 433-434MHz +\item battery powered vcc range (2) +\end{itemize} +\footnote{There's only 25.} + +I will start with two Radiocraft modules. Let's see how that plays out.\footnote{A set of Dev boards for the radiocraft are \$250. Ouch.} + + +\subsection{PCB Rev 5} +\begin{itemize} +\item Added instructions to back of board to speed up getting back to this project after some time. +\item Moved resistors to be further away from programming header +\item Fixed missed connection from JMP to V1 / V2 when I moved barrel plug, and added back the bottom right mounting hole in rev4. +\item Changed prg/jmp/vcc to v1/jmp/v2 (either v rail can be used for programming) + \end{itemize} + + +\subsection{Further Notes} +https://www.eevblog.com/forum/microcontrollers/powering-devices-via-gpio-pins/msg2720044/\#msg2720044 - Using GPIO to power devices. + +leonerd TODO LINK HERE (bookmarks in main mach) attiny815 with rf. notice the coiled antennas + +https://www.eevblog.com/forum/beginners/rf-very-low-power-comms-simple/msg3016400/#msg3016400 - Forum post regarding this project. + +\end{document} +