Использование библиотек из Arduino в AVRStudio

Чтобы использовать любую библиотеку Arduino в AVRStudio необходимо совсем немногое.

Разберем структуру пустого проекта. В общем то там 2 файла. Нас интересует следующий:

У него вот такое вот содержимое:

#define __AVR_ATmega328p__
#define __AVR_ATmega328P__
#define ARDUINO 161
#define ARDUINO_MAIN
#define F_CPU 16000000L
#define __AVR__
extern "C" void __cxa_pure_virtual() {;}

//
//

#include "...\arduino\hardware\arduino\avr\variants\standard\pins_arduino.h" 
#include "...\arduino\hardware\arduino\avr\cores\arduino\arduino.h"
#include <testtest.ino>

Нам понабоится подключить 2 библиотеки. Далее смотрим структуру main.cpp (точка входа)

...\arduino\hardware\arduino\avr\cores\arduino\main.cpp

Там собственно описана вся структура работы ардуины:

#include <Arduino.h>

//Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (*func)()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

Попробуем создать свой проект по такому лекалу.

  • Создаем новый проект
  • Копируем из ArduinoIDE папку C:\Users\Sainquake\Desktop\arduino\hardware\arduino\avr к себе в проект рядом с входной точкой проекта (Файл в котором main)
  • Пишем следующий код в теле. Подгрузку выделеной бибилотеки нужно отключить

  • Меняем пути на которые ругается компилятор

Все. Должно скомпилироваться.

Тестируем

Добавляем следующий код:

void setup(void){
	pinMode(13, OUTPUT);
}

void loop(void){
	  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
	  delay(1000);              // wait for a second
	  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
	  delay(1000);              // wait for a second
}

Добавляем библиотеки ваеринга:

#include "avr\cores\arduino\wiring.c"
#include "avr\cores\arduino\wiring_digital.c"

В них опять нужно поменять путь к pins_arduino.h

#include "C:\Users\Sainquake\Documents\Atmel Studio\6.2\GccApplication1\GccApplication1\avr\variants\standard\pins_arduino.h"

Компилируем, прошиваем. У меня нет программатора, так что я пользуюсь бутлоадером Arduino и прогой XLoader.

Результат следующий

 

 

MyRIO Hello world

Первый запуск myRIO.

Вся необходимая инфа есть на следующей тсраничке: http://www.ni.com/product-documentation/14603/en/.

Если подробнее, то на той же самой страничке есть ссылка на установщик всего необходимого для работы с устройством. http://www.ni.com/download/ni-myrio-software–2015/5727/en/

Нужно установить хотя бы базовый комплект. Приготовьтесь – это 5.5 ГБ. Но никаких граблей не выявил.

Get Started

После установки можно подключать устройство к ПК. Он найдет драйвер и попросит зарегистрировать устройство и привязать к учетной записи.

Первое что нужно сделать далее – это обновить прошивку. Он сам предложит это сделать сам. Ждем. И после установки запускаем программу Launch Getting Started Wizzard. Появится следующее окошко:

В нем в активном режиме будут ворочаться показания акселерометра с возможностью помигать светодиодиками.

Теперь сделаем свой первый проект.

Hello World!

Жмем на Go To LabVIEW и создаем простой проект myRIO. Появляется следующее окно:

При двойном клике по нему появится его программа:

Добавим отображение состояния кнопки button0.  Переходим обратно в фронтовую панель (это где серая панель в клеточку). Находим раздел Silver:

Выносим индикатор в рабочую область.

Переходим обратно в заднюю панель. И находим Кнопку в закладке myRIO.

Нужно создать следующую конструкцию:

Все. мы связали логический выход кнопки с индикатором на панели. можем запускать:

В качестве задания:

Попробовать связать выключатель на панели и светодиод на myRIO.

Логическое И на биполярных транзисторах или как быть когда нужно много UARTов

Как быть когда нужно много UARTов (или любой другой штуки)

Зачастую аппаратных UARTов можно сделать не так уж и много. А иногда и вовсе один. Например, на Raspberry Pi. Что же делать если у вас есть 2 устройства с которыми нужно общаться именно по этому протоколу?

Необходимо сделать схемку коммутации сигналов.

