Firenet

Check-in [6564c239e0]
Login

Check-in [6564c239e0]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix spelling
Timelines: family | ancestors | descendants | both | NEWNET
Files: files | file ages | folders
SHA1: 6564c239e02db1220f5045e15c4db25500066223
User & Date: jim 2012-04-08 11:49:39.310
Context
2012-04-09
00:43
Minor edit on headend code check-in: a0fd46c436 user: jim tags: NEWNET
2012-04-08
11:49
Fix spelling check-in: 6564c239e0 user: jim tags: NEWNET
2012-04-07
09:30
Update documentation check-in: 55af3d3112 user: jim tags: NEWNET
Changes
Side-by-Side Diff Ignore Whitespace Patch
Changes to Docs/firenet.lyx.
4536
4537
4538
4539
4540
4541
4542
4543

4544
4545
4546
4547
4548
4549
4550
4536
4537
4538
4539
4540
4541
4542

4543
4544
4545
4546
4547
4548
4549
4550







-
+







\end_layout

\begin_layout Paragraph
FIRENET/CHANNEL
\end_layout

\begin_layout Standard
This command is used to read out the A/D value on a particular channle of
This command is used to read out the A/D value on a particular channel of
 a node.
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="3">
<features tabularvalignment="middle">
4817
4818
4819
4820
4821
4822
4823
4824

4825
4826
4827
4828
4829
4830
4831
4817
4818
4819
4820
4821
4822
4823

4824
4825
4826
4827
4828
4829
4830
4831







-
+







