В первой части нашего обзора ноутбука CrowPi L Raspberry Pi 4 для обучения мы проверили оборудование и аксессуары, такие как стартовый комплект CrowTail с различными датчиками и другими электронными модулями, и показали, как установить или извлечь Raspberry Pi 4 SBC из корпуса ноутбука.
У нас было больше времени, чтобы поэкспериментировать с образовательным программным обеспечением, поэтому мы расскажем о нашем опыте работы с ноутбуком при изучении дизайна игр и управления оборудованием с помощью Letscode visual programming IDE, а также об уроках Python для более продвинутых студентов.
Переустановка образа CrowPi OS
Сейчас в Таиланде, сезон дождей, а это означает, что жарко и влажно, и хотя мы не совсем уверены, что это как-то связано, нам недавно пришлось переустановить Raspberry Pi OS на одном из наших Raspberry Pi с поврежденной SD-картой. Это повторилось снова с CrowPi L после того, как мы оставили его в коробке на две-три недели…
Но это не большая проблема, так как Elecrow предоставляет образы CrowPi OS для загрузки. Так что мы просто загрузили и прошили образ CrowPi L на карту microSD с помощью USBImager, и у нас все получилось. Обратите внимание, что мы часто получаем сообщение об ошибке «Программное обеспечение должно работать на ноутбуке CrowPi!» во время загрузки.
Пользовательский интерфейс панели Pi
Но когда это произойдет, мы могли просто щелкнуть значок панели Pi в правой части панели задач, чтобы запустить его.
Программа Pi Panel предлагает ярлыки для учебных пособий Letscode для изучения визуального программирования, уроков Python, а также других инструментов программирования, таких как Thonny (Python IDE), текстовый редактор Geany и Arduino IDE, все из которых предустановлены в образе.
Вкладка «Аксессуары» содержит ярлыки для настольных программ, таких как VLC Player, Chromium или файловый менеджер, вкладка «Веб-сайт» содержит ссылки на соответствующие веб-сайты (Raspberry Pi, Arduino, Linux, Ubuntu, Open Source…)…
в то время как вкладка «Форум» предлагает ссылки на популярные форумы производителей. Обратите внимание, что ОС CrowPi — это в основном Raspberry Pi OS с программами Pi Panel и инструментами разработчика.
Уроки визуального программирования с Letscode
Давайте сначала проверим уроки Letscode. Есть три варианта: «дизайн игры», «управление оборудованием» (для чего требуется стартовый комплект CrowTail с электронными модулями) и, наконец, возможность добавления будущих руководств.
Дизайн игры с CrowPi L
Раздел дизайна игр научит детей и взрослых создавать игры с визуальным программированием.
Всего шестнадцать уроков, и мы попробовали «Урок 3 Подводный мир», чтобы посмотреть.
Программа Letscode будет отображаться слева, а руководство по панели Pi — справа. Как видите, окно Letscode накладывается на раздел обучения. Это не идеально, но все же можно использовать.
В учебном пособии шаг за шагом будет объяснено, что учащийся должен сделать сначала с текстом, а затем будет показано обучающее видео, показывающее, где щелкнуть.
У вас также будет доступ к фоновым изображениям и спрайтам, чтобы упростить разработку игр, хотя letscode также позволяет вам рисовать свои собственные спрайты.
Вам придется перетаскивать блоки визуального программирования, чтобы управлять поведением спрайтов в вашей сцене. Это было довольно легко понять, и чтение текста и просмотр видео являются обязательными для завершения урока, по крайней мере, на начальном этапе. Это может быть обременительно на маленьком 11,6-дюймовом дисплее ноутбука, поэтому мы решили подключить 10,1-дюймовый дисплей HDMI к порту HDMI ноутбука, запустить Letscode в полноэкранном режиме на экране ноутбука, а руководство и видео на дисплей HDMI.
Это сказалось на нашей продуктивности. Обратите внимание, что по умолчанию экраны будут зеркальными, и вам нужно будет запустить Редактор макета экрана, чтобы изменить макет следующим образом.
Аппаратное управление с помощью CrowTail Starter Kit
Теперь давайте перейдем к разделу, больше относящемуся к темам программного обеспечения CNX, с уроками по управлению оборудованием.
Всего в программе 24 урока, начиная с базового урока по мерцанию света и заканчивая более сложными проектами, такими как приветственный робот или интеллектуальная система посадки. Мы начали с урока 6 «Привод двигателя», чтобы поближе познакомиться с тем, как проводятся эти уроки, сочетающие электронику и визуальное программирование.
Мы продолжили использовать нашу настройку с двумя дисплеями, так как здесь это еще более важно, поскольку окно обучения еще больше.
Прежде чем приступить к любому из этих уроков, вам нужно установить расширение CrowPi L, сначала щелкнув значок в левом нижнем углу программы Letscode…
.. затем выберите CrowPi L Extension, который поставляется с блоком визуального программирования, который нам понадобится для уроков управления оборудованием.
Урок начинается с объяснения целей обучения,
и описания каждого модуля, используемого в проекте, а затем, если необходимо, теории, лежащей в основе принципа работы датчиков, в данном случае отражающего ИК-датчика.
В учебнике по приводу двигателя также используется модуль MOSFET,
и «двигатель TT», так что у нас есть объяснение для обоих.
После всей этой теории нам нужно изучить наш стартовый комплект CrowTail для Raspberry Pi, чтобы получить необходимые платы и модули для проекта. Стартовый комплект содержит множество модулей (22), но, поскольку пакет хорошо описан, их легко найти.
Далее следует схема подключения, и мы полагаем, что она могла бы быть более подробной. Нам пришлось взять 3 провода-перемычки, два для подключения мотора ТТ и один для подключения соединительного кабеля с разъемом аккумуляторной батареи. Нам также пришлось использовать отвертку, чтобы подсоединить провода к винтовым клеммам платы MOSFET, а также инструмент, чтобы открыть батарейный отсек и вставить две собственные батарейки AAA. Ничего из этого не было объяснено, и это может быть головной болью для детей, у которых нет помощи взрослого. Мы также нашли использование перемычек для подключения к двигателю TT немного странным, так как они могут быть ослаблены.
Но давайте продолжим урок теперь, когда мы подключили наш проект. За частью визуального программирования довольно легко следить, поскольку она объясняется шаг за шагом. Вы также увидите, что Python автоматически генерируется по мере того, как вы можете программировать больше блоков. После завершения программирования выберите скорость передачи данных (115 000) в правом нижнем углу и нажмите кнопку запуска/воспроизведения.
Все выглядит хорошо, но действительно ли это работает? Держу пари, что он работает как двигатель TT, когда я кладу палец поверх ИК-отражающего датчика…
Программирование на Python
Перейдем к урокам и руководствам по программированию на Python.
Как и в случае с визуальным программированием, здесь есть три раздела: «Введение в синтаксис», «Управление оборудованием» и возможность добавить новый курс.
Введение в синтаксис не требует дополнительного оборудования, оно просто знакомит с основами Python…
… до более сложных примеров, таких как игры, которые все запускаются на самом ноутбуке. Если мы выберем один из уроков, справа отобразится учебник Pi Panel, а слева отобразится Thonny Python IDE с уроком, содержащим пошаговые инструкции по написанию программы.
Уроки Python «Управление аппаратным обеспечением» точно такие же, как и с программой Letcode, но вместо использования визуального программирования студенты будут учиться кодировать Python.
Мы просмотрели урок Motor Drive, и он в основном такой же, как и урок визуального программирования с теорией, объяснением модулей, схемой подключения, и основное отличие состоит в том, что вы также будете изучать программирование на Python. Кстати, вы также можете сделать это на уроке визуального программирования, так как Letscode автоматически сгенерирует код Python при перетаскивании блоков.
Но мы погружались в это подробно, так как CrowTail Started Kit для Raspberry Pi поставляется с печатным руководством пользователя, а мы предпочитаем учиться именно так. Но лучше изучать Python с помощью программы, установленной на ноутбук CrowPi L, а не по книге, поскольку она устарела.
Мы заметили, что в печатном руководстве список уроков был другим. Но мы все же пошли дальше и установили образцы и «драйверы», как описано в книге:
1 |
pi@Crowpi-Laptop:~ $ git clone https://github.com/Elecrow-RD/RPi-Starter-Kit |
Давайте перейдем в каталог примеров, чтобы перечислить образцы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
cd ../RPi-Starter-Kit/examples/ pi@Crowpi-Laptop:~/RPi-Starter-Kit/examples $ ls -l total 80 -rw-r--r-- 1 pi pi 745 Aug 10 14:31 10_plant_doctor.py -rw-r--r-- 1 pi pi 642 Aug 10 14:31 11_dimmer.py -rw-r--r-- 1 pi pi 647 Aug 10 14:31 12_speed_fan.py -rw-r--r-- 1 pi pi 834 Aug 10 14:31 13_servo_control.py -rw-r--r-- 1 pi pi 917 Aug 10 14:31 14_obstacle_alert.py -rw-r--r-- 1 pi pi 1588 Aug 10 14:31 15_smart_lantern.py -rw-r--r-- 1 pi pi 1015 Aug 10 14:31 16_distance_display.py -rw-r--r-- 1 pi pi 1086 Aug 10 14:31 17_weather_station.py -rw-r--r-- 1 pi pi 1396 Aug 10 14:31 19_speed_measurement.py -rw-r--r-- 1 pi pi 86 Aug 10 14:31 1_hello_world.py -rw-r--r-- 1 pi pi 1282 Aug 10 14:31 20_plant_expert.py -rw-r--r-- 1 pi pi 1370 Aug 10 14:31 21_remote_door.py -rw-r--r-- 1 pi pi 231 Aug 10 14:31 2_blinking_led.py -rw-r--r-- 1 pi pi 381 Aug 10 14:31 3_contorl_led.py -rw-r--r-- 1 pi pi 427 Aug 10 14:31 4_doorbell.py -rw-r--r-- 1 pi pi 674 Aug 10 14:31 5_treasure_chest.py -rw-r--r-- 1 pi pi 597 Aug 10 14:31 6_bright_and_dark.py -rw-r--r-- 1 pi pi 387 Aug 10 14:31 7_smart_light.py -rw-r--r-- 1 pi pi 705 Aug 10 14:31 8_collision_alert.py -rw-r--r-- 1 pi pi 591 Aug 10 14:31 9_car_tracking.py |
Все отлично! У нас есть 21 образец. Мы можем запустить образец hello world:
1 2 |
pi@Crowpi-Laptop:~/RPi-Starter-Kit/examples $ sudo python 1_hello_world.py Hello World |
sudo здесь на самом деле необязателен, но нам сказали, что sudo потребуется позже для библиотеки GPIO. Похоже, что система может быть настроена неправильно (с точки зрения разрешений), если это так… Но мы видим, что пользователь pi является частью группы gpio, поэтому он может вообще не понадобиться. Попробуем это позже…
1 2 3 |
$ groups pi adm dialout cdrom sudo audio video plugdev games users input netdev lpadmin gpio i2c spi |
Давайте выберем один из уроков, чтобы попробовать: Урок 17 – Метеостанция.
Мы видим, что уроки предназначены для Raspberry Pi SBC, а не для ноутбука CrowPi L как такового, но мы использовали экран Grove для CrowPi L вместо «базового экрана для Raspberry Pi», поскольку мы предполагали, что оба будут иметь одинаковую компоновку ( и ошиблись).
Мы должны установить модуль Adafruit DHT Python, как указано в уроке:
1 2 |
$ cd ../drivers/Adafruit_Python_DHT $ sudo python setup.py install |
Теперь вернемся в каталог образцов, чтобы запустить образец:
1 2 3 4 5 6 |
$ cd ../../examples/ $ python 17_weather_station.py Traceback (most recent call last): File "17_weather_station.py", line 6, in <module> import Adafruit_CharLCD as LCD ImportError: No module named Adafruit_CharLCD |
Ой! Все это потому, что мы перешли сразу к 17 уроку, не просматривая другие. Нам необходимо установить ЖК-модуль Adadruit Character:
1 2 3 |
$ pushd ../drivers/Adafruit_Python_CharLCD/ $ sudo python setup.py install $ popd |
Теперь мы можем запустить образец, sudo не требуется:
1 2 3 4 5 6 7 8 9 |
$ python 17_weather_station.py Traceback (most recent call last): File "17_weather_station.py", line 6, in <module> import Adafruit_CharLCD as LCD File "build/bdist.linux-armv7l/egg/Adafruit_CharLCD/__init__.py", line 1, in <module> File "build/bdist.linux-armv7l/egg/Adafruit_CharLCD/Adafruit_CharLCD.py", line 98, in <module> File "build/bdist.linux-armv7l/egg/Adafruit_CharLCD/Adafruit_CharLCD.py", line 104, in Adafruit_CharLCD File "build/bdist.linux-armv7l/egg/Adafruit_GPIO/GPIO.py", line 420, in get_platform_gpio ImportError: No module named Adafruit_BBIO.GPIO |
Модуль Adafruit GPIO отсутствует в списке «драйверов»:
1 2 3 4 5 |
pi@Crowpi-Laptop:~/RPi-Starter-Kit/drivers $ ls -l total 12 drwxr-xr-x 7 pi pi 4096 Aug 10 15:00 Adafruit_Python_CharLCD drwxr-xr-x 8 pi pi 4096 Aug 10 14:57 Adafruit_Python_DHT drwxr-xr-x 2 pi pi 4096 Aug 10 14:31 LIRC |
Поэтому попытаемся установить его вручную:
1 2 3 4 |
$ git clone https://github.com/adafruit/Adafruit_Python_GPIO $ cd Adafruit_Python_GPIO/ $ sudo python setup.py install |
а также
1 |
pip install Adafruit-GPIO |
Но нам все равно не повезло… Поэтому мы связались с компанией, и они посоветовали нам попробовать Python3:
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo python3 17_weather_station.py Traceback (most recent call last): File "17_weather_station.py", line 20, in <module> lcd=LCD.Adafruit_CharLCDBackpack(address=0x20) File "/usr/local/lib/python3.7/dist-packages/Adafruit_CharLCD-1.1.1-py3.7.egg/Adafruit_CharLCD/Adafruit_CharLCD.py", line 473, in __init__ File "/usr/local/lib/python3.7/dist-packages/Adafruit_GPIO-1.0.4-py3.7.egg/Adafruit_GPIO/MCP230xx.py", line 165, in __init__ File "/usr/local/lib/python3.7/dist-packages/Adafruit_GPIO-1.0.4-py3.7.egg/Adafruit_GPIO/MCP230xx.py", line 50, in __init__ File "/usr/local/lib/python3.7/dist-packages/Adafruit_GPIO-1.0.4-py3.7.egg/Adafruit_GPIO/MCP230xx.py", line 133, in write_iodir File "/usr/local/lib/python3.7/dist-packages/Adafruit_GPIO-1.0.4-py3.7.egg/Adafruit_GPIO/I2C.py", line 129, in writeList File "/usr/local/lib/python3.7/dist-packages/Adafruit_PureIO-1.1.9-py3.7.egg/Adafruit_PureIO/smbus.py", line 368, in write_i2c_block_data OSError: [Errno 121] Remote I/O error |
Двигаемся дальше, но у нас возникла была еще одна «Ошибка удаленного ввода-вывода». В последующем электронном письме нам было ясно сказано, что Green Book нельзя использовать с CrowPi L:
Между прочим, некоторых людей часто смущают курсы Crowpi L и инструкции Crowpi, я должен прояснить это здесь.
Инструкции предназначены для стартового комплекта raspberry pi, люди могут изучать Raspberry Pi с помощью инструкций, даже если у них нет Crowpi L. Кроме того, инструкция слишком старая, чтобы следовать пошагово.
Вы могли заметить, что у нас есть встроенные курсы в CrowpiL, у которых нет инструкций, это еще один курс, разработанный для CrowPi L, он отличается от инструкций стартового набора Raspberry Pi.
Нам также дали решение учебника по метеостанции в Green Book: соединение отличается, поскольку порт I2C для модуля LCD находится в другом месте, а модули LED и DHT22 должны быть переключены. После этого заработало нормально:
Поскольку пользователь Pi является частью группы gpio, нам даже не нужно использовать sudo:
1 |
$ python 17_weather_station.py |
Поначалу показания на дисплее было трудно читать, но после регулировки яркости потенциометра на плате управления на задней панели ЖК-дисплея с помощью отвертки все стало нормально.
Вот код Python для справки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# Weather station import RPi.GPIO as GPIO import time import Adafruit_DHT import Adafruit_CharLCD as LCD # set GPIO board mode GPIO.setmode(GPIO.BCM) sensor_type = 11 sensor_pin = 5 #temperature&humudity sensor pin led_pin = 6 GPIO.setup(led_pin, GPIO.OUT) # define LCD column and row size for 16x2 LCD lcd_columns=16 lcd_rows=2 # initialize the LCD using the pins lcd=LCD.Adafruit_CharLCDBackpack(address=0x20) # turn backlight on lcd.set_backlight(0) try: while True: humidity, temperature = Adafruit_DHT.read_retry(sensor_type, sensor_pin) if humidity is not None and temperature is not None: lcd.message("Temp={0:0.1f}\nHumidity={1:0.1f}%".format(temperature, humidity)) if temperature < 10 or temperature > 35: GPIO.output(led_pin, GPIO.HIGH) else: GPIO.output(led_pin, GPIO.LOW) time.sleep(1) lcd.clear() except KeyboardInterrupt: lcd.clear() lcd.set_backlight(1) GPIO.cleanup() |
Так что просто не давайте Green Book своим детям, для изучения Python и электроники с помощью ноутбука CrowPi L, это разочарует их и может обескуражить. Но если они прошли уроки программирования Python «Управление аппаратным обеспечением» и обнаружили, что все это «слишком просто», то рассмотрите вариант с Green Book для чего-то более сложного 🙂
Разные замечания и заключение
Образ CrowPi L поставляется с зеркалом репозитория, созданным с помощью apt-mirror и базирующимся в Китае, и которое может быть довольно медленным за пределами материкового Китая:
1 2 3 4 5 6 7 |
$ sudo apt update Get:1 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian buster InRelease [15.0 kB] Get:2 http://mirrors.tuna.tsinghua.edu.cn/raspberrypi buster InRelease [32.6 kB] Get:3 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian buster/non-free Sources [139 kB] Get:4 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian buster/main Sources [11.4 MB] Get:4 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian buster/main Sources [11.4 MB] 27% [4 Sources 3074 kB/11.4 MB 27%]^C |
Поэтому вы можете отредактировать /etc/apt/sources.list или установить apt-mirror-updater и выбрать одно из зеркал Raspberry Pi OS/Raspbian, близких к вашей стране, для более быстрого обновления:
1 2 |
$ sudo pip3 install apt-mirror-updater $ apt-mirror-updater -c http://mirror.kku.ac.th/raspbian/raspbian/ |
Ноутбук оснащен сенсорной панелью с кнопками мыши в правом верхнем углу клавиатуры, и мы подумали, что пользоваться им будет очень неудобно, но были приятно удивлены, что на самом деле это не так уж плохо. Это если только вам не нужно одновременно нажимать и использовать сенсорную панель, например, для перемещения окна, и в этом случае оно практически непригодно для использования.
Еще два наболевших вопроса. Если вы закроете крышку, вентилятор не остановится и продолжит работать. Он остановится только тогда, когда вы выключите ноутбук. Соединение WiFi внутри ноутбука может быть ненадежным (подлежит уточнению), так как при использовании SSH для доступа к ноутбуку у нас были частые зависания на несколько секунд, когда мы не могли ничего напечатать. Поэтому, если у вас есть проблемы с подключением, вы можете переключиться на Ethernet.
CrowPi L также можно использовать в качестве стандартного ноутбука с Linux, но увы, мы имеем не самой идеальное зрение, поэтому использование 11,6-дюймового дисплея, в нашем случае, далеко не идеальный вариант. Кроме того, несмотря на очевидную ценность в качестве учебного ноутбука, CrowPi L – не лучшее решение, если все, что вы хотите с ним делать, – это проверять почту, просматривать веб-страницы и смотреть видео на YouTube.
Нам бы хотелось поблагодарить Elecrow за отправку ноутбука CrowPi L, Raspberry Pi 4 (8 ГБ ОЗУ) и стартового комплекта Crowtail для обзора. Рассмотренный здесь расширенный комплект CrowPi L продается за 518 долларов США, включая доставку (или около 487 долларов США с купоном CNXSOFT на скидку 6%), но если вам нужен только корпус ноутбука, доступный в белом или черном цвете, это будет 279 долларов США (или ~ 262 доллара США с купоном CNXSOFT).
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.