По сути все просто, на вход приходит сигнальная линия и несколько коммутационных. Каждому такому входу соответствует свой выход в который направится сигнал при запихивании лог единички в соответствующий вход.

Соответсвующая логическая схема чисто на логических И.

Теперь как же это должно выглядеть в железе.

Логическое И на биполярных транзисторах

Смотрим в следующую статью: http://www.schoolinfo1.narod.ru/elements2.htm. Там пишут что для лог. И нужно 2! транзистора. Жируют=) В общем я подумал и решил что можно сделать на одном:

Вот и все.

Полезные статьи:
https://ru.wikipedia.org/wiki/

http://electrik.info/main/praktika/751-shemy-vklyucheniya-bipolyarnyh-tranzistorov.html

Raspberry Pi 2 Web Server

Все что нужно чтобы запустить свой веб сервер на малинке описано в этой статье. Джентельменский набор так сказать.

Подразумеваю что на Малине стоит Raspberian и есть доступ к консоли (через удаленный доступ или напрямую)

Автоподключение Raspberry Pi 2 к Wi-Fi

Если вы хотите чтобы малинка автоматически конектилась к вашему файфаю то нужно сделать следующее. Перевод с (http://weworkweplay.com/play/automatically-connect-a-raspberry-pi-to-a-wifi-network/)

Насраиваем файл с соединениями:

$ sudo nano /etc/network/interfaces

нужно поменять строчку:

auto wlan0

и добавить строчки в конце:

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Далее нажимаем Ctrl+X затем Y.

Теперь надо отредактировать файл на который мы ссылаемся.

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Там нужно записать параметры сети к которой подключаемся:

network={
ssid="НАЗВАНИЕ_СЕТИ"
psk="ПАРОЛЬ"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

Все готово.

Проверить просто:

$ sudo reboot

После перезагрузки

ping google.com

Статический IP

Если вам надо статический IP то нужно заменить dhcp на static и дописать в интерфейс:

iface wlan0 inet static
address 192.168.1.155 #Адрес который хочешь получить
netmask 255.255.255.0 
gateway 192.168.1.1 #Адрес роутера

Установка Apache и PHP на Raspberry Pi 2

Установка Apache2 и PHP позволит этому устройству отображать веб странички. Перевод с  https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md.

Установить Apache:

sudo apt-get install apache2 -y

Чтобы протестить можете в браузере на самой малине написать localhost или если вы подключены к сетке то с другого устройства зайти по IP. Чтобы узнать IP Raspberry Pi нужно написать

hostname -I

Если какая-то страничка загрузится, то все ок. Едем дальше.

Ставим PHP:

sudo apt-get install php5 libapache2-mod-php5 -y

После установки в папке /var/www/html/index.html можно заменить на index.php с содержимым:

<?php echo date('Y-m-d H:i:s'); ?>

При обновлении браузера будет отображаться время.

Установка MySQL на Raspberry Pi 2

Ставим MySQL. Оригинал: http://raspipress.com/2014/06/tutorial-install-mysql-server-on-raspbian/

Пробиваем прошивку:

sudo uname -a

Если ниже 3.12.20 то нужно обновить:

sudo rpi-update f6eef32dd6388c3b04dbf462bd324d93281bf397

И перезагрузиться:

sudo reboot

Ставим:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mysql-server --fix-missing

Во время установки он будет просить пароль для рута.

Чтобы из PHP можно было работать с БД нужно поставить следующий пакет:

sudo apt-get install mysql-client php5-mysql

Заполнять БД из командной строки я считаю кощунством так что поставим PHPMyAdmin.

Установка PHPMyAdmin на Raspberry Pi 2

Ставим PHPMyAdmin

http://raspipress.com/2012/09/tutorial-install-phpmyadmin-on-your-raspberry-pi/

Все просто:

apt-get install phpmyadmin

Добавляем в конфиг апача:

$ sudo nano /etc/apache2/apache2.conf

В последней строке дописываем:

Include /etc/phpmyadmin/apache.conf

Перезагружаем Apache:

/etc/init.d/apache2 restart

Все. теперь можно работать с базой данных:

http://localhost/phpmyadmin/

 

 Танцы с бубном вокруг /etc/network/interfaces