/bioreactor_uno

Reference to my own project

Primary LanguagePython

BioReaktor - układ sterowania

Instrukcja dla projektu układu elektronicznego

Ten dokument zawiera instrukcje dzięki którym możliwe jest uruchomienie programu na płytce ArduinoUno oraz opis użytego protokołu komunikacyjnego wraz z przykładami.

Użyte technologie:

Uruchomienie programu

Komunikacja

Komunikacja z komputerem odbywa się po przez wykorzystanie portu szeregowego, to obsługi protokołu można wykorzystać każdy terminal portu szeregowe. Dostępnę są takie rowziązania jak:

  • ArduinoIDE - Serial Monitor
  • Tera Term
  • Putty

Prędkość tranmisji obecnie ustawiona jest na 115200 ale można ją zmienić w kodzie plik src/main.cpp .

...
// the setup function runs once when you press reset or power the board
void setup()
{
  // initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

  while (!Serial)
  {
    ; // wait for serial port to connect. Needed for native USB, on LEONARDO, MICRO, YUN, and other 32u4 based boards.
  }
...

Odbierane wiadomości

❗Każda z ramek ma taki sam format przesyłanych wiadomości. Wiadomość zaczyna się od znaku $< następnym elementem jest typ obbieranej ramki obecnie są dwa:

  • DF - ramka szybka
  • DP - ramka pomp

Po typie ramki pojawia się znak ? a następnie przekazywane są dane, zależności od typu ramki dane różnią się. Wiadomość zakończona jest znakami >&.

Ramka szybka

Opis ramki szybkiej DF

$<DF?PH:{Czujnik PH},TEMP:{Czujnik temperatury},GS:{Czujnik tlenu}>&

Wartości otrzymywane z czujników ({Czujnik PH}, {Czujnik temperatury},oraz {Czujnik tlenu})są podawane z dokładnością do trzeciego miejsca po przecinku.

Przykład:

$<DF?PH:1.736,TEMP,21.997,GS:1.210>&

Ramka pomp

Opis ramki szybkiej DP

$<DP?1:{Pompa 1},2:{Pompa 2},3:{Pompa 3},4:{Pompa 4}>&
  • mininlana wartość - 0
  • maksymalna wartość - 255

Wartości otrzymywane z pomp ({Pompa 1},{Pompa 2},{Pompa 3},oraz {Pompa 4}), z zakresu 0-255 są tak naprawdę odzwierciedleniem wartości zadanych przez użytkownika, jest to ramka barzdziej pomocnicza.

Przykład:

$<DP?1:25,2:137,3:151,4:92>&

Komendy

?

Komenda pomocy - zwaraca informacje o wszystkich dotępnych komendach przydatna do pobranie informacji w przypadku braku dostepu do dokumentacji

Przykład:

?

Odpowiedź:

Lista dostepnych komend

❗❗❗ Wszystkie wysyłane komendy funckyjne musi poprzedzać dodanie CMD.


DEBUG_FAST

Komenda ramki szybkiej - wyłącza oraz włącza wysyłanie danych szybkich domyślnie włączona

CMD,DEBUG_FAST,{on/off} 
Argument Zakres wartości Opis argumentów
{on/off} 0 / 1 0 (wyłączone) lub 1 (włączone)

Przykład:

CMD,DEBUG_FAST,1 // Włączenie ramki szybkiej

DEBUG_PUMP

Komenda ramki szybkiej - wyłącza oraz włącza wysyłanie danych z pomp domyślnie włączona

CMD,DEBUG_PUMP,{on/off} 
Argument Zakres wartości Opis argumentów
{on/off} 0 / 1 0 (wyłączone) lub 1 (włączone)

Przykład:

CMD,DEBUG_PUMP,0 // Wyłączenie ramki pomp

SET_PUMP

Komenda ustawia prędkość silnika pomp

Pompy mogą pracować w dwie strony, o kierunku ruchu decyduje wartość pompy może być dodatnia lub ujemna

CMD,SET_PUMP,{n},{x}
Argument Zakres wartości Opis argumentów
{n} 0 - 3 pompy są ponumerowane od 0 do 3
{x} -255 - 255 -255 (minimalna wartość), 0 (wyłączone), 255 (maksymalna wartość)

Przykład:

CMD,SET_PUMP,2,-170 // Ustawienie pompy nr 2 na wartość -170
CMD,SET_PUMP,1,0 // Ustawienie pompy nr 1 na wartość 0 (wyłączenie)
CMD,SET_PUMP,3,255 // Ustawienie pompy nr 3 na wartość 255 (maksymalna wartość)

License

MIT