Pages: 1 [2] 3   Go Down
Author Topic: automatiseren generator  (Read 5474 times)
0 Members and 1 Guest are viewing this topic.
The Netherlands
Online Online
Edison Member
*
Karma: 50
Posts: 1672
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote from: rikky
Nou, die sensor voor de tank is dan iets voor later, want droog hou ik die never en de nooit niet, als je bedenkt hoe snel die diesel erin getankt wordt.

Daar is ook wel iets op te bedenken.
Zo hoeft je sensor niet in je tank te zitten, zolang ie er maar in kan kijken.
Dat betekent dan dus dat je er een gat bij moet maken en de sensor door dat gat naar het nivo moet laten kijken.
Dat kun je ook zo maken dat er door dat gat geen brandstof kan lekken.
Verder kun je je sensor in een buis laten kijken, die net zo lang is als je tank diep is.
Op z'n minst zitten er dan gaten in de wand van die buis helemaal onder aan en boven aan, zodat de brandstof erin en eventueel aanwezige lucht eruit kan tijdens vullen of verbruiken van de brandstof.
Of zo'n zelfde buis, maar eentje die buitenlangs loopt.
Die zit er nu vast al op en heet dan peilglas.

Hiermee kun je dus wel het nivo zien, maar voorkom je het vulgeweld van de bunkerboot.

Als de tank niet uitsluitend hoeken van 90 graden heeft (bijvoorbeeld omdat ie gedeeltelijk de vorm van de romp volgt), dan zul je wel moeten uitliteren.
Dat wil zegen dat je m steeds met een vaste hoeveelheid liters vult, en dan een meting doet met je sensor.
Zo zul je een curve kunnen maken per vulling, waarnaar je redelijk precies de werkelijke inhoud kunt bepalen.

Uiteraard hoef ik je niet te wijzen op de gevaren van metaal bewerken in een brandstoftank, ook al is deze leeg (de gassen zijn gevaarlijker dan de brandstof).
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mja, als je toch gaat werken aan de tank, kan je ook een gat boren, van boven, en er een doorvoerschroefdraad in zetten, met een slangnippel vanonder, met een oliebestendige tuinslang eraan, tot bijna aan de bodem.
Aan de andere kant komt er dan een druksensor.
Hoe voller de tank, hoe hoger de druk in de slang.

Maar ik hoef pas in 2015 van de keuring een tankniveaubeveiliging, en dan nog alleen maar om te vertellen, of ie bijna leeg is.

Een vlottertje zal dus al werken.

Anyway, die scetch van Joeri is pittig sophisticated.
Meerdere tapbladen in het programma van de Arduino en meerdere web-sub-pagina's die die maakt, en uiteindelijk met i-frames in 1 pagina zet.

Ik heb vanavond wat te studeren.
Dat houd me dan weer van de straat.:-)

Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 387
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@rikky

Quote
<avr/pgmspace.h> blijft nog steeds zwart, en staat niet bij de libraries.
klopt, ik heb nu eindelijk door,  dat je die gewoon mag weglaten bij de includes. (hij wordt sowieso geladen)

ik gebruik PROGMEM om de html pas te in het geheugen te laden als het nodig is, doe je dit niet, dan zit de 2KB SRAM onmiddellijk vol. Met PROGMEM vloeit de html door een buffer (bv 125 bytes van SRAM). Een beetje meer uitleg vind je hier:

http://www.jo3ri.be/arduino/projects/an-integrated-webpage-with-image

Quote
<SoftwareSerial.h> staat inderdaad bij de libraries, maar in de scetch TankLevelMeaseringWeb1_1, blijft ie zwart gekleurd,???? samen met <avr/pgmspace.h>
(Alle andere libraries kleuren rood)
Sommige versies werken maar half (shame on me), gebruik best versie 2.0

Quote
Met de Arduino 1.1 geeft ie een byte dns[] redeclared as different kind of symbol op regel 95 (versie 2)
byte dns[] = {192,168,1,1}; // fill out your own gateway's ip address or change this in your browser (EEPROM)

Er is iets vreemds met IDE 1.1 Deze versie wil namelijk niet dat je zelf DNS invult en maakt daar dus problemen over, vandaar dat ik versie 1.0 gebruik.