\begin_deeper
\begin_layout LyX-Code
"shows" : [
\end_layout

\end_deeper
\begin_layout LyX-Code
		{ "show"		:	"La Mariseillaise",
		{ "show"		:	"La Marseillaise",
\end_layout

\begin_layout LyX-Code
		  "file"		:	"mariseillaise.json",
\end_layout

\begin_layout LyX-Code
5048
5049
5050
5051
5052
5053
5054
5055

5056
5057
5058
5059
5060
5061
5062
5048
5049
5050
5051
5052
5053
5054

5055
5056
5057
5058
5059
5060
5061
5062







-
+








\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
No data, only one referant
No data, only one referent
\end_layout

\end_inset
</cell>
</row>
</lyxtabular>

5362
5363
5364
5365
5366
5367
5368
5369

5370
5371
5372
5373
5374
5375
5376
5362
5363
5364
5365
5366
5367
5368

5369
5370
5371
5372
5373
5374
5375
5376







-
+









\end_layout

\begin_layout Standard
This is the command to start the show.
 If the show has been SET then this will start by syncing the nodes, then
 starting the music file and startthe programmed firing sequence in the
 starting the music file and start the programmed firing sequence in the
 nodes.
 The user has to have armed the nodes before sending this command.
\end_layout

\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="3">
5897
5898
5899
5900
5901
5902
5903
5904

5905
5906
5907
5908
5909
5910
5911
5897
5898
5899
5900
5901
5902
5903

5904
5905
5906
5907
5908
5909
5910
5911







-
+







\begin_inset CommandInset citation
LatexCommand cite
key "HTTP"

\end_inset

 is very well suited for this task.
 It is small, selfcontained and is designed to be added into applications.
 It is small, self contained and is designed to be added into applications.
 
\end_layout

\begin_layout Standard
In addition a JSON parser has been added to support data sent in this form.
 JSON messages out are easily generated using formatted write statements
 in Lua.
6720
6721
6722
6723
6724
6725
6726
6727

6728
6729
6730
6731
6732
6733
6734
6720
6721
6722
6723
6724
6725
6726

6727
6728
6729
6730
6731
6732
6733
6734







-
+








\begin_layout Standard
As you can see this is an instance class and you may use the request handle
 as the selector to pick the method (close()).
 Either form is acceptable.
 This is used to return the result of a RESTful request to the client.
 The data is usually encoded as JSON and will available to the client.
 Also the request data (from http.open() is reclamed.
 Also the request data (from http.open() is reclaimed.
\end_layout

\begin_layout Paragraph
http.url(h)
\begin_inset Index idx
status open

11475
11476
11477
11478
11479
11480
11481
11482

11483
11484
11485
11486
11487
11488
11489
11475
11476
11477
11478
11479
11480
11481

11482
11483
11484
11485
11486
11487
11488
11489







-
+








\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text

\begin_layout Plain Layout
Restart noad software
Restart node software
\end_layout

\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
11652
11653
11654
11655
11656
11657
11658
11659

11660
11661
11662
11663
11664
11665
11666
11652
11653
11654
11655
11656
11657
11658

11659
11660
11661
11662
11663
11664
11665
11666







-
+








\end_inset


\end_layout

\begin_layout Standard
This command will fire a selected circuit in the node immediatly.
This command will fire a selected circuit in the node immediately.
 The node will be out of communication till the firing cycle is over.
 The available firing channels are numbered from 0-5.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000

11693
11694
11695
11696
11697
11698
11699
11700

11701
11702
11703
11704
11705
11706
11707
11693
11694
11695
11696
11697
11698
11699

11700
11701
11702
11703
11704
11705
11706
11707







-
+








\end_inset


\end_layout

\begin_layout Standard
This is similar to the firing command but will fire the selected ciruit
This is similar to the firing command but will fire the selected circuit
 at the specified time.
 All nodes keep a 32 bit millisecond counter.
 The Z command (see 
\begin_inset CommandInset ref
LatexCommand vref
reference "par:SYNC"

11763
11764
11765
11766
11767
11768
11769
11770

11771
11772
11773
11774
11775
11776
11777
11778
11779

11780
11781
11782
11783
11784
11785
11786
11763
11764
11765
11766
11767
11768
11769

11770
11771
11772
11773
11774
11775
11776
11777
11778

11779
11780
11781
11782
11783
11784
11785
11786







-
+








-
+







) will sync the time for all the nodes, also it will start the node cycling
 through the queue firing the events in time order.
 The available firing channels are numbered from 0-5.
 The command takes a single byte firing circuit value and 32 bit  time value.
\end_layout

\begin_layout Description
P316543 Store firing command for circuit 3 at 16,543 miliseconds.
P316543 Store firing command for circuit 3 at 16,543 milliseconds.
\end_layout

\begin_layout Standard
This command is ignored if sent to the broadcast address.
 There is no response immediately
\end_layout

\begin_layout Standard
When the node fires it returns RP<ch #> allowing tracking of the autofiring.
When the node fires it returns RP<ch #> allowing tracking of the auto firing.
 
\end_layout

\begin_layout Paragraph
STATUS
\begin_inset Index idx
status open
12393
12394
12395
12396
12397
12398
12399
12400

12401
12402
12403
12404
12405
12406
12407
12393
12394
12395
12396
12397
12398
12399

12400
12401
12402
12403
12404
12405
12406
12407







-
+







 queue
\end_layout

\begin_layout Standard
Testing of the sync command with a script that syncs the nodes then has
 them fire at the same time shows the following spread in 10 runs with 3
 nodes, (4,5 and 6).
 Then monitering the firing time of channel 0 and using that to trigger
 Then monitoring the firing time of channel 0 and using that to trigger
 a scope, it captured each of the nodes firing.
 Measuring between the first firing node and the last we get the following
 spreads in 10 trials.
\end_layout

\begin_layout LyX-Code

12545
12546
12547
12548
12549
12550
12551
12552

12553
12554
12555
12556
12557
12558
12559
12545
12546
12547
12548
12549
12550
12551

12552
12553
12554
12555
12556
12557
12558
12559







-
+







V Query node code creation date
\end_layout

\begin_layout Standard
This message is used to get the creation date of the code running in a node.
 The message returned is a string of the compiler constants __DATE__ and
 __TIME__ which shows the creation date of the code.
 This is ment to be human interperted and not machine used.
 This is meant to be human interpreted and not machine used.
\end_layout

\begin_layout Paragraph
CHANNEL
\begin_inset Index idx
status open

13206
13207
13208
13209
13210
13211
13212
13213

13214
13215
13216
13217
13218
13219
13220
13206
13207
13208
13209
13210
13211
13212

13213
13214
13215
13216
13217
13218
13219
13220







-
+







Network 
\end_layout

\begin_layout Standard
The network hardware is ISL8483 RS-485 chip.
 The transmit and receive lines are brought out to pads where they will
 be connected to two stereo phone jacks (one in and the other out).
 The network will be like that show in Section 
 The network will be like that shown in Section 
\begin_inset CommandInset ref
LatexCommand vref
reference "sub:Physical-Layer"

\end_inset

 .
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249




13250
13251
13252
13253
13254
13255
13256
13239
13240
13241
13242
13243
13244
13245




13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256







-
-
-
-
+
+
+
+







 is being sent.
 On the control computer (UNIX/LINUX) the serial output data is handled
 via a system driver.
 The TRANSMIT control line was the DTR line in the serial interface.
 It was found that the DTR ON/OFF signal was very deterministic and would
 occur at the exact line of code where it was called.
 Unfortunately this was NOT the case with the serial data.
 It went into the driver and when exactly it came out was highly dependent
 on the OS system loading and other factors.
 So to make the XMIT control ON/OFF properly overlap the actual data the
 code had to:
 It went into the driver and when exactly it came out the serial port was
 highly dependent on the OS system loading and other factors.
 To make the XMIT control ON/OFF properly overlap the actual data the code
 had to:
\end_layout

\begin_layout Itemize
Turn on DTR
\end_layout

\begin_layout Itemize
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278




13279
13280
13281
13282
13283
13284
13285
13268
13269
13270
13271
13272
13273
13274




13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285







-
-
-
-
+
+
+
+







\begin_layout Itemize
Turn off DTR to close the transmit.
\end_layout

\begin_layout Standard
This would work about 90% of the time but occasionally the control program
 would be swapped out and the disable of the XMIT would be very very late.
 Then the control computer's transmit would be enabled while a node was
 trying to reply.
 This greatly affected actions where there was a lot of message between
 the control computer and nodes (like programming a show).
 Then the control computer's transmit would still be enabled while a node
 was trying to reply.
 This greatly affected actions where there was a lot of message traffic
 between the control computer and nodes (like programming a show).
 
\end_layout

\begin_layout Standard
The solution was to put control of the TRANSMIT ON/OFF in the network interface.
 The board used in the interface is a modified node board so instead of
 just the interface chip the Atmel processor was added also.
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340





13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358


13359
13360
13361
13362
13363
13364
13365
13330
13331
13332
13333
13334
13335
13336




13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357


13358
13359
13360
13361
13362
13363
13364
13365
13366







-
-
-
-
+
+
+
+
+
















-
-
+
+







\begin_layout Standard
The blue line at the top is the transmitter control signal, the the two
 waveforms are the RS485 signal and compliment signals.
\end_layout

\begin_layout Standard
The board is programmed as an Arduino with the main serial interface attached
 to the control computer (see the progam HeadEnd in the Arduino code section).
 The Arduino project has a library so add a second serial port on an I/O
 pins.
 That then is used to go to the FIRENET network as shown above.
 to the control computer (see the program HeadEnd in the Arduino code section).
 The Arduino project has a library that adds a second serial port on any
 I/O pins.
 That software serial port is used to connect to the FIRENET network as
 shown above.
\end_layout

\begin_layout Standard
The only change in the FIRENET control program is that it no longer switches
 DTR when it transmits a packet, all that is handled in the network interface
 board.
\end_layout

\begin_layout Subsubsection
Firing Circuit
\end_layout

\begin_layout Standard
The firing circuit includes the 1 Amp constant current regulator, a relay
 and 6 FET drivers.
 IC5 (7812) is wired to produce 1 Amp output for loads down to 0 ohms.
 This current is switched by a relay (RLY1) so the firing circuits are OFF
 except when needed.
 This current is switched by a relay (RLY1) so the firing circuits are completel
y OFF except when needed.
 The 6 FETs (QF0-QF5) are wired as simple switches so when the processor
 makes the gate high the FET goes to low resistance.
 The Fireworks ignitor is wired between the CC supply and the FET drain
 so up to 1 A flows firing the piece.
 The resistor divider off the drain is used to feed the voltage value present
 on the drain to the processor A/D.
 If the transistor is OFF this will be the full voltage of the battery.
13385
13386
13387
13388
13389
13390
13391
13392

13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404

13405
13406
13407
13408
13409
13410
13411
13412

13413
13414
13415

13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431


13432
13433
13434
13435
13436
13437
13438
13386
13387
13388
13389
13390
13391
13392

13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404

13405
13406
13407
13408
13409
13410
13411
13412

13413
13414
13415

13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431

13432
13433
13434
13435
13436
13437
13438
13439
13440







-
+











-
+







-
+


-
+















-
+
+







reference "par:TIME-Command"

\end_inset

).
 The firing time can now be set to a maximum that will guarantee that ANYTHING
 will be fired.
 We them monitor the continuity during the firing and turn off the firing
 We then monitor the continuity during the firing and turn off the firing
 channel when the ignitor blows.
 
\end_layout

\begin_layout Standard
We cannot measure the continuity while the FET firing transistor is ON so
 while the ignitor is being fired the transistor is switched off for a milliseco
nd.
 The software reads the A/D for that channel and if the ignitor is blown
 it will show a low voltage since the ignitor binding post is no longer
 connected to the firing voltage (HOT1/HOT2).
 If the ignitor is not blow there will be a connection and the A/D will
 If the ignitor is not blown there will be a connection and the A/D will
 read a high voltage.
 Thus as soon as the ignitor is blown we can cut off the FET firing transistor
 and stand down from the firing state.
\end_layout

\begin_layout Standard
There are some considerations for this testing, it should be often enough
 to stop the firing reasonable early.
 to stop the firing reasonably early.
 That is if the max firing time is 3000 ms testing at 2000 ms intervals
 wouldn't be too useful in ending early.
 On the other hand testing too often at say 1 ms intervals would not let
 On the other hand testing too often at say 10 ms intervals would not let
 the ignitor heat up as we would be turning off the firing FET at very frequent
 intervals.
 So testing was done to try to determine some reasonable values, testing
 at 100 ms intervals seems to be a good balance between ending early and
 not heating the ignitor enough.
\end_layout

\begin_layout Subsubsection
Processor
\end_layout

\begin_layout Standard
The processor circuit is largely copied from the Arduino board.
 The serial, reset and power leads are brought to a header which fits the
 SparcFun Serial <-> USB board.
 This can be used to talk to the board for testing.
 This can be used to talk to the board for testing and programming using
 the standard Arduino IDE.
 Also two jumpers are added to allow the USB board to power the board and
 control the network chip JP2,JP3).
 This modified board is used as the control computer interface to the network.
 
\end_layout

\begin_layout Subsection
Changes to Docs/firenet.pdf.

cannot compute difference between binary files