@ -0,0 +1,6 @@ | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) |
@ -0,0 +1,19 @@ | |||
(defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) |
@ -0,0 +1 @@ | |||
cat initialization.inst > /dev/ttyUSB0 |
@ -0,0 +1,7 @@ | |||
(pinmode 4 :output) | |||
(pinmode 5 :output) | |||
(pinmode 6 :output) | |||
(pinmode 7 :output) | |||
(pinmode 8 :output) | |||
(pinmode 9 :output) | |||
(pinmode 10 :output) |
@ -0,0 +1,4 @@ | |||
\relax | |||
\@writefile{toc}{\contentsline {section}{\numberline {1}Attiny Solar Energy Harvest Tests}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Micro Considerations}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Energy Storage}{1}\protected@file@percent } |
@ -0,0 +1,269 @@ | |||
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex 2021.1.4) 4 JAN 2021 22:57 | |||
entering extended mode | |||
restricted \write18 enabled. | |||
%&-line parsing enabled. | |||
**/home/dev/Desktop/code/Electronics_Projects_2021/UserSpaceArduinoUno_via_Ulis | |||
p/docs/1.tex | |||
(/home/dev/Desktop/code/Electronics_Projects_2021/UserSpaceArduinoUno_via_Ulisp | |||
/docs/1.tex | |||
LaTeX2e <2018-12-01> | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | |||
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo | |||
File: size11.clo 2018/09/03 v1.4i Standard LaTeX file (size option) | |||
) | |||
\c@part=\count80 | |||
\c@section=\count81 | |||
\c@subsection=\count82 | |||
\c@subsubsection=\count83 | |||
\c@paragraph=\count84 | |||
\c@subparagraph=\count85 | |||
\c@figure=\count86 | |||
\c@table=\count87 | |||
\abovecaptionskip=\skip41 | |||
\belowcaptionskip=\skip42 | |||
\bibindent=\dimen102 | |||
) | |||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty | |||
Package: graphicx 2017/06/01 v1.1a 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 2017/06/25 v1.2c 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 2018/01/08 v1.0l Graphics/color driver for pdftex | |||
)) | |||
\Gin@req@height=\dimen103 | |||
\Gin@req@width=\dimen104 | |||
) | |||
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty | |||
Package: caption 2018/10/06 v3.3-154 Customizing captions (AR) | |||
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty | |||
Package: caption3 2018/09/12 v1.8c caption3 kernel (AR) | |||
Package caption3 Info: TeX engine: e-TeX on input line 64. | |||
\captionmargin=\dimen105 | |||
\captionmargin@=\dimen106 | |||
\captionwidth=\dimen107 | |||
\caption@tempdima=\dimen108 | |||
\caption@indent=\dimen109 | |||
\caption@parindent=\dimen110 | |||
\caption@hangindent=\dimen111 | |||
) | |||
\c@caption@flags=\count88 | |||
\c@ContinuedFloat=\count89 | |||
) | |||
(/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 2018/04/16 v5.8 Page Geometry | |||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty | |||
Package: ifpdf 2018/09/07 v3.3 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=\count90 | |||
\Gm@cntv=\count91 | |||
\c@Gm@tempcnt=\count92 | |||
\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 | |||
) | |||
No file 1.aux. | |||
\openout1 = `1.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=\count93 | |||
\scratchdimen=\dimen120 | |||
\scratchbox=\box27 | |||
\nofMPsegments=\count94 | |||
\nofMParguments=\count95 | |||
\everyMPshowfont=\toks16 | |||
\MPscratchCnt=\count96 | |||
\MPscratchDim=\dimen121 | |||
\MPnumerator=\count97 | |||
\makeMPintoPDFobject=\count98 | |||
\everyMPtoPDFconversion=\toks17 | |||
) (/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/generic/oberdiek/infwarerr.sty | |||
Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) | |||
) | |||
(/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/generic/oberdiek/ltxcmds.sty | |||
Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (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) | |||
(/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. | |||
)))) | |||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty | |||
Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO | |||
) | |||
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. | |||
) | |||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 | |||
38. | |||
Package grfext Info: Graphics extension search list: | |||
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.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: <same size as paper> | |||
* 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: External font `cmex10' loaded for size | |||
(Font) <12> on input line 14. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <8> on input line 14. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <6> on input line 14. | |||
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. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <10.95> on input line 33. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <9> on input line 33. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <5> on input line 33. | |||
[1 | |||
Non-PDF special ignored! | |||
<special> papersize=433.62pt,650.43pt | |||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] (./1.aux) ) | |||
Here is how much of TeX's memory you used: | |||
3522 strings out of 494561 | |||
53542 string characters out of 6177455 | |||
122298 words of memory out of 5000000 | |||
7168 multiletter control sequences out of 15000+600000 | |||
9722 words of font info for 34 fonts, out of 8000000 for 9000 | |||
14 hyphenation exceptions out of 8191 | |||
41i,8n,38p,461b,189s stack positions out of 5000i,500n,10000p,200000b,80000s | |||
</usr/share | |||
/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texli | |||
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texm | |||
f-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/ | |||
fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/share/texlive/texmf-dist/fonts/ty | |||
pe1/public/amsfonts/cm/cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/publ | |||
ic/amsfonts/cm/cmr9.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfo | |||
nts/cm/cmsy10.pfb> | |||
Output written on 1.pdf (2 pages, 77798 bytes). | |||
PDF statistics: | |||
39 PDF objects out of 1000 (max. 8388607) | |||
27 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) | |||
@ -0,0 +1,38 @@ | |||
\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. | |||
\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. | |||
\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.} | |||
\end{document} | |||
@ -0,0 +1,23 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
\end{document} | |||
@ -0,0 +1,38 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" > /dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4). | |||
\subsubsection{Trouble with interfacing directly to ttyACM0 / ttyUSB0} | |||
The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means that when you echo "something" to | |||
arduino, this command will open the serial connection, send the command, then close the command and possibly reset the board via one of the | |||
UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and connect it to the computer, the connect | |||
it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the final setup. Computer -> FTDI -> Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. | |||
Ref: | |||
\end{document} | |||
@ -0,0 +1,88 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" > /dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4). | |||
\subsubsection{Trouble with interfacing directly to ttyACM0 / ttyUSB0} | |||
The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means that when you echo "something" to | |||
arduino, this command will open the serial connection, send the command, then close the command and possibly reset the board via one of the | |||
UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and connect it to the computer, the connect | |||
it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the final setup. Computer -> FTDI -> Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have time to troubleshoot this now. | |||
I tried a few things (exec 3<>, and the stty) neither worked. You could also use Python, but then that's more dependencies. Bad idea. This | |||
should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" > /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, that code runs indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a loop that runs and then stops. Here's one of those: | |||
\begin{verbatim} | |||
(defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt > /dev/ARDUINO. It will run a few times, then stop. You can echo it again, if you wish. | |||
There, now we have an interface, and we have proven we can switch an IO high. With a couple of functions, it's trivial to go from there.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. Have one function blink IO some amount of times. This can be used for counters or shift registers.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's wrong. After | |||
you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or anything else. This is | |||
meant to be for basic IO from user space, not C compiled programs. Think lightweight. | |||
\end{document} | |||
@ -0,0 +1,98 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" > /dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4 in 2020/12). | |||
\subsubsection{Trouble with interfacing directly to | |||
ttyACM0 / ttyUSB0} The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means | |||
that when you echo "something" to arduino, this command will open the serial connection, send the command, then close the command and | |||
possibly reset the board via one of the UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and | |||
connect it to the computer, the connect it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the | |||
final setup. Computer -> FTDI -> Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have | |||
time to troubleshoot this now. I tried a few things (exec 3<>, and the stty) neither worked. You could also use Python, but then that's | |||
more dependencies. Bad idea. This should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" > /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, the code runs | |||
indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a | |||
function that runs and then stops. Here's one of those: | |||
\begin{verbatim} (defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt > /dev/ARDUINO. It will blink a few times, then | |||
stop. You can cat it again, if you wish. There, now we have an interface, and we have proven we can switch an IO high/low. With a couple | |||
of functions, it's trivial to build an interface.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. | |||
Have one function blink IO some amount of times. This can be used for counters or shift registers, or in the former, just controlling GPIO.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's | |||
wrong. After you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or | |||
anything else. This is meant to be for basic IO from user space, not C compiled programs. Think lightweight. Fast. Fun. | |||
\subsection{An interface for basic GPIO} | |||
Now, let's build an API/interface so that we can flip some IO, and perhaps increment as mentioned. | |||
\end{document} | |||
@ -0,0 +1,98 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" > /dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4 in 2020/12). | |||
\subsubsection{Trouble with interfacing directly to | |||
ttyACM0 / ttyUSB0} The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means | |||
that when you echo "something" to arduino, this command will open the serial connection, send the command, then close the command and | |||
possibly reset the board via one of the UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and | |||
connect it to the computer, the connect it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the | |||
final setup. Computer -> FTDI -> Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have | |||
time to troubleshoot this now. I tried a few things (exec 3<>, and the stty) neither worked. You could also use Python, but then that's | |||
more dependencies. Bad idea. This should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" > /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, the code runs | |||
indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a | |||
function that runs and then stops. Here's one of those: | |||
\begin{verbatim} (defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt > /dev/ARDUINO. It will blink a few times, then | |||
stop. You can cat it again, if you wish. There, now we have an interface, and we have proven we can switch an IO high/low. With a couple | |||
of functions, it's trivial to build an interface.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. | |||
Have one function blink IO some amount of times. This can be used for counters or shift registers, or in the former, just controlling GPIO.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's | |||
wrong. After you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or | |||
anything else. This is meant to be for basic IO from user space, not C compiled programs. Think lightweight. Fast. Fun. | |||
\subsection{An interface for basic GPIO} | |||
Now, let's build an API/interface so that we can flip some IO, and perhaps increment as mentioned. | |||
\end{document} | |||
@ -0,0 +1,6 @@ | |||
\relax | |||
\@writefile{toc}{\contentsline {section}{\numberline {1}UserSpace IO via uLisp and Arduino Uno}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Setup}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Trouble with interfacing directly to ttyACM0}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.2}Troubleshooting Code}{2}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}An interface for basic GPIO}{3}\protected@file@percent } |
@ -0,0 +1,305 @@ | |||
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex 2021.1.4) 4 JAN 2021 23:02 | |||
entering extended mode | |||
restricted \write18 enabled. | |||
%&-line parsing enabled. | |||
**/home/dev/Desktop/code/Electronics_Projects_2021/UserSpaceArduinoUno_via_Ulis | |||
p/docs/7.tex | |||
(/home/dev/Desktop/code/Electronics_Projects_2021/UserSpaceArduinoUno_via_Ulisp | |||
/docs/7.tex | |||
LaTeX2e <2018-12-01> | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | |||
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo | |||
File: size11.clo 2018/09/03 v1.4i Standard LaTeX file (size option) | |||
) | |||
\c@part=\count80 | |||
\c@section=\count81 | |||
\c@subsection=\count82 | |||
\c@subsubsection=\count83 | |||
\c@paragraph=\count84 | |||
\c@subparagraph=\count85 | |||
\c@figure=\count86 | |||
\c@table=\count87 | |||
\abovecaptionskip=\skip41 | |||
\belowcaptionskip=\skip42 | |||
\bibindent=\dimen102 | |||
) | |||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty | |||
Package: graphicx 2017/06/01 v1.1a 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 2017/06/25 v1.2c 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 2018/01/08 v1.0l Graphics/color driver for pdftex | |||
)) | |||
\Gin@req@height=\dimen103 | |||
\Gin@req@width=\dimen104 | |||
) | |||
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty | |||
Package: caption 2018/10/06 v3.3-154 Customizing captions (AR) | |||
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty | |||
Package: caption3 2018/09/12 v1.8c caption3 kernel (AR) | |||
Package caption3 Info: TeX engine: e-TeX on input line 64. | |||
\captionmargin=\dimen105 | |||
\captionmargin@=\dimen106 | |||
\captionwidth=\dimen107 | |||
\caption@tempdima=\dimen108 | |||
\caption@indent=\dimen109 | |||
\caption@parindent=\dimen110 | |||
\caption@hangindent=\dimen111 | |||
) | |||
\c@caption@flags=\count88 | |||
\c@ContinuedFloat=\count89 | |||
) | |||
(/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 2018/04/16 v5.8 Page Geometry | |||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty | |||
Package: ifpdf 2018/09/07 v3.3 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=\count90 | |||
\Gm@cntv=\count91 | |||
\c@Gm@tempcnt=\count92 | |||
\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 | |||
) (./7.aux) | |||
\openout1 = `7.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=\count93 | |||
\scratchdimen=\dimen120 | |||
\scratchbox=\box27 | |||
\nofMPsegments=\count94 | |||
\nofMParguments=\count95 | |||
\everyMPshowfont=\toks16 | |||
\MPscratchCnt=\count96 | |||
\MPscratchDim=\dimen121 | |||
\MPnumerator=\count97 | |||
\makeMPintoPDFobject=\count98 | |||
\everyMPtoPDFconversion=\toks17 | |||
) (/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/generic/oberdiek/infwarerr.sty | |||
Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) | |||
) | |||
(/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/generic/oberdiek/ltxcmds.sty | |||
Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (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) | |||
(/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. | |||
)))) | |||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty | |||
Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO | |||
) | |||
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. | |||
) | |||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 | |||
38. | |||
Package grfext Info: Graphics extension search list: | |||
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.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: <same size as paper> | |||
* 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: External font `cmex10' loaded for size | |||
(Font) <12> on input line 14. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <8> on input line 14. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <6> on input line 14. | |||
LaTeX Font Info: Try loading font information for OML+cmr on input line 19. | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd | |||
File: omlcmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions | |||
) | |||
LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10.95> not available | |||
(Font) Font shape `OML/cmm/m/it' tried instead on input line 19. | |||
Underfull \hbox (badness 10000) in paragraph at lines 23--25 | |||
[] | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <10.95> on input line 28. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <9> on input line 28. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <5> on input line 28. | |||
[1 | |||
Non-PDF special ignored! | |||
<special> papersize=433.62pt,650.43pt | |||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] | |||
Overfull \hbox (24.20909pt too wide) in paragraph at lines 46--47 | |||
[]\OT1/cmr/m/n/10.95 https://arduino.stackexchange.com/questions/16776/how-to-c | |||
onnect- | |||
[] | |||
Overfull \hbox (6.41527pt too wide) in paragraph at lines 48--49 | |||
[]\OT1/cmr/m/n/10.95 https://stackoverflow.com/questions/3918032/bash-serial-i- | |||
o-and- | |||
[] | |||
[2] | |||
Overfull \hbox (197.91559pt too wide) in paragraph at lines 113--113 | |||
[] \OT1/cmtt/m/n/10.95 answer: I want to be able to flash leds from user space. | |||
possibly increment a counter, but[] | |||
[] | |||
[3] | |||
Overfull \hbox (186.41821pt too wide) in paragraph at lines 113--113 | |||
[] \OT1/cmtt/m/n/10.95 solution: build box / board for uno. connect everything | |||
up. build initialization program[] | |||
[] | |||
Overfull \hbox (25.45496pt too wide) in paragraph at lines 113--113 | |||
[] \OT1/cmtt/m/n/10.95 Then find a way to send commands from gnulinux. let's be | |||
gin.[] | |||
[] | |||
[4] (./7.aux) ) | |||
Here is how much of TeX's memory you used: | |||
3528 strings out of 494561 | |||
53599 string characters out of 6177455 | |||
122326 words of memory out of 5000000 | |||
7170 multiletter control sequences out of 15000+600000 | |||
10198 words of font info for 36 fonts, out of 8000000 for 9000 | |||
14 hyphenation exceptions out of 8191 | |||
41i,8n,38p,352b,253s stack positions out of 5000i,500n,10000p,200000b,80000s | |||
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cm | |||
bx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.p | |||
fb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></u | |||
sr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/shar | |||
e/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texli | |||
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/share/texlive/texmf | |||
-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texlive/texmf-dist/fo | |||
nts/type1/public/amsfonts/cm/cmr9.pfb></usr/share/texlive/texmf-dist/fonts/type | |||
1/public/amsfonts/cm/cmtt10.pfb> | |||
Output written on 7.pdf (4 pages, 115790 bytes). | |||
PDF statistics: | |||
53 PDF objects out of 1000 (max. 8388607) | |||
37 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) | |||
@ -0,0 +1,119 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" \textgreater | |||
/dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\\ | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4 in 2020/12). \footnote{It's a sketch. It installs from Arduino IDE (must be reasonably recent, so 1.8 from Arduino.com works, but not Beowulf/Buster's 1.0 Arduino).} | |||
\subsubsection{Trouble with interfacing directly to | |||
ttyACM0} The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means | |||
that when you echo "something" to arduino, this command will open the serial connection, send the command, then close the command and | |||
possibly reset the board via one of the UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and | |||
connect it to the computer, the connect it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the | |||
final setup. Computer -\textgreater FTDI -\textgreater Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have | |||
time to troubleshoot this now. I tried a few things (exec 3\textless \textgreater, and the stty) neither worked. You could also use Python, but then that's | |||
more dependencies. Bad idea. This should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" \textgreater /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, the code runs | |||
indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a | |||
function that runs and then stops. Here's one of those: | |||
\begin{verbatim} (defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt \textgreater /dev/ARDUINO. It will blink a few times, then | |||
stop. You can cat it again, if you wish. There, now we have an interface, and we have proven we can switch an IO high/low. With a couple | |||
of functions, it's trivial to build an interface.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. | |||
Have one function blink IO some amount of times. This can be used for counters or shift registers, or in the former, just controlling GPIO.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's | |||
wrong. After you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or | |||
anything else. This is meant to be for basic IO from user space, not C compiled programs. Think lightweight. Fast. Fun. | |||
\subsection{An interface for basic GPIO} | |||
Now, let's build an API/interface so that we can flip some IO, and perhaps increment as mentioned. | |||
\begin{verbatim} | |||
let's ask this: what do I want to accomplish? | |||
answer: I want to be able to flash leds from user space. possibly increment a counter, but | |||
that's later. for now, just flash leds. | |||
solution: build box / board for uno. connect everything up. build initialization program | |||
(that will enable outputs as high) | |||
Then find a way to send commands from gnulinux. let's begin. | |||
1. build initialization program | |||
2. create enclosure, and wire up leds | |||
3. run program live from gnuLinux. | |||
\end{verbatim} | |||
\end{document} | |||
@ -0,0 +1,115 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" > /dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4 in 2020/12). | |||
\subsubsection{Trouble with interfacing directly to | |||
ttyACM0 / ttyUSB0} The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means | |||
that when you echo "something" to arduino, this command will open the serial connection, send the command, then close the command and | |||
possibly reset the board via one of the UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and | |||
connect it to the computer, the connect it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the | |||
final setup. Computer -> FTDI -> Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have | |||
time to troubleshoot this now. I tried a few things (exec 3<>, and the stty) neither worked. You could also use Python, but then that's | |||
more dependencies. Bad idea. This should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" > /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, the code runs | |||
indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a | |||
function that runs and then stops. Here's one of those: | |||
\begin{verbatim} (defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt > /dev/ARDUINO. It will blink a few times, then | |||
stop. You can cat it again, if you wish. There, now we have an interface, and we have proven we can switch an IO high/low. With a couple | |||
of functions, it's trivial to build an interface.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. | |||
Have one function blink IO some amount of times. This can be used for counters or shift registers, or in the former, just controlling GPIO.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's | |||
wrong. After you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or | |||
anything else. This is meant to be for basic IO from user space, not C compiled programs. Think lightweight. Fast. Fun. | |||
\subsection{An interface for basic GPIO} | |||
Now, let's build an API/interface so that we can flip some IO, and perhaps increment as mentioned. | |||
\begin{verbatim} | |||
let's ask this: what do I want to accomplish? | |||
answer: I want to be able to flash leds from user space. possibly increment a counter, but | |||
that's later. for now, just flash leds. | |||
solution: build box / board for uno. connect everything up. build initialization program | |||
(that will enable outputs as high) | |||
Then find a way to send commands from gnulinux. let's begin. | |||
1. build initialization program | |||
2. create enclosure, and wire up leds | |||
3. run program live from gnuLinux. | |||
\end{verbatim} | |||
\end{document} | |||
@ -0,0 +1,6 @@ | |||
\relax | |||
\@writefile{toc}{\contentsline {section}{\numberline {1}UserSpace IO via uLisp and Arduino Uno}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Setup}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Trouble with interfacing directly to ttyACM0}{1}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.2}Troubleshooting Code}{2}\protected@file@percent } | |||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}An interface for basic GPIO}{3}\protected@file@percent } |
@ -0,0 +1,305 @@ | |||
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex 2021.1.4) 4 JAN 2021 23:03 | |||
entering extended mode | |||
restricted \write18 enabled. | |||
%&-line parsing enabled. | |||
**/home/dev/Desktop/code/Electronics_Projects_2021/UserSpaceArduinoUno_via_Ulis | |||
p/docs/8.tex | |||
(/home/dev/Desktop/code/Electronics_Projects_2021/UserSpaceArduinoUno_via_Ulisp | |||
/docs/8.tex | |||
LaTeX2e <2018-12-01> | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | |||
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo | |||
File: size11.clo 2018/09/03 v1.4i Standard LaTeX file (size option) | |||
) | |||
\c@part=\count80 | |||
\c@section=\count81 | |||
\c@subsection=\count82 | |||
\c@subsubsection=\count83 | |||
\c@paragraph=\count84 | |||
\c@subparagraph=\count85 | |||
\c@figure=\count86 | |||
\c@table=\count87 | |||
\abovecaptionskip=\skip41 | |||
\belowcaptionskip=\skip42 | |||
\bibindent=\dimen102 | |||
) | |||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty | |||
Package: graphicx 2017/06/01 v1.1a 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 2017/06/25 v1.2c 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 2018/01/08 v1.0l Graphics/color driver for pdftex | |||
)) | |||
\Gin@req@height=\dimen103 | |||
\Gin@req@width=\dimen104 | |||
) | |||
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty | |||
Package: caption 2018/10/06 v3.3-154 Customizing captions (AR) | |||
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty | |||
Package: caption3 2018/09/12 v1.8c caption3 kernel (AR) | |||
Package caption3 Info: TeX engine: e-TeX on input line 64. | |||
\captionmargin=\dimen105 | |||
\captionmargin@=\dimen106 | |||
\captionwidth=\dimen107 | |||
\caption@tempdima=\dimen108 | |||
\caption@indent=\dimen109 | |||
\caption@parindent=\dimen110 | |||
\caption@hangindent=\dimen111 | |||
) | |||
\c@caption@flags=\count88 | |||
\c@ContinuedFloat=\count89 | |||
) | |||
(/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 2018/04/16 v5.8 Page Geometry | |||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty | |||
Package: ifpdf 2018/09/07 v3.3 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=\count90 | |||
\Gm@cntv=\count91 | |||
\c@Gm@tempcnt=\count92 | |||
\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 | |||
) (./8.aux) | |||
\openout1 = `8.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=\count93 | |||
\scratchdimen=\dimen120 | |||
\scratchbox=\box27 | |||
\nofMPsegments=\count94 | |||
\nofMParguments=\count95 | |||
\everyMPshowfont=\toks16 | |||
\MPscratchCnt=\count96 | |||
\MPscratchDim=\dimen121 | |||
\MPnumerator=\count97 | |||
\makeMPintoPDFobject=\count98 | |||
\everyMPtoPDFconversion=\toks17 | |||
) (/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/generic/oberdiek/infwarerr.sty | |||
Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) | |||
) | |||
(/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/generic/oberdiek/ltxcmds.sty | |||
Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (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) | |||
(/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. | |||
)))) | |||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty | |||
Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO | |||
) | |||
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. | |||
) | |||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 | |||
38. | |||
Package grfext Info: Graphics extension search list: | |||
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.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: <same size as paper> | |||
* 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: External font `cmex10' loaded for size | |||
(Font) <12> on input line 14. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <8> on input line 14. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <6> on input line 14. | |||
LaTeX Font Info: Try loading font information for OML+cmr on input line 19. | |||
(/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd | |||
File: omlcmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions | |||
) | |||
LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10.95> not available | |||
(Font) Font shape `OML/cmm/m/it' tried instead on input line 19. | |||
Underfull \hbox (badness 10000) in paragraph at lines 23--25 | |||
[] | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <10.95> on input line 28. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <9> on input line 28. | |||
LaTeX Font Info: External font `cmex10' loaded for size | |||
(Font) <5> on input line 28. | |||
[1 | |||
Non-PDF special ignored! | |||
<special> papersize=433.62pt,650.43pt | |||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] | |||
Overfull \hbox (24.20909pt too wide) in paragraph at lines 46--47 | |||
[]\OT1/cmr/m/n/10.95 https://arduino.stackexchange.com/questions/16776/how-to-c | |||
onnect- | |||
[] | |||
Overfull \hbox (6.41527pt too wide) in paragraph at lines 48--49 | |||
[]\OT1/cmr/m/n/10.95 https://stackoverflow.com/questions/3918032/bash-serial-i- | |||
o-and- | |||
[] | |||
[2] | |||
Overfull \hbox (2.4602pt too wide) in paragraph at lines 115--115 | |||
[] \OT1/cmtt/m/n/10.95 answer: I want to be able to flash leds from user space. | |||
[] | |||
[] | |||
[3] | |||
Overfull \hbox (19.70627pt too wide) in paragraph at lines 115--115 | |||
[] \OT1/cmtt/m/n/10.95 solution: build box / board for uno. connect everything | |||
up.[] | |||
[] | |||
Overfull \hbox (25.45496pt too wide) in paragraph at lines 115--115 | |||
[] \OT1/cmtt/m/n/10.95 Then find a way to send commands from gnulinux. let's be | |||
gin.[] | |||
[] | |||
[4] (./8.aux) ) | |||
Here is how much of TeX's memory you used: | |||
3528 strings out of 494561 | |||
53599 string characters out of 6177455 | |||
122326 words of memory out of 5000000 | |||
7170 multiletter control sequences out of 15000+600000 | |||
10198 words of font info for 36 fonts, out of 8000000 for 9000 | |||
14 hyphenation exceptions out of 8191 | |||
41i,8n,38p,352b,253s stack positions out of 5000i,500n,10000p,200000b,80000s | |||
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cm | |||
bx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.p | |||
fb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></u | |||
sr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/shar | |||
e/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texli | |||
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/share/texlive/texmf | |||
-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texlive/texmf-dist/fo | |||
nts/type1/public/amsfonts/cm/cmr9.pfb></usr/share/texlive/texmf-dist/fonts/type | |||
1/public/amsfonts/cm/cmtt10.pfb> | |||
Output written on 8.pdf (4 pages, 115870 bytes). | |||
PDF statistics: | |||
53 PDF objects out of 1000 (max. 8388607) | |||
37 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) | |||
@ -0,0 +1,121 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" \textgreater | |||
/dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\\ | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4 in 2020/12). \footnote{It's a sketch. It installs from Arduino IDE (must be reasonably recent, so 1.8 from Arduino.com works, but not Beowulf/Buster's 1.0 Arduino).} | |||
\subsubsection{Trouble with interfacing directly to | |||
ttyACM0} The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means | |||
that when you echo "something" to arduino, this command will open the serial connection, send the command, then close the command and | |||
possibly reset the board via one of the UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and | |||
connect it to the computer, the connect it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the | |||
final setup. Computer -\textgreater FTDI -\textgreater Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have | |||
time to troubleshoot this now. I tried a few things (exec 3\textless \textgreater, and the stty) neither worked. You could also use Python, but then that's | |||
more dependencies. Bad idea. This should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" \textgreater /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, the code runs | |||
indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a | |||
function that runs and then stops. Here's one of those: | |||
\begin{verbatim} (defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt \textgreater /dev/ARDUINO. It will blink a few times, then | |||
stop. You can cat it again, if you wish. There, now we have an interface, and we have proven we can switch an IO high/low. With a couple | |||
of functions, it's trivial to build an interface.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. | |||
Have one function blink IO some amount of times. This can be used for counters or shift registers, or in the former, just controlling GPIO.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's | |||
wrong. After you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or | |||
anything else. This is meant to be for basic IO from user space, not C compiled programs. Think lightweight. Fast. Fun. | |||
\subsection{An interface for basic GPIO} | |||
Now, let's build an API/interface so that we can flip some IO, and perhaps increment as mentioned. | |||
\begin{verbatim} | |||
let's ask this: what do I want to accomplish? | |||
answer: I want to be able to flash leds from user space. | |||
possibly increment a counter, but | |||
that's later. for now, just flash leds. | |||
solution: build box / board for uno. connect everything up. | |||
build initialization program | |||
(that will enable outputs as high) | |||
Then find a way to send commands from gnulinux. let's begin. | |||
1. build initialization program | |||
2. create enclosure, and wire up leds | |||
3. run program live from gnuLinux. | |||
\end{verbatim} | |||
-- | |||
\end{document} | |||
@ -0,0 +1,119 @@ | |||
\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{UserSpace IO via uLisp and Arduino Uno}} | |||
\author{Steak Electronics} | |||
\date{} | |||
\begin{document} | |||
\maketitle | |||
%\tableofcontents | |||
\textcolor{green!60!blue!70}{ | |||
\section{UserSpace IO via uLisp and Arduino Uno}} | |||
Overview: Goal is to get an easy way to echo "command" \textgreater | |||
/dev/ARDUINO from GnuLinux userspace. | |||
Then I can 3D print a box, throw some LEDs in there, and get a hardware interface for anything from my distro. | |||
\\ | |||
\subsection{Setup} | |||
First off, I installed the stable uLisp from ulisp.com (AVR version 3.4 in 2020/12). \footnote{It's a sketch. It installs from Arduino IDE (must be reasonably recent, so 1.8 from Arduino.com works, but not Beowulf/Buster's 1.0 Arduino).} | |||
\subsubsection{Trouble with interfacing directly to | |||
ttyACM0} The Arduino Uno uses an FTDI USB to Serial chip. It also has more than just RX/TX connected (I think). This means | |||
that when you echo "something" to arduino, this command will open the serial connection, send the command, then close the command and | |||
possibly reset the board via one of the UART reset pins (DTS perhaps). This won't work. First thing to do, get an FTDI board, and | |||
connect it to the computer, the connect it to digital pins 0,1 (for UART). Then test sending a command. This works. This will be the | |||
final setup. Computer -\textgreater FTDI -\textgreater Arduino. | |||
It should be possible to get it to work without the FTDI chip, but not without some debugging. Have at it, if you wish. I don't have | |||
time to troubleshoot this now. I tried a few things (exec 3\textless \textgreater, and the stty) neither worked. You could also use Python, but then that's | |||
more dependencies. Bad idea. This should be simple. | |||
Ref: | |||
https://forum.arduino.cc/index.php?topic=61127.0 | |||
https://arduino.stackexchange.com/questions/16776/how-to-connect-arduino-device-to-linux | |||
https://stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino | |||
\subsubsection{Troubleshooting Code} | |||
The first thing you will want to do is prove that you can echo or cat "code" \textgreater /dev/ARDUINO. | |||
This code works: | |||
\begin{verbatim} | |||
(defun b (&optional x) | |||
(pinmode 13 :output) | |||
(digitalwrite 13 x) | |||
(delay 1000) | |||
(b (not x))) | |||
(b) | |||
\end{verbatim} | |||
Save it as a text file, then cat the file into /dev/ttyUSB0 or /dev/ARDUINO. Problem is, the code runs | |||
indefinitely. You can't tell it to do anything else. Hit the reset button to restart the Uno back to square one. So instead, you want a | |||
function that runs and then stops. Here's one of those: | |||
\begin{verbatim} (defun b () | |||
(pinmode 13 :output) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200) | |||
(digitalwrite 13 nil) | |||
(delay 500) | |||
(digitalwrite 13 t) | |||
(delay 200)) | |||
(b) | |||
\end{verbatim} | |||
This works. Save it as a .dat or .txt (whatever) and cat file.txt \textgreater /dev/ARDUINO. It will blink a few times, then | |||
stop. You can cat it again, if you wish. There, now we have an interface, and we have proven we can switch an IO high/low. With a couple | |||
of functions, it's trivial to build an interface.\footnote{i.e. have one function set IO high for a given pin. Have one function set IO low. | |||
Have one function blink IO some amount of times. This can be used for counters or shift registers, or in the former, just controlling GPIO.} | |||
Tip: When building code, copy and paste into the Arduino Serial Monitor first. This way, if there's an error, it will tell you what's | |||
wrong. After you've tested the code, then you can put it in a text file. As we are keeping this simple, we don't have logging setup, or | |||
anything else. This is meant to be for basic IO from user space, not C compiled programs. Think lightweight. Fast. Fun. | |||
\subsection{An interface for basic GPIO} | |||
Now, let's build an API/interface so that we can flip some IO, and perhaps increment as mentioned. | |||
\begin{verbatim} | |||
let's ask this: what do I want to accomplish? | |||
answer: I want to be able to flash leds from user space. possibly increment a counter, but | |||
that's later. for now, just flash leds. | |||
solution: build box / board for uno. connect everything up. build initialization program | |||
(that will enable outputs as high) | |||
Then find a way to send commands from gnulinux. let's begin. | |||
1. build initialization program | |||
2. create enclosure, and wire up leds | |||
3. run program live from gnuLinux. | |||
\end{verbatim} | |||
\end{document} | |||
@ -0,0 +1,35 @@ | |||
#note: some of these are redundant, and | |||
we will just use the defaults (i.e. pinmode pinNum :output) | |||
#but for now, will leave them h | |||
###basic functions to use | |||
#these are arduino ones ofc | |||
#ulisp includes these from arduino: | |||
#millis, for-millis, with-i2c, restart-i2c, with-serial, with-spi, | |||
#with-sd-card, pinmode, digitalread, digitalwrite, analogread, | |||
#analogwrite, delay, note | |||
# | |||
#e.g. | |||
# | |||
# (pinmode pinNum :output) | |||
# (digitalwrite pinNum t) | |||
# | |||
# let's ask this: what do I want to accomplish? | |||
# | |||
# answer: I want to be able to flash leds from user space. possibly increment a counter, but | |||
# that's later. for now, just flash leds. | |||
# | |||
# solution: build box / board for uno. connect everything up. build initialization program | |||
# (that will enable outputs as high) | |||
# Then find a way to send commands from gnulinux. let's begin. | |||
(defun timedhiOut (pinNum howLong) | |||
(digitalwrite pinNum t) | |||
(delay howLong) | |||
(digitalwrite pinNum nil)) | |||
(defun lowOut (pinNum) | |||
(digitalwrite pinNum nil)) | |||