Quote
Morgen weer een dag.
Dank je wel in ieder geval.

Het beste is om eerst je HTML pagina te maken, los van Arduino, zodat deze toont wat je wil. Daarna kan je dan deze in je code integreren.

ik weet dat die code van mijn project er ingewikkeld uitziet (en ook is), er zit trouwens een heel stuk in om het Ethernet te configureren via een webpage, maar dat zal jij vermoedelijk niet nodig hebben.
Logged


Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Okee, thanks.
Ik ben voorlopig wel even bezig.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Gevonden, op Github : https://github.com/arduino/Arduino/tree/master/libraries/SoftwareSerial

Alleen kan je daarvan niet downloaden, en moet ik elk filetje apart, openen, alles selecteren, knippen, in een textfiletje plakken, en dan in de libraries map zetten.
Fijn is dat.
Gelukkig is het niet zo'n grote librarie.

De about-pagina van Github meldt:
Quote
GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers.
Dat zal wel cynisch bedoeld zijn dan.




Is gewoon even wennen.
Dat je niet kan downloaden komt omdat je ergens in een mapje zit dat tot een groter archief behoord.
Als je even op "code" klikt bovenaan zal je een icoontje krijgen genaamd "ZIP". Dit is Uw download-knop..
Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 217
Posts: 13738
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Als je Arduino geinstalleerd hebt zit Software Serial gewoon onder c:\programfile\arduino\libraries\soft... oid
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aha, Github, ik kreeg het toen gewoon eventjes niet voor elkaar, en SoftwareSerial zit i.d.d. gewoon stanaard erbij, maar kleurde niet rood in de scetch.

Anyway, dat is allemaal opgelost, en ik ben aan het studeren.
Maar Jo3ri's programma is te moeilijk.

Gelukkig heb ik dankzij dat programma een vergelijkbaar programma gevonden, wat eenvoudiger is.
Gewoon op de Arduino playground.
http://playground.arduino.cc/Code/WebServer.

Deze doet ook verschillende pagina's.

Nu kan ik al mijn sensortjes op de ene pagina laten zien.
De knopjes voor aan/uit moeten dan op een andere pagina.
En dan kunnen op de hoofdpagina, die 2 samengevoegd worden, middels iframes.
Althans, dat is de bedoeling.

In mijn proefscetch ging dat nog prachtig, dan nam ik de waarden uit de httpheader, etc.
Maar nu loopt dat door de war, ivm dat het programma zelf ook die httpheader gebruikt, denk ik.

Ik kan het niet uitvogelen.

Als ik maar wist, hoe ik erachter komt, hoe die website het gedeelte achter het ip adres aan de Arduino doorgeeft.

Dus b.v. 192.168.1.90/Het_gedeelte_achter_het_ip_adres

Dan schrijf ik de rest wel zelf, zonder moeilijk gePROGMEM en ge-strcat(compare,load); enz.


Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah, krijg nou wat.

Het gedeelte achter het ip adres, staat gewoon in de HttpHeader.

Krijg nou wat.
Ik zit niet goed te kijken.

Okee, nu wordt het verder gemakkelijk.
Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 217
Posts: 13738
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ben wel benieuwd naar je uiteindelijk programma, please post it
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ben wel benieuwd naar je uiteindelijk programma, please post it

Een beetje geduld nog.


Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 387
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tip !!!

 zonder PROGMEM zal je 2kb grote SDRAM vol lopen en zelfs overlopen (als je alle html gewoon in de code zet) je kan zelf controleren door alle karakters en spaties te tellen. SDRAM is ongeveer 2000 karakters. En libraries nemen soms al heel wat van deze SDRAM in beslag.

Je sketch doet dan plots vreemd, of blijft hangen, maar je zal nooit weten waarom. Hierom dus.
Logged


Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1920
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Uit eigen evaring J03ri heeft overschot van gelijk
Met vriendelijke groet
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Het is niet mijn vak, dat programmeren, ik ben maar een domme schipper, en van SDRAM heb ik nog nooit gehoord.
Maar, ik heb een nieuwe proef-sketch, zonder PROGMEM, die het doet.

Getest, met breadbordje en ledjes, op pin 3-9, en 2 willekeurige sensortjes op A0 en A1.

Bij het verifieren van de sketch, zegt ie:
binery sketch size : 16716 bytes (of a 32256 byte maximum)
(Arduino UNO)

Nu wou ik die code wel opsturen, maar dan krijg ik een foutmelding:
The message exceeds the maximum allowed length (9500 characters).

Dus, komt ie nu in 2 of 3 keer

Deel 1:
Code:

#include <SPI.h>
#include <Ethernet.h>
#define MaxHeaderLength 256    //maximum length of http header required

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //physical mac address
byte ip[] = {
  192, 168, 1, 90 };   // static ip of Arduino
byte gateway[] = {
  192, 168, 0, 1 };  // gateway address
byte subnet[] = {
  255, 255, 255, 0 };  //subnet mask
EthernetServer server(80);   //web server port

String HttpHeader = String(MaxHeaderLength);
String Pagina = String(MaxHeaderLength);
String Dataregel = String(MaxHeaderLength);


int value = 0;  
int Pin = 0;

/*    SETUP   */

void setup(){
  //enable serial monitor
  Serial.begin(9600);
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
   //initialize variable
  
                                         //Pin 1,2 is Tx,Rx
   pinMode(3,OUTPUT);
   digitalWrite(3,LOW);
                                         // Pin 4 is voor SD
   for (int i=5; i < 10; i++){
       pinMode(i, OUTPUT);
       digitalWrite(i,LOW);
   }
  
  HttpHeader="";
  Pagina="";
  Dataregel="";
 }

/*    LOOP     */

void loop(){

  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
         char c = client.read();
        
         //read MaxHeaderLength number of characters in the HTTP header
         //discard the rest until \n
         if (HttpHeader.length() < MaxHeaderLength){}
        
           //store characters to string
           HttpHeader = HttpHeader + c;
                
         //if HTTP request has ended
         if (c == '\n') {
    
           // start of web page
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           //client.println("<html><head></head><body>");
           client.println(); // haal dit weg, en het werkt niet meer, waarom???
           //client.println("Hela mundo");
           //client.println();
 
       zoek_pagina();
    
     if (Dataregel != ""){
        Data_afhandelen();
     }  

     if (Pagina == "/favicon.ico "){} //do nothing
      
     else {  
     if (Pagina == "/ "){
       hoofdpagina(client);
     }  
     else{  
     if (Pagina == "/sensors "){
       sensors(client);
     }
     else {
     if (Pagina == "/knoppen "){
       knoppen(client);}
      
     else {
     if (Pagina == "/knop_3 "){
       knop_3(client);}  
    
     else {niet_gevonden(client);
     }}}}
  
       //clearing strings for next read
       HttpHeader="";
       Pagina="";    
       Dataregel="";
      
    //stopping client
    delay(1);
    client.stop();
  
}}}}}}

Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Deel 2:
Code:

/*         HOOFDPAGINA             */

void hoofdpagina(EthernetClient client){

       char myChar = 34; // appeltroff
      
        client.print("<html><head></head><body>");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./sensors");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("100");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("<br>");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./knoppen");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("230");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("<br>");
        
        client.print("<iframe src=");
        client.print(myChar);
        client.print("./knop_3");
        client.print(myChar);
        client.print(" height=");
        client.print(myChar);
        client.print("50");
        client.print(myChar);
        client.print(" frameborder=");
        client.print(myChar);
        client.print("0");
        client.print(myChar);
        client.print("></iframe>");
        client.print("<br>");
        
        client.print("</body></html>");
   }

/*           SENSORS              */
  
void sensors(EthernetClient client){

      char myChar = 34; // appeltroff
          client.print("<html><head>");
          client.print("<meta http-equiv=");
          client.print(myChar);
          client.print("refresh");
          client.print(myChar);
          client.print("content=");
          client.print(myChar);
          client.print("1");
          client.print(myChar);
          client.print("></head><body>");

           client.print("<br>");
           client.print("Sensor A0 ");
           client.println(analogRead(A0));
           client.print("<br>");
           client.print("Sensor A1 ");
           client.println(analogRead(A1));
           client.print("<br>");
           client.print("<br>");
           client.print("</body></html>");
   }

/*            KNOPPEN               */
  
void knoppen(EthernetClient client){

           client.print("<html><head></head><body>");
           client.print("<form method=get>");
           client.print("<br>");
          
           for (int i=5; i < 10; i++){
              client.print("Pin ");client.print(i);
              client.print("<input type='radio' name=");
              client.print(i);client.print(" value='1' ");
              if (digitalRead(i)== 1) {client.print("checked=true ");}
              client.print("> aan     ");
              client.print("<input type='radio' name=");
              client.print(i);client.print(" value='0' ");          
              if (digitalRead(i)== 0) {client.print("checked=true ");}
              client.print("> uit<br>");              
              }  
              
           client.print("<br>");
           client.print("<br>");
           client.print("<input type=submit value=submit></form>");          
           client.print("</body></html>");
          }
 
/*           KNOP 3              */
 
 void knop_3(EthernetClient client){
  
      // Testknop,  fire at once
        
      char myChar = 34; // appeltroff
      Pin = digitalRead(3);
      
      client.print("<html><head></head><body>");
      client.print(" Pin 3 is ");
      if (Pin == 0){
        client.print("uit");
      }
      else { client.print("aan");
      }
      client.print("<br>");
      client.print("Zet Pin ");
      client.print("<a href=");
      client.print(myChar);
      client.print("./knop_3?3=");
    
      
      if (Pin == 0){
         client.print("1");
         client.print(myChar);
        
        
         client.print(">AAN");
         }
         else {
           client.print("0");
           client.print(myChar);
           client.print(">UIT");
         }
       client.print("</a><br>");  
      }

/*            NOT FOUND              */
              
void niet_gevonden(EthernetClient client){
 
   client.print("<html><head></head><body>");
   client.print("<br>");
   client.print("Pagina niet gevonden");
   client.print("</body><html>");
   }

/*          DATA AFHANDELEN              */
  
void Data_afhandelen(){
 
     for(int i = 0;i <= Dataregel.length();i++){
      Pin=Dataregel.charAt(i)-48;;
      i++;i++;
      value=Dataregel.charAt(i)-48;
  
   digitalWrite(Pin,value);
  
   i++;//&
  
     }}
 
 /*           ZOEK PAGINA           */
    
 void zoek_pagina(){
          
              //zoek naar pagina's
 
          int index_start = HttpHeader.indexOf('/');
          int index_stop = HttpHeader.indexOf(' ',index_start);
 
         for (int i = index_start; i <= index_stop; i++){
         char c=  HttpHeader.charAt(i);
          Pagina =  Pagina + c;
         }
  
        if (Pagina.startsWith("/knoppen")) {  
        
          if (Pagina.length() > 9){
            if (Pagina.charAt(8) == '?'){
  
            int index_start = Pagina.indexOf('?');
            int index_stop = Pagina.indexOf(' ',index_start)-1;
    
            for (int i = index_start + 1; i <= index_stop; i++){
            char c=  Pagina.charAt(i);
            Dataregel =  Dataregel + c;
            }
  
            Pagina = "/knoppen ";
          
        }}}
        
        if (Pagina.startsWith("/knop_3")) {  
        
          if (Pagina.length() > 8){
            if (Pagina.charAt(7) == '?'){
      
            int index_start = Pagina.indexOf('?');
            int index_stop = Pagina.indexOf(' ',index_start)-1;
                
            for (int i = index_start + 1; i <= index_stop; i++){
            char c=  Pagina.charAt(i);
            Dataregel =  Dataregel + c;
            }

            Pagina = "/knop_3 ";
          
        }}}}  
  

Speciaal trots ben ik op de FIRE AT ONCE knop 3.
Dat iets dat zo ingewikkeld lijkt, zo makkelijk blijkt te zijn.

Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 78
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

U allen dank, by the way.

Zonder de proefsketch van Joeri3, en de opmerkingen van anderen had dit mij niet gelukt.

Op naar de vervolg-problemen.
Logged

Pages: 1 [2] 3   Go Up
Jump to: